1// DirectX target: 2// 3// ---------- Native Half support test ----------- 4// 5// RUN: %clang_cc1 -finclude-default-header -x hlsl -triple \ 6// RUN: dxil-pc-shadermodel6.3-library %s -fnative-half-type \ 7// RUN: -emit-llvm -disable-llvm-passes -o - | FileCheck %s \ 8// RUN: -DFNATTRS="noundef nofpclass(nan inf)" -DTYPE=half 9 10// 11// ---------- No Native Half support test ----------- 12// 13// RUN: %clang_cc1 -finclude-default-header -x hlsl -triple \ 14// RUN: dxil-pc-shadermodel6.3-library %s -emit-llvm -disable-llvm-passes \ 15// RUN: -o - | FileCheck %s \ 16// RUN: -DFNATTRS="noundef nofpclass(nan inf)" -DTYPE=float 17 18 19// Spirv target: 20// 21// ---------- Native Half support test ----------- 22// 23// RUN: %clang_cc1 -finclude-default-header -x hlsl -triple \ 24// RUN: spirv-unknown-vulkan-compute %s -fnative-half-type \ 25// RUN: -emit-llvm -disable-llvm-passes -o - | FileCheck %s \ 26// RUN: -DFNATTRS="spir_func noundef nofpclass(nan inf)" -DTYPE=half 27 28// 29// ---------- No Native Half support test ----------- 30// 31// RUN: %clang_cc1 -finclude-default-header -x hlsl -triple \ 32// RUN: spirv-unknown-vulkan-compute %s -emit-llvm -disable-llvm-passes \ 33// RUN: -o - | FileCheck %s \ 34// RUN: -DFNATTRS="spir_func noundef nofpclass(nan inf)" -DTYPE=float 35 36 37 38// CHECK: define [[FNATTRS]] [[TYPE]] @ 39// CHECK: %fmod = frem reassoc nnan ninf nsz arcp afn [[TYPE]] 40// CHECK: ret [[TYPE]] %fmod 41half test_fmod_half(half p0, half p1) { return fmod(p0, p1); } 42 43// CHECK: define [[FNATTRS]] <2 x [[TYPE]]> @ 44// CHECK: %fmod = frem reassoc nnan ninf nsz arcp afn <2 x [[TYPE]]> 45// CHECK: ret <2 x [[TYPE]]> %fmod 46half2 test_fmod_half2(half2 p0, half2 p1) { return fmod(p0, p1); } 47 48// CHECK: define [[FNATTRS]] <3 x [[TYPE]]> @ 49// CHECK: %fmod = frem reassoc nnan ninf nsz arcp afn <3 x [[TYPE]]> 50// CHECK: ret <3 x [[TYPE]]> %fmod 51half3 test_fmod_half3(half3 p0, half3 p1) { return fmod(p0, p1); } 52 53// CHECK: define [[FNATTRS]] <4 x [[TYPE]]> @ 54// CHECK: %fmod = frem reassoc nnan ninf nsz arcp afn <4 x [[TYPE]]> 55// CHECK: ret <4 x [[TYPE]]> %fmod 56half4 test_fmod_half4(half4 p0, half4 p1) { return fmod(p0, p1); } 57 58// CHECK: define [[FNATTRS]] float @ 59// CHECK: %fmod = frem reassoc nnan ninf nsz arcp afn float 60// CHECK: ret float %fmod 61float test_fmod_float(float p0, float p1) { return fmod(p0, p1); } 62 63// CHECK: define [[FNATTRS]] <2 x float> @ 64// CHECK: %fmod = frem reassoc nnan ninf nsz arcp afn <2 x float> 65// CHECK: ret <2 x float> %fmod 66float2 test_fmod_float2(float2 p0, float2 p1) { return fmod(p0, p1); } 67 68// CHECK: define [[FNATTRS]] <3 x float> @ 69// CHECK: %fmod = frem reassoc nnan ninf nsz arcp afn <3 x float> 70// CHECK: ret <3 x float> %fmod 71float3 test_fmod_float3(float3 p0, float3 p1) { return fmod(p0, p1); } 72 73// CHECK: define [[FNATTRS]] <4 x float> @ 74// CHECK: %fmod = frem reassoc nnan ninf nsz arcp afn <4 x float> 75// CHECK: ret <4 x float> %fmod 76float4 test_fmod_float4(float4 p0, float4 p1) { return fmod(p0, p1); } 77 78