| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 106819
|
| |
|
|
|
|
|
|
|
|
|
| |
branch turns out to be ARM-to-Thumb or vice versa
the linker cannot resolve this. 8120438.
If this optimization is going to be useful we probably
need a compiler flag "assume callees are same architecture"
or something like that.
llvm-svn: 106662
|
| |
|
|
|
|
|
| |
MEMBARRIER fences aren't necessary for ARM. Tell the combiner to fold them
away.
llvm-svn: 106631
|
| |
|
|
|
|
| |
Radar 8104310.
llvm-svn: 106484
|
| |
|
|
| |
llvm-svn: 106381
|
| |
|
|
|
|
| |
Thumb1RegisterInfo::emitEpilogue is not expecting them.
llvm-svn: 106368
|
| |
|
|
| |
llvm-svn: 106342
|
| |
|
|
| |
llvm-svn: 106336
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
basic tests.
This has been well tested on Darwin but not elsewhere.
It should work provided the linker correctly resolves
B.W <label in other function>
which it has not seen before, at least from llvm-based
compilers. I'm leaving the arm-tail-calls switch in
until I see if there's any problems because of that;
it might need to be disabled for some environments.
llvm-svn: 106299
|
| |
|
|
|
|
| |
Not turning them on yet.
llvm-svn: 106295
|
| |
|
|
|
|
|
| |
does for {flags}. If we create virtual registers of the CCR class, RegAllocFast
may try to spill them, and we can't do that.
llvm-svn: 106289
|
| |
|
|
|
|
| |
ISD::MEMBARRIER. v7 and v7 ARM mode continue to use the custom lowering.
llvm-svn: 106204
|
| |
|
|
|
|
| |
previously would result in 'cannot yet select' errors.
llvm-svn: 106199
|
| |
|
|
| |
llvm-svn: 106173
|
| |
|
|
|
|
| |
now, so there's no need to disable them.
llvm-svn: 106155
|
| |
|
|
|
|
| |
(conservatively) aware of predicated instructions. This enables ARM to move if-conversion before post-ra scheduler.
llvm-svn: 106091
|
| |
|
|
|
|
|
|
| |
call must not be callee-saved; following x86, add a new
regclass to represent this. Also fixes a couple of bugs.
Still disabled by default; Thumb doesn't work yet.
llvm-svn: 106053
|
| |
|
|
| |
llvm-svn: 106030
|
| |
|
|
|
|
|
|
| |
immediate" operands. These functions have so far only been used for VMOV
but they also apply to other NEON instructions with modified immediate
operands. No functional changes.
llvm-svn: 105969
|
| |
|
|
|
|
|
| |
i64 and f64 types, but now it also handle Neon vector types, so the f64 result
of VMOVDRR may need to be converted to a Neon type. Radar 8084742.
llvm-svn: 105845
|
| |
|
|
|
|
|
|
|
|
|
| |
the machine instruction representation of the immediate value to be encoded
into an integer with similar fields as the actual VMOV instruction. This makes
things easier for the disassembler, since it can just stuff the bits into the
immediate operand, but harder for the asm printer since it has to decode the
value to be printed. Testcase for the encoding will follow later when MC has
more support for ARM.
llvm-svn: 105836
|
| |
|
|
|
|
|
|
|
|
| |
- change isShuffleMaskLegal to show that all shuffles with 32-bit and 64-bit
elements are legal
- the Neon shuffle instructions do not support 64-bit elements, but we were
not checking for that before lowering shuffles to use them
- remove some 64-bit element vduplane patterns that are no longer needed
llvm-svn: 105586
|
| |
|
|
|
|
| |
unless using -arm-tail-calls.
llvm-svn: 105515
|
| |
|
|
|
|
| |
8060143, although this doesn't fix the real problem with tail call.
llvm-svn: 105472
|
| |
|
|
|
|
|
|
|
|
|
| |
VECTOR_SHUFFLEs to REG_SEQUENCE instructions. The standard ISD::BUILD_VECTOR
node corresponds closely to REG_SEQUENCE but I couldn't use it here because
its operands do not get legalized. That is pretty awful, but I guess it
makes sense for other targets. Instead, I have added an ARM-specific version
of BUILD_VECTOR that will have its operands properly legalized.
This fixes the rest of Radar 7872877.
llvm-svn: 105439
|
| |
|
|
|
|
|
|
|
| |
A temporary flag -arm-tail-calls defaults to off,
so there is no functional change by default.
Intrepid users may try this; simple cases work
but there are bugs.
llvm-svn: 105413
|
| |
|
|
| |
llvm-svn: 105350
|
| |
|
|
|
|
| |
not vfp / NEON instructions.
llvm-svn: 105060
|
| |
|
|
|
|
| |
an alloca() or an llvm.stackrestore(). rdar://8031573
llvm-svn: 104900
|
| |
|
|
| |
llvm-svn: 104897
|
| |
|
|
|
|
| |
to update the jmpbuf in the presence of VLAs.
llvm-svn: 104862
|
| |
|
|
|
|
| |
ISD::. No functional change.
llvm-svn: 104734
|
| |
|
|
| |
llvm-svn: 104580
|
| |
|
|
| |
llvm-svn: 104518
|
| |
|
|
| |
llvm-svn: 104455
|
| |
|
|
| |
llvm-svn: 104421
|
| |
|
|
|
|
|
| |
Followups: docs patch for the builtin and eh.sjlj.setjmp cleanup to match
longjmp.
llvm-svn: 104419
|
| |
|
|
|
|
|
|
| |
copying VFP subregs. This exposed a bunch of dead code in the *spill-q.ll
tests, so I tweaked those tests to keep that code from being optimized away.
Radar 7872877.
llvm-svn: 104415
|
| |
|
|
|
|
| |
point instructions (and is not using soft float).
llvm-svn: 104307
|
| |
|
|
|
|
| |
what for latency in hybrid mode.
llvm-svn: 104293
|
| |
|
|
|
|
| |
This fixes the remaining issue with pr7167.
llvm-svn: 104257
|
| |
|
|
|
|
| |
TargetMachine.h and put it in its own namespace.
llvm-svn: 104147
|
| |
|
|
|
|
| |
into the target hook. Only the target knows whether the swap is safe. In Thumb2 mode, the offset must be an immediate. rdar://7998649
llvm-svn: 104060
|
| |
|
|
| |
llvm-svn: 103901
|
| |
|
|
|
|
| |
This can be extended later on to handle more "complex" constants.
llvm-svn: 103881
|
| |
|
|
| |
llvm-svn: 103855
|
| |
|
|
|
|
|
| |
allow target to override it in order to map register classes to illegal
but synthesizable types. e.g. v4i64, v8i64 for ARM / NEON.
llvm-svn: 103854
|
| |
|
|
| |
llvm-svn: 103760
|
| |
|
|
|
|
|
|
| |
Move EmitTargetCodeForMemcpy, EmitTargetCodeForMemset, and
EmitTargetCodeForMemmove out of TargetLowering and into
SelectionDAGInfo to exercise this.
llvm-svn: 103481
|
| |
|
|
| |
llvm-svn: 103459
|