- Aug 14, 2010
-
-
Bob Wilson authored
This fixes another part of PR7792. llvm-svn: 111057
-
Bob Wilson authored
llvm-svn: 111050
-
- Aug 13, 2010
-
-
Bob Wilson authored
instruction opcode. This fixes part of PR7792. llvm-svn: 111047
-
Bob Wilson authored
same lines as the change I made for ARM saturate instructions. llvm-svn: 111029
-
- Aug 12, 2010
-
-
Johnny Chen authored
the memory barrier variants (other than 'SY' full system domain read and write) are treated as one instruction with option operand. llvm-svn: 110951
-
Evan Cheng authored
Make sure ARM constant island pass does not break up an IT block. If the split point is in the middle of an IT block, it should move it up to just above the IT instruction. rdar://8302637 llvm-svn: 110947
-
Johnny Chen authored
entry for ARM STRBT is actually a super-instruction for A8.6.199 STRBT A1 & A2. Recover by looking for ARM:USAT encoding pattern before delegating to the auto- gened decoder. Added a "usat" test case to arm-tests.txt. llvm-svn: 110894
-
Daniel Dunbar authored
instructions onto the target specific parser, which can do a better job. llvm-svn: 110889
-
Daniel Dunbar authored
target specific parsers can adapt the TargetAsmParser to this. llvm-svn: 110888
-
Johnny Chen authored
Added two test cases to arm-tests.txt. llvm-svn: 110880
-
Bob Wilson authored
instruction opcode. This also fixes part of PR7792. llvm-svn: 110875
-
- Aug 11, 2010
-
-
Jim Grosbach authored
llvm-svn: 110810
-
Bill Wendling authored
float t1(int argc) { return (argc == 1123) ? 1.234f : 2.38213f; } We would generate truly awful code on ARM (those with a weak stomach should look away): _t1: movw r1, #1123 movs r2, #1 movs r3, #0 cmp r0, r1 mov.w r0, #0 it eq moveq r0, r2 movs r1, #4 cmp r0, #0 it ne movne r3, r1 adr r0, #LCPI1_0 ldr r0, [r0, r3] bx lr The problem was that legalization was creating a cascade of SELECT_CC nodes, for for the comparison of "argc == 1123" which was fed into a SELECT node for the ?: statement which was itself converted to a SELECT_CC node. This is because the ARM back-end doesn't have custom lowering for SELECT nodes, so it used the default "Expand". I added a fairly simple "LowerSELECT" to the ARM back-end. It takes care of this testcase, but can obviously be expanded to include more cases. Now we generate this, which looks optimal to me: _t1: movw r1, #1123 movs r2, #0 cmp r0, r1 adr r0, #LCPI0_0 it eq moveq r2, #4 ldr r0, [r0, r2] bx lr .align 2 LCPI0_0: .long 1075344593 @ float 2.382130e+00 .long 1067316150 @ float 1.234000e+00 llvm-svn: 110799
-
Evan Cheng authored
Report error if codegen tries to instantiate a ARM target when the cpu does support it. e.g. cortex-m* processors. llvm-svn: 110798
-
Evan Cheng authored
llvm-svn: 110797
-
Evan Cheng authored
llvm-svn: 110796
-
Evan Cheng authored
llvm-svn: 110795
-
Daniel Dunbar authored
MC/ARM: Add basic support for handling predication by parsing it out of the mnemonic into a separate operand form. llvm-svn: 110794
-
Daniel Dunbar authored
llvm-svn: 110793
-
Daniel Dunbar authored
llvm-svn: 110792
-
Daniel Dunbar authored
llvm-svn: 110790
-
Daniel Dunbar authored
llvm-svn: 110788
-
Evan Cheng authored
llvm-svn: 110787
-
Evan Cheng authored
instructions: dmb, dsb, isb, msr, and mrs. llvm-svn: 110786
-
Evan Cheng authored
memory and synchronization barrier dmb and dsb instructions. - Change instruction names to something more sensible (matching name of actual instructions). - Added tests for memory barrier codegen. llvm-svn: 110785
-
Daniel Dunbar authored
llvm-svn: 110783
-
Daniel Dunbar authored
llvm-svn: 110782
-
Daniel Dunbar authored
for some reason they have a very odd MCInst form where the operands overlap, but I haven't dug in to find out why yet. llvm-svn: 110781
-
Daniel Dunbar authored
llvm-svn: 110780
-
Bill Wendling authored
llvm-svn: 110762
-
Bill Wendling authored
llvm-svn: 110761
-
Bob Wilson authored
(I discovered 2 more copies of the ARM instruction format list, bringing the total to 4!! Two of them were already out of sync. I haven't yet gotten into the disassembler enough to know the best way to fix this, but something needs to be done.) Add support for encoding these instructions. llvm-svn: 110754
-
Evan Cheng authored
llvm-svn: 110745
-
- Aug 10, 2010
-
-
Bill Wendling authored
a register before checking if it was defined. llvm-svn: 110733
-
Evan Cheng authored
llvm-svn: 110710
-
Evan Cheng authored
Re-apply r110655 with fixes. Epilogue must restore sp from fp if the function stack frame has a var-sized object. Also added a test case to check for the added benefit of this patch: it's optimizing away the unnecessary restore of sp from fp for some non-leaf functions. llvm-svn: 110707
-
Daniel Dunbar authored
register is", it breaks a couple test-suite tests. llvm-svn: 110701
-
Evan Cheng authored
reserved, not available for general allocation. This eliminates all the extra checks for Darwin. This change also fixes the use of FP to access frame indices in leaf functions and cleaned up some confusing code in epilogue emission. llvm-svn: 110655
-
Evan Cheng authored
This will always be false before PEI: (DisableFramePointerElim(MF) && MFI->adjustsStack()) Which means it's going to make r11 available as a general purpose register even if -disable-fp-elim is specified. It's working on Darwin only because r7 is always reserved. But it's obviously broken for other targets. llvm-svn: 110614
-
- Aug 09, 2010
-
-
Evan Cheng authored
llvm-svn: 110587
-