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