]> granicus.if.org Git - llvm/commit
Implement new way of expanding extloads.
authorMatt Arsenault <Matthew.Arsenault@amd.com>
Wed, 14 Jan 2015 01:35:17 +0000 (01:35 +0000)
committerMatt Arsenault <Matthew.Arsenault@amd.com>
Wed, 14 Jan 2015 01:35:17 +0000 (01:35 +0000)
commit8b6a26ca8581be4cd90148e8631bd6d808ddabe6
tree16e1a0982724c3654dc9aa759be71a3ab45d3604
parent4d430f0b77e1538af4d8a73090ac686e6870ebf3
Implement new way of expanding extloads.

Now that the source and destination types can be specified,
allow doing an expansion that doesn't use an EXTLOAD of the
result type. Try to do a legal extload to an intermediate type
and extend that if possible.

This generalizes the special case custom lowering of extloads
R600 has been using to work around this problem.

This also happens to fix a bug that would incorrectly use more
aligned loads than should be used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@225925 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/CodeGen/ISDOpcodes.h
lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
lib/CodeGen/SelectionDAG/SelectionDAG.cpp
lib/Target/R600/AMDGPUISelLowering.cpp
lib/Target/R600/SIISelLowering.cpp
test/CodeGen/R600/cvt_f32_ubyte.ll
test/CodeGen/R600/global-extload-i1.ll [new file with mode: 0644]
test/CodeGen/R600/global-extload-i16.ll [new file with mode: 0644]
test/CodeGen/R600/global-extload-i32.ll [new file with mode: 0644]
test/CodeGen/R600/global-extload-i8.ll [new file with mode: 0644]
test/CodeGen/R600/unaligned-load-store.ll