- Oct 13, 2010
-
-
Jim Grosbach authored
explicit handling of the instructions referencing it from the MC code emitter. llvm-svn: 116367
-
- Oct 12, 2010
-
-
Jim Grosbach authored
llvm-svn: 116321
-
Jim Grosbach authored
ARM instructions. llvm-svn: 116313
-
Jim Grosbach authored
register operand. llvm-svn: 116259
-
- Oct 11, 2010
-
-
Jim Grosbach authored
matching in tblgen to do the predicate operand. llvm-svn: 116213
-
- Oct 08, 2010
-
-
Jim Grosbach authored
concept level stuff at this point, but it is generally working for those instructions that know how to map the operands. This patch fills in the register operands for add/sub/or/etc instructions and adds the conditional execution predicate encoding. llvm-svn: 116112
-
- Oct 07, 2010
-
-
Jim Grosbach authored
llvm-svn: 115884
-
Jim Grosbach authored
llvm-svn: 115853
-
- Oct 06, 2010
-
-
Jim Grosbach authored
llvm-svn: 115845
-
Evan Cheng authored
allow target to correctly compute latency for cases where static scheduling itineraries isn't sufficient. e.g. variable_ops instructions such as ARM::ldm. This also allows target without scheduling itineraries to compute operand latencies. e.g. X86 can return (approximated) latencies for high latency instructions such as division. - Compute operand latencies for those defined by load multiple instructions, e.g. ldm and those used by store multiple instructions, e.g. stm. llvm-svn: 115755
-
- Oct 02, 2010
-
-
Jim Grosbach authored
llvm-svn: 115370
-
- Sep 30, 2010
-
-
Jim Grosbach authored
llvm-svn: 115193
-
Jim Grosbach authored
llvm-svn: 115160
-
Jim Grosbach authored
Now that the MC lowering handles the expansion of the pseudos, kill the horrible blobs of text. llvm-svn: 115130
-
Evan Cheng authored
1. Cortex-a9 8-bit and 16-bit loads / stores AGU cycles are 1 cycle longer than 32-bit ones. 2. Cortex-a9 is out-of-order so model all read cycles as cycle 1. 3. Lots of other random fixes for A8 and A9. llvm-svn: 115121
-
- Sep 29, 2010
-
-
Jim Grosbach authored
which require the use of the shifter-operand. This will be used to split the ldr/str instructions such that those versions needing the shifter operand can get a different scheduling itenerary, as in some cases, the use of the shifter can cause different scheduling than the simpler forms. llvm-svn: 115066
-
Evan Cheng authored
llvm-svn: 115010
-
Evan Cheng authored
Assign bitwise binary instructions different itinerary classes from ALU instructions such as add / sub. llvm-svn: 115008
-
- Sep 25, 2010
-
-
Evan Cheng authored
llvm-svn: 114780
-
Evan Cheng authored
Fix scheduling itinerary for pseudo mov immediate instructions which expand into two real instructions. llvm-svn: 114766
-
- Sep 24, 2010
-
-
Owen Anderson authored
reflection, this isn't going to achieve the purpose I intended it for. Back to the drawing board! llvm-svn: 114710
-
Jim Grosbach authored
llvm-svn: 114706
-
Jim Grosbach authored
llvm-svn: 114705
-
Owen Anderson authored
llvm-svn: 114703
-
- Sep 23, 2010
-
-
Jim Grosbach authored
(yet) recognize the 'trap' mnemonic, so we use .short/.long to emit the opcode directly. On Darwin, however, we do want the mnemonic for more readable assembly code and better disassembly. Adjust the .td file to use the 'trap' mnemonic and handle using the binutils workaround in the assembly printer. Also tweak the formatting of the opcode values to make them consistent between the MC printer and the old printer. llvm-svn: 114679
-
- Sep 21, 2010
-
-
Chris Lattner authored
passed the root of the match, even though only a few patterns actually needed this (one in X86, several in ARM [which should be refactored anyway], and some in CellSPU that I don't feel like detangling). Instead of requiring all ComplexPatterns to take the dead root, have targets opt into getting the root by putting SDNPWantRoot on the ComplexPattern. llvm-svn: 114471
-
- Sep 10, 2010
-
-
Bill Wendling authored
llvm-svn: 113584
-
- Sep 09, 2010
-
-
Evan Cheng authored
llvm-svn: 113435
-
- Sep 01, 2010
-
-
Chris Lattner authored
the testcases should be merged. llvm-svn: 112711
-
Bill Wendling authored
int x(int t) { if (t & 256) return -26; return 0; } We generate this: tst.w r0, #256 mvn r0, #25 it eq moveq r0, #0 while gcc generates this: ands r0, r0, #256 it ne mvnne r0, #25 bx lr Scandalous really! During ISel time, we can look for this particular pattern. One where we have a "MOVCC" that uses the flag off of a CMPZ that itself is comparing an AND instruction to 0. Something like this (greatly simplified): %r0 = ISD::AND ... ARMISD::CMPZ %r0, 0 @ sets [CPSR] %r0 = ARMISD::MOVCC 0, -26 @ reads [CPSR] All we have to do is convert the "ISD::AND" into an "ARM::ANDS" that sets [CPSR] when it's zero. The zero value will all ready be in the %r0 register and we only need to change it if the AND wasn't zero. Easy! llvm-svn: 112664
-
Bill Wendling authored
llvm-svn: 112654
-
- Aug 30, 2010
-
-
Jim Grosbach authored
Make ARM add rN, sp, #imm instructions rematerializable. That's how the address of locals is calculated, so this should help relieve register pressure a bit. Recalculating the local address is almost always going to be better than spilling. llvm-svn: 112503
-
- Aug 29, 2010
-
-
Bill Wendling authored
llvm-svn: 112421
-
Bill Wendling authored
llvm-svn: 112394
-
- Aug 26, 2010
-
-
Bill Wendling authored
llvm-svn: 112206
-
- Aug 17, 2010
-
-
Jakob Stoklund Olesen authored
llvm-svn: 111277
-
Jim Grosbach authored
llvm-svn: 111266
-
Bob Wilson authored
printing "lsl #0". This fixes the remaining parts of pr7792. Make corresponding changes for encoding/decoding these instructions. llvm-svn: 111251
-
Bob Wilson authored
that the high halfword is zero. The shift need not be exactly 16 bits. llvm-svn: 111196
-
- Aug 16, 2010
-
-
Bob Wilson authored
instructions besides saturate instructions. No functional changes. llvm-svn: 111168
-