| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
basic instructions like ADD. More work left to be done to support other instances of shifter ops in the ISA.
llvm-svn: 127917
|
| |
|
|
|
|
|
|
|
|
|
| |
Proof-of-concept code that code-gens a module to an in-memory MachO object.
This will be hooked up to a run-time dynamic linker library (see: llvm-rtdyld
for similarly conceptual work for that part) which will take the compiled
object and link it together with the rest of the system, providing back to the
JIT a table of available symbols which will be used to respond to the
getPointerTo*() queries.
llvm-svn: 127916
|
| |
|
|
| |
llvm-svn: 127913
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The llvm.dbg.value intrinsic refers to SSA values, not virtual registers, so we
should be able to extend the range of a value by tracking that value through
register copies. This greatly improves the debug value tracking for function
arguments that for some reason are copied to a second virtual register at the
end of the entry block.
We only extend the debug value range where its register is killed. All original
llvm.dbg.value locations are still respected.
Copies from physical registers are ignored. That should not be a problem since
the entry block already adds DBG_VALUE instructions for the virtual registers
holding the function arguments.
llvm-svn: 127912
|
| |
|
|
| |
llvm-svn: 127909
|
| |
|
|
| |
llvm-svn: 127900
|
| |
|
|
| |
llvm-svn: 127899
|
| |
|
|
|
|
|
|
| |
- Emit mad instead of mad.rn for shader model 1.0
- Emit explicit mov.u32 instructions for reading global variables
- (most PTX instructions cannot take global variable immediates)
llvm-svn: 127895
|
| |
|
|
| |
llvm-svn: 127891
|
| |
|
|
| |
llvm-svn: 127888
|
| |
|
|
|
|
|
|
| |
For example, on 32-bit architecture, don't promote all uses of the IV
to 64-bits just because one use is a 64-bit cast.
Alternate implementation of the patch by Arnaud de Grandmaison.
llvm-svn: 127884
|
| |
|
|
|
|
| |
For now, only the default segments are supported.
llvm-svn: 127875
|
| |
|
|
| |
llvm-svn: 127874
|
| |
|
|
| |
llvm-svn: 127873
|
| |
|
|
|
|
|
| |
On MSVCRT and compatible, output of %e is incompatible to Posix by default. Number of exponent digits should be at least 2. "%+03d"
FIXME: Implement our formatter in future!
llvm-svn: 127872
|
| |
|
|
|
|
|
| |
makes valgrind stop complaining about uninitialized variables being read when it
accesses a bitfield (category) that shares its bits with these variables.
llvm-svn: 127871
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Stack slot real estate is virtually free compared to registers, so it is
advantageous to spill earlier even though the same value is now kept in both a
register and a stack slot.
Also eliminate redundant spills by extending the stack slot live range
underneath reloaded registers.
This can trigger a dead code elimination, removing copies and even reloads that
were only feeding spills.
llvm-svn: 127868
|
| |
|
|
|
|
|
| |
This is not supposed to happen, but I have seen the x86 rematter getting
confused when rematerializing partial redefs.
llvm-svn: 127857
|
| |
|
|
|
|
|
|
| |
and early clobbers.
Assert when trying to find an undefined value.
llvm-svn: 127856
|
| |
|
|
| |
llvm-svn: 127853
|
| |
|
|
|
|
|
|
|
|
|
| |
comparisons on x86. Essentially, the way this works is that SUB+SBB sets
the relevant flags the same way a double-width CMP would.
This is a substantial improvement over the generic lowering in LLVM. The output
is also shorter than the gcc-generated output; I haven't done any detailed
benchmarking, though.
llvm-svn: 127852
|
| |
|
|
|
|
| |
be used to release resources during a crash.
llvm-svn: 127849
|
| |
|
|
|
|
| |
Remove the offending logic and update the test cases.
llvm-svn: 127843
|
| |
|
|
|
|
| |
sneak in my last checkin.
llvm-svn: 127842
|
| |
|
|
| |
llvm-svn: 127840
|
| |
|
|
|
|
|
|
|
| |
SCEV may generate expressions composed of multiple pointers, which can
lead to invalid GEP expansion. Until we can teach SCEV to follow strict
pointer rules, make sure no bad GEPs creep into IR.
Fixes rdar://problem/9038671.
llvm-svn: 127839
|
| |
|
|
| |
llvm-svn: 127837
|
| |
|
|
|
|
| |
instead of copying.
llvm-svn: 127835
|
| |
|
|
|
|
|
| |
This is done by lowering dbg.declare intrinsic into dbg.value intrinsic.
Radar 9143931.
llvm-svn: 127834
|
| |
|
|
|
|
|
|
|
|
|
| |
o A8.6.195 STR (register) -- Encoding T1
o A8.6.193 STR (immediate, Thumb) -- Encoding T1
It has been changed so that now they use different addressing modes
and thus different MC representation (Operand Infos). Modify the
disassembler to reflect the change, and add relevant tests.
llvm-svn: 127833
|
| |
|
|
| |
llvm-svn: 127832
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
multiplied value by introducing an early shift.
This allows us to compile "unsigned foo(unsigned x) { return x/28; }" into
shrl $2, %edi
imulq $613566757, %rdi, %rax
shrq $32, %rax
ret
instead of
movl %edi, %eax
imulq $613566757, %rax, %rcx
shrq $32, %rcx
subl %ecx, %eax
shrl %eax
addl %ecx, %eax
shrl $4, %eax
on x86_64
llvm-svn: 127829
|
| |
|
|
|
|
|
|
| |
bits that are known zero in the divided number.
This will come in handy soon.
llvm-svn: 127828
|
| |
|
|
|
|
|
|
|
| |
components.
I have convinced myself that it can only happen when a phi value dies. When it
happens, allocate new virtual registers for the components.
llvm-svn: 127827
|
| |
|
|
| |
llvm-svn: 127821
|
| |
|
|
|
|
| |
been removed.
llvm-svn: 127812
|
| |
|
|
| |
llvm-svn: 127809
|
| |
|
|
| |
llvm-svn: 127807
|
| |
|
|
| |
llvm-svn: 127801
|
| |
|
|
| |
llvm-svn: 127788
|
| |
|
|
| |
llvm-svn: 127786
|
| |
|
|
|
|
| |
While here, add VK_ARM_TPOFF and VK_ARM_GOTTPOFF, too.
llvm-svn: 127780
|
| |
|
|
| |
llvm-svn: 127779
|
| |
|
|
|
|
| |
The register allocator needs to adjust its live interval unions when that happens.
llvm-svn: 127774
|
| |
|
|
| |
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
|