[llvm] [SPIRV] FIX print the symbolic operand for opcode for the operation OpSpecConstantOp (PR #135756)
Nathan Gauër via llvm-commits
llvm-commits at lists.llvm.org
Mon May 26 02:40:51 PDT 2025
================
@@ -1743,3 +1744,92 @@ defm MatrixAAndBTF32ComponentsINTEL : CooperativeMatrixOperandsOperand<0x20, [SP
defm MatrixAAndBBFloat16ComponentsINTEL : CooperativeMatrixOperandsOperand<0x40, [SPV_INTEL_joint_matrix], [CooperativeMatrixBFloat16ComponentTypeINTEL]>;
defm MatrixCBFloat16ComponentsINTEL : CooperativeMatrixOperandsOperand<0x80, [SPV_INTEL_joint_matrix], [CooperativeMatrixBFloat16ComponentTypeINTEL]>;
defm MatrixResultBFloat16ComponentsINTEL : CooperativeMatrixOperandsOperand<0x100, [SPV_INTEL_joint_matrix], [CooperativeMatrixBFloat16ComponentTypeINTEL]>;
+
+//===----------------------------------------------------------------------===//
+// Multiclass used to define SpecConstant Operands enum values and at the
+// same time SymbolicOperand.
+//===----------------------------------------------------------------------===//
+
+def SpecConstantOpOperands : GenericEnum, Operand<i32> {
+ let FilterClass = "SpecConstantOpOperands";
+ let NameField = "Name";
+ let ValueField = "Value";
+ let PrintMethod = !strconcat("printSymbolicOperand<OperandCategory::", FilterClass, "Operand>");
+}
+
+class SpecConstantOpOperands<string name, bits<32> value> {
+ string Name = name;
+ bits<32> Value = value;
+}
+
+multiclass SpecConstantOpOperandsOperand<bits<32> value, list<Extension> reqExtensions, list<Capability> reqCapabilities> {
+ def : SpecConstantOpOperands<NAME, value>;
+ defm : SymbolicOperandWithRequirements<SpecConstantOpOperandsOperand, value, NAME, 0, 0, reqExtensions, reqCapabilities>;
+}
+
+// Conversion
+defm SConvert : SpecConstantOpOperandsOperand<114, [], []>;
+defm FConvert : SpecConstantOpOperandsOperand<115, [], []>;
+defm ConvertFToS : SpecConstantOpOperandsOperand<110, [], [Kernel]>;
+defm ConvertSToF : SpecConstantOpOperandsOperand<111, [], [Kernel]>;
+defm ConvertFToU : SpecConstantOpOperandsOperand<109, [], [Kernel]>;
+defm ConvertUToF : SpecConstantOpOperandsOperand<112, [], [Kernel]>;
+defm UConvert : SpecConstantOpOperandsOperand<113, [], [Kernel]>;
+defm ConvertPtrToU : SpecConstantOpOperandsOperand<117, [], [Kernel]>;
+defm ConvertUToPtr : SpecConstantOpOperandsOperand<120, [], [Kernel]>;
+defm GenericCastToPtr : SpecConstantOpOperandsOperand<122, [], [Kernel]>;
+defm PtrCastToGeneric : SpecConstantOpOperandsOperand<121, [], [Kernel]>;
+defm Bitcast : SpecConstantOpOperandsOperand<124, [], []>;
+defm QuantizeToF16 : SpecConstantOpOperandsOperand<116, [], [Shader]>;
+// Arithmetic
+defm SNegate : SpecConstantOpOperandsOperand<126, [], []>;
+defm Not : SpecConstantOpOperandsOperand<200, [], []>;
+defm IAdd : SpecConstantOpOperandsOperand<128, [], []>;
+defm ISub : SpecConstantOpOperandsOperand<130, [], []>;
+defm IMul : SpecConstantOpOperandsOperand<132, [], []>;
+defm UDiv : SpecConstantOpOperandsOperand<134, [], []>;
+defm SDiv : SpecConstantOpOperandsOperand<135, [], []>;
+defm UMod : SpecConstantOpOperandsOperand<137, [], []>;
+defm SRem : SpecConstantOpOperandsOperand<138, [], []>;
+defm SMod : SpecConstantOpOperandsOperand<139, [], []>;
+defm ShiftRightLogical : SpecConstantOpOperandsOperand<194, [], []>;
+defm ShiftRightArithmetic : SpecConstantOpOperandsOperand<195, [], []>;
+defm ShiftLeftLogical : SpecConstantOpOperandsOperand<196, [], []>;
+defm BitwiseOr : SpecConstantOpOperandsOperand<197, [], []>;
+defm BitwiseAnd : SpecConstantOpOperandsOperand<199, [], []>;
+defm BitwiseXor : SpecConstantOpOperandsOperand<198, [], []>;
+defm FNegate : SpecConstantOpOperandsOperand<127, [], [Kernel]>;
+defm FAdd : SpecConstantOpOperandsOperand<129, [], [Kernel]>;
+defm FSub : SpecConstantOpOperandsOperand<131, [], [Kernel]>;
+defm FMul : SpecConstantOpOperandsOperand<133, [], [Kernel]>;
+defm FDiv : SpecConstantOpOperandsOperand<136, [], [Kernel]>;
+defm FRem : SpecConstantOpOperandsOperand<140, [], [Kernel]>;
+defm FMod : SpecConstantOpOperandsOperand<141, [], [Kernel]>;
+// Composite;
+defm VectorShuffle : SpecConstantOpOperandsOperand<79, [], []>;
+defm CompositeExtract : SpecConstantOpOperandsOperand<81, [], []>;
+defm CompositeInsert : SpecConstantOpOperandsOperand<82, [], []>;
+// Logical;
+defm LogicalOr : SpecConstantOpOperandsOperand<166, [], []>;
+defm LogicalAnd : SpecConstantOpOperandsOperand<167, [], []>;
+defm LogicalNot : SpecConstantOpOperandsOperand<168, [], []>;
+defm LogicalEqual : SpecConstantOpOperandsOperand<164, [], []>;
+defm LogicalNotEqual : SpecConstantOpOperandsOperand<165, [], []>;
+defm Select : SpecConstantOpOperandsOperand<169, [], []>;
+// Comparison;
+defm IEqual : SpecConstantOpOperandsOperand<170, [], []>;
+defm INotEqual : SpecConstantOpOperandsOperand<171, [], []>;
+defm ULessThan : SpecConstantOpOperandsOperand<176, [], []>;
+defm SLessThan : SpecConstantOpOperandsOperand<177, [], []>;
+defm UGreaterThan : SpecConstantOpOperandsOperand<172, [], []>;
+defm SGreaterThan : SpecConstantOpOperandsOperand<173, [], []>;
+defm ULessThanEqual : SpecConstantOpOperandsOperand<176, [], []>;
+defm SLessThanEqual : SpecConstantOpOperandsOperand<178, [], []>;
----------------
Keenuts wrote:
OpULessThanEqual: 178
SLessThanEqual: 179
https://github.com/llvm/llvm-project/pull/135756
More information about the llvm-commits
mailing list