blob: 8add4b41eab91c998926841d7c26a932b59eaaf2 [file] [log] [blame]
Andrew Lenhartha54f6b12006-10-31 19:50:55 +00001;test all the shifted and signextending adds and subs with and without consts
Reid Spencer22333612007-01-03 04:20:23 +00002;
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
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000019
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000020
Reid Spencere3ff5ad2007-01-26 08:25:06 +000021define i32 @al(i32 sext %x.s, i32 sext %y.s) sext {
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000022entry:
Reid Spencer22333612007-01-03 04:20:23 +000023 %tmp.3.s = add i32 %y.s, %x.s ; <i32> [#uses=1]
24 ret i32 %tmp.3.s
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000025}
26
Reid Spencere3ff5ad2007-01-26 08:25:06 +000027define i32 @ali(i32 sext %x.s) sext {
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000028entry:
Reid Spencer22333612007-01-03 04:20:23 +000029 %tmp.3.s = add i32 100, %x.s ; <i32> [#uses=1]
30 ret i32 %tmp.3.s
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000031}
32
Reid Spencere3ff5ad2007-01-26 08:25:06 +000033define i64 @aq(i64 sext %x.s, i64 sext %y.s) sext {
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000034entry:
Reid Spencer22333612007-01-03 04:20:23 +000035 %tmp.3.s = add i64 %y.s, %x.s ; <i64> [#uses=1]
36 ret i64 %tmp.3.s
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000037}
38
Reid Spencere3ff5ad2007-01-26 08:25:06 +000039define i64 @aqi(i64 %x.s) {
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000040entry:
Reid Spencer22333612007-01-03 04:20:23 +000041 %tmp.3.s = add i64 100, %x.s ; <i64> [#uses=1]
42 ret i64 %tmp.3.s
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000043}
44
Reid Spencere3ff5ad2007-01-26 08:25:06 +000045define i32 @sl(i32 sext %x.s, i32 sext %y.s) sext {
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000046entry:
Reid Spencer22333612007-01-03 04:20:23 +000047 %tmp.3.s = sub i32 %y.s, %x.s ; <i32> [#uses=1]
48 ret i32 %tmp.3.s
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000049}
50
Reid Spencere3ff5ad2007-01-26 08:25:06 +000051define i32 @sli(i32 sext %x.s) sext {
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000052entry:
Reid Spencer22333612007-01-03 04:20:23 +000053 %tmp.3.s = sub i32 %x.s, 100 ; <i32> [#uses=1]
54 ret i32 %tmp.3.s
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000055}
56
Reid Spencere3ff5ad2007-01-26 08:25:06 +000057define i64 @sq(i64 %x.s, i64 %y.s) {
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000058entry:
Reid Spencer22333612007-01-03 04:20:23 +000059 %tmp.3.s = sub i64 %y.s, %x.s ; <i64> [#uses=1]
60 ret i64 %tmp.3.s
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000061}
62
Reid Spencere3ff5ad2007-01-26 08:25:06 +000063define i64 @sqi(i64 %x.s) {
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000064entry:
Reid Spencer22333612007-01-03 04:20:23 +000065 %tmp.3.s = sub i64 %x.s, 100 ; <i64> [#uses=1]
66 ret i64 %tmp.3.s
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000067}
68
Reid Spencere3ff5ad2007-01-26 08:25:06 +000069define i32 @a4l(i32 sext %x.s, i32 sext %y.s) sext {
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000070entry:
Reid Spencer832254e2007-02-02 02:16:23 +000071 %tmp.1.s = shl i32 %y.s, 2 ; <i32> [#uses=1]
Reid Spencer22333612007-01-03 04:20:23 +000072 %tmp.3.s = add i32 %tmp.1.s, %x.s ; <i32> [#uses=1]
73 ret i32 %tmp.3.s
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000074}
75
Reid Spencere3ff5ad2007-01-26 08:25:06 +000076define i32 @a8l(i32 sext %x.s, i32 sext %y.s) sext {
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000077entry:
Reid Spencer832254e2007-02-02 02:16:23 +000078 %tmp.1.s = shl i32 %y.s, 3 ; <i32> [#uses=1]
Reid Spencer22333612007-01-03 04:20:23 +000079 %tmp.3.s = add i32 %tmp.1.s, %x.s ; <i32> [#uses=1]
80 ret i32 %tmp.3.s
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000081}
82
Reid Spencere3ff5ad2007-01-26 08:25:06 +000083define i64 @a4q(i64 %x.s, i64 %y.s) {
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000084entry:
Reid Spencer832254e2007-02-02 02:16:23 +000085 %tmp.1.s = shl i64 %y.s, 2 ; <i64> [#uses=1]
Reid Spencer22333612007-01-03 04:20:23 +000086 %tmp.3.s = add i64 %tmp.1.s, %x.s ; <i64> [#uses=1]
87 ret i64 %tmp.3.s
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000088}
89
Reid Spencere3ff5ad2007-01-26 08:25:06 +000090define i64 @a8q(i64 %x.s, i64 %y.s) {
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000091entry:
Reid Spencer832254e2007-02-02 02:16:23 +000092 %tmp.1.s = shl i64 %y.s, 3 ; <i64> [#uses=1]
Reid Spencer22333612007-01-03 04:20:23 +000093 %tmp.3.s = add i64 %tmp.1.s, %x.s ; <i64> [#uses=1]
94 ret i64 %tmp.3.s
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000095}
96
Reid Spencere3ff5ad2007-01-26 08:25:06 +000097define i32 @a4li(i32 sext %y.s) sext {
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000098entry:
Reid Spencer832254e2007-02-02 02:16:23 +000099 %tmp.1.s = shl i32 %y.s, 2 ; <i32> [#uses=1]
Reid Spencer22333612007-01-03 04:20:23 +0000100 %tmp.3.s = add i32 100, %tmp.1.s ; <i32> [#uses=1]
101 ret i32 %tmp.3.s
Andrew Lenhartha54f6b12006-10-31 19:50:55 +0000102}
103
Reid Spencere3ff5ad2007-01-26 08:25:06 +0000104define i32 @a8li(i32 sext %y.s) sext {
Andrew Lenhartha54f6b12006-10-31 19:50:55 +0000105entry:
Reid Spencer832254e2007-02-02 02:16:23 +0000106 %tmp.1.s = shl i32 %y.s, 3 ; <i32> [#uses=1]
Reid Spencer22333612007-01-03 04:20:23 +0000107 %tmp.3.s = add i32 100, %tmp.1.s ; <i32> [#uses=1]
108 ret i32 %tmp.3.s
Andrew Lenhartha54f6b12006-10-31 19:50:55 +0000109}
110
Reid Spencere3ff5ad2007-01-26 08:25:06 +0000111define i64 @a4qi(i64 %y.s) {
Andrew Lenhartha54f6b12006-10-31 19:50:55 +0000112entry:
Reid Spencer832254e2007-02-02 02:16:23 +0000113 %tmp.1.s = shl i64 %y.s, 2 ; <i64> [#uses=1]
Reid Spencer22333612007-01-03 04:20:23 +0000114 %tmp.3.s = add i64 100, %tmp.1.s ; <i64> [#uses=1]
115 ret i64 %tmp.3.s
Andrew Lenhartha54f6b12006-10-31 19:50:55 +0000116}
117
Reid Spencere3ff5ad2007-01-26 08:25:06 +0000118define i64 @a8qi(i64 %y.s) {
Andrew Lenhartha54f6b12006-10-31 19:50:55 +0000119entry:
Reid Spencer832254e2007-02-02 02:16:23 +0000120 %tmp.1.s = shl i64 %y.s, 3 ; <i64> [#uses=1]
Reid Spencer22333612007-01-03 04:20:23 +0000121 %tmp.3.s = add i64 100, %tmp.1.s ; <i64> [#uses=1]
122 ret i64 %tmp.3.s
Andrew Lenhartha54f6b12006-10-31 19:50:55 +0000123}
124
Reid Spencere3ff5ad2007-01-26 08:25:06 +0000125define i32 @s4l(i32 sext %x.s, i32 sext %y.s) sext {
Andrew Lenhartha54f6b12006-10-31 19:50:55 +0000126entry:
Reid Spencer832254e2007-02-02 02:16:23 +0000127 %tmp.1.s = shl i32 %y.s, 2 ; <i32> [#uses=1]
Reid Spencer22333612007-01-03 04:20:23 +0000128 %tmp.3.s = sub i32 %tmp.1.s, %x.s ; <i32> [#uses=1]
129 ret i32 %tmp.3.s
Andrew Lenhartha54f6b12006-10-31 19:50:55 +0000130}
131
Reid Spencere3ff5ad2007-01-26 08:25:06 +0000132define i32 @s8l(i32 sext %x.s, i32 sext %y.s) sext {
Andrew Lenhartha54f6b12006-10-31 19:50:55 +0000133entry:
Reid Spencer832254e2007-02-02 02:16:23 +0000134 %tmp.1.s = shl i32 %y.s, 3 ; <i32> [#uses=1]
Reid Spencer22333612007-01-03 04:20:23 +0000135 %tmp.3.s = sub i32 %tmp.1.s, %x.s ; <i32> [#uses=1]
136 ret i32 %tmp.3.s
Andrew Lenhartha54f6b12006-10-31 19:50:55 +0000137}
138
Reid Spencere3ff5ad2007-01-26 08:25:06 +0000139define i64 @s4q(i64 %x.s, i64 %y.s) {
Andrew Lenhartha54f6b12006-10-31 19:50:55 +0000140entry:
Reid Spencer832254e2007-02-02 02:16:23 +0000141 %tmp.1.s = shl i64 %y.s, 2 ; <i64> [#uses=1]
Reid Spencer22333612007-01-03 04:20:23 +0000142 %tmp.3.s = sub i64 %tmp.1.s, %x.s ; <i64> [#uses=1]
143 ret i64 %tmp.3.s
Andrew Lenhartha54f6b12006-10-31 19:50:55 +0000144}
145
Reid Spencere3ff5ad2007-01-26 08:25:06 +0000146define i64 @s8q(i64 %x.s, i64 %y.s) {
Andrew Lenhartha54f6b12006-10-31 19:50:55 +0000147entry:
Reid Spencer832254e2007-02-02 02:16:23 +0000148 %tmp.1.s = shl i64 %y.s, 3 ; <i64> [#uses=1]
Reid Spencer22333612007-01-03 04:20:23 +0000149 %tmp.3.s = sub i64 %tmp.1.s, %x.s ; <i64> [#uses=1]
150 ret i64 %tmp.3.s
Andrew Lenhartha54f6b12006-10-31 19:50:55 +0000151}
152
Reid Spencere3ff5ad2007-01-26 08:25:06 +0000153define i32 @s4li(i32 sext %y.s) sext {
Andrew Lenhartha54f6b12006-10-31 19:50:55 +0000154entry:
Reid Spencer832254e2007-02-02 02:16:23 +0000155 %tmp.1.s = shl i32 %y.s, 2 ; <i32> [#uses=1]
Reid Spencer22333612007-01-03 04:20:23 +0000156 %tmp.3.s = sub i32 %tmp.1.s, 100 ; <i32> [#uses=1]
157 ret i32 %tmp.3.s
Andrew Lenhartha54f6b12006-10-31 19:50:55 +0000158}
159
Reid Spencere3ff5ad2007-01-26 08:25:06 +0000160define i32 @s8li(i32 sext %y.s) sext {
Andrew Lenhartha54f6b12006-10-31 19:50:55 +0000161entry:
Reid Spencer832254e2007-02-02 02:16:23 +0000162 %tmp.1.s = shl i32 %y.s, 3 ; <i32> [#uses=1]
Reid Spencer22333612007-01-03 04:20:23 +0000163 %tmp.3.s = sub i32 %tmp.1.s, 100 ; <i32> [#uses=1]
164 ret i32 %tmp.3.s
Andrew Lenhartha54f6b12006-10-31 19:50:55 +0000165}
166
Reid Spencere3ff5ad2007-01-26 08:25:06 +0000167define i64 @s4qi(i64 %y.s) {
Reid Spencer22333612007-01-03 04:20:23 +0000168entry:
Reid Spencer832254e2007-02-02 02:16:23 +0000169 %tmp.1.s = shl i64 %y.s, 2 ; <i64> [#uses=1]
Reid Spencer22333612007-01-03 04:20:23 +0000170 %tmp.3.s = sub i64 %tmp.1.s, 100 ; <i64> [#uses=1]
171 ret i64 %tmp.3.s
172}
173
Reid Spencere3ff5ad2007-01-26 08:25:06 +0000174define i64 @s8qi(i64 %y.s) {
Reid Spencer22333612007-01-03 04:20:23 +0000175entry:
Reid Spencer832254e2007-02-02 02:16:23 +0000176 %tmp.1.s = shl i64 %y.s, 3 ; <i64> [#uses=1]
Reid Spencer22333612007-01-03 04:20:23 +0000177 %tmp.3.s = sub i64 %tmp.1.s, 100 ; <i64> [#uses=1]
178 ret i64 %tmp.3.s
179}