1 ;test all the shifted and signextending adds and subs with and without consts 2 ; 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 2 8 ; 9 ; 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 13 ; 14 ; 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 18 19 20 define signext i32 @al(i32 signext %x.s, i32 signext %y.s) { 21 entry: 22 %tmp.3.s = add i32 %y.s, %x.s ; <i32> [#uses=1] 23 ret i32 %tmp.3.s 24 } 25 26 define signext i32 @ali(i32 signext %x.s) { 27 entry: 28 %tmp.3.s = add i32 100, %x.s ; <i32> [#uses=1] 29 ret i32 %tmp.3.s 30 } 31 32 define signext i64 @aq(i64 signext %x.s, i64 signext %y.s) { 33 entry: 34 %tmp.3.s = add i64 %y.s, %x.s ; <i64> [#uses=1] 35 ret i64 %tmp.3.s 36 } 37 38 define i64 @aqi(i64 %x.s) { 39 entry: 40 %tmp.3.s = add i64 100, %x.s ; <i64> [#uses=1] 41 ret i64 %tmp.3.s 42 } 43 44 define signext i32 @sl(i32 signext %x.s, i32 signext %y.s) { 45 entry: 46 %tmp.3.s = sub i32 %y.s, %x.s ; <i32> [#uses=1] 47 ret i32 %tmp.3.s 48 } 49 50 define signext i32 @sli(i32 signext %x.s) { 51 entry: 52 %tmp.3.s = sub i32 %x.s, 100 ; <i32> [#uses=1] 53 ret i32 %tmp.3.s 54 } 55 56 define i64 @sq(i64 %x.s, i64 %y.s) { 57 entry: 58 %tmp.3.s = sub i64 %y.s, %x.s ; <i64> [#uses=1] 59 ret i64 %tmp.3.s 60 } 61 62 define i64 @sqi(i64 %x.s) { 63 entry: 64 %tmp.3.s = sub i64 %x.s, 100 ; <i64> [#uses=1] 65 ret i64 %tmp.3.s 66 } 67 68 define signext i32 @a4l(i32 signext %x.s, i32 signext %y.s) { 69 entry: 70 %tmp.1.s = shl i32 %y.s, 2 ; <i32> [#uses=1] 71 %tmp.3.s = add i32 %tmp.1.s, %x.s ; <i32> [#uses=1] 72 ret i32 %tmp.3.s 73 } 74 75 define signext i32 @a8l(i32 signext %x.s, i32 signext %y.s) { 76 entry: 77 %tmp.1.s = shl i32 %y.s, 3 ; <i32> [#uses=1] 78 %tmp.3.s = add i32 %tmp.1.s, %x.s ; <i32> [#uses=1] 79 ret i32 %tmp.3.s 80 } 81 82 define i64 @a4q(i64 %x.s, i64 %y.s) { 83 entry: 84 %tmp.1.s = shl i64 %y.s, 2 ; <i64> [#uses=1] 85 %tmp.3.s = add i64 %tmp.1.s, %x.s ; <i64> [#uses=1] 86 ret i64 %tmp.3.s 87 } 88 89 define i64 @a8q(i64 %x.s, i64 %y.s) { 90 entry: 91 %tmp.1.s = shl i64 %y.s, 3 ; <i64> [#uses=1] 92 %tmp.3.s = add i64 %tmp.1.s, %x.s ; <i64> [#uses=1] 93 ret i64 %tmp.3.s 94 } 95 96 define signext i32 @a4li(i32 signext %y.s) { 97 entry: 98 %tmp.1.s = shl i32 %y.s, 2 ; <i32> [#uses=1] 99 %tmp.3.s = add i32 100, %tmp.1.s ; <i32> [#uses=1] 100 ret i32 %tmp.3.s 101 } 102 103 define signext i32 @a8li(i32 signext %y.s) { 104 entry: 105 %tmp.1.s = shl i32 %y.s, 3 ; <i32> [#uses=1] 106 %tmp.3.s = add i32 100, %tmp.1.s ; <i32> [#uses=1] 107 ret i32 %tmp.3.s 108 } 109 110 define i64 @a4qi(i64 %y.s) { 111 entry: 112 %tmp.1.s = shl i64 %y.s, 2 ; <i64> [#uses=1] 113 %tmp.3.s = add i64 100, %tmp.1.s ; <i64> [#uses=1] 114 ret i64 %tmp.3.s 115 } 116 117 define i64 @a8qi(i64 %y.s) { 118 entry: 119 %tmp.1.s = shl i64 %y.s, 3 ; <i64> [#uses=1] 120 %tmp.3.s = add i64 100, %tmp.1.s ; <i64> [#uses=1] 121 ret i64 %tmp.3.s 122 } 123 124 define signext i32 @s4l(i32 signext %x.s, i32 signext %y.s) { 125 entry: 126 %tmp.1.s = shl i32 %y.s, 2 ; <i32> [#uses=1] 127 %tmp.3.s = sub i32 %tmp.1.s, %x.s ; <i32> [#uses=1] 128 ret i32 %tmp.3.s 129 } 130 131 define signext i32 @s8l(i32 signext %x.s, i32 signext %y.s) { 132 entry: 133 %tmp.1.s = shl i32 %y.s, 3 ; <i32> [#uses=1] 134 %tmp.3.s = sub i32 %tmp.1.s, %x.s ; <i32> [#uses=1] 135 ret i32 %tmp.3.s 136 } 137 138 define i64 @s4q(i64 %x.s, i64 %y.s) { 139 entry: 140 %tmp.1.s = shl i64 %y.s, 2 ; <i64> [#uses=1] 141 %tmp.3.s = sub i64 %tmp.1.s, %x.s ; <i64> [#uses=1] 142 ret i64 %tmp.3.s 143 } 144 145 define i64 @s8q(i64 %x.s, i64 %y.s) { 146 entry: 147 %tmp.1.s = shl i64 %y.s, 3 ; <i64> [#uses=1] 148 %tmp.3.s = sub i64 %tmp.1.s, %x.s ; <i64> [#uses=1] 149 ret i64 %tmp.3.s 150 } 151 152 define signext i32 @s4li(i32 signext %y.s) { 153 entry: 154 %tmp.1.s = shl i32 %y.s, 2 ; <i32> [#uses=1] 155 %tmp.3.s = sub i32 %tmp.1.s, 100 ; <i32> [#uses=1] 156 ret i32 %tmp.3.s 157 } 158 159 define signext i32 @s8li(i32 signext %y.s) { 160 entry: 161 %tmp.1.s = shl i32 %y.s, 3 ; <i32> [#uses=1] 162 %tmp.3.s = sub i32 %tmp.1.s, 100 ; <i32> [#uses=1] 163 ret i32 %tmp.3.s 164 } 165 166 define i64 @s4qi(i64 %y.s) { 167 entry: 168 %tmp.1.s = shl i64 %y.s, 2 ; <i64> [#uses=1] 169 %tmp.3.s = sub i64 %tmp.1.s, 100 ; <i64> [#uses=1] 170 ret i64 %tmp.3.s 171 } 172 173 define i64 @s8qi(i64 %y.s) { 174 entry: 175 %tmp.1.s = shl i64 %y.s, 3 ; <i64> [#uses=1] 176 %tmp.3.s = sub i64 %tmp.1.s, 100 ; <i64> [#uses=1] 177 ret i64 %tmp.3.s 178 } 179