94 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: %hlsl.frac = call reassoc nnan ninf nsz arcp afn float @llvm.[[TARGET]].frac.f32(12// CHECK: ret float %hlsl.frac13float test_frac_double(double p0) { return frac(p0); }14// CHECK: define [[FNATTRS]] <2 x float> @15// CHECK: %hlsl.frac = call reassoc nnan ninf nsz arcp afn <2 x float> @llvm.[[TARGET]].frac.v2f3216// CHECK: ret <2 x float> %hlsl.frac17float2 test_frac_double2(double2 p0) { return frac(p0); }18// CHECK: define [[FNATTRS]] <3 x float> @19// CHECK: %hlsl.frac = call reassoc nnan ninf nsz arcp afn <3 x float> @llvm.[[TARGET]].frac.v3f3220// CHECK: ret <3 x float> %hlsl.frac21float3 test_frac_double3(double3 p0) { return frac(p0); }22// CHECK: define [[FNATTRS]] <4 x float> @23// CHECK: %hlsl.frac = call reassoc nnan ninf nsz arcp afn <4 x float> @llvm.[[TARGET]].frac.v4f3224// CHECK: ret <4 x float> %hlsl.frac25float4 test_frac_double4(double4 p0) { return frac(p0); }26 27// CHECK: define [[FNATTRS]] float @28// CHECK: %hlsl.frac = call reassoc nnan ninf nsz arcp afn float @llvm.[[TARGET]].frac.f32(29// CHECK: ret float %hlsl.frac30float test_frac_int(int p0) { return frac(p0); }31// CHECK: define [[FNATTRS]] <2 x float> @32// CHECK: %hlsl.frac = call reassoc nnan ninf nsz arcp afn <2 x float> @llvm.[[TARGET]].frac.v2f3233// CHECK: ret <2 x float> %hlsl.frac34float2 test_frac_int2(int2 p0) { return frac(p0); }35// CHECK: define [[FNATTRS]] <3 x float> @36// CHECK: %hlsl.frac = call reassoc nnan ninf nsz arcp afn <3 x float> @llvm.[[TARGET]].frac.v3f3237// CHECK: ret <3 x float> %hlsl.frac38float3 test_frac_int3(int3 p0) { return frac(p0); }39// CHECK: define [[FNATTRS]] <4 x float> @40// CHECK: %hlsl.frac = call reassoc nnan ninf nsz arcp afn <4 x float> @llvm.[[TARGET]].frac.v4f3241// CHECK: ret <4 x float> %hlsl.frac42float4 test_frac_int4(int4 p0) { return frac(p0); }43 44// CHECK: define [[FNATTRS]] float @45// CHECK: %hlsl.frac = call reassoc nnan ninf nsz arcp afn float @llvm.[[TARGET]].frac.f32(46// CHECK: ret float %hlsl.frac47float test_frac_uint(uint p0) { return frac(p0); }48// CHECK: define [[FNATTRS]] <2 x float> @49// CHECK: %hlsl.frac = call reassoc nnan ninf nsz arcp afn <2 x float> @llvm.[[TARGET]].frac.v2f3250// CHECK: ret <2 x float> %hlsl.frac51float2 test_frac_uint2(uint2 p0) { return frac(p0); }52// CHECK: define [[FNATTRS]] <3 x float> @53// CHECK: %hlsl.frac = call reassoc nnan ninf nsz arcp afn <3 x float> @llvm.[[TARGET]].frac.v3f3254// CHECK: ret <3 x float> %hlsl.frac55float3 test_frac_uint3(uint3 p0) { return frac(p0); }56// CHECK: define [[FNATTRS]] <4 x float> @57// CHECK: %hlsl.frac = call reassoc nnan ninf nsz arcp afn <4 x float> @llvm.[[TARGET]].frac.v4f3258// CHECK: ret <4 x float> %hlsl.frac59float4 test_frac_uint4(uint4 p0) { return frac(p0); }60 61// CHECK: define [[FNATTRS]] float @62// CHECK: %hlsl.frac = call reassoc nnan ninf nsz arcp afn float @llvm.[[TARGET]].frac.f32(63// CHECK: ret float %hlsl.frac64float test_frac_int64_t(int64_t p0) { return frac(p0); }65// CHECK: define [[FNATTRS]] <2 x float> @66// CHECK: %hlsl.frac = call reassoc nnan ninf nsz arcp afn <2 x float> @llvm.[[TARGET]].frac.v2f3267// CHECK: ret <2 x float> %hlsl.frac68float2 test_frac_int64_t2(int64_t2 p0) { return frac(p0); }69// CHECK: define [[FNATTRS]] <3 x float> @70// CHECK: %hlsl.frac = call reassoc nnan ninf nsz arcp afn <3 x float> @llvm.[[TARGET]].frac.v3f3271// CHECK: ret <3 x float> %hlsl.frac72float3 test_frac_int64_t3(int64_t3 p0) { return frac(p0); }73// CHECK: define [[FNATTRS]] <4 x float> @74// CHECK: %hlsl.frac = call reassoc nnan ninf nsz arcp afn <4 x float> @llvm.[[TARGET]].frac.v4f3275// CHECK: ret <4 x float> %hlsl.frac76float4 test_frac_int64_t4(int64_t4 p0) { return frac(p0); }77 78// CHECK: define [[FNATTRS]] float @79// CHECK: %hlsl.frac = call reassoc nnan ninf nsz arcp afn float @llvm.[[TARGET]].frac.f32(80// CHECK: ret float %hlsl.frac81float test_frac_uint64_t(uint64_t p0) { return frac(p0); }82// CHECK: define [[FNATTRS]] <2 x float> @83// CHECK: %hlsl.frac = call reassoc nnan ninf nsz arcp afn <2 x float> @llvm.[[TARGET]].frac.v2f3284// CHECK: ret <2 x float> %hlsl.frac85float2 test_frac_uint64_t2(uint64_t2 p0) { return frac(p0); }86// CHECK: define [[FNATTRS]] <3 x float> @87// CHECK: %hlsl.frac = call reassoc nnan ninf nsz arcp afn <3 x float> @llvm.[[TARGET]].frac.v3f3288// CHECK: ret <3 x float> %hlsl.frac89float3 test_frac_uint64_t3(uint64_t3 p0) { return frac(p0); }90// CHECK: define [[FNATTRS]] <4 x float> @91// CHECK: %hlsl.frac = call reassoc nnan ninf nsz arcp afn <4 x float> @llvm.[[TARGET]].frac.v4f3292// CHECK: ret <4 x float> %hlsl.frac93float4 test_frac_uint64_t4(uint64_t4 p0) { return frac(p0); }94