Skip to content

Commit bdf78d7

Browse files
committed
Addresed review comments.
1 parent 54f2409 commit bdf78d7

File tree

3 files changed

+112
-26
lines changed

3 files changed

+112
-26
lines changed

clang/lib/Driver/ToolChains/Clang.cpp

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1737,21 +1737,20 @@ void Clang::AddSPIRTargetArgs(const ArgList &Args, ArgStringList &CmdArgs,
17371737
CmdArgs.push_back("-fno-offload-fp32-prec-div");
17381738
CmdArgs.push_back("-fno-offload-fp32-prec-sqrt");
17391739
}
1740+
} else {
1741+
if (Arg *A = Args.getLastArg(options::OPT_ffp_accuracy_EQ)) {
1742+
if (Args.getLastArg(options::OPT_fno_offload_fp32_prec_div))
1743+
EmitAccuracyDiag(D, JA, A->getValue(), "-fno-offload-fp32-prec-div");
1744+
if (Args.getLastArg(options::OPT_fno_offload_fp32_prec_sqrt))
1745+
EmitAccuracyDiag(D, JA, A->getValue(), "-fno-offload-fp32-prec-sqrt");
1746+
}
1747+
if (!Args.hasFlag(options::OPT_foffload_fp32_prec_div,
1748+
options::OPT_fno_offload_fp32_prec_div, true))
1749+
CmdArgs.push_back("-fno-offload-fp32-prec-div");
1750+
if (!Args.hasFlag(options::OPT_foffload_fp32_prec_sqrt,
1751+
options::OPT_fno_offload_fp32_prec_sqrt, true))
1752+
CmdArgs.push_back("-fno-offload-fp32-prec-sqrt");
17401753
}
1741-
if (Arg *A = Args.getLastArg(options::OPT_ffp_accuracy_EQ)) {
1742-
if (Args.getLastArg(options::OPT_fno_offload_fp32_prec_div))
1743-
EmitAccuracyDiag(D, JA, A->getValue(), "-fno-offload-fp32-prec-div");
1744-
if (Args.getLastArg(options::OPT_fno_offload_fp32_prec_sqrt))
1745-
EmitAccuracyDiag(D, JA, A->getValue(), "-fno-offload-fp32-prec-sqrt");
1746-
}
1747-
if (Args.getLastArg(options::OPT_fno_offload_fp32_prec_div))
1748-
CmdArgs.push_back("-fno-offload-fp32-prec-div");
1749-
else
1750-
CmdArgs.push_back("-foffload-fp32-prec-div");
1751-
if (Args.getLastArg(options::OPT_fno_offload_fp32_prec_sqrt))
1752-
CmdArgs.push_back("-fno-offload-fp32-prec-sqrt");
1753-
else
1754-
CmdArgs.push_back("-foffload-fp32-prec-sqrt");
17551754
}
17561755
}
17571756

