Remove use of implementation keyword.
[oota-llvm.git] / test / CodeGen / Alpha / add.ll
1 ;test all the shifted and signextending adds and subs with and without consts
2 ;
3 ; RUN: llvm-as < %s | llc -march=alpha -o %t.s -f &&
4 ; RUN: grep '   addl' %t.s | wc -l | grep 2 &&
5 ; RUN: grep '   addq' %t.s | wc -l | grep 2 &&
6 ; RUN: grep '   subl' %t.s | wc -l | grep 2 &&
7 ; RUN: grep '   subq' %t.s | wc -l | grep 1 &&
8 ;
9 ; RUN: grep 'lda $0,-100($16)' %t.s | wc -l | grep 1 &&
10 ; RUN: grep 's4addl' %t.s | wc -l | grep 2 &&
11 ; RUN: grep 's8addl' %t.s | wc -l | grep 2 &&
12 ; RUN: grep 's4addq' %t.s | wc -l | grep 2 &&
13 ; RUN: grep 's8addq' %t.s | wc -l | grep 2 &&
14 ;
15 ; RUN: grep 's4subl' %t.s | wc -l | grep 2 &&
16 ; RUN: grep 's8subl' %t.s | wc -l | grep 2 &&
17 ; RUN: grep 's4subq' %t.s | wc -l | grep 2 &&
18 ; RUN: grep 's8subq' %t.s | wc -l | grep 2
19
20
21 define i32 @al(i32 sext %x.s, i32 sext %y.s) sext {
22 entry:
23         %tmp.3.s = add i32 %y.s, %x.s           ; <i32> [#uses=1]
24         ret i32 %tmp.3.s
25 }
26
27 define i32 @ali(i32 sext %x.s) sext {
28 entry:
29         %tmp.3.s = add i32 100, %x.s            ; <i32> [#uses=1]
30         ret i32 %tmp.3.s
31 }
32
33 define i64 @aq(i64 sext %x.s, i64 sext %y.s) sext {
34 entry:
35         %tmp.3.s = add i64 %y.s, %x.s           ; <i64> [#uses=1]
36         ret i64 %tmp.3.s
37 }
38
39 define i64 @aqi(i64 %x.s) {
40 entry:
41         %tmp.3.s = add i64 100, %x.s            ; <i64> [#uses=1]
42         ret i64 %tmp.3.s
43 }
44
45 define i32 @sl(i32 sext %x.s, i32 sext %y.s) sext {
46 entry:
47         %tmp.3.s = sub i32 %y.s, %x.s           ; <i32> [#uses=1]
48         ret i32 %tmp.3.s
49 }
50
51 define i32 @sli(i32 sext %x.s) sext {
52 entry:
53         %tmp.3.s = sub i32 %x.s, 100            ; <i32> [#uses=1]
54         ret i32 %tmp.3.s
55 }
56
57 define i64 @sq(i64 %x.s, i64 %y.s) {
58 entry:
59         %tmp.3.s = sub i64 %y.s, %x.s           ; <i64> [#uses=1]
60         ret i64 %tmp.3.s
61 }
62
63 define i64 @sqi(i64 %x.s) {
64 entry:
65         %tmp.3.s = sub i64 %x.s, 100            ; <i64> [#uses=1]
66         ret i64 %tmp.3.s
67 }
68
69 define i32 @a4l(i32 sext %x.s, i32 sext %y.s) sext {
70 entry:
71         %tmp.1.s = shl i32 %y.s, 2              ; <i32> [#uses=1]
72         %tmp.3.s = add i32 %tmp.1.s, %x.s               ; <i32> [#uses=1]
73         ret i32 %tmp.3.s
74 }
75
76 define i32 @a8l(i32 sext %x.s, i32 sext %y.s) sext {
77 entry:
78         %tmp.1.s = shl i32 %y.s, 3              ; <i32> [#uses=1]
79         %tmp.3.s = add i32 %tmp.1.s, %x.s               ; <i32> [#uses=1]
80         ret i32 %tmp.3.s
81 }
82
83 define i64 @a4q(i64 %x.s, i64 %y.s) {
84 entry:
85         %tmp.1.s = shl i64 %y.s, 2              ; <i64> [#uses=1]
86         %tmp.3.s = add i64 %tmp.1.s, %x.s               ; <i64> [#uses=1]
87         ret i64 %tmp.3.s
88 }
89
90 define i64 @a8q(i64 %x.s, i64 %y.s) {
91 entry:
92         %tmp.1.s = shl i64 %y.s, 3              ; <i64> [#uses=1]
93         %tmp.3.s = add i64 %tmp.1.s, %x.s               ; <i64> [#uses=1]
94         ret i64 %tmp.3.s
95 }
96
97 define i32 @a4li(i32 sext %y.s) sext {
98 entry:
99         %tmp.1.s = shl i32 %y.s, 2              ; <i32> [#uses=1]
100         %tmp.3.s = add i32 100, %tmp.1.s                ; <i32> [#uses=1]
101         ret i32 %tmp.3.s
102 }
103
104 define i32 @a8li(i32 sext %y.s) sext {
105 entry:
106         %tmp.1.s = shl i32 %y.s, 3              ; <i32> [#uses=1]
107         %tmp.3.s = add i32 100, %tmp.1.s                ; <i32> [#uses=1]
108         ret i32 %tmp.3.s
109 }
110
111 define i64 @a4qi(i64 %y.s) {
112 entry:
113         %tmp.1.s = shl i64 %y.s, 2              ; <i64> [#uses=1]
114         %tmp.3.s = add i64 100, %tmp.1.s                ; <i64> [#uses=1]
115         ret i64 %tmp.3.s
116 }
117
118 define i64 @a8qi(i64 %y.s) {
119 entry:
120         %tmp.1.s = shl i64 %y.s, 3              ; <i64> [#uses=1]
121         %tmp.3.s = add i64 100, %tmp.1.s                ; <i64> [#uses=1]
122         ret i64 %tmp.3.s
123 }
124
125 define i32 @s4l(i32 sext %x.s, i32 sext %y.s) sext {
126 entry:
127         %tmp.1.s = shl i32 %y.s, 2              ; <i32> [#uses=1]
128         %tmp.3.s = sub i32 %tmp.1.s, %x.s               ; <i32> [#uses=1]
129         ret i32 %tmp.3.s
130 }
131
132 define i32 @s8l(i32 sext %x.s, i32 sext %y.s) sext {
133 entry:
134         %tmp.1.s = shl i32 %y.s, 3              ; <i32> [#uses=1]
135         %tmp.3.s = sub i32 %tmp.1.s, %x.s               ; <i32> [#uses=1]
136         ret i32 %tmp.3.s
137 }
138
139 define i64 @s4q(i64 %x.s, i64 %y.s) {
140 entry:
141         %tmp.1.s = shl i64 %y.s, 2              ; <i64> [#uses=1]
142         %tmp.3.s = sub i64 %tmp.1.s, %x.s               ; <i64> [#uses=1]
143         ret i64 %tmp.3.s
144 }
145
146 define i64 @s8q(i64 %x.s, i64 %y.s) {
147 entry:
148         %tmp.1.s = shl i64 %y.s, 3              ; <i64> [#uses=1]
149         %tmp.3.s = sub i64 %tmp.1.s, %x.s               ; <i64> [#uses=1]
150         ret i64 %tmp.3.s
151 }
152
153 define i32 @s4li(i32 sext %y.s) sext {
154 entry:
155         %tmp.1.s = shl i32 %y.s, 2              ; <i32> [#uses=1]
156         %tmp.3.s = sub i32 %tmp.1.s, 100                ; <i32> [#uses=1]
157         ret i32 %tmp.3.s
158 }
159
160 define i32 @s8li(i32 sext %y.s) sext {
161 entry:
162         %tmp.1.s = shl i32 %y.s, 3              ; <i32> [#uses=1]
163         %tmp.3.s = sub i32 %tmp.1.s, 100                ; <i32> [#uses=1]
164         ret i32 %tmp.3.s
165 }
166
167 define i64 @s4qi(i64 %y.s) {
168 entry:
169         %tmp.1.s = shl i64 %y.s, 2              ; <i64> [#uses=1]
170         %tmp.3.s = sub i64 %tmp.1.s, 100                ; <i64> [#uses=1]
171         ret i64 %tmp.3.s
172 }
173
174 define i64 @s8qi(i64 %y.s) {
175 entry:
176         %tmp.1.s = shl i64 %y.s, 3              ; <i64> [#uses=1]
177         %tmp.3.s = sub i64 %tmp.1.s, 100                ; <i64> [#uses=1]
178         ret i64 %tmp.3.s
179 }