summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/R600
Commit message (Collapse)AuthorAgeFilesLines
...
* R600: Reenable llvm.R600.load.input/interp.input for compatibilityVincent Lejeune2013-11-122-0/+47
| | | | llvm-svn: 194484
* R600/SI: Change formatting of printed registers.Matt Arsenault2013-11-122-2/+64
| | | | | | | | | | | | | | | | | | | | | | | 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: Use function inputs to represent data stored in gprVincent Lejeune2013-11-114-41/+39
| | | | llvm-svn: 194425
* Make method staticMatt Arsenault2013-11-102-2/+2
| | | | llvm-svn: 194340
* Fix missing C++ mode commentMatt Arsenault2013-11-101-1/+1
| | | | llvm-svn: 194339
* R600: Fix LowerUDIVREMVincent Lejeune2013-11-061-5/+5
| | | | llvm-svn: 194153
* Use isa<> instead of dyn_cast<> with unused valueMatt Arsenault2013-11-011-3/+3
| | | | llvm-svn: 193869
* Remove another unused flag.Rafael Espindola2013-10-311-1/+0
| | | | llvm-svn: 193756
* Remove unused flag.Rafael Espindola2013-10-311-1/+0
| | | | llvm-svn: 193752
* Fix a few typosMatt Arsenault2013-10-301-7/+7
| | | | llvm-svn: 193723
* R600: Custom lower f32 = uint_to_fp i64Tom Stellard2013-10-302-0/+23
| | | | llvm-svn: 193701
* Removing a switch statement that contains only a default label. This ↵Aaron Ballman2013-10-291-28/+25
| | | | | | resolves an MSVC warning. No functional change intended. llvm-svn: 193649
* R600/SI: Add compute support for CI v2Tom Stellard2013-10-296-9/+24
| | | | | | | | v2: - Fix LDS size calculation Reviewed-by: Michel Dänzer <michel.daenzer@amd.com> llvm-svn: 193621
* R600: Expand vector FSQRT opsTom Stellard2013-10-291-0/+1
| | | | llvm-svn: 193620
* Prune utf8 chars in comments.NAKAMURA Takumi2013-10-281-2/+2
| | | | llvm-svn: 193512
* Target/R600: Un-tab-ify.NAKAMURA Takumi2013-10-283-9/+9
| | | | llvm-svn: 193510
* R600/SI: Replace ffs(x) - 1 with countTrailingZeros(x)Tom Stellard2013-10-231-1/+1
| | | | | | ffs(x) broke the mingw buildbot. llvm-svn: 193225
* R600/SI: fix MIMG writemask adjustementTom Stellard2013-10-231-6/+21
| | | | | | | | | | | | This fixes piglit: - shaders/glsl-fs-texture2d-masked - shaders/glsl-fs-texture2d-masked-4 Patch by: Marek Olšák Signed-off-by: Marek Olšák <marek.olsak@amd.com> Reviewed-by: Tom Stellard <thomas.stellard@amd.com> llvm-svn: 193222
* R600: Fix handling of vector kernel argumentsTom Stellard2013-10-239-35/+131
| | | | | | | | | | The SelectionDAGBuilder was promoting vector kernel arguments to legal types, but this won't work for R600 and SI since kernel arguments are stored in memory and can't be promoted. In order to handle vector arguments correctly we need to look at the original types from the LLVM IR function. llvm-svn: 193215
* R600/SI: Add support for i64 bitwise orTom Stellard2013-10-231-0/+19
| | | | llvm-svn: 193213
* R600/SI: Use S_LOAD_DWORD instructions for v8i32 and v16i32Tom Stellard2013-10-233-2/+8
| | | | llvm-svn: 193212
* R600/SI: Don't assert on SCC usageMatt Arsenault2013-10-221-0/+2
| | | | llvm-svn: 193198
* R600/SI: Use llvm_unreachable() for an always false assertTom Stellard2013-10-221-2/+1
| | | | llvm-svn: 193183
* R600/SI: Fix warning on non-asserts buildTom Stellard2013-10-221-0/+1
| | | | llvm-svn: 193180
* R600: Simplify handling of private address spaceTom Stellard2013-10-2213-436/+95
| | | | | | | | | | | | | | | | | | The AMDGPUIndirectAddressing pass was previously responsible for lowering private loads and stores to indirect addressing instructions. However, this pass was buggy and way too complicated. The only advantage it had over the new simplified code was that it saved one instruction per direct write to private memory. This optimization likely has a minimal impact on performance, and we may be able to duplicate it using some other transformation. For the private address space, we now: 1. Lower private loads/store to Register(Load|Store) instructions 2. Reserve part of the register file as 'private memory' 3. After regalloc lower the Register(Load|Store) instructions to MOV instructions that use indirect addressing. llvm-svn: 193179
* R600: Remove unused InstrInfo::getMovImmInstr() functionTom Stellard2013-10-225-31/+0
| | | | llvm-svn: 193178
* R600: Remove \ at EOL from ascii art comments.Benjamin Kramer2013-10-181-4/+4
| | | | | | | Completely harmless, but GCC likes to warn about it even when the next line is a comment. llvm-svn: 192974
* R600: Fix a crash in the AMDILCFGStructurizerTom Stellard2013-10-161-2/+68
| | | | | | | | | | We were calling llvm_unreachable() when failing to optimize the branch into if case. However, it is still possible for us to structurize the CFG by duplicating blocks even if this optimization fails. Reviewed-by: Vincent Lejeune<vljn at ovi.com> llvm-svn: 192813
* R600: Remove some dead code from the AMDILCFGStructurizerTom Stellard2013-10-161-21/+4
| | | | | Reviewed-by: Vincent Lejeune<vljn at ovi.com> llvm-svn: 192812
* Fix typoMatt Arsenault2013-10-151-1/+1
| | | | llvm-svn: 192752
* Fix missing C++ mode thing in headerMatt Arsenault2013-10-151-1/+1
| | | | llvm-svn: 192751
* R600/SI: Remove some leftover MI dump callVincent Lejeune2013-10-152-2/+0
| | | | llvm-svn: 192743
* R600: improve dump of S_WAITCNTVincent Lejeune2013-10-133-1/+21
| | | | llvm-svn: 192557
* R600/SI: Add SinkingPass before ISelVincent Lejeune2013-10-131-0/+1
| | | | llvm-svn: 192556
* R600/SI: Support byval argumentsVincent Lejeune2013-10-132-2/+8
| | | | llvm-svn: 192555
* R600: Use masked read sel for texture instructionsVincent Lejeune2013-10-131-0/+5
| | | | llvm-svn: 192554
* R600: fix swizzle exportVincent Lejeune2013-10-131-5/+9
| | | | llvm-svn: 192553
* R600: Clear the VPM bit of export instructions.Vincent Lejeune2013-10-131-4/+4
| | | | | | | It makes apparently no change it to set this bit or not but the docs recommand to left it cleared. llvm-svn: 192552
* R600: Store disassembly in a special ELF section when feature +DumpCode is ↵Tom Stellard2013-10-123-14/+83
| | | | | | | | | enabled. Patch by: Jay Cornwall Reviewed-by: Tom Stellard <thomas.stellard@amd.com> llvm-svn: 192523
* Fix typoMatt Arsenault2013-10-111-1/+1
| | | | llvm-svn: 192499
* Fix typoMatt Arsenault2013-10-101-2/+2
| | | | llvm-svn: 192406
* R600: Fix trunc i64 to i32 on SIMatt Arsenault2013-10-101-0/+5
| | | | llvm-svn: 192375
* R600/SI: Implement SIInstrInfo::verifyInstruction() for VOP*Tom Stellard2013-10-105-4/+142
| | | | | | | The function is used by the machine verifier and checks that VOP* instructions have legal operands. llvm-svn: 192367
* R600/SI: Define a separate MIMG instruction for each possible output value typeTom Stellard2013-10-105-35/+90
| | | | | | | | | | | | | During instruction selection, we rewrite the destination register class for MIMG instructions based on their writemasks. This creates machine verifier errors since the new register class does not match the register class in the MIMG instruction definition. We can avoid this by defining different MIMG instructions for each possible destination type and then switching to the correct instruction when we change the register class. llvm-svn: 192365
* R600/SI: Mark the EXEC register as reservedTom Stellard2013-10-101-0/+1
| | | | | | | | This prevents the machine verifier from complaining about uses of an undefined physical register. Reviewed-by: Vincent Lejeune<vljn at ovi.com> llvm-svn: 192364
* R600: Use StructurizeCFGPass for non SI targetsTom Stellard2013-10-106-2/+18
| | | | | | | | | | | | | | StructurizeCFG pass allows to make complex cfg reducible ; it allows a lot of shader from shadertoy (which exhibits complex control flow constructs) to works correctly with respect to CFG handling (and allow us to detect potential bug in other part of the backend). We provide a cmd line argument to disable the pass for debug purpose. Patch by: Vincent Lejeune Reviewed-by: Tom Stellard <thomas.stellard@amd.com> llvm-svn: 192363
* Add a MCTargetStreamer interface.Rafael Espindola2013-10-081-1/+1
| | | | | | | | | | | | | This patch fixes an old FIXME by creating a MCTargetStreamer interface and moving the target specific functions for ARM, Mips and PPC to it. The ARM streamer is still declared in a common place because it is used from lib/CodeGen/ARMException.cpp, but the Mips and PPC are completely hidden in the corresponding Target directories. I will send an email to llvmdev with instructions on how to use this. llvm-svn: 192181
* R600: Add a ldptr intrinsic to support MSAA.Vincent Lejeune2013-10-023-1/+10
| | | | llvm-svn: 191838
* R600: add a pass that merges clauses.Vincent Lejeune2013-10-017-2/+232
| | | | llvm-svn: 191790
* R600: Put PRED_X instruction in its own clauseVincent Lejeune2013-10-011-0/+8
| | | | llvm-svn: 191789
OpenPOWER on IntegriCloud