xref: /llvm-project/clang/test/CodeGenOpenCL/amdgpu-ieee.cl (revision 0175999805cf05d91c8a127ebd8c9d54a640abe9)
1*01759998SYaxun (Sam) Liu// REQUIRES: amdgpu-registered-target
2*01759998SYaxun (Sam) Liu//
3*01759998SYaxun (Sam) Liu// RUN: %clang_cc1 -triple amdgcn-amd-amdhsa -O0 -emit-llvm -o - %s \
4*01759998SYaxun (Sam) Liu// RUN:   | FileCheck -check-prefixes=COMMON,ON %s
5*01759998SYaxun (Sam) Liu// RUN: %clang_cc1 -triple amdgcn-amd-amdhsa -O0 -emit-llvm -o - %s \
6*01759998SYaxun (Sam) Liu// RUN:   -mno-amdgpu-ieee -menable-no-nans \
7*01759998SYaxun (Sam) Liu// RUN:   | FileCheck -check-prefixes=COMMON,OFF %s
8*01759998SYaxun (Sam) Liu// RUN: %clang_cc1 -triple amdgcn-amd-amdhsa -O0 -emit-llvm -o - %s \
9*01759998SYaxun (Sam) Liu// RUN:   -mno-amdgpu-ieee -cl-fast-relaxed-math \
10*01759998SYaxun (Sam) Liu// RUN:   | FileCheck -check-prefixes=COMMON,OFF %s
11*01759998SYaxun (Sam) Liu
12*01759998SYaxun (Sam) Liu// Check AMDGCN ISA generation.
13*01759998SYaxun (Sam) Liu
14*01759998SYaxun (Sam) Liu// RUN: %clang_cc1 -triple amdgcn-amd-amdhsa -O3 -S -o - %s \
15*01759998SYaxun (Sam) Liu// RUN:   | FileCheck -check-prefixes=ISA-ON %s
16*01759998SYaxun (Sam) Liu// RUN: %clang_cc1 -triple amdgcn-amd-amdhsa -O3 -S -o - %s \
17*01759998SYaxun (Sam) Liu// RUN:   -mno-amdgpu-ieee -menable-no-nans \
18*01759998SYaxun (Sam) Liu// RUN:   | FileCheck -check-prefixes=ISA-OFF %s
19*01759998SYaxun (Sam) Liu
20*01759998SYaxun (Sam) Liu// Check diagnostics when using -mno-amdgpu-ieee without NoHonorNaNs.
21*01759998SYaxun (Sam) Liu
22*01759998SYaxun (Sam) Liu// RUN: not %clang_cc1 -triple amdgcn-amd-amdhsa -O0 -emit-llvm -o - %s \
23*01759998SYaxun (Sam) Liu// RUN:   -mno-amdgpu-ieee 2>&1 | FileCheck -check-prefixes=DIAG %s
24*01759998SYaxun (Sam) Liu
25*01759998SYaxun (Sam) Liu// COMMON: define{{.*}} amdgpu_kernel void @kern{{.*}} [[ATTRS1:#[0-9]+]]
26*01759998SYaxun (Sam) Liu// ISA-ON: v_mul_f32_e64 v{{[0-9]+}}, 1.0, s{{[0-9]+}}
27*01759998SYaxun (Sam) Liu// ISA-ON: v_mul_f32_e64 v{{[0-9]+}}, 1.0, s{{[0-9]+}}
28*01759998SYaxun (Sam) Liu// ISA-ON: v_min_f32_e32
29*01759998SYaxun (Sam) Liu// ISA-ON: ; IeeeMode: 1
30*01759998SYaxun (Sam) Liu// ISA-OFF-NOT: v_mul_f32_e64 v{{[0-9]+}}, 1.0, s{{[0-9]+}}
31*01759998SYaxun (Sam) Liu// ISA-OFF-NOT: v_mul_f32_e64 v{{[0-9]+}}, 1.0, s{{[0-9]+}}
32*01759998SYaxun (Sam) Liu// ISA-OFF: v_min_f32_e32
33*01759998SYaxun (Sam) Liu// ISA-OFF: ; IeeeMode: 0
34*01759998SYaxun (Sam) Liukernel void kern(global float *x, float y, float z) {
35*01759998SYaxun (Sam) Liu  *x = __builtin_fmin(y, z);
36*01759998SYaxun (Sam) Liu}
37*01759998SYaxun (Sam) Liu
38*01759998SYaxun (Sam) Liu// COMMON: define{{.*}}void @fun() [[ATTRS2:#[0-9]+]]
39*01759998SYaxun (Sam) Liuvoid fun() {
40*01759998SYaxun (Sam) Liu}
41*01759998SYaxun (Sam) Liu
42*01759998SYaxun (Sam) Liu// ON-NOT: attributes [[ATTRS1]] = {{.*}} "amdgpu-ieee"
43*01759998SYaxun (Sam) Liu// OFF: attributes [[ATTRS1]] = {{.*}} "amdgpu-ieee"="false"{{.*}}"no-nans-fp-math"="true"{{.*}}"no-trapping-math"="true"
44*01759998SYaxun (Sam) Liu// ON-NOT: attributes [[ATTRS2]] = {{.*}} "amdgpu-ieee"
45*01759998SYaxun (Sam) Liu// OFF: attributes [[ATTRS2]] = {{.*}} "amdgpu-ieee"="false"{{.*}}"no-nans-fp-math"="true"{{.*}}"no-trapping-math"="true"
46*01759998SYaxun (Sam) Liu
47*01759998SYaxun (Sam) Liu// DIAG: invalid argument '-mno-amdgpu-ieee' only allowed with relaxed NaN handling
48