- May 16, 2006
-
-
Chris Lattner authored
handling. This makes the lower argument code significantly simpler (we only need to handle legal argument types). Incidentally, this also implements support for vector argument registers, so long as they are not on the stack. llvm-svn: 28331
-
- Apr 18, 2006
-
-
Chris Lattner authored
If an altivec predicate compare is used immediately by a branch, don't use a (serializing) MFCR instruction to read the CR6 register, which requires a compare to get it back to CR's. Instead, just branch on CR6 directly. :) For example, for: void foo2(vector float *A, vector float *B) { if (!vec_any_eq(*A, *B)) *B = (vector float){0,0,0,0}; } We now generate: _foo2: mfspr r2, 256 oris r5, r2, 12288 mtspr 256, r5 lvx v2, 0, r4 lvx v3, 0, r3 vcmpeqfp. v2, v3, v2 bne cr6, LBB1_2 ; UnifiedReturnBlock LBB1_1: ; cond_true vxor v2, v2, v2 stvx v2, 0, r4 mtspr 256, r2 blr LBB1_2: ; UnifiedReturnBlock mtspr 256, r2 blr instead of: _foo2: mfspr r2, 256 oris r5, r2, 12288 mtspr 256, r5 lvx v2, 0, r4 lvx v3, 0, r3 vcmpeqfp. v2, v3, v2 mfcr r3, 2 rlwinm r3, r3, 27, 31, 31 cmpwi cr0, r3, 0 beq cr0, LBB1_2 ; UnifiedReturnBlock LBB1_1: ; cond_true vxor v2, v2, v2 stvx v2, 0, r4 mtspr 256, r2 blr LBB1_2: ; UnifiedReturnBlock mtspr 256, r2 blr This implements CodeGen/PowerPC/vec_br_cmp.ll. llvm-svn: 27804
-
- Apr 12, 2006
-
-
Chris Lattner authored
Canonicalize BUILD_VECTOR's that match VSPLTI's into a single type for each form, eliminating a bunch of Pat patterns in the .td file and allowing us to CSE stuff more aggressively. This implements PowerPC/buildvec_canonicalize.ll:VSPLTI llvm-svn: 27614
-
- Apr 08, 2006
-
-
Chris Lattner authored
No functionality changes. llvm-svn: 27536
-
- Apr 07, 2006
-
-
Chris Lattner authored
Convert vsldoi(x,x) to work the same way other (x,x) cases work. llvm-svn: 27467
-
Chris Lattner authored
llvm-svn: 27463
-
- Apr 06, 2006
-
-
Chris Lattner authored
llvm-svn: 27457
-
Chris Lattner authored
lower it and LLVM to have one fewer intrinsic. This implements CodeGen/PowerPC/vec_shuffle.ll llvm-svn: 27450
-
Chris Lattner authored
vperm with a perm mask lvx'd from the constant pool. llvm-svn: 27448
-
- Apr 04, 2006
-
-
Chris Lattner authored
handle all 4 PPC vector types. This simplifies the matching code and allows us to eliminate a bunch of patterns. This also adds cases we were missing, such as CodeGen/PowerPC/vec_splat.ll:splat_h. llvm-svn: 27400
-
- Apr 02, 2006
-
-
Chris Lattner authored
llvm-svn: 27359
-
- Mar 31, 2006
-
-
Chris Lattner authored
predicates to VCMPo nodes. llvm-svn: 27285
-
- Mar 28, 2006
-
-
Chris Lattner authored
same thing and we have a dag node for the former. llvm-svn: 27205
-
- Mar 26, 2006
-
-
Chris Lattner authored
llvm-svn: 27151
-
Evan Cheng authored
llvm-svn: 27149
-
- Mar 25, 2006
-
-
Chris Lattner authored
<int -1, int -1, int -1, int -1> and <int 65537, int 65537, int 65537, int 65537> Using things like: vspltisb v0, -1 and: vspltish v0, 1 instead of using constant pool loads. This implements CodeGen/PowerPC/vec_splat.ll:splat_imm_i{32|16}. llvm-svn: 27106
-
- Mar 24, 2006
-
-
Chris Lattner authored
Regression/CodeGen/PowerPC/vec_zero.ll llvm-svn: 27059
-
- Mar 22, 2006
-
-
Chris Lattner authored
_foo2: extsw r2, r3 std r2, -8(r1) lfd f0, -8(r1) fcfid f0, f0 frsp f1, f0 blr instead of this: _foo2: lis r2, ha16(LCPI2_0) lis r4, 17200 xoris r3, r3, 32768 stw r3, -4(r1) stw r4, -8(r1) lfs f0, lo16(LCPI2_0)(r2) lfd f1, -8(r1) fsub f0, f1, f0 frsp f1, f0 blr This speeds up Misc/pi from 2.44s->2.09s with LLC and from 3.01->2.18s with llcbeta (16.7% and 38.1% respectively). llvm-svn: 26943
-
- Mar 20, 2006
-
-
Chris Lattner authored
llvm-svn: 26896
-
Chris Lattner authored
instructions llvm-svn: 26894
-
Chris Lattner authored
TODO: leave specific ones as VECTOR_SHUFFLE's and turn them into specialized operations like vsplt* llvm-svn: 26887
-
- Mar 19, 2006
-
-
Chris Lattner authored
llvm-svn: 26868
-
- Mar 14, 2006
-
-
Evan Cheng authored
llvm-svn: 26742
-
- Mar 01, 2006
-
-
Chris Lattner authored
void foo(float a, int *b) { *b = a; } to this: _foo: fctiwz f0, f1 stfiwx f0, 0, r4 blr instead of this: _foo: fctiwz f0, f1 stfd f0, -8(r1) lwz r2, -4(r1) stw r2, 0(r4) blr This implements CodeGen/PowerPC/stfiwx.ll, and also incidentally does the right thing for GCC bugzilla 26505. llvm-svn: 26447
-
Chris Lattner authored
llvm-svn: 26445
-
- Feb 22, 2006
-
-
Chris Lattner authored
llvm-svn: 26308
-
Chris Lattner authored
llvm-svn: 26305
-
- Feb 07, 2006
-
-
Chris Lattner authored
llvm-svn: 26042
-
Chris Lattner authored
llvm-svn: 26027
-
- Jan 31, 2006
-
-
Chris Lattner authored
llvm-svn: 25853
-
- Jan 28, 2006
-
-
Chris Lattner authored
llvm-svn: 25717
-
- Jan 27, 2006
-
-
Chris Lattner authored
llvm-svn: 25710
-
Nate Begeman authored
the same functionality. This addresses another piece of bug 680. Next, on to fixing Alpha VAARG, which I broke last time. llvm-svn: 25696
-
- Jan 25, 2006
-
-
Nate Begeman authored
Remove TLI.LowerVA* and replace it with SDNodes that are lowered the same way as everything else. llvm-svn: 25606
-
- Jan 10, 2006
-
-
Chris Lattner authored
llvm-svn: 25166
-
- Dec 20, 2005
-
-
Nate Begeman authored
llvm-svn: 24874
-
- Dec 13, 2005
-
-
Nate Begeman authored
llvm-svn: 24700
-
- Dec 06, 2005
-
-
Chris Lattner authored
amount handling that PPC provides. These are generated by the lowering code and prevents the dag combiner from assuming (rightfully) that the shifts don't only look at 5 bits. This fixes a miscompilation of crafty with the new front-end. llvm-svn: 24615
-
- Nov 17, 2005
-
-
Chris Lattner authored
on Darwin to remove smarts from the isel. This is currently disabled by default (uncomment setOperationAction(ISD::GlobalAddress to enable it). tblgen needs to become smarter about tglobaladdr nodes and bigger patterns needed to be added to the .td file. However, we can currently emit stuff like this: :) li r2, lo16(L_x$non_lazy_ptr) lis r3, ha16(L_x$non_lazy_ptr) lwzx r2, r3, r2 The obvious improvements will follow. llvm-svn: 24390
-
- Oct 19, 2005
-
-
Nate Begeman authored
allows us to lower legal return types to something else, to meet ABI requirements (such as that i64 be returned in two i32 regs on Darwin/ppc). llvm-svn: 23802
-