llvm-project/llvm/lib/Target/Hexagon
Ahmed Bougacha 2b6917b020 [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

llvm-svn: 225421
2015-01-08 00:51:32 +00:00
..
Disassembler [Hexagon] Adding deallocframe and circular addressing loads. 2014-12-26 20:30:58 +00:00
MCTargetDesc Reverting 225045 and 225043 and XFAIL multiline.ll on hexagon 2014-12-31 17:14:35 +00:00
TargetInfo Prune redundant dependencies in LLVMBuild.txt. 2013-12-11 00:30:57 +00:00
CMakeLists.txt [Hexagon] [NFC] Merging InstPrinter directory in to MCTargetDesc since they have a circular dependency. 2014-11-20 21:56:35 +00:00
Hexagon.h Canonicalize header guards into a common format. 2014-08-13 16:26:38 +00:00
Hexagon.td [Hexagon] Adding dealloc_return encoding and absolute address stores. 2015-01-06 16:15:15 +00:00
HexagonAsmPrinter.cpp [Hexagon] Converting subclass members to an implicit operand. 2014-12-03 20:23:22 +00:00
HexagonAsmPrinter.h Canonicalize header guards into a common format. 2014-08-13 16:26:38 +00:00
HexagonCFGOptimizer.cpp [Hexagon] Adding encodings for JR class instructions. Updating complier usages. 2014-12-10 21:24:10 +00:00
HexagonCallingConv.td
HexagonCallingConvLower.cpp Remove the TargetMachine forwards for TargetSubtargetInfo based 2014-08-04 21:25:23 +00:00
HexagonCallingConvLower.h Canonicalize header guards into a common format. 2014-08-13 16:26:38 +00:00
HexagonCopyToCombine.cpp [Hexagon] Dropping old combine instructions without encodings. 2014-12-30 17:53:54 +00:00
HexagonExpandPredSpillCode.cpp [Hexagon] Adding post-increment register form stores and register-immediate form stores with tests. 2014-12-29 20:44:51 +00:00
HexagonFixupHwLoops.cpp [Hexagon] Removing old variants of instructions and updating references. 2014-12-19 20:29:29 +00:00
HexagonFrameLowering.cpp [Hexagon] Adding dealloc_return encoding and absolute address stores. 2015-01-06 16:15:15 +00:00
HexagonFrameLowering.h Canonicalize header guards into a common format. 2014-08-13 16:26:38 +00:00
HexagonHardwareLoops.cpp [Hexagon] Removing old variants of instructions and updating references. 2014-12-19 20:29:29 +00:00
HexagonISelDAGToDAG.cpp [Hexagon] Adding post-increment register form stores and register-immediate form stores with tests. 2014-12-29 20:44:51 +00:00
HexagonISelLowering.cpp [SelectionDAG] Allow targets to specify legality of extloads' result 2015-01-08 00:51:32 +00:00
HexagonISelLowering.h [Hexagon] Adding encoding for popcount, fastcorner, dword asr with rounding. 2015-01-07 20:07:28 +00:00
HexagonInstrFormats.td [Hexagon] Reapplying 224775 load words. 2014-12-23 20:02:16 +00:00
HexagonInstrFormatsV4.td [Hexagon] Adding compound jump encodings. 2015-01-06 20:03:31 +00:00
HexagonInstrInfo.cpp [Hexagon] Adding dealloc_return encoding and absolute address stores. 2015-01-06 16:15:15 +00:00
HexagonInstrInfo.h Remove unused argument to CreateTargetScheduleState and change 2014-10-09 01:59:35 +00:00
HexagonInstrInfo.td [Hexagon] Adding round reg/imm and bitsplit instructions. 2015-01-05 18:08:21 +00:00
HexagonInstrInfoV3.td [Hexagon] Adding double word add/min/minu/max/maxu instructions and tests. 2014-12-12 21:29:25 +00:00
HexagonInstrInfoV4.td [Hexagon] Adding compound jump encodings. 2015-01-06 20:03:31 +00:00
HexagonInstrInfoV5.td [Hexagon] Fix 225372 USR register is not fully complete. Removing Uses = [USR] maintains existing functionality to old instructions without encodings. 2015-01-07 20:43:38 +00:00
HexagonIntrinsics.td [Hexagon] Adding doubleregs for control registers. Renaming control register class. 2014-12-19 18:56:10 +00:00
HexagonIntrinsicsDerived.td [Hexagon] Removing old multiply defs and updating references to new versions. 2014-12-16 16:10:01 +00:00
HexagonIntrinsicsV3.td
HexagonIntrinsicsV4.td Add missing attributes !cmp.[eq,gt,gtu] instructions. 2014-09-25 13:09:54 +00:00
HexagonIntrinsicsV5.td
HexagonMCInstLower.cpp [Hexagon] Converting member InstrDesc to static variable. 2014-12-03 21:40:25 +00:00
HexagonMachineFunctionInfo.cpp [weak vtables] Remove a bunch of weak vtables 2013-11-19 00:57:56 +00:00
HexagonMachineFunctionInfo.h Canonicalize header guards into a common format. 2014-08-13 16:26:38 +00:00
HexagonMachineScheduler.cpp Fix null reference creation in ScheduleDAGInstrs constructor call. 2014-08-20 19:36:05 +00:00
HexagonMachineScheduler.h Remove unused argument to CreateTargetScheduleState and change 2014-10-09 01:59:35 +00:00
HexagonNewValueJump.cpp [Hexagon] Adding J class call instructions. 2014-12-12 21:12:27 +00:00
HexagonOperands.td [Hexagon] Adding encoding for misc v4 instructions: boundscheck, tlbmatch, dcfetch. 2015-01-06 19:03:20 +00:00
HexagonPeephole.cpp [Hexagon] Dropping old combine instructions without encodings. 2014-12-30 17:53:54 +00:00
HexagonRegisterInfo.cpp [Hexagon] Adding post-increment register form stores and register-immediate form stores with tests. 2014-12-29 20:44:51 +00:00
HexagonRegisterInfo.h Canonicalize header guards into a common format. 2014-08-13 16:26:38 +00:00
HexagonRegisterInfo.td [Hexagon] Adding deallocframe and circular addressing loads. 2014-12-26 20:30:58 +00:00
HexagonRemoveSZExtArgs.cpp [C++11] Add 'override' keywords and remove 'virtual'. Additionally add 'final' and leave 'virtual' on some methods that are marked virtual without overriding anything and have no obvious overrides themselves. Hexagon edition 2014-04-29 07:58:16 +00:00
HexagonSchedule.td [Hexagon] Add new InstrItinClass to support timing classes. 2014-05-08 18:47:08 +00:00
HexagonScheduleV4.td [Hexagon] Add new InstrItinClass to support timing classes. 2014-05-08 18:47:08 +00:00
HexagonSelectCCInfo.td
HexagonSelectionDAGInfo.cpp Have HexagonSelectionDAGInfo take a DataLayout rather than a 2014-06-27 00:18:25 +00:00
HexagonSelectionDAGInfo.h Canonicalize header guards into a common format. 2014-08-13 16:26:38 +00:00
HexagonSplitConst32AndConst64.cpp Remove the TargetMachine forwards for TargetSubtargetInfo based 2014-08-04 21:25:23 +00:00
HexagonSplitTFRCondSets.cpp [Hexagon] Updating rr/ri 32/64 transfer encodings and adding tests. 2014-12-09 20:23:30 +00:00
HexagonSubtarget.cpp Move all of the hexagon subtarget dependent variables from the target 2014-06-27 00:27:40 +00:00
HexagonSubtarget.h Add override to overriden virtual methods, remove virtual keywords. 2014-09-03 11:41:21 +00:00
HexagonTargetMachine.cpp [CodeGen] Add print and verify pass after each MachineFunctionPass by default 2014-12-11 21:26:47 +00:00
HexagonTargetMachine.h Add out of line virtual destructors to all LLVMTargetMachine subclasses 2014-11-20 23:37:18 +00:00
HexagonTargetObjectFile.cpp Handle ctor/init_array initialization. 2014-11-03 14:56:05 +00:00
HexagonTargetObjectFile.h Canonicalize header guards into a common format. 2014-08-13 16:26:38 +00:00
HexagonVLIWPacketizer.cpp [Hexagon] Updating constant extender def, adding alu-not instructions, compare to general register, and inverted compares. 2014-12-30 15:44:17 +00:00
HexagonVarargsCallingConvention.h Remove the TargetMachine forwards for TargetSubtargetInfo based 2014-08-04 21:25:23 +00:00
LLVMBuild.txt [Hexagon] [NFC] Merging InstPrinter directory in to MCTargetDesc since they have a circular dependency. 2014-11-20 21:56:35 +00:00
Makefile Update Makefile following directory removal in r222466 2014-11-20 22:48:24 +00:00