Skip to content

Commit 964f963

Browse files
authored
[SYCL] Enable SPV_INTEL_fp_max_error by default (#16942)
Since a pass that cleans up unnecessary llvm.fpbuiltin intrinsics was removed from #16107 we need to enable the extension by default to successfully translate them. Signed-off-by: Sidorov, Dmitry <[email protected]>
1 parent 38e2103 commit 964f963

File tree

8 files changed

+13
-85
lines changed

8 files changed

+13
-85
lines changed

clang/lib/Driver/ToolChains/Clang.cpp

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10927,23 +10927,8 @@ static void getTripleBasedSPIRVTransOpts(Compilation &C,
1092710927
",+SPV_INTEL_optnone"
1092810928
",+SPV_KHR_non_semantic_info"
1092910929
",+SPV_KHR_cooperative_matrix"
10930-
",+SPV_EXT_shader_atomic_float16_add";
10931-
auto hasNoOffloadFP32PrecOption = [](const llvm::opt::ArgList &TCArgs) {
10932-
return !TCArgs.hasFlag(options::OPT_foffload_fp32_prec_sqrt,
10933-
options::OPT_fno_offload_fp32_prec_sqrt, false) &&
10934-
!TCArgs.hasFlag(options::OPT_foffload_fp32_prec_div,
10935-
options::OPT_fno_offload_fp32_prec_div, false);
10936-
};
10937-
auto shouldUseOffloadFP32PrecOption = [](const llvm::opt::ArgList &TCArgs) {
10938-
return (TCArgs.hasFlag(options::OPT_fno_offload_fp32_prec_sqrt,
10939-
options::OPT_foffload_fp32_prec_sqrt, false) ||
10940-
TCArgs.hasFlag(options::OPT_fno_offload_fp32_prec_div,
10941-
options::OPT_foffload_fp32_prec_div, false));
10942-
};
10943-
if ((IsCPU && hasNoOffloadFP32PrecOption(TCArgs)) ||
10944-
shouldUseOffloadFP32PrecOption(TCArgs)) {
10945-
ExtArg += ",+SPV_INTEL_fp_max_error";
10946-
}
10930+
",+SPV_EXT_shader_atomic_float16_add"
10931+
",+SPV_INTEL_fp_max_error";
1094710932

1094810933
TranslatorArgs.push_back(TCArgs.MakeArgString(ExtArg));
1094910934
}

clang/test/Driver/sycl-spirv-ext-old-model.c

Lines changed: 3 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -24,63 +24,6 @@
2424
// RUN: | FileCheck %s -check-prefixes=CHECK-DEFAULT
2525
// RUN: %clang -target x86_64-unknown-linux-gnu -fsycl --no-offload-new-driver -fsycl-targets=spir64_x86_64-unknown-unknown %s -### 2>&1 \
2626
// RUN: | FileCheck %s -check-prefixes=CHECK-CPU
27-
// RUN: %clang -target x86_64-unknown-linux-gnu -fsycl --no-offload-new-driver -fsycl-targets=spir64_x86_64-unknown-unknown -fno-offload-fp32-prec-div %s -### 2>&1 \
28-
// RUN: | FileCheck %s -check-prefixes=CHECK-CPU
29-
// RUN: %clang -target x86_64-unknown-linux-gnu -fsycl --no-offload-new-driver -fsycl-targets=spir64_x86_64-unknown-unknown -fno-offload-fp32-prec-sqrt %s -### 2>&1 \
30-
// RUN: | FileCheck %s -check-prefixes=CHECK-CPU
31-
// RUN: %clang -target x86_64-unknown-linux-gnu -fsycl --no-offload-new-driver -fsycl-targets=spir64_x86_64-unknown-unknown -fno-offload-fp32-prec-sqrt -fno-offload-fp32-prec-div %s -### 2>&1 \
32-
// RUN: | FileCheck %s -check-prefixes=CHECK-CPU
33-
// RUN: %clang -target x86_64-unknown-linux-gnu -fsycl --no-offload-new-driver -fsycl-targets=spir64_x86_64-unknown-unknown -fno-offload-fp32-prec-div -fno-offload-fp32-prec-sqrt %s -### 2>&1 \
34-
// RUN: | FileCheck %s -check-prefixes=CHECK-CPU
35-
// RUN: %clang -target x86_64-unknown-linux-gnu -fsycl --no-offload-new-driver -fsycl-targets=spir64_x86_64-unknown-unknown -foffload-fp32-prec-sqrt %s -### 2>&1 \
36-
// RUN: | FileCheck %s -check-prefixes=CHECK-CPU,CHECK-CPU-NFPME
37-
// RUN: %clang -target x86_64-unknown-linux-gnu -fsycl --no-offload-new-driver -fsycl-targets=spir64_x86_64-unknown-unknown -foffload-fp32-prec-div %s -### 2>&1 \
38-
// RUN: | FileCheck %s -check-prefixes=CHECK-CPU,CHECK-CPU-NFPME
39-
// RUN: %clang -target x86_64-unknown-linux-gnu -fsycl --no-offload-new-driver -fsycl-targets=spir64_x86_64-unknown-unknown -foffload-fp32-prec-div -foffload-fp32-prec-sqrt %s -### 2>&1 \
40-
// RUN: | FileCheck %s -check-prefixes=CHECK-CPU,CHECK-CPU-NFPME
41-
// RUN: %clang -target x86_64-unknown-linux-gnu -fsycl --no-offload-new-driver -fsycl-targets=spir64_x86_64-unknown-unknown -foffload-fp32-prec-sqrt -foffload-fp32-prec-div %s -### 2>&1 \
42-
// RUN: | FileCheck %s -check-prefixes=CHECK-CPU,CHECK-CPU-NFPME
43-
// RUN: %clang -target x86_64-unknown-linux-gnu -fsycl --no-offload-new-driver -fsycl-targets=spir64_x86_64-unknown-unknown -fno-offload-fp32-prec-sqrt %s -### 2>&1 \
44-
// RUN: | FileCheck %s -check-prefixes=CHECK-CPU
45-
// RUN: %clang -target x86_64-unknown-linux-gnu -fsycl --no-offload-new-driver -fsycl-targets=spir64_x86_64-unknown-unknown -fno-offload-fp32-prec-div %s -### 2>&1 \
46-
// RUN: | FileCheck %s -check-prefixes=CHECK-CPU
47-
// RUN: %clang -target x86_64-unknown-linux-gnu -fsycl --no-offload-new-driver -fsycl-targets=spir64_x86_64-unknown-unknown -fno-offload-fp32-prec-div -fno-offload-fp32-prec-sqrt %s -### 2>&1 \
48-
// RUN: | FileCheck %s -check-prefixes=CHECK-CPU
49-
// RUN: %clang -target x86_64-unknown-linux-gnu -fsycl --no-offload-new-driver -fsycl-targets=spir64_x86_64-unknown-unknown -fno-offload-fp32-prec-sqrt -fno-offload-fp32-prec-div %s -### 2>&1 \
50-
// RUN: | FileCheck %s -check-prefixes=CHECK-CPU
51-
// RUN: %clang -target x86_64-unknown-linux-gnu -fsycl --no-offload-new-driver -fsycl-targets=spir64_gen-unknown-unknown -fno-offload-fp32-prec-div %s -### 2>&1 \
52-
// RUN: | FileCheck %s -check-prefixes=CHECK-DEFAULT,CHECK-DEFAULT-FPME
53-
// RUN: %clang -target x86_64-unknown-linux-gnu -fsycl --no-offload-new-driver -fsycl-targets=spir64_gen-unknown-unknown -fno-offload-fp32-prec-sqrt %s -### 2>&1 \
54-
// RUN: | FileCheck %s -check-prefixes=CHECK-DEFAULT,CHECK-DEFAULT-FPME
55-
// RUN: %clang -target x86_64-unknown-linux-gnu -fsycl --no-offload-new-driver -fsycl-targets=spir64_gen-unknown-unknown -fno-offload-fp32-prec-div -fno-offload-fp32-prec-sqrt %s -### 2>&1 \
56-
// RUN: | FileCheck %s -check-prefixes=CHECK-DEFAULT,CHECK-DEFAULT-FPME
57-
// RUN: %clang -target x86_64-unknown-linux-gnu -fsycl --no-offload-new-driver -fsycl-targets=spir64_gen-unknown-unknown -fno-offload-fp32-prec-sqrt -fno-offload-fp32-prec-div %s -### 2>&1 \
58-
// RUN: | FileCheck %s -check-prefixes=CHECK-DEFAULT,CHECK-DEFAULT-FPME
59-
// RUN: %clang -target x86_64-unknown-linux-gnu -fsycl --no-offload-new-driver -fsycl-targets=spir64_gen-unknown-unknown -foffload-fp32-prec-div %s -### 2>&1 \
60-
// RUN: | FileCheck %s -check-prefixes=CHECK-DEFAULT
61-
// RUN: %clang -target x86_64-unknown-linux-gnu -fsycl --no-offload-new-driver -fsycl-targets=spir64_gen-unknown-unknown -foffload-fp32-prec-sqrt %s -### 2>&1 \
62-
// RUN: | FileCheck %s -check-prefixes=CHECK-DEFAULT
63-
// RUN: %clang -target x86_64-unknown-linux-gnu -fsycl --no-offload-new-driver -fsycl-targets=spir64_gen-unknown-unknown -foffload-fp32-prec-div -foffload-fp32-prec-sqrt %s -### 2>&1 \
64-
// RUN: | FileCheck %s -check-prefixes=CHECK-DEFAULT
65-
// RUN: %clang -target x86_64-unknown-linux-gnu -fsycl --no-offload-new-driver -fsycl-targets=spir64_gen-unknown-unknown -foffload-fp32-prec-sqrt -foffload-fp32-prec-div %s -### 2>&1 \
66-
// RUN: | FileCheck %s -check-prefixes=CHECK-DEFAULT
67-
// RUN: %clang -target x86_64-unknown-linux-gnu -fsycl --no-offload-new-driver -fsycl-targets=spir64_fpga-unknown-unknown -Xshardware -fno-offload-fp32-prec-div %s -### 2>&1 \
68-
// RUN: | FileCheck %s -check-prefixes=CHECK-FPGA-HW,CHECK-FPGA-HW-FPME
69-
// RUN: %clang -target x86_64-unknown-linux-gnu -fsycl --no-offload-new-driver -fsycl-targets=spir64_fpga-unknown-unknown -Xshardware -fno-offload-fp32-prec-sqrt %s -### 2>&1 \
70-
// RUN: | FileCheck %s -check-prefixes=CHECK-FPGA-HW,CHECK-FPGA-HW-FPME
71-
// RUN: %clang -target x86_64-unknown-linux-gnu -fsycl --no-offload-new-driver -fsycl-targets=spir64_fpga-unknown-unknown -Xshardware -fno-offload-fp32-prec-div -fno-offload-fp32-prec-sqrt %s -### 2>&1 \
72-
// RUN: | FileCheck %s -check-prefixes=CHECK-FPGA-HW,CHECK-FPGA-HW-FPME
73-
// RUN: %clang -target x86_64-unknown-linux-gnu -fsycl --no-offload-new-driver -fsycl-targets=spir64_fpga-unknown-unknown -Xshardware -fno-offload-fp32-prec-sqrt -fno-offload-fp32-prec-div %s -### 2>&1 \
74-
// RUN: | FileCheck %s -check-prefixes=CHECK-FPGA-HW,CHECK-FPGA-HW-FPME
75-
// RUN: %clang -target x86_64-unknown-linux-gnu -fsycl --no-offload-new-driver -fsycl-targets=spir64_fpga-unknown-unknown -Xshardware -foffload-fp32-prec-div %s -### 2>&1 \
76-
// RUN: | FileCheck %s -check-prefixes=CHECK-FPGA-HW
77-
// RUN: %clang -target x86_64-unknown-linux-gnu -fsycl --no-offload-new-driver -fsycl-targets=spir64_fpga-unknown-unknown -Xshardware -foffload-fp32-prec-sqrt %s -### 2>&1 \
78-
// RUN: | FileCheck %s -check-prefixes=CHECK-FPGA-HW
79-
// RUN: %clang -target x86_64-unknown-linux-gnu -fsycl --no-offload-new-driver -fsycl-targets=spir64_fpga-unknown-unknown -Xshardware -foffload-fp32-prec-div -foffload-fp32-prec-sqrt %s -### 2>&1 \
80-
// RUN: | FileCheck %s -check-prefixes=CHECK-FPGA-HW
81-
// RUN: %clang -target x86_64-unknown-linux-gnu -fsycl --no-offload-new-driver -fsycl-targets=spir64_fpga-unknown-unknown -Xshardware -foffload-fp32-prec-sqrt -foffload-fp32-prec-div %s -### 2>&1 \
82-
// RUN: | FileCheck %s -check-prefixes=CHECK-FPGA-HW
83-
8427

8528
// CHECK-DEFAULT: llvm-spirv{{.*}}"-spirv-ext=-all
8629
// CHECK-DEFAULT-SAME:,+SPV_EXT_shader_atomic_float_add
@@ -119,7 +62,7 @@
11962
// CHECK-DEFAULT-SAME:,+SPV_KHR_non_semantic_info
12063
// CHECK-DEFAULT-SAME:,+SPV_KHR_cooperative_matrix
12164
// CHECK-DEFAULT-SAME:,+SPV_EXT_shader_atomic_float16_add
122-
// CHECK-DEFAULT-FPME:,+SPV_INTEL_fp_max_error"
65+
// CHECK-DEFAULT-SAME:,+SPV_INTEL_fp_max_error
12366
// CHECK-FPGA-HW: llvm-spirv{{.*}}"-spirv-ext=-all
12467
// CHECK-FPGA-HW-SAME:,+SPV_EXT_shader_atomic_float_add
12568
// CHECK-FPGA-HW-SAME:,+SPV_EXT_shader_atomic_float_min_max
@@ -148,8 +91,7 @@
14891
// CHECK-FPGA-HW-SAME:,+SPV_INTEL_fpga_cluster_attributes,+SPV_INTEL_loop_fuse
14992
// CHECK-FPGA-HW-SAME:,+SPV_INTEL_fpga_dsp_control
15093
// CHECK-FPGA-HW-SAME:,+SPV_INTEL_fpga_memory_accesses
151-
// CHECK-FPGA-HW-SAME:,+SPV_INTEL_fpga_memory_attributes
152-
// CHECK-FPGA-HW-FPME:,+SPV_INTEL_fp_max_error"
94+
// CHECK-FPGA-HW-SAME:,+SPV_INTEL_fpga_memory_attributes"
15395
// CHECK-CPU: llvm-spirv{{.*}}"-spirv-allow-unknown-intrinsics=llvm.genx.,llvm.fpbuiltin"
15496
// CHECK-CPU-SAME: {{.*}}"-spirv-ext=-all
15597
// CHECK-CPU-SAME:,+SPV_EXT_shader_atomic_float_add
@@ -185,4 +127,4 @@
185127
// CHECK-CPU-SAME:,+SPV_INTEL_optnone
186128
// CHECK-CPU-SAME:,+SPV_KHR_non_semantic_info
187129
// CHECK-CPU-SAME:,+SPV_KHR_cooperative_matrix
188-
// CHECK-CPU-NFPME-NOT:,+SPV_INTEL_fp_max_error"
130+
// CHECK-CPU-SAME:,+SPV_INTEL_fp_max_error

clang/test/Driver/sycl-spirv-ext.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@
6363
// CHECK-DEFAULT-SAME:,+SPV_KHR_non_semantic_info
6464
// CHECK-DEFAULT-SAME:,+SPV_KHR_cooperative_matrix
6565
// CHECK-DEFAULT-SAME:,+SPV_EXT_shader_atomic_float16_add
66+
// CHECK-DEFAULT-SAME:,+SPV_INTEL_fp_max_error
6667

6768
// CHECK-CPU: llvm-spirv{{.*}}-spirv-ext=-all
6869
// CHECK-CPU-SAME:,+SPV_EXT_shader_atomic_float_add

clang/test/Driver/sycl-spirv-metadata-old-model.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
// RUN: FileCheck -check-prefix CHECK-WITHOUT %s
1010

1111
// CHECK-WITH: llvm-spirv{{.*}} "--spirv-preserve-auxdata"
12-
// CHECK-WITH-SAME: "-spirv-ext=-all,{{.*}},+SPV_EXT_shader_atomic_float16_add"
12+
// CHECK-WITH-SAME: "-spirv-ext=-all,{{.*}},+SPV_INTEL_fp_max_error"
1313

1414
// CHECK-WITHOUT: "{{.*}}llvm-spirv"
1515
// CHECK-WITHOUT-NOT: --spirv-preserve-auxdata

clang/test/Driver/sycl-spirv-obj-old-model.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
// SPIRV_DEVICE_OBJ-SAME: "-o" "[[DEVICE_BC:.+\.bc]]"
1212
// SPIRV_DEVICE_OBJ: llvm-spirv{{.*}} "-o" "[[DEVICE_SPV:.+\.spv]]"
1313
// SPIRV_DEVICE_OBJ-SAME: "--spirv-preserve-auxdata"
14-
// SPIRV_DEVICE_OBJ-SAME: "-spirv-ext=-all,{{.*}},+SPV_EXT_shader_atomic_float16_add"
14+
// SPIRV_DEVICE_OBJ-SAME: "-spirv-ext=-all,{{.*}},+SPV_INTEL_fp_max_error"
1515
// SPIRV_DEVICE_OBJ-SAME: "[[DEVICE_BC]]"
1616
// SPIRV_DEVICE_OBJ: clang{{.*}} "-cc1" "-triple" "x86_64-unknown-linux-gnu"
1717
// SPIRV_DEVICE_OBJ-SAME: "-fsycl-is-host"

clang/test/Driver/sycl-spirv-obj.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
// SPIRV_DEVICE_OBJ-SAME: "-o" "[[DEVICE_BC:.+\.bc]]"
1212
// SPIRV_DEVICE_OBJ: llvm-spirv{{.*}} "-o" "[[DEVICE_SPV:.+\.spv]]"
1313
// SPIRV_DEVICE_OBJ-SAME: "--spirv-preserve-auxdata"
14-
// SPIRV_DEVICE_OBJ-SAME: "-spirv-ext=-all,{{.*}},+SPV_EXT_shader_atomic_float16_add"
14+
// SPIRV_DEVICE_OBJ-SAME: "-spirv-ext=-all,{{.*}},+SPV_INTEL_fp_max_error"
1515
// SPIRV_DEVICE_OBJ-SAME: "[[DEVICE_BC]]"
1616
// SPIRV_DEVICE_OBJ: clang-offload-packager{{.*}} "--image=file=[[DEVICE_SPV]]{{.*}}"
1717
// SPIRV_DEVICE_OBJ: clang{{.*}} "-cc1" "-triple" "x86_64-unknown-linux-gnu"

clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -874,9 +874,8 @@ getTripleBasedSPIRVTransOpts(const ArgList &Args,
874874
",+SPV_INTEL_optnone"
875875
",+SPV_KHR_non_semantic_info"
876876
",+SPV_KHR_cooperative_matrix"
877-
",+SPV_EXT_shader_atomic_float16_add";
878-
if (IsCPU)
879-
ExtArg += ",+SPV_INTEL_fp_max_error";
877+
",+SPV_EXT_shader_atomic_float16_add"
878+
",+SPV_INTEL_fp_max_error";
880879
TranslatorArgs.push_back(Args.MakeArgString(ExtArg));
881880
}
882881

clang/tools/clang-sycl-linker/ClangSYCLLinker.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -366,7 +366,8 @@ static void getSPIRVTransOpts(const ArgList &Args,
366366
",+SPV_INTEL_tensor_float32_conversion"
367367
",+SPV_INTEL_optnone"
368368
",+SPV_KHR_non_semantic_info"
369-
",+SPV_KHR_cooperative_matrix";
369+
",+SPV_KHR_cooperative_matrix"
370+
",+SPV_INTEL_fp_max_error";
370371
TranslatorArgs.push_back(Args.MakeArgString(ExtArg));
371372
}
372373

0 commit comments

Comments
 (0)