@@ -3388,6 +3388,8 @@ def STRD_POST: AI3ldstidx<0b1111, 0, 0, (outs GPR:$Rn_wb),
33883388
33893389// STRT, STRBT, and STRHT
33903390
3391+ let mayStore = 1, hasSideEffects = 0 in {
3392+
33913393def STRBT_POST_REG : AI2ldstidx<0, 1, 0, (outs GPR:$Rn_wb),
33923394 (ins GPR:$Rt, addr_offset_none:$addr, am2offset_reg:$offset),
33933395 IndexModePost, StFrm, IIC_iStore_bh_ru,
@@ -3428,7 +3430,6 @@ def STRBT_POST
34283430 : ARMAsmPseudo<"strbt${q} $Rt, $addr",
34293431 (ins GPR:$Rt, addr_offset_none:$addr, pred:$q)>;
34303432
3431- let mayStore = 1, hasSideEffects = 0 in {
34323433def STRT_POST_REG : AI2ldstidx<0, 0, 0, (outs GPR:$Rn_wb),
34333434 (ins GPR:$Rt, addr_offset_none:$addr, am2offset_reg:$offset),
34343435 IndexModePost, StFrm, IIC_iStore_ru,
@@ -3464,7 +3465,6 @@ def STRT_POST_IMM
34643465 let Inst{11-0} = offset{11-0};
34653466 let DecoderMethod = "DecodeAddrMode2IdxInstruction";
34663467}
3467- }
34683468
34693469def STRT_POST
34703470 : ARMAsmPseudo<"strt${q} $Rt, $addr",
@@ -3493,7 +3493,6 @@ multiclass AI3strT<bits<4> op, string opc> {
34933493 }
34943494}
34953495
3496-
34973496defm STRHT : AI3strT<0b1011, "strht">;
34983497
34993498def STL : AIstrrel<0b00, (outs), (ins GPR:$Rt, addr_offset_none:$addr),
@@ -3503,6 +3502,8 @@ def STLB : AIstrrel<0b10, (outs), (ins GPR:$Rt, addr_offset_none:$addr),
35033502def STLH : AIstrrel<0b11, (outs), (ins GPR:$Rt, addr_offset_none:$addr),
35043503 NoItinerary, "stlh", "\t$Rt, $addr", []>;
35053504
3505+ } // mayStore = 1, hasSideEffects = 0
3506+
35063507//===----------------------------------------------------------------------===//
35073508// Load / store multiple Instructions.
35083509//
@@ -5633,15 +5634,19 @@ multiclass LdSt2Cop<bit load, bit Dbit, string asm, list<dag> pattern> {
56335634 }
56345635}
56355636
5637+ let mayLoad = 1 in {
56365638defm LDC : LdStCop <1, 0, "ldc", [(int_arm_ldc timm:$cop, timm:$CRd, addrmode5:$addr)]>;
56375639defm LDCL : LdStCop <1, 1, "ldcl", [(int_arm_ldcl timm:$cop, timm:$CRd, addrmode5:$addr)]>;
56385640defm LDC2 : LdSt2Cop<1, 0, "ldc2", [(int_arm_ldc2 timm:$cop, timm:$CRd, addrmode5:$addr)]>, Requires<[IsARM,PreV8]>;
56395641defm LDC2L : LdSt2Cop<1, 1, "ldc2l", [(int_arm_ldc2l timm:$cop, timm:$CRd, addrmode5:$addr)]>, Requires<[IsARM,PreV8]>;
5642+ }
56405643
5644+ let mayStore = 1 in {
56415645defm STC : LdStCop <0, 0, "stc", [(int_arm_stc timm:$cop, timm:$CRd, addrmode5:$addr)]>;
56425646defm STCL : LdStCop <0, 1, "stcl", [(int_arm_stcl timm:$cop, timm:$CRd, addrmode5:$addr)]>;
56435647defm STC2 : LdSt2Cop<0, 0, "stc2", [(int_arm_stc2 timm:$cop, timm:$CRd, addrmode5:$addr)]>, Requires<[IsARM,PreV8]>;
56445648defm STC2L : LdSt2Cop<0, 1, "stc2l", [(int_arm_stc2l timm:$cop, timm:$CRd, addrmode5:$addr)]>, Requires<[IsARM,PreV8]>;
5649+ }
56455650
56465651} // DecoderNamespace = "CoProc"
56475652
0 commit comments