| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Moving these patterns from TableGen files to PerformDAGCombine()
should allow us to generate better code by eliminating unnecessary
shifts and extensions earlier.
This also fixes a bug where the MAD pattern was calling
SimplifyDemandedBits with a 24-bit mask on the first operand
even when the full pattern wasn't being matched. This occasionally
resulted in some instructions being incorrectly deleted from the
program.
v2:
- Fix bug with 64-bit mul
llvm-svn: 205731
|
|
|
|
| |
llvm-svn: 205722
|
|
|
|
| |
llvm-svn: 205242
|
|
|
|
| |
llvm-svn: 205236
|
|
|
|
| |
llvm-svn: 205235
|
|
|
|
|
|
|
| |
This allows 64-bit operations that are truncated to be reduced
to 32-bit ones.
llvm-svn: 204946
|
|
|
|
| |
llvm-svn: 204945
|
|
|
|
|
|
| |
This sext_inreg i32 in i64 case was already handled, but not enabled.
llvm-svn: 204840
|
|
|
|
|
|
|
|
| |
Remove handling of select_cc, since it makes no sense to be there. This
now does nothing, but I'll be adding some handling of other target nodes
soon.
llvm-svn: 204743
|
|
|
|
| |
llvm-svn: 204658
|
|
|
|
| |
llvm-svn: 204072
|
|
|
|
|
|
| |
Private pointers are now always 32-bits.
llvm-svn: 203989
|
|
|
|
|
|
|
| |
Use sign_extend_inreg and getZeroExtendInReg instead of
using the bit operations they expand into.
llvm-svn: 203988
|
|
|
|
| |
llvm-svn: 203695
|
|
|
|
| |
llvm-svn: 203527
|
|
|
|
| |
llvm-svn: 203516
|
|
|
|
|
|
|
| |
This appears to only be working for global loads. Private
and local break for other reasons.
llvm-svn: 203135
|
|
|
|
| |
llvm-svn: 203134
|
|
|
|
| |
llvm-svn: 203013
|
|
|
|
|
|
|
| |
Does not yet include larger part required
to match v_mad_i64_i32 / v_mad_u64_u32.
llvm-svn: 202077
|
|
|
|
| |
llvm-svn: 202075
|
|
|
|
| |
llvm-svn: 201371
|
|
|
|
| |
llvm-svn: 201222
|
|
|
|
|
|
|
| |
Truncation is just accessing a subregister for any multiple of
the register size, so it's free.
llvm-svn: 201107
|
|
|
|
|
|
|
|
|
|
|
| |
This fixes a crashes in the OpenCV test suite and also the scrypt
kernel in bfgminer.
I was unable to come up with a reduced test case for this.
https://bugs.freedesktop.org/show_bug.cgi?id=72785
llvm-svn: 200776
|
|
|
|
|
|
|
|
|
|
|
| |
The OpenCL specs say: "The vector versions of the math functions operate
component-wise. The description is per-component."
Patch by: Jan Vesely
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
llvm-svn: 200773
|
|
|
|
| |
llvm-svn: 199825
|
|
|
|
| |
llvm-svn: 199823
|
|
|
|
|
|
|
|
|
|
|
| |
v2: Add ftrunc->TRUNC pattern instead of replacing int_AMDGPU_trunc
v3: move ftrunc pattern next to TRUNC definition, it's available since R600
Patch By: Jan Vesely
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
llvm-svn: 197783
|
|
|
|
| |
llvm-svn: 197327
|
|
|
|
| |
llvm-svn: 196971
|
|
|
|
|
| |
NOTE: This is a candidate for the 3.4 branch.
llvm-svn: 195881
|
|
|
|
|
| |
NOTE: This is a candidate for the 3.4 branch.
llvm-svn: 195878
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is to avoid this transformation in some cases:
fold (conv (load x)) -> (load (conv*)x)
On architectures that don't natively support some vector
loads efficiently casting the load to a smaller vector of
larger types and loading is more efficient.
Patch by Micah Villmow.
llvm-svn: 194783
|
|
|
|
|
|
|
| |
Private address space is emulated using the register file with
MOVRELS and MOVRELD instructions.
llvm-svn: 194626
|
|
|
|
| |
llvm-svn: 194153
|
|
|
|
| |
llvm-svn: 193701
|
|
|
|
| |
llvm-svn: 193620
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For _XYZ, the type of VDATA is v4i32, because v3i32 doesn't exist.
The ADDR64 bit is not exposed. A simpler intrinsic that doesn't take
a resource descriptor might be nicer.
The maximum number of input SGPRs is bumped to 17.
Signed-off-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
llvm-svn: 190575
|
|
|
|
|
|
|
| |
GlobalAdderss nodes that appeared in more than one basic block were
being counted twice.
llvm-svn: 190078
|
|
|
|
| |
llvm-svn: 189226
|
|
|
|
| |
llvm-svn: 189223
|
|
|
|
| |
llvm-svn: 189222
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This adds minimal support to the SelectionDAG for handling address spaces
with different pointer sizes. The SelectionDAG should now correctly
lower pointer function arguments to the correct size as well as generate
the correct code when lowering getelementptr.
This patch also updates the R600 DataLayout to use 32-bit pointers for
the local address space.
v2:
- Add more helper functions to TargetLoweringBase
- Use CHECK-LABEL for tests
llvm-svn: 189221
|
|
|
|
|
|
| |
Spotted by Bill Wendling.
llvm-svn: 188942
|
|
|
|
|
| |
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
llvm-svn: 188598
|
|
|
|
|
| |
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
llvm-svn: 188597
|
|
|
|
|
| |
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
llvm-svn: 188596
|
|
|
|
|
| |
Tested-by: Aaron Watry <awatry@gmail.com>
llvm-svn: 188521
|