Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Add a ARM-specific SD node for VBSL so that forms with a constant first operand | Cameron Zwarich | 2011-03-30 | 1 | -0/+30 |
| | | | | | | can be recognized. This fixes <rdar://problem/9183078>. llvm-svn: 128584 | ||||
* | Migrate the fix in r128041 to ARM's fastisel support as well. | Eric Christopher | 2011-03-22 | 1 | -13/+18 |
| | | | | | | Fixes rdar://9169640 llvm-svn: 128100 | ||||
* | Sometimes isPredicable lies to us and tells us we don't need the operands. | Eric Christopher | 2011-03-12 | 1 | -6/+25 |
| | | | | | | | | | Go ahead and add them on when we might want to use them and let later passes remove them. Fixes rdar://9118569 llvm-svn: 127518 | ||||
* | Only use blx for external function calls on thumb, these could be fixed | Eric Christopher | 2011-02-22 | 1 | -12/+26 |
| | | | | | | | | | up by the dynamic linker, but it's better to use the correct instruction to begin with. Fixes rdar://9011034 llvm-svn: 126176 | ||||
* | Use the incoming VT not the VT of where we're trying to store to determine | Eric Christopher | 2011-01-27 | 1 | -2/+2 |
| | | | | | | | | if we can store a value. Also, the exclusion is or, not and. Fixes rdar://8920247. llvm-svn: 124357 | ||||
* | Remove unused variables found by gcc-4.6's -Wunused-but-set-variable. | Jeffrey Yasskin | 2011-01-18 | 1 | -4/+0 |
| | | | | llvm-svn: 123707 | ||||
* | Materialize GA addresses with movw + movt pairs for Darwin in PIC mode. e.g. | Evan Cheng | 2011-01-17 | 1 | -1/+1 |
| | | | | | | | | | | | | movw r0, :lower16:(L_foo$non_lazy_ptr-(LPC0_0+4)) movt r0, :upper16:(L_foo$non_lazy_ptr-(LPC0_0+4)) LPC0_0: add r0, pc, r0 It's not yet enabled by default as some tests are failing. I suspect bugs in down stream tools. llvm-svn: 123619 | ||||
* | fix some -Wself-assign warnings. | Chris Lattner | 2011-01-05 | 1 | -3/+3 |
| | | | | llvm-svn: 122893 | ||||
* | Arm and thumb call instructions are also in different orders. | Eric Christopher | 2010-12-21 | 1 | -13/+24 |
| | | | | | | Fixes rdar://8782223 llvm-svn: 122313 | ||||
* | Don't handle -arm-long-calls in fast isel for now. | Eric Christopher | 2010-12-15 | 1 | -0/+8 |
| | | | | llvm-svn: 121919 | ||||
* | Refactor load/store handling again. Simplify and make some room for | Eric Christopher | 2010-12-01 | 1 | -103/+60 |
| | | | | | | reg+reg handling. llvm-svn: 120526 | ||||
* | Noticed this on inspection, fix and update some comments. | Eric Christopher | 2010-11-30 | 1 | -3/+4 |
| | | | | llvm-svn: 120447 | ||||
* | Update fastisel for the changes in r120272. | Eric Christopher | 2010-11-29 | 1 | -3/+7 |
| | | | | llvm-svn: 120324 | ||||
* | Renaming ISD::BIT_CONVERT to ISD::BITCAST to better reflect the LLVM IR concept. | Wesley Peck | 2010-11-23 | 1 | -1/+1 |
| | | | | llvm-svn: 119990 | ||||
* | Rewrite address handling to use a structure with all the possible address | Eric Christopher | 2010-11-20 | 1 | -11/+76 |
| | | | | | | mode variables. Handle frame indexes in load/store and allocas again. llvm-svn: 119912 | ||||
* | STRH only needs the additional operand, not t2STRH. Also invert conditional | Eric Christopher | 2010-11-20 | 1 | -9/+5 |
| | | | | | | to match the one from the load emitter above. llvm-svn: 119911 | ||||
* | Don't need to save piecemeal now. | Eric Christopher | 2010-11-19 | 1 | -4/+2 |
| | | | | llvm-svn: 119862 | ||||
* | Update comment. | Eric Christopher | 2010-11-19 | 1 | -3/+2 |
| | | | | llvm-svn: 119861 | ||||
* | Update comment. | Eric Christopher | 2010-11-19 | 1 | -1/+1 |
| | | | | llvm-svn: 119859 | ||||
* | Refactor address mode handling into a single struct (ala x86), this | Eric Christopher | 2010-11-19 | 1 | -50/+72 |
| | | | | | | | | should give allow a wider range of addressing modes. No functional change. llvm-svn: 119856 | ||||
* | Remove hard tabs. | Jim Grosbach | 2010-11-19 | 1 | -2/+2 |
| | | | | llvm-svn: 119810 | ||||
* | Recommit this change and remove the failing part of the test - it didn't | Eric Christopher | 2010-11-15 | 1 | -4/+5 |
| | | | | | | | pass in the first place and was masked by earlier failures not warning and aborting the block. llvm-svn: 119184 | ||||
* | Temporarily revert this. | Eric Christopher | 2010-11-12 | 1 | -5/+4 |
| | | | | llvm-svn: 118946 | ||||
* | Make this happen for ARM like x86. Don't entirely bail out when | Eric Christopher | 2010-11-12 | 1 | -4/+5 |
| | | | | | | | an address is in a different block, get it into a register and go from there. llvm-svn: 118936 | ||||
* | Fix up a few more spots of addrmode2 (or not) changes that were | Eric Christopher | 2010-11-12 | 1 | -6/+12 |
| | | | | | | | | missed. Update some comments accordingly. Fixes rdar://8652289 llvm-svn: 118888 | ||||
* | Trailing whitespace. | Jim Grosbach | 2010-11-09 | 1 | -6/+6 |
| | | | | llvm-svn: 118606 | ||||
* | Make sure we have movw on the target before using it. | Eric Christopher | 2010-11-06 | 1 | -1/+1 |
| | | | | | | Fixes 8559. llvm-svn: 118333 | ||||
* | In the calling convention logic, ValVT is always a legal type, | Duncan Sands | 2010-11-04 | 1 | -1/+1 |
| | | | | | | | and as such can be represented by an MVT - the more complicated EVT is not needed. Use MVT for ValVT everywhere. llvm-svn: 118245 | ||||
* | Optimize generated code for integer materialization a bit. | Eric Christopher | 2010-11-03 | 1 | -1/+13 |
| | | | | llvm-svn: 118192 | ||||
* | Simplify uses of MVT and EVT. An MVT can be compared directly | Duncan Sands | 2010-11-03 | 1 | -7/+6 |
| | | | | | | | with a SimpleValueType, while an EVT supports equality and inequality comparisons with SimpleValueType. llvm-svn: 118169 | ||||
* | Inside the calling convention logic LocVT is always a simple | Duncan Sands | 2010-11-03 | 1 | -36/+36 |
| | | | | | | | | | | value type, so there is no point in passing it around using an EVT. Use the simpler MVT everywhere. Rather than trying to propagate this information maximally in all the code that using the calling convention stuff, I chose to do a mainly low impact change instead. llvm-svn: 118167 | ||||
* | Invert these branches by default, it makes assembly comparisons a little | Eric Christopher | 2010-11-03 | 1 | -2/+2 |
| | | | | | | easier to read. llvm-svn: 118148 | ||||
* | Make sure we're only storing a single bit here. | Eric Christopher | 2010-11-02 | 1 | -2/+9 |
| | | | | llvm-svn: 118126 | ||||
* | Remove an assert - it's possible to be hit, and we just want to avoid | Eric Christopher | 2010-11-02 | 1 | -1/+1 |
| | | | | | | handling those cases for now. llvm-svn: 117996 | ||||
* | Whitespeace | Eric Christopher | 2010-11-02 | 1 | -1/+1 |
| | | | | llvm-svn: 117995 | ||||
* | No really, no thumb1 for arm fast isel. Also add an informative comment as | Eric Christopher | 2010-11-02 | 1 | -3/+7 |
| | | | | | | to what someone would need to do to support thumb1. llvm-svn: 117994 | ||||
* | Make sure we have a legal type (and simple) before continuing. | Eric Christopher | 2010-10-30 | 1 | -1/+4 |
| | | | | llvm-svn: 117848 | ||||
* | Handle comparison values we already have - this fixes the consumer-typeset | Eric Christopher | 2010-10-29 | 1 | -4/+65 |
| | | | | | | failure for llvm-gcc on arm fast isel. llvm-svn: 117710 | ||||
* | Refactor ARM STR/STRB instruction patterns into STR{B}i12 and STR{B}rs, like | Jim Grosbach | 2010-10-27 | 1 | -5/+8 |
| | | | | | | | | the LDR instructions have. This makes the literal/register forms of the instructions explicit and allows us to assign scheduling itineraries appropriately. rdar://8477752 llvm-svn: 117505 | ||||
* | Trailing whitespace | Jim Grosbach | 2010-10-27 | 1 | -17/+17 |
| | | | | llvm-svn: 117496 | ||||
* | Split ARM::LDRB into LDRBi12 and LDRBrs. Adjust accordingly. Continuing on | Jim Grosbach | 2010-10-27 | 1 | -3/+1 |
| | | | | | | rdar://8477752. llvm-svn: 117419 | ||||
* | First part of refactoring ARM addrmode2 (load/store) instructions to be more | Jim Grosbach | 2010-10-26 | 1 | -10/+5 |
| | | | | | | | | explicit about the operands. Split out the different variants into separate instructions. This gives us the ability to, among other things, assign different scheduling itineraries to the variants. rdar://8477752. llvm-svn: 117409 | ||||
* | Move rejection of NEON parameters earlier in fast isel call processing, | Eric Christopher | 2010-10-23 | 1 | -3/+4 |
| | | | | | | note that we can actually handle some f64 arguments. llvm-svn: 117209 | ||||
* | Silence compiler warnings. | Evan Cheng | 2010-10-22 | 1 | -1/+5 |
| | | | | llvm-svn: 117128 | ||||
* | Add some basic ret instruction support to arm fast-isel. | Eric Christopher | 2010-10-22 | 1 | -0/+66 |
| | | | | llvm-svn: 117085 | ||||
* | These don't need to be virtual. | Eric Christopher | 2010-10-21 | 1 | -13/+13 |
| | | | | llvm-svn: 117068 | ||||
* | Handle storing args to the stack for calls. | Eric Christopher | 2010-10-21 | 1 | -4/+6 |
| | | | | llvm-svn: 117055 | ||||
* | More load/store refactoring, call reg+offset simplification from within | Eric Christopher | 2010-10-21 | 1 | -28/+36 |
| | | | | | | | | the emitter to handle the addresses. Only simplify the offset if we need to - also fix bug where in addrmode 5 we weren't dividing the offset by 4, which showed up due to not always lowering. llvm-svn: 117051 | ||||
* | Custom lower f64 args passed in integer registers. | Eric Christopher | 2010-10-21 | 1 | -0/+15 |
| | | | | llvm-svn: 116977 | ||||
* | Fix a TODO by removing some unnecesary copies. | Eric Christopher | 2010-10-20 | 1 | -13/+5 |
| | | | | llvm-svn: 116915 |