- 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
-
- Mar 07, 2009
-
-
Duncan Sands authored
and extern_weak_odr. These are the same as the non-odr versions, except that they indicate that the global will only be overridden by an *equivalent* global. In C, a function with weak linkage can be overridden by a function which behaves completely differently. This means that IP passes have to skip weak functions, since any deductions made from the function definition might be wrong, since the definition could be replaced by something completely different at link time. This is not allowed in C++, thanks to the ODR (One-Definition-Rule): if a function is replaced by another at link-time, then the new function must be the same as the original function. If a language knows that a function or other global can only be overridden by an equivalent global, it can give it the weak_odr linkage type, and the optimizers will understand that it is alright to make deductions based on the function body. The code generators on the other hand map weak and weak_odr linkage to the same thing. llvm-svn: 66339
-
- Mar 03, 2009
-
-
Dan Gohman authored
and put @file directives on their own comment line. llvm-svn: 65920
-
- Feb 24, 2009
-
-
Bill Wendling authored
them are generic changes. - Use the "fast" flag that's already being passed into the asm printers instead of shoving it into the DwarfWriter. - Instead of calling "MI->getParent()->getParent()" for every MI, set the machine function when calling "runOnMachineFunction" in the asm printers. llvm-svn: 65379
-
- Feb 23, 2009
-
-
Bill Wendling authored
llvm-svn: 65298
-
- Feb 18, 2009
-
-
Dan Gohman authored
llvm-svn: 64891
-
Evan Cheng authored
GV with null value initializer shouldn't go to BSS if it's meant for a mergeable strings section. Currently it only checks for Darwin. Someone else please check if it should apply to other targets as well. llvm-svn: 64877
-
- Feb 13, 2009
-
-
Dale Johannesen authored
llvm-svn: 64430
-
Dale Johannesen authored
llvm-svn: 64429
-
Dale Johannesen authored
Modify callers. llvm-svn: 64409
-
- Feb 12, 2009
-
-
Chris Lattner authored
llvm-svn: 64384
-
Bill Wendling authored
llvm-svn: 64342
-
- Feb 09, 2009
-
-
Evan Cheng authored
suprise to some callers, e.g. register coalescer. For now, add an parameter that tells AnalyzeBranch whether it's safe to modify the mbb. A better solution is out there, but I don't have time to deal with it right now. llvm-svn: 64124
-
- Feb 07, 2009
-
-
Dan Gohman authored
ScheduleDAG's TLI member to use const. llvm-svn: 64018
-
Dale Johannesen authored
Many targets build placeholder nodes for special operands, e.g. GlobalBaseReg on X86 and PPC for the PIC base. There's no sensible way to associate debug info with these. I've left them built with getNode calls with explicit DebugLoc::getUnknownLoc operands. I'm not too happy about this but don't see a good improvement; I considered adding a getPseudoOperand or something, but it seems to me that'll just make it harder to read. llvm-svn: 63992
-
Dale Johannesen authored
getCALLSEQ_{END,START} to permit passing no DebugLoc there. UNDEF doesn't logically have DebugLoc; add getUNDEF to encapsulate this. llvm-svn: 63978
-
- Feb 06, 2009
-
-
Dale Johannesen authored
llvm-svn: 63969
-
Dale Johannesen authored
llvm-svn: 63951
-
Evan Cheng authored
llvm-svn: 63938
-
Dale Johannesen authored
llvm-svn: 63909
-
Dale Johannesen authored
its corresponding getTargetNode. Lots of caller changes. llvm-svn: 63904
-