blob: cd883f64a6ba6f4dc151e3e2356c70620e936401 [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
Chris Lattner117ccb72010-03-01 22:09:11 +00007; RUN: grep { subq} %t.s | count 2
Reid Spencer22333612007-01-03 04:20:23 +00008;
Dan Gohman28beeea2007-08-15 13:36:28 +00009; RUN: grep {s4addl} %t.s | count 2
10; RUN: grep {s8addl} %t.s | count 2
11; RUN: grep {s4addq} %t.s | count 2
12; RUN: grep {s8addq} %t.s | count 2
Reid Spencer22333612007-01-03 04:20:23 +000013;
Dan Gohman28beeea2007-08-15 13:36:28 +000014; RUN: grep {s4subl} %t.s | count 2
15; RUN: grep {s8subl} %t.s | count 2
16; RUN: grep {s4subq} %t.s | count 2
17; RUN: grep {s8subq} %t.s | count 2
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000018
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000019
Reid Spencer9445e9a2007-07-19 23:13:04 +000020define i32 @al(i32 signext %x.s, i32 signext %y.s) signext {
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000021entry:
Reid Spencer22333612007-01-03 04:20:23 +000022 %tmp.3.s = add i32 %y.s, %x.s ; <i32> [#uses=1]
23 ret i32 %tmp.3.s
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000024}
25
Reid Spencer9445e9a2007-07-19 23:13:04 +000026define i32 @ali(i32 signext %x.s) signext {
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000027entry:
Reid Spencer22333612007-01-03 04:20:23 +000028 %tmp.3.s = add i32 100, %x.s ; <i32> [#uses=1]
29 ret i32 %tmp.3.s
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000030}
31
Reid Spencer9445e9a2007-07-19 23:13:04 +000032define i64 @aq(i64 signext %x.s, i64 signext %y.s) signext {
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000033entry:
Reid Spencer22333612007-01-03 04:20:23 +000034 %tmp.3.s = add i64 %y.s, %x.s ; <i64> [#uses=1]
35 ret i64 %tmp.3.s
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000036}
37
Reid Spencere3ff5ad2007-01-26 08:25:06 +000038define i64 @aqi(i64 %x.s) {
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000039entry:
Reid Spencer22333612007-01-03 04:20:23 +000040 %tmp.3.s = add i64 100, %x.s ; <i64> [#uses=1]
41 ret i64 %tmp.3.s
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000042}
43
Reid Spencer9445e9a2007-07-19 23:13:04 +000044define i32 @sl(i32 signext %x.s, i32 signext %y.s) signext {
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000045entry:
Reid Spencer22333612007-01-03 04:20:23 +000046 %tmp.3.s = sub i32 %y.s, %x.s ; <i32> [#uses=1]
47 ret i32 %tmp.3.s
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000048}
49
Reid Spencer9445e9a2007-07-19 23:13:04 +000050define i32 @sli(i32 signext %x.s) signext {
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000051entry:
Reid Spencer22333612007-01-03 04:20:23 +000052 %tmp.3.s = sub i32 %x.s, 100 ; <i32> [#uses=1]
53 ret i32 %tmp.3.s
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000054}
55
Reid Spencere3ff5ad2007-01-26 08:25:06 +000056define i64 @sq(i64 %x.s, i64 %y.s) {
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000057entry:
Reid Spencer22333612007-01-03 04:20:23 +000058 %tmp.3.s = sub i64 %y.s, %x.s ; <i64> [#uses=1]
59 ret i64 %tmp.3.s
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000060}
61
Reid Spencere3ff5ad2007-01-26 08:25:06 +000062define i64 @sqi(i64 %x.s) {
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000063entry:
Reid Spencer22333612007-01-03 04:20:23 +000064 %tmp.3.s = sub i64 %x.s, 100 ; <i64> [#uses=1]
65 ret i64 %tmp.3.s
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000066}
67
Reid Spencer9445e9a2007-07-19 23:13:04 +000068define i32 @a4l(i32 signext %x.s, i32 signext %y.s) signext {
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000069entry:
Reid Spencer832254e2007-02-02 02:16:23 +000070 %tmp.1.s = shl i32 %y.s, 2 ; <i32> [#uses=1]
Reid Spencer22333612007-01-03 04:20:23 +000071 %tmp.3.s = add i32 %tmp.1.s, %x.s ; <i32> [#uses=1]
72 ret i32 %tmp.3.s
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000073}
74
Reid Spencer9445e9a2007-07-19 23:13:04 +000075define i32 @a8l(i32 signext %x.s, i32 signext %y.s) signext {
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000076entry:
Reid Spencer832254e2007-02-02 02:16:23 +000077 %tmp.1.s = shl i32 %y.s, 3 ; <i32> [#uses=1]
Reid Spencer22333612007-01-03 04:20:23 +000078 %tmp.3.s = add i32 %tmp.1.s, %x.s ; <i32> [#uses=1]
79 ret i32 %tmp.3.s
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000080}
81
Reid Spencere3ff5ad2007-01-26 08:25:06 +000082define i64 @a4q(i64 %x.s, i64 %y.s) {
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000083entry:
Reid Spencer832254e2007-02-02 02:16:23 +000084 %tmp.1.s = shl i64 %y.s, 2 ; <i64> [#uses=1]
Reid Spencer22333612007-01-03 04:20:23 +000085 %tmp.3.s = add i64 %tmp.1.s, %x.s ; <i64> [#uses=1]
86 ret i64 %tmp.3.s
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000087}
88
Reid Spencere3ff5ad2007-01-26 08:25:06 +000089define i64 @a8q(i64 %x.s, i64 %y.s) {
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000090entry:
Reid Spencer832254e2007-02-02 02:16:23 +000091 %tmp.1.s = shl i64 %y.s, 3 ; <i64> [#uses=1]
Reid Spencer22333612007-01-03 04:20:23 +000092 %tmp.3.s = add i64 %tmp.1.s, %x.s ; <i64> [#uses=1]
93 ret i64 %tmp.3.s
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000094}
95
Reid Spencer9445e9a2007-07-19 23:13:04 +000096define i32 @a4li(i32 signext %y.s) signext {
Andrew Lenhartha54f6b12006-10-31 19:50:55 +000097entry:
Reid Spencer832254e2007-02-02 02:16:23 +000098 %tmp.1.s = shl i32 %y.s, 2 ; <i32> [#uses=1]
Reid Spencer22333612007-01-03 04:20:23 +000099 %tmp.3.s = add i32 100, %tmp.1.s ; <i32> [#uses=1]
100 ret i32 %tmp.3.s
Andrew Lenhartha54f6b12006-10-31 19:50:55 +0000101}
102
Reid Spencer9445e9a2007-07-19 23:13:04 +0000103define i32 @a8li(i32 signext %y.s) signext {
Andrew Lenhartha54f6b12006-10-31 19:50:55 +0000104entry:
Reid Spencer832254e2007-02-02 02:16:23 +0000105 %tmp.1.s = shl i32 %y.s, 3 ; <i32> [#uses=1]
Reid Spencer22333612007-01-03 04:20:23 +0000106 %tmp.3.s = add i32 100, %tmp.1.s ; <i32> [#uses=1]
107 ret i32 %tmp.3.s
Andrew Lenhartha54f6b12006-10-31 19:50:55 +0000108}
109
Reid Spencere3ff5ad2007-01-26 08:25:06 +0000110define i64 @a4qi(i64 %y.s) {
Andrew Lenhartha54f6b12006-10-31 19:50:55 +0000111entry:
Reid Spencer832254e2007-02-02 02:16:23 +0000112 %tmp.1.s = shl i64 %y.s, 2 ; <i64> [#uses=1]
Reid Spencer22333612007-01-03 04:20:23 +0000113 %tmp.3.s = add i64 100, %tmp.1.s ; <i64> [#uses=1]
114 ret i64 %tmp.3.s
Andrew Lenhartha54f6b12006-10-31 19:50:55 +0000115}
116
Reid Spencere3ff5ad2007-01-26 08:25:06 +0000117define i64 @a8qi(i64 %y.s) {
Andrew Lenhartha54f6b12006-10-31 19:50:55 +0000118entry:
Reid Spencer832254e2007-02-02 02:16:23 +0000119 %tmp.1.s = shl i64 %y.s, 3 ; <i64> [#uses=1]
Reid Spencer22333612007-01-03 04:20:23 +0000120 %tmp.3.s = add i64 100, %tmp.1.s ; <i64> [#uses=1]
121 ret i64 %tmp.3.s
Andrew Lenhartha54f6b12006-10-31 19:50:55 +0000122}
123
Reid Spencer9445e9a2007-07-19 23:13:04 +0000124define i32 @s4l(i32 signext %x.s, i32 signext %y.s) signext {
Andrew Lenhartha54f6b12006-10-31 19:50:55 +0000125entry:
Reid Spencer832254e2007-02-02 02:16:23 +0000126 %tmp.1.s = shl i32 %y.s, 2 ; <i32> [#uses=1]
Reid Spencer22333612007-01-03 04:20:23 +0000127 %tmp.3.s = sub i32 %tmp.1.s, %x.s ; <i32> [#uses=1]
128 ret i32 %tmp.3.s
Andrew Lenhartha54f6b12006-10-31 19:50:55 +0000129}
130
Reid Spencer9445e9a2007-07-19 23:13:04 +0000131define i32 @s8l(i32 signext %x.s, i32 signext %y.s) signext {
Andrew Lenhartha54f6b12006-10-31 19:50:55 +0000132entry:
Reid Spencer832254e2007-02-02 02:16:23 +0000133 %tmp.1.s = shl i32 %y.s, 3 ; <i32> [#uses=1]
Reid Spencer22333612007-01-03 04:20:23 +0000134 %tmp.3.s = sub i32 %tmp.1.s, %x.s ; <i32> [#uses=1]
135 ret i32 %tmp.3.s
Andrew Lenhartha54f6b12006-10-31 19:50:55 +0000136}
137
Reid Spencere3ff5ad2007-01-26 08:25:06 +0000138define i64 @s4q(i64 %x.s, i64 %y.s) {
Andrew Lenhartha54f6b12006-10-31 19:50:55 +0000139entry:
Reid Spencer832254e2007-02-02 02:16:23 +0000140 %tmp.1.s = shl i64 %y.s, 2 ; <i64> [#uses=1]
Reid Spencer22333612007-01-03 04:20:23 +0000141 %tmp.3.s = sub i64 %tmp.1.s, %x.s ; <i64> [#uses=1]
142 ret i64 %tmp.3.s
Andrew Lenhartha54f6b12006-10-31 19:50:55 +0000143}
144
Reid Spencere3ff5ad2007-01-26 08:25:06 +0000145define i64 @s8q(i64 %x.s, i64 %y.s) {
Andrew Lenhartha54f6b12006-10-31 19:50:55 +0000146entry:
Reid Spencer832254e2007-02-02 02:16:23 +0000147 %tmp.1.s = shl i64 %y.s, 3 ; <i64> [#uses=1]
Reid Spencer22333612007-01-03 04:20:23 +0000148 %tmp.3.s = sub i64 %tmp.1.s, %x.s ; <i64> [#uses=1]
149 ret i64 %tmp.3.s
Andrew Lenhartha54f6b12006-10-31 19:50:55 +0000150}
151
Reid Spencer9445e9a2007-07-19 23:13:04 +0000152define i32 @s4li(i32 signext %y.s) signext {
Andrew Lenhartha54f6b12006-10-31 19:50:55 +0000153entry:
Reid Spencer832254e2007-02-02 02:16:23 +0000154 %tmp.1.s = shl i32 %y.s, 2 ; <i32> [#uses=1]
Reid Spencer22333612007-01-03 04:20:23 +0000155 %tmp.3.s = sub i32 %tmp.1.s, 100 ; <i32> [#uses=1]
156 ret i32 %tmp.3.s
Andrew Lenhartha54f6b12006-10-31 19:50:55 +0000157}
158
Reid Spencer9445e9a2007-07-19 23:13:04 +0000159define i32 @s8li(i32 signext %y.s) signext {
Andrew Lenhartha54f6b12006-10-31 19:50:55 +0000160entry:
Reid Spencer832254e2007-02-02 02:16:23 +0000161 %tmp.1.s = shl i32 %y.s, 3 ; <i32> [#uses=1]
Reid Spencer22333612007-01-03 04:20:23 +0000162 %tmp.3.s = sub i32 %tmp.1.s, 100 ; <i32> [#uses=1]
163 ret i32 %tmp.3.s
Andrew Lenhartha54f6b12006-10-31 19:50:55 +0000164}
165
Reid Spencere3ff5ad2007-01-26 08:25:06 +0000166define i64 @s4qi(i64 %y.s) {
Reid Spencer22333612007-01-03 04:20:23 +0000167entry:
Reid Spencer832254e2007-02-02 02:16:23 +0000168 %tmp.1.s = shl i64 %y.s, 2 ; <i64> [#uses=1]
Reid Spencer22333612007-01-03 04:20:23 +0000169 %tmp.3.s = sub i64 %tmp.1.s, 100 ; <i64> [#uses=1]
170 ret i64 %tmp.3.s
171}
172
Reid Spencere3ff5ad2007-01-26 08:25:06 +0000173define i64 @s8qi(i64 %y.s) {
Reid Spencer22333612007-01-03 04:20:23 +0000174entry:
Reid Spencer832254e2007-02-02 02:16:23 +0000175 %tmp.1.s = shl i64 %y.s, 3 ; <i64> [#uses=1]
Reid Spencer22333612007-01-03 04:20:23 +0000176 %tmp.3.s = sub i64 %tmp.1.s, 100 ; <i64> [#uses=1]
177 ret i64 %tmp.3.s
178}