- Jul 09, 2009
-
-
Chris Lattner authored
asmprinter do it. llvm-svn: 75104
-
Chris Lattner authored
in pic or dynamic-no-pic mode. Also, x86-64 never used picstylegot. llvm-svn: 75101
-
Chris Lattner authored
Simplify it away, someone should evaluate this. llvm-svn: 75100
-
Chris Lattner authored
Simplify code based on this. llvm-svn: 75099
-
Chris Lattner authored
code which conflated RIPRel PIC with x86-64. Fix these to just check for X86-64 directly. llvm-svn: 75092
-
Chris Lattner authored
llvm-svn: 75091
-
Chris Lattner authored
x86-64: GOT-style PIC is never used on x86-64. llvm-svn: 75090
-
Chris Lattner authored
llvm-svn: 75089
-
Chris Lattner authored
llvm-svn: 75086
-
- Jul 08, 2009
-
-
Torok Edwin authored
Finish converting lib/Target. llvm-svn: 75043
-
Torok Edwin authored
Also remove trailing semicolon. llvm-svn: 75027
-
Torok Edwin authored
cerr+abort -> llvm_report_error assert(0)+abort -> LLVM_UNREACHABLE (assert(0)+llvm_unreachable-> abort() included) llvm-svn: 75018
-
- Jul 07, 2009
-
-
Dale Johannesen authored
in PIC modes (in accordance with existing comment). gcc.apple/asm-block-25.c llvm-svn: 74886
-
- Jul 03, 2009
-
-
Tilmann Scheller authored
Add NumFixedArgs attribute to CallSDNode which indicates the number of fixed arguments in a vararg call. With the SVR4 ABI on PowerPC, vector arguments for vararg calls are passed differently depending on whether they are a fixed or a variable argument. Variable vector arguments always go into memory, fixed vector arguments are put into vector registers. If there are no free vector registers available, fixed vector arguments are put on the stack. The NumFixedArgs attribute allows to decide for an argument in a vararg call whether it belongs to the fixed or variable portion of the parameter list. llvm-svn: 74764
-
- Jul 01, 2009
-
-
Bill Wendling authored
bytes and not bytes. llvm-svn: 74624
-
Bill Wendling authored
have the alignment be calculated up front, and have the back-ends obey whatever alignment is decided upon. This allows for future work that would allow for precise no-op placement and the like. llvm-svn: 74564
-
- Jun 30, 2009
-
-
David Greene authored
Add a 256-bit register class and YMM registers. llvm-svn: 74469
-
- Jun 29, 2009
-
-
Owen Anderson authored
fence-atomic-fence down to just the atomic op. This is possible thanks to X86's relatively strong memory model, which guarantees that locked instructions (which are used to implement atomics) are implicit fences. llvm-svn: 74435
-
David Greene authored
Add more vector ValueTypes for AVX and other extended vector instruction sets. llvm-svn: 74427
-
- Jun 27, 2009
-
-
Chris Lattner authored
llvm-svn: 74378
-
Chris Lattner authored
implementation primarily differs from the former in that the asmprinter doesn't make a zillion decisions about whether or not something will be RIP relative or not. Instead, those decisions are made by isel lowering and propagated through to the asm printer. To achieve this, we: 1. Represent RIP relative addresses by setting the base of the X86 addr mode to X86::RIP. 2. When ISel Lowering decides that it is safe to use RIP, it lowers to X86ISD::WrapperRIP. When it is unsafe to use RIP, it lowers to X86ISD::Wrapper as before. 3. This removes isRIPRel from X86ISelAddressMode, representing it with a basereg of RIP instead. 4. The addressing mode matching logic in isel is greatly simplified. 5. The asmprinter is greatly simplified, notably the "NotRIPRel" predicate passed through various printoperand routines is gone now. 6. The various symbol printing routines in asmprinter now no longer infer when to emit (%rip), they just print the symbol. I think this is a big improvement over the previous situation. It does have two small caveats though: 1. I implemented a horrible "no-rip" modifier for the inline asm "P" constraint modifier. This is a short term hack, there is a much better, but more involved, solution. 2. I had to xfail an -aggressive-remat testcase because it isn't handling the use of RIP in the constant-pool reading instruction. This specific test is easy to fix without -aggressive-remat, which I intend to do next. llvm-svn: 74372
-
- Jun 26, 2009
-
-
Chris Lattner authored
llvm-svn: 74327
-
Chris Lattner authored
llvm-svn: 74313
-
Chris Lattner authored
llvm-svn: 74246
-
- Jun 21, 2009
-
-
Chris Lattner authored
llvm-svn: 73840
-
- Jun 16, 2009
-
-
Eli Friedman authored
llvm-svn: 73476
-
- Jun 15, 2009
-
-
Chris Lattner authored
llvm-svn: 73372
-
Chris Lattner authored
llvm-svn: 73366
-
- Jun 12, 2009
-
-
Arnold Schwaighofer authored
out of sync with regular cc. The only difference between the tail call cc and the normal cc was that one parameter register - R9 - was reserved for calling functions through a function pointer. After time the tail call cc has gotten out of sync with the regular cc. We can use R11 which is also caller saved but not used as parameter register for potential function pointers and remove the special tail call cc on x86-64. llvm-svn: 73233
-
- Jun 10, 2009
-
-
Anton Korobeynikov authored
llvm-svn: 73152
-
- Jun 07, 2009
-
-
Eli Friedman authored
llvm-svn: 73017
-
Eli Friedman authored
on x86 to handle more cases. Fix a bug in said code that would cause it to read past the end of an object. Rewrite the code in SelectionDAGLegalize::ExpandBUILD_VECTOR to be a bit more general. Remove PerformBuildVectorCombine, which is no longer necessary with these changes. In addition to simplifying the code, with this change, we can now catch a few more cases of consecutive loads. llvm-svn: 73012
-
- Jun 06, 2009
-
-
Eli Friedman authored
llvm-svn: 72991
-
Eli Friedman authored
nodes for vectors with an i16 element type. Add an optimization for building a vector which is all zeros/undef except for the bottom element, where the bottom element is an i8 or i16. llvm-svn: 72988
-
Eli Friedman authored
conversions for x86, like <2 x i32> -> <2 x float> and <4 x i16> -> <4 x float>. llvm-svn: 72983
-
- Jun 05, 2009
-
-
Devang Patel authored
Update code generator to use this attribute and remove NoImplicitFloat target option. Update llc to set this attribute when -no-implicit-float command line option is used. llvm-svn: 72959
-
Nate Begeman authored
build vectors with i64 elements will only appear on 32b x86 before legalize. Since vector widening occurs during legalize, and produces i64 build_vector elements, the dag combiner is never run on these before legalize splits them into 32b elements. Teach the build_vector dag combine in x86 back end to recognize consecutive loads producing the low part of the vector. Convert the two uses of TLI's consecutive load recognizer to pass LoadSDNodes since that was required implicitly. Add a testcase for the transform. Old: subl $28, %esp movl 32(%esp), %eax movl 4(%eax), %ecx movl %ecx, 4(%esp) movl (%eax), %eax movl %eax, (%esp) movaps (%esp), %xmm0 pmovzxwd %xmm0, %xmm0 movl 36(%esp), %eax movaps %xmm0, (%eax) addl $28, %esp ret New: movl 4(%esp), %eax pmovzxwd (%eax), %xmm0 movl 8(%esp), %eax movaps %xmm0, (%eax) ret llvm-svn: 72957
-
Devang Patel authored
llvm-svn: 72954
-
- Jun 03, 2009
-
-
Dan Gohman authored
llvm-svn: 72782
-
- Jun 02, 2009
-
-
Dale Johannesen authored
llvm-svn: 72712
-