- Feb 27, 2008
-
-
Dan Gohman authored
llvm-svn: 47686
-
Dan Gohman authored
llvm-svn: 47680
-
Chris Lattner authored
llvm-svn: 47677
-
Duncan Sands authored
llvm-svn: 47676
-
Lauro Ramos Venancio authored
Emit an error when a library is not found. It is the GNU ld behavior and it is expected by the configure scripts. llvm-svn: 47674
-
Duncan Sands authored
approach taken is different to that in LegalizeDAG when it is a question of expanding or promoting the result type: for example, if extracting an i64 from a <2 x i64>, when i64 needs expanding, it bitcasts the vector to <4 x i32>, extracts the appropriate two i32's, and uses those for the Lo and Hi parts. Likewise, when extracting an i16 from a <4 x i16>, and i16 needs promoting, it bitcasts the vector to <2 x i32>, extracts the appropriate i32, twiddles the bits if necessary, and uses that as the promoted value. This puts more pressure on bitcast legalization, and I've added the appropriate cases. They needed to be added anyway since users can generate such bitcasts too if they want to. Also, when considering various cases (Legal, Promote, Expand, Scalarize, Split) it is a pain that expand can correspond to Expand, Scalarize or Split, so I've changed the LegalizeTypes enum so it lists those different cases - now Expand only means splitting a scalar in two. The code produced is the same as by LegalizeDAG for all relevant testcases, except for 2007-10-31-extractelement-i64.ll, where the code seems to have improved (see below; can an expert please tell me if it is better or not). Before < vs after >. < subl $92, %esp < movaps %xmm0, 64(%esp) < movaps %xmm0, (%esp) < movl 4(%esp), %eax < movl %eax, 28(%esp) < movl (%esp), %eax < movl %eax, 24(%esp) < movq 24(%esp), %mm0 < movq %mm0, 56(%esp) --- > subl $44, %esp > movaps %xmm0, 16(%esp) > pshufd $1, %xmm0, %xmm1 > movd %xmm1, 4(%esp) > movd %xmm0, (%esp) > movq (%esp), %mm0 > movq %mm0, 8(%esp) < subl $92, %esp < movaps %xmm0, 64(%esp) < movaps %xmm0, (%esp) < movl 12(%esp), %eax < movl %eax, 28(%esp) < movl 8(%esp), %eax < movl %eax, 24(%esp) < movq 24(%esp), %mm0 < movq %mm0, 56(%esp) --- > subl $44, %esp > movaps %xmm0, 16(%esp) > pshufd $3, %xmm0, %xmm1 > movd %xmm1, 4(%esp) > movhlps %xmm0, %xmm0 > movd %xmm0, (%esp) > movq (%esp), %mm0 > movq %mm0, 8(%esp) < subl $92, %esp < movaps %xmm0, 64(%esp) --- > subl $44, %esp < movl 16(%esp), %eax < movl %eax, 48(%esp) < movl 20(%esp), %eax < movl %eax, 52(%esp) < movaps %xmm0, (%esp) < movl 4(%esp), %eax < movl %eax, 60(%esp) < movl (%esp), %eax < movl %eax, 56(%esp) --- > pshufd $1, %xmm0, %xmm1 > movd %xmm1, 4(%esp) > movd %xmm0, (%esp) > movd %xmm1, 12(%esp) > movd %xmm0, 8(%esp) < subl $92, %esp < movaps %xmm0, 64(%esp) --- > subl $44, %esp < movl 24(%esp), %eax < movl %eax, 48(%esp) < movl 28(%esp), %eax < movl %eax, 52(%esp) < movaps %xmm0, (%esp) < movl 12(%esp), %eax < movl %eax, 60(%esp) < movl 8(%esp), %eax < movl %eax, 56(%esp) --- > pshufd $3, %xmm0, %xmm1 > movd %xmm1, 4(%esp) > movhlps %xmm0, %xmm0 > movd %xmm0, (%esp) > movd %xmm1, 12(%esp) > movd %xmm0, 8(%esp) llvm-svn: 47672
-
Gabor Greif authored
llvm-svn: 47671
-
Duncan Sands authored
operand of a VECTOR_SHUFFLE. The mask is a vector of constant integers. The code in LegalizeDAG doesn't bother to legalize the mask, since it's basically just storage for a bunch of constants, however LegalizeTypes is more picky. The problem is that there may not exist any legal vector-of-integers type with a legal element type, so it is impossible to create a legal mask! Unless of course you cheat by creating a BUILD_VECTOR where the operands have a different type to the element type of the vector being built... This is pretty ugly but works - all relevant tests in the testsuite pass, and produce the same assembler with and without LegalizeTypes. llvm-svn: 47670
-
Duncan Sands authored
llvm-svn: 47669
-
Evan Cheng authored
Don't track max alignment during stack object allocations since they can be deleted later. Let PEI compute it. llvm-svn: 47668
-
Duncan Sands authored
llvm-svn: 47667
-
Bill Wendling authored
llvm-svn: 47663
-
Chris Lattner authored
llvm-svn: 47662
-
Chris Lattner authored
stack slot and store if the SINT_TO_FP is actually legal. This allows us to compile: double a(double b) {return (unsigned)b;} to: _a: cvttsd2siq %xmm0, %rax movl %eax, %eax cvtsi2sdq %rax, %xmm0 ret instead of: _a: subq $8, %rsp cvttsd2siq %xmm0, %rax movl %eax, %eax cvtsi2sdq %rax, %xmm0 addq $8, %rsp ret crazy. llvm-svn: 47660
-
Chris Lattner authored
llvm-svn: 47659
-
Chris Lattner authored
_test: movl %edi, %eax ret instead of: _test: movl $4294967295, %ecx movq %rdi, %rax andq %rcx, %rax ret It would be great to write this as a Pat pattern that used subregs instead of a 'pseudo' instruction, but I don't know how to do that in td files. llvm-svn: 47658
-
Evan Cheng authored
llvm-svn: 47657
-
Dan Gohman authored
llvm-svn: 47656
-
Dan Gohman authored
ComputeMaskedBits to use the APInt form, and remove the non-APInt form. llvm-svn: 47654
-
Devang Patel authored
llvm-svn: 47653
-
Chris Lattner authored
llvm-svn: 47652
-
Dan Gohman authored
Change several cases in SimplifyDemandedMask that don't ever do any simplifying to reuse the logic in ComputeMaskedBits instead of duplicating it. llvm-svn: 47648
-
Bill Wendling authored
llvm-svn: 47644
-
Devang Patel authored
llvm-svn: 47642
-
Devang Patel authored
llvm-svn: 47641
-
Owen Anderson authored
llvm-svn: 47640
-
Owen Anderson authored
in an invalid transformation. llvm-svn: 47639
-
- Feb 26, 2008
-
-
Devang Patel authored
llvm-svn: 47637
-
Arnold Schwaighofer authored
llvm-svn: 47635
-
Devang Patel authored
llvm-svn: 47634
-
Devang Patel authored
llvm-svn: 47633
-
Chris Lattner authored
instead of init'ing it maximally to zeros on entry. getFreePhysReg is pretty hot and only a few elements are typically used. This speeds up linscan by 5% on 176.gcc. llvm-svn: 47631
-
Bill Wendling authored
llvm-svn: 47629
-
Anton Korobeynikov authored
llvm-svn: 47628
-
Bill Wendling authored
would have been a Godsend here! llvm-svn: 47625
-
Evan Cheng authored
llvm-svn: 47623
-
Nick Kledzik authored
first commit of new LTO system. It is not hooked up in the llvm/tools/Makefile, so no one will build it be default yet llvm-svn: 47621
-
Devang Patel authored
llvm-svn: 47619
-
Devang Patel authored
llvm-svn: 47616
-
-