Browse Source

Merge topic 'ispc-system-includes' into release-3.19

8da25e4a3c ISPC: Treat system includes as '-I' includes

Acked-by: Kitware Robot <[email protected]>
Merge-request: !5591
Brad King 4 years ago
parent
commit
9f66eb74a5

+ 0 - 2
Modules/Compiler/Intel-ISPC.cmake

@@ -14,8 +14,6 @@ string(APPEND CMAKE_ISPC_FLAGS_RELWITHDEBINFO_INIT " -O2 -g -DNDEBUG")
 set(CMAKE_ISPC_COMPILE_OPTIONS_PIE --pic)
 set(CMAKE_ISPC_COMPILE_OPTIONS_PIC --pic)
 
-set(CMAKE_INCLUDE_SYSTEM_FLAG_ISPC -isystem=)
-
 set(CMAKE_ISPC_RESPONSE_FILE_FLAG "@")
 set(CMAKE_ISPC_USE_RESPONSE_FILE_FOR_INCLUDES 1)
 set(CMAKE_ISPC_USE_RESPONSE_FILE_FOR_LIBRARIES 1)

+ 1 - 0
Tests/ISPC/CMakeLists.txt

@@ -13,4 +13,5 @@ add_ispc_test_macro(ISPC.ObjectGenex ISPCObjectGenex)
 add_ispc_test_macro(ISPC.ObjectLibrary ISPCObjectLibrary)
 add_ispc_test_macro(ISPC.ResponseAndDefine ISPCResponseAndDefine)
 add_ispc_test_macro(ISPC.StaticLibrary ISPCStaticLibrary)
+add_ispc_test_macro(ISPC.SystemIncludes ISPCSystemIncludes)
 add_ispc_test_macro(ISPC.TryCompile ISPCTryCompile)

+ 12 - 0
Tests/ISPC/SystemIncludes/CMakeLists.txt

@@ -0,0 +1,12 @@
+cmake_minimum_required(VERSION 3.18)
+project(ispc_spaces_in_path ISPC CXX)
+
+
+add_executable(ISPCSystemIncludes main.cxx simple.ispc)
+set_target_properties(ISPCSystemIncludes PROPERTIES POSITION_INDEPENDENT_CODE ON)
+target_include_directories(ISPCSystemIncludes SYSTEM PRIVATE "${CMAKE_CURRENT_BINARY_DIR}")
+
+target_compile_options(ISPCSystemIncludes PRIVATE "$<$<COMPILE_LANGUAGE:ISPC>:--target=sse2-i32x4>")
+if(CMAKE_SIZEOF_VOID_P EQUAL 4)
+  target_compile_options(ISPCSystemIncludes PRIVATE "$<$<COMPILE_LANGUAGE:ISPC>:--arch=x86>")
+endif()

+ 15 - 0
Tests/ISPC/SystemIncludes/main.cxx

@@ -0,0 +1,15 @@
+#include <stdio.h>
+
+#include "simple.ispc.h"
+
+int main()
+{
+  float vin[16], vout[16];
+  for (int i = 0; i < 16; ++i)
+    vin[i] = i;
+
+  ispc::simple(vin, vout, 16);
+
+  for (int i = 0; i < 16; ++i)
+    printf("%d: simple(%f) = %f\n", i, vin[i], vout[i]);
+}

+ 9 - 0
Tests/ISPC/SystemIncludes/simple.ispc

@@ -0,0 +1,9 @@
+
+export void simple(uniform float vin[], uniform float vout[],
+                   uniform int count) {
+    foreach (index = 0 ... count) {
+        float v = vin[index];
+        v = sqrt(v);
+        vout[index] = v;
+    }
+}