| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
| |
such a way that debug info for symbols preserved even if symbols are
optimized away by the optimizer.
Add new special pass to remove debug info for such symbols.
llvm-svn: 107416
|
| |
|
|
|
|
| |
Add AVX SSE3 packed horizontal and & sub instructions
llvm-svn: 107405
|
| |
|
|
| |
llvm-svn: 107404
|
| |
|
|
| |
llvm-svn: 107393
|
| |
|
|
|
|
|
| |
available in a register. This is pretty primitive, but it reduces the
number of instructions in common testcases by 4%.
llvm-svn: 107380
|
| |
|
|
| |
llvm-svn: 107377
|
| |
|
|
| |
llvm-svn: 107375
|
| |
|
|
|
|
| |
the same address.
llvm-svn: 107373
|
| |
|
|
|
|
|
|
| |
- Add encode bits for VEX_W
- All 128-bit SSE 1 & SSE2 instructions that are described
in the .td file now have a AVX encoded form already working.
llvm-svn: 107365
|
| |
|
|
| |
llvm-svn: 107363
|
| |
|
|
| |
llvm-svn: 107323
|
| |
|
|
| |
llvm-svn: 107306
|
| |
|
|
|
|
|
| |
nsw and nuw flags from IR Instructions. On further consideration,
this isn't valid.
llvm-svn: 107298
|
| |
|
|
| |
llvm-svn: 107293
|
| |
|
|
| |
llvm-svn: 107258
|
| |
|
|
| |
llvm-svn: 107246
|
| |
|
|
| |
llvm-svn: 107245
|
| |
|
|
| |
llvm-svn: 107241
|
| |
|
|
| |
llvm-svn: 107240
|
| |
|
|
|
|
| |
- Add VEX encoding bits to x86 MRM0r-MRM7r
llvm-svn: 107238
|
| |
|
|
|
|
| |
won't be included DIE tree.
llvm-svn: 107228
|
| |
|
|
| |
llvm-svn: 107225
|
| |
|
|
|
|
|
| |
where each loop's induction variable's start value is the exit
value of a preceding loop.
llvm-svn: 107224
|
| |
|
|
|
|
| |
Add VEX encoding bits for MRMXm x86 form
llvm-svn: 107204
|
| |
|
|
|
|
|
|
|
|
|
| |
A partial redefine needs to be treated like a tied operand, and the register
must be reloaded while processing use operands.
This fixes a bug where partially redefined registers were processed as normal
defs with a reload added. The reload could clobber another use operand if it was
a kill that allowed register reuse.
llvm-svn: 107193
|
| |
|
|
|
|
|
| |
The LowerSubregs pass needs to preserve implicit def operands attached to
EXTRACT_SUBREG instructions when it replaces those instructions with copies.
llvm-svn: 107189
|
| |
|
|
| |
llvm-svn: 107178
|
| |
|
|
| |
llvm-svn: 107177
|
| |
|
|
| |
llvm-svn: 107166
|
| |
|
|
|
|
|
|
|
| |
of getPhysicalRegisterRegClass with it.
If we want to make a copy (or estimate its cost), it is better to use the
smallest class as more efficient operations might be possible.
llvm-svn: 107140
|
| |
|
|
| |
llvm-svn: 107134
|
| |
|
|
| |
llvm-svn: 107122
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There are 2 changes relative to the previous version of the patch:
1) For the "simple" if-conversion case, there's no need to worry about
RemoveExtraEdges not handling an unanalyzable branch. Predicated terminators
are ignored in this context, so RemoveExtraEdges does the right thing.
This might break someday if we ever treat indirect branches (BRIND) as
predicable, but for now, I just removed this part of the patch, because
in the case where we do not add an unconditional branch, we rely on keeping
the fall-through edge to CvtBBI (which is empty after this transformation).
The change relative to the previous patch is:
@@ -1036,10 +1036,6 @@
IterIfcvt = false;
}
- // RemoveExtraEdges won't work if the block has an unanalyzable branch,
- // which is typically the case for IfConvertSimple, so explicitly remove
- // CvtBBI as a successor.
- BBI.BB->removeSuccessor(CvtBBI->BB);
RemoveExtraEdges(BBI);
// Update block info. BB can be iteratively if-converted.
2) My patch exposed a bug in the code for merging the tail of a "diamond",
which had previously never been exercised. The code was simply checking that
the tail had a single predecessor, but there was a case in
MultiSource/Benchmarks/VersaBench/dbms where that single predecessor was
neither edge of the diamond. I added the following change to check for
that:
@@ -1276,7 +1276,18 @@
// tail, add a unconditional branch to it.
if (TailBB) {
BBInfo TailBBI = BBAnalysis[TailBB->getNumber()];
- if (TailBB->pred_size() == 1 && !TailBBI.HasFallThrough) {
+ bool CanMergeTail = !TailBBI.HasFallThrough;
+ // There may still be a fall-through edge from BBI1 or BBI2 to TailBB;
+ // check if there are any other predecessors besides those.
+ unsigned NumPreds = TailBB->pred_size();
+ if (NumPreds > 1)
+ CanMergeTail = false;
+ else if (NumPreds == 1 && CanMergeTail) {
+ MachineBasicBlock::pred_iterator PI = TailBB->pred_begin();
+ if (*PI != BBI1->BB && *PI != BBI2->BB)
+ CanMergeTail = false;
+ }
+ if (CanMergeTail) {
MergeBlocks(BBI, TailBBI);
TailBBI.IsDone = true;
} else {
With these fixes, I was able to run all the SingleSource and MultiSource
tests successfully.
llvm-svn: 107110
|
| |
|
|
|
|
|
| |
properly handles instructions and arguments defined in different
functions, or across recursive function iterations.
llvm-svn: 107109
|
| |
|
|
| |
llvm-svn: 107108
|
| |
|
|
| |
llvm-svn: 107103
|
| |
|
|
|
|
|
| |
can't be changed arbitrarily by the DAGCombiner without checking if it is
running after legalization.
llvm-svn: 107097
|
| |
|
|
|
|
| |
although I don't see why.
llvm-svn: 107090
|
| |
|
|
| |
llvm-svn: 107088
|
| |
|
|
| |
llvm-svn: 107085
|
| |
|
|
|
|
|
|
| |
have to be registers, per gcc documentation. This affects
the logic for determining what "g" should lower to. PR 7393.
A couple of existing testcases are affected.
llvm-svn: 107079
|
| |
|
|
| |
llvm-svn: 107074
|
| |
|
|
|
|
|
| |
code in unreachable blocks, which have have use-def cycles.
This fixes PR7514.
llvm-svn: 107071
|
| |
|
|
| |
llvm-svn: 107059
|
| |
|
|
| |
llvm-svn: 107052
|
| |
|
|
| |
llvm-svn: 107049
|
| |
|
|
| |
llvm-svn: 107045
|
| |
|
|
|
|
|
|
|
|
|
|
| |
When an instruction has tied operands and physreg defines, we must take extra
care that the tied operands conflict with neither physreg defs nor uses.
The special treatment is given to inline asm and instructions with tied operands
/ early clobbers and physreg defines.
This fixes PR7509.
llvm-svn: 107043
|
| |
|
|
|
|
| |
Radar 8122864.
llvm-svn: 107027
|
| |
|
|
| |
llvm-svn: 107025
|