Skip to content

Commit 4155e54

Browse files
committed
remove ULong variant for Delta/ClusterSize/Index parameters, only keep ULong for Id type in GroupNonUniformBroadcast
1 parent ebf9322 commit 4155e54

File tree

2 files changed

+37
-49
lines changed

2 files changed

+37
-49
lines changed

clang/lib/Sema/SPIRVBuiltins.td

Lines changed: 24 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,6 @@ def TLFloat : TypeList<[Float, Double, Half]>;
364364
// FIXME: handle properly char (signed or unsigned depending on host)
365365
def TLSignedInts : TypeList<[Char, Short, Int, Long]>;
366366
def TLUnsignedInts : TypeList<[UChar, UShort, UInt, ULong]>;
367-
def TLUnsignedIntLong : TypeList<[UInt, ULong]>;
368367

369368
// Signed to Unsigned conversion
370369
// FIXME: handle properly char (signed or unsigned depending on host)
@@ -388,6 +387,7 @@ def AGenTypeN : GenericType<"AGenTypeN", TLAll, VecAndScalar>;
388387
def AGenTypeNNoScalar : GenericType<"AGenTypeNNoScalar", TLAll, VecNoScalar>;
389388
def AGenTypeNWithBool
390389
: GenericType<"AGenTypeNWithBool", TLAllWithBool, VecAndScalar>;
390+
// Bool
391391
def BoolGenTypeN : GenericType<"BoolGenTypeN", TypeList<[Bool]>, VecAndScalar>;
392392
// All integer
393393
def AIGenType1 : GenericType<"AIGenType1", TLAllInts, Vec1>;
@@ -998,14 +998,18 @@ foreach name = ["GroupNonUniformAllEqual"] in {
998998
def : SPVBuiltin<name, [Bool, Int, AGenTypeNWithBool], Attr.Convergent>;
999999
}
10001000

