llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang Author: Farzon Lotfi (farzonl) <details> <summary>Changes</summary> resolves #<!-- -->216103 This change turns on VaryingLongVector for all HLSL intrinsics that map to an elementwise builtin. assisted by GPT 5.6-Sol via Copilot --- Patch is 40.37 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/216905.diff 43 Files Affected: - (modified) clang/include/clang/Basic/HLSLIntrinsics.td (+42) - (modified) clang/test/CodeGenHLSL/builtins/acos.hlsl (+6) - (modified) clang/test/CodeGenHLSL/builtins/asin.hlsl (+6) - (modified) clang/test/CodeGenHLSL/builtins/atan.hlsl (+6) - (modified) clang/test/CodeGenHLSL/builtins/atan2.hlsl (+7) - (modified) clang/test/CodeGenHLSL/builtins/ceil.hlsl (+4) - (modified) clang/test/CodeGenHLSL/builtins/clamp.hlsl (+6) - (modified) clang/test/CodeGenHLSL/builtins/clip.hlsl (+18) - (modified) clang/test/CodeGenHLSL/builtins/cos.hlsl (+4) - (modified) clang/test/CodeGenHLSL/builtins/cosh.hlsl (+6) - (modified) clang/test/CodeGenHLSL/builtins/countbits.hlsl (+6) - (modified) clang/test/CodeGenHLSL/builtins/ddx-coarse.hlsl (+7) - (modified) clang/test/CodeGenHLSL/builtins/ddx-fine.hlsl (+7) - (modified) clang/test/CodeGenHLSL/builtins/ddy-coarse.hlsl (+7) - (modified) clang/test/CodeGenHLSL/builtins/ddy-fine.hlsl (+7) - (modified) clang/test/CodeGenHLSL/builtins/exp.hlsl (+4) - (modified) clang/test/CodeGenHLSL/builtins/exp2.hlsl (+4) - (modified) clang/test/CodeGenHLSL/builtins/f16tof32.hlsl (+10) - (modified) clang/test/CodeGenHLSL/builtins/f32tof16.hlsl (+10) - (modified) clang/test/CodeGenHLSL/builtins/firstbitlow.hlsl (+6) - (modified) clang/test/CodeGenHLSL/builtins/floor.hlsl (+4) - (modified) clang/test/CodeGenHLSL/builtins/fma.hlsl (+8) - (modified) clang/test/CodeGenHLSL/builtins/frac.hlsl (+5) - (modified) clang/test/CodeGenHLSL/builtins/isinf.hlsl (+5) - (modified) clang/test/CodeGenHLSL/builtins/isnan.hlsl (+5) - (modified) clang/test/CodeGenHLSL/builtins/log.hlsl (+4) - (modified) clang/test/CodeGenHLSL/builtins/log10.hlsl (+4) - (modified) clang/test/CodeGenHLSL/builtins/log2.hlsl (+4) - (modified) clang/test/CodeGenHLSL/builtins/max.hlsl (+6) - (modified) clang/test/CodeGenHLSL/builtins/min.hlsl (+6) - (modified) clang/test/CodeGenHLSL/builtins/pow.hlsl (+7) - (modified) clang/test/CodeGenHLSL/builtins/rcp.hlsl (+6) - (modified) clang/test/CodeGenHLSL/builtins/reversebits.hlsl (+6) - (modified) clang/test/CodeGenHLSL/builtins/round.hlsl (+4) - (modified) clang/test/CodeGenHLSL/builtins/rsqrt.hlsl (+5) - (modified) clang/test/CodeGenHLSL/builtins/saturate.hlsl (+6) - (modified) clang/test/CodeGenHLSL/builtins/sign.hlsl (+5) - (modified) clang/test/CodeGenHLSL/builtins/sin.hlsl (+4) - (modified) clang/test/CodeGenHLSL/builtins/sinh.hlsl (+6) - (modified) clang/test/CodeGenHLSL/builtins/sqrt.hlsl (+4) - (modified) clang/test/CodeGenHLSL/builtins/tan.hlsl (+6) - (modified) clang/test/CodeGenHLSL/builtins/tanh.hlsl (+6) - (modified) clang/test/CodeGenHLSL/builtins/trunc.hlsl (+4) ``````````diff diff --git a/clang/include/clang/Basic/HLSLIntrinsics.td b/clang/include/clang/Basic/HLSLIntrinsics.td index c9e14f73ebb56..3f3737e64b256 100644 --- a/clang/include/clang/Basic/HLSLIntrinsics.td +++ b/clang/include/clang/Basic/HLSLIntrinsics.td @@ -354,6 +354,7 @@ def hlsl_acos : HLSLOneArgBuiltin<"acos", "__builtin_elementwise_acos"> { \param Val The input value. }]; let VaryingTypes = [HalfTy, FloatTy]; + let VaryingLongVector = 1; let VaryingMatDims = []; } @@ -437,6 +438,7 @@ def hlsl_asin : HLSLOneArgBuiltin<"asin", "__builtin_elementwise_asin"> { \param Val The input value. }]; let VaryingTypes = [HalfTy, FloatTy]; + let VaryingLongVector = 1; let VaryingMatDims = []; } @@ -448,6 +450,7 @@ def hlsl_atan : HLSLOneArgBuiltin<"atan", "__builtin_elementwise_atan"> { \param Val The input value. }]; let VaryingTypes = [HalfTy, FloatTy]; + let VaryingLongVector = 1; let VaryingMatDims = []; } @@ -462,6 +465,7 @@ determine the correct quadrant. \param x The x-coordinate. }]; let VaryingTypes = [HalfTy, FloatTy]; + let VaryingLongVector = 1; } // Returns the smallest integer value that is greater than or equal to the @@ -474,6 +478,7 @@ the input value, \a Val. \param Val The input value. }]; let VaryingTypes = [HalfTy, FloatTy]; + let VaryingLongVector = 1; let VaryingMatDims = []; } @@ -506,6 +511,7 @@ For values of -INF or INF, clamp will behave as expected. However for values of NaN, the results are undefined. }]; let VaryingTypes = AllNumericTypes; + let VaryingLongVector = 1; let VaryingMatDims = []; } @@ -518,6 +524,7 @@ def hlsl_clip : HLSLOneArgBuiltin<"clip", "__builtin_hlsl_elementwise_clip"> { }]; let ReturnType = VoidTy; let VaryingTypes = [HalfTy, FloatTy]; + let VaryingLongVector = 1; let VaryingMatDims = []; } @@ -529,6 +536,7 @@ def hlsl_cos : HLSLOneArgBuiltin<"cos", "__builtin_elementwise_cos"> { \param Val The input value. }]; let VaryingTypes = [HalfTy, FloatTy]; + let VaryingLongVector = 1; let VaryingMatDims = []; } @@ -540,6 +548,7 @@ def hlsl_cosh : HLSLOneArgBuiltin<"cosh", "__builtin_elementwise_cosh"> { \param Val The input value. }]; let VaryingTypes = [HalfTy, FloatTy]; + let VaryingLongVector = 1; let VaryingMatDims = []; } @@ -557,6 +566,7 @@ def hlsl_countbits : HLSLBuiltin<"countbits"> { let VaryingTypes = AllIntTypes; let VaryingScalar = 1; let VaryingVecSizes = [2, 3, 4]; + let VaryingLongVector = 1; } // Converts a floating-point, 4D vector set by a D3DCOLOR to a UBYTE4. @@ -612,6 +622,7 @@ The return value is a floating point scalar or vector containing the low prevision partial derivative of the input value. }]; let VaryingTypes = [HalfTy, FloatTy]; + let VaryingLongVector = 1; let VaryingMatDims = []; } @@ -629,6 +640,7 @@ The return value is a floating point scalar or vector containing the high prevision partial derivative of the input value. }]; let VaryingTypes = [HalfTy, FloatTy]; + let VaryingLongVector = 1; let VaryingMatDims = []; } @@ -659,6 +671,7 @@ The return value is a floating point scalar or vector containing the low prevision partial derivative of the input value. }]; let VaryingTypes = [HalfTy, FloatTy]; + let VaryingLongVector = 1; let VaryingMatDims = []; } @@ -676,6 +689,7 @@ The return value is a floating point scalar or vector containing the high prevision partial derivative of the input value. }]; let VaryingTypes = [HalfTy, FloatTy]; + let VaryingLongVector = 1; let VaryingMatDims = []; } @@ -829,6 +843,7 @@ def hlsl_exp : HLSLOneArgBuiltin<"exp", "__builtin_elementwise_exp"> { The return value is the base-e exponential of the \a x parameter. }]; let VaryingTypes = [HalfTy, FloatTy]; + let VaryingLongVector = 1; let VaryingMatDims = []; } @@ -842,6 +857,7 @@ def hlsl_exp2 : HLSLOneArgBuiltin<"exp2", "__builtin_elementwise_exp2"> { The base 2 exponential of the \a x parameter. }]; let VaryingTypes = [HalfTy, FloatTy]; + let VaryingLongVector = 1; let VaryingMatDims = []; } @@ -860,6 +876,7 @@ parameter. }]; let ReturnType = VaryingShape<FloatTy>; let VaryingTypes = [UIntTy]; + let VaryingLongVector = 1; let VaryingMatDims = []; } @@ -878,6 +895,7 @@ The return value is a uint containing the converted half value in the low }]; let ReturnType = VaryingShape<UIntTy>; let VaryingTypes = [FloatTy]; + let VaryingLongVector = 1; let VaryingMatDims = []; } @@ -910,6 +928,7 @@ def hlsl_fma : HLSLThreeArgBuiltin<"fma", "__builtin_elementwise_fma"> { \param c The third value in the fused multiply-addition. }]; let VaryingTypes = [DoubleTy]; + let VaryingLongVector = 1; } // Returns the location of the first set bit starting from the lowest order bit @@ -924,6 +943,7 @@ order bit and working upward, per component. }]; let ReturnType = VaryingShape<UIntTy>; let VaryingTypes = AllIntTypes; + let VaryingLongVector = 1; let VaryingMatDims = []; } @@ -937,6 +957,7 @@ value, \a Val. \param Val The input value. }]; let VaryingTypes = [HalfTy, FloatTy]; + let VaryingLongVector = 1; let VaryingMatDims = []; } @@ -981,6 +1002,7 @@ def hlsl_frac : HLSLOneArgBuiltin<"frac", "__builtin_hlsl_elementwise_frac"> { If \a the return value is greater than or equal to 0 and less than 1. }]; let VaryingTypes = [HalfTy, FloatTy]; + let VaryingLongVector = 1; let VaryingMatDims = []; } @@ -1088,6 +1110,7 @@ to True if the x parameter is +INF or -INF. Otherwise, False. }]; let ReturnType = VaryingShape<BoolTy>; let VaryingTypes = [HalfTy, FloatTy]; + let VaryingLongVector = 1; } // Determines if the specified value x is Not a Number. @@ -1102,6 +1125,7 @@ to True if the x parameter is NaN or QNaN. Otherwise, False. }]; let ReturnType = VaryingShape<BoolTy>; let VaryingTypes = [HalfTy, FloatTy]; + let VaryingLongVector = 1; } // Returns the result of multiplying the specified value by two raised @@ -1204,6 +1228,7 @@ If \a Val is negative, this result is undefined. If \a Val is 0, this function returns negative infinity. }]; let VaryingTypes = [HalfTy, FloatTy]; + let VaryingLongVector = 1; let VaryingMatDims = []; } @@ -1218,6 +1243,7 @@ If \a Val is negative, this result is undefined. If \a Val is 0, this function returns negative infinity. }]; let VaryingTypes = [HalfTy, FloatTy]; + let VaryingLongVector = 1; let VaryingMatDims = []; } @@ -1232,6 +1258,7 @@ If \a Val is negative, this result is undefined. If \a Val is 0, this function returns negative infinity. }]; let VaryingTypes = [HalfTy, FloatTy]; + let VaryingLongVector = 1; let VaryingMatDims = []; } @@ -1257,6 +1284,7 @@ def hlsl_max : HLSLTwoArgBuiltin<"max", "__builtin_elementwise_max"> { \param Y The Y input value. }]; let VaryingTypes = AllNumericTypes; + let VaryingLongVector = 1; let VaryingMatDims = []; } @@ -1269,6 +1297,7 @@ def hlsl_min : HLSLTwoArgBuiltin<"min", "__builtin_elementwise_min"> { \param Y The Y input value. }]; let VaryingTypes = AllNumericTypes; + let VaryingLongVector = 1; let VaryingMatDims = []; } @@ -1321,6 +1350,7 @@ def hlsl_pow : HLSLTwoArgBuiltin<"pow", "__builtin_elementwise_pow"> { \param Pow The specified power. }]; let VaryingTypes = [HalfTy, FloatTy]; + let VaryingLongVector = 1; } // Reads the value from the lane across the X axis of the quad. @@ -1381,6 +1411,7 @@ def hlsl_rcp : HLSLOneArgBuiltin<"rcp", "__builtin_hlsl_elementwise_rcp"> { The return value is the reciprocal of the \a x parameter. }]; let VaryingTypes = AllFloatTypes; + let VaryingLongVector = 1; let VaryingMatDims = []; } @@ -1455,6 +1486,7 @@ def hlsl_reversebits : HLSLOneArgBuiltin<"reversebits", "__builtin_elementwise_b \param Val The input value. }]; let VaryingTypes = AllIntTypes; + let VaryingLongVector = 1; let VaryingMatDims = []; } @@ -1470,6 +1502,7 @@ within a floating-point type. Halfway cases are rounded to the nearest even value. }]; let VaryingTypes = [HalfTy, FloatTy]; + let VaryingLongVector = 1; let VaryingMatDims = []; } @@ -1485,6 +1518,7 @@ ie 1 / sqrt( \a x). This function uses the following formula: 1 / sqrt(x). }]; let VaryingTypes = [HalfTy, FloatTy]; + let VaryingLongVector = 1; let VaryingMatDims = []; } @@ -1497,6 +1531,7 @@ to 1.0f. \param Val The input value. }]; let VaryingTypes = AllFloatTypes; + let VaryingLongVector = 1; let VaryingMatDims = []; } @@ -1511,6 +1546,7 @@ def hlsl_sign : HLSLOneArgBuiltin<"sign", "__builtin_hlsl_elementwise_sign"> { }]; let ReturnType = VaryingShape<IntTy>; let VaryingTypes = AllNumericTypes; + let VaryingLongVector = 1; let VaryingMatDims = []; } @@ -1522,6 +1558,7 @@ def hlsl_sin : HLSLOneArgBuiltin<"sin", "__builtin_elementwise_sin"> { \param Val The input value. }]; let VaryingTypes = [HalfTy, FloatTy]; + let VaryingLongVector = 1; let VaryingMatDims = []; } @@ -1533,6 +1570,7 @@ def hlsl_sinh : HLSLOneArgBuiltin<"sinh", "__builtin_elementwise_sinh"> { \param Val The input value. }]; let VaryingTypes = [HalfTy, FloatTy]; + let VaryingLongVector = 1; let VaryingMatDims = []; } @@ -1563,6 +1601,7 @@ def hlsl_sqrt : HLSLOneArgBuiltin<"sqrt", "__builtin_elementwise_sqrt"> { \param Val The input value. }]; let VaryingTypes = [HalfTy, FloatTy]; + let VaryingLongVector = 1; let VaryingMatDims = []; } @@ -1591,6 +1630,7 @@ def hlsl_tan : HLSLOneArgBuiltin<"tan", "__builtin_elementwise_tan"> { \param Val The input value. }]; let VaryingTypes = [HalfTy, FloatTy]; + let VaryingLongVector = 1; let VaryingMatDims = []; } @@ -1602,6 +1642,7 @@ def hlsl_tanh : HLSLOneArgBuiltin<"tanh", "__builtin_elementwise_tanh"> { \param Val The input value. }]; let VaryingTypes = [HalfTy, FloatTy]; + let VaryingLongVector = 1; let VaryingMatDims = []; } @@ -1613,6 +1654,7 @@ def hlsl_trunc : HLSLOneArgBuiltin<"trunc", "__builtin_elementwise_trunc"> { \param Val The input value. }]; let VaryingTypes = [HalfTy, FloatTy]; + let VaryingLongVector = 1; let VaryingMatDims = []; } diff --git a/clang/test/CodeGenHLSL/builtins/acos.hlsl b/clang/test/CodeGenHLSL/builtins/acos.hlsl index 21bffac3743a3..a494731b77175 100644 --- a/clang/test/CodeGenHLSL/builtins/acos.hlsl +++ b/clang/test/CodeGenHLSL/builtins/acos.hlsl @@ -57,3 +57,9 @@ float3 test_acos_float3 ( float3 p0 ) { float4 test_acos_float4 ( float4 p0 ) { return acos ( p0 ); } + +// CHECK-LABEL: test_acos_float5 +// CHECK: call reassoc nnan ninf nsz arcp afn <5 x float> @llvm.acos.v5f32 +vector<float, 5> test_acos_float5(vector<float, 5> p0) { + return acos(p0); +} diff --git a/clang/test/CodeGenHLSL/builtins/asin.hlsl b/clang/test/CodeGenHLSL/builtins/asin.hlsl index b574bc6ef4d53..45770a37b4fea 100644 --- a/clang/test/CodeGenHLSL/builtins/asin.hlsl +++ b/clang/test/CodeGenHLSL/builtins/asin.hlsl @@ -57,3 +57,9 @@ float3 test_asin_float3 ( float3 p0 ) { float4 test_asin_float4 ( float4 p0 ) { return asin ( p0 ); } + +// CHECK-LABEL: test_asin_float5 +// CHECK: call reassoc nnan ninf nsz arcp afn <5 x float> @llvm.asin.v5f32 +vector<float, 5> test_asin_float5(vector<float, 5> p0) { + return asin(p0); +} diff --git a/clang/test/CodeGenHLSL/builtins/atan.hlsl b/clang/test/CodeGenHLSL/builtins/atan.hlsl index 847a3a35a3db3..48383c71eefc1 100644 --- a/clang/test/CodeGenHLSL/builtins/atan.hlsl +++ b/clang/test/CodeGenHLSL/builtins/atan.hlsl @@ -57,3 +57,9 @@ float3 test_atan_float3 ( float3 p0 ) { float4 test_atan_float4 ( float4 p0 ) { return atan ( p0 ); } + +// CHECK-LABEL: test_atan_float5 +// CHECK: call reassoc nnan ninf nsz arcp afn <5 x float> @llvm.atan.v5f32 +vector<float, 5> test_atan_float5(vector<float, 5> p0) { + return atan(p0); +} diff --git a/clang/test/CodeGenHLSL/builtins/atan2.hlsl b/clang/test/CodeGenHLSL/builtins/atan2.hlsl index 39ac7daf54f8c..c781567697dc2 100644 --- a/clang/test/CodeGenHLSL/builtins/atan2.hlsl +++ b/clang/test/CodeGenHLSL/builtins/atan2.hlsl @@ -57,3 +57,10 @@ float3 test_atan2_float3 (float3 p0, float3 p1) { float4 test_atan2_float4 (float4 p0, float4 p1) { return atan2(p0, p1); } + +// CHECK-LABEL: test_atan2_float5 +// CHECK: call reassoc nnan ninf nsz arcp afn <5 x float> @llvm.atan2.v5f32 +vector<float, 5> test_atan2_float5(vector<float, 5> p0, + vector<float, 5> p1) { + return atan2(p0, p1); +} diff --git a/clang/test/CodeGenHLSL/builtins/ceil.hlsl b/clang/test/CodeGenHLSL/builtins/ceil.hlsl index bda9e35fbc353..7f9ab17b38efa 100644 --- a/clang/test/CodeGenHLSL/builtins/ceil.hlsl +++ b/clang/test/CodeGenHLSL/builtins/ceil.hlsl @@ -40,3 +40,7 @@ float3 test_ceil_float3(float3 p0) { return ceil(p0); } // CHECK-LABEL: define hidden noundef nofpclass(nan inf) <4 x float> @_Z16test_ceil_float4 // CHECK: call reassoc nnan ninf nsz arcp afn <4 x float> @llvm.ceil.v4f32( float4 test_ceil_float4(float4 p0) { return ceil(p0); } + +// CHECK-LABEL: test_ceil_float5 +// CHECK: call reassoc nnan ninf nsz arcp afn <5 x float> @llvm.ceil.v5f32 +vector<float, 5> test_ceil_float5(vector<float, 5> p0) { return ceil(p0); } diff --git a/clang/test/CodeGenHLSL/builtins/clamp.hlsl b/clang/test/CodeGenHLSL/builtins/clamp.hlsl index 95d0168441e99..5d7789a495e14 100644 --- a/clang/test/CodeGenHLSL/builtins/clamp.hlsl +++ b/clang/test/CodeGenHLSL/builtins/clamp.hlsl @@ -56,6 +56,12 @@ int3 test_clamp_int3(int3 p0, int3 p1) { return clamp(p0, p1,p1); } // CHECK: call <4 x i32> @llvm.[[TARGET]].sclamp.v4i32 int4 test_clamp_int4(int4 p0, int4 p1) { return clamp(p0, p1,p1); } +// CHECK: define [[FNATTRS]] <5 x i32> @ +// CHECK: call <5 x i32> @llvm.[[TARGET]].sclamp.v5i32 +vector<int, 5> test_clamp_int5(vector<int, 5> p0, vector<int, 5> p1) { + return clamp(p0, p1, p1); +} + // CHECK: define [[FNATTRS]] i32 @_Z15test_clamp_uint // CHECK: call i32 @llvm.[[TARGET]].uclamp.i32( int test_clamp_uint(uint p0, uint p1) { return clamp(p0, p1,p1); } diff --git a/clang/test/CodeGenHLSL/builtins/clip.hlsl b/clang/test/CodeGenHLSL/builtins/clip.hlsl index c3d30462d7158..dcec6a433c438 100644 --- a/clang/test/CodeGenHLSL/builtins/clip.hlsl +++ b/clang/test/CodeGenHLSL/builtins/clip.hlsl @@ -37,3 +37,21 @@ void test_vector4(float4 Buf) { // SPIRV-NEXT: br label %[[ENDL]] clip(Buf); } + +void test_vector5(vector<float, 5> Buf) { + // CHECK: define hidden void @{{.*}}test_vector5{{.*}}(<5 x float> {{.*}} [[VALP:%.*]]) + // CHECK: [[LOAD:%.*]] = load <5 x float>, ptr [[VALP]].addr + // CHECK-NEXT: [[FCMP:%.*]] = fcmp reassoc nnan ninf nsz arcp afn olt <5 x float> [[LOAD]], zeroinitializer + // CHECK-NEXT: [[ANYC:%.*]] = call i1 @llvm.dx.any.v5i1(<5 x i1> [[FCMP]]) + // CHECK-NEXT: call void @llvm.dx.discard(i1 [[ANYC]]) + // + // SPIRV: define hidden spir_func void @{{.*}}test_vector5{{.*}}(<5 x float> {{.*}} [[VALP:%.*]]) + // SPIRV: [[LOAD:%.*]] = load <5 x float>, ptr [[VALP]].addr + // SPIRV-NEXT: [[FCMP:%.*]] = fcmp reassoc nnan ninf nsz arcp afn olt <5 x float> [[LOAD]], zeroinitializer + // SPIRV-NEXT: [[ANYC:%.*]] = call i1 @llvm.spv.any.v5i1(<5 x i1> [[FCMP]]) + // SPIRV-NEXT: br i1 [[ANYC]], label %[[LTL:.*]], label %[[ENDL:.*]] + // SPIRV: [[LTL]]: ; preds = %entry + // SPIRV-NEXT: call void @llvm.spv.discard() + // SPIRV-NEXT: br label %[[ENDL]] + clip(Buf); +} diff --git a/clang/test/CodeGenHLSL/builtins/cos.hlsl b/clang/test/CodeGenHLSL/builtins/cos.hlsl index 1f8970096a349..4d8568304c007 100644 --- a/clang/test/CodeGenHLSL/builtins/cos.hlsl +++ b/clang/test/CodeGenHLSL/builtins/cos.hlsl @@ -38,3 +38,7 @@ float3 test_cos_float3(float3 p0) { return cos(p0); } // CHECK-LABEL: define hidden noundef nofpclass(nan inf) <4 x float> @_Z15test_cos_float4 // CHECK: call reassoc nnan ninf nsz arcp afn <4 x float> @llvm.cos.v4f32 float4 test_cos_float4(float4 p0) { return cos(p0); } + +// CHECK-LABEL: test_cos_float5 +// CHECK: call reassoc nnan ninf nsz arcp afn <5 x float> @llvm.cos.v5f32 +vector<float, 5> test_cos_float5(vector<float, 5> p0) { return cos(p0); } diff --git a/clang/test/CodeGenHLSL/builtins/cosh.hlsl b/clang/test/CodeGenHLSL/builtins/cosh.hlsl index 4e3092f2c5690..c97df2c1f0269 100644 --- a/clang/test/CodeGenHLSL/builtins/cosh.hlsl +++ b/clang/test/CodeGenHLSL/builtins/cosh.hlsl @@ -57,3 +57,9 @@ float3 test_cosh_float3 ( float3 p0 ) { float4 test_cosh_float4 ( float4 p0 ) { return cosh ( p0 ); } + +// CHECK-LABEL: test_cosh_float5 +// CHECK: call reassoc nnan ninf nsz arcp afn <5 x float> @llvm.cosh.v5f32 +vector<float, 5> test_cosh_float5(vector<float, 5> p0) { + return cosh(p0); +} diff --git a/clang/test/CodeGenHLSL/builtins/countbits.hlsl b/clang/test/CodeGenHLSL/builtins/countbits.hlsl index 87524ae58a0d6..20f1f3f40b6b6 100644 --- a/clang/test/CodeGenHLSL/builtins/countbits.hlsl +++ b/clang/test/CodeGenHLSL/builtins/countbits.hlsl @@ -71,6 +71,12 @@ uint4 test_countbits_uint4(uint4 p0) return countbits(p0); } +// CHECK-LABEL: test_countbits_uint5 +// CHECK: call <5 x i32> @llvm.ctpop.v5i32 +vector<uint, 5> test_countbits_uint5(vector<uint, 5> p0) { + return countbits(p0); +} + // CHECK-LABEL: test_countbits_long // CHECK: [[A:%.*]] = call i64 @llvm.ctpop.i64 // CHECK-NEXT: trunc i64 [[A]] to i32 diff --git a/clang/test/CodeGenHLSL/builtins/ddx-coarse.hlsl b/clang/test/CodeGenHLSL/builtins/ddx-coarse.hlsl index f4b06aa1c334a..1aafacf5fcb49 100644 --- a/clang/test/CodeGenHLSL/builtins/ddx-coarse.hlsl +++ b/clang/test/CodeGenHLSL/builtins/ddx-coarse.hlsl @@ -60,3 +60,10 @@ float3 test_f32_ddx_coarse3(float3 val) { float4 test_f32_ddx_coarse4(float4 val) { return ddx_coarse(val); } + +// CHECK-LABEL: <5 x float> @{{.*}}test_f32_ddx_coarse5 +// CHECK: %hlsl.ddx.coarse = call {{.*}} <5 x float> @llvm.[[TGT]].ddx.coarse.v5f32(<5 x float> %{{.*}}) +// CHECK: ret <5 x float> %hlsl.ddx.coarse +vector<float, 5> test_f32_ddx_coarse5(vector<float, 5> val) { + return ddx_coarse(val); +} diff --git a/clang/test/CodeGenHLSL/builtins/ddx-fine.hlsl b/clang/test/CodeGenHLSL/builtins/ddx-fine.hlsl index 50e82a40966dc..d75d850b87e8e 100644 --- a/clang/test/CodeGenHLSL/builtins/ddx-fine.hlsl +++ b/clang/test/CodeGenHLSL/builtins/ddx-fine.hlsl @@ -60,3 +60,10 @@ float3 test_f32_ddx_fine3(float3 val) { float4 test_f32_ddx_fine4(float4 val) { return ddx_fine(val); } + +// CHECK-LABEL: <5 x float> @{{.*}}test_f32_ddx_fine5 +// CHECK: %hlsl.ddx.fine = call {{.*}} <5 x float> @llvm.[[TGT]].ddx.fine.v5f32(<5 x float> %{{.*}}) +// CHECK: ret <5 x float> %hlsl.ddx.fine +vector<float, 5> test_f32_ddx_fine5(vector<float, 5> val) { + return ddx_fine(val); +} diff --git a/clang/test/CodeGenHLSL/builtins/ddy-coarse.hlsl b/clang/test/CodeGenHLSL/builtins/ddy-coarse.hlsl index 2ca3f7f769c93..747b08d75206a 100644 --- a/clang/test/CodeGenHLSL/builtins/ddy-coarse.hlsl +++ b/clang/test/CodeGenHLSL/builtins/ddy-coarse.hlsl @@ -60,3 +60,10 @@ float3 test_f32_ddy_coarse3(float3 val) { float4 test_f32_ddy_coarse4(float4 val) { return ddy_coarse(val); } + +// CHECK-LABEL: <5 x float> @{{.*}}test_f32_ddy_coarse5 +// CHECK: %hlsl.ddy.coarse = call {{.*}} <5 x float> @llvm.[[TGT]].ddy.coarse.v5f32(<5 x float> %{{.*}}) +// CHECK: ret <5 x float> %hlsl.ddy.coarse +vector<float, 5> test_f32_ddy_coarse5(vector<float, 5> val) { + return ddy_coarse(val); +} diff --git a/clang/test/CodeGenHLSL/builtins/ddy-fine.hlsl b/clang/test/CodeGenHLSL/builtins/ddy-fine.hlsl index 80f817e98b007..5d98a4e0fead0 100644 --- a/clang/test/CodeGenHLSL/builtins/ddy-fine.hlsl +++ b/clang/test/CodeGenHLSL/builtins/ddy-fine.hlsl @@ -60,3 +60,10 @@ float3 test_f32_ddy_fine3(float3 val) { float4 test_f32_ddy_fine4(float4 val) { return ddy_fine(val); } + +// CHECK-LABEL: <5 x float> @{{.*}}test_f32_ddy_fine5 +// CHECK: %hlsl.ddy.fine = call {{.*}} <5 x float> @llvm.[[TGT]].ddy.fine.v5f32(<5 x float> %{{.*}}) +// CHECK: ret <5 x float> %hlsl.ddy.fine +vector<float, 5> test_f32_ddy_fine5(vector<float, 5> val) { + return ddy_fine(val); +} diff --git a/clang/test/CodeGenHLSL/builtins/exp.hlsl b/clang/test/CodeGenHLSL/builtins/exp.hlsl index 56efb03d1f98b..510c27901369a 100644 --- a/clang/test/CodeGenHLSL/builtins/exp.hlsl +++ b/clang/test/CodeGenHLSL/builtins/exp.hlsl @@ -50,3 +50,7 @@ float3 test_exp_float3(float3 p0) { return exp(p0); } // CHECK: [[EXP:%.*]] = call reassoc nnan ninf nsz arcp afn <4 x f... [truncated] `````````` </details> https://github.com/llvm/llvm-project/pull/216905 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
