llvm-6502/lib
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
..
Analysis Remove empty statement. No functionality change. 2015-01-08 00:47:03 +00:00
AsmParser Change the .ll syntax for comdats and add a syntactic sugar. 2015-01-06 22:55:16 +00:00
Bitcode [PM] Switch the new pass manager to use a reference-based API for IR 2015-01-05 02:47:05 +00:00
CodeGen [SelectionDAG] Allow targets to specify legality of extloads' result 2015-01-08 00:51:32 +00:00
DebugInfo Implement a very basic colored syntax highlighting for llvm-dwarfdump. 2015-01-06 16:50:25 +00:00
ExecutionEngine RTDyldMemoryManager.cpp: Make the reference to __morestack weak. 2014-12-30 22:52:33 +00:00
IR [GC] improve testing around gc.relocate and fix a test 2015-01-07 22:48:01 +00:00
IRReader Remove unused variable. NFC. 2014-11-06 23:16:57 +00:00
LineEditor
Linker Linker: Don't use MDNode::replaceOperandWith() 2015-01-07 21:32:27 +00:00
LTO LTO: Lazy-load LTOModule in local contexts 2014-12-17 22:05:42 +00:00
MC Revert r224935 "Refactor duplicated code. No intended functionality change." 2015-01-06 23:04:36 +00:00
Object Don't loop endlessly for MachO files with 0 ncmds 2015-01-06 17:08:26 +00:00
Option Add an overload of getLastArgNoClaim taking two OptSpecifiers. 2014-09-12 19:42:53 +00:00
ProfileData llvm-cov: Sink some reporting logic into CoverageMapping 2014-11-14 01:50:32 +00:00
Support Triple: Add amdgcn triple 2015-01-06 18:00:00 +00:00
TableGen Clean up static analyzer warnings. 2014-12-12 21:48:03 +00:00
Target [SelectionDAG] Allow targets to specify legality of extloads' result 2015-01-08 00:51:32 +00:00
Transforms Reapply: Teach SROA how to update debug info for fragmented variables. 2015-01-07 20:52:22 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile