new bswap idiom
[oota-llvm.git] / test / Transforms / ScalarRepl / AggregatePromote.ll
1 ; RUN: llvm-as < %s | opt -scalarrepl | llvm-dis | not grep alloca &&
2 ; RUN: llvm-as < %s | opt -scalarrepl -disable-output
3
4 target endian = big
5 target pointersize = 32
6 target triple = "powerpc-apple-darwin8.0.0"
7
8 long %test1(long %X) {
9         %A = alloca long
10         store long %X, long* %A
11         %B = cast long* %A to int*
12         %C = cast int* %B to sbyte*
13         store sbyte 0, sbyte* %C
14         %Y = load long *%A
15         ret long %Y
16 }
17
18
19 sbyte %test2(long %X) {
20         %X_addr = alloca long           ; <long*> [#uses=2]
21         store long %X, long* %X_addr
22         %tmp.0 = cast long* %X_addr to int*             ; <int*> [#uses=1]
23         %tmp.1 = getelementptr int* %tmp.0, int 1               ; <int*> [#uses=1]
24         %tmp.2 = cast int* %tmp.1 to sbyte*
25         %tmp.3 = getelementptr sbyte* %tmp.2, int 3
26         %tmp.2 = load sbyte* %tmp.3             ; <int> [#uses=1]
27         ret sbyte %tmp.2
28 }
29
30 short %crafty(long %X) {
31         %a = alloca { long }
32         %tmp.0 = getelementptr { long }* %a, int 0, uint 0            ; <long*> [#uses=1]
33         store long %X, long* %tmp.0
34         %tmp.3 = cast { long }* %a to [4 x short]*            ; <[4 x short]*> [#uses=2]
35         %tmp.4 = getelementptr [4 x short]* %tmp.3, int 0, int 3                ; <short*> [#uses=1]
36         %tmp.5 = load short* %tmp.4             ; <short> [#uses=1]
37         %tmp.8 = getelementptr [4 x short]* %tmp.3, int 0, int 2                ; <short*> [#uses=1]
38         %tmp.9 = load short* %tmp.8             ; <short> [#uses=1]
39         %tmp.10 = or short %tmp.9, %tmp.5               ; <short> [#uses=1]
40         ret short %tmp.10
41 }
42
43 short %crafty2(long %X) {
44         %a = alloca long 
45         store long %X, long* %a
46         %tmp.3 = cast long* %a to [4 x short]*            ; <[4 x short]*> [#uses=2]
47         %tmp.4 = getelementptr [4 x short]* %tmp.3, int 0, int 3                ; <short*> [#uses=1]
48         %tmp.5 = load short* %tmp.4             ; <short> [#uses=1]
49         %tmp.8 = getelementptr [4 x short]* %tmp.3, int 0, int 2                ; <short*> [#uses=1]
50         %tmp.9 = load short* %tmp.8             ; <short> [#uses=1]
51         %tmp.10 = or short %tmp.9, %tmp.5               ; <short> [#uses=1]
52         ret short %tmp.10
53 }
54