1001-
foreach name = ["GroupNonUniformBroadcast",
1002-
"GroupNonUniformBroadcastFirst"] in {
1003-
foreach IDType = TLUnsignedIntLong.List in {
1001+
foreach name = ["GroupNonUniformBroadcast"] in {
1002+
foreach IDType = [UInt, ULong] in {
10041003
def : SPVBuiltin<name, [AGenTypeNWithBool, Int, AGenTypeNWithBool, IDType],
10051004
Attr.Convergent>;
10061005
}
10071006
}
10081007

1008+
foreach name = ["GroupNonUniformBroadcastFirst"] in {
1009+
def : SPVBuiltin<name, [AGenTypeNWithBool, Int, AGenTypeNWithBool],
1010+
Attr.Convergent>;
1011+
}
1012+
10091013
foreach name = ["GroupNonUniformBallot"] in {
10101014
def : SPVBuiltin<name, [UInt4, Int, Bool], Attr.Convergent>;
10111015
}
@@ -1015,9 +1019,7 @@ foreach name = ["GroupNonUniformInverseBallot"] in {
10151019
}
10161020

10171021
foreach name = ["GroupNonUniformBallotBitExtract"] in {
1018-
foreach IDType = TLUnsignedIntLong.List in {
1019-
def : SPVBuiltin<name, [Bool, Int, UInt4, IDType], Attr.Convergent>;
1020-
}
1022+
def : SPVBuiltin<name, [Bool, Int, UInt4, UInt], Attr.Convergent>;
10211023
}
10221024

10231025
foreach name = ["GroupNonUniformBallotBitCount", "GroupNonUniformBallotFindLSB",
@@ -1027,60 +1029,46 @@ foreach name = ["GroupNonUniformBallotBitCount", "GroupNonUniformBallotFindLSB",
10271029

10281030
foreach name = ["GroupNonUniformShuffle", "GroupNonUniformShuffleXor",
10291031
"GroupNonUniformShuffleUp", "GroupNonUniformShuffleDown"] in {
1030-
foreach IDType = TLUnsignedIntLong.List in {
1031-
def : SPVBuiltin<name, [AGenTypeNWithBool, Int, AGenTypeNWithBool, IDType],
1032-
Attr.Convergent>;
1033-
}
1032+
def : SPVBuiltin<name, [AGenTypeNWithBool, Int, AGenTypeNWithBool, UInt],
1033+
Attr.Convergent>;
10341034
}
10351035

10361036
foreach name = ["GroupNonUniformIAdd", "GroupNonUniformIMul"] in {
10371037
def : SPVBuiltin<name, [AIGenTypeN, Int, Int, AIGenTypeN], Attr.Convergent>;
1038-
foreach IDType = TLUnsignedIntLong.List in {
1039-
def : SPVBuiltin<name, [AIGenTypeN, Int, Int, AIGenTypeN, IDType],
1040-
Attr.Convergent>;
1041-
}
1038+
def : SPVBuiltin<name, [AIGenTypeN, Int, Int, AIGenTypeN, UInt],
1039+
Attr.Convergent>;
10421040
}
10431041

10441042
foreach name = ["GroupNonUniformSMin", "GroupNonUniformSMax"] in {
1045-
def : SPVBuiltin<name, [ASIGenTypeN, Int, Int, ASIGenTypeN], Attr.Convergent>;
1046-
foreach IDType = TLUnsignedIntLong.List in {
1047-
def : SPVBuiltin<name, [ASIGenTypeN, Int, Int, ASIGenTypeN, IDType],
1048-
Attr.Convergent>;
1049-
}
1043+
def : SPVBuiltin<name, [SGenTypeN, Int, Int, SGenTypeN], Attr.Convergent>;
1044+
def : SPVBuiltin<name, [SGenTypeN, Int, Int, SGenTypeN, UInt],
1045+
Attr.Convergent>;
10501046
}
10511047

10521048
foreach name = ["GroupNonUniformUMin", "GroupNonUniformUMax"] in {
10531049
def : SPVBuiltin<name, [UGenTypeN, Int, Int, UGenTypeN], Attr.Convergent>;
1054-
foreach IDType = TLUnsignedIntLong.List in {
1055-
def : SPVBuiltin<name, [UGenTypeN, Int, Int, UGenTypeN, IDType],
1056-
Attr.Convergent>;
1057-
}
1050+
def : SPVBuiltin<name, [UGenTypeN, Int, Int, UGenTypeN, UInt],
1051+
Attr.Convergent>;
10581052
}
10591053

10601054
foreach name = ["GroupNonUniformFAdd", "GroupNonUniformFMul",
10611055
"GroupNonUniformFMin", "GroupNonUniformFMax"] in {
10621056
def : SPVBuiltin<name, [FGenTypeN, Int, Int, FGenTypeN], Attr.Convergent>;
1063-
foreach IDType = TLUnsignedIntLong.List in {
1064-
def : SPVBuiltin<name, [FGenTypeN, Int, Int, FGenTypeN, IDType],
1065-
Attr.Convergent>;
1066-
}
1057+
def : SPVBuiltin<name, [FGenTypeN, Int, Int, FGenTypeN, UInt],
1058+
Attr.Convergent>;
10671059
}
10681060

10691061
foreach name = ["GroupNonUniformBitwiseAnd", "GroupNonUniformBitwiseOr",
10701062
"GroupNonUniformBitwiseXor"] in {
10711063
def : SPVBuiltin<name, [AIGenTypeN, Int, Int, AIGenTypeN], Attr.Convergent>;
1072-
foreach IDType = TLUnsignedIntLong.List in {
1073-
def : SPVBuiltin<name, [AIGenTypeN, Int, Int, AIGenTypeN, IDType],
1074-
Attr.Convergent>;
1075-
}
1064+
def : SPVBuiltin<name, [AIGenTypeN, Int, Int, AIGenTypeN, UInt],
1065+
Attr.Convergent>;
10761066
}
10771067

10781068
foreach name = ["GroupNonUniformLogicalAnd", "GroupNonUniformLogicalOr",
10791069
"GroupNonUniformLogicalXor"] in {
10801070
def : SPVBuiltin<name, [BoolGenTypeN, Int, Int, BoolGenTypeN],
10811071
Attr.Convergent>;
1082-
foreach IDType = TLUnsignedIntLong.List in {
1083-
def : SPVBuiltin<name, [BoolGenTypeN, Int, Int, BoolGenTypeN, IDType],
1084-
Attr.Convergent>;
1085-
}
1072+
def : SPVBuiltin<name, [BoolGenTypeN, Int, Int, BoolGenTypeN, UInt],
1073+
Attr.Convergent>;
10861074
}

clang/test/CodeGenSPIRV/spirv-builtin-lookup-group-non-uniform.cpp

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ template <class T> T group_broad_cast(T v, unsigned int id) {
1818
return __spirv_GroupNonUniformBroadcast(2, v, id);
1919
}
2020

21-
template <class T> T group_broad_cast_first(T v, unsigned int id) {
22-
return __spirv_GroupNonUniformBroadcastFirst(2, v, id);
21+
template <class T> T group_broad_cast_first(T v) {
22+
return __spirv_GroupNonUniformBroadcastFirst(2, v);
2323
}
2424

2525
typedef unsigned int uint4 __attribute__((ext_vector_type(4)));
@@ -147,7 +147,7 @@ template <class T> void test_with_bool() {
147147
unsigned int id = 0;
148148
group_all_equal<T>(v);
149149
group_broad_cast<T>(v, id);
150-
group_broad_cast_first<T>(v, id);
150+
group_broad_cast_first<T>(v);
151151
group_shuffle(v, id);
152152
group_shuffle_xor(v, id);
153153
group_shuffle_up(v, id);
@@ -227,70 +227,70 @@ void test() {
227227
// CHECK: call noundef i32 @_Z36__spirv_GroupNonUniformBallotFindMSBiiDv4_j
228228
// CHECK: call noundef zeroext i1 @_Z31__spirv_GroupNonUniformAllEqualib
229229
// CHECK: call noundef zeroext i1 @_Z32__spirv_GroupNonUniformBroadcastibj
230-
// CHECK: call noundef zeroext i1 @_Z37__spirv_GroupNonUniformBroadcastFirstibj
230+
// CHECK: call noundef zeroext i1 @_Z37__spirv_GroupNonUniformBroadcastFirstib
231231
// CHECK: call noundef zeroext i1 @_Z30__spirv_GroupNonUniformShuffleibj
232232
// CHECK: call noundef zeroext i1 @_Z33__spirv_GroupNonUniformShuffleXoribj
233233
// CHECK: call noundef zeroext i1 @_Z32__spirv_GroupNonUniformShuffleUpibj
234234
// CHECK: call noundef zeroext i1 @_Z34__spirv_GroupNonUniformShuffleDownibj
235235
// CHECK: call noundef zeroext i1 @_Z31__spirv_GroupNonUniformAllEqualii
236236
// CHECK: call noundef i32 @_Z32__spirv_GroupNonUniformBroadcastiij
237-
// CHECK: call noundef i32 @_Z37__spirv_GroupNonUniformBroadcastFirstiij
237+
// CHECK: call noundef i32 @_Z37__spirv_GroupNonUniformBroadcastFirstii
238238
// CHECK: call noundef i32 @_Z30__spirv_GroupNonUniformShuffleiij
239239
// CHECK: call noundef i32 @_Z33__spirv_GroupNonUniformShuffleXoriij
240240
// CHECK: call noundef i32 @_Z32__spirv_GroupNonUniformShuffleUpiij
241241
// CHECK: call noundef i32 @_Z34__spirv_GroupNonUniformShuffleDowniij
242242
// CHECK: call noundef zeroext i1 @_Z31__spirv_GroupNonUniformAllEqualih
243243
// CHECK: call noundef zeroext i8 @_Z32__spirv_GroupNonUniformBroadcastihj
244-
// CHECK: call noundef zeroext i8 @_Z37__spirv_GroupNonUniformBroadcastFirstihj
244+
// CHECK: call noundef zeroext i8 @_Z37__spirv_GroupNonUniformBroadcastFirstih
245245
// CHECK: call noundef zeroext i8 @_Z30__spirv_GroupNonUniformShuffleihj
246246
// CHECK: call noundef zeroext i8 @_Z33__spirv_GroupNonUniformShuffleXorihj
247247
// CHECK: call noundef zeroext i8 @_Z32__spirv_GroupNonUniformShuffleUpihj
248248
// CHECK: call noundef zeroext i8 @_Z34__spirv_GroupNonUniformShuffleDownihj
249249
// CHECK: call noundef zeroext i1 @_Z31__spirv_GroupNonUniformAllEqualis
250250
// CHECK: call noundef signext i16 @_Z32__spirv_GroupNonUniformBroadcastisj
251-
// CHECK: call noundef signext i16 @_Z37__spirv_GroupNonUniformBroadcastFirstisj
251+
// CHECK: call noundef signext i16 @_Z37__spirv_GroupNonUniformBroadcastFirstis
252252
// CHECK: call noundef signext i16 @_Z30__spirv_GroupNonUniformShuffleisj
253253
// CHECK: call noundef signext i16 @_Z33__spirv_GroupNonUniformShuffleXorisj
254254
// CHECK: call noundef signext i16 @_Z32__spirv_GroupNonUniformShuffleUpisj
255255
// CHECK: call noundef signext i16 @_Z34__spirv_GroupNonUniformShuffleDownisj
256256
// CHECK: call noundef zeroext i1 @_Z31__spirv_GroupNonUniformAllEqualit
257257
// CHECK: call noundef zeroext i16 @_Z32__spirv_GroupNonUniformBroadcastitj
258-
// CHECK: call noundef zeroext i16 @_Z37__spirv_GroupNonUniformBroadcastFirstitj
258+
// CHECK: call noundef zeroext i16 @_Z37__spirv_GroupNonUniformBroadcastFirstit
259259
// CHECK: call noundef zeroext i16 @_Z30__spirv_GroupNonUniformShuffleitj
260260
// CHECK: call noundef zeroext i16 @_Z33__spirv_GroupNonUniformShuffleXoritj
261261
// CHECK: call noundef zeroext i16 @_Z32__spirv_GroupNonUniformShuffleUpitj
262262
// CHECK: call noundef zeroext i16 @_Z34__spirv_GroupNonUniformShuffleDownitj
263263
// CHECK: call noundef zeroext i1 @_Z31__spirv_GroupNonUniformAllEqualii
264264
// CHECK: call noundef i32 @_Z32__spirv_GroupNonUniformBroadcastiij
265-
// CHECK: call noundef i32 @_Z37__spirv_GroupNonUniformBroadcastFirstiij
265+
// CHECK: call noundef i32 @_Z37__spirv_GroupNonUniformBroadcastFirstii
266266
// CHECK: call noundef i32 @_Z30__spirv_GroupNonUniformShuffleiij
267267
// CHECK: call noundef i32 @_Z33__spirv_GroupNonUniformShuffleXoriij
268268
// CHECK: call noundef i32 @_Z32__spirv_GroupNonUniformShuffleUpiij
269269
// CHECK: call noundef i32 @_Z34__spirv_GroupNonUniformShuffleDowniij
270270
// CHECK: call noundef zeroext i1 @_Z31__spirv_GroupNonUniformAllEqualij
271271
// CHECK: call noundef i32 @_Z32__spirv_GroupNonUniformBroadcastijj
272-
// CHECK: call noundef i32 @_Z37__spirv_GroupNonUniformBroadcastFirstijj
272+
// CHECK: call noundef i32 @_Z37__spirv_GroupNonUniformBroadcastFirstij
273273
// CHECK: call noundef i32 @_Z30__spirv_GroupNonUniformShuffleijj
274274
// CHECK: call noundef i32 @_Z33__spirv_GroupNonUniformShuffleXorijj
275275
// CHECK: call noundef i32 @_Z32__spirv_GroupNonUniformShuffleUpijj
276276
// CHECK: call noundef i32 @_Z34__spirv_GroupNonUniformShuffleDownijj
277277
// CHECK: call noundef zeroext i1 @_Z31__spirv_GroupNonUniformAllEqualiDF16_
278278
// CHECK: call noundef half @_Z32__spirv_GroupNonUniformBroadcastiDF16_j
279-
// CHECK: call noundef half @_Z37__spirv_GroupNonUniformBroadcastFirstiDF16_j
279+
// CHECK: call noundef half @_Z37__spirv_GroupNonUniformBroadcastFirstiDF16_
280280
// CHECK: call noundef half @_Z30__spirv_GroupNonUniformShuffleiDF16_j
281281
// CHECK: call noundef half @_Z33__spirv_GroupNonUniformShuffleXoriDF16_j
282282
// CHECK: call noundef half @_Z32__spirv_GroupNonUniformShuffleUpiDF16_j
283283
// CHECK: call noundef half @_Z34__spirv_GroupNonUniformShuffleDowniDF16_j
284284
// CHECK: call noundef zeroext i1 @_Z31__spirv_GroupNonUniformAllEqualif
285285
// CHECK: call noundef float @_Z32__spirv_GroupNonUniformBroadcastifj
286-
// CHECK: call noundef float @_Z37__spirv_GroupNonUniformBroadcastFirstifj
286+
// CHECK: call noundef float @_Z37__spirv_GroupNonUniformBroadcastFirstif
287287
// CHECK: call noundef float @_Z30__spirv_GroupNonUniformShuffleifj
288288
// CHECK: call noundef float @_Z33__spirv_GroupNonUniformShuffleXorifj
289289
// CHECK: call noundef float @_Z32__spirv_GroupNonUniformShuffleUpifj
290290
// CHECK: call noundef float @_Z34__spirv_GroupNonUniformShuffleDownifj
291291
// CHECK: call noundef zeroext i1 @_Z31__spirv_GroupNonUniformAllEqualid
292292
// CHECK: call noundef double @_Z32__spirv_GroupNonUniformBroadcastidj
293-
// CHECK: call noundef double @_Z37__spirv_GroupNonUniformBroadcastFirstidj
293+
// CHECK: call noundef double @_Z37__spirv_GroupNonUniformBroadcastFirstid
294294
// CHECK: call noundef double @_Z30__spirv_GroupNonUniformShuffleidj
295295
// CHECK: call noundef double @_Z33__spirv_GroupNonUniformShuffleXoridj
296296
// CHECK: call noundef double @_Z32__spirv_GroupNonUniformShuffleUpidj

0 commit comments

Comments
 (0)