1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-26 04:32:44 +01:00
llvm-mirror/lib
Matt Arsenault c9dcead077 GlobalISel: Introduce bitcast legalize action
For some operations, the type is unimportant and only the number of
bits matters. For example I don't want to treat <4 x s8> as a legal
type, but I also don't want to decompose loads of this into smaller
pieces to get legal register types.

On AMDGPU in SelectionDAG, we legalize a number of operations (most
notably load and store) by coercing all types to vectors of i32. For
GlobalISel, I'm trying very hard to avoid doing this for every type,
but I don't think this strategy can be completely avoided. I'm trying
to avoid bitcasts for any legitimately legal type we can operate on,
since the intervening bitcasts have proven to be a hassle.

For loads, I think I can get away without ever casting the result
type, and handling any arbitrary bitwidth during selection (I will
eventually want new tablegen support to help with this, rather than
having to add every possible type as legal). The unmerge required to
do anything with the value should expand to the expected shifts. This
is trickier for stores, since it would now require handling a wide
array of truncates during selection which I don't want.

Future potentially interesting case are for vector indexing, where
sub-dword type should be indexed in s32 pieces.
2020-03-24 19:33:33 -04:00
..
Analysis [LVI] Convert some checks to assertions; NFC 2020-03-24 23:11:13 +01:00
AsmParser Add debug info support for Swift/Clang APINotes. 2020-03-11 18:47:30 -07:00
BinaryFormat
Bitcode Add debug info support for Swift/Clang APINotes. 2020-03-11 18:47:30 -07:00
Bitstream
CodeGen GlobalISel: Introduce bitcast legalize action 2020-03-24 19:33:33 -04:00
DebugInfo [DWARF] Fix v5 debug_line parsing of prologues with many files 2020-03-24 15:11:54 +01:00
Demangle
DWARFLinker [DWARF] Emit DW_AT_call_pc for tail calls 2020-03-24 12:01:55 -07:00
ExecutionEngine [ORC] Move ostream operators for debugging output out of Core.h. 2020-03-21 18:27:28 -07:00
Frontend [OpenMP][NFC] Reduce instantiation time with different data structure 2020-03-23 14:23:46 -05:00
Fuzzer
FuzzMutate Remove CompositeType class. 2020-03-18 13:53:17 -07:00
IR [Attributor] Use knowledge retained in llvm.assume (operand bundles) 2020-03-24 15:33:40 -05:00
IRReader
LineEditor
Linker
LTO
MC Revert rGd5d8569df14e95e2c53d167bd1b37995bcbec565 "Fix static analysis warnings about classes with virtual methods not having virtual destructors" 2020-03-21 11:39:34 +00:00
MCA
Object Drop a StringMap.h include, NFC 2020-03-11 15:45:34 -07:00
ObjectYAML [yaml2obj] - Add ELFYAML::YAMLIntUInt to fix how we parse a relocation Addend key. 2020-03-17 14:22:19 +03:00
Option
Passes [memtag] Plug in stack safety analysis. 2020-03-16 16:35:25 -07:00
ProfileData
Remarks
Support Make helpers static. NFC. 2020-03-24 13:43:00 +01:00
TableGen
Target [AArch64][GlobalISel] Don't localize TLS G_GLOBAL_VALUEs on Darwin. 2020-03-24 13:35:50 -07:00
Testing
TextAPI
ToolDrivers
Transforms [Attributor] Use knowledge retained in llvm.assume (operand bundles) 2020-03-24 15:33:40 -05:00
WindowsManifest
XRay
CMakeLists.txt
LLVMBuild.txt