- May 13, 2009
-
-
Evan Cheng authored
llvm-svn: 71726
-
Bill Wendling authored
booleans. This gives a better indication of what the "addReg()" is doing. Remembering what all of those booleans mean isn't easy, especially if you aren't spending all of your time in that code. I took Jakob's suggestion and made it illegal to pass in "true" for the flag. This should hopefully prevent any unintended misuse of this (by reverting to the old way of using addReg()). llvm-svn: 71722
-
Jim Grosbach authored
a supporting preliminary patch for GCC-compatible SjLJ exception handling. Note that these intrinsics are not designed to be invoked directly by the user, but rather used by the front-end as target hooks for exception handling. llvm-svn: 71610
-
Jim Grosbach authored
llvm-svn: 71602
-
- May 12, 2009
-
-
Bob Wilson authored
llvm-svn: 71563
-
Bob Wilson authored
llvm-svn: 71562
-
- May 09, 2009
-
-
Duncan Sands authored
will make it more obvious what it represents, and stop it being confused with the StoreSize. llvm-svn: 71349
-
- Apr 30, 2009
-
-
Bill Wendling authored
which better identifies what the optimization is doing. And is more flexible for future uses. llvm-svn: 70440
-
- Apr 29, 2009
-
-
Bill Wendling authored
Massive check in. This changes the "-fast" flag to "-O#" in llc. If you want to use the old behavior, the flag is -O0. This change allows for finer-grained control over which optimizations are run at different -O levels. Most of this work was pretty mechanical. The majority of the fixes came from verifying that a "fast" variable wasn't used anymore. The JIT still uses a "Fast" flag. I'll change the JIT with a follow-up patch. llvm-svn: 70343
-
- Apr 28, 2009
-
-
Bill Wendling authored
llvm-svn: 70275
-
Bill Wendling authored
use the old behavior, the flag is -O0. This change allows for finer-grained control over which optimizations are run at different -O levels. Most of this work was pretty mechanical. The majority of the fixes came from verifying that a "fast" variable wasn't used anymore. The JIT still uses a "Fast" flag. I'm not 100% sure if it's necessary to change it there... llvm-svn: 70270
-
- Apr 25, 2009
-
-
Bob Wilson authored
f64 types. This is not used for anything yet. llvm-svn: 70006
-
- Apr 24, 2009
-
-
Bob Wilson authored
between registers and the stack may be required with the APCS ABI, but it isn't tied to using a particular version of the ARM architecture. llvm-svn: 69978
-
Bob Wilson authored
chained and "flagged" together. I also made a few changes to handle the chain and flag values more consistently. I found these problems by inspection so I'm not aware of anything that breaks because of them (thus no testcase). llvm-svn: 69977
-
Bob Wilson authored
should be bit-converted to i32, it is sufficient to list only i32 in subsequent definitions. llvm-svn: 69973
-
- Apr 20, 2009
-
-
Bob Wilson authored
in the MachineFunction class, renaming it to addLiveIn for consistency with the same method in MachineBasicBlock. Thanks for Anton for suggesting this. llvm-svn: 69615
-
- Apr 17, 2009
-
-
Bob Wilson authored
llvm-svn: 69382
-
Bob Wilson authored
llvm-svn: 69381
-
Bob Wilson authored
punctuation. No functional changes. llvm-svn: 69378
-
Bob Wilson authored
for ARM. Patch by Sandeep Patel. llvm-svn: 69371
-
- Apr 08, 2009
-
-
Bob Wilson authored
ARMTargetLowering::isLegalAddressingMode. llvm-svn: 68619
-
- Apr 07, 2009
-
-
rdar://problem/6584986Jim Grosbach authored
When compiling in Thumb mode, only the low (R0-R7) registers are available for most instructions. Breaking the low registers into a new register class handles this. Uses of R12, SP, etc, are handled explicitly where needed with copies inserted to move results into low registers where the rest of the code generator can deal with them. llvm-svn: 68545
-
- Apr 06, 2009
-
-
Bob Wilson authored
Patch by Richard Pennington. llvm-svn: 68464
-
- Apr 03, 2009
-
-
Bob Wilson authored
llvm-svn: 68405
-
Bob Wilson authored
llvm-svn: 68404
-
- Apr 01, 2009
-
-
Bob Wilson authored
assembly. llvm-svn: 68218
-
- Mar 30, 2009
-
-
Bob Wilson authored
llvm-svn: 68050
-
- Mar 28, 2009
-
-
Jim Grosbach authored
llvm-svn: 67874
-
- Mar 26, 2009
-
-
Evan Cheng authored
llvm-svn: 67765
-
- Mar 25, 2009
-
-
Evan Cheng authored
llvm-svn: 67668
-
- Mar 24, 2009
-
-
Evan Cheng authored
llvm-svn: 67580
-
- Mar 21, 2009
-
-
Bob Wilson authored
llvm-svn: 67416
-
- Mar 20, 2009
-
-
Bob Wilson authored
llvm-svn: 67412
-
- Mar 13, 2009
-
-
Evan Cheng authored
Fix some significant problems with constant pools that resulted in unnecessary paddings between constant pool entries, larger than necessary alignments (e.g. 8 byte alignment for .literal4 sections), and potentially other issues. 1. ConstantPoolSDNode alignment field is log2 value of the alignment requirement. This is not consistent with other SDNode variants. 2. MachineConstantPool alignment field is also a log2 value. 3. However, some places are creating ConstantPoolSDNode with alignment value rather than log2 values. This creates entries with artificially large alignments, e.g. 256 for SSE vector values. 4. Constant pool entry offsets are computed when they are created. However, asm printer group them by sections. That means the offsets are no longer valid. However, asm printer uses them to determine size of padding between entries. 5. Asm printer uses expensive data structure multimap to track constant pool entries by sections. 6. Asm printer iterate over SmallPtrSet when it's emitting constant pool entries. This is non-deterministic. Solutions: 1. ConstantPoolSDNode alignment field is changed to keep non-log2 value. 2. MachineConstantPool alignment field is also changed to keep non-log2 value. 3. Functions that create ConstantPool nodes are passing in non-log2 alignments. 4. MachineConstantPoolEntry no longer keeps an offset field. It's replaced with an alignment field. Offsets are not computed when constant pool entries are created. They are computed on the fly in asm printer and JIT. 5. Asm printer uses cheaper data structure to group constant pool entries. 6. Asm printer compute entry offsets after grouping is done. 7. Change JIT code to compute entry offsets on the fly. llvm-svn: 66875
-
- Mar 12, 2009
-
-
Chris Lattner authored
related transformations out of target-specific dag combine into the ARM backend. These were added by Evan in r37685 with no testcases and only seems to help ARM (e.g. test/CodeGen/ARM/select_xform.ll). Add some simple X86-specific (for now) DAG combines that turn things like cond ? 8 : 0 -> (zext(cond) << 3). This happens frequently with the recently added cp constant select optimization, but is a very general xform. For example, we now compile the second example in const-select.ll to: _test: movsd LCPI2_0, %xmm0 ucomisd 8(%esp), %xmm0 seta %al movzbl %al, %eax movl 4(%esp), %ecx movsbl (%ecx,%eax,4), %eax ret instead of: _test: movl 4(%esp), %eax leal 4(%eax), %ecx movsd LCPI2_0, %xmm0 ucomisd 8(%esp), %xmm0 cmovbe %eax, %ecx movsbl (%ecx), %eax ret This passes multisource and dejagnu. llvm-svn: 66779
-
- Mar 11, 2009
-
-
Duncan Sands authored
linkage, so remove it. llvm-svn: 66690
-
Chris Lattner authored
llvm-svn: 66660
-
- Mar 09, 2009
-
-
Evan Cheng authored
ARM target now also recognize triplets like thumbv6-apple-darwin and set thumb mode and arch subversion. Eventually thumb triplets will go way and replaced with function notes. llvm-svn: 66435
-
Evan Cheng authored
ARM isLegalAddressImmediate should check if type is a simple type now that optimizer can create values of funky scalar types. llvm-svn: 66429
-
- Mar 08, 2009
-
-
Evan Cheng authored
llvm-svn: 66365
-