Another case that shouldn't have sign extends: functions returning short
[oota-llvm.git] / test / CodeGen / PowerPC / small-arguments.ll
1 ; RUN: llvm-as < %s | llc -march=ppc32 | not grep 'extsh\|rlwinm r3, r3'
2
3 int %test1(short %X) {
4         %Y = cast short %X to int  ;; dead
5         ret int %Y
6 }
7
8 int %test2(ushort %X) {
9         %Y = cast ushort %X to int
10         %Z = and int %Y, 65535      ;; dead
11         ret int %Z
12 }
13
14 void %test3() {
15         %tmp.0 = call short %foo()            ;; no extsh!
16         %tmp.1 = setlt short %tmp.0, 1234
17         br bool %tmp.1, label %then, label %UnifiedReturnBlock
18
19 then:   
20         call int %test1(short 0)
21         ret void
22 UnifiedReturnBlock:
23         ret void
24 }
25
26 declare short %foo()