John Bauman | 66b8ab2 | 2014-05-06 15:57:45 -0400 | [diff] [blame] | 1 | ; RUN: llc < %s -march=ppc32 | not grep {extsh\\|rlwinm}
|
| 2 |
|
| 3 | declare signext i16 @foo()
|
| 4 |
|
| 5 | define i32 @test1(i16 signext %X) {
|
| 6 | %Y = sext i16 %X to i32 ;; dead
|
| 7 | ret i32 %Y
|
| 8 | }
|
| 9 |
|
| 10 | define i32 @test2(i16 zeroext %X) {
|
| 11 | %Y = sext i16 %X to i32
|
| 12 | %Z = and i32 %Y, 65535 ;; dead
|
| 13 | ret i32 %Z
|
| 14 | }
|
| 15 |
|
| 16 | define void @test3() {
|
| 17 | %tmp.0 = call signext i16 @foo() ;; no extsh!
|
| 18 | %tmp.1 = icmp slt i16 %tmp.0, 1234
|
| 19 | br i1 %tmp.1, label %then, label %UnifiedReturnBlock
|
| 20 |
|
| 21 | then:
|
| 22 | call i32 @test1(i16 signext 0)
|
| 23 | ret void
|
| 24 | UnifiedReturnBlock:
|
| 25 | ret void
|
| 26 | }
|
| 27 |
|
| 28 | define i32 @test4(i16* %P) {
|
| 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
|
| 33 | }
|
| 34 |
|
| 35 | define i32 @test5(i16* %P) {
|
| 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
|
| 41 | }
|
| 42 |
|
| 43 | define i32 @test6(i32* %P) {
|
| 44 | %tmp.1 = load i32* %P
|
| 45 | %tmp.2 = and i32 %tmp.1, 255
|
| 46 | ret i32 %tmp.2
|
| 47 | }
|
| 48 |
|
| 49 | define zeroext i16 @test7(float %a) {
|
| 50 | %tmp.1 = fptoui float %a to i16
|
| 51 | ret i16 %tmp.1
|
| 52 | }
|