- Jun 19, 2010
-
-
Evan Cheng authored
- This fixed a number of bugs in if-converter, tail merging, and post-allocation scheduler. If-converter now runs branch folding / tail merging first to maximize if-conversion opportunities. - Also changed the t2IT instruction slightly. It now defines the ITSTATE register which is read by instructions in the IT block. - Added Thumb2 specific hazard recognizer to ensure the scheduler doesn't change the instruction ordering in the IT block (since IT mask has been finalized). It also ensures no other instructions can be scheduled between instructions in the IT block. This is not yet enabled. llvm-svn: 106344
-
Jim Grosbach authored
llvm-svn: 106342
-
Jim Grosbach authored
llvm-svn: 106336
-
- Jun 18, 2010
-
-
Bob Wilson authored
(as suggested in radar 8104405). llvm-svn: 106318
-
Dale Johannesen authored
llvm-svn: 106314
-
Jakob Stoklund Olesen authored
limit on the offset that can be materialized without using the register scavenger. llvm-svn: 106312
-
Dale Johannesen authored
ARM tail calls. Don't know if it works, but it doesn't break Darwin. llvm-svn: 106309
-
Dale Johannesen authored
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
-
Dan Gohman authored
MachineRegisterInfo doesn't have to confusingly allocate an extra entry. llvm-svn: 106296
-
Dale Johannesen authored
Not turning them on yet. llvm-svn: 106295
-
Jakob Stoklund Olesen authored
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
-
Dan Gohman authored
llvm-svn: 106279
-
Stuart Hastings authored
addresses a longstanding deficiency noted in many FIXMEs scattered across all the targets. This effectively moves the problem up one level, replacing eleven FIXMEs in the targets with eight FIXMEs in CodeGen, plus one path through FastISel where we actually supply a DebugLoc, fixing Radar 7421831. llvm-svn: 106243
-
- Jun 17, 2010
-
-
Jim Grosbach authored
ISD::MEMBARRIER. v7 and v7 ARM mode continue to use the custom lowering. llvm-svn: 106204
-
Jim Grosbach authored
previously would result in 'cannot yet select' errors. llvm-svn: 106199
-
Jim Grosbach authored
llvm-svn: 106173
-
Jakob Stoklund Olesen authored
This is before LiveVariables anyway, where these kill flags are recalculated. llvm-svn: 106157
-
- Jun 16, 2010
-
-
Bob Wilson authored
now, so there's no need to disable them. llvm-svn: 106155
-
Evan Cheng authored
Make post-ra scheduling, anti-dep breaking, and register scavenger (conservatively) aware of predicated instructions. This enables ARM to move if-conversion before post-ra scheduler. llvm-svn: 106091
-
Dale Johannesen authored
llvm-svn: 106058
-
Dale Johannesen authored
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
-
- Jun 15, 2010
-
-
Bob Wilson authored
llvm-svn: 106030
-
Daniel Dunbar authored
llvm-svn: 105994
-
Bob Wilson authored
llvm-svn: 105990
-
Jim Grosbach authored
the combined load/store instruction. rdar://7797940 llvm-svn: 105982
-
Bob Wilson authored
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
-
- Jun 12, 2010
-
-
Bob Wilson authored
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
-
- Jun 11, 2010
-
-
Bob Wilson authored
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
-
- Jun 10, 2010
-
-
Evan Cheng authored
llvm-svn: 105774
-
Jim Grosbach authored
dbg_value immediately follows a sequence of ldr/str instructions that should be combined into an ldm/stm and is the last instruction in the block, then combine may end up being skipped. llvm-svn: 105758
-
- Jun 09, 2010
-
-
Evan Cheng authored
Allow target to place 2-address pass inserted copies in better spots. Thumb2 will use this to try to avoid breaking up IT blocks. llvm-svn: 105745
-
Evan Cheng authored
llvm-svn: 105677
-
Evan Cheng authored
the same condition, it's important to make sure they are scheduled together to avoid forming multiple IT blocks. I'm adding a pre-regalloc pass that forms IT blocks early (by re-scheduling instructions and split basic blocks) to attempt to fix this. This is not turned on by default since I am not sure this is the right fix. Another issue is llvm selects are modeled as two-address conditional moves. This can be very bad when the copies before the conditional moves are not coalesced away. Teach IT formation pass to move the copies above the IT block (when legal) to avoid breaking the IT block. llvm-svn: 105669
-
Jim Grosbach authored
llvm-svn: 105653
-
Bruno Cardoso Lopes authored
immediates to avoid breaking the build. llvm-svn: 105652
-
- Jun 08, 2010
-
-
Jim Grosbach authored
llvm-svn: 105634
-
Bob Wilson authored
llvm-svn: 105591
-
Bob Wilson authored
- 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
-
- Jun 07, 2010
-
-
Jim Grosbach authored
rdar://7797940 llvm-svn: 105557
-
- Jun 05, 2010
-
-
Chris Lattner authored
In file included from X86InstrInfo.cpp:16: X86GenInstrInfo.inc:2789: error: integer constant is too large for 'long' type X86GenInstrInfo.inc:2790: error: integer constant is too large for 'long' type X86GenInstrInfo.inc:2792: error: integer constant is too large for 'long' type X86GenInstrInfo.inc:2793: error: integer constant is too large for 'long' type X86GenInstrInfo.inc:2808: error: integer constant is too large for 'long' type X86GenInstrInfo.inc:2809: error: integer constant is too large for 'long' type X86GenInstrInfo.inc:2816: error: integer constant is too large for 'long' type X86GenInstrInfo.inc:2817: error: integer constant is too large for 'long' type llvm-svn: 105524
-