| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
Divides by weird constants now emit much better code.
llvm-svn: 210995
|
|
|
|
|
|
|
|
|
|
|
| |
This would assert if a constant address space was extern
and therefore didn't have an initializer. If the initializer
was undef, it would hit the unreachable unhandled initializer case.
An extern global should never really occur since we don't have
machine linking, but bugpoint likes to remove initializers.
llvm-svn: 210967
|
|
|
|
| |
llvm-svn: 210966
|
|
|
|
|
|
|
|
|
|
|
|
| |
Move / delete some of the more obviously wrong
setOperationAction calls. Most of these are setting Expand
for types that aren't legal which is the default anyway.
Leave stuff that might require more thought on whether it's
junk or not as it is.
No functionality change.
llvm-svn: 210922
|
|
|
|
|
|
| |
Evergreen is still broken due to missing shl_parts.
llvm-svn: 210885
|
|
|
|
|
|
|
|
|
| |
Delete all unused ones, and add new AMDGPU named intrinsics for
the ones that are. Handle the old AMDIL names for comptability (although
remove their GCCBuiltin names) and add tests since there weren't any
for these before.
llvm-svn: 210827
|
|
|
|
|
|
|
| |
This eliminates extra extract instructions when loading an i8 vector to
a float vector.
llvm-svn: 210666
|
|
|
|
| |
llvm-svn: 210636
|
|
|
|
| |
llvm-svn: 210628
|
|
|
|
|
|
|
| |
Extract these from some of my other patches, since this
is the only thing really making them dependent on each other.
llvm-svn: 210627
|
|
|
|
| |
llvm-svn: 210569
|
|
|
|
| |
llvm-svn: 210567
|
|
|
|
| |
llvm-svn: 210564
|
|
|
|
| |
llvm-svn: 210475
|
|
|
|
| |
llvm-svn: 209988
|
|
|
|
|
|
|
| |
This allows existing DAG combines to work on them, and then
we can re-match to BFE if necessary during instruction selection.
llvm-svn: 209462
|
|
|
|
| |
llvm-svn: 209461
|
|
|
|
| |
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
|