@@ -200,30 +200,30 @@ def InlineJT32 : Operand<i32> {
200
200
201
201
// Three operand short
202
202
203
- multiclass F3R_2RUS<bits<5> opc , string OpcStr, SDNode OpNode> {
204
- def _3r: _F3R<opc , (outs GRRegs:$dst), (ins GRRegs:$b, GRRegs:$c),
203
+ multiclass F3R_2RUS<bits<5> opc1, bits<5> opc2 , string OpcStr, SDNode OpNode> {
204
+ def _3r: _F3R<opc1 , (outs GRRegs:$dst), (ins GRRegs:$b, GRRegs:$c),
205
205
!strconcat(OpcStr, " $dst, $b, $c"),
206
206
[(set GRRegs:$dst, (OpNode GRRegs:$b, GRRegs:$c))]>;
207
- def _2rus : _F2RUS<(outs GRRegs:$dst), (ins GRRegs:$b, i32imm:$c),
207
+ def _2rus : _F2RUS<opc2, (outs GRRegs:$dst), (ins GRRegs:$b, i32imm:$c),
208
208
!strconcat(OpcStr, " $dst, $b, $c"),
209
209
[(set GRRegs:$dst, (OpNode GRRegs:$b, immUs:$c))]>;
210
210
}
211
211
212
- multiclass F3R_2RUS_np<bits<5> opc , string OpcStr> {
213
- def _3r: _F3R<opc , (outs GRRegs:$dst), (ins GRRegs:$b, GRRegs:$c),
212
+ multiclass F3R_2RUS_np<bits<5> opc1, bits<5> opc2 , string OpcStr> {
213
+ def _3r: _F3R<opc1 , (outs GRRegs:$dst), (ins GRRegs:$b, GRRegs:$c),
214
214
!strconcat(OpcStr, " $dst, $b, $c"), []>;
215
- def _2rus : _F2RUS<(outs GRRegs:$dst), (ins GRRegs:$b, i32imm:$c),
215
+ def _2rus : _F2RUS<opc2, (outs GRRegs:$dst), (ins GRRegs:$b, i32imm:$c),
216
216
!strconcat(OpcStr, " $dst, $b, $c"), []>;
217
217
}
218
218
219
- multiclass F3R_2RBITP<bits<5> opc, string OpcStr, SDNode OpNode> {
220
- def _3r: _F3R<opc, (outs GRRegs:$dst), (ins GRRegs:$b, GRRegs:$c),
219
+ multiclass F3R_2RBITP<bits<5> opc1, bits<5> opc2, string OpcStr,
220
+ SDNode OpNode> {
221
+ def _3r: _F3R<opc1, (outs GRRegs:$dst), (ins GRRegs:$b, GRRegs:$c),
221
222
!strconcat(OpcStr, " $dst, $b, $c"),
222
223
[(set GRRegs:$dst, (OpNode GRRegs:$b, GRRegs:$c))]>;
223
- def _2rus : _F2RUS<
224
- (outs GRRegs:$dst), (ins GRRegs:$b, i32imm:$c),
225
- !strconcat(OpcStr, " $dst, $b, $c"),
226
- [(set GRRegs:$dst, (OpNode GRRegs:$b, immBitp:$c))]>;
224
+ def _2rus : _F2RUSBitp<opc2, (outs GRRegs:$dst), (ins GRRegs:$b, i32imm:$c),
225
+ !strconcat(OpcStr, " $dst, $b, $c"),
226
+ [(set GRRegs:$dst, (OpNode GRRegs:$b, immBitp:$c))]>;
227
227
}
228
228
229
229
class F3R<bits<5> opc, string OpcStr, SDNode OpNode> :
@@ -382,10 +382,10 @@ let usesCustomInserter = 1 in {
382
382
//===----------------------------------------------------------------------===//
383
383
384
384
// Three operand short
385
- defm ADD : F3R_2RUS<0b00010, "add", add>;
386
- defm SUB : F3R_2RUS<0b00011, "sub", sub>;
385
+ defm ADD : F3R_2RUS<0b00010, 0b10010, "add", add>;
386
+ defm SUB : F3R_2RUS<0b00011, 0b10011, "sub", sub>;
387
387
let neverHasSideEffects = 1 in {
388
- defm EQ : F3R_2RUS_np<0b00110, "eq">;
388
+ defm EQ : F3R_2RUS_np<0b00110, 0b10110, "eq">;
389
389
def LSS_3r : F3R_np<0b11000, "lss">;
390
390
def LSU_3r : F3R_np<0b11001, "lsu">;
391
391
}
@@ -397,9 +397,9 @@ def LDW_3r : _F3R<0b01001, (outs GRRegs:$dst),
397
397
(ins GRRegs:$addr, GRRegs:$offset),
398
398
"ldw $dst, $addr[$offset]", []>;
399
399
400
- def LDW_2rus : _F2RUS<(outs GRRegs:$dst) , (ins GRRegs:$addr, i32imm:$offset ),
401
- "ldw $dst, $addr[$ offset]" ,
402
- []>;
400
+ def LDW_2rus : _F2RUS<0b00001 , (outs GRRegs:$dst ),
401
+ (ins GRRegs:$addr, i32imm:$ offset) ,
402
+ "ldw $dst, $addr[$offset]", []>;
403
403
404
404
def LD16S_3r : _F3R<0b10000, (outs GRRegs:$dst),
405
405
(ins GRRegs:$addr, GRRegs:$offset),
@@ -414,12 +414,13 @@ let mayStore=1 in {
414
414
def STW_3r : _FL3R<(outs), (ins GRRegs:$val, GRRegs:$addr, GRRegs:$offset),
415
415
"stw $val, $addr[$offset]", []>;
416
416
417
- def STW_2rus : _F2RUS<(outs), (ins GRRegs:$val, GRRegs:$addr, i32imm:$offset),
418
- "stw $val, $addr[$offset]", []>;
417
+ def STW_2rus : _F2RUS<0b0000, (outs),
418
+ (ins GRRegs:$val, GRRegs:$addr, i32imm:$offset),
419
+ "stw $val, $addr[$offset]", []>;
419
420
}
420
421
421
- defm SHL : F3R_2RBITP<0b00100, "shl", shl>;
422
- defm SHR : F3R_2RBITP<0b00101, "shr", srl>;
422
+ defm SHL : F3R_2RBITP<0b00100, 0b10100, "shl", shl>;
423
+ defm SHR : F3R_2RBITP<0b00101, 0b10101, "shr", srl>;
423
424
// TODO tsetr
424
425
425
426
// Three operand long
0 commit comments