Reid Spencer | 43b4003 | 2007-04-16 15:31:49 +0000 | [diff] [blame] | 1 | ; RUN: llvm-as < %s | llc -march=ppc32 | not grep {extsh\\|rlwinm} |
Chris Lattner | c730706 | 2005-08-31 18:19:50 +0000 | [diff] [blame] | 2 | |
Reid Spencer | e3ff5ad | 2007-01-26 08:25:06 +0000 | [diff] [blame] | 3 | declare i16 @foo() sext |
Chris Lattner | c7d855e | 2006-02-28 06:54:19 +0000 | [diff] [blame] | 4 | |
Reid Spencer | e3ff5ad | 2007-01-26 08:25:06 +0000 | [diff] [blame] | 5 | define i32 @test1(i16 sext %X) { |
Reid Spencer | bf89553 | 2007-01-05 18:34:20 +0000 | [diff] [blame] | 6 | %Y = sext i16 %X to i32 ;; dead |
7 | ret i32 %Y | ||||
Chris Lattner | c730706 | 2005-08-31 18:19:50 +0000 | [diff] [blame] | 8 | } |
9 | |||||
Reid Spencer | e3ff5ad | 2007-01-26 08:25:06 +0000 | [diff] [blame] | 10 | define i32 @test2(i16 zext %X) { |
Reid Spencer | bf89553 | 2007-01-05 18:34:20 +0000 | [diff] [blame] | 11 | %Y = sext i16 %X to i32 |
12 | %Z = and i32 %Y, 65535 ;; dead | ||||
13 | ret i32 %Z | ||||
Chris Lattner | c730706 | 2005-08-31 18:19:50 +0000 | [diff] [blame] | 14 | } |
Chris Lattner | 9832ce0 | 2005-09-01 23:43:58 +0000 | [diff] [blame] | 15 | |
Reid Spencer | e3ff5ad | 2007-01-26 08:25:06 +0000 | [diff] [blame] | 16 | define void @test3() { |
17 | %tmp.0 = call i16 @foo() sext ;; no extsh! | ||||
Reid Spencer | bf89553 | 2007-01-05 18:34:20 +0000 | [diff] [blame] | 18 | %tmp.1 = icmp slt i16 %tmp.0, 1234 |
Reid Spencer | 737ec51 | 2007-01-13 05:06:52 +0000 | [diff] [blame] | 19 | br i1 %tmp.1, label %then, label %UnifiedReturnBlock |
Chris Lattner | 9832ce0 | 2005-09-01 23:43:58 +0000 | [diff] [blame] | 20 | |
21 | then: | ||||
Reid Spencer | e3ff5ad | 2007-01-26 08:25:06 +0000 | [diff] [blame] | 22 | call i32 @test1(i16 0 sext) |
Chris Lattner | 9832ce0 | 2005-09-01 23:43:58 +0000 | [diff] [blame] | 23 | ret void |
24 | UnifiedReturnBlock: | ||||
25 | ret void | ||||
26 | } | ||||
27 | |||||
Reid Spencer | e3ff5ad | 2007-01-26 08:25:06 +0000 | [diff] [blame] | 28 | define i32 @test4(i16* %P) { |
Reid Spencer | bf89553 | 2007-01-05 18:34:20 +0000 | [diff] [blame] | 29 | %tmp.1 = load i16* %P |
30 | %tmp.2 = zext i16 %tmp.1 to i32 | ||||
31 | %tmp.3 = and i32 %tmp.2, 255 | ||||
32 | ret i32 %tmp.3 | ||||
Chris Lattner | c7d855e | 2006-02-28 06:54:19 +0000 | [diff] [blame] | 33 | } |
34 | |||||
Reid Spencer | e3ff5ad | 2007-01-26 08:25:06 +0000 | [diff] [blame] | 35 | define i32 @test5(i16* %P) { |
Reid Spencer | bf89553 | 2007-01-05 18:34:20 +0000 | [diff] [blame] | 36 | %tmp.1 = load i16* %P |
37 | %tmp.2 = bitcast i16 %tmp.1 to i16 | ||||
38 | %tmp.3 = zext i16 %tmp.2 to i32 | ||||
39 | %tmp.4 = and i32 %tmp.3, 255 | ||||
40 | ret i32 %tmp.4 | ||||
Chris Lattner | c7d855e | 2006-02-28 06:54:19 +0000 | [diff] [blame] | 41 | } |
42 | |||||
Reid Spencer | e3ff5ad | 2007-01-26 08:25:06 +0000 | [diff] [blame] | 43 | define i32 @test6(i32* %P) { |
Reid Spencer | bf89553 | 2007-01-05 18:34:20 +0000 | [diff] [blame] | 44 | %tmp.1 = load i32* %P |
45 | %tmp.2 = and i32 %tmp.1, 255 | ||||
46 | ret i32 %tmp.2 | ||||
Chris Lattner | c7d855e | 2006-02-28 06:54:19 +0000 | [diff] [blame] | 47 | } |
48 | |||||
Reid Spencer | e3ff5ad | 2007-01-26 08:25:06 +0000 | [diff] [blame] | 49 | define i16 @test7(float %a) zext { |
Reid Spencer | bf89553 | 2007-01-05 18:34:20 +0000 | [diff] [blame] | 50 | %tmp.1 = fptoui float %a to i16 |
51 | ret i16 %tmp.1 | ||||
Chris Lattner | c7d855e | 2006-02-28 06:54:19 +0000 | [diff] [blame] | 52 | } |