Skip to content

Commit 2563bd7

Browse files
committed
fix
1 parent 17e8bd9 commit 2563bd7

File tree

1 file changed

+26
-7
lines changed

1 file changed

+26
-7
lines changed

llvm/lib/Target/LoongArch/LoongArchInstrInfo.cpp

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -877,13 +877,32 @@ LoongArchInstrInfo::emitLdStWithAddr(MachineInstr &MemI,
877877
assert(AM.ScaledReg == 0 && AM.Scale == 0 &&
878878
"Addressing mode not supported for folding");
879879

880-
return BuildMI(MBB, MemI, DL, get(MemI.getOpcode()))
881-
.addReg(MemI.getOperand(0).getReg(),
882-
MemI.mayLoad() ? RegState::Define : 0)
883-
.addReg(AM.BaseReg)
884-
.addImm(AM.Displacement)
885-
.setMemRefs(MemI.memoperands())
886-
.setMIFlags(MemI.getFlags());
880+
unsigned MemIOp = MemI.getOpcode();
881+
switch (MemIOp) {
882+
default:
883+
return BuildMI(MBB, MemI, DL, get(MemIOp))
884+
.addReg(MemI.getOperand(0).getReg(),
885+
MemI.mayLoad() ? RegState::Define : 0)
886+
.addReg(AM.BaseReg)
887+
.addImm(AM.Displacement)
888+
.setMemRefs(MemI.memoperands())
889+
.setMIFlags(MemI.getFlags());
890+
case LoongArch::VSTELM_B:
891+
case LoongArch::VSTELM_H:
892+
case LoongArch::VSTELM_W:
893+
case LoongArch::VSTELM_D:
894+
case LoongArch::XVSTELM_B:
895+
case LoongArch::XVSTELM_H:
896+
case LoongArch::XVSTELM_W:
897+
case LoongArch::XVSTELM_D:
898+
return BuildMI(MBB, MemI, DL, get(MemIOp))
899+
.addReg(MemI.getOperand(0).getReg(), 0)
900+
.addReg(AM.BaseReg)
901+
.addImm(AM.Displacement)
902+
.addImm(MemI.getOperand(3).getImm())
903+
.setMemRefs(MemI.memoperands())
904+
.setMIFlags(MemI.getFlags());
905+
}
887906
}
888907

889908
// Returns true if this is the sext.w pattern, addi.w rd, rs, 0.

0 commit comments

Comments
 (0)