| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 191788
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For targets that have instruction itineraries this means no change. Targets
that move over to the new schedule model will use be able the new schedule
module for instruction latencies in the if-converter (the logic is such that if
there is no itineary we will use the new sched model for the latencies).
Before, we queried "TTI->getInstructionLatency()" for the instruction latency
and the extra prediction cost. Now, we query the TargetSchedule abstraction for
the instruction latency and TargetInstrInfo for the extra predictation cost. The
TargetSchedule abstraction will internally call "TTI->getInstructionLatency" if
an itinerary exists, otherwise it will use the new schedule model.
ATTENTION: Out of tree targets!
(I will also send out an email later to LLVMDev)
This means, if your target implements
unsigned getInstrLatency(const InstrItineraryData *ItinData,
const MachineInstr *MI,
unsigned *PredCost);
and returns a value for "PredCost", you now also need to implement
unsigned getPredictationCost(const MachineInstr *MI);
(if your target uses the IfConversion.cpp pass)
radar://15077010
llvm-svn: 191671
|
|
|
|
| |
llvm-svn: 191611
|
|
|
|
|
|
|
|
| |
We were completely ignoring the unorder/ordered attributes of condition
codes and also incorrectly lowering seto and setuo.
Reviewed-by: Vincent Lejeune<vljn at ovi.com>
llvm-svn: 191603
|
|
|
|
|
|
|
|
|
|
|
| |
SelectionDAG will now attempt to inverse an illegal conditon in order to
find a legal one and if that doesn't work, it will attempt to swap the
operands using the inverted condition.
There are no new test cases for this, but a nubmer of the existing R600
tests hit this path.
llvm-svn: 191602
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is useful for targets like R600, which only support GT, GE, NE, and EQ
condition codes as it removes the need to handle unsupported condition
codes in target specific code.
There are no tests with this commit, but R600 has been updated to take
advantage of this new feature, so its existing selectcc tests are now
testing the swapped operands path.
llvm-svn: 191601
|
|
|
|
| |
llvm-svn: 191362
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, the DAGISel function WalkChainUsers was spotting that it
had entered already-selected territory by whether a node was a
MachineNode (amongst other things). Since it's fairly common practice
to insert MachineNodes during ISelLowering, this was not the correct
check.
Looking around, it seems that other nodes get their NodeId set to -1
upon selection, so this makes sure the same thing happens to all
MachineNodes and uses that characteristic to determine whether we
should stop looking for a loop during selection.
This should fix PR15840.
llvm-svn: 191165
|
|
|
|
|
|
|
|
|
|
|
| |
interface.
The global registry is used to allow command line override of the
scheduler selection, but does not work well as the normal selection
API. For example, the same LLVM process should be able to target
multiple targets or subtargets.
llvm-svn: 191071
|
|
|
|
| |
llvm-svn: 190645
|
|
|
|
| |
llvm-svn: 190644
|
|
|
|
|
|
|
| |
This move makes possible to correctly handle multiples instructions
from a single pattern.
llvm-svn: 190643
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This fixes some regressions in the piglit local memory store tests
introduced by recent commits which made the scheduler aware of the trans
slot.
It's not possible to test this using lit, because there is no way to
determine from the assembly dumps whether or not an instruction is in
the trans slot.
Even if this were possible, the test would be highly sensitive to
changes in the scheduler and might generate confusing false negatives.
Reviewed-by: Vincent Lejeune<vljn at ovi.com>
llvm-svn: 190574
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We used to generate the compact unwind encoding from the machine
instructions. However, this had the problem that if the user used `-save-temps'
or compiled their hand-written `.s' file (with CFI directives), we wouldn't
generate the compact unwind encoding.
Move the algorithm that generates the compact unwind encoding into the
MCAsmBackend. This way we can generate the encoding whether the code is from a
`.ll' or `.s' file.
<rdar://problem/13623355>
llvm-svn: 190290
|
|
|
|
|
|
| |
Signed-off-by: Aaron Watry <awatry@gmail.com>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
llvm-svn: 190200
|
|
|
|
| |
llvm-svn: 190110
|
|
|
|
| |
llvm-svn: 190091
|
|
|
|
| |
llvm-svn: 190080
|
|
|
|
| |
llvm-svn: 190079
|
|
|
|
|
|
|
| |
GlobalAdderss nodes that appeared in more than one basic block were
being counted twice.
llvm-svn: 190078
|
|
|
|
| |
llvm-svn: 190077
|
|
|
|
|
|
|
|
|
|
| |
This pass was segfaulting when it ran into a non-intrinsic function
call. Function calls are not supported, so now instead of segfaulting,
we will get an assertion failure with a nice error message.
I'm not sure how to test this using lit.
llvm-svn: 190076
|
|
|
|
| |
llvm-svn: 189981
|
|
|
|
| |
llvm-svn: 189980
|
|
|
|
| |
llvm-svn: 189979
|
|
|
|
| |
llvm-svn: 189912
|
|
|
|
|
|
|
|
|
|
| |
Iterator of std::vector may be implemented as a raw pointer. In
this case begin iterators are rvalues and cannot be incremented.
For example, this is the case with STDCXX implementation of vector.
Patch by Konstantin Tokarev <annulen@yandex.ru>.
llvm-svn: 189911
|
|
|
|
| |
llvm-svn: 189726
|
|
|
|
| |
llvm-svn: 189226
|
|
|
|
| |
llvm-svn: 189225
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
| |
This fixes a crash in Unigine Tropics.
https://bugs.freedesktop.org/show_bug.cgi?id=68389
llvm-svn: 189057
|
|
|
|
|
|
| |
Spotted by Bill Wendling.
llvm-svn: 188942
|
|
|
|
| |
llvm-svn: 188626
|
|
|
|
|
|
| |
Spotted by Nick Lewycky!
llvm-svn: 188599
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
Fixes two recent piglit regressions with radeonsi.
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
llvm-svn: 188559
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The logic in SIInsertWaits::getHwCounts() only really made sense for SMRD
instructions, and trying to shoehorn it into handling DS_WRITE_B32 caused
it to corrupt the encoding of that by clobbering the first operand with
the second one.
Undo that damage and only apply the SMRD logic to that.
Fixes some derivates related piglit regressions with radeonsi.
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
llvm-svn: 188558
|
|
|
|
| |
llvm-svn: 188555
|
|
|
|
|
|
|
| |
This reverts commit a6a39ced095c2f453624ce62c4aead25db41a18f.
This is the wrong version of this fix.
llvm-svn: 188523
|
|
|
|
|
|
|
|
|
| |
The SIInsertWaits pass was overwriting the first operand (gds bit) of
DS_WRITE_B32 with the second operand (value to write). This meant that
any time the value to write was stored in an odd number VGPR, the gds
bit would be set causing the instruction to write to GDS instead of LDS.
llvm-svn: 188522
|
|
|
|
|
| |
Tested-by: Aaron Watry <awatry@gmail.com>
llvm-svn: 188521
|
|
|
|
|
| |
Tested-by: Aaron Watry <awatry@gmail.com>
llvm-svn: 188520
|
|
|
|
|
| |
Tested-by: Aaron Watry <awatry@gmail.com>
llvm-svn: 188519
|
|
|
|
|
| |
Tested-by: Aaron Watry <awatry@gmail.com>
llvm-svn: 188518
|