Convert tests using "| wc -l | grep ..." to use the count script.
[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 | count 2
5 ; RUN: grep {   addq} %t.s | count 2
6 ; RUN: grep {   subl} %t.s | count 2
7 ; RUN: grep {   subq} %t.s | count 1
8 ;
9 ; RUN: grep {lda \$0,-100(\$16)} %t.s | count 1
10 ; RUN: grep {s4addl} %t.s | count 2
11 ; RUN: grep {s8addl} %t.s | count 2
12 ; RUN: grep {s4addq} %t.s | count 2
13 ; RUN: grep {s8addq} %t.s | count 2
14 ;
15 ; RUN: grep {s4subl} %t.s | count 2
16 ; RUN: grep {s8subl} %t.s | count 2
17 ; RUN: grep {s4subq} %t.s | count 2
18 ; RUN: grep {s8subq} %t.s | count 2
19
20
21 define i32 @al(i32 signext %x.s, i32 signext %y.s) signext {
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 signext %x.s) signext {
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 signext %x.s, i64 signext %y.s) signext {
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 signext %x.s, i32 signext %y.s) signext {
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 signext %x.s) signext {
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 signext %x.s, i32 signext %y.s) signext {
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 signext %x.s, i32 signext %y.s) signext {
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 signext %y.s) signext {
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 signext %y.s) signext {
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 signext %x.s, i32 signext %y.s) signext {
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 signext %x.s, i32 signext %y.s) signext {
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 signext %y.s) signext {
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 signext %y.s) signext {
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 }