llvm-project/llvm/lib
Nicolai Haehnle f267431901 AMDGPU: Turn D16 for MIMG instructions into a regular operand
Summary:
This allows us to reduce the number of different machine instruction
opcodes, which reduces the table sizes and helps flatten the TableGen
multiclass hierarchies.

We can do this because for each hardware MIMG opcode, we have a full set
of IMAGE_xxx_Vn_Vm machine instructions for all required sizes of vdata
and vaddr registers. Instead of having separate D16 machine instructions,
a packed D16 instructions loading e.g. 4 components can simply use the
same V2 opcode variant that non-D16 instructions use.

We still require a TSFlag for D16 buffer instructions, because the
D16-ness of buffer instructions is part of the opcode. Renaming the flag
should help avoid future confusion.

The one non-obvious code change is that for gather4 instructions, the
disassembler can no longer automatically decide whether to use a V2 or
a V4 variant. The existing logic which choose the correct variant for
other MIMG instruction is extended to cover gather4 as well.

As a bonus, some of the assembler error messages are now more helpful
(e.g., complaining about a wrong data size instead of a non-existing
instruction).

While we're at it, delete a whole bunch of dead legacy TableGen code.

Change-Id: I89b02c2841c06f95e662541433e597f5d4553978

Reviewers: arsenm, rampitec, kzhuravl, artem.tamazov, dp, rtaylor

Subscribers: wdng, yaxunl, dstuttard, tpr, t-tye, llvm-commits

Differential Revision: https://reviews.llvm.org/D47434

llvm-svn: 335222
2018-06-21 13:36:01 +00:00
..
Analysis [DA] Enable -da-delinearize by default 2018-06-21 11:53:16 +00:00
AsmParser [ThinLTO] Print module summary index to assembly 2018-05-26 02:34:13 +00:00
BinaryFormat [WebAssembly] Move toString helpers to BinaryFormat 2018-05-14 22:42:07 +00:00
Bitcode [ThinLTO] Rename index IsAnalysis flag to HaveGVs (NFC) 2018-06-06 22:22:01 +00:00
CodeGen [DebugInfo] Make sure all DBG_VALUEs' reguse operands have IsDebug property 2018-06-21 10:03:34 +00:00
DebugInfo [DWARF] Improved error reporting for range lists. 2018-06-20 22:56:37 +00:00
Demangle Move Compiler.h from Demangle back to Support 2018-06-04 22:53:38 +00:00
ExecutionEngine [ORC] Add an initial implementation of a replacement CompileOnDemandLayer. 2018-06-18 18:01:43 +00:00
FuzzMutate [llvm-opt-fuzzer] Add irce to the fuzzing options 2018-03-20 11:32:13 +00:00
Fuzzer
IR [X86] Remove masking from 512-bit floating max/min intrinsics. Use select instruction instead. 2018-06-21 05:00:56 +00:00
IRReader LLParser: add an argument for overriding data layout and do not check alloca addr space 2018-01-30 22:32:39 +00:00
LTO LTO: Keep file handles open for memory mapped files. 2018-06-13 18:03:14 +00:00
LineEditor
Linker IRMover: Account for matching types present across modules 2018-06-20 16:50:56 +00:00
MC Remove FIXME comment about WIP. 2018-06-21 07:15:19 +00:00
Object [MachO] Add out-of-bounds check to MachOObjectFile.cpp 2018-06-04 17:01:20 +00:00
ObjectYAML [MC] Add assembler support for .cg_profile. 2018-06-02 16:33:01 +00:00
Option Re-revert "[Option] Fix PR37006 prefix choice in findNearest" 2018-05-19 16:21:01 +00:00
Passes [PM/LoopUnswitch] When using the new SimpleLoopUnswitch pass, schedule 2018-05-30 02:46:45 +00:00
ProfileData [NFC] Change sample profile format enum name SPF_Raw_Binary to SPF_Binary. 2018-06-12 05:53:49 +00:00
Support Fix namespaces. No functionality change. 2018-06-16 13:37:52 +00:00
TableGen TableGen: Allow foreach in multiclass to depend on template args 2018-06-21 13:35:44 +00:00
Target AMDGPU: Turn D16 for MIMG instructions into a regular operand 2018-06-21 13:36:01 +00:00
Testing [LLVMTestingSupport] Add explicit linkage to LLVMSupport 2018-04-08 06:49:17 +00:00
ToolDrivers [COFF] Improve correctness of def parsing for GNU features 2018-05-09 09:21:53 +00:00
Transforms Recommit r333268: [IPSCCP] Use PredicateInfo to propagate facts from cmp instructions. 2018-06-21 07:15:08 +00:00
WindowsManifest Convert line endings of lib/WindowsManifest/CMakeLists.txt to unix. 2018-04-07 04:28:08 +00:00
XRay [XRay] clarify error messages when parsing broken traces 2018-01-30 13:41:34 +00:00
CMakeLists.txt
LLVMBuild.txt