| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 209460
|
|
|
|
| |
llvm-svn: 209459
|
|
|
|
| |
llvm-svn: 209456
|
|
|
|
| |
llvm-svn: 209333
|
|
|
|
|
|
|
| |
This should extend the current workaround to work with structs
that only contain legal, scalar types.
llvm-svn: 209331
|
|
|
|
| |
llvm-svn: 209310
|
|
|
|
| |
llvm-svn: 208922
|
|
|
|
|
|
| |
inappropriate since it lost its Mask parameter in r154011.
llvm-svn: 208811
|
|
|
|
| |
llvm-svn: 208604
|
|
|
|
| |
llvm-svn: 208510
|
|
|
|
| |
llvm-svn: 208430
|
|
|
|
| |
llvm-svn: 208429
|
|
|
|
| |
llvm-svn: 208344
|
|
|
|
| |
llvm-svn: 208005
|
|
|
|
|
|
|
|
| |
v2: move code to AMDGPUISelLowering.cpp
squash with tests (both EG and SI)
Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
llvm-svn: 207845
|
|
|
|
| |
llvm-svn: 207844
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is a squash of several optimization commits:
- calculate DIV_Lo and DIV_Hi separately
- use BFE_U32 if we are operating on 32bit values
- use precomputed constants instead of shifting in UDVIREM
- skip the first 32 iterations of udivrem
v2: Check whether BFE is supported before using it
Patch by: Jan Vesely
Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
llvm-svn: 207589
|
|
|
|
|
|
|
|
|
|
| |
Initial implementation, rather slow
Patch by: Jan Vesely
Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
llvm-svn: 207588
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When legalizing ops, with UDIV/UREM set to expand, they automatically
expand to UDIVREM (if legal or custom).
We need to do this manually for legalize types.
v2:
SI should be set to Expand because the type is legal, and it is
automatically lowered to UDIVREM if UDIVREM is Legal/Custom
R600 should set to UDIV/UREM to Custom because it needs to lower them
during type legalization
Patch by: Jan Vesely
Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
llvm-svn: 207587
|
|
|
|
|
|
|
|
| |
Patch by: Jan Vesely
Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
llvm-svn: 207586
|
|
|
|
| |
llvm-svn: 207397
|
|
|
|
| |
llvm-svn: 207374
|
|
|
|
| |
llvm-svn: 207327
|
|
|
|
|
|
|
|
| |
v2: Check both ExternalSymbol and GlobalAddress
Patch by: Jan Vesely <jan.vesely@rutgers.edu>
llvm-svn: 207282
|
|
|
|
| |
llvm-svn: 207197
|
|
|
|
| |
llvm-svn: 206904
|
|
|
|
|
|
|
| |
Don't introduce new operations on an illegal sub 32-bit type.
Do the operations on a 32-bit value, and then use a truncating store.
llvm-svn: 206864
|
|
|
|
|
|
| |
Don't know why I didn't just do this in the first place.
llvm-svn: 206862
|
|
|
|
| |
llvm-svn: 206501
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Setting vector types to expand will result in scalarization on pre SI hw,
as those gpus don't have vector shifts either.
Expand also i32 vectors, this helps llvm make the correct decision
about scalarizing the vector ops.
v2: move setOperation() calls to R600ISelLowering.cpp.
cleanup the SI code to make it obvious that this patch does is nop for SI
Patch by: Jan Vesely <jan.vesely@rutgers.edu>
llvm-svn: 206348
|
|
|
|
| |
llvm-svn: 206330
|
|
|
|
|
|
| |
its own tree containing FixedStackPseudoSourceValue (which you can use isa/dyn_cast on) and MipsCallEntry (which you can't). Anything that needs to use either a PseudoSourceValue* and Value* is strongly encouraged to use a MachinePointerInfo instead.
llvm-svn: 206255
|
|
|
|
|
|
|
| |
This seems generally useful, and makes sense to
go along with SplitVector.
llvm-svn: 206041
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|