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