- Apr 09, 2005
-
-
Chris Lattner authored
is deconstructed then reconstructed here. This catches 19 fabs's in 177.mesa 9 in 168.wupwise, 5 in 171.swim, 3 in 172.mgrid, and 14 in 173.applu out of specfp2000. This allows the X86 code generator to make MUCH better code than before for each of these and saves one instr on ppc. This depends on the previous CFE patch to expose these correctly. llvm-svn: 21171
-
Chris Lattner authored
llvm-svn: 21167
-
Chris Lattner authored
llvm-svn: 21166
-
Chris Lattner authored
llvm-svn: 21165
-
Chris Lattner authored
llvm-svn: 21160
-
- Apr 07, 2005
-
-
Chris Lattner authored
this into sign/zero extension instructions later. On PPC, for example, this testcase: %G = external global sbyte implementation void %test(int %X, int %Y) { %C = setlt int %X, %Y %D = cast bool %C to sbyte store sbyte %D, sbyte* %G ret void } Now codegens to: cmpw cr0, r3, r4 li r3, 1 li r4, 0 blt .LBB_test_2 ; .LBB_test_1: ; or r3, r4, r4 .LBB_test_2: ; addis r2, r2, ha16(L_G$non_lazy_ptr-"L00000$pb") lwz r2, lo16(L_G$non_lazy_ptr-"L00000$pb")(r2) stb r3, 0(r2) instead of: cmpw cr0, r3, r4 li r3, 1 li r4, 0 blt .LBB_test_2 ; .LBB_test_1: ; or r3, r4, r4 .LBB_test_2: ; *** rlwinm r3, r3, 0, 31, 31 addis r2, r2, ha16(L_G$non_lazy_ptr-"L00000$pb") lwz r2, lo16(L_G$non_lazy_ptr-"L00000$pb")(r2) stb r3, 0(r2) llvm-svn: 21148
-
Chris Lattner authored
llvm-svn: 21144
-
Chris Lattner authored
(likewise for <= >=u >=u). Second, it implements a special case hack to turn 'X gtu SINTMAX' -> 'X lt 0' On powerpc, for example, this changes this: lis r2, 32767 ori r2, r2, 65535 cmplw cr0, r3, r2 bgt .LBB_test_2 into: cmpwi cr0, r3, 0 blt .LBB_test_2 llvm-svn: 21142
-
Chris Lattner authored
elements auto of the autoCSE maps. llvm-svn: 21128
-
- Apr 06, 2005
-
-
Nate Begeman authored
like PowerPC to codegen long shifts in many fewer instructions. llvm-svn: 21122
-
Nate Begeman authored
llvm-svn: 21103
-
Nate Begeman authored
multiply. llvm-svn: 21102
-
- Apr 04, 2005
-
-
Chris Lattner authored
llvm-svn: 21084
-
Nate Begeman authored
you have something like i16 = truncate i64. This fixes Regression/C/casts llvm-svn: 21073
-
Chris Lattner authored
types. This occurs when casting short to long on PPC for example. llvm-svn: 21072
-
- Apr 02, 2005
-
-
Duraid Madina authored
(which may or be function pointers) in the asmprinter. For the moment, this changes nothing, except the IA64 backend which can use this to write: data8.ua @fptr(blah__blah__mangled_function_name) (by setting FunctionAddrPrefix/Suffix to "@fptr(" / ")") llvm-svn: 21024
-
Chris Lattner authored
llvm-svn: 21014
-
Chris Lattner authored
llvm-svn: 21013
-
Chris Lattner authored
llvm-svn: 21011
-
Chris Lattner authored
dont' regen the whole dag if unneccesary. Second, fix and ugly bug with the _PARTS nodes that caused legalize to produce multiples of them. Finally, implement initial support for FABS and FNEG. Currently FNEG is the only one to be trusted though. llvm-svn: 21009
-
Chris Lattner authored
llvm-svn: 21008
-
Chris Lattner authored
llvm-svn: 21004
-
Chris Lattner authored
llvm-svn: 21002
-
Chris Lattner authored
llvm-svn: 21001
-
Chris Lattner authored
llvm-svn: 20999
-
Nate Begeman authored
llvm-svn: 20994
-
Nate Begeman authored
Teach the SelectionDAG code how to expand and promote it Have PPC32 LowerCallTo generate ISD::UNDEF for int arg regs used up by fp arguments, but not shadowing their value. This allows us to do the right thing with both fixed and vararg floating point arguments. llvm-svn: 20988
-
- Apr 01, 2005
-
-
Chris Lattner authored
llvm-svn: 20976
-
- Mar 31, 2005
-
-
Andrew Lenharth authored
llvm-svn: 20965
-
- Mar 30, 2005
-
-
Chris Lattner authored
them up after the code has been emitted. This allows targets to select one mbb as multiple mbb's as needed. llvm-svn: 20937
-
- Mar 29, 2005
-
-
Chris Lattner authored
returned integer values all of the way to 64-bits (we only did it to 32-bits leaving the top bits undefined). This causes problems for targets like alpha whose ABI's define the top bits too. llvm-svn: 20926
-
Chris Lattner authored
llvm-svn: 20901
-
- Mar 28, 2005
-
-
Andrew Lenharth authored
llvm-svn: 20900
-
- Mar 26, 2005
-
-
Nate Begeman authored
llvm-svn: 20842
-
- Mar 17, 2005
-
-
Chris Lattner authored
Bill Wendling!! llvm-svn: 20649
-
- Mar 15, 2005
-
-
Chris Lattner authored
using Function::arg_{iterator|begin|end}. Likewise Module::g* -> Module::global_*. This patch is contributed by Gabor Greif, thanks! llvm-svn: 20597
-
- Mar 10, 2005
-
-
Chris Lattner authored
llvm-svn: 20555
-
Chris Lattner authored
because we were checking the wrong thing. Thanks to andrew for pointing this out! llvm-svn: 20554
-
Chris Lattner authored
numbering values in live ranges for physical registers. The alpha backend currently generates code that looks like this: vreg = preg ... preg = vreg use preg ... preg = vreg use preg etc. Because vreg contains the value of preg coming in, each of the copies back into preg contain that initial value as well. In the case of the Alpha, this allows this testcase: void "foo"(int %blah) { store int 5, int *%MyVar store int 12, int* %MyVar2 ret void } to compile to: foo: ldgp $29, 0($27) ldiq $0,5 stl $0,MyVar ldiq $0,12 stl $0,MyVar2 ret $31,($26),1 instead of: foo: ldgp $29, 0($27) bis $29,$29,$0 ldiq $1,5 bis $0,$0,$29 stl $1,MyVar ldiq $1,12 bis $0,$0,$29 stl $1,MyVar2 ret $31,($26),1 This does not seem to have any noticable effect on X86 code. This fixes PR535. llvm-svn: 20536
-
- Mar 09, 2005
-
-
Chris Lattner authored
This allows the alpha backend to compile: bool %test(uint %P) { %c = seteq uint %P, 0 ret bool %c } into: test: ldgp $29, 0($27) ZAP $16,240,$0 CMPEQ $0,0,$0 AND $0,1,$0 ret $31,($26),1 instead of: test: ldgp $29, 0($27) ZAP $16,240,$0 ldiq $1,0 ZAP $1,240,$1 CMPEQ $0,$1,$0 AND $0,1,$0 ret $31,($26),1 ... and fixes PR534. llvm-svn: 20534
-