Chris Lattner [Thu, 20 Apr 2006 04:22:06 +0000 (04:22 +0000)]
Yeah that's right!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27852
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 20 Apr 2006 04:01:31 +0000 (04:01 +0000)]
Fixes from Tanya
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27851
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Thu, 20 Apr 2006 00:18:39 +0000 (00:18 +0000)]
Add in missing #defines for _OpenBSD_ systems.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27850
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 20 Apr 2006 00:11:39 +0000 (00:11 +0000)]
Handle v2i64 BUILD_VECTOR custom lowering correctly. v2i64 is a legal type,
but i64 is not. If possible, change a i64 op to a f64 (e.g. load, constant)
and then cast it back.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27849
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Wed, 19 Apr 2006 23:47:16 +0000 (23:47 +0000)]
Allow OpenBSD to be recognized as a UNIX platform.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27848
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 19 Apr 2006 23:28:59 +0000 (23:28 +0000)]
isSplatMask() bug: first element can be an undef.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27847
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 19 Apr 2006 23:17:50 +0000 (23:17 +0000)]
Simplify some code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27846
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 19 Apr 2006 22:48:17 +0000 (22:48 +0000)]
- Added support to do aribitrary 4 wide shuffle with no more than three
instructions.
- Fixed a commute vector_shuff bug.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27845
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 19 Apr 2006 21:15:24 +0000 (21:15 +0000)]
Prefer {p}unpack* and mov*dup over {p}shuf* as well.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27844
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 19 Apr 2006 20:38:28 +0000 (20:38 +0000)]
Renamed AddedCost to AddedComplexity.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27843
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 19 Apr 2006 20:37:34 +0000 (20:37 +0000)]
- Renamed AddedCost to AddedComplexity.
- Added more movhlps and movlhps patterns.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27842
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 19 Apr 2006 20:36:09 +0000 (20:36 +0000)]
Rename AddedCost to AddedComplexity.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27841
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 19 Apr 2006 20:35:22 +0000 (20:35 +0000)]
Commute vector_shuffle to match more movlhps, movlp{s|d} cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27840
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 19 Apr 2006 18:45:29 +0000 (18:45 +0000)]
Final piece to get relinked .o files buildable universal on Darwin.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27839
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 19 Apr 2006 18:38:19 +0000 (18:38 +0000)]
Regenerate
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27838
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 19 Apr 2006 18:34:41 +0000 (18:34 +0000)]
When on darwin, compiler_flags need to be percolated down to the 'gcc -r'
command line so that relinked .o files can be built universal.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27837
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 19 Apr 2006 18:20:17 +0000 (18:20 +0000)]
More mov{h|l}p{d|s} patterns.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27836
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 19 Apr 2006 18:11:52 +0000 (18:11 +0000)]
- More mov{h|l}ps patterns.
- Increase cost (complexity) of patterns which match mov{h|l}ps ops. These
are preferred over shufps in most cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27835
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 19 Apr 2006 18:07:24 +0000 (18:07 +0000)]
Allow "let AddedCost = n in" to increase pattern complexity.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27834
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 19 Apr 2006 17:20:48 +0000 (17:20 +0000)]
Alpha too!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27833
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 19 Apr 2006 16:22:38 +0000 (16:22 +0000)]
add a note
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27832
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Wed, 19 Apr 2006 15:34:34 +0000 (15:34 +0000)]
Another simple case type merge case to try
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27831
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Wed, 19 Apr 2006 15:34:02 +0000 (15:34 +0000)]
deal with memchr
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27830
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Wed, 19 Apr 2006 15:33:35 +0000 (15:33 +0000)]
friendlier error message
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27829
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 19 Apr 2006 05:55:06 +0000 (05:55 +0000)]
add a note
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27828
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 19 Apr 2006 05:53:27 +0000 (05:53 +0000)]
Add a note.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27827
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 19 Apr 2006 04:21:57 +0000 (04:21 +0000)]
grammaro
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27826
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 19 Apr 2006 04:21:16 +0000 (04:21 +0000)]
Fix a bug owen noticed
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27825
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 19 Apr 2006 04:12:01 +0000 (04:12 +0000)]
Change wording
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27824
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 19 Apr 2006 04:05:21 +0000 (04:05 +0000)]
add a note
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27823
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 19 Apr 2006 04:02:47 +0000 (04:02 +0000)]
add some more notes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27822
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Wed, 19 Apr 2006 03:45:25 +0000 (03:45 +0000)]
stupid stuff
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27821
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Tue, 18 Apr 2006 23:45:19 +0000 (23:45 +0000)]
fix printing call graphs
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27820
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Tue, 18 Apr 2006 22:36:11 +0000 (22:36 +0000)]
I understand now. Shoot.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27819
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 18 Apr 2006 21:59:43 +0000 (21:59 +0000)]
- PEXTRW cannot take a memory location as its first source operand.
- PINSRWrmi encoding bug.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27818
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 18 Apr 2006 21:56:36 +0000 (21:56 +0000)]
SHUFP{S|D}, PSHUF* encoding bugs. Left out the mask immediate operand.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27817
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 18 Apr 2006 21:55:35 +0000 (21:55 +0000)]
Name change for clarity sake
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27816
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 18 Apr 2006 21:31:08 +0000 (21:31 +0000)]
Encoding bug: CMPPSrmi, CMPPDrmi dropped operand 2 (condtion immediate).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27815
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 18 Apr 2006 21:29:50 +0000 (21:29 +0000)]
Name change for clarity sake
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27814
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 18 Apr 2006 21:29:08 +0000 (21:29 +0000)]
Left a pattern out
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27813
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Tue, 18 Apr 2006 20:59:52 +0000 (20:59 +0000)]
llvm.memc* improvements. helps PA a lot in some specmarks
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27812
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Tue, 18 Apr 2006 19:54:11 +0000 (19:54 +0000)]
llvm.memc* improvements. helps PA a lot in some specmarks
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27811
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 18 Apr 2006 19:03:38 +0000 (19:03 +0000)]
These are correctly encoded by the JIT. I checked :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27810
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 18 Apr 2006 18:30:19 +0000 (18:30 +0000)]
add a note
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27809
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 18 Apr 2006 18:28:22 +0000 (18:28 +0000)]
Fix a crash on:
void foo2(vector float *A, vector float *B) {
vector float C = (vector float)vec_cmpeq(*A, *B);
if (!vec_any_eq(*A, *B))
*B = (vector float){0,0,0,0};
*A = C;
}
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27808
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 18 Apr 2006 18:19:00 +0000 (18:19 +0000)]
Fixed an encoding bug: movd from XMM to R32.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27807
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 18 Apr 2006 18:05:58 +0000 (18:05 +0000)]
pretty print node name
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27806
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 18 Apr 2006 17:59:36 +0000 (17:59 +0000)]
Implement an important entry from README_ALTIVEC:
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27804
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 18 Apr 2006 17:56:30 +0000 (17:56 +0000)]
new testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27803
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 18 Apr 2006 17:52:36 +0000 (17:52 +0000)]
move some stuff around, clean things up
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27802
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 18 Apr 2006 16:44:51 +0000 (16:44 +0000)]
Teach the codegen about instructions used for SSE spill code, allowing it
to optimize cases where it has to spill a lot
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27801
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Tue, 18 Apr 2006 16:03:18 +0000 (16:03 +0000)]
Fix a copy & paste error from long ago.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27800
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 18 Apr 2006 06:32:08 +0000 (06:32 +0000)]
Add some more notes, many still missing
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27799
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Tue, 18 Apr 2006 06:27:47 +0000 (06:27 +0000)]
Have the AutoRegen.sh script prompt the user for the LLVM src and obj
directories if it can't find them. Then, replace those values into the
configure.ac script and pass them to the LLVM_CONFIG_PROJECT so that the
values become the default for llvm_src and llvm_obj variables. In this way
the user is required to input this exactly once, and the scripts take it
from there.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27798
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Tue, 18 Apr 2006 06:25:37 +0000 (06:25 +0000)]
Make it possible to default the llvm_src and llvm_obj variables based on
the arguments to the macro. This better supports the AutoRegen.sh script
in projects/sample/autoconf.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27797
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 18 Apr 2006 06:18:36 +0000 (06:18 +0000)]
add a bunch of stuff, pieces still missing
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27796
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 18 Apr 2006 05:31:20 +0000 (05:31 +0000)]
Add a warning.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27795
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 18 Apr 2006 05:26:10 +0000 (05:26 +0000)]
Add a warning
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27794
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 18 Apr 2006 04:28:57 +0000 (04:28 +0000)]
Use vmladduhm to do v8i16 multiplies which is faster and simpler than doing
even/odd halves. Thanks to Nate telling me what's what.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27793
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 18 Apr 2006 03:57:35 +0000 (03:57 +0000)]
Implement v16i8 multiply with this code:
vmuloub v5, v3, v2
vmuleub v2, v3, v2
vperm v2, v2, v5, v4
This implements CodeGen/PowerPC/vec_mul.ll. With this, v16i8 multiplies are
6.79x faster than before.
Overall, UnitTests/Vector/multiplies.c is now 2.45x faster with LLVM than with
GCC.
Remove the 'integer multiplies' todo from the README file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27792
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 18 Apr 2006 03:54:50 +0000 (03:54 +0000)]
Add tests for v8i16 and v16i8
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27791
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 18 Apr 2006 03:45:01 +0000 (03:45 +0000)]
Correct comments
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27790
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 18 Apr 2006 03:43:48 +0000 (03:43 +0000)]
Lower v8i16 multiply into this code:
li r5, lo16(LCPI1_0)
lis r6, ha16(LCPI1_0)
lvx v4, r6, r5
vmulouh v5, v3, v2
vmuleuh v2, v3, v2
vperm v2, v2, v5, v4
where v4 is:
LCPI1_0: ; <16 x ubyte>
.byte 2
.byte 3
.byte 18
.byte 19
.byte 6
.byte 7
.byte 22
.byte 23
.byte 10
.byte 11
.byte 26
.byte 27
.byte 14
.byte 15
.byte 30
.byte 31
This is 5.07x faster on the G5 (measured) than lowering to scalar code +
loads/stores.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27789
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 18 Apr 2006 03:24:30 +0000 (03:24 +0000)]
Custom lower v4i32 multiplies into a cute sequence, instead of having legalize
scalarize the sequence into 4 mullw's and a bunch of load/store traffic.
This speeds up v4i32 multiplies 4.1x (measured) on a G5. This implements
PowerPC/vec_mul.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27788
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 18 Apr 2006 03:22:16 +0000 (03:22 +0000)]
new testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27787
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 18 Apr 2006 01:22:57 +0000 (01:22 +0000)]
Another entry
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27786
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 18 Apr 2006 00:21:25 +0000 (00:21 +0000)]
Fix a build failure on Vladimir's tester.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27785
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 18 Apr 2006 00:21:01 +0000 (00:21 +0000)]
Another entry.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27784
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 17 Apr 2006 22:45:49 +0000 (22:45 +0000)]
Use movss to insert_vector_elt(v, s, 0).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27782
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 17 Apr 2006 22:26:56 +0000 (22:26 +0000)]
Turn x86 unaligned load/store intrinsics into aligned load/store instructions
if the pointer is known aligned.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27781
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 17 Apr 2006 22:10:08 +0000 (22:10 +0000)]
Fix handling of calls in functions that use vectors. This fixes a crash on
the code in GCC PR26546.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27780
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 17 Apr 2006 22:04:06 +0000 (22:04 +0000)]
Use two pinsrw to insert an element into v4i32 / v4f32 vector.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27779
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 17 Apr 2006 21:52:03 +0000 (21:52 +0000)]
remove done item
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27778
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 17 Apr 2006 21:48:13 +0000 (21:48 +0000)]
Don't diddle VRSAVE if no registers need to be added/removed from it. This
allows us to codegen functions as:
_test_rol:
vspltisw v2, -12
vrlw v2, v2, v2
blr
instead of:
_test_rol:
mfvrsave r2, 256
mr r3, r2
mtvrsave r3
vspltisw v2, -12
vrlw v2, v2, v2
mtvrsave r2
blr
Testcase here: CodeGen/PowerPC/vec_vrsave.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27777
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 17 Apr 2006 21:48:03 +0000 (21:48 +0000)]
New testcase, shouldn't touch vrsave
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27776
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 17 Apr 2006 21:35:41 +0000 (21:35 +0000)]
Add a MachineInstr::eraseFromParent convenience method.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27775
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 17 Apr 2006 21:35:08 +0000 (21:35 +0000)]
Add some convenience methods.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27774
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 17 Apr 2006 21:33:57 +0000 (21:33 +0000)]
Encoding bug
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27773
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 17 Apr 2006 21:22:06 +0000 (21:22 +0000)]
Vectors that are known live-in and live-out are clearly already marked in
the vrsave register for the caller. This allows us to codegen a function as:
_test_rol:
mfspr r2, 256
mr r3, r2
mtspr 256, r3
vspltisw v2, -12
vrlw v2, v2, v2
mtspr 256, r2
blr
instead of:
_test_rol:
mfspr r2, 256
oris r3, r2, 40960
mtspr 256, r3
vspltisw v0, -12
vrlw v2, v0, v0
mtspr 256, r2
blr
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27772
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 17 Apr 2006 21:19:12 +0000 (21:19 +0000)]
Prefer to allocate V2-V5 before V0,V1. This lets us generate code like this:
vspltisw v2, -12
vrlw v2, v2, v2
instead of:
vspltisw v0, -12
vrlw v2, v0, v0
when a function is returning a value.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27771
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 17 Apr 2006 21:07:20 +0000 (21:07 +0000)]
Move some knowledge about registers out of the code emitter into the register info.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27770
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 17 Apr 2006 20:59:25 +0000 (20:59 +0000)]
Use a small table instead of macros to do this conversion.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27769
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 17 Apr 2006 20:43:08 +0000 (20:43 +0000)]
Implement v8i16, v16i8 splat using unpckl + pshufd.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27768
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 17 Apr 2006 20:32:50 +0000 (20:32 +0000)]
implement returns of a vector, testcase here: CodeGen/X86/vec_return.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27767
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 17 Apr 2006 20:32:27 +0000 (20:32 +0000)]
New testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27766
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 17 Apr 2006 19:21:01 +0000 (19:21 +0000)]
Codegen insertelement with constant insertion points as scalar_to_vector
and a shuffle. For this:
void %test2(<4 x float>* %F, float %f) {
%tmp = load <4 x float>* %F ; <<4 x float>> [#uses=2]
%tmp3 = add <4 x float> %tmp, %tmp ; <<4 x float>> [#uses=1]
%tmp2 = insertelement <4 x float> %tmp3, float %f, uint 2 ; <<4 x float>> [#uses=2]
%tmp6 = add <4 x float> %tmp2, %tmp2 ; <<4 x float>> [#uses=1]
store <4 x float> %tmp6, <4 x float>* %F
ret void
}
we now get this on X86 (which will get better):
_test2:
movl 4(%esp), %eax
movaps (%eax), %xmm0
addps %xmm0, %xmm0
movaps %xmm0, %xmm1
shufps $3, %xmm1, %xmm1
movaps %xmm0, %xmm2
shufps $1, %xmm2, %xmm2
unpcklps %xmm1, %xmm2
movss 8(%esp), %xmm1
unpcklps %xmm1, %xmm0
unpcklps %xmm2, %xmm0
addps %xmm0, %xmm0
movaps %xmm0, (%eax)
ret
instead of:
_test2:
subl $28, %esp
movl 32(%esp), %eax
movaps (%eax), %xmm0
addps %xmm0, %xmm0
movaps %xmm0, (%esp)
movss 36(%esp), %xmm0
movss %xmm0, 8(%esp)
movaps (%esp), %xmm0
addps %xmm0, %xmm0
movaps %xmm0, (%eax)
addl $28, %esp
ret
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27765
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 17 Apr 2006 18:09:22 +0000 (18:09 +0000)]
Make sure to check splats of every constant we can, handle splat(31) by
being a bit more clever, add support for odd splats from -31 to -17.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27764
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 17 Apr 2006 18:06:12 +0000 (18:06 +0000)]
Incorrect foldMemoryOperand entries
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27763
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 17 Apr 2006 18:05:01 +0000 (18:05 +0000)]
Errors in patterns preventing load folding
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27762
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeff Cohen [Mon, 17 Apr 2006 17:55:41 +0000 (17:55 +0000)]
Add checks for __OpenBSD__.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27761
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 17 Apr 2006 17:55:10 +0000 (17:55 +0000)]
Teach the ppc backend to use rol and vsldoi to generate splatted constants.
This implements vec_constants.ll:test_vsldoi and test_rol
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27760
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 17 Apr 2006 17:54:18 +0000 (17:54 +0000)]
Some more cases that can be generated with two instructions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27759
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 17 Apr 2006 17:29:41 +0000 (17:29 +0000)]
add a note
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27758
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 17 Apr 2006 07:24:10 +0000 (07:24 +0000)]
FP SETOLT, SETOLT, SETUGE, SETUGT conditions were implemented incorrectly
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27755
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 17 Apr 2006 06:58:41 +0000 (06:58 +0000)]
Make some code more general, adding support for constant formation of several
new patterns.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27754
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 17 Apr 2006 06:58:16 +0000 (06:58 +0000)]
New testcases
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27753
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 17 Apr 2006 06:07:44 +0000 (06:07 +0000)]
Learn how to make odd splatted constants in range [17,29]. This implements
PowerPC/vec_constants.ll:test_29.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27752
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 17 Apr 2006 06:06:50 +0000 (06:06 +0000)]
new testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27751
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 17 Apr 2006 06:00:21 +0000 (06:00 +0000)]
Pull some code out into a helper function.
Effeciently codegen even splats in the range [-32,30].
This allows us to codegen <30,30,30,30> as:
vspltisw v0, 15
vadduwm v2, v0, v0
instead of as a cp load.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27750
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 17 Apr 2006 05:58:22 +0000 (05:58 +0000)]
New testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27749
91177308-0d34-0410-b5e6-
96231b3b80d8