llvm-6502/lib/Target/Mips
Daniel Sanders 68138dc9a8 [mips][msa] Fix invalid generated code when lowering FrameIndex involving unaligned offsets.
Summary:
The MSA ld.[bhwd] and st.[bhwd] instructions scale the immediate by the
element size before use as an offset. The offset must therefore be a
multiple of the element size to be valid in these instructions. However,
an unaligned base address is valid in MSA.

This commit causes the compiler to emit valid code when the calculated
offset is not a multiple of the element size by accounting for the offset
using addiu and using a zero offset in the load/store.

Depends on D2338

Reviewers: matheusalmeida

Reviewed By: matheusalmeida

Differential Revision: http://llvm-reviews.chandlerc.com/D2339

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196777 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-09 12:47:12 +00:00
..
AsmParser Method parseSetAssignment treats every operand with '$' sign as register and the parsing is directed to set alias for register. This will result in errors reported when expressions containing label references are parsed(for example long jumps) 2013-12-09 11:03:25 +00:00
Disassembler [mips][msa] Fix issue with immediate fields of LD/ST instructions 2013-12-05 11:06:22 +00:00
InstPrinter Cleaning up of prologue/epilogue code for Mips16. First step 2013-12-08 16:51:52 +00:00
MCTargetDesc [mips][msa] Fix issue with immediate fields of LD/ST instructions 2013-12-05 11:06:22 +00:00
TargetInfo [CMake] Let add_public_tablegen_target responsible to provide dependency to CommonTableGen. 2013-11-28 17:04:04 +00:00
CMakeLists.txt [CMake] Let add_public_tablegen_target() provide intrinsics_gen, too. 2013-11-28 17:04:31 +00:00
LLVMBuild.txt
Makefile
MicroMipsInstrFormats.td Use instr mapping for microMIPS in llvm-mc. 2013-11-15 08:07:34 +00:00
MicroMipsInstrInfo.td [mips] Redefine TAILCALL as a pseudo instruction. 2013-11-27 23:58:32 +00:00
Mips16FrameLowering.cpp
Mips16FrameLowering.h
Mips16HardFloat.cpp
Mips16HardFloat.h
Mips16InstrFormats.td
Mips16InstrInfo.cpp Make sure we mark these registers as defined. Previously was done 2013-12-08 19:21:47 +00:00
Mips16InstrInfo.h Delete dead code. 2013-12-06 00:13:50 +00:00
Mips16InstrInfo.td Cleaning up of prologue/epilogue code for Mips16. First step 2013-12-08 16:51:52 +00:00
Mips16ISelDAGToDAG.cpp
Mips16ISelDAGToDAG.h
Mips16ISelLowering.cpp Make all the conditional Mips 16 branches get initially set for the 2013-11-15 02:21:52 +00:00
Mips16ISelLowering.h
Mips16RegisterInfo.cpp
Mips16RegisterInfo.h
Mips64InstrInfo.td [mips] Redefine TAILCALL as a pseudo instruction. 2013-11-27 23:58:32 +00:00
Mips.h [mips] Revert test commit r195922. 2013-11-28 15:26:33 +00:00
Mips.td Change the default of AsmWriterClassName and isMCAsmWriter. 2013-12-02 04:55:42 +00:00
MipsAnalyzeImmediate.cpp
MipsAnalyzeImmediate.h
MipsAsmPrinter.cpp Remove dead code. 2013-12-02 15:36:37 +00:00
MipsAsmPrinter.h Fix a bug related to constant islands for Mips16 and mips16/32 dual mode. 2013-11-26 20:38:40 +00:00
MipsCallingConv.td
MipsCodeEmitter.cpp [mips][msa] Fix issue with immediate fields of LD/ST instructions 2013-12-05 11:06:22 +00:00
MipsCondMov.td
MipsConstantIslandPass.cpp Correct word hyphenations 2013-12-05 05:44:44 +00:00
MipsDelaySlotFiller.cpp
MipsDSPInstrFormats.td
MipsDSPInstrInfo.td
MipsFrameLowering.cpp
MipsFrameLowering.h
MipsInstrFormats.td Support for microMIPS trap instruction with immediate operands. 2013-11-13 13:15:03 +00:00
MipsInstrFPU.td
MipsInstrInfo.cpp [weak vtables] Remove a bunch of weak vtables 2013-11-19 00:57:56 +00:00
MipsInstrInfo.h [weak vtables] Remove a bunch of weak vtables 2013-11-19 00:57:56 +00:00
MipsInstrInfo.td [mips][msa] Fix issue with immediate fields of LD/ST instructions 2013-12-05 11:06:22 +00:00
MipsISelDAGToDAG.cpp
MipsISelDAGToDAG.h
MipsISelLowering.cpp [mips] Small code generation improvement for conditional operator (select) 2013-12-05 12:07:05 +00:00
MipsISelLowering.h
MipsJITInfo.cpp
MipsJITInfo.h
MipsLongBranch.cpp Fixed issue with microMIPS long branch. 2013-11-30 19:12:28 +00:00
MipsMachineFunction.cpp
MipsMachineFunction.h
MipsMCInstLower.cpp
MipsMCInstLower.h
MipsModuleISelDAGToDAG.cpp
MipsModuleISelDAGToDAG.h
MipsMSAInstrFormats.td [mips][msa] Pseudo instructions require HasMSA too. Inherit from MSAPseudo instead of MipsPseudo 2013-11-20 14:32:28 +00:00
MipsMSAInstrInfo.td [mips][msa] Fix issue with immediate fields of LD/ST instructions 2013-12-05 11:06:22 +00:00
MipsOptimizePICCall.cpp [mips] Implement the following optimizations using dominance information to 2013-11-27 23:38:42 +00:00
MipsOs16.cpp
MipsOs16.h
MipsRegisterInfo.cpp
MipsRegisterInfo.h
MipsRegisterInfo.td
MipsRelocations.h
MipsSchedule.td
MipsSEFrameLowering.cpp
MipsSEFrameLowering.h
MipsSEInstrInfo.cpp [mips] Fix 'ran out of registers' in MIPS32 with FP64 when generating code for (ConstantFP 0.0) 2013-11-18 13:12:43 +00:00
MipsSEInstrInfo.h
MipsSEISelDAGToDAG.cpp [mips] Fix 'ran out of registers' in MIPS32 with FP64 when generating code for (ConstantFP 0.0) 2013-11-18 13:12:43 +00:00
MipsSEISelDAGToDAG.h
MipsSEISelLowering.cpp [mips] Implement the following optimizations using dominance information to 2013-11-27 23:38:42 +00:00
MipsSEISelLowering.h
MipsSelectionDAGInfo.cpp
MipsSelectionDAGInfo.h
MipsSERegisterInfo.cpp [mips][msa] Fix invalid generated code when lowering FrameIndex involving unaligned offsets. 2013-12-09 12:47:12 +00:00
MipsSERegisterInfo.h
MipsSubtarget.cpp Check in conditional branches for constant islands. Still need to finish 2013-11-28 00:56:37 +00:00
MipsSubtarget.h
MipsTargetMachine.cpp [mips] Implement the following optimizations using dominance information to 2013-11-27 23:38:42 +00:00
MipsTargetMachine.h
MipsTargetObjectFile.cpp
MipsTargetObjectFile.h
MipsTargetStreamer.h reverts 195057 per request 2013-11-19 20:53:28 +00:00
MSA.txt