Chris Lattner [Mon, 1 May 2006 23:18:55 +0000 (23:18 +0000)]
New testcase that crashes the new CFE.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28042
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 1 May 2006 22:03:24 +0000 (22:03 +0000)]
Fix a latent bug that my spiller patch last week exposed: we were leaving
instructions in the virtregfolded map that were deleted. Because they
were deleted, newly allocated instructions could end up at the same address,
magically finding themselves in the map. The solution is to remove entries
from the map when we delete the instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28041
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 1 May 2006 21:17:10 +0000 (21:17 +0000)]
When promoting a load to a reg-reg copy, where the load was a previous
instruction folded with spill code, make sure the remove the load from
the virt reg folded map.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28040
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 1 May 2006 21:16:03 +0000 (21:16 +0000)]
Remove previous patch, which wasn't quite right.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28039
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 1 May 2006 17:01:17 +0000 (17:01 +0000)]
instructions can be in different namespaces. Make sure to use the right
one for each instruction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28038
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 1 May 2006 17:00:49 +0000 (17:00 +0000)]
Put PHI/INLINEASM into the correct namespace.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28037
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 1 May 2006 09:30:17 +0000 (09:30 +0000)]
Formating
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28036
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 1 May 2006 09:20:44 +0000 (09:20 +0000)]
Dis-favor stores more
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28035
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 1 May 2006 09:14:40 +0000 (09:14 +0000)]
Bottom up register-pressure reduction scheduler now pushes store operations
up the schedule. This helps code that looks like this:
loads ...
computations (first set) ...
stores (first set) ...
loads
computations (seccond set) ...
stores (seccond set) ...
Without this change, the stores and computations are more likely to
interleave:
loads ...
loads ...
computations (first set) ...
computations (second set) ...
computations (first set) ...
stores (first set) ...
computations (second set) ...
stores (stores set) ...
This can increase the number of spills if we are unlucky.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28033
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 1 May 2006 09:04:20 +0000 (09:04 +0000)]
Mark instructions whose pattern is (store ...) isStore.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28032
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 1 May 2006 08:56:34 +0000 (08:56 +0000)]
Didn't mean ScheduleDAGList.cpp to make the last checkin.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28030
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 1 May 2006 08:54:57 +0000 (08:54 +0000)]
Remove temp. option -spiller-check-liveout, it didn't cause any failure nor performance regressions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28029
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 1 May 2006 05:56:51 +0000 (05:56 +0000)]
Intel mode no longer uses %'s on registers
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28028
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 1 May 2006 05:53:50 +0000 (05:53 +0000)]
Remove %'s from register names when in intel mode.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28027
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 1 May 2006 04:11:03 +0000 (04:11 +0000)]
Format #APP lines a bit nicer
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28026
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Sun, 30 Apr 2006 08:41:47 +0000 (08:41 +0000)]
Local spiller kills a store if the folded restore is turned into a copy.
But this is incorrect if the spilled value live range extends beyond the
current BB.
It is currently controlled by a temporary option -spiller-check-liveout.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28024
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeff Cohen [Sat, 29 Apr 2006 18:41:44 +0000 (18:41 +0000)]
Mingw32 patches supplied by Anton Korobeynikov.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28023
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 28 Apr 2006 23:33:20 +0000 (23:33 +0000)]
Remove a bogus transformation. This fixes SingleSource/UnitTests/2006-01-23-InitializedBitField.c
with some changes I have to the new CFE.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28022
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 28 Apr 2006 23:19:39 +0000 (23:19 +0000)]
I can't spell: Register, not Regsiter.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28021
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 28 Apr 2006 23:11:40 +0000 (23:11 +0000)]
Implemented x86 inline asm b, h, w, k modifiers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28020
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 28 Apr 2006 22:21:41 +0000 (22:21 +0000)]
Fix InstCombine/2006-04-28-ShiftShiftLongLong.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28019
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 28 Apr 2006 22:17:20 +0000 (22:17 +0000)]
new testcase miscompiled by instcombine
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28018
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 28 Apr 2006 21:56:10 +0000 (21:56 +0000)]
Fix CodeGen/Generic/2006-04-28-Sign-extend-bool.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28017
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 28 Apr 2006 21:52:24 +0000 (21:52 +0000)]
testcase that crashes the ppc backend, which can't sextinreg(i1)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28016
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 28 Apr 2006 21:29:37 +0000 (21:29 +0000)]
Initial caller side support (for CCC only, not FastCC) of 128-bit vector
passing by value.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28015
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 28 Apr 2006 21:19:05 +0000 (21:19 +0000)]
Bare-bone X86 inline asm printer support.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28014
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 28 Apr 2006 18:55:34 +0000 (18:55 +0000)]
Update. It should use two shufps, not three!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28013
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 28 Apr 2006 18:54:11 +0000 (18:54 +0000)]
Remove the temporary option: -no-isel-fold-inflight
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28012
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 28 Apr 2006 07:03:38 +0000 (07:03 +0000)]
Implement four-wide shuffle with 2 shufps if no more than two elements come
from each vector. e.g.
shuffle(G1, G2, 7, 1, 5, 2)
==>
movaps _G2, %xmm0
shufps $151, _G1, %xmm0
shufps $216, %xmm0, %xmm0
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28011
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 28 Apr 2006 05:36:25 +0000 (05:36 +0000)]
Fix PR743: emit -help output of a tool to cout, not cerr.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28010
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 28 Apr 2006 05:25:15 +0000 (05:25 +0000)]
TargetLowering::LowerArguments should return a VBIT_CONVERT of
FORMAL_ARGUMENTS SDOperand in the return result vector.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28009
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 28 Apr 2006 04:43:18 +0000 (04:43 +0000)]
Mapping of physregs can make it so that the designated and input physregs are
the same. In this case, don't emit a noop copy.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28008
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 28 Apr 2006 04:14:49 +0000 (04:14 +0000)]
Fix Transforms/Reassociate/2006-04-27-ReassociateVector.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28007
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 28 Apr 2006 04:14:29 +0000 (04:14 +0000)]
new testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28006
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 28 Apr 2006 02:23:35 +0000 (02:23 +0000)]
Use movaps instead of movapd for spill / restore.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28005
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 28 Apr 2006 02:09:19 +0000 (02:09 +0000)]
Added a temporary option -no-isel-fold-inflight to control whether a "inflight"
node can be folded.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28003
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 28 Apr 2006 02:08:10 +0000 (02:08 +0000)]
When isel'ing a node, mark its operands "InFlight" before selecting them. These
nodes should not be folded into other nodes.
This fixes the miscompilation of PR 749.
Temporarily under flag control.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28002
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 28 Apr 2006 01:46:50 +0000 (01:46 +0000)]
When we have a two-address instruction where the input cannot be clobbered
and is already available, instead of falling back to emitting a load, fall
back to emitting a reg-reg copy. This generates significantly better code
for some SSE testcases, as SSE has lots of two-address instructions and
none of them are read/modify/write. As one example, this change does:
pshufd %XMM5, XMMWORD PTR [%ESP + 84], 255
xorps %XMM2, %XMM5
cmpltps %XMM1, %XMM0
- movaps XMMWORD PTR [%ESP + 52], %XMM0
- movapd %XMM6, XMMWORD PTR [%ESP + 52]
+ movaps %XMM6, %XMM0
cmpltps %XMM6, XMMWORD PTR [%ESP + 68]
movapd XMMWORD PTR [%ESP + 52], %XMM6
movaps %XMM6, %XMM0
cmpltps %XMM6, XMMWORD PTR [%ESP + 36]
cmpltps %XMM3, %XMM0
- movaps XMMWORD PTR [%ESP + 20], %XMM0
- movapd %XMM7, XMMWORD PTR [%ESP + 20]
+ movaps %XMM7, %XMM0
cmpltps %XMM7, XMMWORD PTR [%ESP + 4]
movapd XMMWORD PTR [%ESP + 20], %XMM7
cmpltps %XMM4, %XMM0
... which is far better than a store followed by a load!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28001
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 28 Apr 2006 01:21:37 +0000 (01:21 +0000)]
Test case for PR748
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28000
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 28 Apr 2006 00:04:05 +0000 (00:04 +0000)]
Add a note
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27999
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 27 Apr 2006 21:40:57 +0000 (21:40 +0000)]
Add a note
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27998
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 27 Apr 2006 21:14:21 +0000 (21:14 +0000)]
Add support for inserting undef into a vector. This implements
Transforms/InstCombine/vec_insert_to_shuffle.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27997
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 27 Apr 2006 21:13:58 +0000 (21:13 +0000)]
This should turn into one vector shuffle instruction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27996
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 27 Apr 2006 08:40:39 +0000 (08:40 +0000)]
Make x86 isel lowering produce tailcall nodes. They are match to normal calls
for now.
Patch contributed by Alexander Friedman.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27994
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 27 Apr 2006 08:31:33 +0000 (08:31 +0000)]
A couple of new entries.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27993
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 27 Apr 2006 08:31:10 +0000 (08:31 +0000)]
Support for passing 128-bit vector arguments via XMM registers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27992
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 27 Apr 2006 08:29:42 +0000 (08:29 +0000)]
Insert a VBIT_CONVERT between a FORMAL_ARGUMENT node and its vector uses
(VAND, VADD, etc.). Legalizer will assert otherwise.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27991
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Thu, 27 Apr 2006 07:49:24 +0000 (07:49 +0000)]
For PR747:
If we fail to find a required program, simply set that program to echo
out something that tells the user the situation. That is, instead of just
"true runtest" we now get "echo 'Skipped: runtest not found'".
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27990
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 27 Apr 2006 05:44:50 +0000 (05:44 +0000)]
Oops
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27989
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 27 Apr 2006 05:35:28 +0000 (05:35 +0000)]
Bug fix: not updating NumIntRegs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27988
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 27 Apr 2006 05:01:07 +0000 (05:01 +0000)]
Fix Regression/CodeGen/Generic/2006-04-26-SetCCAnd.ll and
PR748.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27987
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 27 Apr 2006 05:00:43 +0000 (05:00 +0000)]
new testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27986
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 27 Apr 2006 01:32:22 +0000 (01:32 +0000)]
- Clean up formal argument lowering code. Prepare for vector pass by value work.
- Fixed vararg support.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27985
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 27 Apr 2006 01:14:43 +0000 (01:14 +0000)]
Fix some nondeterminstic behavior in the mem2reg pass that (in addition to
nondeterminism being bad) could cause some trivial missed optimizations (dead
phi nodes being left around for later passes to clean up).
With this, llvm-gcc4 now bootstraps and correctly compares. I don't know
why I never tried to do it before... :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27984
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeff Cohen [Wed, 26 Apr 2006 21:03:17 +0000 (21:03 +0000)]
Actually, semantical doesn't appear to be a word.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27983
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 26 Apr 2006 18:34:07 +0000 (18:34 +0000)]
Implement Transforms/IndVarsSimplify/complex-scev.ll, a case where we didn't
recognize some simple affine IV's.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27982
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 26 Apr 2006 18:32:59 +0000 (18:32 +0000)]
new testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27981
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 26 Apr 2006 18:21:31 +0000 (18:21 +0000)]
Fix fastcc failures.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27980
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 26 Apr 2006 18:10:59 +0000 (18:10 +0000)]
Unfortunately this really isn't the place for advertisement.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27979
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeff Cohen [Wed, 26 Apr 2006 18:05:25 +0000 (18:05 +0000)]
Fix typo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27978
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Wed, 26 Apr 2006 15:46:53 +0000 (15:46 +0000)]
Fix some anchors.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27977
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Wed, 26 Apr 2006 14:52:19 +0000 (14:52 +0000)]
Add some notes about the current state of source (front end) languages
so we can point to them on llvm-dev.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27976
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 26 Apr 2006 01:20:17 +0000 (01:20 +0000)]
Switching over FORMAL_ARGUMENTS mechanism to lower call arguments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27975
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 25 Apr 2006 23:03:35 +0000 (23:03 +0000)]
Don't forget return void.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27974
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Tue, 25 Apr 2006 20:54:26 +0000 (20:54 +0000)]
Keep the stack from on darwin 16-byte aligned. This fixes many JIT
failres.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27973
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 25 Apr 2006 20:13:52 +0000 (20:13 +0000)]
Separate LowerOperation() into multiple functions, one per opcode.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27972
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Tue, 25 Apr 2006 19:33:41 +0000 (19:33 +0000)]
slightly more useful error message
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27971
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Tue, 25 Apr 2006 19:33:23 +0000 (19:33 +0000)]
better c99 struct handling
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27970
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Tue, 25 Apr 2006 19:27:56 +0000 (19:27 +0000)]
another c99 style problem
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27969
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 25 Apr 2006 17:48:41 +0000 (17:48 +0000)]
Fix a typo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27968
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Tue, 25 Apr 2006 17:46:32 +0000 (17:46 +0000)]
Fix a warning
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27967
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Tue, 25 Apr 2006 04:45:59 +0000 (04:45 +0000)]
No functionality changes, but cleaner code with correct comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27966
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 25 Apr 2006 00:50:01 +0000 (00:50 +0000)]
Explicitly specify result type for def : Pat<> patterns (if it produces a vector
result). Otherwise tblgen will pick the default (v16i8 for 128-bit vector).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27965
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 24 Apr 2006 23:34:56 +0000 (23:34 +0000)]
Added X86 SSE2 intrinsics which can be represented as vector_shuffles. This is
a temporary workaround for the 2-wide vector_shuffle problem (i.e. its mask
would have type v2i32 which is not legal).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27964
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 24 Apr 2006 23:30:10 +0000 (23:30 +0000)]
Add a new entry.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27963
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 24 Apr 2006 23:03:22 +0000 (23:03 +0000)]
Added a movq test case.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27962
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 24 Apr 2006 22:58:52 +0000 (22:58 +0000)]
Special case handling two wide build_vector(0, x).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27961
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 24 Apr 2006 21:58:20 +0000 (21:58 +0000)]
Some missing movlps, movhps, movlpd, and movhpd patterns.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27960
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 24 Apr 2006 18:01:45 +0000 (18:01 +0000)]
A little bit more build_vector enhancement for v8i16 cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27959
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 24 Apr 2006 17:38:16 +0000 (17:38 +0000)]
Remove a completed entry.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27958
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 24 Apr 2006 16:34:45 +0000 (16:34 +0000)]
Suggest looking at the SPARC backend. How weird is that?? :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27957
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 24 Apr 2006 06:42:15 +0000 (06:42 +0000)]
Added addJumpTableIndex
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27956
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 24 Apr 2006 05:37:35 +0000 (05:37 +0000)]
MakeMIInst() should handle jump table index operands.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27955
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 23 Apr 2006 19:47:09 +0000 (19:47 +0000)]
Add a note
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27954
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Sun, 23 Apr 2006 06:35:19 +0000 (06:35 +0000)]
MOVL shuffle (i.e. movd or movss / movsd from memory) of undef, V2 == V2
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27953
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Sun, 23 Apr 2006 06:26:20 +0000 (06:26 +0000)]
Fix the updating of the machine CFG when a PHI node was in a successor of
the jump table's range check block. This re-enables 100% dense jump tables
by default on PPC & x86
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27952
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeff Cohen [Sun, 23 Apr 2006 04:37:08 +0000 (04:37 +0000)]
Keep Visual Studio informed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27951
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Sat, 22 Apr 2006 23:52:35 +0000 (23:52 +0000)]
Code cleanup associated with jump tables, thanks to Chris for noticing
these.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27950
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Sat, 22 Apr 2006 23:51:56 +0000 (23:51 +0000)]
Turn of jump tables for a bit, there are still some issues to work out with
updating the machine CFG.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27949
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Sat, 22 Apr 2006 22:31:45 +0000 (22:31 +0000)]
Optimized stores to the constant pool, while cool, are unnecessary.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27948
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Sat, 22 Apr 2006 18:53:45 +0000 (18:53 +0000)]
JumpTable support! What this represents is working asm and jit support for
x86 and ppc for 100% dense switch statements when relocations are non-PIC.
This support will be extended and enhanced in the coming days to support
PIC, and less dense forms of jump tables.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27947
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Sat, 22 Apr 2006 08:34:05 +0000 (08:34 +0000)]
Don't do all the lowering stuff for 2-wide build_vector's. Also, minor optimization for shuffle of undef.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27946
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Sat, 22 Apr 2006 06:21:46 +0000 (06:21 +0000)]
Fix a performance regression. Use {p}shuf* when there are only two distinct elements in a build_vector.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27945
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Sat, 22 Apr 2006 06:19:11 +0000 (06:19 +0000)]
Two more build_vector tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27944
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 22 Apr 2006 06:17:56 +0000 (06:17 +0000)]
Teach the JIT how to relocate LI, this fixes the JIT on Prolangs-C/TimberWolfMC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27943
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 22 Apr 2006 05:04:23 +0000 (05:04 +0000)]
This no longer needs the JIT.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27942
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 22 Apr 2006 05:02:46 +0000 (05:02 +0000)]
Fix JIT support for static ctors, which was apparently completely broken!
This allows Prolangs-C++/city and probably a bunch of other stuff to work
well with the new front-end
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27941
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 21 Apr 2006 23:03:30 +0000 (23:03 +0000)]
Revamp build_vector lowering to take advantage of movss and movd instructions.
movd always clear the top 96 bits and movss does so when it's loading the
value from memory.
The net result is codegen for 4-wide shuffles is much improved. It is near
optimal if one or more elements is a zero. e.g.
__m128i test(int a, int b) {
return _mm_set_epi32(0, 0, b, a);
}
compiles to
_test:
movd 8(%esp), %xmm1
movd 4(%esp), %xmm0
punpckldq %xmm1, %xmm0
ret
compare to gcc:
_test:
subl $12, %esp
movd 20(%esp), %xmm0
movd 16(%esp), %xmm1
punpckldq %xmm0, %xmm1
movq %xmm1, %xmm0
movhps LC0, %xmm0
addl $12, %esp
ret
or icc:
_test:
movd 4(%esp), %xmm0 #5.10
movd 8(%esp), %xmm3 #5.10
xorl %eax, %eax #5.10
movd %eax, %xmm1 #5.10
punpckldq %xmm1, %xmm0 #5.10
movd %eax, %xmm2 #5.10
punpckldq %xmm2, %xmm3 #5.10
punpckldq %xmm3, %xmm0 #5.10
ret #5.10
There are still room for improvement, for example the FP variant of the above example:
__m128 test(float a, float b) {
return _mm_set_ps(0.0, 0.0, b, a);
}
_test:
movss 8(%esp), %xmm1
movss 4(%esp), %xmm0
unpcklps %xmm1, %xmm0
xorps %xmm1, %xmm1
movlhps %xmm1, %xmm0
ret
The xorps and movlhps are unnecessary. This will require post legalizer optimization to handle.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27939
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Fri, 21 Apr 2006 22:11:27 +0000 (22:11 +0000)]
Fix the comment
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27938
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Fri, 21 Apr 2006 22:04:15 +0000 (22:04 +0000)]
Change the PPC JIT to use a Static relocation model
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27937
91177308-0d34-0410-b5e6-
96231b3b80d8