diff options
author | Daniel Sanders <daniel.sanders@imgtec.com> | 2016-04-29 13:43:45 +0000 |
---|---|---|
committer | Daniel Sanders <daniel.sanders@imgtec.com> | 2016-04-29 13:43:45 +0000 |
commit | fba875f90287e2c1037bb8cf0acffafba87cf8c7 (patch) | |
tree | f658e09a7950631d72e52d709ef9fec0cf8986e7 /llvm/lib/Target/Mips/MipsTargetStreamer.h | |
parent | a736b37a258f51ccc99e0544339ddcdb97705ff3 (diff) | |
download | bcm5719-llvm-fba875f90287e2c1037bb8cf0acffafba87cf8c7.tar.gz bcm5719-llvm-fba875f90287e2c1037bb8cf0acffafba87cf8c7.zip |
[mips][ias] Split expandMemInst between MipsAsmParser and MipsTargetStreamer. Almost NFC.
Summary:
The portion in MipsAsmParser is responsible for figuring out which expansion to
use, while the portion in MipsTargetStreamer is responsible for emitting it.
This allows us to remove the call to isIntegratedAssemblerRequired() which is
currently ensuring the effect of .cprestore only occurs when writing objects.
The small functional change is that the memory offsets are now correctly
printed as signed values.
Reviewers: sdardis
Subscribers: dsanders, sdardis, llvm-commits
Differential Revision: http://reviews.llvm.org/D19714
llvm-svn: 268042
Diffstat (limited to 'llvm/lib/Target/Mips/MipsTargetStreamer.h')
-rw-r--r-- | llvm/lib/Target/Mips/MipsTargetStreamer.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/llvm/lib/Target/Mips/MipsTargetStreamer.h b/llvm/lib/Target/Mips/MipsTargetStreamer.h index 4189b5ffd27..6cab226628e 100644 --- a/llvm/lib/Target/Mips/MipsTargetStreamer.h +++ b/llvm/lib/Target/Mips/MipsTargetStreamer.h @@ -116,6 +116,20 @@ public: void emitEmptyDelaySlot(bool hasShortDelaySlot, SMLoc IDLoc, const MCSubtargetInfo *STI); void emitNop(SMLoc IDLoc, const MCSubtargetInfo *STI); + void emitStoreWithImmOffset(unsigned Opcode, unsigned SrcReg, + unsigned BaseReg, int64_t Offset, unsigned ATReg, + SMLoc IDLoc, const MCSubtargetInfo *STI); + void emitStoreWithSymOffset(unsigned Opcode, unsigned SrcReg, + unsigned BaseReg, MCOperand &HiOperand, + MCOperand &LoOperand, unsigned ATReg, SMLoc IDLoc, + const MCSubtargetInfo *STI); + void emitLoadWithImmOffset(unsigned Opcode, unsigned DstReg, unsigned BaseReg, + int64_t Offset, unsigned TmpReg, SMLoc IDLoc, + const MCSubtargetInfo *STI); + void emitLoadWithSymOffset(unsigned Opcode, unsigned DstReg, unsigned BaseReg, + MCOperand &HiOperand, MCOperand &LoOperand, + unsigned ATReg, SMLoc IDLoc, + const MCSubtargetInfo *STI); void forbidModuleDirective() { ModuleDirectiveAllowed = false; } void reallowModuleDirective() { ModuleDirectiveAllowed = true; } |