summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/R600/InstPrinter/AMDGPUInstPrinter.h
Commit message (Collapse)AuthorAgeFilesLines
* R600 -> AMDGPU renameTom Stellard2015-06-131-88/+0
| | | | llvm-svn: 239657
* R600/SI: Initial support for assembler and inline assemblyTom Stellard2015-04-081-0/+2
| | | | | | | | | | | | | This is currently considered experimental, but most of the more commonly used instructions should work. So far only SI has been extensively tested, CI and VI probably work too, but may be buggy. The current set of tests cases do not give complete coverage, but I think it is sufficient for an experimental assembler. See the documentation in R600Usage for more information. llvm-svn: 234381
* [MCInstPrinter] Enable MCInstPrinter to change its behavior based on theAkira Hatanaka2015-03-271-1/+2
| | | | | | | | | | | | | | | | | | | | per-function subtarget. Currently, code-gen passes the default or generic subtarget to the constructors of MCInstPrinter subclasses (see LLVMTargetMachine::addPassesToEmitFile), which enables some targets (AArch64, ARM, and X86) to change their instprinter's behavior based on the subtarget feature bits. Since the backend can now use different subtargets for each function, instprinter has to be changed to use the per-function subtarget rather than the default subtarget. This patch takes the first step towards enabling instprinter to change its behavior based on the per-function subtarget. It adds a bit "PassSubtarget" to AsmWriter which tells table-gen to pass a reference to MCSubtargetInfo to the various print methods table-gen auto-generates. I will follow up with changes to instprinters of AArch64, ARM, and X86. llvm-svn: 233411
* R600/SI: Remove _e32 and _e64 suffixes from mnemonicsTom Stellard2015-03-121-0/+1
| | | | | | | | Instead print them as part of the $dst operand. The AsmMatcher requires the 32-bit and 64-bit encodings have the same mnemonic in order to parse them correctly. llvm-svn: 232105
* R600/SI: Move gds operand to the end of operand listTom Stellard2015-03-091-0/+1
| | | | | | Also print it in the assembly string. llvm-svn: 231684
* R600/SI: Fix f64 inline immediatesMatt Arsenault2014-12-171-1/+2
| | | | llvm-svn: 224458
* R600/SI: Change how DS offsets are printedMatt Arsenault2014-10-101-0/+5
| | | | | | | Match SC by using offset/offset0/offset1 and printing in decimal. llvm-svn: 219537
* R600/SI: Fix printing of clamp and omodMatt Arsenault2014-09-301-0/+2
| | | | | | | | No tests for omod since nothing uses it yet, but this should get rid of the remaining annoying trailing zeros after some instructions. llvm-svn: 218692
* Canonicalize header guards into a common format.Benjamin Kramer2014-08-131-3/+3
| | | | | | | | | | Add header guards to files that were missing guards. Remove #endif comments as they don't seem common in LLVM (we can easily add them back if we decide they're useful) Changes made by clang-tidy with minor tweaks. llvm-svn: 215558
* R600/SI: Update MUBUF assembly string to match AMD proprietary compilerTom Stellard2014-08-051-0/+7
| | | | llvm-svn: 214866
* R600/SI: Prettier display of input modifiersVincent Lejeune2014-05-101-0/+1
| | | | llvm-svn: 208479
* [C++11] Add 'override' keywords and remove 'virtual'. Additionally add ↵Craig Topper2014-04-291-1/+1
| | | | | | 'final' and leave 'virtual' on some methods that are marked virtual without overriding anything and have no obvious overrides themselves. R600 edition llvm-svn: 207503
* R600/SI: Print more immediates in hex formatMatt Arsenault2014-04-151-0/+4
| | | | | | | | | Print in decimal for inline immediates, and hex otherwise. Use hex always for offsets in addressing offsets. This approximately matches what the shader compiler does. llvm-svn: 206335
* R600/SI: Cleanup parsing of register names.Matt Arsenault2014-04-151-3/+3
| | | | | | Try to figure out the class and number of subregisters. llvm-svn: 206334
* Make methods staticMatt Arsenault2014-03-171-23/+24
| | | | llvm-svn: 204085
* R600/SI: Add intrinsic for S_SENDMSG instructionMichel Danzer2014-01-271-0/+1
| | | | | Reviewed-by: Tom Stellard <thomas.stellard@amd.com> llvm-svn: 200195
* R600/SI: Change formatting of printed registers.Matt Arsenault2013-11-121-0/+1
| | | | | | | | | | | | | | | | | | | | | | | Print the range of registers used with a single letter prefix. This better matches what the shader compiler produces and is overall less obnoxious than concatenating all of the subregister names together. Instead of SGPR0, it will print s0. Instead of SGPR0_SGPR1, it will print s[0:1] and so on. There doesn't appear to be a straightforward way to get the actual register info in the InstPrinter, so this parses the generated name to print with the new syntax. The required test changes are pretty nasty, and register matching regexes are now worse. Since there isn't a way to add to a variable in FileCheck, some of the tests now don't check the exact number of registers used, but I don't think that will be a real problem. llvm-svn: 194443
* R600: improve dump of S_WAITCNTVincent Lejeune2013-10-131-0/+1
| | | | llvm-svn: 192557
* R600: Improve texture handlingVincent Lejeune2013-05-171-0/+2
| | | | llvm-svn: 182125
* R600: Improve asmPrint of ALU clauseVincent Lejeune2013-05-021-0/+1
| | | | llvm-svn: 180957
* R600: Prettier asmPrint of AluVincent Lejeune2013-05-021-1/+3
| | | | llvm-svn: 180956
* R600/SI: Fix int_SI_fs_interp_constantMichel Danzer2013-02-141-0/+1
| | | | | | | | | | | | | | | | The important fix is that the constant interpolation value is stored in the parameter slot P0, which is encoded as 2. In addition, drop the SI_INTERP_CONST pseudo instruction, pass the parameter slot as an operand to V_INTERP_MOV_F32 instead of hardcoding it there, and add a special operand class for the parameter slots for type checking and pretty printing. NOTE: This is a candidate for the Mesa stable branch. Reviewed-by: Christian König <christian.koenig@amd.com> Reviewed-by: Tom Stellard <thomas.stellard@amd.com> llvm-svn: 175193
* R600: rework handling of the constantsTom Stellard2013-01-231-0/+1
| | | | | | | | | | | | | | | | | | | | Remove Cxxx registers, add new special register - "ALU_CONST" and new operand for each alu src - "sel". ALU_CONST is used to designate that the new operand contains the value to override src.sel, src.kc_bank, src.chan for constants in the driver. Patch by: Vadim Girlin Vincent Lejeune: - Use pointers for constants - Fold CONST_ADDRESS when possible Tom Stellard: - Give CONSTANT_BUFFER_0 its own address space - Use integer types for constant loads Reviewed-by: Tom Stellard <thomas.stellard@amd.com> llvm-svn: 173222
* Add R600 backendTom Stellard2012-12-111-0/+52
A new backend supporting AMD GPUs: Radeon HD2XXX - HD7XXX llvm-svn: 169915
OpenPOWER on IntegriCloud