Skip to content

Commit fa1b1b0

Browse files
introduce SPIR-V target for 'libc'
1 parent c6c0846 commit fa1b1b0

File tree

10 files changed

+20
-10
lines changed

10 files changed

+20
-10
lines changed

libc/benchmarks/gpu/timing/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
foreach(target nvptx amdgpu)
1+
foreach(target nvptx amdgpu spirv64)
22
add_subdirectory(${target})
33
list(APPEND target_gpu_timing libc.benchmarks.gpu.timing.${target}.${target}_timing)
44
endforeach()

libc/benchmarks/gpu/timing/timing.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
#include "amdgpu/timing.h"
1616
#elif defined(LIBC_TARGET_ARCH_IS_NVPTX)
1717
#include "nvptx/timing.h"
18+
#elif defined(LIBC_TARGET_ARCH_IS_SPIRV)
19+
#include "spirv64/timing.h"
1820
#else
1921
#error "unsupported platform"
2022
#endif

libc/cmake/modules/LLVMLibCArchitectures.cmake

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,8 @@ function(get_arch_and_system_from_triple triple arch_var sys_var)
7373

7474
# Setting OS name for GPU architectures.
7575
list(GET triple_comps -1 gpu_target_sys)
76-
if(gpu_target_sys MATCHES "^amdhsa" OR gpu_target_sys MATCHES "^cuda")
76+
if(gpu_target_sys MATCHES "^amdhsa" OR gpu_target_sys MATCHES "^cuda" OR
77+
gpu_target_sys MATCHES "^opencl")
7778
set(target_sys "gpu")
7879
endif()
7980

libc/include/llvm-libc-macros/math-macros.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,8 @@
4242
#define FP_LLOGBNAN LONG_MAX
4343
#endif
4444

45-
#if defined(__NVPTX__) || defined(__AMDGPU__) || defined(__FAST_MATH__)
45+
#if defined(__NVPTX__) || defined(__AMDGPU__) || defined(__SPIRV__) || \
46+
defined(__FAST_MATH__)
4647
#define math_errhandling 0
4748
#elif defined(__NO_MATH_ERRNO__)
4849
#define math_errhandling (MATH_ERREXCEPT)

libc/include/llvm-libc-macros/signal-macros.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
#if defined(__linux__)
1313
#include "linux/signal-macros.h"
14-
#elif defined(__NVPTX__) || defined(__AMDGPU__)
14+
#elif defined(__NVPTX__) || defined(__AMDGPU__) || defined(__SPIRV__)
1515
#include "gpu/signal-macros.h"
1616
#endif
1717

libc/include/llvm-libc-macros/time-macros.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#ifndef LLVM_LIBC_MACROS_TIME_MACROS_H
22
#define LLVM_LIBC_MACROS_TIME_MACROS_H
33

4-
#if defined(__AMDGPU__) || defined(__NVPTX__)
4+
#if defined(__AMDGPU__) || defined(__NVPTX__) || defined(__SPIRV__)
55
#include "gpu/time-macros.h"
66
#elif defined(__linux__)
77
#include "linux/time-macros.h"

libc/include/llvm-libc-types/fenv_t.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ typedef struct {
2525
} fenv_t;
2626
#elif defined(__riscv)
2727
typedef unsigned int fenv_t;
28-
#elif defined(__AMDGPU__) || defined(__NVPTX__)
28+
#elif defined(__AMDGPU__) || defined(__NVPTX__) || defined(__SPIRV__)
2929
typedef struct {
3030
unsigned int __fpc;
3131
} fenv_t;

libc/shared/rpc_util.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
#include <stddef.h>
1313
#include <stdint.h>
1414

15-
#if (defined(__NVPTX__) || defined(__AMDGPU__)) && \
15+
#if (defined(__NVPTX__) || defined(__AMDGPU__) || defined(__SPIRV__)) && \
1616
!((defined(__CUDA__) && !defined(__CUDA_ARCH__)) || \
1717
(defined(__HIP__) && !defined(__HIP_DEVICE_COMPILE__)))
1818
#include <gpuintrin.h>

libc/src/__support/macros/properties/architectures.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,12 @@
1717
#define LIBC_TARGET_ARCH_IS_NVPTX
1818
#endif
1919

20-
#if defined(LIBC_TARGET_ARCH_IS_NVPTX) || defined(LIBC_TARGET_ARCH_IS_AMDGPU)
20+
#if defined(__SPIRV__)
21+
#define LIBC_TARGET_ARCH_IS_SPIRV
22+
#endif
23+
24+
#if defined(LIBC_TARGET_ARCH_IS_NVPTX) || \
25+
defined(LIBC_TARGET_ARCH_IS_AMDGPU) || defined(LIBC_TARGET_ARCH_IS_SPIRV)
2126
#define LIBC_TARGET_ARCH_IS_GPU
2227
#endif
2328

libc/src/__support/macros/properties/cpu_features.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,13 +75,14 @@
7575
#endif // LIBC_TARGET_CPU_HAS_RISCV_FPU_DOUBLE
7676
#endif // __riscv_flen
7777

78-
#if defined(__NVPTX__) || defined(__AMDGPU__)
78+
#if defined(__NVPTX__) || defined(__AMDGPU__) || defined(__SPIRV__)
7979
#define LIBC_TARGET_CPU_HAS_FPU_FLOAT
8080
#define LIBC_TARGET_CPU_HAS_FPU_DOUBLE
8181
#endif
8282

8383
#if defined(__ARM_FEATURE_FMA) || (defined(__AVX2__) && defined(__FMA__)) || \
84-
defined(__NVPTX__) || defined(__AMDGPU__) || defined(__LIBC_RISCV_USE_FMA)
84+
defined(__NVPTX__) || defined(__AMDGPU__) || defined(__SPIRV__) || \
85+
defined(__LIBC_RISCV_USE_FMA)
8586
#define LIBC_TARGET_CPU_HAS_FMA
8687
// Provide a more fine-grained control of FMA instruction for ARM targets.
8788
#if defined(LIBC_TARGET_CPU_HAS_FPU_HALF)

0 commit comments

Comments
 (0)