Update for change in parameter attributes syntax.
[oota-llvm.git] / test / CodeGen / PowerPC / small-arguments.ll
1 ; RUN: llvm-as < %s | llc -march=ppc32 &&
2 ; RUN: llvm-as < %s | llc -march=ppc32 | not grep 'extsh\|rlwinm'
3
4 declare i16 %foo() sext 
5
6 define i32 %test1(i16 sext %X) {
7         %Y = sext i16 %X to i32  ;; dead
8         ret i32 %Y
9 }
10
11 define i32 %test2(i16 zext %X) {
12         %Y = sext i16 %X to i32
13         %Z = and i32 %Y, 65535      ;; dead
14         ret i32 %Z
15 }
16
17 define void %test3() {
18         %tmp.0 = call i16 %foo() sext            ;; no extsh!
19         %tmp.1 = icmp slt i16 %tmp.0, 1234
20         br bool %tmp.1, label %then, label %UnifiedReturnBlock
21
22 then:   
23         call i32 %test1(i16 0 sext)
24         ret void
25 UnifiedReturnBlock:
26         ret void
27 }
28
29 define i32 %test4(i16* %P) {
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
34 }
35
36 define i32 %test5(i16* %P) {
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
42 }
43
44 define i32 %test6(i32* %P) {
45         %tmp.1 = load i32* %P
46         %tmp.2 = and i32 %tmp.1, 255
47         ret i32 %tmp.2
48 }
49
50 define i16 %test7(float %a) zext {
51         %tmp.1 = fptoui float %a to i16
52         ret i16 %tmp.1
53 }