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

Reply via email to