| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
llvm values.
llvm-svn: 162771
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Register operands are manipulated by a lot of target-independent code,
and it is not always possible to preserve target flags. That means it is
not safe to use target flags on register operands.
None of the targets in the tree are using register operand target flags.
External targets should be using immediate operands to annotate
instructions with operand modifiers.
llvm-svn: 162770
|
| |
|
|
| |
llvm-svn: 162769
|
| |
|
|
| |
llvm-svn: 162768
|
| |
|
|
|
|
| |
character instead of always the last character.
llvm-svn: 162767
|
| |
|
|
|
|
|
| |
- The increment needs to be signed value to preserve the original value when
its data type is larger than 64-bit integer.
llvm-svn: 162766
|
| |
|
|
| |
llvm-svn: 162765
|
| |
|
|
|
|
|
|
|
| |
Add subtargets for Freescale e500mc (32-bit) and e5500 (64-bit) to
the PowerPC backend.
Patch by Tobias von Koch.
llvm-svn: 162764
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This warns in two specific situations:
1) For potentially swapped function arguments, e.g.
void foo(bool, float);
foo(1.7, false);
2) Misplaced brackets around function call arguments, e.g.
bool InRange = fabs(a - b < delta);
Where the last argument in a function call is implicitly converted
from bool to float, and the function returns a float which gets
implicitly converted to bool.
Patch by Andreas Eckleder!
llvm-svn: 162763
|
| |
|
|
| |
llvm-svn: 162762
|
| |
|
|
|
|
| |
Path by Brooks Davis, tests and fixes from me.
llvm-svn: 162761
|
| |
|
|
| |
llvm-svn: 162760
|
| |
|
|
| |
llvm-svn: 162759
|
| |
|
|
| |
llvm-svn: 162758
|
| |
|
|
| |
llvm-svn: 162757
|
| |
|
|
| |
llvm-svn: 162756
|
| |
|
|
|
|
|
|
|
| |
the bit width.
No test case, undefined shifts get folded early, but can occur when other
transforms generate a constant. Thanks to Duncan for bringing this up.
llvm-svn: 162755
|
| |
|
|
| |
llvm-svn: 162754
|
| |
|
|
| |
llvm-svn: 162753
|
| |
|
|
| |
llvm-svn: 162752
|
| |
|
|
|
|
| |
and non-const shifts.
llvm-svn: 162751
|
| |
|
|
|
|
| |
non-instrumented tests
llvm-svn: 162750
|
| |
|
|
|
|
| |
Thanks Benjamin for noticing this.
llvm-svn: 162749
|
| |
|
|
| |
llvm-svn: 162748
|
| |
|
|
| |
llvm-svn: 162747
|
| |
|
|
| |
llvm-svn: 162746
|
| |
|
|
|
|
| |
functionality in __asan_set_error_report_callback
llvm-svn: 162745
|
| |
|
|
| |
llvm-svn: 162744
|
| |
|
|
|
|
|
|
|
|
| |
For example:
%1 = lshr i32 %x, 2
%2 = udiv i32 %1, 100
rdar://12182093
llvm-svn: 162743
|
| |
|
|
| |
llvm-svn: 162742
|
| |
|
|
|
|
|
|
| |
it here, then a 'register-memory' version would wrongly get the commutative
flag.
<rdar://problem/12180135>
llvm-svn: 162741
|
| |
|
|
| |
llvm-svn: 162740
|
| |
|
|
| |
llvm-svn: 162739
|
| |
|
|
| |
llvm-svn: 162738
|
| |
|
|
|
|
| |
Patch by Magee, Josh.
llvm-svn: 162737
|
| |
|
|
| |
llvm-svn: 162736
|
| |
|
|
|
|
|
|
|
|
| |
- Add a target-specific DAG optimization to recognize a pattern PTEST-able.
Such a pattern is a OR'd tree with X86ISD::OR as the root node. When
X86ISD::OR node has only its flag result being used as a boolean value and
all its leaves are extracted from the same vector, it could be folded into an
X86ISD::PTEST node.
llvm-svn: 162735
|
| |
|
|
|
|
|
| |
Both single-instruction and multi-instruction patterns can be checked
for missing mayLoad / mayStore, and hasSideEffects flags.
llvm-svn: 162734
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
These extra flags are not required to properly order the atomic
load/store instructions. SelectionDAGBuilder chains atomics as if they
were volatile, and SelectionDAG::getAtomic() sets the isVolatile bit on
the memory operands of all atomic operations.
The volatile bit is enough to order atomic loads and stores during and
after SelectionDAG.
This means we set mayLoad on atomic_load, mayStore on atomic_store, and
mayLoad+mayStore on the remaining atomic read-modify-write operations.
llvm-svn: 162733
|
| |
|
|
|
|
|
|
|
|
|
| |
ARM."
This wasn't the right way to enforce ordering of atomics.
We are already setting the isVolatile bit on memory operands of atomic
operations which is good enough to enforce the correct ordering.
llvm-svn: 162732
|
| |
|
|
|
|
|
|
| |
Instructions emitted to compute branch offsets now use immediate operands
instead of symbolic labels. This change was needed because there were problems
when R_MIPS_HI16/LO16 relocations were used to make shared objects.
llvm-svn: 162731
|
| |
|
|
| |
llvm-svn: 162730
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Slight reorganisation of PPC instruction classes for scheduling. No
functionality change for existing subtargets.
- Clearly separate load/store-with-update instructions from regular loads and stores.
- Split IntRotateD -> IntRotateD and IntRotateDI
- Split out fsub and fadd from FPGeneral -> FPAddSub
- Update existing itineraries
Patch by Tobias von Koch.
llvm-svn: 162729
|
| |
|
|
|
|
|
|
|
| |
In SelectionDAGLegalize::ExpandLegalINT_TO_FP, expand INT_TO_FP nodes without
using any f64 operations if f64 is not a legal type.
Patch by Stefan Kristiansson.
llvm-svn: 162728
|
| |
|
|
|
|
|
|
|
|
|
| |
Allow load-immediates to be rematerialised in the register coalescer for
PPC. This makes test/CodeGen/PowerPC/big-endian-formal-args.ll fail,
because it relies on a register move getting emitted. The immediate load is
equivalent, so change this test case.
Patch by Tobias von Koch.
llvm-svn: 162727
|
| |
|
|
|
|
|
|
|
| |
Adds the vendor 'fsl' (used by Freescale SDK) to Triple. This will allow
clang support for Freescale cross-compile configurations.
Patch by Tobias von Koch.
llvm-svn: 162726
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The 32-bit ABI requires CR bit 6 to be set if the call has fp arguments and
unset if it doesn't. The solution up to now was to insert a MachineNode to
set/unset the CR bit, which produces a CR vreg. This vreg was then copied
into CR bit 6. When the register allocator saw a bunch of these in the same
function, it allocated the set/unset CR bit in some random CR register (1
extra instruction) and then emitted CR moves before every vararg function
call, rather than just setting and unsetting CR bit 6 directly before every
vararg function call. This patch instead inserts a PPCcrset/PPCcrunset
instruction which are then matched by a dedicated instruction pattern.
Patch by Tobias von Koch.
llvm-svn: 162725
|
| |
|
|
|
|
|
|
|
|
| |
The zeroextend IR instruction is lowered to an 'and' node with an immediate
mask operand, which in turn gets legalised to a sequence of ori's & ands.
This can be done more efficiently using the rldicl instruction.
Patch by Tobias von Koch.
llvm-svn: 162724
|
| |
|
|
|
|
| |
Should fix part 2 of PR13374.
llvm-svn: 162723
|
| |
|
|
| |
llvm-svn: 162722
|