295 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=riscv64 -run-pass=legalizer %s -o - \3# RUN: | FileCheck %s4 5---6name: fshl_i87body: |8 bb.1:9 liveins: $x10, $x11, $x1210 11 ; CHECK-LABEL: name: fshl_i812 ; CHECK: liveins: $x10, $x11, $x1213 ; CHECK-NEXT: {{ $}}14 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x1015 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1116 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x1217 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 718 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY2]], [[C]]19 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 -120 ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(s64) = G_XOR [[COPY2]], [[C1]]21 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[XOR]], [[C]]22 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 123 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[AND]](s64)24 ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 25525 ; CHECK-NEXT: [[AND2:%[0-9]+]]:_(s64) = G_AND [[COPY1]], [[C3]]26 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[AND2]], [[C2]](s64)27 ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s64) = G_LSHR [[LSHR]], [[AND1]](s64)28 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s64) = disjoint G_OR [[SHL]], [[LSHR1]]29 ; CHECK-NEXT: $x10 = COPY [[OR]](s64)30 ; CHECK-NEXT: PseudoRET implicit $x1031 %3:_(s64) = COPY $x1032 %0:_(s8) = G_TRUNC %3(s64)33 %4:_(s64) = COPY $x1134 %1:_(s8) = G_TRUNC %4(s64)35 %5:_(s64) = COPY $x1236 %2:_(s8) = G_TRUNC %5(s64)37 %6:_(s8) = G_FSHL %0, %1, %2(s8)38 %7:_(s64) = G_ANYEXT %6(s8)39 $x10 = COPY %7(s64)40 PseudoRET implicit $x1041 42...43---44name: fshl_i1645body: |46 bb.1:47 liveins: $x10, $x11, $x1248 49 ; CHECK-LABEL: name: fshl_i1650 ; CHECK: liveins: $x10, $x11, $x1251 ; CHECK-NEXT: {{ $}}52 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x1053 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1154 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x1255 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1556 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY2]], [[C]]57 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 -158 ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(s64) = G_XOR [[COPY2]], [[C1]]59 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[XOR]], [[C]]60 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 161 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[AND]](s64)62 ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 6553563 ; CHECK-NEXT: [[AND2:%[0-9]+]]:_(s64) = G_AND [[COPY1]], [[C3]]64 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[AND2]], [[C2]](s64)65 ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s64) = G_LSHR [[LSHR]], [[AND1]](s64)66 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s64) = disjoint G_OR [[SHL]], [[LSHR1]]67 ; CHECK-NEXT: $x10 = COPY [[OR]](s64)68 ; CHECK-NEXT: PseudoRET implicit $x1069 %3:_(s64) = COPY $x1070 %0:_(s16) = G_TRUNC %3(s64)71 %4:_(s64) = COPY $x1172 %1:_(s16) = G_TRUNC %4(s64)73 %5:_(s64) = COPY $x1274 %2:_(s16) = G_TRUNC %5(s64)75 %6:_(s16) = G_FSHL %0, %1, %2(s16)76 %7:_(s64) = G_ANYEXT %6(s16)77 $x10 = COPY %7(s64)78 PseudoRET implicit $x1079 80...81---82name: fshl_i3283body: |84 bb.1:85 liveins: $x10, $x11, $x1286 87 ; CHECK-LABEL: name: fshl_i3288 ; CHECK: liveins: $x10, $x11, $x1289 ; CHECK-NEXT: {{ $}}90 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x1091 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1192 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x1293 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 3194 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY2]], [[C]]95 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 -196 ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(s64) = G_XOR [[COPY2]], [[C1]]97 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[XOR]], [[C]]98 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 199 ; CHECK-NEXT: [[SLLW:%[0-9]+]]:_(s64) = G_SLLW [[COPY]], [[AND]]100 ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 4294967295101 ; CHECK-NEXT: [[AND2:%[0-9]+]]:_(s64) = G_AND [[COPY1]], [[C3]]102 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[AND2]], [[C2]](s64)103 ; CHECK-NEXT: [[SRLW:%[0-9]+]]:_(s64) = G_SRLW [[LSHR]], [[AND1]]104 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s64) = disjoint G_OR [[SLLW]], [[SRLW]]105 ; CHECK-NEXT: $x10 = COPY [[OR]](s64)106 ; CHECK-NEXT: PseudoRET implicit $x10107 %3:_(s64) = COPY $x10108 %0:_(s32) = G_TRUNC %3(s64)109 %4:_(s64) = COPY $x11110 %1:_(s32) = G_TRUNC %4(s64)111 %5:_(s64) = COPY $x12112 %2:_(s32) = G_TRUNC %5(s64)113 %6:_(s32) = G_FSHL %0, %1, %2(s32)114 %7:_(s64) = G_ANYEXT %6(s32)115 $x10 = COPY %7(s64)116 PseudoRET implicit $x10117 118...119---120name: fshl_i64121body: |122 bb.1:123 liveins: $x10, $x11, $x12124 125 ; CHECK-LABEL: name: fshl_i64126 ; CHECK: liveins: $x10, $x11, $x12127 ; CHECK-NEXT: {{ $}}128 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10129 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11130 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x12131 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 63132 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY2]], [[C]]133 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1134 ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(s64) = G_XOR [[COPY2]], [[C1]]135 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[XOR]], [[C]]136 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 1137 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[AND]](s64)138 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[COPY1]], [[C2]](s64)139 ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s64) = G_LSHR [[LSHR]], [[AND1]](s64)140 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s64) = disjoint G_OR [[SHL]], [[LSHR1]]141 ; CHECK-NEXT: $x10 = COPY [[OR]](s64)142 ; CHECK-NEXT: PseudoRET implicit $x10143 %0:_(s64) = COPY $x10144 %1:_(s64) = COPY $x11145 %2:_(s64) = COPY $x12146 %3:_(s64) = G_FSHL %0, %1, %2(s64)147 $x10 = COPY %3(s64)148 PseudoRET implicit $x10149 150...151---152name: fshr_i8153body: |154 bb.1:155 liveins: $x10, $x11, $x12156 157 ; CHECK-LABEL: name: fshr_i8158 ; CHECK: liveins: $x10, $x11, $x12159 ; CHECK-NEXT: {{ $}}160 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10161 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11162 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x12163 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 7164 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY2]], [[C]]165 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1166 ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(s64) = G_XOR [[COPY2]], [[C1]]167 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[XOR]], [[C]]168 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 1169 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[C2]](s64)170 ; CHECK-NEXT: [[SHL1:%[0-9]+]]:_(s64) = G_SHL [[SHL]], [[AND1]](s64)171 ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 255172 ; CHECK-NEXT: [[AND2:%[0-9]+]]:_(s64) = G_AND [[COPY1]], [[C3]]173 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[AND2]], [[AND]](s64)174 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s64) = disjoint G_OR [[SHL1]], [[LSHR]]175 ; CHECK-NEXT: $x10 = COPY [[OR]](s64)176 ; CHECK-NEXT: PseudoRET implicit $x10177 %3:_(s64) = COPY $x10178 %0:_(s8) = G_TRUNC %3(s64)179 %4:_(s64) = COPY $x11180 %1:_(s8) = G_TRUNC %4(s64)181 %5:_(s64) = COPY $x12182 %2:_(s8) = G_TRUNC %5(s64)183 %6:_(s8) = G_FSHR %0, %1, %2(s8)184 %7:_(s64) = G_ANYEXT %6(s8)185 $x10 = COPY %7(s64)186 PseudoRET implicit $x10187 188...189---190name: fshr_i16191body: |192 bb.1:193 liveins: $x10, $x11, $x12194 195 ; CHECK-LABEL: name: fshr_i16196 ; CHECK: liveins: $x10, $x11, $x12197 ; CHECK-NEXT: {{ $}}198 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10199 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11200 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x12201 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 15202 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY2]], [[C]]203 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1204 ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(s64) = G_XOR [[COPY2]], [[C1]]205 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[XOR]], [[C]]206 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 1207 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[C2]](s64)208 ; CHECK-NEXT: [[SHL1:%[0-9]+]]:_(s64) = G_SHL [[SHL]], [[AND1]](s64)209 ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 65535210 ; CHECK-NEXT: [[AND2:%[0-9]+]]:_(s64) = G_AND [[COPY1]], [[C3]]211 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[AND2]], [[AND]](s64)212 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s64) = disjoint G_OR [[SHL1]], [[LSHR]]213 ; CHECK-NEXT: $x10 = COPY [[OR]](s64)214 ; CHECK-NEXT: PseudoRET implicit $x10215 %3:_(s64) = COPY $x10216 %0:_(s16) = G_TRUNC %3(s64)217 %4:_(s64) = COPY $x11218 %1:_(s16) = G_TRUNC %4(s64)219 %5:_(s64) = COPY $x12220 %2:_(s16) = G_TRUNC %5(s64)221 %6:_(s16) = G_FSHR %0, %1, %2(s16)222 %7:_(s64) = G_ANYEXT %6(s16)223 $x10 = COPY %7(s64)224 PseudoRET implicit $x10225 226...227---228name: fshr_i32229body: |230 bb.1:231 liveins: $x10, $x11, $x12232 233 ; CHECK-LABEL: name: fshr_i32234 ; CHECK: liveins: $x10, $x11, $x12235 ; CHECK-NEXT: {{ $}}236 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10237 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11238 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x12239 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 31240 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY2]], [[C]]241 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1242 ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(s64) = G_XOR [[COPY2]], [[C1]]243 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[XOR]], [[C]]244 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 1245 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[C2]](s64)246 ; CHECK-NEXT: [[SLLW:%[0-9]+]]:_(s64) = G_SLLW [[SHL]], [[AND1]]247 ; CHECK-NEXT: [[SRLW:%[0-9]+]]:_(s64) = G_SRLW [[COPY1]], [[AND]]248 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s64) = disjoint G_OR [[SLLW]], [[SRLW]]249 ; CHECK-NEXT: $x10 = COPY [[OR]](s64)250 ; CHECK-NEXT: PseudoRET implicit $x10251 %3:_(s64) = COPY $x10252 %0:_(s32) = G_TRUNC %3(s64)253 %4:_(s64) = COPY $x11254 %1:_(s32) = G_TRUNC %4(s64)255 %5:_(s64) = COPY $x12256 %2:_(s32) = G_TRUNC %5(s64)257 %6:_(s32) = G_FSHR %0, %1, %2(s32)258 %7:_(s64) = G_ANYEXT %6(s32)259 $x10 = COPY %7(s64)260 PseudoRET implicit $x10261 262...263---264name: fshr_i64265body: |266 bb.1:267 liveins: $x10, $x11, $x12268 269 ; CHECK-LABEL: name: fshr_i64270 ; CHECK: liveins: $x10, $x11, $x12271 ; CHECK-NEXT: {{ $}}272 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10273 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11274 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x12275 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 63276 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY2]], [[C]]277 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1278 ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(s64) = G_XOR [[COPY2]], [[C1]]279 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[XOR]], [[C]]280 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 1281 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[C2]](s64)282 ; CHECK-NEXT: [[SHL1:%[0-9]+]]:_(s64) = G_SHL [[SHL]], [[AND1]](s64)283 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[COPY1]], [[AND]](s64)284 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s64) = disjoint G_OR [[SHL1]], [[LSHR]]285 ; CHECK-NEXT: $x10 = COPY [[OR]](s64)286 ; CHECK-NEXT: PseudoRET implicit $x10287 %0:_(s64) = COPY $x10288 %1:_(s64) = COPY $x11289 %2:_(s64) = COPY $x12290 %3:_(s64) = G_FSHR %0, %1, %2(s64)291 $x10 = COPY %3(s64)292 PseudoRET implicit $x10293 294...295