157 lines · plain
1// RUN: %clang_cc1 -std=hlsl202x -finclude-default-header -x hlsl -triple \2// RUN: dxil-pc-shadermodel6.3-library %s -emit-llvm -disable-llvm-passes \3// RUN: -o - | FileCheck %s --check-prefixes=CHECK \4// RUN: -DFNATTRS="hidden noundef nofpclass(nan inf)" -DTARGET=dx5// RUN: %clang_cc1 -std=hlsl202x -finclude-default-header -x hlsl -triple \6// RUN: spirv-unknown-vulkan-compute %s -emit-llvm -disable-llvm-passes \7// RUN: -o - | FileCheck %s --check-prefixes=CHECK \8// RUN: -DFNATTRS="hidden spir_func noundef nofpclass(nan inf)" -DTARGET=spv9 10// CHECK: define [[FNATTRS]] float @11// CHECK: call reassoc nnan ninf nsz arcp afn float @llvm.[[TARGET]].normalize.f32(float12// CHECK: ret float13float test_normalize_double(double p0)14{15 return normalize(p0);16}17// CHECK: define [[FNATTRS]] <2 x float> @18// CHECK: %hlsl.normalize = call reassoc nnan ninf nsz arcp afn <2 x float> @llvm.[[TARGET]].normalize.v2f32(<2 x float>19// CHECK: ret <2 x float> %hlsl.normalize20float2 test_normalize_double2(double2 p0)21{22 return normalize(p0);23}24// CHECK: define [[FNATTRS]] <3 x float> @25// CHECK: %hlsl.normalize = call reassoc nnan ninf nsz arcp afn <3 x float> @llvm.[[TARGET]].normalize.v3f32(26// CHECK: ret <3 x float> %hlsl.normalize27float3 test_normalize_double3(double3 p0)28{29 return normalize(p0);30}31// CHECK: define [[FNATTRS]] <4 x float> @32// CHECK: %hlsl.normalize = call reassoc nnan ninf nsz arcp afn <4 x float> @llvm.[[TARGET]].normalize.v4f32(33// CHECK: ret <4 x float> %hlsl.normalize34float4 test_length_double4(double4 p0)35{36 return normalize(p0);37}38 39// CHECK: define [[FNATTRS]] float @40// CHECK: call reassoc nnan ninf nsz arcp afn float @llvm.[[TARGET]].normalize.f32(float41// CHECK: ret float42float test_normalize_int(int p0)43{44 return normalize(p0);45}46// CHECK: define [[FNATTRS]] <2 x float> @47// CHECK: %hlsl.normalize = call reassoc nnan ninf nsz arcp afn <2 x float> @llvm.[[TARGET]].normalize.v2f32(<2 x float>48// CHECK: ret <2 x float> %hlsl.normalize49float2 test_normalize_int2(int2 p0)50{51 return normalize(p0);52}53// CHECK: define [[FNATTRS]] <3 x float> @54// CHECK: %hlsl.normalize = call reassoc nnan ninf nsz arcp afn <3 x float> @llvm.[[TARGET]].normalize.v3f32(55// CHECK: ret <3 x float> %hlsl.normalize56float3 test_normalize_int3(int3 p0)57{58 return normalize(p0);59}60// CHECK: define [[FNATTRS]] <4 x float> @61// CHECK: %hlsl.normalize = call reassoc nnan ninf nsz arcp afn <4 x float> @llvm.[[TARGET]].normalize.v4f32(62// CHECK: ret <4 x float> %hlsl.normalize63float4 test_length_int4(int4 p0)64{65 return normalize(p0);66}67 68// CHECK: define [[FNATTRS]] float @69// CHECK: call reassoc nnan ninf nsz arcp afn float @llvm.[[TARGET]].normalize.f32(float70// CHECK: ret float71float test_normalize_uint(uint p0)72{73 return normalize(p0);74}75// CHECK: define [[FNATTRS]] <2 x float> @76// CHECK: %hlsl.normalize = call reassoc nnan ninf nsz arcp afn <2 x float> @llvm.[[TARGET]].normalize.v2f32(<2 x float>77 78// CHECK: ret <2 x float> %hlsl.normalize79float2 test_normalize_uint2(uint2 p0)80{81 return normalize(p0);82}83// CHECK: define [[FNATTRS]] <3 x float> @84// CHECK: %hlsl.normalize = call reassoc nnan ninf nsz arcp afn <3 x float> @llvm.[[TARGET]].normalize.v3f32(85// CHECK: ret <3 x float> %hlsl.normalize86float3 test_normalize_uint3(uint3 p0)87{88 return normalize(p0);89}90// CHECK: define [[FNATTRS]] <4 x float> @91// CHECK: %hlsl.normalize = call reassoc nnan ninf nsz arcp afn <4 x float> @llvm.[[TARGET]].normalize.v4f32(92// CHECK: ret <4 x float> %hlsl.normalize93float4 test_length_uint4(uint4 p0)94{95 return normalize(p0);96}97 98// CHECK: define [[FNATTRS]] float @99// CHECK: call reassoc nnan ninf nsz arcp afn float @llvm.[[TARGET]].normalize.f32(float100// CHECK: ret float101float test_normalize_int64_t(int64_t p0)102{103 return normalize(p0);104}105// CHECK: define [[FNATTRS]] <2 x float> @106// CHECK: %hlsl.normalize = call reassoc nnan ninf nsz arcp afn <2 x float> @llvm.[[TARGET]].normalize.v2f32(<2 x float>107 108// CHECK: ret <2 x float> %hlsl.normalize109float2 test_normalize_int64_t2(int64_t2 p0)110{111 return normalize(p0);112}113// CHECK: define [[FNATTRS]] <3 x float> @114// CHECK: %hlsl.normalize = call reassoc nnan ninf nsz arcp afn <3 x float> @llvm.[[TARGET]].normalize.v3f32(115// CHECK: ret <3 x float> %hlsl.normalize116float3 test_normalize_int64_t3(int64_t3 p0)117{118 return normalize(p0);119}120// CHECK: define [[FNATTRS]] <4 x float> @121// CHECK: %hlsl.normalize = call reassoc nnan ninf nsz arcp afn <4 x float> @llvm.[[TARGET]].normalize.v4f32(122// CHECK: ret <4 x float> %hlsl.normalize123float4 test_length_int64_t4(int64_t4 p0)124{125 return normalize(p0);126}127 128// CHECK: define [[FNATTRS]] float @129// CHECK: call reassoc nnan ninf nsz arcp afn float @llvm.[[TARGET]].normalize.f32(float130// CHECK: ret float131float test_normalize_uint64_t(uint64_t p0)132{133 return normalize(p0);134}135// CHECK: define [[FNATTRS]] <2 x float> @136// CHECK: %hlsl.normalize = call reassoc nnan ninf nsz arcp afn <2 x float> @llvm.[[TARGET]].normalize.v2f32(<2 x float>137 138// CHECK: ret <2 x float> %hlsl.normalize139float2 test_normalize_uint64_t2(uint64_t2 p0)140{141 return normalize(p0);142}143// CHECK: define [[FNATTRS]] <3 x float> @144// CHECK: %hlsl.normalize = call reassoc nnan ninf nsz arcp afn <3 x float> @llvm.[[TARGET]].normalize.v3f32(145// CHECK: ret <3 x float> %hlsl.normalize146float3 test_normalize_uint64_t3(uint64_t3 p0)147{148 return normalize(p0);149}150// CHECK: define [[FNATTRS]] <4 x float> @151// CHECK: %hlsl.normalize = call reassoc nnan ninf nsz arcp afn <4 x float> @llvm.[[TARGET]].normalize.v4f32(152// CHECK: ret <4 x float> %hlsl.normalize153float4 test_length_uint64_t4(uint64_t4 p0)154{155 return normalize(p0);156}157