[PATCH] D66894: [mips] Fix expanding `lw/sw $reg1, symbol($reg2)` instruction
Simon Atanasyan via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Aug 29 06:18:26 PDT 2019
This revision was automatically updated to reflect the committed changes.
Closed by commit rL370353: [mips] Fix expanding `lw/sw $reg1, symbol($reg2)` instruction (authored by atanasyan, committed by ).
Changed prior to commit:
https://reviews.llvm.org/D66894?vs=217676&id=217860#toc
Repository:
rL LLVM
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D66894/new/
https://reviews.llvm.org/D66894
Files:
llvm/trunk/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
llvm/trunk/test/MC/Mips/mips-expansions.s
llvm/trunk/test/MC/Mips/mips64-expansions.s
Index: llvm/trunk/test/MC/Mips/mips64-expansions.s
===================================================================
--- llvm/trunk/test/MC/Mips/mips64-expansions.s
+++ llvm/trunk/test/MC/Mips/mips64-expansions.s
@@ -472,12 +472,12 @@
lw $10, symbol($4)
# CHECK: ld $10, %got_disp(symbol)($gp) # encoding: [A,A,0x8a,0xdf]
# CHECK: # fixup A - offset: 0, value: %got_disp(symbol), kind: fixup_Mips_GOT_DISP
-# CHECK-FIXME: daddu $10, $10, $4 # encoding: [0x2d,0x50,0x44,0x01]
+# CHECK: daddu $10, $10, $4 # encoding: [0x2d,0x50,0x44,0x01]
# CHECK: lw $10, 0($10) # encoding: [0x00,0x00,0x4a,0x8d]
sw $10, symbol($9)
# CHECK: ld $1, %got_disp(symbol)($gp) # encoding: [A,A,0x81,0xdf]
# CHECK: # fixup A - offset: 0, value: %got_disp(symbol), kind: fixup_Mips_GOT_DISP
-# CHECK-FIXME: daddu $1, $1, $9 # encoding: [0x2d,0x08,0x29,0x00]
+# CHECK: daddu $1, $1, $9 # encoding: [0x2d,0x08,0x29,0x00]
# CHECK: sw $10, 0($1) # encoding: [0x00,0x00,0x2a,0xac]
lw $8, sym+8
Index: llvm/trunk/test/MC/Mips/mips-expansions.s
===================================================================
--- llvm/trunk/test/MC/Mips/mips-expansions.s
+++ llvm/trunk/test/MC/Mips/mips-expansions.s
@@ -112,13 +112,13 @@
lw $10, symbol($4)
# CHECK-LE: lw $10, %got(symbol)($gp) # encoding: [A,A,0x8a,0x8f]
# CHECK-LE: # fixup A - offset: 0, value: %got(symbol), kind: fixup_Mips_GOT
-# CHECK-LE-FIXME: addu $10, $10, $4 # encoding: [0x21,0x50,0x44,0x01]
+# CHECK-LE: addu $10, $10, $4 # encoding: [0x21,0x50,0x44,0x01]
# CHECK-LE: lw $10, 0($10) # encoding: [0x00,0x00,0x4a,0x8d]
.set at
sw $10, symbol($9)
# CHECK-LE: lw $1, %got(symbol)($gp) # encoding: [A,A,0x81,0x8f]
# CHECK-LE: # fixup A - offset: 0, value: %got(symbol), kind: fixup_Mips_GOT
-# CHECK-LE-FIXME: addu $1, $1, $9 # encoding: [0x21,0x08,0x29,0x00]
+# CHECK-LE: addu $1, $1, $9 # encoding: [0x21,0x08,0x29,0x00]
# CHECK-LE: sw $10, 0($1) # encoding: [0x00,0x00,0x2a,0xac]
lw $8, 1f+8
Index: llvm/trunk/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
===================================================================
--- llvm/trunk/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
+++ llvm/trunk/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
@@ -2870,7 +2870,8 @@
const MCSubtargetInfo *STI) {
// FIXME: These expansions do not respect -mxgot.
MipsTargetStreamer &TOut = getTargetStreamer();
- bool UseSrcReg = SrcReg != Mips::NoRegister;
+ bool UseSrcReg = SrcReg != Mips::NoRegister && SrcReg != Mips::ZERO &&
+ SrcReg != Mips::ZERO_64;
warnIfNoMacro(IDLoc);
if (inPicMode() && ABI.IsO32()) {
@@ -3654,7 +3655,6 @@
if (OffsetOp.isExpr()) {
if (inPicMode()) {
// FIXME:
- // a) Fix lw/sw $reg, symbol($reg) instruction expanding.
// c) Check that immediates of R_MIPS_GOT16/R_MIPS_LO16 relocations
// do not exceed 16-bit.
// d) Use R_MIPS_GOT_PAGE/R_MIPS_GOT_OFST relocations instead
@@ -3670,7 +3670,7 @@
return;
}
- loadAndAddSymbolAddress(Res.getSymA(), TmpReg, Mips::NoRegister,
+ loadAndAddSymbolAddress(Res.getSymA(), TmpReg, BaseReg,
!ABI.ArePtrs64bit(), IDLoc, Out, STI);
TOut.emitRRI(Inst.getOpcode(), DstReg, TmpReg, Res.getConstant(), IDLoc,
STI);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D66894.217860.patch
Type: text/x-patch
Size: 3707 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190829/8a788892/attachment.bin>
More information about the llvm-commits
mailing list