|
@@ -725,7 +725,7 @@ const char* ScopeString(int mem)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-const int GroupOperationCeiling = 3;
|
|
|
|
|
|
|
+const int GroupOperationCeiling = 4;
|
|
|
|
|
|
|
|
const char* GroupOperationString(int gop)
|
|
const char* GroupOperationString(int gop)
|
|
|
{
|
|
{
|
|
@@ -735,6 +735,7 @@ const char* GroupOperationString(int gop)
|
|
|
case 0: return "Reduce";
|
|
case 0: return "Reduce";
|
|
|
case 1: return "InclusiveScan";
|
|
case 1: return "InclusiveScan";
|
|
|
case 2: return "ExclusiveScan";
|
|
case 2: return "ExclusiveScan";
|
|
|
|
|
+ case 3: return "ClusteredReduce";
|
|
|
|
|
|
|
|
case GroupOperationCeiling:
|
|
case GroupOperationCeiling:
|
|
|
default: return "Bad";
|
|
default: return "Bad";
|
|
@@ -833,6 +834,14 @@ const char* CapabilityString(int info)
|
|
|
case 55: return "StorageImageReadWithoutFormat";
|
|
case 55: return "StorageImageReadWithoutFormat";
|
|
|
case 56: return "StorageImageWriteWithoutFormat";
|
|
case 56: return "StorageImageWriteWithoutFormat";
|
|
|
case 57: return "MultiViewport";
|
|
case 57: return "MultiViewport";
|
|
|
|
|
+ case 61: return "GroupNonUniform";
|
|
|
|
|
+ case 62: return "GroupNonUniformVote";
|
|
|
|
|
+ case 63: return "GroupNonUniformArithmetic";
|
|
|
|
|
+ case 64: return "GroupNonUniformBallot";
|
|
|
|
|
+ case 65: return "GroupNonUniformShuffle";
|
|
|
|
|
+ case 66: return "GroupNonUniformShuffleRelative";
|
|
|
|
|
+ case 67: return "GroupNonUniformClustered";
|
|
|
|
|
+ case 68: return "GroupNonUniformQuad";
|
|
|
|
|
|
|
|
case 4423: return "SubgroupBallotKHR";
|
|
case 4423: return "SubgroupBallotKHR";
|
|
|
case 4427: return "DrawParameters";
|
|
case 4427: return "DrawParameters";
|
|
@@ -1200,6 +1209,41 @@ const char* OpcodeString(int op)
|
|
|
|
|
|
|
|
case OpModuleProcessed: return "OpModuleProcessed";
|
|
case OpModuleProcessed: return "OpModuleProcessed";
|
|
|
|
|
|
|
|
|
|
+ case 333: return "OpGroupNonUniformElect";
|
|
|
|
|
+ case 334: return "OpGroupNonUniformAll";
|
|
|
|
|
+ case 335: return "OpGroupNonUniformAny";
|
|
|
|
|
+ case 336: return "OpGroupNonUniformAllEqual";
|
|
|
|
|
+ case 337: return "OpGroupNonUniformBroadcast";
|
|
|
|
|
+ case 338: return "OpGroupNonUniformBroadcastFirst";
|
|
|
|
|
+ case 339: return "OpGroupNonUniformBallot";
|
|
|
|
|
+ case 340: return "OpGroupNonUniformInverseBallot";
|
|
|
|
|
+ case 341: return "OpGroupNonUniformBallotBitExtract";
|
|
|
|
|
+ case 342: return "OpGroupNonUniformBallotBitCount";
|
|
|
|
|
+ case 343: return "OpGroupNonUniformBallotFindLSB";
|
|
|
|
|
+ case 344: return "OpGroupNonUniformBallotFindMSB";
|
|
|
|
|
+ case 345: return "OpGroupNonUniformShuffle";
|
|
|
|
|
+ case 346: return "OpGroupNonUniformShuffleXor";
|
|
|
|
|
+ case 347: return "OpGroupNonUniformShuffleUp";
|
|
|
|
|
+ case 348: return "OpGroupNonUniformShuffleDown";
|
|
|
|
|
+ case 349: return "OpGroupNonUniformIAdd";
|
|
|
|
|
+ case 350: return "OpGroupNonUniformFAdd";
|
|
|
|
|
+ case 351: return "OpGroupNonUniformIMul";
|
|
|
|
|
+ case 352: return "OpGroupNonUniformFMul";
|
|
|
|
|
+ case 353: return "OpGroupNonUniformSMin";
|
|
|
|
|
+ case 354: return "OpGroupNonUniformUMin";
|
|
|
|
|
+ case 355: return "OpGroupNonUniformFMin";
|
|
|
|
|
+ case 356: return "OpGroupNonUniformSMax";
|
|
|
|
|
+ case 357: return "OpGroupNonUniformUMax";
|
|
|
|
|
+ case 358: return "OpGroupNonUniformFMax";
|
|
|
|
|
+ case 359: return "OpGroupNonUniformBitwiseAnd";
|
|
|
|
|
+ case 360: return "OpGroupNonUniformBitwiseOr";
|
|
|
|
|
+ case 361: return "OpGroupNonUniformBitwiseXor";
|
|
|
|
|
+ case 362: return "OpGroupNonUniformLogicalAnd";
|
|
|
|
|
+ case 363: return "OpGroupNonUniformLogicalOr";
|
|
|
|
|
+ case 364: return "OpGroupNonUniformLogicalXor";
|
|
|
|
|
+ case 365: return "OpGroupNonUniformQuadBroadcast";
|
|
|
|
|
+ case 366: return "OpGroupNonUniformQuadSwap";
|
|
|
|
|
+
|
|
|
case 4421: return "OpSubgroupBallotKHR";
|
|
case 4421: return "OpSubgroupBallotKHR";
|
|
|
case 4422: return "OpSubgroupFirstInvocationKHR";
|
|
case 4422: return "OpSubgroupFirstInvocationKHR";
|
|
|
case 4428: return "OpSubgroupAllKHR";
|
|
case 4428: return "OpSubgroupAllKHR";
|
|
@@ -2823,6 +2867,182 @@ void Parameterize()
|
|
|
InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Wait Events'");
|
|
InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Wait Events'");
|
|
|
InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Ret Event'");
|
|
InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Ret Event'");
|
|
|
|
|
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformElect].capabilities.push_back(CapabilityGroupNonUniform);
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformElect].operands.push(OperandScope, "'Execution'");
|
|
|
|
|
+
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformAll].capabilities.push_back(CapabilityGroupNonUniformVote);
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformAll].operands.push(OperandScope, "'Execution'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformAll].operands.push(OperandId, "X");
|
|
|
|
|
+
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformAny].capabilities.push_back(CapabilityGroupNonUniformVote);
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformAny].operands.push(OperandScope, "'Execution'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformAny].operands.push(OperandId, "X");
|
|
|
|
|
+
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformAllEqual].capabilities.push_back(CapabilityGroupNonUniformVote);
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformAllEqual].operands.push(OperandScope, "'Execution'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformAllEqual].operands.push(OperandId, "X");
|
|
|
|
|
+
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformBroadcast].capabilities.push_back(CapabilityGroupNonUniformBallot);
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformBroadcast].operands.push(OperandScope, "'Execution'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformBroadcast].operands.push(OperandId, "X");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformBroadcast].operands.push(OperandId, "ID");
|
|
|
|
|
+
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformBroadcastFirst].capabilities.push_back(CapabilityGroupNonUniformBallot);
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformBroadcastFirst].operands.push(OperandScope, "'Execution'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformBroadcastFirst].operands.push(OperandId, "X");
|
|
|
|
|
+
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformBallot].capabilities.push_back(CapabilityGroupNonUniformBallot);
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformBallot].operands.push(OperandScope, "'Execution'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformBallot].operands.push(OperandId, "X");
|
|
|
|
|
+
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformInverseBallot].capabilities.push_back(CapabilityGroupNonUniformBallot);
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformInverseBallot].operands.push(OperandScope, "'Execution'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformInverseBallot].operands.push(OperandId, "X");
|
|
|
|
|
+
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformBallotBitExtract].capabilities.push_back(CapabilityGroupNonUniformBallot);
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformBallotBitExtract].operands.push(OperandScope, "'Execution'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformBallotBitExtract].operands.push(OperandId, "X");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformBallotBitExtract].operands.push(OperandId, "Bit");
|
|
|
|
|
+
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformBallotBitCount].capabilities.push_back(CapabilityGroupNonUniformBallot);
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformBallotBitCount].operands.push(OperandScope, "'Execution'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformBallotBitCount].operands.push(OperandGroupOperation, "'Operation'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformBallotBitCount].operands.push(OperandId, "X");
|
|
|
|
|
+
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformBallotFindLSB].capabilities.push_back(CapabilityGroupNonUniformBallot);
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformBallotFindLSB].operands.push(OperandScope, "'Execution'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformBallotFindLSB].operands.push(OperandId, "X");
|
|
|
|
|
+
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformBallotFindMSB].capabilities.push_back(CapabilityGroupNonUniformBallot);
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformBallotFindMSB].operands.push(OperandScope, "'Execution'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformBallotFindMSB].operands.push(OperandId, "X");
|
|
|
|
|
+
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformShuffle].capabilities.push_back(CapabilityGroupNonUniformShuffle);
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformShuffle].operands.push(OperandScope, "'Execution'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformShuffle].operands.push(OperandId, "X");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformShuffle].operands.push(OperandId, "'Id'");
|
|
|
|
|
+
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformShuffleXor].capabilities.push_back(CapabilityGroupNonUniformShuffle);
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformShuffleXor].operands.push(OperandScope, "'Execution'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformShuffleXor].operands.push(OperandId, "X");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformShuffleXor].operands.push(OperandId, "Mask");
|
|
|
|
|
+
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformShuffleUp].capabilities.push_back(CapabilityGroupNonUniformShuffleRelative);
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformShuffleUp].operands.push(OperandScope, "'Execution'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformShuffleUp].operands.push(OperandId, "X");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformShuffleUp].operands.push(OperandId, "Offset");
|
|
|
|
|
+
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformShuffleDown].capabilities.push_back(CapabilityGroupNonUniformShuffleRelative);
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformShuffleDown].operands.push(OperandScope, "'Execution'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformShuffleDown].operands.push(OperandId, "X");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformShuffleDown].operands.push(OperandId, "Offset");
|
|
|
|
|
+
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformIAdd].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformIAdd].operands.push(OperandScope, "'Execution'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformIAdd].operands.push(OperandGroupOperation, "'Operation'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformIAdd].operands.push(OperandId, "X");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformIAdd].operands.push(OperandId, "'ClusterSize'", true);
|
|
|
|
|
+
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformFAdd].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformFAdd].operands.push(OperandScope, "'Execution'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformFAdd].operands.push(OperandGroupOperation, "'Operation'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformFAdd].operands.push(OperandId, "X");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformFAdd].operands.push(OperandId, "'ClusterSize'", true);
|
|
|
|
|
+
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformIMul].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformIMul].operands.push(OperandScope, "'Execution'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformIMul].operands.push(OperandGroupOperation, "'Operation'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformIMul].operands.push(OperandId, "X");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformIMul].operands.push(OperandId, "'ClusterSize'", true);
|
|
|
|
|
+
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformFMul].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformFMul].operands.push(OperandScope, "'Execution'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformFMul].operands.push(OperandGroupOperation, "'Operation'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformFMul].operands.push(OperandId, "X");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformFMul].operands.push(OperandId, "'ClusterSize'", true);
|
|
|
|
|
+
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformSMin].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformSMin].operands.push(OperandScope, "'Execution'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformSMin].operands.push(OperandGroupOperation, "'Operation'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformSMin].operands.push(OperandId, "X");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformSMin].operands.push(OperandId, "'ClusterSize'", true);
|
|
|
|
|
+
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformUMin].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformUMin].operands.push(OperandScope, "'Execution'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformUMin].operands.push(OperandGroupOperation, "'Operation'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformUMin].operands.push(OperandId, "X");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformUMin].operands.push(OperandId, "'ClusterSize'", true);
|
|
|
|
|
+
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformFMin].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformFMin].operands.push(OperandScope, "'Execution'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformFMin].operands.push(OperandGroupOperation, "'Operation'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformFMin].operands.push(OperandId, "X");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformFMin].operands.push(OperandId, "'ClusterSize'", true);
|
|
|
|
|
+
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformSMax].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformSMax].operands.push(OperandScope, "'Execution'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformSMax].operands.push(OperandGroupOperation, "'Operation'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformSMax].operands.push(OperandId, "X");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformSMax].operands.push(OperandId, "'ClusterSize'", true);
|
|
|
|
|
+
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformUMax].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformUMax].operands.push(OperandScope, "'Execution'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformUMax].operands.push(OperandGroupOperation, "'Operation'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformUMax].operands.push(OperandId, "X");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformUMax].operands.push(OperandId, "'ClusterSize'", true);
|
|
|
|
|
+
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformFMax].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformFMax].operands.push(OperandScope, "'Execution'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformFMax].operands.push(OperandGroupOperation, "'Operation'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformFMax].operands.push(OperandId, "X");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformFMax].operands.push(OperandId, "'ClusterSize'", true);
|
|
|
|
|
+
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformBitwiseAnd].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformBitwiseAnd].operands.push(OperandScope, "'Execution'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformBitwiseAnd].operands.push(OperandGroupOperation, "'Operation'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformBitwiseAnd].operands.push(OperandId, "X");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformBitwiseAnd].operands.push(OperandId, "'ClusterSize'", true);
|
|
|
|
|
+
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformBitwiseOr].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformBitwiseOr].operands.push(OperandScope, "'Execution'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformBitwiseOr].operands.push(OperandGroupOperation, "'Operation'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformBitwiseOr].operands.push(OperandId, "X");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformBitwiseOr].operands.push(OperandId, "'ClusterSize'", true);
|
|
|
|
|
+
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformBitwiseXor].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformBitwiseXor].operands.push(OperandScope, "'Execution'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformBitwiseXor].operands.push(OperandGroupOperation, "'Operation'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformBitwiseXor].operands.push(OperandId, "X");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformBitwiseXor].operands.push(OperandId, "'ClusterSize'", true);
|
|
|
|
|
+
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformLogicalAnd].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformLogicalAnd].operands.push(OperandScope, "'Execution'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformLogicalAnd].operands.push(OperandGroupOperation, "'Operation'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformLogicalAnd].operands.push(OperandId, "X");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformLogicalAnd].operands.push(OperandId, "'ClusterSize'", true);
|
|
|
|
|
+
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformLogicalOr].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformLogicalOr].operands.push(OperandScope, "'Execution'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformLogicalOr].operands.push(OperandGroupOperation, "'Operation'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformLogicalOr].operands.push(OperandId, "X");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformLogicalOr].operands.push(OperandId, "'ClusterSize'", true);
|
|
|
|
|
+
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformLogicalXor].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformLogicalXor].operands.push(OperandScope, "'Execution'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformLogicalXor].operands.push(OperandGroupOperation, "'Operation'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformLogicalXor].operands.push(OperandId, "X");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformLogicalXor].operands.push(OperandId, "'ClusterSize'", true);
|
|
|
|
|
+
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformQuadBroadcast].capabilities.push_back(CapabilityGroupNonUniformQuad);
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformQuadBroadcast].operands.push(OperandScope, "'Execution'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformQuadBroadcast].operands.push(OperandId, "X");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformQuadBroadcast].operands.push(OperandId, "'Id'");
|
|
|
|
|
+
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformQuadSwap].capabilities.push_back(CapabilityGroupNonUniformQuad);
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformQuadSwap].operands.push(OperandScope, "'Execution'");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformQuadSwap].operands.push(OperandId, "X");
|
|
|
|
|
+ InstructionDesc[OpGroupNonUniformQuadSwap].operands.push(OperandLiteralNumber, "'Direction'");
|
|
|
|
|
+
|
|
|
InstructionDesc[OpSubgroupBallotKHR].operands.push(OperandId, "'Predicate'");
|
|
InstructionDesc[OpSubgroupBallotKHR].operands.push(OperandId, "'Predicate'");
|
|
|
|
|
|
|
|
InstructionDesc[OpSubgroupFirstInvocationKHR].operands.push(OperandId, "'Value'");
|
|
InstructionDesc[OpSubgroupFirstInvocationKHR].operands.push(OperandId, "'Value'");
|