@@ -364,7 +364,6 @@ def TLFloat : TypeList<[Float, Double, Half]>;
364364// FIXME: handle properly char (signed or unsigned depending on host)
365365def TLSignedInts : TypeList<[Char, Short, Int, Long]>;
366366def 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>;
388387def AGenTypeNNoScalar : GenericType<"AGenTypeNNoScalar", TLAll, VecNoScalar>;
389388def AGenTypeNWithBool
390389 : GenericType<"AGenTypeNWithBool", TLAllWithBool, VecAndScalar>;
390+ // Bool
391391def BoolGenTypeN : GenericType<"BoolGenTypeN", TypeList<[Bool]>, VecAndScalar>;
392392// All integer
393393def 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+
10091013foreach name = ["GroupNonUniformBallot"] in {
10101014 def : SPVBuiltin<name, [UInt4, Int, Bool], Attr.Convergent>;
10111015}
@@ -1015,9 +1019,7 @@ foreach name = ["GroupNonUniformInverseBallot"] in {
10151019}
10161020
10171021foreach 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
10231025foreach name = ["GroupNonUniformBallotBitCount", "GroupNonUniformBallotFindLSB",
@@ -1027,60 +1029,46 @@ foreach name = ["GroupNonUniformBallotBitCount", "GroupNonUniformBallotFindLSB",
10271029
10281030foreach 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
10361036foreach 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
10441042foreach 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
10521048foreach 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
10601054foreach 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
10691061foreach 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
10781068foreach 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}
0 commit comments