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
: not %clang -cl-std
=c99 -DOPENCL %s
2>&1 | FileCheck --check-prefix
=CHECK-C99 %s
21 // RUN
: not %clang -cl-std
=invalid -DOPENCL %s
2>&1 | FileCheck --check-prefix
=CHECK-INVALID %s
22 // RUN
: %clang -S -
### -target spir-unknown-unknown %s
2>&1 | FileCheck --check-prefix
=CHECK-W-SPIR-COMPAT %s
23 // RUN
: %clang -S -
### -target amdgcn-amd-amdhsa-opencl %s
2>&1 | FileCheck --check-prefix
=CHECK-NO-W-SPIR-COMPAT %s
24 // RUN
: %clang -S -
### -cl-ext
="+test_ext" %s
2>&1 | FileCheck --check-prefix
=CHECK-EXT %s
26 // CHECK-CL
: "-cc1" {{.
*}} "-cl-std=CL"
27 // CHECK-CL10
: "-cc1" {{.
*}} "-cl-std=CL1.0"
28 // CHECK-CL11
: "-cc1" {{.
*}} "-cl-std=CL1.1"
29 // CHECK-CL12
: "-cc1" {{.
*}} "-cl-std=CL1.2"
30 // CHECK-CL20
: "-cc1" {{.
*}} "-cl-std=CL2.0"
31 // CHECK-CL30
: "-cc1" {{.
*}} "-cl-std=CL3.0"
32 // CHECK-CLCPP
: "-cc1" {{.
*}} "-cl-std=clc++"
33 // CHECK-OPT-DISABLE
: "-cc1" {{.
*}} "-cl-opt-disable"
34 // CHECK-STRICT-ALIASING
: "-cc1" {{.
*}} "-cl-strict-aliasing"
35 // CHECK-SINGLE-PRECISION-CONST
: "-cc1" {{.
*}} "-cl-single-precision-constant"
36 // CHECK-FINITE-MATH-ONLY
: "-cc1" {{.
*}} "-cl-finite-math-only"
37 // CHECK-KERNEL-ARG-INFO
: "-cc1" {{.
*}} "-cl-kernel-arg-info"
38 // CHECK-UNSAFE-MATH-OPT
: "-cc1" {{.
*}} "-cl-unsafe-math-optimizations"
39 // CHECK-FAST-RELAXED-MATH
: "-cc1" {{.
*}} "-cl-fast-relaxed-math"
40 // CHECK-MAD-ENABLE
: "-cc1" {{.
*}} "-cl-mad-enable"
41 // CHECK-NO-SIGNED-ZEROS
: "-cc1" {{.
*}} "-cl-no-signed-zeros"
43 // This is not forwarded
44 // CHECK-DENORMS-ARE-ZERO-NOT
: "-cl-denorms-are-zero"
46 // CHECK-ROUND-DIV
: "-cc1" {{.
*}} "-cl-fp32-correctly-rounded-divide-sqrt"
47 // CHECK-UNIFORM-WG
: "-cc1" {{.
*}} "-cl-uniform-work-group-size"
48 // CHECK-C99
: error
: invalid value
'c99
' in
'-cl-std
=c99
'
49 // CHECK-INVALID
: error
: invalid value
'invalid
' in
'-cl-std
=invalid
'
51 // CHECK-W-SPIR-COMPAT
: "-Wspir-compat"
52 // CHECK-NO-W-SPIR-COMPAT-NOT
: "-Wspir-compat"
54 // CHECK-EXT
: "-cc1" {{.
*}} "-cl-ext=+test_ext"
56 kernel void func
(void);