Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | radeon/llvm: Add instruction defs for branches on SI | Tom Stellard | 2012-07-27 | 3 | -17/+126 |
| | |||||
* | radeon/llvm: Fix VOPC and V_CNDMASK encoding | Tom Stellard | 2012-07-27 | 4 | -10/+13 |
| | |||||
* | radeon/llvm: Assert if we try to copy SCC reg | Tom Stellard | 2012-07-27 | 1 | -0/+6 |
| | |||||
* | radeon/llvm: Add SI DAG optimizations for setcc, select_cc | Tom Stellard | 2012-07-27 | 2 | -0/+54 |
| | | | | | These are needed for correctly lowering branch instructions in some cases. | ||||
* | radeon/llvm: Add support for encoding SI branch instructions | Tom Stellard | 2012-07-27 | 1 | -15/+35 |
| | |||||
* | radeon/llvm: Add special nodes for SALU operations on VCC | Tom Stellard | 2012-07-27 | 6 | -1/+89 |
| | | | | | | | The VCC register is tricky because the SALU views it as 64-bit, but the VALU views it as 1-bit. In order to deal with this we've added some special bitcast and binary operations to help convert from the 64-bit SALU view to the 1-bit VALU view and vice versa. | ||||
* | radeon/llvm: Add i1 registers for SI. | Tom Stellard | 2012-07-27 | 1 | -0/+2 |
| | |||||
* | radeon/llvm: Fix CCReg definitions on SI | Tom Stellard | 2012-07-27 | 2 | -3/+10 |
| | |||||
* | radeon/llvm: Add bitconvert patterns for SI | Tom Stellard | 2012-07-27 | 1 | -0/+6 |
| | |||||
* | radeon/llvm: Add custom lowering for SELECT_CC nodes on SI | Tom Stellard | 2012-07-27 | 2 | -0/+20 |
| | |||||
* | radeon/llvm: Move conditional pattern leafs to common tablegen file | Tom Stellard | 2012-07-27 | 2 | -41/+41 |
| | |||||
* | radeon/llvm: Implement getSetCCResultType for SI | Tom Stellard | 2012-07-27 | 2 | -0/+6 |
| | |||||
* | radeon/llvm: Custom lower BR_CC for SI | Tom Stellard | 2012-07-27 | 2 | -0/+41 |
| | |||||
* | radeon/llvm: Move lowering of BR_CC node to R600ISelLowering | Tom Stellard | 2012-07-27 | 4 | -31/+31 |
| | | | | | SI will handle BR_CC different from R600, so we need to move it out of the shared instruction selector. | ||||
* | radeon/llvm: Move lowering of SETCC node to R600ISelLowering | Tom Stellard | 2012-07-27 | 4 | -38/+29 |
| | | | | | SI will handle SETCC different from R600, so we need to move it out of the shared instruction selector. | ||||
* | radeon/llvm: Use correct node type when lowering SETCC | Tom Stellard | 2012-07-27 | 1 | -0/+1 |
| | |||||
* | radeon/llvm: Move LowerSELECT_CC into R600ISelLowering | Tom Stellard | 2012-07-27 | 4 | -111/+112 |
| | | | | | SI will handle SELECT_CC different from R600, so we need to move it out of the shared instruction selector. | ||||
* | radeon/llvm: Fix a bug with IF LOGICALNZ with int operand | Vincent Lejeune | 2012-07-23 | 2 | -3/+5 |
| | | | | Signed-off-by: Tom Stellard <[email protected]> | ||||
* | radeon/llvm: Fix CR/LF in AMDILSIDevice.h | Andreas Boll | 2012-07-13 | 1 | -1/+1 |
| | |||||
* | radeon/llvm: Clean up AMDILIntrinsicInfo.cpp | Tom Stellard | 2012-07-13 | 2 | -84/+5 |
| | |||||
* | radeon/llvm: Coding style fixes | Tom Stellard | 2012-07-13 | 2 | -409/+325 |
| | |||||
* | radeon/llvm: Don't use lp_build_swizzle_aos() for swizzles | Tom Stellard | 2012-07-12 | 1 | -8/+13 |
| | | | | | | | This function assumes that lp_build_context::type is a vector type, which is not true for r600 or radeonsi. This fixes an assertion failure using glamor 2D accel. | ||||
* | radeon/llvm: Use multiclasses for floating point loads | Tom Stellard | 2012-07-11 | 7 | -50/+46 |
| | | | | | | | The original strategy for handling floating point loads, which was to lower (f32 load) to (f32 bitcast (i32 load)) wasn't really working. The main problem was that the DAG legalizer couldn't handle replacing a node with two results (load) with a node with only one result (bitcast). | ||||
* | radeon/llvm: Don't set the IMM bit in SMRD instruction definitions. | Tom Stellard | 2012-07-11 | 1 | -7/+2 |
| | | | | The IMM bit is already being set in SICodeEmitter. | ||||
* | radeon/llvm: Rename namespace from AMDIL to AMDGPU | Tom Stellard | 2012-07-09 | 25 | -360/+361 |
| | |||||
* | radeon/llvm: Enable vec4 loads on R600 | Tom Stellard | 2012-06-29 | 3 | -0/+20 |
| | |||||
* | radeon/llvm: Enable floating point stores on R600 | Tom Stellard | 2012-06-29 | 1 | -0/+6 |
| | |||||
* | radeon/llvm: Handle floating point loads on R600 | Tom Stellard | 2012-06-29 | 2 | -0/+31 |
| | |||||
* | radeon/llvm: Expand UDIV and UREM nodes | Tom Stellard | 2012-06-29 | 1 | -4/+3 |
| | |||||
* | radeon/llvm: Emit raw ISA for vertex fetch instructions | Tom Stellard | 2012-06-29 | 2 | -61/+99 |
| | |||||
* | radeon/llvm: Turn on the BitExtract peephole optimization | Tom Stellard | 2012-06-21 | 2 | -5/+32 |
| | | | | | Thie BitExtract optimization folds a mask and shift operation together into a single instruction (BFE_UINT). | ||||
* | radeon/llvm: Lower ROTL to BIT_ALIGN | Tom Stellard | 2012-06-21 | 6 | -1/+54 |
| | |||||
* | radeon/llvm: Use the VLIW Scheduler for R600->NI | Tom Stellard | 2012-06-21 | 12 | -8/+75 |
| | | | | | | | | | | | | | | | | | | | It's not optimal, but it's better than the register pressure scheduler that was previously being used. The VLIW scheduler currently ignores all the complicated instruction groups restrictions and just tries to fill the instruction groups with as many instructions as possible. Though, it does know enough not to put two trans only instructions in the same group. We are able to ignore the instruction group restrictions in the LLVM backend, because the finalizer in r600_asm.c will fix any illegal instruction groups the backend generates. Enabling the VLIW scheduler improved the run time for a sha1 compute shader by about 50%. I'm not sure what the impact will be for graphics shaders. I tested Lightsmark with the VLIW scheduler enabled and the framerate was about the same, but it might help apps that use really big shaders. | ||||
* | radeon/llvm: Fix CR/LF in Processors.td | Török Edwin | 2012-06-19 | 1 | -17/+17 |
| | | | | Signed-off-by: Tom Stellard <[email protected]> | ||||
* | radeon/llvm: Fix sin/cos codegen on R700 | Török Edwin | 2012-06-19 | 1 | -19/+24 |
| | | | | | | | | | | Based on https://bugs.freedesktop.org/show_bug.cgi?id=50317#c4 Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=50316 https://bugs.freedesktop.org/show_bug.cgi?id=50317 Signed-off-by: Tom Stellard <[email protected]> | ||||
* | radeon/llvm: Update comment in AMDGPU.td | Tom Stellard | 2012-06-18 | 1 | -2/+3 |
| | |||||
* | radeon/llvm: Remove unused AMDIL TableGen definitons | Tom Stellard | 2012-06-18 | 18 | -6140/+26 |
| | |||||
* | radeon/llvm: Eliminate getRegClassFromType() function | Tom Stellard | 2012-06-18 | 1 | -42/+1 |
| | | | | We can use TargetLowering::getRegClassFor() instead. | ||||
* | radeon/llvm: Remove deadcode from AMDILISelLowering.cpp | Tom Stellard | 2012-06-18 | 4 | -1687/+0 |
| | |||||
* | radeonsi: Handle SUB_f32. | Thomas Stellard | 2012-06-12 | 2 | -2/+3 |
| | | | | | Signed-off-by: Thomas Stellard <[email protected]> Signed-off-by: Michel Dänzer <[email protected]> | ||||
* | radeonsi: Only dump shaders with environment variable RADEON_DUMP_SHADERS=1. | Michel Dänzer | 2012-06-12 | 1 | -1/+5 |
| | |||||
* | automake: Globally add stub automake targets to the old Makefiles. | Eric Anholt | 2012-06-11 | 1 | -3/+0 |
| | | | | | | | | | I tried to update all the old Makefiles that included the default config to be sure they had a default target if they didn't previously have one, since this new all target will always point at it. Almost everything had one. Reviewed-by: Kenneth Graunke <[email protected]> | ||||
* | radeon/llvm: Emulate RECIP_UINT instruction on Cayman | Tom Stellard | 2012-06-06 | 2 | -4/+13 |
| | |||||
* | radeon/llvm: Remove some duplicate code in the R600 CodeEmitter | Tom Stellard | 2012-06-06 | 1 | -9/+3 |
| | |||||
* | radeon/llvm: Fix MULLO* instructions on Cayman | Tom Stellard | 2012-06-06 | 4 | -14/+53 |
| | | | | | On Cayman, the MULLO* instructions must fill all slots in an instruction group. | ||||
* | r600g: Compute support for Cayman | Tom Stellard | 2012-06-06 | 1 | -48/+44 |
| | |||||
* | radeon/llvm: Remove obselete hooks for the ConvertToISA pass | Tom Stellard | 2012-06-06 | 6 | -87/+1 |
| | | | | | | We can't remove this pass yet, because we need it to convert AMDIL registers in BRANCH* instructions, but we don't need it for instruction conversion any more. | ||||
* | radeon/llvm: Remove AMDIL MOVE* instructions | Tom Stellard | 2012-06-06 | 5 | -20/+2 |
| | |||||
* | radeon/llvm: Add isMov() to AMDILInstrInfo | Tom Stellard | 2012-06-06 | 6 | -11/+34 |
| | | | | | This enables the CFGStructurizer to work without the AMDIL::MOV* instructions. | ||||
* | radeon/llvm: Remove deadcode from the AMDILISelLowering class | Tom Stellard | 2012-06-06 | 2 | -203/+0 |
| |