| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
| |
v2: Add separate offset/no-offset tests
Signed-off-by: Aaron Watry <awatry@gmail.com>
Reviewed-by: Matt Arsenault <matthew.arsenault@amd.com>
llvm-svn: 220110
|
|
|
|
|
|
|
|
| |
v2: Add separate offset/no-offset tests
Signed-off-by: Aaron Watry <awatry@gmail.com>
Reviewed-by: Matt Arsenault <matthew.arsenault@amd.com>
llvm-svn: 220109
|
|
|
|
|
|
|
|
| |
v2: Add separate offset/no-offset tests
Signed-off-by: Aaron Watry <awatry@gmail.com>
Reviewed-by: Matt Arsenault <matthew.arsenault@amd.com>
llvm-svn: 220108
|
|
|
|
|
|
|
|
| |
v2: Add separate offset/no-offset tests
Signed-off-by: Aaron Watry <awatry@gmail.com>
Reviewed-by: Matt Arsenault <matthew.arsenault@amd.com>
llvm-svn: 220107
|
|
|
|
|
|
|
|
| |
v2: Add separate offset/no-offset tests
Signed-off-by: Aaron Watry <awatry@gmail.com>
Reviewed-by: Matt Arsenault <matthew.arsenault@amd.com>
llvm-svn: 220106
|
|
|
|
|
|
|
|
| |
v2: Add separate offset/no-offset tests
Signed-off-by: Aaron Watry <awatry@gmail.com>
Reviewed-by: Matt Arsenault <matthew.arsenault@amd.com>
llvm-svn: 220105
|
|
|
|
|
|
|
|
| |
v2: Add separate offset/no-offset tests
Signed-off-by: Aaron Watry <awatry@gmail.com>
Reviewed-by: Matt Arsenault <matthew.arsenault@amd.com>
llvm-svn: 220104
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The previous tests claimed to test constant offsets in the function name,
but the tests weren't actually testing them.
Clone the tests, and do testing of all combinations of the following:
1) with/without constant pointer offset
2) 32/64-bit addressing modes
3) Usage and non-usage of the return value from the atomicrmw
Reviewed-by: Matt Arsenault <matthew.arsenault@amd.com>
llvm-svn: 220103
|
|
|
|
|
|
|
|
| |
The function name now matches what it's actually testing.
Signed-off-by: Aaron Watry <awatry@gmail.com>
Reviewed-by: Matt Arsenault <matthew.arsenault@amd.com>
llvm-svn: 220102
|
|
|
|
| |
llvm-svn: 220066
|
|
|
|
| |
llvm-svn: 220062
|
|
|
|
|
|
|
| |
Just use REG_SEQUENCE directly, so there are fewer
instructions to need to deal with later.
llvm-svn: 220056
|
|
|
|
|
|
| |
Reviewed-by: Tom Stellard <tom@stellard.net>
Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
llvm-svn: 220045
|
|
|
|
|
|
|
|
|
|
| |
v2: use dyn_cast
fixup comments
v3: use cast
Reviewed-by: Matt Arsenault <arsenm2@gmail.com>
Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
llvm-svn: 220044
|
|
|
|
|
|
| |
This was resulting in invalid simplifications of sdiv
llvm-svn: 219953
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The SelectDS1Addr1Offset complex pattern always tries to store constant
lds pointers in the offset operand and store a zero value in the addr operand.
Since the addr operand does not accept immediates, the zero value
needs to first be copied to a register.
This newly created zero value will not go through normal instruction
selection, so we need to manually insert a V_MOV_B32_e32 in the complex
pattern.
This bug was hidden by the fact that if there was another zero value
in the DAG that had not been selected yet, then the CSE done by the DAG
would use the unselected node for the addr operand rather than the one
that was just created. This would lead to the zero value being selected
and the DAG automatically inserting a V_MOV_B32_e32 instruction.
llvm-svn: 219848
|
|
|
|
| |
llvm-svn: 219823
|
|
|
|
|
|
| |
SimplifyDemandedBits would break the other uses of the operand.
llvm-svn: 219819
|
|
|
|
|
|
|
|
|
| |
This effectively reverts revert 219707. After fixing the test to work with
new function name format and renamed intrinsic.
Reviewed-by: Tom Stellard <tom@stellard.net>
Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
llvm-svn: 219710
|
|
|
|
|
|
|
|
| |
This reverts commit r219705.
CodeGen/R600/work-item-intrinsics.ll was failing on linux.
llvm-svn: 219707
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
v2: Add SI lowering
Add test
v3: Place work dimensions after the kernel arguments.
v4: Calculate offset while lowering arguments
v5: rebase
v6: change prefix to AMDGPU
Reviewed-by: Tom Stellard <tom@stellard.net>
Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
llvm-svn: 219705
|
|
|
|
|
|
|
|
| |
Use 0 as the base address for a constant address, so if
we have a constant address we can save moves and form
read2/write2s.
llvm-svn: 219698
|
|
|
|
| |
llvm-svn: 219581
|
|
|
|
|
|
|
| |
Match SC by using offset/offset0/offset1 and printing
in decimal.
llvm-svn: 219537
|
|
|
|
| |
llvm-svn: 219536
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently this only functions to match simple cases
where ds_read2_* / ds_write2_* instructions can be used.
In the future it might match some of the other weird
load patterns, such as direct to LDS loads.
Currently enabled only with a subtarget feature to enable
easier testing.
llvm-svn: 219533
|
|
|
|
|
|
|
| |
The instruction emitter will crash if it encounters a CopyToReg
node with a non-register operand like FrameIndex.
llvm-svn: 219428
|
|
|
|
|
|
|
|
| |
LLVM assumes INSERT_SUBREG will always have register operands, so
we need to legalize non-register operands, like FrameIndexes, to
avoid random assertion failures.
llvm-svn: 219420
|
|
|
|
|
|
|
| |
Added a FIXME coment instead, we need to handle the case where the
two DS instructions being compared have different numbers of operands.
llvm-svn: 219236
|
|
|
|
| |
llvm-svn: 219038
|
|
|
|
| |
llvm-svn: 219037
|
|
|
|
|
|
| |
Re-add the tests since they were deleted at some point
llvm-svn: 219036
|
|
|
|
| |
llvm-svn: 219002
|
|
|
|
|
|
| |
table
llvm-svn: 218776
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 218655
|
|
|
|
| |
llvm-svn: 218609
|
|
|
|
|
|
|
|
|
| |
These turn into fadds, so combine them into the target
mad node.
fadd (fadd (a, a), b) -> mad 2.0, a, b
llvm-svn: 218608
|
|
|
|
|
|
|
|
|
| |
This has weird operand requirements so it's worthwhile
to have very strict checks for its operands.
Add different combinations of SGPR operands.
llvm-svn: 218535
|
|
|
|
|
|
|
|
|
|
|
| |
Instead of moving the first SGPR that is different than the first,
legalize the operand that requires the fewest moves if one
SGPR is used for multiple operands.
This saves extra moves and is also required for some instructions
which require that the same operand be used for multiple operands.
llvm-svn: 218532
|
|
|
|
|
|
|
|
|
| |
Disable the SGPR usage restriction parts of the DAG legalizeOperands.
It now should only be doing immediate folding until it can be replaced
later. The real legalization work is now done by the other
SIInstrInfo::legalizeOperands
llvm-svn: 218531
|
|
|
|
|
|
|
|
| |
e.g. v_cndmask_b32 requires the condition operand be an SGPR.
If one of the source operands were an SGPR, that would be considered
the one SGPR use and the condition operand would be illegally moved.
llvm-svn: 218529
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
No test since the current SIISelLowering::legalizeOperands
effectively hides this, and the general uses seem to only fire
on SALU instructions which don't have modifiers between
the operands.
When trying to use legalizeOperands immediately after
instruction selection, it now sees a lot more patterns
it did not see before which break on this.
llvm-svn: 218527
|
|
|
|
| |
llvm-svn: 218487
|
|
|
|
| |
llvm-svn: 218486
|
|
|
|
| |
llvm-svn: 218474
|
|
|
|
| |
llvm-svn: 218473
|
|
|
|
| |
llvm-svn: 218457
|
|
|
|
|
|
| |
This prevents these from failing in a future commit.
llvm-svn: 218356
|
|
|
|
|
|
| |
We can do this now that the FixSGPRLiveRanges pass is working.
llvm-svn: 218353
|