Abdelrauf | 95a1725 | 2020-12-10 13:35:02 -0800 | [diff] [blame] | 1 | |
| 2 | IF(CMAKE_SYSTEM_NAME MATCHES "Linux") |
| 3 | message("-- <FindVSX>") |
Sam Estep | 8c798e0 | 2021-03-05 17:19:22 -0800 | [diff] [blame] | 4 | EXEC_PROGRAM(LD_SHOW_AUXV=1 ARGS "/bin/true" OUTPUT_VARIABLE bintrue) |
Abdelrauf | 95a1725 | 2020-12-10 13:35:02 -0800 | [diff] [blame] | 5 | if(bintrue MATCHES "AT_PLATFORM:[ \\t\\n\\r]*([a-zA-Z0-9_]+)[ \\t\\n\\r]*") |
| 6 | if(CMAKE_MATCH_COUNT GREATER 0) |
| 7 | string(TOLOWER ${CMAKE_MATCH_1} platform) |
| 8 | if(${platform} MATCHES "^power") |
| 9 | message("-- POWER Platform: ${platform}") |
| 10 | SET(POWER_COMP TRUE CACHE BOOL "power ") |
| 11 | SET(CXX_VSX_FLAGS "${CXX_VSX_FLAGS} -mcpu=${platform} -mtune=${platform}" ) |
| 12 | endif() |
| 13 | endif() |
| 14 | endif() |
Sam Estep | 8c798e0 | 2021-03-05 17:19:22 -0800 | [diff] [blame] | 15 | SET(VSX_CODE " #include <altivec.h> |
Abdelrauf | 95a1725 | 2020-12-10 13:35:02 -0800 | [diff] [blame] | 16 | int main() { |
| 17 | float __attribute__((aligned(16))) vptr_y[8] = { 1.0f,2.f,3.f,4.f,4.f,3.f,2.f,1.f }; |
| 18 | __vector float v_result = vec_add(vec_vsx_ld(0, vptr_y), vec_vsx_ld(16, vptr_y)); |
| 19 | return 0; |
| 20 | }") |
| 21 | #check_cxx_compiler_flag(-mvsx vsx_flag) |
| 22 | SET(CMAKE_REQUIRED_FLAGS_SAVE ${CMAKE_REQUIRED_FLAGS}) |
| 23 | SET(CMAKE_REQUIRED_FLAGS "-mvsx") |
| 24 | CHECK_C_SOURCE_COMPILES("${VSX_CODE}" C_VSX_FOUND) |
Sam Estep | 8c798e0 | 2021-03-05 17:19:22 -0800 | [diff] [blame] | 25 | CHECK_CXX_SOURCE_COMPILES("${VSX_CODE}" CXX_VSX_FOUND) |
Abdelrauf | 95a1725 | 2020-12-10 13:35:02 -0800 | [diff] [blame] | 26 | SET(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS_SAVE}) |
| 27 | if(CXX_VSX_FOUND) |
Sam Estep | 8c798e0 | 2021-03-05 17:19:22 -0800 | [diff] [blame] | 28 | message("-- VSX flag was set.") |
Abdelrauf | 95a1725 | 2020-12-10 13:35:02 -0800 | [diff] [blame] | 29 | SET(CXX_VSX_FLAGS "${CXX_VSX_FLAGS} -mvsx" ) |
| 30 | elseif(POWER_COMP) |
Sam Estep | 8c798e0 | 2021-03-05 17:19:22 -0800 | [diff] [blame] | 31 | message(WARNING "-- VSX flag was not set.") |
Abdelrauf | 95a1725 | 2020-12-10 13:35:02 -0800 | [diff] [blame] | 32 | endif() |
Sam Estep | 8c798e0 | 2021-03-05 17:19:22 -0800 | [diff] [blame] | 33 | message("-- </FindVSX>") |
Abdelrauf | 95a1725 | 2020-12-10 13:35:02 -0800 | [diff] [blame] | 34 | endif() |