oota-llvm.git
18 years agoFix more tablegen depedency issues in Visual Studio.
Jeff Cohen [Wed, 5 Apr 2006 05:19:18 +0000 (05:19 +0000)]
Fix more tablegen depedency issues in Visual Studio.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27431 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoSeparate out to 2 test cases
Evan Cheng [Wed, 5 Apr 2006 04:40:55 +0000 (04:40 +0000)]
Separate out to 2 test cases

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27430 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agomake this test less exacting
Andrew Lenharth [Wed, 5 Apr 2006 03:31:45 +0000 (03:31 +0000)]
make this test less exacting

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27429 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agorevert this, this is safe, if conservative. leave a note to that effect
Andrew Lenharth [Wed, 5 Apr 2006 02:42:36 +0000 (02:42 +0000)]
revert this, this is safe, if conservative.  leave a note to that effect

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27428 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoHandle v8i16 shuffle that must be broken into a pair of pshufhw / pshuflw.
Evan Cheng [Wed, 5 Apr 2006 01:47:37 +0000 (01:47 +0000)]
Handle v8i16 shuffle that must be broken into a pair of pshufhw / pshuflw.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27427 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdd a new shuffle test case that requires pshuflw / pshufhw pair.
Evan Cheng [Wed, 5 Apr 2006 01:44:57 +0000 (01:44 +0000)]
Add a new shuffle test case that requires pshuflw / pshufhw pair.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27426 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoadd vsl
Chris Lattner [Wed, 5 Apr 2006 01:16:22 +0000 (01:16 +0000)]
add vsl

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27425 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoGet the types right, third time is the charm. Add vsl.
Chris Lattner [Wed, 5 Apr 2006 01:15:54 +0000 (01:15 +0000)]
Get the types right, third time is the charm.  Add vsl.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27424 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoadd vmladduhm
Chris Lattner [Wed, 5 Apr 2006 00:49:48 +0000 (00:49 +0000)]
add vmladduhm

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27423 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agocorrect the type of two intrinsics, add int_ppc_altivec_vmladduhm
Chris Lattner [Wed, 5 Apr 2006 00:49:14 +0000 (00:49 +0000)]
correct the type of two intrinsics, add int_ppc_altivec_vmladduhm

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27422 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdd m[tf]vscr instructions.
Chris Lattner [Wed, 5 Apr 2006 00:03:57 +0000 (00:03 +0000)]
Add m[tf]vscr instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27421 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdd m[tf]vscr intrinsics.
Chris Lattner [Wed, 5 Apr 2006 00:03:03 +0000 (00:03 +0000)]
Add m[tf]vscr intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27420 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoadd a note
Chris Lattner [Tue, 4 Apr 2006 23:45:11 +0000 (23:45 +0000)]
add a note

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27419 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdd missing byte merges.
Chris Lattner [Tue, 4 Apr 2006 23:43:56 +0000 (23:43 +0000)]
Add missing byte merges.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27418 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdd FP -> Int Conversions
Chris Lattner [Tue, 4 Apr 2006 23:25:02 +0000 (23:25 +0000)]
Add FP -> Int Conversions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27417 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoadd average intrinsics
Chris Lattner [Tue, 4 Apr 2006 23:14:00 +0000 (23:14 +0000)]
add average intrinsics

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27416 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoadd average intrinsics.
Chris Lattner [Tue, 4 Apr 2006 23:13:21 +0000 (23:13 +0000)]
add average intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27415 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoadd a note
Chris Lattner [Tue, 4 Apr 2006 22:43:55 +0000 (22:43 +0000)]
add a note

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27414 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFix some broken logic that would cause us to codegen {2147483647,2147483647,214748364...
Chris Lattner [Tue, 4 Apr 2006 22:28:35 +0000 (22:28 +0000)]
Fix some broken logic that would cause us to codegen {2147483647,2147483647,2147483647,2147483647} as 'vspltisb v0, -1'.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27413 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdded pslldq and psrldq.
Evan Cheng [Tue, 4 Apr 2006 21:49:39 +0000 (21:49 +0000)]
Added pslldq and psrldq.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27412 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdded intrinsics to match __builtin_ia32_pslldqi128 and
Evan Cheng [Tue, 4 Apr 2006 21:48:31 +0000 (21:48 +0000)]
Added intrinsics to match __builtin_ia32_pslldqi128 and
__builtin_ia32_psrldqi128.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27411 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoMinor fixes + naming changes.
Evan Cheng [Tue, 4 Apr 2006 19:12:30 +0000 (19:12 +0000)]
Minor fixes + naming changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27410 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoHow could this ever have worked?
Chris Lattner [Tue, 4 Apr 2006 19:05:42 +0000 (19:05 +0000)]
How could this ever have worked?

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27409 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoPSHUF* encoding bugs.
Evan Cheng [Tue, 4 Apr 2006 18:40:36 +0000 (18:40 +0000)]
PSHUF* encoding bugs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27405 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoMake sure to consider alignment of variable sized objects.
Chris Lattner [Tue, 4 Apr 2006 17:39:56 +0000 (17:39 +0000)]
Make sure to consider alignment of variable sized objects.
This, along with the previous dag combiner fix, fixes
CodeGen/Alpha/2006-04-04-zextload.ll

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27403 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoDo not create ZEXTLOAD's unless we are before legalize or the operation is
Chris Lattner [Tue, 4 Apr 2006 17:39:18 +0000 (17:39 +0000)]
Do not create ZEXTLOAD's unless we are before legalize or the operation is
legal.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27402 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoNew testcase
Chris Lattner [Tue, 4 Apr 2006 17:38:31 +0000 (17:38 +0000)]
New testcase

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27401 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAsk legalize to promote all vector shuffles to be v16i8 instead of having to
Chris Lattner [Tue, 4 Apr 2006 17:25:31 +0000 (17:25 +0000)]
Ask legalize to promote all vector shuffles to be v16i8 instead of having to
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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27400 91177308-0d34-0410-b5e6-96231b3b80d8

18 years ago* Add supprot for SCALAR_TO_VECTOR operations where the input needs to be
Chris Lattner [Tue, 4 Apr 2006 17:23:26 +0000 (17:23 +0000)]
* Add supprot for SCALAR_TO_VECTOR operations where the input needs to be
  promoted/expanded (e.g. SCALAR_TO_VECTOR from i8/i16 on PPC).
* Add support for targets to request that VECTOR_SHUFFLE nodes be promoted
  to a canonical type, for example, we only want v16i8 shuffles on PPC.
* Move isShuffleLegal out of TLI into Legalize.
* Teach isShuffleLegal to allow shuffles that need to be promoted.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27399 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoMove isShuffleLegal from TLI to Legalize.
Chris Lattner [Tue, 4 Apr 2006 17:21:22 +0000 (17:21 +0000)]
Move isShuffleLegal from TLI to Legalize.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27398 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agonew testcase
Chris Lattner [Tue, 4 Apr 2006 17:20:45 +0000 (17:20 +0000)]
new testcase

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27397 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoSigned shr by a constant is not the same as sdiv by 2^k
Chris Lattner [Tue, 4 Apr 2006 06:11:42 +0000 (06:11 +0000)]
Signed shr by a constant is not the same as sdiv by 2^k

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27395 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agocmpps / cmppd encoding bug
Evan Cheng [Tue, 4 Apr 2006 03:04:07 +0000 (03:04 +0000)]
cmpps / cmppd encoding bug

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27393 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFix the types for these intrinsics.
Chris Lattner [Tue, 4 Apr 2006 01:40:06 +0000 (01:40 +0000)]
Fix the types for these intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27392 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoConstant fold bitconvert(undef)
Chris Lattner [Tue, 4 Apr 2006 01:02:22 +0000 (01:02 +0000)]
Constant fold bitconvert(undef)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27391 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAllow targets to have fine grained control over which types various ops get
Chris Lattner [Tue, 4 Apr 2006 00:25:10 +0000 (00:25 +0000)]
Allow targets to have fine grained control over which types various ops get
promoted to, if they desire.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27389 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoCompact some intrinsic definitions.
Evan Cheng [Tue, 4 Apr 2006 00:10:53 +0000 (00:10 +0000)]
Compact some intrinsic definitions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27388 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoPlug in the byte and short splats
Chris Lattner [Tue, 4 Apr 2006 00:05:13 +0000 (00:05 +0000)]
Plug in the byte and short splats

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27387 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoRevert accidentally committed hunks.
Chris Lattner [Mon, 3 Apr 2006 23:58:04 +0000 (23:58 +0000)]
Revert accidentally committed hunks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27386 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoMake sure to mark unsupported SCALAR_TO_VECTOR operations as expand.
Chris Lattner [Mon, 3 Apr 2006 23:55:43 +0000 (23:55 +0000)]
Make sure to mark unsupported SCALAR_TO_VECTOR operations as expand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27385 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoSome SSE1 intrinsics: min, max, sqrt, etc.
Evan Cheng [Mon, 3 Apr 2006 23:49:17 +0000 (23:49 +0000)]
Some SSE1 intrinsics: min, max, sqrt, etc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27384 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agorevert previous patch
Chris Lattner [Mon, 3 Apr 2006 23:14:49 +0000 (23:14 +0000)]
revert previous patch

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27383 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoUse movlpd to: store lower f64 extracted from v2f64.
Evan Cheng [Mon, 3 Apr 2006 22:30:54 +0000 (22:30 +0000)]
Use movlpd to: store lower f64 extracted from v2f64.
Use movhpd to: store upper f64 extracted from v2f64.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27382 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoForce use of a frame-pointer if there is anything on the stack that is aligned
Chris Lattner [Mon, 3 Apr 2006 22:03:29 +0000 (22:03 +0000)]
Force use of a frame-pointer if there is anything on the stack that is aligned
more than the OS keeps the stack aligned.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27381 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoThe stack alignment is now computed dynamically, just verify it is correct.
Chris Lattner [Mon, 3 Apr 2006 21:39:57 +0000 (21:39 +0000)]
The stack alignment is now computed dynamically, just verify it is correct.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27380 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoRemove unused method
Chris Lattner [Mon, 3 Apr 2006 21:39:03 +0000 (21:39 +0000)]
Remove unused method

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27379 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoKeep track of max stack alignment as objects are added. Remove an obsolete method.
Chris Lattner [Mon, 3 Apr 2006 21:38:39 +0000 (21:38 +0000)]
Keep track of max stack alignment as objects are added.  Remove an obsolete method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27378 91177308-0d34-0410-b5e6-96231b3b80d8

18 years ago- More efficient extract_vector_elt with shuffle and movss, movsd, movd, etc.
Evan Cheng [Mon, 3 Apr 2006 20:53:28 +0000 (20:53 +0000)]
- More efficient extract_vector_elt with shuffle and movss, movsd, movd, etc.
- Some bug fixes and naming inconsistency fixes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27377 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAlign vectors to the size in bytes, not bits.
Chris Lattner [Mon, 3 Apr 2006 19:28:50 +0000 (19:28 +0000)]
Align vectors to the size in bytes, not bits.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27376 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdd a missing check, this fixes UnitTests/Vector/sumarray.c
Chris Lattner [Mon, 3 Apr 2006 17:29:28 +0000 (17:29 +0000)]
Add a missing check, this fixes UnitTests/Vector/sumarray.c

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27375 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdd a missing check, which broke a bunch of vector tests.
Chris Lattner [Mon, 3 Apr 2006 17:21:50 +0000 (17:21 +0000)]
Add a missing check, which broke a bunch of vector tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27374 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoshrinkify intrinsics more by using some local classes
Chris Lattner [Mon, 3 Apr 2006 17:20:06 +0000 (17:20 +0000)]
shrinkify intrinsics more by using some local classes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27373 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdd the full set of min/max instructions
Chris Lattner [Mon, 3 Apr 2006 15:58:28 +0000 (15:58 +0000)]
Add the full set of min/max instructions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27372 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdd some classes to make it easier to define intrinsics. Add min/max intrinsics.
Chris Lattner [Mon, 3 Apr 2006 15:43:07 +0000 (15:43 +0000)]
Add some classes to make it easier to define intrinsics.  Add min/max intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27371 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agosupport x * (c1 + c2) where c1 and c2 are pow2s. special case for c2 == 4
Andrew Lenharth [Mon, 3 Apr 2006 04:19:17 +0000 (04:19 +0000)]
support x * (c1 + c2) where c1 and c2 are pow2s.  special case for c2 == 4

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27370 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agotest powers of 2
Andrew Lenharth [Mon, 3 Apr 2006 04:14:39 +0000 (04:14 +0000)]
test powers of 2

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27369 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agomul by const conversion sequences. more coming soon
Andrew Lenharth [Mon, 3 Apr 2006 03:18:59 +0000 (03:18 +0000)]
mul by const conversion sequences.  more coming soon

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27368 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoback this out
Andrew Lenharth [Mon, 3 Apr 2006 03:16:50 +0000 (03:16 +0000)]
back this out

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27367 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agotest some more mul by constant removal
Andrew Lenharth [Mon, 3 Apr 2006 03:16:09 +0000 (03:16 +0000)]
test some more mul by constant removal

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27366 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoMake sure mul by constant 5 is turned into a s4addq
Andrew Lenharth [Sun, 2 Apr 2006 21:47:07 +0000 (21:47 +0000)]
Make sure mul by constant 5 is turned into a s4addq

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27365 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoThis should be a win of every arch
Andrew Lenharth [Sun, 2 Apr 2006 21:42:45 +0000 (21:42 +0000)]
This should be a win of every arch

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27364 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoThis makes McCat/12-IOtest go 8x faster or so
Andrew Lenharth [Sun, 2 Apr 2006 21:08:39 +0000 (21:08 +0000)]
This makes McCat/12-IOtest go 8x faster or so

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27363 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoThis will be needed soon
Andrew Lenharth [Sun, 2 Apr 2006 20:13:57 +0000 (20:13 +0000)]
This will be needed soon

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27362 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFor PR722:
Reid Spencer [Sun, 2 Apr 2006 14:34:26 +0000 (14:34 +0000)]
For PR722:
Change the check for llvm-gcc from using LLVMGCCDIR to LLVMGCC. This checks
for the actual tool rather than the directory in which the tool resides. In
the case of this bug, it is possible that the directory exists but that the
tools in that directory do not. This fix should avoid the makefile from
erroneously proceeding without the actual tools being available.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27361 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoadd a note
Chris Lattner [Sun, 2 Apr 2006 07:20:00 +0000 (07:20 +0000)]
add a note

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27360 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoInform the dag combiner that the predicate compares only return a low bit.
Chris Lattner [Sun, 2 Apr 2006 06:26:07 +0000 (06:26 +0000)]
Inform the dag combiner that the predicate compares only return a low bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27359 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agorelax assertion
Chris Lattner [Sun, 2 Apr 2006 06:19:46 +0000 (06:19 +0000)]
relax assertion

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27358 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAllow targets to compute masked bits for intrinsics.
Chris Lattner [Sun, 2 Apr 2006 06:15:09 +0000 (06:15 +0000)]
Allow targets to compute masked bits for intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27357 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdd a little dag combine to compile this:
Chris Lattner [Sun, 2 Apr 2006 06:11:11 +0000 (06:11 +0000)]
Add a little dag combine to compile this:

int %AreSecondAndThirdElementsBothNegative(<4 x float>* %in) {
entry:
        %tmp1 = load <4 x float>* %in           ; <<4 x float>> [#uses=1]
        %tmp = tail call int %llvm.ppc.altivec.vcmpgefp.p( int 1, <4 x float> < float 0x7FF8000000000000, float 0.000000e+00, float 0.000000e+00, float 0x7FF8000000000000 >, <4 x float> %tmp1 )           ; <int> [#uses=1]
        %tmp = seteq int %tmp, 0                ; <bool> [#uses=1]
        %tmp3 = cast bool %tmp to int           ; <int> [#uses=1]
        ret int %tmp3
}

into this:

_AreSecondAndThirdElementsBothNegative:
        mfspr r2, 256
        oris r4, r2, 49152
        mtspr 256, r4
        li r4, lo16(LCPI1_0)
        lis r5, ha16(LCPI1_0)
        lvx v0, 0, r3
        lvx v1, r5, r4
        vcmpgefp. v0, v1, v0
        mfcr r3, 2
        rlwinm r3, r3, 27, 31, 31
        mtspr 256, r2
        blr

instead of this:

_AreSecondAndThirdElementsBothNegative:
        mfspr r2, 256
        oris r4, r2, 49152
        mtspr 256, r4
        li r4, lo16(LCPI1_0)
        lis r5, ha16(LCPI1_0)
        lvx v0, 0, r3
        lvx v1, r5, r4
        vcmpgefp. v0, v1, v0
        mfcr r3, 2
        rlwinm r3, r3, 27, 31, 31
        xori r3, r3, 1
        cntlzw r3, r3
        srwi r3, r3, 5
        mtspr 256, r2
        blr

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27356 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agovector casts of casts are eliminable. Transform this:
Chris Lattner [Sun, 2 Apr 2006 05:43:13 +0000 (05:43 +0000)]
vector casts of casts are eliminable.  Transform this:

        %tmp = cast <4 x uint> %tmp to <4 x int>                ; <<4 x int>> [#uses=1]
        %tmp = cast <4 x int> %tmp to <4 x float>               ; <<4 x float>> [#uses=1]

into:

        %tmp = cast <4 x uint> %tmp to <4 x float>              ; <<4 x float>> [#uses=1]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27355 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agovector casts never reinterpret bits
Chris Lattner [Sun, 2 Apr 2006 05:40:28 +0000 (05:40 +0000)]
vector casts never reinterpret bits

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27354 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAllow transforming this:
Chris Lattner [Sun, 2 Apr 2006 05:37:12 +0000 (05:37 +0000)]
Allow transforming this:

        %tmp = cast <4 x uint>* %testData to <4 x int>*         ; <<4 x int>*> [#uses=1]
        %tmp = load <4 x int>* %tmp             ; <<4 x int>> [#uses=1]

to this:

        %tmp = load <4 x uint>* %testData               ; <<4 x uint>> [#uses=1]
        %tmp = cast <4 x uint> %tmp to <4 x int>                ; <<4 x int>> [#uses=1]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27353 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoTurn altivec lvx/stvx intrinsics into loads and stores. This allows the
Chris Lattner [Sun, 2 Apr 2006 05:30:25 +0000 (05:30 +0000)]
Turn altivec lvx/stvx intrinsics into loads and stores.  This allows the
elimination of one load from this:

int AreSecondAndThirdElementsBothNegative( vector float *in ) {
#define QNaN 0x7FC00000
const vector unsigned int testData = (vector unsigned int)( QNaN, 0, 0, QNaN );
vector float test = vec_ld( 0, (float*) &testData );
return ! vec_any_ge( test, *in );
}

Now generating:

_AreSecondAndThirdElementsBothNegative:
        mfspr r2, 256
        oris r4, r2, 49152
        mtspr 256, r4
        li r4, lo16(LCPI1_0)
        lis r5, ha16(LCPI1_0)
        addi r6, r1, -16
        lvx v0, r5, r4
        stvx v0, 0, r6
        lvx v1, 0, r3
        vcmpgefp. v0, v0, v1
        mfcr r3, 2
        rlwinm r3, r3, 27, 31, 31
        xori r3, r3, 1
        cntlzw r3, r3
        srwi r3, r3, 5
        mtspr 256, r2
        blr

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27352 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoRemove done item
Chris Lattner [Sun, 2 Apr 2006 05:28:54 +0000 (05:28 +0000)]
Remove done item

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27351 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFix tablegen related dependencies in Visual Studio.
Jeff Cohen [Sun, 2 Apr 2006 05:20:53 +0000 (05:20 +0000)]
Fix tablegen related dependencies in Visual Studio.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27350 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoImplement promotion for EXTRACT_VECTOR_ELT, allowing v16i8 multiplies to work with...
Chris Lattner [Sun, 2 Apr 2006 05:06:04 +0000 (05:06 +0000)]
Implement promotion for EXTRACT_VECTOR_ELT, allowing v16i8 multiplies to work with PowerPC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27349 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoadd a note
Chris Lattner [Sun, 2 Apr 2006 03:59:11 +0000 (03:59 +0000)]
add a note

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27348 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoImplement the Expand action for binary vector operations to break the binop
Chris Lattner [Sun, 2 Apr 2006 03:57:31 +0000 (03:57 +0000)]
Implement the Expand action for binary vector operations to break the binop
into elements and operate on each piece.  This allows generic vector integer
multiplies to work on PPC, though the generated code is horrible.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27347 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoIntrinsics that just load from memory can be treated like loads: they don't
Chris Lattner [Sun, 2 Apr 2006 03:41:14 +0000 (03:41 +0000)]
Intrinsics that just load from memory can be treated like loads: they don't
have to serialize against each other.  This allows us to schedule lvx's
across each other, for example.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27346 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdjust the Intrinsics.gen interface a little bit
Chris Lattner [Sun, 2 Apr 2006 03:35:30 +0000 (03:35 +0000)]
Adjust the Intrinsics.gen interface a little bit

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27345 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdjust to change in Intrinsics.gen interface.
Chris Lattner [Sun, 2 Apr 2006 03:35:01 +0000 (03:35 +0000)]
Adjust to change in Intrinsics.gen interface.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27344 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoConstant fold all of the vector binops. This allows us to compile this:
Chris Lattner [Sun, 2 Apr 2006 03:25:57 +0000 (03:25 +0000)]
Constant fold all of the vector binops.  This allows us to compile this:

"vector unsigned char mergeLowHigh = (vector unsigned char)
( 8, 9, 10, 11, 16, 17, 18, 19, 12, 13, 14, 15, 20, 21, 22, 23 );
vector unsigned char mergeHighLow = vec_xor( mergeLowHigh, vec_splat_u8(8));"

aka:

void %test2(<16 x sbyte>* %P) {
  store <16 x sbyte> cast (<4 x int> xor (<4 x int> cast (<16 x ubyte> < ubyte 8, ubyte 9, ubyte 10, ubyte 11, ubyte 16, ubyte 17, ubyte 18, ubyte 19, ubyte 12, ubyte 13, ubyte 14, ubyte 15, ubyte 20, ubyte 21, ubyte 22, ubyte 23 > to <4 x int>), <4 x int> cast (<16 x sbyte> < sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8, sbyte 8 > to <4 x int>)) to <16 x sbyte>), <16 x sbyte> * %P
  ret void
}

into this:

_test2:
        mfspr r2, 256
        oris r4, r2, 32768
        mtspr 256, r4
        li r4, lo16(LCPI2_0)
        lis r5, ha16(LCPI2_0)
        lvx v0, r5, r4
        stvx v0, 0, r3
        mtspr 256, r2
        blr

instead of this:

_test2:
        mfspr r2, 256
        oris r4, r2, 49152
        mtspr 256, r4
        li r4, lo16(LCPI2_0)
        lis r5, ha16(LCPI2_0)
        vspltisb v0, 8
        lvx v1, r5, r4
        vxor v0, v1, v0
        stvx v0, 0, r3
        mtspr 256, r2
        blr

... which occurs here:
http://developer.apple.com/hardware/ve/calcspeed.html

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27343 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdd a new -view-legalize-dags command line option
Chris Lattner [Sun, 2 Apr 2006 03:07:27 +0000 (03:07 +0000)]
Add a new -view-legalize-dags command line option

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27342 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoImplement constant folding of bit_convert of arbitrary constant vbuild_vector nodes.
Chris Lattner [Sun, 2 Apr 2006 02:53:43 +0000 (02:53 +0000)]
Implement constant folding of bit_convert of arbitrary constant vbuild_vector nodes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27341 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoThese entries already exist
Chris Lattner [Sun, 2 Apr 2006 02:51:27 +0000 (02:51 +0000)]
These entries already exist

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27340 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdd some missing node names
Chris Lattner [Sun, 2 Apr 2006 02:41:18 +0000 (02:41 +0000)]
Add some missing node names

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27339 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agosimplify this method
Chris Lattner [Sun, 2 Apr 2006 02:28:52 +0000 (02:28 +0000)]
simplify this method

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27338 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoNew note
Chris Lattner [Sun, 2 Apr 2006 01:47:20 +0000 (01:47 +0000)]
New note

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27337 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoConstant fold casts from things like <4 x int> -> <4 x uint>, likewise int<->fp.
Chris Lattner [Sun, 2 Apr 2006 01:38:28 +0000 (01:38 +0000)]
Constant fold casts from things like <4 x int> -> <4 x uint>, likewise int<->fp.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27336 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoCustom lower all BUILD_VECTOR's so that we can compile vec_splat_u8(8) into
Chris Lattner [Sun, 2 Apr 2006 00:43:36 +0000 (00:43 +0000)]
Custom lower all BUILD_VECTOR's so that we can compile vec_splat_u8(8) into
"vspltisb v0, 8" instead of a constant pool load.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27335 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoPrefer larger register classes over smaller ones when a register occurs in
Chris Lattner [Sun, 2 Apr 2006 00:24:45 +0000 (00:24 +0000)]
Prefer larger register classes over smaller ones when a register occurs in
multiple register classes.  This fixes PowerPC/2006-04-01-FloatDoubleExtend.ll

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27334 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoNew testcase that crashes the compiler.
Chris Lattner [Sun, 2 Apr 2006 00:23:59 +0000 (00:23 +0000)]
New testcase that crashes the compiler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27333 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoadd valuemapper support for inline asm
Chris Lattner [Sat, 1 Apr 2006 23:17:11 +0000 (23:17 +0000)]
add valuemapper support for inline asm

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27332 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoImplement vnot using VNOR instead of using 'vspltisb v0, -1' and vxor
Chris Lattner [Sat, 1 Apr 2006 22:41:47 +0000 (22:41 +0000)]
Implement vnot using VNOR instead of using 'vspltisb v0, -1' and vxor

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27331 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFix InstCombine/2006-04-01-InfLoop.ll
Chris Lattner [Sat, 1 Apr 2006 22:05:01 +0000 (22:05 +0000)]
Fix InstCombine/2006-04-01-InfLoop.ll

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27330 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoNew testcase that caused instcombine to infinitely loop (with my recent
Chris Lattner [Sat, 1 Apr 2006 22:04:40 +0000 (22:04 +0000)]
New testcase that caused instcombine to infinitely loop (with my recent
patch), distilled from Applications/JM/ldecod

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27329 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFold A^(B&A) -> (B&A)^A
Chris Lattner [Sat, 1 Apr 2006 08:03:55 +0000 (08:03 +0000)]
Fold A^(B&A) -> (B&A)^A
Fold (B&A)^A == ~B & A

This implements InstCombine/xor.ll:test2[56]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27328 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agonew testcases
Chris Lattner [Sat, 1 Apr 2006 08:02:51 +0000 (08:02 +0000)]
new testcases

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27327 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFix Transforms/IndVarsSimplify/2006-03-31-NegativeStride.ll and
Chris Lattner [Sat, 1 Apr 2006 04:48:52 +0000 (04:48 +0000)]
Fix Transforms/IndVarsSimplify/2006-03-31-NegativeStride.ll and
PR726 by performing consistent signed division, not consistent unsigned
division when evaluating scev's.  Do not touch udivs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27326 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agonew testcase for PR726
Chris Lattner [Sat, 1 Apr 2006 04:47:17 +0000 (04:47 +0000)]
new testcase for PR726

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27325 91177308-0d34-0410-b5e6-96231b3b80d8