llvm/test
Chris Lattner 3d28b1b35b Teach instcombine 4 new xforms:
(add (sext x), cst) --> (sext (add x, cst'))
  (add (sext x), (sext y)) --> (sext (add int x, y))
  (add double (sitofp x), fpcst) --> (sitofp (add int x, intcst))
  (add double (sitofp x), (sitofp y)) --> (sitofp (add int x, y))

This generally reduces conversions.  For example MiBench/telecomm-gsm
gets these simplifications:

HACK2: 	%tmp67.i142.i.i = sext i16 %tmp6.i141.i.i to i32		; <i32> [#uses=1]
	%tmp23.i139.i.i = sext i16 %tmp2.i138.i.i to i32		; <i32> [#uses=1]
	%tmp8.i143.i.i = add i32 %tmp67.i142.i.i, %tmp23.i139.i.i		; <i32> [#uses=3]
HACK2: 	%tmp67.i121.i.i = sext i16 %tmp6.i120.i.i to i32		; <i32> [#uses=1]
	%tmp23.i118.i.i = sext i16 %tmp2.i117.i.i to i32		; <i32> [#uses=1]
	%tmp8.i122.i.i = add i32 %tmp67.i121.i.i, %tmp23.i118.i.i		; <i32> [#uses=3]
HACK2: 	%tmp67.i.i190.i = sext i16 %tmp6.i.i189.i to i32		; <i32> [#uses=1]
	%tmp23.i.i187.i = sext i16 %tmp2.i.i186.i to i32		; <i32> [#uses=1]
	%tmp8.i.i191.i = add i32 %tmp67.i.i190.i, %tmp23.i.i187.i		; <i32> [#uses=3]
HACK2: 	%tmp67.i173.i.i.i = sext i16 %tmp6.i172.i.i.i to i32		; <i32> [#uses=1]
	%tmp23.i170.i.i.i = sext i16 %tmp2.i169.i.i.i to i32		; <i32> [#uses=1]
	%tmp8.i174.i.i.i = add i32 %tmp67.i173.i.i.i, %tmp23.i170.i.i.i		; <i32> [#uses=3]
HACK2: 	%tmp67.i152.i.i.i = sext i16 %tmp6.i151.i.i.i to i32		; <i32> [#uses=1]
	%tmp23.i149.i.i.i = sext i16 %tmp2.i148.i.i.i to i32		; <i32> [#uses=1]
	%tmp8.i153.i.i.i = add i32 %tmp67.i152.i.i.i, %tmp23.i149.i.i.i		; <i32> [#uses=3]
HACK2: 	%tmp67.i.i.i.i = sext i16 %tmp6.i.i.i.i to i32		; <i32> [#uses=1]
	%tmp23.i.i5.i.i = sext i16 %tmp2.i.i.i.i to i32		; <i32> [#uses=1]
	%tmp8.i.i7.i.i = add i32 %tmp67.i.i.i.i, %tmp23.i.i5.i.i		; <i32> [#uses=3]


This also fixes a bug in ComputeNumSignBits handling select and
makes it more aggressive with and/or.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51302 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-20 05:46:13 +00:00
..
Analysis Fix this test. It was testing broken behavior in that it required ADCE to eliminate 2008-05-16 04:25:09 +00:00
Archive Delete the svn:executable property on these files, which aren't executable. 2007-07-23 19:26:08 +00:00
Assembler returning an empty multiple return list is not valid. 2008-04-23 05:29:14 +00:00
Bindings/Ocaml Expose ExecutionEngine::getTargetData() to c and ocaml bindings. 2008-03-27 00:27:14 +00:00
Bitcode fix this test. 2008-02-17 00:15:25 +00:00
BugPoint Remove llvm-upgrade 2008-02-17 00:15:09 +00:00
C++Frontend Remove the S92 code, which really has nothing to do 2008-05-15 22:23:54 +00:00
CFrontend Check that always_inline functions are inlined 2008-05-19 16:44:44 +00:00
CodeGen Run vortex-bug as x86-64, which is what the original bug was triggered on. 2008-05-20 00:54:39 +00:00
DebugInfo Remove llvm-upgrade and update tests. 2008-03-10 07:21:50 +00:00
ExecutionEngine rename *.llx -> *.ll, last batch. 2008-04-19 22:32:52 +00:00
Feature Update test 2008-04-25 17:54:21 +00:00
FrontendAda Testcase for gimplify_expr crash caused by an 2008-01-15 19:55:41 +00:00
FrontendObjC Removing. 2008-05-06 23:56:22 +00:00
Integer refactor handling of symbolic constant folding, picking up 2008-04-19 21:58:19 +00:00
lib Fix tests due to llvm2cpp move to llc target 2008-04-23 22:41:53 +00:00
Linker Update old-style syntax in some "not grep" tests. 2008-05-01 23:50:07 +00:00
LLVMC Check if llvm-gcc is available before running tests. Patch by Matthijs Kooijman! 2008-05-14 16:32:44 +00:00
Other Fix tests due to llvm2cpp move to llc target 2008-04-23 22:41:53 +00:00
Scripts Add a test script for counting lines. This can be used instead of the 2007-08-10 15:07:05 +00:00
TableGen Rename MRegisterInfo to TargetRegisterInfo. 2008-02-10 18:45:23 +00:00
Transforms Teach instcombine 4 new xforms: 2008-05-20 05:46:13 +00:00
Verifier Revert the change from r51157 in 2008-05-16 00:16:32 +00:00
Makefile Add EXTRA_OPTIONS on the llvmgxx command line. 2008-04-24 17:59:03 +00:00
Makefile.tests Failure.sh is dead, remove it. 2007-04-21 20:46:55 +00:00
TestRunner.sh Avoid an infinite loop when TestRunner.sh is run outside of the test dir. 2007-05-18 02:06:03 +00:00