@@ -1820,6 +1819,8 @@ void Clang::RenderTargetOptions(const llvm::Triple &EffectiveTriple,
18201819

18211820
case llvm::Triple::spir:
18221821
case llvm::Triple::spir64:
1822+
case llvm::Triple::spirv32:
1823+
case llvm::Triple::spirv64:
18231824
AddSPIRTargetArgs(Args, CmdArgs, JA, D);
18241825
break;
18251826
case llvm::Triple::arm:

clang/test/CodeGenSYCL/offload-fp32-div-sqrt.cpp

Lines changed: 93 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,110 @@
1-
// DEFINE: %{common_opts} = -internal-isystem %S/Inputs -fsycl-is-device \
2-
// DEFINE: -emit-llvm -triple spir64-unknown-unknown
1+
// DEFINE: %{common_opts_spirv32} = -internal-isystem %S/Inputs \
2+
// DEFINE: -fsycl-is-device -emit-llvm -triple spirv32-unknown-unknown
33

4-
// RUN: %clang_cc1 %{common_opts} %s -o - \
4+
// DEFINE: %{common_opts_spirv64} = -internal-isystem %S/Inputs \
5+
// DEFINE: -fsycl-is-device -emit-llvm -triple spirv32-unknown-unknown
6+
7+
// DEFINE: %{common_opts_spir} = -internal-isystem %S/Inputs \
8+
// DEFINE: -fsycl-is-device -emit-llvm -triple spirv32-unknown-unknown
9+
10+
// DEFINE: %{common_opts_spir64} = -internal-isystem %S/Inputs \
11+
// DEFINE: -fsycl-is-device -emit-llvm -triple spirv32-unknown-unknown
12+
13+
// RUN: %clang_cc1 %{common_opts_spirv32} %s -o - \
14+
// RUN: | FileCheck --check-prefix PREC-SQRT %s
15+
16+
// RUN: %clang_cc1 %{common_opts_spirv32} -foffload-fp32-prec-sqrt %s -o - \
17+
// RUN: | FileCheck --check-prefix PREC-SQRT %s
18+
19+
// RUN: %clang_cc1 %{common_opts_spirv32} -fno-offload-fp32-prec-sqrt %s -o - \
20+
// RUN: | FileCheck --check-prefix ROUNDED-SQRT %s
21+
22+
// RUN: %clang_cc1 %{common_opts_spirv32} -foffload-fp32-prec-div %s -o - \
23+
// RUN: | FileCheck --check-prefix PREC-DIV %s
24+
25+
// RUN: %clang_cc1 %{common_opts_spirv32} -fno-offload-fp32-prec-div %s -o - \
26+
// RUN: | FileCheck --check-prefix ROUNDED-DIV %s
27+
28+
// RUN: %clang_cc1 %{common_opts_spirv32} -ffast-math \
29+
// RUN:-fno-offload-fp32-prec-div -fno-offload-fp32-prec-sqrt %s -o - \
30+
// RUN: | FileCheck --check-prefix ROUNDED-SQRT-FAST %s
31+
32+
// RUN: %clang_cc1 %{common_opts_spirv32} -ffast-math \
33+
// RUN: -fno-offload-fp32-prec-div -fno-offload-fp32-prec-sqrt %s -o - \
34+
// RUN: | FileCheck --check-prefix ROUNDED-DIV-FAST %s
35+
36+
//
37+
38+
// RUN: %clang_cc1 %{common_opts_spirv64} %s -o - \
39+
// RUN: | FileCheck --check-prefix PREC-SQRT %s
40+
41+
// RUN: %clang_cc1 %{common_opts_spirv64} -foffload-fp32-prec-sqrt %s -o - \
42+
// RUN: | FileCheck --check-prefix PREC-SQRT %s
43+
44+
// RUN: %clang_cc1 %{common_opts_spirv64} -fno-offload-fp32-prec-sqrt %s -o - \
45+
// RUN: | FileCheck --check-prefix ROUNDED-SQRT %s
46+
47+
// RUN: %clang_cc1 %{common_opts_spirv64} -foffload-fp32-prec-div %s -o - \
48+
// RUN: | FileCheck --check-prefix PREC-DIV %s
49+
50+
// RUN: %clang_cc1 %{common_opts_spirv64} -fno-offload-fp32-prec-div %s -o - \
51+
// RUN: | FileCheck --check-prefix ROUNDED-DIV %s
52+
53+
// RUN: %clang_cc1 %{common_opts_spirv64} -ffast-math -fno-offload-fp32-prec-div \
54+
// RUN: -fno-offload-fp32-prec-sqrt %s -o - \
55+
// RUN: | FileCheck --check-prefix ROUNDED-SQRT-FAST %s
56+
57+
// RUN: %clang_cc1 %{common_opts_spirv64} -ffast-math -fno-offload-fp32-prec-div \
58+
// RUN: -fno-offload-fp32-prec-sqrt %s -o - \
59+
// RUN: | FileCheck --check-prefix ROUNDED-DIV-FAST %s
60+
61+
//
62+
63+
// RUN: %clang_cc1 %{common_opts_spir} %s -o - \
64+
// RUN: | FileCheck --check-prefix PREC-SQRT %s
65+
66+
// RUN: %clang_cc1 %{common_opts_spir} -foffload-fp32-prec-sqrt %s -o - \
67+
// RUN: | FileCheck --check-prefix PREC-SQRT %s
68+
69+
// RUN: %clang_cc1 %{common_opts_spir} -fno-offload-fp32-prec-sqrt %s -o - \
70+
// RUN: | FileCheck --check-prefix ROUNDED-SQRT %s
71+
72+
// RUN: %clang_cc1 %{common_opts_spir} -foffload-fp32-prec-div %s -o - \
73+
// RUN: | FileCheck --check-prefix PREC-DIV %s
74+
75+
// RUN: %clang_cc1 %{common_opts_spir} -fno-offload-fp32-prec-div %s -o - \
76+
// RUN: | FileCheck --check-prefix ROUNDED-DIV %s
77+
78+
// RUN: %clang_cc1 %{common_opts_spir} -ffast-math -fno-offload-fp32-prec-div \
79+
// RUN: -fno-offload-fp32-prec-sqrt %s -o - \
80+
// RUN: | FileCheck --check-prefix ROUNDED-SQRT-FAST %s
81+
82+
// RUN: %clang_cc1 %{common_opts_spir} -ffast-math -fno-offload-fp32-prec-div \
83+
// RUN: -fno-offload-fp32-prec-sqrt %s -o - \
84+
// RUN: | FileCheck --check-prefix ROUNDED-DIV-FAST %s
85+
86+
//
87+
88+
// RUN: %clang_cc1 %{common_opts_spir64} %s -o - \
589
// RUN: | FileCheck --check-prefix PREC-SQRT %s
690

7-
// RUN: %clang_cc1 %{common_opts} -foffload-fp32-prec-sqrt %s -o - \
91+
// RUN: %clang_cc1 %{common_opts_spir64} -foffload-fp32-prec-sqrt %s -o - \
892
// RUN: | FileCheck --check-prefix PREC-SQRT %s
993

10-
// RUN: %clang_cc1 %{common_opts} -fno-offload-fp32-prec-sqrt %s -o - \
94+
// RUN: %clang_cc1 %{common_opts_spir64} -fno-offload-fp32-prec-sqrt %s -o - \
1195
// RUN: | FileCheck --check-prefix ROUNDED-SQRT %s
1296

13-
// RUN: %clang_cc1 %{common_opts} -foffload-fp32-prec-div %s -o - \
97+
// RUN: %clang_cc1 %{common_opts_spir64} -foffload-fp32-prec-div %s -o - \
1498
// RUN: | FileCheck --check-prefix PREC-DIV %s
1599

16-
// RUN: %clang_cc1 %{common_opts} -fno-offload-fp32-prec-div %s -o - \
100+
// RUN: %clang_cc1 %{common_opts_spir64} -fno-offload-fp32-prec-div %s -o - \
17101
// RUN: | FileCheck --check-prefix ROUNDED-DIV %s
18102

19-
// RUN: %clang_cc1 %{common_opts} -ffast-math -fno-offload-fp32-prec-div \
103+
// RUN: %clang_cc1 %{common_opts_spir64} -ffast-math -fno-offload-fp32-prec-div \
20104
// RUN: -fno-offload-fp32-prec-sqrt %s -o - \
21105
// RUN: | FileCheck --check-prefix ROUNDED-SQRT-FAST %s
22106

23-
// RUN: %clang_cc1 %{common_opts} -ffast-math -fno-offload-fp32-prec-div \
107+
// RUN: %clang_cc1 %{common_opts_spir64} -ffast-math -fno-offload-fp32-prec-div \
24108
// RUN: -fno-offload-fp32-prec-sqrt %s -o - \
25109
// RUN: | FileCheck --check-prefix ROUNDED-DIV-FAST %s
26110

clang/test/Driver/offload-fp32-div-sqrt.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,11 @@
4545
// RUN: -fno-offload-fp32-prec-sqrt -### %s 2>&1 \
4646
// RUN: | FileCheck %s --check-prefix=WARN-LOW-SQRT
4747

48-
// CHECK: "-triple" "spir64{{.*}}" "-fsycl-is-device"{{.*}} "-foffload-fp32-prec-div" "-foffload-fp32-prec-sqrt"
48+
// CHECK: "-triple" "spir64{{.*}}" "-fsycl-is-device"{{.*}}
49+
4950
// CHECK-NOT: "-triple{{.*}}" "-fsycl-is-host"{{.*}} "-foffload-fp32-prec-div" "-foffload-fp32-prec-sqrt"
50-
// NO_PREC_DIV: "-triple" "spir64{{.*}}"{{.*}} "-fsycl-is-device"{{.*}} "-fno-offload-fp32-prec-div" "-foffload-fp32-prec-sqrt"
51-
// NO_PREC_SQRT: "-triple" "spir64{{.*}}" "-fsycl-is-device"{{.*}} "-foffload-fp32-prec-div" "-fno-offload-fp32-prec-sqrt"
51+
// NO_PREC_DIV: "-triple" "spir64{{.*}}"{{.*}} "-fsycl-is-device"{{.*}} "-fno-offload-fp32-prec-div"
52+
// NO_PREC_SQRT: "-triple" "spir64{{.*}}" "-fsycl-is-device"{{.*}} "-fno-offload-fp32-prec-sqrt"
5253
// NO_PREC_DIV_SQRT: "-triple" "spir64{{.*}}" "-fsycl-is-device"{{.*}} "-fno-offload-fp32-prec-div" "-fno-offload-fp32-prec-sqrt"
5354
// RUN: %clang -c -fsycl -ffp-model=fast -### %s 2>&1 | FileCheck --check-prefix=FAST %s
5455

0 commit comments

Comments
 (0)