fix an embarassing typo that resulted in llvm-gcc bootstrap miscompare
[llvm/avr.git] / test / CodeGen / Alpha / add.ll
blob24a74188f8c09ff0f16483e972865df4d16e8c1a
1 ;test all the shifted and signextending adds and subs with and without consts
3 ; RUN: llc < %s -march=alpha -o %t.s
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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