@@ -150,6 +150,10 @@ def t2addrmode_imm8s4 : Operand<i32>,
150
150
let MIOperandInfo = (ops GPR:$base, i32imm:$offsimm);
151
151
}
152
152
153
+ def t2am_imm8s4_offset : Operand<i32> {
154
+ let PrintMethod = "printT2AddrModeImm8s4OffsetOperand";
155
+ }
156
+
153
157
// t2addrmode_so_reg := reg + (reg << imm2)
154
158
def t2addrmode_so_reg : Operand<i32>,
155
159
ComplexPattern<i32, 3, "SelectT2AddrModeSoReg", []> {
@@ -903,7 +907,7 @@ let mayLoad = 1, hasExtraDefRegAllocReq = 1 in {
903
907
def t2LDRDi8 : T2Ii8s4<1, 0, 1, (outs GPR:$dst1, GPR:$dst2),
904
908
(ins t2addrmode_imm8s4:$addr),
905
909
IIC_iLoadi, "ldrd", "\t$dst1, $addr", []>;
906
- def t2LDRDpci : T2Ii8s4<?, ? , 1, (outs GPR:$dst1, GPR:$dst2),
910
+ def t2LDRDpci : T2Ii8s4<1, 0 , 1, (outs GPR:$dst1, GPR:$dst2),
907
911
(ins i32imm:$addr), IIC_iLoadi,
908
912
"ldrd", "\t$dst1, $addr", []> {
909
913
let Inst{19-16} = 0b1111; // Rn
@@ -1105,7 +1109,24 @@ def t2STRT : T2IstT<0b10, "strt">;
1105
1109
def t2STRBT : T2IstT<0b00, "strbt">;
1106
1110
def t2STRHT : T2IstT<0b01, "strht">;
1107
1111
1108
- // FIXME: ldrd / strd pre / post variants
1112
+ // ldrd / strd pre / post variants
1113
+ // For disassembly only.
1114
+
1115
+ def t2LDRD_PRE : T2Ii8s4<1, 1, 1, (outs GPR:$dst1, GPR:$dst2),
1116
+ (ins GPR:$base, t2am_imm8s4_offset:$imm), NoItinerary,
1117
+ "ldrd", "\t$dst1, $dst2, [$base, $imm]!", []>;
1118
+
1119
+ def t2LDRD_POST : T2Ii8s4<0, 1, 1, (outs GPR:$dst1, GPR:$dst2),
1120
+ (ins GPR:$base, t2am_imm8s4_offset:$imm), NoItinerary,
1121
+ "ldrd", "\t$dst1, $dst2, [$base], $imm", []>;
1122
+
1123
+ def t2STRD_PRE : T2Ii8s4<1, 1, 0, (outs),
1124
+ (ins GPR:$src1, GPR:$src2, GPR:$base, t2am_imm8s4_offset:$imm),
1125
+ NoItinerary, "strd", "\t$src1, $src2, [$base, $imm]!", []>;
1126
+
1127
+ def t2STRD_POST : T2Ii8s4<0, 1, 0, (outs),
1128
+ (ins GPR:$src1, GPR:$src2, GPR:$base, t2am_imm8s4_offset:$imm),
1129
+ NoItinerary, "strd", "\t$src1, $src2, [$base], $imm", []>;
1109
1130
1110
1131
// T2Ipl (Preload Data/Instruction) signals the memory system of possible future
1111
1132
// data/instruction access. These are for disassembly only.
0 commit comments