| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 127773
|
| |
|
|
|
|
|
|
|
| |
register number.
The live range of a virtual register may change which invalidates the cached
interference information.
llvm-svn: 127772
|
| |
|
|
| |
llvm-svn: 127771
|
| |
|
|
|
|
|
|
|
|
|
| |
rather than an int. Thankfully, this only causes LLVM to miss optimizations, not
generate incorrect code.
This just fixes the zext at the return. We still insert an i32 ZextAssert when
reading a function's arguments, but it is followed by a truncate and another i8
ZextAssert so it is not optimized.
llvm-svn: 127766
|
| |
|
|
| |
llvm-svn: 127764
|
| |
|
|
|
|
|
| |
plus the test where it used to break.", which broke Clang self-host of a
Debug+Asserts compiler, on OS X.
llvm-svn: 127763
|
| |
|
|
| |
llvm-svn: 127761
|
| |
|
|
|
|
| |
where it used to break.
llvm-svn: 127757
|
| |
|
|
|
|
| |
can event.
llvm-svn: 127741
|
| |
|
|
| |
llvm-svn: 127728
|
| |
|
|
|
|
|
|
| |
called at dtor context.
report_fatal_error() invokes exit(). We know report_fatal_error() might not write messages to stderr when any errors were detected on FD == 2.
llvm-svn: 127726
|
| |
|
|
|
| |
FIXME: It is a temporal hack. We should detect as many "special file name" as possible.
llvm-svn: 127724
|
| |
|
|
|
|
|
| |
for workaround.
FIXME: We should use sys::fs::unique_file() in future.
llvm-svn: 127723
|
| |
|
|
| |
llvm-svn: 127721
|
| |
|
|
| |
llvm-svn: 127720
|
| |
|
|
|
|
|
|
|
|
|
| |
chose is having a non-memcpy/memset use and being larger than any native integer
type. Originally I chose having an access of a size smaller than the total size
of the alloca, but this caused some minor issues on the spirit benchmark where
SRoA runs again after some inlining.
This fixes <rdar://problem/8613163>.
llvm-svn: 127718
|
| |
|
|
| |
llvm-svn: 127716
|
| |
|
|
| |
llvm-svn: 127715
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1. The ARM Darwin *r9 call instructions were pseudo-ized recently.
Modify the ARMDisassemblerCore.cpp file to accomodate the change.
2. The disassembler was unnecessarily adding 8 to the sign-extended imm24:
imm32 = SignExtend(imm24:'00', 32); // A8.6.23 BL, BLX (immediate)
// Encoding A1
It has no business doing such. Removed the offending logic.
Add test cases to arm-tests.txt.
llvm-svn: 127707
|
| |
|
|
| |
llvm-svn: 127705
|
| |
|
|
|
|
|
| |
accept. If a value in the mask is out of range, it uses the value 0, for VTBL,
or leaves the value unchanged, for VTBX.
llvm-svn: 127700
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
defs.
After live range splitting, an original value may be available in multiple
registers. Tracing back through the registers containing the same value, find
the best place to insert a spill, determine if the value has already been
spilled, or discover a reaching def that may be rematerialized.
This is only the analysis part. The information is not used for anything yet.
llvm-svn: 127698
|
| |
|
|
| |
llvm-svn: 127697
|
| |
|
|
| |
llvm-svn: 127694
|
| |
|
|
| |
llvm-svn: 127691
|
| |
|
|
| |
llvm-svn: 127684
|
| |
|
|
| |
llvm-svn: 127683
|
| |
|
|
| |
llvm-svn: 127681
|
| |
|
|
| |
llvm-svn: 127680
|
| |
|
|
| |
llvm-svn: 127678
|
| |
|
|
|
|
|
|
| |
- Remove PTX 1.4 code generation
- Change type of intrinsics to .v4.i32 instead of .v4.i16
- Add and/or/xor integer instructions
llvm-svn: 127677
|
| |
|
|
|
|
| |
MCFixupKind. This is the same technique that is used elsewhere in MC.
llvm-svn: 127676
|
| |
|
|
|
|
| |
when building with assertions disabled.
llvm-svn: 127675
|
| |
|
|
| |
llvm-svn: 127674
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
memory builtins as equivalent to malloc/free.
This is different from any attribute we have. For example, you can delete the
allocators when their result is unused, but you can't collapse two calls to the
same function, even if no global/memory state has changed in between. The
noalias return states that the result does not alias any other pointer, but
instcombine optimizes malloc() as though the result is non-null for the purpose
of eliminating unused pointers.
llvm-svn: 127673
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
v2 = bitcast v1
...
v3 = bitcast v2
...
= v3
=>
v2 = bitcast v1
...
= v1
if v1 and v3 are of in the same register class.
bitcast between i32 and fp (and others) are often not nops since they
are in different register classes. These bitcast instructions are often
left because they are in different basic blocks and cannot be
eliminated by dag combine.
rdar://9104514
llvm-svn: 127668
|
| |
|
|
|
|
| |
of pointers in an std::map.
llvm-svn: 127650
|
| |
|
|
|
|
| |
zext(undef) = 0, because the top bits will be zero.
llvm-svn: 127649
|
| |
|
|
|
|
|
|
| |
in the instruction tables and fixed a few bugs that
were causing decode conflicts. Rudimentary tests
are coming up in the next patch.
llvm-svn: 127646
|
| |
|
|
|
|
|
|
|
| |
instruction set. This code adds support for the VEX prefix
and for the YMM registers accessible on AVX-enabled
architectures. Instruction table support that enables AVX
instructions for the disassembler is in an upcoming patch.
llvm-svn: 127644
|
| |
|
|
|
|
|
| |
This function performed acrobatics to prove no-self-wrap, which we now
have for free.
llvm-svn: 127643
|
| |
|
|
|
|
|
|
|
|
| |
because an extra
register operand was erroneously added. Remove an incorrect assert which triggers the bug.
rdar://problem/9131529
llvm-svn: 127642
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
and then go kablooie. The problem was that it was tracking the PHI nodes anew
each time into this function. But it didn't need to. And because the recursion
didn't know that a PHINode was visited before, it would go ahead and call
itself.
There is a testcase, but unfortunately it's too big to add. This problem will go
away with the EH rewrite.
<rdar://problem/8856298>
llvm-svn: 127640
|
| |
|
|
|
|
| |
This needs review.
llvm-svn: 127638
|
| |
|
|
|
|
|
| |
Also more cleanly separate the ARM vs. Thumb functionality. Previously, the
encoding would be incorrect for some Thumb instructions (the indirect calls).
llvm-svn: 127637
|
| |
|
|
|
|
|
|
| |
normal version.
Fixes rdar://9123638
llvm-svn: 127636
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
can. As Nate pointed out, VTBL isn't super performant, but it *has* to be better
than this:
_shuf:
@ BB#0: @ %entry
push {r4, r7, lr}
add r7, sp, #4
sub sp, #12
mov r4, sp
bic r4, r4, #7
mov sp, r4
mov r2, sp
vmov d16, r0, r1
orr r0, r2, #6
orr r3, r2, #7
vst1.8 {d16[0]}, [r3]
vst1.8 {d16[5]}, [r0]
subs r4, r7, #4
orr r0, r2, #5
vst1.8 {d16[4]}, [r0]
orr r0, r2, #4
vst1.8 {d16[4]}, [r0]
orr r0, r2, #3
vst1.8 {d16[0]}, [r0]
orr r0, r2, #2
vst1.8 {d16[2]}, [r0]
orr r0, r2, #1
vst1.8 {d16[1]}, [r0]
vst1.8 {d16[3]}, [r2]
vldr.64 d16, [sp]
vmov r0, r1, d16
mov sp, r4
pop {r4, r7, pc}
The "illegal" testcase in vext.ll is no longer illegal.
<rdar://problem/9078775>
llvm-svn: 127630
|
| |
|
|
|
|
| |
Use the opportunity to get rid of the trailing underscore variable names.
llvm-svn: 127618
|
| |
|
|
|
|
|
|
| |
Remove the unused reserved_ bit vector, no functional change intended.
This doesn't break 'svn blame', this file really is all my fault.
llvm-svn: 127607
|
| |
|
|
| |
llvm-svn: 127601
|