blob: 24a74188f8c09ff0f16483e972865df4d16e8c1a [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;
Dan Gohmanfce288f2009-09-09 00:09:15 +00003; RUN: llc < %s -march=alpha -o %t.s
Dan Gohman28beeea2007-08-15 13:36:28 +00004; 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
Reid Spencer22333612007-01-03 04:20:23 +00008;
Dan Gohman28beeea2007-08-15 13:36:28 +00009; 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
Reid Spencer22333612007-01-03 04:20:23 +000014;
Dan Gohman28beeea2007-08-15 13:36:28 +000015; 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
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000019
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000020
Reid Spencer9445e9a2007-07-19 23:13:04 +000021define i32 @al(i32 signext %x.s, i32 signext %y.s) signext {
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 Spencer9445e9a2007-07-19 23:13:04 +000027define i32 @ali(i32 signext %x.s) signext {
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 Spencer9445e9a2007-07-19 23:13:04 +000033define i64 @aq(i64 signext %x.s, i64 signext %y.s) signext {
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 Spencer9445e9a2007-07-19 23:13:04 +000045define i32 @sl(i32 signext %x.s, i32 signext %y.s) signext {
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 Spencer9445e9a2007-07-19 23:13:04 +000051define i32 @sli(i32 signext %x.s) signext {
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 Spencer9445e9a2007-07-19 23:13:04 +000069define i32 @a4l(i32 signext %x.s, i32 signext %y.s) signext {
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 Spencer9445e9a2007-07-19 23:13:04 +000076define i32 @a8l(i32 signext %x.s, i32 signext %y.s) signext {
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 Spencer9445e9a2007-07-19 23:13:04 +000097define i32 @a4li(i32 signext %y.s) signext {
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 Spencer9445e9a2007-07-19 23:13:04 +0000104define i32 @a8li(i32 signext %y.s) signext {
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 Spencer9445e9a2007-07-19 23:13:04 +0000125define i32 @s4l(i32 signext %x.s, i32 signext %y.s) signext {
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 Spencer9445e9a2007-07-19 23:13:04 +0000132define i32 @s8l(i32 signext %x.s, i32 signext %y.s) signext {
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 Spencer9445e9a2007-07-19 23:13:04 +0000153define i32 @s4li(i32 signext %y.s) signext {
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 Spencer9445e9a2007-07-19 23:13:04 +0000160define i32 @s8li(i32 signext %y.s) signext {
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}