llvm-6502/lib/Target/Mips
Ahmed Bougacha 7fac1d945f [SelectionDAG] Allow targets to specify legality of extloads' result
type (in addition to the memory type).

The *LoadExt* legalization handling used to only have one type, the
memory type.  This forced users to assume that as long as the extload
for the memory type was declared legal, and the result type was legal,
the whole extload was legal.

However, this isn't always the case.  For instance, on X86, with AVX,
this is legal:
    v4i32 load, zext from v4i8
but this isn't:
    v4i64 load, zext from v4i8
Whereas v4i64 is (arguably) legal, even without AVX2.

Note that the same thing was done a while ago for truncstores (r46140),
but I assume no one needed it yet for extloads, so here we go.

Calls to getLoadExtAction were changed to add the value type, found
manually in the surrounding code.

Calls to setLoadExtAction were mechanically changed, by wrapping the
call in a loop, to match previous behavior.  The loop iterates over
the MVT subrange corresponding to the memory type (FP vectors, etc...).
I also pulled neighboring setTruncStoreActions into some of the loops;
those shouldn't make a difference, as the additional types are illegal.
(e.g., i128->i1 truncstores on PPC.)

No functional change intended.

Differential Revision: http://reviews.llvm.org/D6532


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@225421 91177308-0d34-0410-b5e6-96231b3b80d8
2015-01-08 00:51:32 +00:00
..
AsmParser Replace several 'assert(false' with 'llvm_unreachable' or fold a condition into the assert. 2015-01-05 10:15:49 +00:00
Disassembler [mips][microMIPS] Implement CACHE, PREF, SSNOP, EHB and PAUSE instructions 2014-12-23 19:55:34 +00:00
InstPrinter Replace several 'assert(false' with 'llvm_unreachable' or fold a condition into the assert. 2015-01-05 10:15:49 +00:00
MCTargetDesc [mips][microMIPS] Relocate with symbol for micromips symbols 2014-12-30 22:04:16 +00:00
TargetInfo
CMakeLists.txt MipsABIInfo class is used in different libraries. Moving the files to MCTargetDesc folder(LLVMMipsDesc library) prevents linkage errors. There are no functional changes. 2014-12-17 11:49:56 +00:00
LLVMBuild.txt
Makefile
MicroMipsInstrFormats.td [mips][microMIPS] Implement CACHE, PREF, SSNOP, EHB and PAUSE instructions 2014-12-23 19:55:34 +00:00
MicroMipsInstrFPU.td
MicroMipsInstrInfo.td [mips][microMIPS] Implement CACHE, PREF, SSNOP, EHB and PAUSE instructions 2014-12-23 19:55:34 +00:00
Mips16FrameLowering.cpp
Mips16FrameLowering.h
Mips16HardFloat.cpp Rewrite the Mips16HardFloat pass to avoid using the Subtarget. 2015-01-06 01:12:30 +00:00
Mips16HardFloat.h Rewrite the Mips16HardFloat pass to avoid using the Subtarget. 2015-01-06 01:12:30 +00:00
Mips16HardFloatInfo.cpp
Mips16HardFloatInfo.h
Mips16InstrFormats.td
Mips16InstrInfo.cpp Replace several 'assert(false' with 'llvm_unreachable' or fold a condition into the assert. 2015-01-05 10:15:49 +00:00
Mips16InstrInfo.h
Mips16InstrInfo.td
Mips16ISelDAGToDAG.cpp
Mips16ISelDAGToDAG.h
Mips16ISelLowering.cpp
Mips16ISelLowering.h
Mips16RegisterInfo.cpp
Mips16RegisterInfo.h
Mips32r6InstrFormats.td
Mips32r6InstrInfo.td
Mips64InstrInfo.td
Mips64r6InstrInfo.td
Mips.h
Mips.td
MipsAnalyzeImmediate.cpp
MipsAnalyzeImmediate.h
MipsAsmPrinter.cpp Use the same call off of the TargetMachine rather than the subtarget. 2015-01-06 01:12:40 +00:00
MipsAsmPrinter.h [mips] Set GCC-compatible MIPS asssembler options before inline asm blocks. 2014-12-17 10:56:16 +00:00
MipsCallingConv.td
MipsCCState.cpp
MipsCCState.h
MipsCondMov.td [mips] Enable code generation for MIPS-III. 2014-12-12 15:16:46 +00:00
MipsConstantIslandPass.cpp
MipsDelaySlotFiller.cpp
MipsDSPInstrFormats.td
MipsDSPInstrInfo.td
MipsFastISel.cpp Rewrite the Mips16HardFloat pass to avoid using the Subtarget. 2015-01-06 01:12:30 +00:00
MipsFrameLowering.cpp
MipsFrameLowering.h
MipsInstrFormats.td
MipsInstrFPU.td
MipsInstrInfo.cpp
MipsInstrInfo.h
MipsInstrInfo.td [mips][microMIPS] Implement CACHE, PREF, SSNOP, EHB and PAUSE instructions 2014-12-23 19:55:34 +00:00
MipsISelDAGToDAG.cpp
MipsISelDAGToDAG.h
MipsISelLowering.cpp [SelectionDAG] Allow targets to specify legality of extloads' result 2015-01-08 00:51:32 +00:00
MipsISelLowering.h [mips] Support SELECT nodes for targets that don't have conditional-move instructions. 2014-12-12 14:41:37 +00:00
MipsLongBranch.cpp Replace several 'assert(false' with 'llvm_unreachable' or fold a condition into the assert. 2015-01-05 10:15:49 +00:00
MipsMachineFunction.cpp
MipsMachineFunction.h
MipsMCInstLower.cpp
MipsMCInstLower.h
MipsModuleISelDAGToDAG.cpp
MipsModuleISelDAGToDAG.h
MipsMSAInstrFormats.td
MipsMSAInstrInfo.td
MipsOptimizePICCall.cpp
MipsOptionRecord.h
MipsOs16.cpp
MipsOs16.h
MipsRegisterInfo.cpp
MipsRegisterInfo.h
MipsRegisterInfo.td
MipsSchedule.td
MipsSEFrameLowering.cpp
MipsSEFrameLowering.h
MipsSEInstrInfo.cpp Remove dead variable. 2015-01-06 01:12:42 +00:00
MipsSEInstrInfo.h Remove dead variable. 2015-01-06 01:12:42 +00:00
MipsSEISelDAGToDAG.cpp
MipsSEISelDAGToDAG.h
MipsSEISelLowering.cpp [SelectionDAG] Allow targets to specify legality of extloads' result 2015-01-08 00:51:32 +00:00
MipsSEISelLowering.h
MipsSelectionDAGInfo.cpp
MipsSelectionDAGInfo.h
MipsSERegisterInfo.cpp
MipsSERegisterInfo.h
MipsSubtarget.cpp Remove unused variable, initializer, and accessor. 2014-12-19 23:46:53 +00:00
MipsSubtarget.h Remove unused variable, initializer, and accessor. 2014-12-19 23:46:53 +00:00
MipsTargetMachine.cpp
MipsTargetMachine.h Rewrite the Mips16HardFloat pass to avoid using the Subtarget. 2015-01-06 01:12:30 +00:00
MipsTargetObjectFile.cpp
MipsTargetObjectFile.h
MipsTargetStreamer.h
MSA.txt