@@ -17,8 +17,8 @@ include "SPIRVSymbolicOperands.td"
17
17
let isCodeGenOnly=1 in {
18
18
def ASSIGN_TYPE: Pseudo<(outs ANYID:$dst_id), (ins ANYID:$src_id, TYPE:$src_ty)>;
19
19
def DECL_TYPE: Pseudo<(outs ANYID:$dst_id), (ins ANYID:$src_id, TYPE:$src_ty)>;
20
- def GET_ID: Pseudo<(outs ID :$dst_id), (ins ANYID:$src)>;
21
- def GET_ID64: Pseudo<(outs ID64 :$dst_id), (ins ANYID:$src)>;
20
+ def GET_ID: Pseudo<(outs iID :$dst_id), (ins ANYID:$src)>;
21
+ def GET_ID64: Pseudo<(outs iID64 :$dst_id), (ins ANYID:$src)>;
22
22
def GET_fID: Pseudo<(outs fID:$dst_id), (ins ANYID:$src)>;
23
23
def GET_fID64: Pseudo<(outs fID64:$dst_id), (ins ANYID:$src)>;
24
24
def GET_pID32: Pseudo<(outs pID32:$dst_id), (ins ANYID:$src)>;
@@ -40,18 +40,18 @@ class BinOp<string name, bits<16> opCode, list<dag> pattern=[]>
40
40
"$dst = "#name#" $src_ty $src $src2", pattern>;
41
41
42
42
class BinOpTyped<string name, bits<16> opCode, RegisterClass CID, SDNode node>
43
- : Op<opCode, (outs ID :$dst), (ins TYPE:$src_ty, CID:$src, CID:$src2),
44
- "$dst = "#name#" $src_ty $src $src2", [(set ID :$dst, (assigntype (node CID:$src, CID:$src2), TYPE:$src_ty))]>;
43
+ : Op<opCode, (outs iID :$dst), (ins TYPE:$src_ty, CID:$src, CID:$src2),
44
+ "$dst = "#name#" $src_ty $src $src2", [(set iID :$dst, (assigntype (node CID:$src, CID:$src2), TYPE:$src_ty))]>;
45
45
46
46
class TernOpTyped<string name, bits<16> opCode, RegisterClass CCond, RegisterClass CID, SDNode node>
47
- : Op<opCode, (outs ID :$dst), (ins TYPE:$src_ty, CCond:$cond, CID:$src1, CID:$src2),
48
- "$dst = "#name#" $src_ty $cond $src1 $src2", [(set ID :$dst, (assigntype (node CCond:$cond, CID:$src1, CID:$src2), TYPE:$src_ty))]>;
47
+ : Op<opCode, (outs iID :$dst), (ins TYPE:$src_ty, CCond:$cond, CID:$src1, CID:$src2),
48
+ "$dst = "#name#" $src_ty $cond $src1 $src2", [(set iID :$dst, (assigntype (node CCond:$cond, CID:$src1, CID:$src2), TYPE:$src_ty))]>;
49
49
50
50
multiclass BinOpTypedGen<string name, bits<16> opCode, SDNode node, bit genF = 0, bit genV = 0> {
51
51
if genF then
52
52
def S: BinOpTyped<name, opCode, fID, node>;
53
53
else
54
- def S: BinOpTyped<name, opCode, ID , node>;
54
+ def S: BinOpTyped<name, opCode, iID , node>;
55
55
if genV then {
56
56
if genF then
57
57
def V: BinOpTyped<name, opCode, vfID, node>;
@@ -62,32 +62,32 @@ multiclass BinOpTypedGen<string name, bits<16> opCode, SDNode node, bit genF = 0
62
62
63
63
multiclass TernOpTypedGen<string name, bits<16> opCode, SDNode node, bit genP = 1, bit genI = 1, bit genF = 0, bit genV = 0> {
64
64
if genF then {
65
- def SFSCond: TernOpTyped<name, opCode, ID , fID, node>;
65
+ def SFSCond: TernOpTyped<name, opCode, iID , fID, node>;
66
66
def SFVCond: TernOpTyped<name, opCode, vID, fID, node>;
67
67
}
68
68
if genI then {
69
- def SISCond: TernOpTyped<name, opCode, ID, ID , node>;
70
- def SIVCond: TernOpTyped<name, opCode, vID, ID , node>;
69
+ def SISCond: TernOpTyped<name, opCode, iID, iID , node>;
70
+ def SIVCond: TernOpTyped<name, opCode, vID, iID , node>;
71
71
}
72
72
if genP then {
73
- def SPSCond32: TernOpTyped<name, opCode, ID , pID32, node>;
73
+ def SPSCond32: TernOpTyped<name, opCode, iID , pID32, node>;
74
74
def SPVCond32: TernOpTyped<name, opCode, vID, pID32, node>;
75
- def SPSCond64: TernOpTyped<name, opCode, ID , pID64, node>;
75
+ def SPSCond64: TernOpTyped<name, opCode, iID , pID64, node>;
76
76
def SPVCond64: TernOpTyped<name, opCode, vID, pID64, node>;
77
77
}
78
78
if genV then {
79
79
if genF then {
80
- def VFSCond: TernOpTyped<name, opCode, ID , vfID, node>;
80
+ def VFSCond: TernOpTyped<name, opCode, iID , vfID, node>;
81
81
def VFVCond: TernOpTyped<name, opCode, vID, vfID, node>;
82
82
}
83
83
if genI then {
84
- def VISCond: TernOpTyped<name, opCode, ID , vID, node>;
84
+ def VISCond: TernOpTyped<name, opCode, iID , vID, node>;
85
85
def VIVCond: TernOpTyped<name, opCode, vID, vID, node>;
86
86
}
87
87
if genP then {
88
- def VPSCond32: TernOpTyped<name, opCode, ID , vpID32, node>;
88
+ def VPSCond32: TernOpTyped<name, opCode, iID , vpID32, node>;
89
89
def VPVCond32: TernOpTyped<name, opCode, vID, vpID32, node>;
90
- def VPSCond64: TernOpTyped<name, opCode, ID , vpID64, node>;
90
+ def VPSCond64: TernOpTyped<name, opCode, iID , vpID64, node>;
91
91
def VPVCond64: TernOpTyped<name, opCode, vID, vpID64, node>;
92
92
}
93
93
}
@@ -97,8 +97,8 @@ class UnOp<string name, bits<16> opCode, list<dag> pattern=[]>
97
97
: Op<opCode, (outs ANYID:$dst), (ins TYPE:$type, ANYID:$src),
98
98
"$dst = "#name#" $type $src", pattern>;
99
99
class UnOpTyped<string name, bits<16> opCode, RegisterClass CID, SDNode node>
100
- : Op<opCode, (outs ID :$dst), (ins TYPE:$src_ty, CID:$src),
101
- "$dst = "#name#" $src_ty $src", [(set ID :$dst, (assigntype (node CID:$src), TYPE:$src_ty))]>;
100
+ : Op<opCode, (outs iID :$dst), (ins TYPE:$src_ty, CID:$src),
101
+ "$dst = "#name#" $src_ty $src", [(set iID :$dst, (assigntype (node CID:$src), TYPE:$src_ty))]>;
102
102
103
103
class SimpleOp<string name, bits<16> opCode>: Op<opCode, (outs), (ins), name>;
104
104
@@ -240,16 +240,16 @@ def ConstPseudoFalse: IntImmLeaf<i32, [{ return Imm.getBitWidth() == 1 && Imm.ge
240
240
def ConstPseudoNull: IntImmLeaf<i64, [{ return Imm.isZero(); }]>;
241
241
242
242
multiclass IntFPImm<bits<16> opCode, string name> {
243
- def I: Op<opCode, (outs ID :$dst), (ins TYPE:$type, ID :$src, variable_ops),
244
- "$dst = "#name#" $type", [(set ID :$dst, (assigntype PseudoConstI:$src, TYPE:$type))]>;
245
- def F: Op<opCode, (outs ID :$dst), (ins TYPE:$type, fID:$src, variable_ops),
246
- "$dst = "#name#" $type", [(set ID :$dst, (assigntype PseudoConstF:$src, TYPE:$type))]>;
243
+ def I: Op<opCode, (outs iID :$dst), (ins TYPE:$type, iID :$src, variable_ops),
244
+ "$dst = "#name#" $type", [(set iID :$dst, (assigntype PseudoConstI:$src, TYPE:$type))]>;
245
+ def F: Op<opCode, (outs fID :$dst), (ins TYPE:$type, fID:$src, variable_ops),
246
+ "$dst = "#name#" $type", [(set fID :$dst, (assigntype PseudoConstF:$src, TYPE:$type))]>;
247
247
}
248
248
249
- def OpConstantTrue: Op<41, (outs ID :$dst), (ins TYPE:$src_ty), "$dst = OpConstantTrue $src_ty",
250
- [(set ID :$dst, (assigntype ConstPseudoTrue, TYPE:$src_ty))]>;
251
- def OpConstantFalse: Op<42, (outs ID :$dst), (ins TYPE:$src_ty), "$dst = OpConstantFalse $src_ty",
252
- [(set ID :$dst, (assigntype ConstPseudoFalse, TYPE:$src_ty))]>;
249
+ def OpConstantTrue: Op<41, (outs iID :$dst), (ins TYPE:$src_ty), "$dst = OpConstantTrue $src_ty",
250
+ [(set iID :$dst, (assigntype ConstPseudoTrue, TYPE:$src_ty))]>;
251
+ def OpConstantFalse: Op<42, (outs iID :$dst), (ins TYPE:$src_ty), "$dst = OpConstantFalse $src_ty",
252
+ [(set iID :$dst, (assigntype ConstPseudoFalse, TYPE:$src_ty))]>;
253
253
254
254
defm OpConstant: IntFPImm<43, "OpConstant">;
255
255
@@ -258,8 +258,7 @@ def OpConstantComposite: Op<44, (outs ID:$res), (ins TYPE:$type, variable_ops),
258
258
def OpConstantSampler: Op<45, (outs ID:$res),
259
259
(ins TYPE:$t, SamplerAddressingMode:$s, i32imm:$p, SamplerFilterMode:$f),
260
260
"$res = OpConstantSampler $t $s $p $f">;
261
- def OpConstantNull: Op<46, (outs ID:$dst), (ins TYPE:$src_ty), "$dst = OpConstantNull $src_ty",
262
- [(set ID:$dst, (assigntype ConstPseudoNull, TYPE:$src_ty))]>;
261
+ def OpConstantNull: Op<46, (outs ID:$dst), (ins TYPE:$src_ty), "$dst = OpConstantNull $src_ty">;
263
262
264
263
def OpSpecConstantTrue: Op<48, (outs ID:$r), (ins TYPE:$t), "$r = OpSpecConstantTrue $t">;
265
264
def OpSpecConstantFalse: Op<49, (outs ID:$r), (ins TYPE:$t), "$r = OpSpecConstantFalse $t">;
@@ -469,8 +468,10 @@ def OpConvertBF16ToFINTEL : UnOp<"OpConvertBF16ToFINTEL", 6117>;
469
468
470
469
// 3.42.12 Composite Instructions
471
470
471
+ //def OpVectorExtractDynamic: Op<77, (outs ID:$res), (ins TYPE:$type, vID:$vec, ID:$idx),
472
+ // "$res = OpVectorExtractDynamic $type $vec $idx", [(set ID:$res, (assigntype (extractelt vID:$vec, ID:$idx), TYPE:$type))]>;
472
473
def OpVectorExtractDynamic: Op<77, (outs ID:$res), (ins TYPE:$type, vID:$vec, ID:$idx),
473
- "$res = OpVectorExtractDynamic $type $vec $idx", [(set ID:$res, (assigntype (extractelt vID:$vec, ID:$idx), TYPE:$type))] >;
474
+ "$res = OpVectorExtractDynamic $type $vec $idx">;
474
475
475
476
def OpVectorInsertDynamic: Op<78, (outs ID:$res), (ins TYPE:$ty, ID:$vec, ID:$comp, ID:$idx),
476
477
"$res = OpVectorInsertDynamic $ty $vec $comp $idx">;
@@ -521,8 +522,8 @@ def OpMatrixTimesMatrix: BinOp<"OpMatrixTimesMatrix", 146>;
521
522
def OpOuterProduct: BinOp<"OpOuterProduct", 147>;
522
523
def OpDot: BinOp<"OpDot", 148>;
523
524
524
- def OpIAddCarry: BinOpTyped<"OpIAddCarry", 149, ID , addc>;
525
- def OpISubBorrow: BinOpTyped<"OpISubBorrow", 150, ID , subc>;
525
+ def OpIAddCarry: BinOpTyped<"OpIAddCarry", 149, iID , addc>;
526
+ def OpISubBorrow: BinOpTyped<"OpISubBorrow", 150, iID , subc>;
526
527
def OpUMulExtended: BinOp<"OpUMulExtended", 151>;
527
528
def OpSMulExtended: BinOp<"OpSMulExtended", 152>;
528
529
0 commit comments