1 // RUN
: %clang -S -
### -cl-std
=CL %s
2>&1 | FileCheck --check-prefix
=CHECK-CL %s
2 // RUN
: %clang -S -
### -cl-std
=CL1.0 %s
2>&1 | FileCheck --check-prefix
=CHECK-CL10 %s
3 // RUN
: %clang -S -
### -cl-std
=CL1.1 %s
2>&1 | FileCheck --check-prefix
=CHECK-CL11 %s
4 // RUN
: %clang -S -
### -cl-std
=CL1.2 %s
2>&1 | FileCheck --check-prefix
=CHECK-CL12 %s
5 // RUN
: %clang -S -
### -cl-std
=CL2.0 %s
2>&1 | FileCheck --check-prefix
=CHECK-CL20 %s
6 // RUN
: %clang -S -
### -cl-std
=CL3.0 %s
2>&1 | FileCheck --check-prefix
=CHECK-CL30 %s
7 // RUN
: %clang -S -
### -cl-std
=clc
++ %s
2>&1 | FileCheck --check-prefix
=CHECK-CLCPP %s
8 // RUN
: %clang -S -
### -cl-opt-disable %s
2>&1 | FileCheck --check-prefix
=CHECK-OPT-DISABLE %s
9 // RUN
: %clang -S -
### -cl-strict-aliasing %s
2>&1 | FileCheck --check-prefix
=CHECK-STRICT-ALIASING %s
10 // RUN
: %clang -S -
### -cl-single-precision-constant %s
2>&1 | FileCheck --check-prefix
=CHECK-SINGLE-PRECISION-CONST %s
11 // RUN
: %clang -S -
### -cl-finite-math-only %s
2>&1 | FileCheck --check-prefix
=CHECK-FINITE-MATH-ONLY %s
12 // RUN
: %clang -S -
### -cl-kernel-arg-info %s
2>&1 | FileCheck --check-prefix
=CHECK-KERNEL-ARG-INFO %s
13 // RUN
: %clang -S -
### -cl-unsafe-math-optimizations %s
2>&1 | FileCheck --check-prefix
=CHECK-UNSAFE-MATH-OPT %s
14 // RUN
: %clang -S -
### -cl-fast-relaxed-math %s
2>&1 | FileCheck --check-prefix
=CHECK-FAST-RELAXED-MATH %s
15 // RUN
: %clang -S -
### -cl-mad-enable %s
2>&1 | FileCheck --check-prefix
=CHECK-MAD-ENABLE %s
16 // RUN
: %clang -S -
### -cl-no-signed-zeros %s
2>&1 | FileCheck --check-prefix
=CHECK-NO-SIGNED-ZEROS %s
17 // RUN
: %clang -S -
### -cl-denorms-are-zero %s
2>&1 | FileCheck --check-prefix
=CHECK-DENORMS-ARE-ZERO %s
18 // RUN
: %clang -S -
### -cl-fp32-correctly-rounded-divide-sqrt %s
2>&1 | FileCheck --check-prefix
=CHECK-ROUND-DIV %s
19 // RUN
: %clang -S -
### -cl-uniform-work-group-size %s
2>&1 | FileCheck --check-prefix
=CHECK-UNIFORM-WG %s
20 // RUN
: %clang -S -
### -foffload-uniform-block %s
2>&1 | FileCheck --check-prefix
=CHECK-UNIFORM-WG %s
21 // RUN
: %clang -S -
### -fno-offload-uniform-block -cl-uniform-work-group-size %s
2>&1 | FileCheck --check-prefix
=CHECK-UNIFORM-WG %s
22 // RUN
: not %clang -cl-std
=c99 -DOPENCL %s
2>&1 | FileCheck --check-prefix
=CHECK-C99 %s
23 // RUN
: not %clang -cl-std
=invalid -DOPENCL %s
2>&1 | FileCheck --check-prefix
=CHECK-INVALID %s
24 // RUN
: %clang -S -
### --target
=spir %s
2>&1 | FileCheck --check-prefix
=CHECK-W-SPIR-COMPAT %s
25 // RUN
: %clang -S -
### --target
=amdgcn-amd-amdhsa-opencl -nogpuinc -nogpulib %s
2>&1 | FileCheck --check-prefix
=CHECK-NO-W-SPIR-COMPAT %s
26 // RUN
: %clang -S -
### -cl-ext
="+test_ext" %s
2>&1 | FileCheck --check-prefix
=CHECK-EXT %s
28 // CHECK-CL
: "-cc1" {{.
*}} "-cl-std=CL"
29 // CHECK-CL10
: "-cc1" {{.
*}} "-cl-std=CL1.0"
30 // CHECK-CL11
: "-cc1" {{.
*}} "-cl-std=CL1.1"
31 // CHECK-CL12
: "-cc1" {{.
*}} "-cl-std=CL1.2"
32 // CHECK-CL20
: "-cc1" {{.
*}} "-cl-std=CL2.0"
33 // CHECK-CL30
: "-cc1" {{.
*}} "-cl-std=CL3.0"
34 // CHECK-CLCPP
: "-cc1" {{.
*}} "-cl-std=clc++"
35 // CHECK-OPT-DISABLE
: "-cc1" {{.
*}} "-cl-opt-disable"
36 // CHECK-STRICT-ALIASING
: "-cc1" {{.
*}} "-cl-strict-aliasing"
37 // CHECK-SINGLE-PRECISION-CONST
: "-cc1" {{.
*}} "-cl-single-precision-constant"
38 // CHECK-FINITE-MATH-ONLY
: "-cc1" {{.
*}} "-menable-no-infs" "-menable-no-nans" "-cl-finite-math-only"
39 // CHECK-KERNEL-ARG-INFO
: "-cc1" {{.
*}} "-cl-kernel-arg-info"
40 // CHECK-UNSAFE-MATH-OPT
: "-cc1" {{.
*}} "-cl-unsafe-math-optimizations"
41 // CHECK-FAST-RELAXED-MATH
: "-cc1" {{.
*}} "-cl-fast-relaxed-math"
42 // CHECK-MAD-ENABLE
: "-cc1" {{.
*}} "-cl-mad-enable"
43 // CHECK-NO-SIGNED-ZEROS
: "-cc1" {{.
*}} "-cl-no-signed-zeros"
45 // This is not forwarded
46 // CHECK-DENORMS-ARE-ZERO-NOT
: "-cl-denorms-are-zero"
48 // CHECK-ROUND-DIV
: "-cc1" {{.
*}} "-cl-fp32-correctly-rounded-divide-sqrt"
49 // CHECK-UNIFORM-WG
: "-cc1" {{.
*}} "-foffload-uniform-block"
50 // CHECK-C99
: error
: invalid value
'c99
' in
'-cl-std
=c99
'
51 // CHECK-INVALID
: error
: invalid value
'invalid
' in
'-cl-std
=invalid
'
53 // CHECK-W-SPIR-COMPAT
: "-Wspir-compat"
54 // CHECK-NO-W-SPIR-COMPAT-NOT
: "-Wspir-compat"
56 // CHECK-EXT
: "-cc1" {{.
*}} "-cl-ext=+test_ext"
58 kernel void func
(void);