1; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2; RUN: llc -global-isel -mtriple aarch64 -aarch64-min-jump-table-entries=4 -O0 -aarch64-enable-atomic-cfg-tidy=0 -stop-after=irtranslator -simplify-mir -verify-machineinstrs %s -o - 2>&1 | FileCheck %s 3 4define i32 @switch(i32 %argc) { 5 ; CHECK-LABEL: name: switch 6 ; CHECK: bb.1.entry: 7 ; CHECK-NEXT: liveins: $w0 8 ; CHECK-NEXT: {{ $}} 9 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0 10 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 100 11 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 200 12 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 2 13 ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 1 14 ; CHECK-NEXT: [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 15 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[C]] 16 ; CHECK-NEXT: G_BRCOND [[ICMP]](s1), %bb.3 17 ; CHECK-NEXT: G_BR %bb.6 18 ; CHECK-NEXT: {{ $}} 19 ; CHECK-NEXT: bb.6.entry: 20 ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[C1]] 21 ; CHECK-NEXT: G_BRCOND [[ICMP1]](s1), %bb.4 22 ; CHECK-NEXT: G_BR %bb.2 23 ; CHECK-NEXT: {{ $}} 24 ; CHECK-NEXT: bb.2.default: 25 ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[COPY]], [[C4]] 26 ; CHECK-NEXT: G_BR %bb.5 27 ; CHECK-NEXT: {{ $}} 28 ; CHECK-NEXT: bb.3.case100: 29 ; CHECK-NEXT: [[ADD1:%[0-9]+]]:_(s32) = G_ADD [[COPY]], [[C3]] 30 ; CHECK-NEXT: G_BR %bb.5 31 ; CHECK-NEXT: {{ $}} 32 ; CHECK-NEXT: bb.4.case200: 33 ; CHECK-NEXT: [[ADD2:%[0-9]+]]:_(s32) = G_ADD [[COPY]], [[C2]] 34 ; CHECK-NEXT: G_BR %bb.5 35 ; CHECK-NEXT: {{ $}} 36 ; CHECK-NEXT: bb.5.return: 37 ; CHECK-NEXT: [[PHI:%[0-9]+]]:_(s32) = G_PHI [[ADD]](s32), %bb.2, [[ADD1]](s32), %bb.3, [[ADD2]](s32), %bb.4 38 ; CHECK-NEXT: $w0 = COPY [[PHI]](s32) 39 ; CHECK-NEXT: RET_ReallyLR implicit $w0 40entry: 41 switch i32 %argc, label %default [ 42 i32 100, label %case100 43 i32 200, label %case200 44 ] 45 46default: 47 %tmp0 = add i32 %argc, 0 48 br label %return 49 50case100: 51 %tmp1 = add i32 %argc, 1 52 br label %return 53 54case200: 55 %tmp2 = add i32 %argc, 2 56 br label %return 57 58return: 59 %res = phi i32 [ %tmp0, %default ], [ %tmp1, %case100 ], [ %tmp2, %case200 ] 60 ret i32 %res 61} 62 63define i32 @test_cfg_remap(i32 %in) { 64 ; CHECK-LABEL: name: test_cfg_remap 65 ; CHECK: bb.1.entry: 66 ; CHECK-NEXT: liveins: $w0 67 ; CHECK-NEXT: {{ $}} 68 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0 69 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1 70 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 57 71 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF 72 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 42 73 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[C]] 74 ; CHECK-NEXT: G_BRCOND [[ICMP]](s1), %bb.2 75 ; CHECK-NEXT: G_BR %bb.5 76 ; CHECK-NEXT: {{ $}} 77 ; CHECK-NEXT: bb.5.entry: 78 ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[C1]] 79 ; CHECK-NEXT: G_BRCOND [[ICMP1]](s1), %bb.3 80 ; CHECK-NEXT: G_BR %bb.4 81 ; CHECK-NEXT: {{ $}} 82 ; CHECK-NEXT: bb.2.next: 83 ; CHECK-NEXT: G_BR %bb.4 84 ; CHECK-NEXT: {{ $}} 85 ; CHECK-NEXT: bb.3.other: 86 ; CHECK-NEXT: $w0 = COPY [[DEF]](s32) 87 ; CHECK-NEXT: RET_ReallyLR implicit $w0 88 ; CHECK-NEXT: {{ $}} 89 ; CHECK-NEXT: bb.4.phi.block: 90 ; CHECK-NEXT: [[PHI:%[0-9]+]]:_(s32) = G_PHI [[C]](s32), %bb.5, [[C2]](s32), %bb.2 91 ; CHECK-NEXT: $w0 = COPY [[PHI]](s32) 92 ; CHECK-NEXT: RET_ReallyLR implicit $w0 93entry: 94 switch i32 %in, label %phi.block [i32 1, label %next 95 i32 57, label %other] 96 97next: 98 br label %phi.block 99 100other: 101 ret i32 undef 102 103phi.block: 104 %res = phi i32 [1, %entry], [42, %next] 105 ret i32 %res 106} 107 108define i32 @test_cfg_remap_multiple_preds(i32 %in) { 109 ; CHECK-LABEL: name: test_cfg_remap_multiple_preds 110 ; CHECK: bb.1.entry: 111 ; CHECK-NEXT: liveins: $w0 112 ; CHECK-NEXT: {{ $}} 113 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0 114 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1 115 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 57 116 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 128 117 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF 118 ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 12 119 ; CHECK-NEXT: [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 42 120 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[C]] 121 ; CHECK-NEXT: G_BRCOND [[ICMP]](s1), %bb.3 122 ; CHECK-NEXT: G_BR %bb.6 123 ; CHECK-NEXT: {{ $}} 124 ; CHECK-NEXT: bb.6.entry: 125 ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[C1]] 126 ; CHECK-NEXT: G_BRCOND [[ICMP1]](s1), %bb.4 127 ; CHECK-NEXT: G_BR %bb.7 128 ; CHECK-NEXT: {{ $}} 129 ; CHECK-NEXT: bb.7.entry: 130 ; CHECK-NEXT: [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[C2]] 131 ; CHECK-NEXT: G_BRCOND [[ICMP2]](s1), %bb.5 132 ; CHECK-NEXT: G_BR %bb.8 133 ; CHECK-NEXT: {{ $}} 134 ; CHECK-NEXT: bb.8.entry: 135 ; CHECK-NEXT: G_BR %bb.5 136 ; CHECK-NEXT: {{ $}} 137 ; CHECK-NEXT: bb.2.odd: 138 ; CHECK-NEXT: successors: 139 ; CHECK-NEXT: {{ $}} 140 ; CHECK-NEXT: bb.3.next: 141 ; CHECK-NEXT: G_BR %bb.5 142 ; CHECK-NEXT: {{ $}} 143 ; CHECK-NEXT: bb.4.other: 144 ; CHECK-NEXT: $w0 = COPY [[DEF]](s32) 145 ; CHECK-NEXT: RET_ReallyLR implicit $w0 146 ; CHECK-NEXT: {{ $}} 147 ; CHECK-NEXT: bb.5.phi.block: 148 ; CHECK-NEXT: [[PHI:%[0-9]+]]:_(s32) = G_PHI [[C]](s32), %bb.7, [[C]](s32), %bb.8, [[C4]](s32), %bb.3 149 ; CHECK-NEXT: $w0 = COPY [[C3]](s32) 150 ; CHECK-NEXT: RET_ReallyLR implicit $w0 151entry: 152 switch i32 %in, label %odd [i32 1, label %next 153 i32 57, label %other 154 i32 128, label %phi.block 155 i32 256, label %phi.block] 156odd: 157 unreachable 158 159next: 160 br label %phi.block 161 162other: 163 ret i32 undef 164 165phi.block: 166 %res = phi i32 [1, %entry], [1, %entry], [42, %next] 167 ret i32 12 168} 169 170define i32 @jt_test(i32 %x) { 171 ; CHECK-LABEL: name: jt_test 172 ; CHECK: bb.1.entry: 173 ; CHECK-NEXT: liveins: $w0 174 ; CHECK-NEXT: {{ $}} 175 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0 176 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 71 177 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 3 178 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 42 179 ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 180 ; CHECK-NEXT: [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 4 181 ; CHECK-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[COPY]], [[C4]] 182 ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[SUB]](s32) 183 ; CHECK-NEXT: [[ZEXT1:%[0-9]+]]:_(s64) = G_ZEXT [[C]](s32) 184 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ugt), [[ZEXT]](s64), [[ZEXT1]] 185 ; CHECK-NEXT: G_BRCOND [[ICMP]](s1), %bb.4 186 ; CHECK-NEXT: {{ $}} 187 ; CHECK-NEXT: bb.5.entry: 188 ; CHECK-NEXT: successors: %bb.3, %bb.4, %bb.2 189 ; CHECK-NEXT: {{ $}} 190 ; CHECK-NEXT: [[JUMP_TABLE:%[0-9]+]]:_(p0) = G_JUMP_TABLE %jump-table.0 191 ; CHECK-NEXT: G_BRJT [[JUMP_TABLE]](p0), %jump-table.0, [[ZEXT]](s64) 192 ; CHECK-NEXT: {{ $}} 193 ; CHECK-NEXT: bb.2.sw.bb: 194 ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(s32) = nsw G_ADD [[COPY]], [[C2]] 195 ; CHECK-NEXT: G_BR %bb.4 196 ; CHECK-NEXT: {{ $}} 197 ; CHECK-NEXT: bb.3.sw.bb1: 198 ; CHECK-NEXT: [[MUL:%[0-9]+]]:_(s32) = nsw G_MUL [[COPY]], [[C1]] 199 ; CHECK-NEXT: G_BR %bb.4 200 ; CHECK-NEXT: {{ $}} 201 ; CHECK-NEXT: bb.4.return: 202 ; CHECK-NEXT: [[PHI:%[0-9]+]]:_(s32) = G_PHI [[MUL]](s32), %bb.3, [[ADD]](s32), %bb.2, [[C3]](s32), %bb.1, [[C3]](s32), %bb.5 203 ; CHECK-NEXT: $w0 = COPY [[PHI]](s32) 204 ; CHECK-NEXT: RET_ReallyLR implicit $w0 205entry: 206 switch i32 %x, label %return [ 207 i32 75, label %sw.bb 208 i32 34, label %sw.bb 209 i32 56, label %sw.bb 210 i32 35, label %sw.bb 211 i32 40, label %sw.bb 212 i32 4, label %sw.bb1 213 i32 5, label %sw.bb1 214 i32 6, label %sw.bb1 215 ] 216 217sw.bb: 218 %add = add nsw i32 %x, 42 219 br label %return 220 221sw.bb1: 222 %mul = mul nsw i32 %x, 3 223 br label %return 224 225return: 226 %retval.0 = phi i32 [ %mul, %sw.bb1 ], [ %add, %sw.bb ], [ 0, %entry ] 227 ret i32 %retval.0 228} 229 230%0 = type { i32, ptr } 231%1 = type { ptr, i32, i32 } 232 233@global = external hidden constant [55 x %0], align 8 234 235define void @jt_multiple_jump_tables(ptr %arg, i32 %arg1, ptr %arg2) { 236 ; CHECK-LABEL: name: jt_multiple_jump_tables 237 ; CHECK: bb.1.bb: 238 ; CHECK-NEXT: liveins: $w1, $x0, $x2 239 ; CHECK-NEXT: {{ $}} 240 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0 241 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1 242 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(p0) = COPY $x2 243 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 3 244 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 4 245 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 6 246 ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 7 247 ; CHECK-NEXT: [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 8 248 ; CHECK-NEXT: [[C5:%[0-9]+]]:_(s32) = G_CONSTANT i32 9 249 ; CHECK-NEXT: [[C6:%[0-9]+]]:_(s32) = G_CONSTANT i32 10 250 ; CHECK-NEXT: [[C7:%[0-9]+]]:_(s32) = G_CONSTANT i32 11 251 ; CHECK-NEXT: [[C8:%[0-9]+]]:_(s32) = G_CONSTANT i32 12 252 ; CHECK-NEXT: [[C9:%[0-9]+]]:_(s32) = G_CONSTANT i32 13 253 ; CHECK-NEXT: [[C10:%[0-9]+]]:_(s32) = G_CONSTANT i32 14 254 ; CHECK-NEXT: [[C11:%[0-9]+]]:_(s32) = G_CONSTANT i32 15 255 ; CHECK-NEXT: [[C12:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 256 ; CHECK-NEXT: [[C13:%[0-9]+]]:_(s32) = G_CONSTANT i32 17 257 ; CHECK-NEXT: [[C14:%[0-9]+]]:_(s32) = G_CONSTANT i32 18 258 ; CHECK-NEXT: [[C15:%[0-9]+]]:_(s32) = G_CONSTANT i32 19 259 ; CHECK-NEXT: [[C16:%[0-9]+]]:_(s32) = G_CONSTANT i32 20 260 ; CHECK-NEXT: [[C17:%[0-9]+]]:_(s32) = G_CONSTANT i32 21 261 ; CHECK-NEXT: [[C18:%[0-9]+]]:_(s32) = G_CONSTANT i32 22 262 ; CHECK-NEXT: [[C19:%[0-9]+]]:_(s32) = G_CONSTANT i32 23 263 ; CHECK-NEXT: [[C20:%[0-9]+]]:_(s32) = G_CONSTANT i32 24 264 ; CHECK-NEXT: [[C21:%[0-9]+]]:_(s32) = G_CONSTANT i32 25 265 ; CHECK-NEXT: [[C22:%[0-9]+]]:_(s32) = G_CONSTANT i32 26 266 ; CHECK-NEXT: [[C23:%[0-9]+]]:_(s32) = G_CONSTANT i32 27 267 ; CHECK-NEXT: [[C24:%[0-9]+]]:_(s32) = G_CONSTANT i32 28 268 ; CHECK-NEXT: [[C25:%[0-9]+]]:_(s32) = G_CONSTANT i32 29 269 ; CHECK-NEXT: [[C26:%[0-9]+]]:_(s32) = G_CONSTANT i32 30 270 ; CHECK-NEXT: [[C27:%[0-9]+]]:_(s32) = G_CONSTANT i32 31 271 ; CHECK-NEXT: [[C28:%[0-9]+]]:_(s32) = G_CONSTANT i32 32 272 ; CHECK-NEXT: [[C29:%[0-9]+]]:_(s32) = G_CONSTANT i32 33 273 ; CHECK-NEXT: [[C30:%[0-9]+]]:_(s32) = G_CONSTANT i32 34 274 ; CHECK-NEXT: [[C31:%[0-9]+]]:_(s32) = G_CONSTANT i32 35 275 ; CHECK-NEXT: [[C32:%[0-9]+]]:_(s32) = G_CONSTANT i32 36 276 ; CHECK-NEXT: [[C33:%[0-9]+]]:_(s32) = G_CONSTANT i32 37 277 ; CHECK-NEXT: [[C34:%[0-9]+]]:_(s32) = G_CONSTANT i32 38 278 ; CHECK-NEXT: [[C35:%[0-9]+]]:_(s32) = G_CONSTANT i32 39 279 ; CHECK-NEXT: [[C36:%[0-9]+]]:_(s32) = G_CONSTANT i32 41 280 ; CHECK-NEXT: [[C37:%[0-9]+]]:_(s32) = G_CONSTANT i32 42 281 ; CHECK-NEXT: [[C38:%[0-9]+]]:_(s32) = G_CONSTANT i32 43 282 ; CHECK-NEXT: [[C39:%[0-9]+]]:_(s32) = G_CONSTANT i32 44 283 ; CHECK-NEXT: [[C40:%[0-9]+]]:_(s32) = G_CONSTANT i32 45 284 ; CHECK-NEXT: [[C41:%[0-9]+]]:_(s32) = G_CONSTANT i32 46 285 ; CHECK-NEXT: [[C42:%[0-9]+]]:_(s32) = G_CONSTANT i32 47 286 ; CHECK-NEXT: [[C43:%[0-9]+]]:_(s32) = G_CONSTANT i32 48 287 ; CHECK-NEXT: [[C44:%[0-9]+]]:_(s32) = G_CONSTANT i32 49 288 ; CHECK-NEXT: [[C45:%[0-9]+]]:_(s32) = G_CONSTANT i32 50 289 ; CHECK-NEXT: [[C46:%[0-9]+]]:_(s32) = G_CONSTANT i32 51 290 ; CHECK-NEXT: [[C47:%[0-9]+]]:_(s32) = G_CONSTANT i32 52 291 ; CHECK-NEXT: [[C48:%[0-9]+]]:_(s32) = G_CONSTANT i32 53 292 ; CHECK-NEXT: [[C49:%[0-9]+]]:_(s32) = G_CONSTANT i32 54 293 ; CHECK-NEXT: [[C50:%[0-9]+]]:_(s32) = G_CONSTANT i32 55 294 ; CHECK-NEXT: [[C51:%[0-9]+]]:_(s32) = G_CONSTANT i32 4352 295 ; CHECK-NEXT: [[C52:%[0-9]+]]:_(s32) = G_CONSTANT i32 4353 296 ; CHECK-NEXT: [[C53:%[0-9]+]]:_(s32) = G_CONSTANT i32 4354 297 ; CHECK-NEXT: [[C54:%[0-9]+]]:_(s32) = G_CONSTANT i32 4355 298 ; CHECK-NEXT: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @global 299 ; CHECK-NEXT: [[C55:%[0-9]+]]:_(p0) = G_CONSTANT i64 0 300 ; CHECK-NEXT: [[C56:%[0-9]+]]:_(s64) = G_CONSTANT i64 0 301 ; CHECK-NEXT: [[C57:%[0-9]+]]:_(s64) = G_CONSTANT i64 1 302 ; CHECK-NEXT: [[C58:%[0-9]+]]:_(s64) = G_CONSTANT i64 2 303 ; CHECK-NEXT: [[C59:%[0-9]+]]:_(s64) = G_CONSTANT i64 3 304 ; CHECK-NEXT: [[C60:%[0-9]+]]:_(s64) = G_CONSTANT i64 4 305 ; CHECK-NEXT: [[C61:%[0-9]+]]:_(s64) = G_CONSTANT i64 5 306 ; CHECK-NEXT: [[C62:%[0-9]+]]:_(s64) = G_CONSTANT i64 6 307 ; CHECK-NEXT: [[C63:%[0-9]+]]:_(s64) = G_CONSTANT i64 7 308 ; CHECK-NEXT: [[C64:%[0-9]+]]:_(s64) = G_CONSTANT i64 8 309 ; CHECK-NEXT: [[C65:%[0-9]+]]:_(s64) = G_CONSTANT i64 9 310 ; CHECK-NEXT: [[C66:%[0-9]+]]:_(s64) = G_CONSTANT i64 10 311 ; CHECK-NEXT: [[C67:%[0-9]+]]:_(s64) = G_CONSTANT i64 11 312 ; CHECK-NEXT: [[C68:%[0-9]+]]:_(s64) = G_CONSTANT i64 12 313 ; CHECK-NEXT: [[C69:%[0-9]+]]:_(s64) = G_CONSTANT i64 13 314 ; CHECK-NEXT: [[C70:%[0-9]+]]:_(s64) = G_CONSTANT i64 14 315 ; CHECK-NEXT: [[C71:%[0-9]+]]:_(s64) = G_CONSTANT i64 15 316 ; CHECK-NEXT: [[C72:%[0-9]+]]:_(s64) = G_CONSTANT i64 16 317 ; CHECK-NEXT: [[C73:%[0-9]+]]:_(s64) = G_CONSTANT i64 17 318 ; CHECK-NEXT: [[C74:%[0-9]+]]:_(s64) = G_CONSTANT i64 18 319 ; CHECK-NEXT: [[C75:%[0-9]+]]:_(s64) = G_CONSTANT i64 19 320 ; CHECK-NEXT: [[C76:%[0-9]+]]:_(s64) = G_CONSTANT i64 20 321 ; CHECK-NEXT: [[C77:%[0-9]+]]:_(s64) = G_CONSTANT i64 21 322 ; CHECK-NEXT: [[C78:%[0-9]+]]:_(s64) = G_CONSTANT i64 22 323 ; CHECK-NEXT: [[C79:%[0-9]+]]:_(s64) = G_CONSTANT i64 23 324 ; CHECK-NEXT: [[C80:%[0-9]+]]:_(s64) = G_CONSTANT i64 24 325 ; CHECK-NEXT: [[C81:%[0-9]+]]:_(s64) = G_CONSTANT i64 25 326 ; CHECK-NEXT: [[C82:%[0-9]+]]:_(s64) = G_CONSTANT i64 26 327 ; CHECK-NEXT: [[C83:%[0-9]+]]:_(s64) = G_CONSTANT i64 27 328 ; CHECK-NEXT: [[C84:%[0-9]+]]:_(s64) = G_CONSTANT i64 28 329 ; CHECK-NEXT: [[C85:%[0-9]+]]:_(s64) = G_CONSTANT i64 29 330 ; CHECK-NEXT: [[C86:%[0-9]+]]:_(s64) = G_CONSTANT i64 30 331 ; CHECK-NEXT: [[C87:%[0-9]+]]:_(s64) = G_CONSTANT i64 31 332 ; CHECK-NEXT: [[C88:%[0-9]+]]:_(s64) = G_CONSTANT i64 32 333 ; CHECK-NEXT: [[C89:%[0-9]+]]:_(s64) = G_CONSTANT i64 33 334 ; CHECK-NEXT: [[C90:%[0-9]+]]:_(s64) = G_CONSTANT i64 34 335 ; CHECK-NEXT: [[C91:%[0-9]+]]:_(s64) = G_CONSTANT i64 35 336 ; CHECK-NEXT: [[C92:%[0-9]+]]:_(s64) = G_CONSTANT i64 36 337 ; CHECK-NEXT: [[C93:%[0-9]+]]:_(s64) = G_CONSTANT i64 37 338 ; CHECK-NEXT: [[C94:%[0-9]+]]:_(s64) = G_CONSTANT i64 38 339 ; CHECK-NEXT: [[C95:%[0-9]+]]:_(s64) = G_CONSTANT i64 39 340 ; CHECK-NEXT: [[C96:%[0-9]+]]:_(s64) = G_CONSTANT i64 40 341 ; CHECK-NEXT: [[C97:%[0-9]+]]:_(s64) = G_CONSTANT i64 41 342 ; CHECK-NEXT: [[C98:%[0-9]+]]:_(s64) = G_CONSTANT i64 42 343 ; CHECK-NEXT: [[C99:%[0-9]+]]:_(s64) = G_CONSTANT i64 43 344 ; CHECK-NEXT: [[C100:%[0-9]+]]:_(s64) = G_CONSTANT i64 44 345 ; CHECK-NEXT: [[C101:%[0-9]+]]:_(s64) = G_CONSTANT i64 45 346 ; CHECK-NEXT: [[C102:%[0-9]+]]:_(s64) = G_CONSTANT i64 46 347 ; CHECK-NEXT: [[C103:%[0-9]+]]:_(s64) = G_CONSTANT i64 47 348 ; CHECK-NEXT: [[C104:%[0-9]+]]:_(s64) = G_CONSTANT i64 48 349 ; CHECK-NEXT: [[C105:%[0-9]+]]:_(s64) = G_CONSTANT i64 49 350 ; CHECK-NEXT: [[C106:%[0-9]+]]:_(s64) = G_CONSTANT i64 50 351 ; CHECK-NEXT: [[C107:%[0-9]+]]:_(s64) = G_CONSTANT i64 51 352 ; CHECK-NEXT: [[C108:%[0-9]+]]:_(s64) = G_CONSTANT i64 52 353 ; CHECK-NEXT: [[C109:%[0-9]+]]:_(s64) = G_CONSTANT i64 53 354 ; CHECK-NEXT: [[C110:%[0-9]+]]:_(s64) = G_CONSTANT i64 54 355 ; CHECK-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %stack.0.tmp 356 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C]] 357 ; CHECK-NEXT: G_BRCOND [[ICMP]](s1), %bb.56 358 ; CHECK-NEXT: G_BR %bb.61 359 ; CHECK-NEXT: {{ $}} 360 ; CHECK-NEXT: bb.61.bb: 361 ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C1]] 362 ; CHECK-NEXT: G_BRCOND [[ICMP1]](s1), %bb.2 363 ; CHECK-NEXT: G_BR %bb.62 364 ; CHECK-NEXT: {{ $}} 365 ; CHECK-NEXT: bb.62.bb: 366 ; CHECK-NEXT: [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C2]] 367 ; CHECK-NEXT: G_BRCOND [[ICMP2]](s1), %bb.3 368 ; CHECK-NEXT: G_BR %bb.63 369 ; CHECK-NEXT: {{ $}} 370 ; CHECK-NEXT: bb.63.bb: 371 ; CHECK-NEXT: [[ICMP3:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C3]] 372 ; CHECK-NEXT: G_BRCOND [[ICMP3]](s1), %bb.4 373 ; CHECK-NEXT: G_BR %bb.64 374 ; CHECK-NEXT: {{ $}} 375 ; CHECK-NEXT: bb.64.bb: 376 ; CHECK-NEXT: [[ICMP4:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C4]] 377 ; CHECK-NEXT: G_BRCOND [[ICMP4]](s1), %bb.5 378 ; CHECK-NEXT: G_BR %bb.65 379 ; CHECK-NEXT: {{ $}} 380 ; CHECK-NEXT: bb.65.bb: 381 ; CHECK-NEXT: [[ICMP5:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C5]] 382 ; CHECK-NEXT: G_BRCOND [[ICMP5]](s1), %bb.6 383 ; CHECK-NEXT: G_BR %bb.66 384 ; CHECK-NEXT: {{ $}} 385 ; CHECK-NEXT: bb.66.bb: 386 ; CHECK-NEXT: [[ICMP6:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C6]] 387 ; CHECK-NEXT: G_BRCOND [[ICMP6]](s1), %bb.7 388 ; CHECK-NEXT: G_BR %bb.67 389 ; CHECK-NEXT: {{ $}} 390 ; CHECK-NEXT: bb.67.bb: 391 ; CHECK-NEXT: [[ICMP7:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C7]] 392 ; CHECK-NEXT: G_BRCOND [[ICMP7]](s1), %bb.8 393 ; CHECK-NEXT: G_BR %bb.68 394 ; CHECK-NEXT: {{ $}} 395 ; CHECK-NEXT: bb.68.bb: 396 ; CHECK-NEXT: [[ICMP8:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C8]] 397 ; CHECK-NEXT: G_BRCOND [[ICMP8]](s1), %bb.9 398 ; CHECK-NEXT: G_BR %bb.69 399 ; CHECK-NEXT: {{ $}} 400 ; CHECK-NEXT: bb.69.bb: 401 ; CHECK-NEXT: [[ICMP9:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C9]] 402 ; CHECK-NEXT: G_BRCOND [[ICMP9]](s1), %bb.10 403 ; CHECK-NEXT: G_BR %bb.70 404 ; CHECK-NEXT: {{ $}} 405 ; CHECK-NEXT: bb.70.bb: 406 ; CHECK-NEXT: [[ICMP10:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C10]] 407 ; CHECK-NEXT: G_BRCOND [[ICMP10]](s1), %bb.11 408 ; CHECK-NEXT: G_BR %bb.71 409 ; CHECK-NEXT: {{ $}} 410 ; CHECK-NEXT: bb.71.bb: 411 ; CHECK-NEXT: [[ICMP11:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C11]] 412 ; CHECK-NEXT: G_BRCOND [[ICMP11]](s1), %bb.12 413 ; CHECK-NEXT: G_BR %bb.72 414 ; CHECK-NEXT: {{ $}} 415 ; CHECK-NEXT: bb.72.bb: 416 ; CHECK-NEXT: [[ICMP12:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C12]] 417 ; CHECK-NEXT: G_BRCOND [[ICMP12]](s1), %bb.13 418 ; CHECK-NEXT: G_BR %bb.73 419 ; CHECK-NEXT: {{ $}} 420 ; CHECK-NEXT: bb.73.bb: 421 ; CHECK-NEXT: [[ICMP13:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C13]] 422 ; CHECK-NEXT: G_BRCOND [[ICMP13]](s1), %bb.14 423 ; CHECK-NEXT: G_BR %bb.74 424 ; CHECK-NEXT: {{ $}} 425 ; CHECK-NEXT: bb.74.bb: 426 ; CHECK-NEXT: [[ICMP14:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C14]] 427 ; CHECK-NEXT: G_BRCOND [[ICMP14]](s1), %bb.15 428 ; CHECK-NEXT: G_BR %bb.75 429 ; CHECK-NEXT: {{ $}} 430 ; CHECK-NEXT: bb.75.bb: 431 ; CHECK-NEXT: [[ICMP15:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C15]] 432 ; CHECK-NEXT: G_BRCOND [[ICMP15]](s1), %bb.16 433 ; CHECK-NEXT: G_BR %bb.76 434 ; CHECK-NEXT: {{ $}} 435 ; CHECK-NEXT: bb.76.bb: 436 ; CHECK-NEXT: [[ICMP16:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C16]] 437 ; CHECK-NEXT: G_BRCOND [[ICMP16]](s1), %bb.17 438 ; CHECK-NEXT: G_BR %bb.77 439 ; CHECK-NEXT: {{ $}} 440 ; CHECK-NEXT: bb.77.bb: 441 ; CHECK-NEXT: [[ICMP17:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C17]] 442 ; CHECK-NEXT: G_BRCOND [[ICMP17]](s1), %bb.18 443 ; CHECK-NEXT: G_BR %bb.78 444 ; CHECK-NEXT: {{ $}} 445 ; CHECK-NEXT: bb.78.bb: 446 ; CHECK-NEXT: [[ICMP18:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C18]] 447 ; CHECK-NEXT: G_BRCOND [[ICMP18]](s1), %bb.19 448 ; CHECK-NEXT: G_BR %bb.79 449 ; CHECK-NEXT: {{ $}} 450 ; CHECK-NEXT: bb.79.bb: 451 ; CHECK-NEXT: [[ICMP19:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C19]] 452 ; CHECK-NEXT: G_BRCOND [[ICMP19]](s1), %bb.20 453 ; CHECK-NEXT: G_BR %bb.80 454 ; CHECK-NEXT: {{ $}} 455 ; CHECK-NEXT: bb.80.bb: 456 ; CHECK-NEXT: [[ICMP20:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C20]] 457 ; CHECK-NEXT: G_BRCOND [[ICMP20]](s1), %bb.21 458 ; CHECK-NEXT: G_BR %bb.81 459 ; CHECK-NEXT: {{ $}} 460 ; CHECK-NEXT: bb.81.bb: 461 ; CHECK-NEXT: [[ICMP21:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C21]] 462 ; CHECK-NEXT: G_BRCOND [[ICMP21]](s1), %bb.22 463 ; CHECK-NEXT: G_BR %bb.82 464 ; CHECK-NEXT: {{ $}} 465 ; CHECK-NEXT: bb.82.bb: 466 ; CHECK-NEXT: [[ICMP22:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C22]] 467 ; CHECK-NEXT: G_BRCOND [[ICMP22]](s1), %bb.23 468 ; CHECK-NEXT: G_BR %bb.83 469 ; CHECK-NEXT: {{ $}} 470 ; CHECK-NEXT: bb.83.bb: 471 ; CHECK-NEXT: [[ICMP23:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C23]] 472 ; CHECK-NEXT: G_BRCOND [[ICMP23]](s1), %bb.24 473 ; CHECK-NEXT: G_BR %bb.84 474 ; CHECK-NEXT: {{ $}} 475 ; CHECK-NEXT: bb.84.bb: 476 ; CHECK-NEXT: [[ICMP24:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C24]] 477 ; CHECK-NEXT: G_BRCOND [[ICMP24]](s1), %bb.25 478 ; CHECK-NEXT: G_BR %bb.85 479 ; CHECK-NEXT: {{ $}} 480 ; CHECK-NEXT: bb.85.bb: 481 ; CHECK-NEXT: [[ICMP25:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C25]] 482 ; CHECK-NEXT: G_BRCOND [[ICMP25]](s1), %bb.26 483 ; CHECK-NEXT: G_BR %bb.86 484 ; CHECK-NEXT: {{ $}} 485 ; CHECK-NEXT: bb.86.bb: 486 ; CHECK-NEXT: [[ICMP26:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C26]] 487 ; CHECK-NEXT: G_BRCOND [[ICMP26]](s1), %bb.27 488 ; CHECK-NEXT: G_BR %bb.87 489 ; CHECK-NEXT: {{ $}} 490 ; CHECK-NEXT: bb.87.bb: 491 ; CHECK-NEXT: [[ICMP27:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C27]] 492 ; CHECK-NEXT: G_BRCOND [[ICMP27]](s1), %bb.28 493 ; CHECK-NEXT: G_BR %bb.88 494 ; CHECK-NEXT: {{ $}} 495 ; CHECK-NEXT: bb.88.bb: 496 ; CHECK-NEXT: [[ICMP28:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C28]] 497 ; CHECK-NEXT: G_BRCOND [[ICMP28]](s1), %bb.29 498 ; CHECK-NEXT: G_BR %bb.89 499 ; CHECK-NEXT: {{ $}} 500 ; CHECK-NEXT: bb.89.bb: 501 ; CHECK-NEXT: [[ICMP29:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C29]] 502 ; CHECK-NEXT: G_BRCOND [[ICMP29]](s1), %bb.30 503 ; CHECK-NEXT: G_BR %bb.90 504 ; CHECK-NEXT: {{ $}} 505 ; CHECK-NEXT: bb.90.bb: 506 ; CHECK-NEXT: [[ICMP30:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C30]] 507 ; CHECK-NEXT: G_BRCOND [[ICMP30]](s1), %bb.31 508 ; CHECK-NEXT: G_BR %bb.91 509 ; CHECK-NEXT: {{ $}} 510 ; CHECK-NEXT: bb.91.bb: 511 ; CHECK-NEXT: [[ICMP31:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C31]] 512 ; CHECK-NEXT: G_BRCOND [[ICMP31]](s1), %bb.32 513 ; CHECK-NEXT: G_BR %bb.92 514 ; CHECK-NEXT: {{ $}} 515 ; CHECK-NEXT: bb.92.bb: 516 ; CHECK-NEXT: [[ICMP32:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C32]] 517 ; CHECK-NEXT: G_BRCOND [[ICMP32]](s1), %bb.33 518 ; CHECK-NEXT: G_BR %bb.93 519 ; CHECK-NEXT: {{ $}} 520 ; CHECK-NEXT: bb.93.bb: 521 ; CHECK-NEXT: [[ICMP33:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C33]] 522 ; CHECK-NEXT: G_BRCOND [[ICMP33]](s1), %bb.34 523 ; CHECK-NEXT: G_BR %bb.94 524 ; CHECK-NEXT: {{ $}} 525 ; CHECK-NEXT: bb.94.bb: 526 ; CHECK-NEXT: [[ICMP34:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C34]] 527 ; CHECK-NEXT: G_BRCOND [[ICMP34]](s1), %bb.35 528 ; CHECK-NEXT: G_BR %bb.95 529 ; CHECK-NEXT: {{ $}} 530 ; CHECK-NEXT: bb.95.bb: 531 ; CHECK-NEXT: [[ICMP35:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C35]] 532 ; CHECK-NEXT: G_BRCOND [[ICMP35]](s1), %bb.36 533 ; CHECK-NEXT: G_BR %bb.96 534 ; CHECK-NEXT: {{ $}} 535 ; CHECK-NEXT: bb.96.bb: 536 ; CHECK-NEXT: [[ICMP36:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C36]] 537 ; CHECK-NEXT: G_BRCOND [[ICMP36]](s1), %bb.37 538 ; CHECK-NEXT: G_BR %bb.97 539 ; CHECK-NEXT: {{ $}} 540 ; CHECK-NEXT: bb.97.bb: 541 ; CHECK-NEXT: [[ICMP37:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C37]] 542 ; CHECK-NEXT: G_BRCOND [[ICMP37]](s1), %bb.38 543 ; CHECK-NEXT: G_BR %bb.98 544 ; CHECK-NEXT: {{ $}} 545 ; CHECK-NEXT: bb.98.bb: 546 ; CHECK-NEXT: [[ICMP38:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C38]] 547 ; CHECK-NEXT: G_BRCOND [[ICMP38]](s1), %bb.39 548 ; CHECK-NEXT: G_BR %bb.99 549 ; CHECK-NEXT: {{ $}} 550 ; CHECK-NEXT: bb.99.bb: 551 ; CHECK-NEXT: [[ICMP39:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C39]] 552 ; CHECK-NEXT: G_BRCOND [[ICMP39]](s1), %bb.40 553 ; CHECK-NEXT: G_BR %bb.100 554 ; CHECK-NEXT: {{ $}} 555 ; CHECK-NEXT: bb.100.bb: 556 ; CHECK-NEXT: [[ICMP40:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C40]] 557 ; CHECK-NEXT: G_BRCOND [[ICMP40]](s1), %bb.41 558 ; CHECK-NEXT: G_BR %bb.101 559 ; CHECK-NEXT: {{ $}} 560 ; CHECK-NEXT: bb.101.bb: 561 ; CHECK-NEXT: [[ICMP41:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C41]] 562 ; CHECK-NEXT: G_BRCOND [[ICMP41]](s1), %bb.42 563 ; CHECK-NEXT: G_BR %bb.102 564 ; CHECK-NEXT: {{ $}} 565 ; CHECK-NEXT: bb.102.bb: 566 ; CHECK-NEXT: [[ICMP42:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C42]] 567 ; CHECK-NEXT: G_BRCOND [[ICMP42]](s1), %bb.43 568 ; CHECK-NEXT: G_BR %bb.103 569 ; CHECK-NEXT: {{ $}} 570 ; CHECK-NEXT: bb.103.bb: 571 ; CHECK-NEXT: [[ICMP43:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C43]] 572 ; CHECK-NEXT: G_BRCOND [[ICMP43]](s1), %bb.44 573 ; CHECK-NEXT: G_BR %bb.104 574 ; CHECK-NEXT: {{ $}} 575 ; CHECK-NEXT: bb.104.bb: 576 ; CHECK-NEXT: [[ICMP44:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C44]] 577 ; CHECK-NEXT: G_BRCOND [[ICMP44]](s1), %bb.45 578 ; CHECK-NEXT: G_BR %bb.105 579 ; CHECK-NEXT: {{ $}} 580 ; CHECK-NEXT: bb.105.bb: 581 ; CHECK-NEXT: [[ICMP45:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C45]] 582 ; CHECK-NEXT: G_BRCOND [[ICMP45]](s1), %bb.46 583 ; CHECK-NEXT: G_BR %bb.106 584 ; CHECK-NEXT: {{ $}} 585 ; CHECK-NEXT: bb.106.bb: 586 ; CHECK-NEXT: [[ICMP46:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C46]] 587 ; CHECK-NEXT: G_BRCOND [[ICMP46]](s1), %bb.47 588 ; CHECK-NEXT: G_BR %bb.107 589 ; CHECK-NEXT: {{ $}} 590 ; CHECK-NEXT: bb.107.bb: 591 ; CHECK-NEXT: [[ICMP47:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C47]] 592 ; CHECK-NEXT: G_BRCOND [[ICMP47]](s1), %bb.48 593 ; CHECK-NEXT: G_BR %bb.108 594 ; CHECK-NEXT: {{ $}} 595 ; CHECK-NEXT: bb.108.bb: 596 ; CHECK-NEXT: [[ICMP48:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C48]] 597 ; CHECK-NEXT: G_BRCOND [[ICMP48]](s1), %bb.49 598 ; CHECK-NEXT: G_BR %bb.109 599 ; CHECK-NEXT: {{ $}} 600 ; CHECK-NEXT: bb.109.bb: 601 ; CHECK-NEXT: [[ICMP49:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C49]] 602 ; CHECK-NEXT: G_BRCOND [[ICMP49]](s1), %bb.50 603 ; CHECK-NEXT: G_BR %bb.110 604 ; CHECK-NEXT: {{ $}} 605 ; CHECK-NEXT: bb.110.bb: 606 ; CHECK-NEXT: [[ICMP50:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C50]] 607 ; CHECK-NEXT: G_BRCOND [[ICMP50]](s1), %bb.51 608 ; CHECK-NEXT: G_BR %bb.111 609 ; CHECK-NEXT: {{ $}} 610 ; CHECK-NEXT: bb.111.bb: 611 ; CHECK-NEXT: [[ICMP51:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C51]] 612 ; CHECK-NEXT: G_BRCOND [[ICMP51]](s1), %bb.52 613 ; CHECK-NEXT: G_BR %bb.112 614 ; CHECK-NEXT: {{ $}} 615 ; CHECK-NEXT: bb.112.bb: 616 ; CHECK-NEXT: [[ICMP52:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C52]] 617 ; CHECK-NEXT: G_BRCOND [[ICMP52]](s1), %bb.53 618 ; CHECK-NEXT: G_BR %bb.113 619 ; CHECK-NEXT: {{ $}} 620 ; CHECK-NEXT: bb.113.bb: 621 ; CHECK-NEXT: [[ICMP53:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C53]] 622 ; CHECK-NEXT: G_BRCOND [[ICMP53]](s1), %bb.54 623 ; CHECK-NEXT: G_BR %bb.114 624 ; CHECK-NEXT: {{ $}} 625 ; CHECK-NEXT: bb.114.bb: 626 ; CHECK-NEXT: [[ICMP54:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C54]] 627 ; CHECK-NEXT: G_BRCOND [[ICMP54]](s1), %bb.55 628 ; CHECK-NEXT: G_BR %bb.60 629 ; CHECK-NEXT: {{ $}} 630 ; CHECK-NEXT: bb.2.bb3: 631 ; CHECK-NEXT: G_BR %bb.56 632 ; CHECK-NEXT: {{ $}} 633 ; CHECK-NEXT: bb.3.bb4: 634 ; CHECK-NEXT: G_BR %bb.56 635 ; CHECK-NEXT: {{ $}} 636 ; CHECK-NEXT: bb.4.bb5: 637 ; CHECK-NEXT: G_BR %bb.56 638 ; CHECK-NEXT: {{ $}} 639 ; CHECK-NEXT: bb.5.bb6: 640 ; CHECK-NEXT: G_BR %bb.56 641 ; CHECK-NEXT: {{ $}} 642 ; CHECK-NEXT: bb.6.bb7: 643 ; CHECK-NEXT: G_BR %bb.56 644 ; CHECK-NEXT: {{ $}} 645 ; CHECK-NEXT: bb.7.bb8: 646 ; CHECK-NEXT: G_BR %bb.56 647 ; CHECK-NEXT: {{ $}} 648 ; CHECK-NEXT: bb.8.bb9: 649 ; CHECK-NEXT: G_BR %bb.56 650 ; CHECK-NEXT: {{ $}} 651 ; CHECK-NEXT: bb.9.bb10: 652 ; CHECK-NEXT: G_BR %bb.56 653 ; CHECK-NEXT: {{ $}} 654 ; CHECK-NEXT: bb.10.bb11: 655 ; CHECK-NEXT: G_BR %bb.56 656 ; CHECK-NEXT: {{ $}} 657 ; CHECK-NEXT: bb.11.bb12: 658 ; CHECK-NEXT: G_BR %bb.56 659 ; CHECK-NEXT: {{ $}} 660 ; CHECK-NEXT: bb.12.bb13: 661 ; CHECK-NEXT: G_BR %bb.56 662 ; CHECK-NEXT: {{ $}} 663 ; CHECK-NEXT: bb.13.bb14: 664 ; CHECK-NEXT: G_BR %bb.56 665 ; CHECK-NEXT: {{ $}} 666 ; CHECK-NEXT: bb.14.bb15: 667 ; CHECK-NEXT: G_BR %bb.56 668 ; CHECK-NEXT: {{ $}} 669 ; CHECK-NEXT: bb.15.bb16: 670 ; CHECK-NEXT: G_BR %bb.56 671 ; CHECK-NEXT: {{ $}} 672 ; CHECK-NEXT: bb.16.bb17: 673 ; CHECK-NEXT: G_BR %bb.56 674 ; CHECK-NEXT: {{ $}} 675 ; CHECK-NEXT: bb.17.bb18: 676 ; CHECK-NEXT: G_BR %bb.56 677 ; CHECK-NEXT: {{ $}} 678 ; CHECK-NEXT: bb.18.bb19: 679 ; CHECK-NEXT: G_BR %bb.56 680 ; CHECK-NEXT: {{ $}} 681 ; CHECK-NEXT: bb.19.bb20: 682 ; CHECK-NEXT: G_BR %bb.56 683 ; CHECK-NEXT: {{ $}} 684 ; CHECK-NEXT: bb.20.bb21: 685 ; CHECK-NEXT: G_BR %bb.56 686 ; CHECK-NEXT: {{ $}} 687 ; CHECK-NEXT: bb.21.bb22: 688 ; CHECK-NEXT: G_BR %bb.56 689 ; CHECK-NEXT: {{ $}} 690 ; CHECK-NEXT: bb.22.bb23: 691 ; CHECK-NEXT: G_BR %bb.56 692 ; CHECK-NEXT: {{ $}} 693 ; CHECK-NEXT: bb.23.bb24: 694 ; CHECK-NEXT: G_BR %bb.56 695 ; CHECK-NEXT: {{ $}} 696 ; CHECK-NEXT: bb.24.bb25: 697 ; CHECK-NEXT: G_BR %bb.56 698 ; CHECK-NEXT: {{ $}} 699 ; CHECK-NEXT: bb.25.bb26: 700 ; CHECK-NEXT: G_BR %bb.56 701 ; CHECK-NEXT: {{ $}} 702 ; CHECK-NEXT: bb.26.bb27: 703 ; CHECK-NEXT: G_BR %bb.56 704 ; CHECK-NEXT: {{ $}} 705 ; CHECK-NEXT: bb.27.bb28: 706 ; CHECK-NEXT: G_BR %bb.56 707 ; CHECK-NEXT: {{ $}} 708 ; CHECK-NEXT: bb.28.bb29: 709 ; CHECK-NEXT: G_BR %bb.56 710 ; CHECK-NEXT: {{ $}} 711 ; CHECK-NEXT: bb.29.bb30: 712 ; CHECK-NEXT: G_BR %bb.56 713 ; CHECK-NEXT: {{ $}} 714 ; CHECK-NEXT: bb.30.bb31: 715 ; CHECK-NEXT: G_BR %bb.56 716 ; CHECK-NEXT: {{ $}} 717 ; CHECK-NEXT: bb.31.bb32: 718 ; CHECK-NEXT: G_BR %bb.56 719 ; CHECK-NEXT: {{ $}} 720 ; CHECK-NEXT: bb.32.bb33: 721 ; CHECK-NEXT: G_BR %bb.56 722 ; CHECK-NEXT: {{ $}} 723 ; CHECK-NEXT: bb.33.bb34: 724 ; CHECK-NEXT: G_BR %bb.56 725 ; CHECK-NEXT: {{ $}} 726 ; CHECK-NEXT: bb.34.bb35: 727 ; CHECK-NEXT: G_BR %bb.56 728 ; CHECK-NEXT: {{ $}} 729 ; CHECK-NEXT: bb.35.bb36: 730 ; CHECK-NEXT: G_BR %bb.56 731 ; CHECK-NEXT: {{ $}} 732 ; CHECK-NEXT: bb.36.bb37: 733 ; CHECK-NEXT: G_BR %bb.56 734 ; CHECK-NEXT: {{ $}} 735 ; CHECK-NEXT: bb.37.bb38: 736 ; CHECK-NEXT: G_BR %bb.56 737 ; CHECK-NEXT: {{ $}} 738 ; CHECK-NEXT: bb.38.bb39: 739 ; CHECK-NEXT: G_BR %bb.56 740 ; CHECK-NEXT: {{ $}} 741 ; CHECK-NEXT: bb.39.bb40: 742 ; CHECK-NEXT: G_BR %bb.56 743 ; CHECK-NEXT: {{ $}} 744 ; CHECK-NEXT: bb.40.bb41: 745 ; CHECK-NEXT: G_BR %bb.56 746 ; CHECK-NEXT: {{ $}} 747 ; CHECK-NEXT: bb.41.bb42: 748 ; CHECK-NEXT: G_BR %bb.56 749 ; CHECK-NEXT: {{ $}} 750 ; CHECK-NEXT: bb.42.bb43: 751 ; CHECK-NEXT: G_BR %bb.56 752 ; CHECK-NEXT: {{ $}} 753 ; CHECK-NEXT: bb.43.bb44: 754 ; CHECK-NEXT: G_BR %bb.56 755 ; CHECK-NEXT: {{ $}} 756 ; CHECK-NEXT: bb.44.bb45: 757 ; CHECK-NEXT: G_BR %bb.56 758 ; CHECK-NEXT: {{ $}} 759 ; CHECK-NEXT: bb.45.bb46: 760 ; CHECK-NEXT: G_BR %bb.56 761 ; CHECK-NEXT: {{ $}} 762 ; CHECK-NEXT: bb.46.bb47: 763 ; CHECK-NEXT: G_BR %bb.56 764 ; CHECK-NEXT: {{ $}} 765 ; CHECK-NEXT: bb.47.bb48: 766 ; CHECK-NEXT: G_BR %bb.56 767 ; CHECK-NEXT: {{ $}} 768 ; CHECK-NEXT: bb.48.bb49: 769 ; CHECK-NEXT: G_BR %bb.56 770 ; CHECK-NEXT: {{ $}} 771 ; CHECK-NEXT: bb.49.bb50: 772 ; CHECK-NEXT: G_BR %bb.56 773 ; CHECK-NEXT: {{ $}} 774 ; CHECK-NEXT: bb.50.bb51: 775 ; CHECK-NEXT: G_BR %bb.56 776 ; CHECK-NEXT: {{ $}} 777 ; CHECK-NEXT: bb.51.bb52: 778 ; CHECK-NEXT: G_BR %bb.56 779 ; CHECK-NEXT: {{ $}} 780 ; CHECK-NEXT: bb.52.bb53: 781 ; CHECK-NEXT: G_BR %bb.56 782 ; CHECK-NEXT: {{ $}} 783 ; CHECK-NEXT: bb.53.bb54: 784 ; CHECK-NEXT: G_BR %bb.56 785 ; CHECK-NEXT: {{ $}} 786 ; CHECK-NEXT: bb.54.bb55: 787 ; CHECK-NEXT: G_BR %bb.56 788 ; CHECK-NEXT: {{ $}} 789 ; CHECK-NEXT: bb.55.bb56: 790 ; CHECK-NEXT: G_BR %bb.56 791 ; CHECK-NEXT: {{ $}} 792 ; CHECK-NEXT: bb.56.bb57: 793 ; CHECK-NEXT: [[PHI:%[0-9]+]]:_(s64) = G_PHI [[C56]](s64), %bb.1, [[C57]](s64), %bb.2, [[C58]](s64), %bb.3, [[C59]](s64), %bb.4, [[C60]](s64), %bb.5, [[C61]](s64), %bb.6, [[C62]](s64), %bb.7, [[C63]](s64), %bb.8, [[C64]](s64), %bb.9, [[C65]](s64), %bb.10, [[C66]](s64), %bb.11, [[C67]](s64), %bb.12, [[C68]](s64), %bb.13, [[C69]](s64), %bb.14, [[C70]](s64), %bb.15, [[C71]](s64), %bb.16, [[C72]](s64), %bb.17, [[C73]](s64), %bb.18, [[C74]](s64), %bb.19, [[C75]](s64), %bb.20, [[C76]](s64), %bb.21, [[C77]](s64), %bb.22, [[C78]](s64), %bb.23, [[C79]](s64), %bb.24, [[C80]](s64), %bb.25, [[C81]](s64), %bb.26, [[C82]](s64), %bb.27, [[C83]](s64), %bb.28, [[C84]](s64), %bb.29, [[C85]](s64), %bb.30, [[C86]](s64), %bb.31, [[C87]](s64), %bb.32, [[C88]](s64), %bb.33, [[C89]](s64), %bb.34, [[C90]](s64), %bb.35, [[C91]](s64), %bb.36, [[C92]](s64), %bb.37, [[C93]](s64), %bb.38, [[C94]](s64), %bb.39, [[C95]](s64), %bb.40, [[C96]](s64), %bb.41, [[C97]](s64), %bb.42, [[C98]](s64), %bb.43, [[C99]](s64), %bb.44, [[C100]](s64), %bb.45, [[C101]](s64), %bb.46, [[C102]](s64), %bb.47, [[C103]](s64), %bb.48, [[C104]](s64), %bb.49, [[C105]](s64), %bb.50, [[C106]](s64), %bb.51, [[C107]](s64), %bb.52, [[C108]](s64), %bb.53, [[C109]](s64), %bb.54, [[C110]](s64), %bb.55 794 ; CHECK-NEXT: [[C111:%[0-9]+]]:_(s64) = G_CONSTANT i64 16 795 ; CHECK-NEXT: [[MUL:%[0-9]+]]:_(s64) = G_MUL [[PHI]], [[C111]] 796 ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[GV]], [[MUL]](s64) 797 ; CHECK-NEXT: [[C112:%[0-9]+]]:_(s64) = G_CONSTANT i64 8 798 ; CHECK-NEXT: %120:_(p0) = nuw nusw G_PTR_ADD [[PTR_ADD]], [[C112]](s64) 799 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(p0) = G_LOAD %120(p0) :: (load (p0) from %ir.tmp59) 800 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp 801 ; CHECK-NEXT: $x0 = COPY [[COPY]](p0) 802 ; CHECK-NEXT: $x1 = COPY [[LOAD]](p0) 803 ; CHECK-NEXT: BL @wibble, csr_aarch64_aapcs_thisreturn, implicit-def $lr, implicit $sp, implicit $x0, implicit $x1 804 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp 805 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(p0) = COPY [[COPY]](p0) 806 ; CHECK-NEXT: G_BR %bb.59 807 ; CHECK-NEXT: {{ $}} 808 ; CHECK-NEXT: bb.57.bb62: 809 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp 810 ; CHECK-NEXT: $x0 = COPY [[COPY]](p0) 811 ; CHECK-NEXT: $x1 = COPY [[COPY2]](p0) 812 ; CHECK-NEXT: BL @wibble, csr_aarch64_aapcs_thisreturn, implicit-def $lr, implicit $sp, implicit $x0, implicit $x1 813 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp 814 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(p0) = COPY [[COPY]](p0) 815 ; CHECK-NEXT: G_BR %bb.59 816 ; CHECK-NEXT: {{ $}} 817 ; CHECK-NEXT: bb.58.bb64: 818 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp 819 ; CHECK-NEXT: $w0 = COPY [[COPY1]](s32) 820 ; CHECK-NEXT: $x1 = COPY [[FRAME_INDEX]](p0) 821 ; CHECK-NEXT: BL @baz, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $w0, implicit $x1 822 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp 823 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp 824 ; CHECK-NEXT: $x0 = COPY [[COPY]](p0) 825 ; CHECK-NEXT: $x1 = COPY [[FRAME_INDEX]](p0) 826 ; CHECK-NEXT: BL @wibble, csr_aarch64_aapcs_thisreturn, implicit-def $lr, implicit $sp, implicit $x0, implicit $x1 827 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp 828 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(p0) = COPY [[COPY]](p0) 829 ; CHECK-NEXT: G_BR %bb.59 830 ; CHECK-NEXT: {{ $}} 831 ; CHECK-NEXT: bb.59.bb68: 832 ; CHECK-NEXT: RET_ReallyLR 833 ; CHECK-NEXT: {{ $}} 834 ; CHECK-NEXT: bb.60.bb69: 835 ; CHECK-NEXT: [[ICMP55:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY2]](p0), [[C55]] 836 ; CHECK-NEXT: G_BRCOND [[ICMP55]](s1), %bb.58 837 ; CHECK-NEXT: G_BR %bb.57 838bb: 839 %tmp = alloca [16 x i32], align 4 840 switch i32 %arg1, label %bb69 [ 841 i32 3, label %bb57 842 i32 4, label %bb3 843 i32 6, label %bb4 844 i32 7, label %bb5 845 i32 8, label %bb6 846 i32 9, label %bb7 847 i32 10, label %bb8 848 i32 11, label %bb9 849 i32 12, label %bb10 850 i32 13, label %bb11 851 i32 14, label %bb12 852 i32 15, label %bb13 853 i32 16, label %bb14 854 i32 17, label %bb15 855 i32 18, label %bb16 856 i32 19, label %bb17 857 i32 20, label %bb18 858 i32 21, label %bb19 859 i32 22, label %bb20 860 i32 23, label %bb21 861 i32 24, label %bb22 862 i32 25, label %bb23 863 i32 26, label %bb24 864 i32 27, label %bb25 865 i32 28, label %bb26 866 i32 29, label %bb27 867 i32 30, label %bb28 868 i32 31, label %bb29 869 i32 32, label %bb30 870 i32 33, label %bb31 871 i32 34, label %bb32 872 i32 35, label %bb33 873 i32 36, label %bb34 874 i32 37, label %bb35 875 i32 38, label %bb36 876 i32 39, label %bb37 877 i32 41, label %bb38 878 i32 42, label %bb39 879 i32 43, label %bb40 880 i32 44, label %bb41 881 i32 45, label %bb42 882 i32 46, label %bb43 883 i32 47, label %bb44 884 i32 48, label %bb45 885 i32 49, label %bb46 886 i32 50, label %bb47 887 i32 51, label %bb48 888 i32 52, label %bb49 889 i32 53, label %bb50 890 i32 54, label %bb51 891 i32 55, label %bb52 892 i32 4352, label %bb53 893 i32 4353, label %bb54 894 i32 4354, label %bb55 895 i32 4355, label %bb56 896 ] 897 898bb3: ; preds = %bb 899 br label %bb57 900 901bb4: ; preds = %bb 902 br label %bb57 903 904bb5: ; preds = %bb 905 br label %bb57 906 907bb6: ; preds = %bb 908 br label %bb57 909 910bb7: ; preds = %bb 911 br label %bb57 912 913bb8: ; preds = %bb 914 br label %bb57 915 916bb9: ; preds = %bb 917 br label %bb57 918 919bb10: ; preds = %bb 920 br label %bb57 921 922bb11: ; preds = %bb 923 br label %bb57 924 925bb12: ; preds = %bb 926 br label %bb57 927 928bb13: ; preds = %bb 929 br label %bb57 930 931bb14: ; preds = %bb 932 br label %bb57 933 934bb15: ; preds = %bb 935 br label %bb57 936 937bb16: ; preds = %bb 938 br label %bb57 939 940bb17: ; preds = %bb 941 br label %bb57 942 943bb18: ; preds = %bb 944 br label %bb57 945 946bb19: ; preds = %bb 947 br label %bb57 948 949bb20: ; preds = %bb 950 br label %bb57 951 952bb21: ; preds = %bb 953 br label %bb57 954 955bb22: ; preds = %bb 956 br label %bb57 957 958bb23: ; preds = %bb 959 br label %bb57 960 961bb24: ; preds = %bb 962 br label %bb57 963 964bb25: ; preds = %bb 965 br label %bb57 966 967bb26: ; preds = %bb 968 br label %bb57 969 970bb27: ; preds = %bb 971 br label %bb57 972 973bb28: ; preds = %bb 974 br label %bb57 975 976bb29: ; preds = %bb 977 br label %bb57 978 979bb30: ; preds = %bb 980 br label %bb57 981 982bb31: ; preds = %bb 983 br label %bb57 984 985bb32: ; preds = %bb 986 br label %bb57 987 988bb33: ; preds = %bb 989 br label %bb57 990 991bb34: ; preds = %bb 992 br label %bb57 993 994bb35: ; preds = %bb 995 br label %bb57 996 997bb36: ; preds = %bb 998 br label %bb57 999 1000bb37: ; preds = %bb 1001 br label %bb57 1002 1003bb38: ; preds = %bb 1004 br label %bb57 1005 1006bb39: ; preds = %bb 1007 br label %bb57 1008 1009bb40: ; preds = %bb 1010 br label %bb57 1011 1012bb41: ; preds = %bb 1013 br label %bb57 1014 1015bb42: ; preds = %bb 1016 br label %bb57 1017 1018bb43: ; preds = %bb 1019 br label %bb57 1020 1021bb44: ; preds = %bb 1022 br label %bb57 1023 1024bb45: ; preds = %bb 1025 br label %bb57 1026 1027bb46: ; preds = %bb 1028 br label %bb57 1029 1030bb47: ; preds = %bb 1031 br label %bb57 1032 1033bb48: ; preds = %bb 1034 br label %bb57 1035 1036bb49: ; preds = %bb 1037 br label %bb57 1038 1039bb50: ; preds = %bb 1040 br label %bb57 1041 1042bb51: ; preds = %bb 1043 br label %bb57 1044 1045bb52: ; preds = %bb 1046 br label %bb57 1047 1048bb53: ; preds = %bb 1049 br label %bb57 1050 1051bb54: ; preds = %bb 1052 br label %bb57 1053 1054bb55: ; preds = %bb 1055 br label %bb57 1056 1057bb56: ; preds = %bb 1058 br label %bb57 1059 1060bb57: ; preds = %bb56, %bb55, %bb54, %bb53, %bb52, %bb51, %bb50, %bb49, %bb48, %bb47, %bb46, %bb45, %bb44, %bb43, %bb42, %bb41, %bb40, %bb39, %bb38, %bb37, %bb36, %bb35, %bb34, %bb33, %bb32, %bb31, %bb30, %bb29, %bb28, %bb27, %bb26, %bb25, %bb24, %bb23, %bb22, %bb21, %bb20, %bb19, %bb18, %bb17, %bb16, %bb15, %bb14, %bb13, %bb12, %bb11, %bb10, %bb9, %bb8, %bb7, %bb6, %bb5, %bb4, %bb3, %bb 1061 %tmp58 = phi i64 [ 0, %bb ], [ 1, %bb3 ], [ 2, %bb4 ], [ 3, %bb5 ], [ 4, %bb6 ], [ 5, %bb7 ], [ 6, %bb8 ], [ 7, %bb9 ], [ 8, %bb10 ], [ 9, %bb11 ], [ 10, %bb12 ], [ 11, %bb13 ], [ 12, %bb14 ], [ 13, %bb15 ], [ 14, %bb16 ], [ 15, %bb17 ], [ 16, %bb18 ], [ 17, %bb19 ], [ 18, %bb20 ], [ 19, %bb21 ], [ 20, %bb22 ], [ 21, %bb23 ], [ 22, %bb24 ], [ 23, %bb25 ], [ 24, %bb26 ], [ 25, %bb27 ], [ 26, %bb28 ], [ 27, %bb29 ], [ 28, %bb30 ], [ 29, %bb31 ], [ 30, %bb32 ], [ 31, %bb33 ], [ 32, %bb34 ], [ 33, %bb35 ], [ 34, %bb36 ], [ 35, %bb37 ], [ 36, %bb38 ], [ 37, %bb39 ], [ 38, %bb40 ], [ 39, %bb41 ], [ 40, %bb42 ], [ 41, %bb43 ], [ 42, %bb44 ], [ 43, %bb45 ], [ 44, %bb46 ], [ 45, %bb47 ], [ 46, %bb48 ], [ 47, %bb49 ], [ 48, %bb50 ], [ 49, %bb51 ], [ 50, %bb52 ], [ 51, %bb53 ], [ 52, %bb54 ], [ 53, %bb55 ], [ 54, %bb56 ] 1062 %tmp59 = getelementptr inbounds [55 x %0], ptr @global, i64 0, i64 %tmp58, i32 1 1063 %tmp60 = load ptr, ptr %tmp59, align 8 1064 %tmp61 = call ptr @wibble(ptr %arg, ptr %tmp60) 1065 br label %bb68 1066 1067bb62: ; preds = %bb69 1068 %tmp63 = call ptr @wibble(ptr %arg, ptr nonnull %arg2) 1069 br label %bb68 1070 1071bb64: ; preds = %bb69 1072 call void @baz(i32 %arg1, ptr %tmp) 1073 %tmp67 = call ptr @wibble(ptr %arg, ptr %tmp) 1074 br label %bb68 1075 1076bb68: ; preds = %bb64, %bb62, %bb57 1077 ret void 1078 1079bb69: ; preds = %bb 1080 %tmp70 = icmp eq ptr %arg2, null 1081 br i1 %tmp70, label %bb64, label %bb62 1082} 1083 1084declare ptr @wibble(ptr returned, ptr) 1085 1086declare void @baz(i32, ptr) 1087 1088 1089; Check that with 2 jump tables, the phi node doesn't lose the edge from the 1090; second one. 1091define void @jt_2_tables_phi_edge_from_second() { 1092 ; CHECK-LABEL: name: jt_2_tables_phi_edge_from_second 1093 ; CHECK: bb.1.entry: 1094 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(p0) = G_IMPLICIT_DEF 1095 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 123 1096 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 263 1097 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 265 1098 ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 270 1099 ; CHECK-NEXT: [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 279 1100 ; CHECK-NEXT: [[DEF1:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF 1101 ; CHECK-NEXT: [[C5:%[0-9]+]]:_(s32) = G_CONSTANT i32 37 1102 ; CHECK-NEXT: [[C6:%[0-9]+]]:_(s32) = G_CONSTANT i32 43 1103 ; CHECK-NEXT: [[C7:%[0-9]+]]:_(s32) = G_CONSTANT i32 45 1104 ; CHECK-NEXT: [[C8:%[0-9]+]]:_(s32) = G_CONSTANT i32 60 1105 ; CHECK-NEXT: [[C9:%[0-9]+]]:_(s32) = G_CONSTANT i32 278 1106 ; CHECK-NEXT: [[C10:%[0-9]+]]:_(s32) = G_CONSTANT i32 280 1107 ; CHECK-NEXT: [[C11:%[0-9]+]]:_(s32) = G_CONSTANT i32 281 1108 ; CHECK-NEXT: [[C12:%[0-9]+]]:_(s32) = G_CONSTANT i32 283 1109 ; CHECK-NEXT: [[DEF2:%[0-9]+]]:_(s1) = G_IMPLICIT_DEF 1110 ; CHECK-NEXT: [[C13:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 1111 ; CHECK-NEXT: [[C14:%[0-9]+]]:_(s32) = G_CONSTANT i32 1 1112 ; CHECK-NEXT: [[C15:%[0-9]+]]:_(s32) = G_CONSTANT i32 4 1113 ; CHECK-NEXT: [[C16:%[0-9]+]]:_(s32) = G_CONSTANT i32 6 1114 ; CHECK-NEXT: [[C17:%[0-9]+]]:_(s32) = G_CONSTANT i32 7 1115 ; CHECK-NEXT: [[C18:%[0-9]+]]:_(s32) = G_CONSTANT i32 8 1116 ; CHECK-NEXT: [[C19:%[0-9]+]]:_(s32) = G_CONSTANT i32 9 1117 ; CHECK-NEXT: [[C20:%[0-9]+]]:_(s32) = G_CONSTANT i32 12 1118 ; CHECK-NEXT: [[C21:%[0-9]+]]:_(s32) = G_CONSTANT i32 15 1119 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[DEF]](p0) :: (load (s32) from `ptr undef`, align 8) 1120 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[LOAD]](s32), [[C]] 1121 ; CHECK-NEXT: G_BRCOND [[ICMP]](s1), %bb.6 1122 ; CHECK-NEXT: G_BR %bb.19 1123 ; CHECK-NEXT: {{ $}} 1124 ; CHECK-NEXT: bb.19.entry: 1125 ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[LOAD]](s32), [[C1]] 1126 ; CHECK-NEXT: G_BRCOND [[ICMP1]](s1), %bb.4 1127 ; CHECK-NEXT: G_BR %bb.20 1128 ; CHECK-NEXT: {{ $}} 1129 ; CHECK-NEXT: bb.20.entry: 1130 ; CHECK-NEXT: [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[LOAD]](s32), [[C2]] 1131 ; CHECK-NEXT: G_BRCOND [[ICMP2]](s1), %bb.7 1132 ; CHECK-NEXT: G_BR %bb.21 1133 ; CHECK-NEXT: {{ $}} 1134 ; CHECK-NEXT: bb.21.entry: 1135 ; CHECK-NEXT: [[ICMP3:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[LOAD]](s32), [[C3]] 1136 ; CHECK-NEXT: G_BRCOND [[ICMP3]](s1), %bb.2 1137 ; CHECK-NEXT: G_BR %bb.22 1138 ; CHECK-NEXT: {{ $}} 1139 ; CHECK-NEXT: bb.22.entry: 1140 ; CHECK-NEXT: [[ICMP4:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[LOAD]](s32), [[C4]] 1141 ; CHECK-NEXT: G_BRCOND [[ICMP4]](s1), %bb.5 1142 ; CHECK-NEXT: G_BR %bb.23 1143 ; CHECK-NEXT: {{ $}} 1144 ; CHECK-NEXT: bb.23.entry: 1145 ; CHECK-NEXT: G_BR %bb.3 1146 ; CHECK-NEXT: {{ $}} 1147 ; CHECK-NEXT: bb.2.if.then: 1148 ; CHECK-NEXT: successors: 1149 ; CHECK-NEXT: {{ $}} 1150 ; CHECK-NEXT: bb.3.sw.bb2.i41: 1151 ; CHECK-NEXT: successors: 1152 ; CHECK-NEXT: {{ $}} 1153 ; CHECK-NEXT: bb.4.sw.bb7.i44: 1154 ; CHECK-NEXT: successors: 1155 ; CHECK-NEXT: {{ $}} 1156 ; CHECK-NEXT: bb.5.sw.bb8.i45: 1157 ; CHECK-NEXT: successors: 1158 ; CHECK-NEXT: {{ $}} 1159 ; CHECK-NEXT: bb.6.sw.bb13.i47: 1160 ; CHECK-NEXT: successors: 1161 ; CHECK-NEXT: {{ $}} 1162 ; CHECK-NEXT: bb.7.sw.bb14.i48: 1163 ; CHECK-NEXT: [[ICMP5:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[DEF1]](s32), [[C5]] 1164 ; CHECK-NEXT: G_BRCOND [[ICMP5]](s1), %bb.10 1165 ; CHECK-NEXT: G_BR %bb.24 1166 ; CHECK-NEXT: {{ $}} 1167 ; CHECK-NEXT: bb.24.sw.bb14.i48: 1168 ; CHECK-NEXT: [[ICMP6:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[DEF1]](s32), [[C6]] 1169 ; CHECK-NEXT: G_BRCOND [[ICMP6]](s1), %bb.16 1170 ; CHECK-NEXT: G_BR %bb.25 1171 ; CHECK-NEXT: {{ $}} 1172 ; CHECK-NEXT: bb.25.sw.bb14.i48: 1173 ; CHECK-NEXT: [[ICMP7:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[DEF1]](s32), [[C7]] 1174 ; CHECK-NEXT: G_BRCOND [[ICMP7]](s1), %bb.9 1175 ; CHECK-NEXT: G_BR %bb.26 1176 ; CHECK-NEXT: {{ $}} 1177 ; CHECK-NEXT: bb.26.sw.bb14.i48: 1178 ; CHECK-NEXT: [[ICMP8:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[DEF1]](s32), [[C8]] 1179 ; CHECK-NEXT: G_BRCOND [[ICMP8]](s1), %bb.14 1180 ; CHECK-NEXT: G_BR %bb.27 1181 ; CHECK-NEXT: {{ $}} 1182 ; CHECK-NEXT: bb.27.sw.bb14.i48: 1183 ; CHECK-NEXT: [[ICMP9:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[DEF1]](s32), [[C9]] 1184 ; CHECK-NEXT: G_BRCOND [[ICMP9]](s1), %bb.11 1185 ; CHECK-NEXT: G_BR %bb.28 1186 ; CHECK-NEXT: {{ $}} 1187 ; CHECK-NEXT: bb.28.sw.bb14.i48: 1188 ; CHECK-NEXT: [[ICMP10:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[DEF1]](s32), [[C10]] 1189 ; CHECK-NEXT: G_BRCOND [[ICMP10]](s1), %bb.13 1190 ; CHECK-NEXT: G_BR %bb.29 1191 ; CHECK-NEXT: {{ $}} 1192 ; CHECK-NEXT: bb.29.sw.bb14.i48: 1193 ; CHECK-NEXT: [[ICMP11:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[DEF1]](s32), [[C11]] 1194 ; CHECK-NEXT: G_BRCOND [[ICMP11]](s1), %bb.15 1195 ; CHECK-NEXT: G_BR %bb.30 1196 ; CHECK-NEXT: {{ $}} 1197 ; CHECK-NEXT: bb.30.sw.bb14.i48: 1198 ; CHECK-NEXT: [[ICMP12:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[DEF1]](s32), [[C12]] 1199 ; CHECK-NEXT: G_BRCOND [[ICMP12]](s1), %bb.12 1200 ; CHECK-NEXT: G_BR %bb.18 1201 ; CHECK-NEXT: {{ $}} 1202 ; CHECK-NEXT: bb.8.sw.default.i49: 1203 ; CHECK-NEXT: successors: 1204 ; CHECK-NEXT: {{ $}} 1205 ; CHECK-NEXT: bb.9.sw.bb1.i: 1206 ; CHECK-NEXT: G_BR %bb.16 1207 ; CHECK-NEXT: {{ $}} 1208 ; CHECK-NEXT: bb.10.sw.bb4.i: 1209 ; CHECK-NEXT: G_BR %bb.16 1210 ; CHECK-NEXT: {{ $}} 1211 ; CHECK-NEXT: bb.11.sw.bb6.i: 1212 ; CHECK-NEXT: G_BR %bb.16 1213 ; CHECK-NEXT: {{ $}} 1214 ; CHECK-NEXT: bb.12.sw.bb7.i: 1215 ; CHECK-NEXT: G_BR %bb.16 1216 ; CHECK-NEXT: {{ $}} 1217 ; CHECK-NEXT: bb.13.sw.bb8.i: 1218 ; CHECK-NEXT: G_BR %bb.16 1219 ; CHECK-NEXT: {{ $}} 1220 ; CHECK-NEXT: bb.14.sw.bb9.i: 1221 ; CHECK-NEXT: G_BR %bb.16 1222 ; CHECK-NEXT: {{ $}} 1223 ; CHECK-NEXT: bb.15.sw.bb12.i: 1224 ; CHECK-NEXT: G_BR %bb.16 1225 ; CHECK-NEXT: {{ $}} 1226 ; CHECK-NEXT: bb.16.land.rhs.lr.ph: 1227 ; CHECK-NEXT: [[PHI:%[0-9]+]]:_(s32) = G_PHI [[C13]](s32), %bb.24, [[C14]](s32), %bb.9, [[C15]](s32), %bb.10, [[C16]](s32), %bb.11, [[C17]](s32), %bb.12, [[C18]](s32), %bb.13, [[C19]](s32), %bb.14, [[C20]](s32), %bb.15 1228 ; CHECK-NEXT: G_BRCOND [[DEF2]](s1), %bb.17 1229 ; CHECK-NEXT: G_BR %bb.18 1230 ; CHECK-NEXT: {{ $}} 1231 ; CHECK-NEXT: bb.17.while.body: 1232 ; CHECK-NEXT: successors: 1233 ; CHECK-NEXT: {{ $}} 1234 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp 1235 ; CHECK-NEXT: BL @jt_2_tables_phi_edge_from_second, csr_aarch64_aapcs, implicit-def $lr, implicit $sp 1236 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp 1237 ; CHECK-NEXT: {{ $}} 1238 ; CHECK-NEXT: bb.18.while.end: 1239 ; CHECK-NEXT: [[PHI1:%[0-9]+]]:_(s32) = G_PHI [[C21]](s32), %bb.30, [[PHI]](s32), %bb.16 1240 ; CHECK-NEXT: RET_ReallyLR 1241entry: 1242 %0 = load i32, ptr undef, align 8 1243 switch i32 %0, label %sw.default.i49 [ 1244 i32 270, label %if.then 1245 i32 265, label %sw.bb14.i48 1246 i32 123, label %sw.bb13.i47 1247 i32 279, label %sw.bb8.i45 1248 i32 286, label %sw.bb2.i41 1249 i32 263, label %sw.bb7.i44 1250 ] 1251 1252if.then: ; preds = %entry 1253 unreachable 1254 1255sw.bb2.i41: ; preds = %entry 1256 unreachable 1257 1258sw.bb7.i44: ; preds = %entry 1259 unreachable 1260 1261sw.bb8.i45: ; preds = %entry 1262 unreachable 1263 1264sw.bb13.i47: ; preds = %entry 1265 unreachable 1266 1267sw.bb14.i48: ; preds = %entry 1268 switch i32 undef, label %while.end [ 1269 i32 43, label %land.rhs.lr.ph 1270 i32 45, label %sw.bb1.i 1271 i32 280, label %sw.bb8.i 1272 i32 60, label %sw.bb9.i 1273 i32 37, label %sw.bb4.i 1274 i32 281, label %sw.bb12.i 1275 i32 278, label %sw.bb6.i 1276 i32 283, label %sw.bb7.i 1277 ] 1278 1279sw.default.i49: ; preds = %entry 1280 unreachable 1281 1282sw.bb1.i: ; preds = %sw.bb14.i48 1283 br label %land.rhs.lr.ph 1284 1285sw.bb4.i: ; preds = %sw.bb14.i48 1286 br label %land.rhs.lr.ph 1287 1288sw.bb6.i: ; preds = %sw.bb14.i48 1289 br label %land.rhs.lr.ph 1290 1291sw.bb7.i: ; preds = %sw.bb14.i48 1292 br label %land.rhs.lr.ph 1293 1294sw.bb8.i: ; preds = %sw.bb14.i48 1295 br label %land.rhs.lr.ph 1296 1297sw.bb9.i: ; preds = %sw.bb14.i48 1298 br label %land.rhs.lr.ph 1299 1300sw.bb12.i: ; preds = %sw.bb14.i48 1301 br label %land.rhs.lr.ph 1302 1303land.rhs.lr.ph: ; preds = %sw.bb12.i, %sw.bb9.i, %sw.bb8.i, %sw.bb7.i, %sw.bb6.i, %sw.bb4.i, %sw.bb1.i, %sw.bb14.i48 1304 %retval.0.i.ph = phi i32 [ 0, %sw.bb14.i48 ], [ 1, %sw.bb1.i ], [ 4, %sw.bb4.i ], [ 6, %sw.bb6.i ], [ 7, %sw.bb7.i ], [ 8, %sw.bb8.i ], [ 9, %sw.bb9.i ], [ 12, %sw.bb12.i ] 1305 br i1 undef, label %while.body, label %while.end 1306 1307while.body: ; preds = %land.rhs.lr.ph 1308 call void @jt_2_tables_phi_edge_from_second() 1309 unreachable 1310 1311while.end: ; preds = %land.rhs.lr.ph, %sw.bb14.i48 1312 %op.0.lcssa = phi i32 [ 15, %sw.bb14.i48 ], [ %retval.0.i.ph, %land.rhs.lr.ph ] 1313 ret void 1314} 1315 1316 1317define i32 @range_test(i32 %x) { 1318 ; CHECK-LABEL: name: range_test 1319 ; CHECK: bb.1.entry: 1320 ; CHECK-NEXT: liveins: $w0 1321 ; CHECK-NEXT: {{ $}} 1322 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0 1323 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 6 1324 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 24 1325 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 3 1326 ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 42 1327 ; CHECK-NEXT: [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 1328 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[C]] 1329 ; CHECK-NEXT: G_BRCOND [[ICMP]](s1), %bb.3 1330 ; CHECK-NEXT: G_BR %bb.5 1331 ; CHECK-NEXT: {{ $}} 1332 ; CHECK-NEXT: bb.5.entry: 1333 ; CHECK-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[COPY]], [[C1]] 1334 ; CHECK-NEXT: [[C5:%[0-9]+]]:_(s32) = G_CONSTANT i32 2 1335 ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ule), [[SUB]](s32), [[C5]] 1336 ; CHECK-NEXT: G_BRCOND [[ICMP1]](s1), %bb.2 1337 ; CHECK-NEXT: G_BR %bb.4 1338 ; CHECK-NEXT: {{ $}} 1339 ; CHECK-NEXT: bb.2.sw.bb: 1340 ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(s32) = nsw G_ADD [[COPY]], [[C3]] 1341 ; CHECK-NEXT: G_BR %bb.4 1342 ; CHECK-NEXT: {{ $}} 1343 ; CHECK-NEXT: bb.3.sw.bb1: 1344 ; CHECK-NEXT: [[MUL:%[0-9]+]]:_(s32) = nsw G_MUL [[COPY]], [[C2]] 1345 ; CHECK-NEXT: G_BR %bb.4 1346 ; CHECK-NEXT: {{ $}} 1347 ; CHECK-NEXT: bb.4.return: 1348 ; CHECK-NEXT: [[PHI:%[0-9]+]]:_(s32) = G_PHI [[MUL]](s32), %bb.3, [[ADD]](s32), %bb.2, [[C4]](s32), %bb.5 1349 ; CHECK-NEXT: $w0 = COPY [[PHI]](s32) 1350 ; CHECK-NEXT: RET_ReallyLR implicit $w0 1351entry: 1352 switch i32 %x, label %return [ 1353 i32 24, label %sw.bb 1354 i32 25, label %sw.bb 1355 i32 26, label %sw.bb 1356 i32 6, label %sw.bb1 1357 ] 1358 1359sw.bb: 1360 %add = add nsw i32 %x, 42 1361 br label %return 1362 1363sw.bb1: 1364 %mul = mul nsw i32 %x, 3 1365 br label %return 1366 1367return: 1368 %retval.0 = phi i32 [ %mul, %sw.bb1 ], [ %add, %sw.bb ], [ 0, %entry ] 1369 ret i32 %retval.0 1370} 1371 1372define ptr @test_range_phi_switch_cycle() { 1373 ; CHECK-LABEL: name: test_range_phi_switch_cycle 1374 ; CHECK: bb.1.bb: 1375 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF 1376 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 305 1377 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 307 1378 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 497 1379 ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 4 1380 ; CHECK-NEXT: [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 3 1381 ; CHECK-NEXT: [[C5:%[0-9]+]]:_(s32) = G_CONSTANT i32 1 1382 ; CHECK-NEXT: G_BR %bb.2 1383 ; CHECK-NEXT: {{ $}} 1384 ; CHECK-NEXT: bb.2.bb1: 1385 ; CHECK-NEXT: [[PHI:%[0-9]+]]:_(s32) = G_PHI [[DEF]](s32), %bb.1, [[C3]](s32), %bb.3, [[C4]](s32), %bb.4, [[C5]](s32), %bb.2 1386 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[DEF]](s32), [[C]] 1387 ; CHECK-NEXT: G_BRCOND [[ICMP]](s1), %bb.2 1388 ; CHECK-NEXT: G_BR %bb.6 1389 ; CHECK-NEXT: {{ $}} 1390 ; CHECK-NEXT: bb.6.bb1: 1391 ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[DEF]](s32), [[C1]] 1392 ; CHECK-NEXT: G_BRCOND [[ICMP1]](s1), %bb.3 1393 ; CHECK-NEXT: G_BR %bb.7 1394 ; CHECK-NEXT: {{ $}} 1395 ; CHECK-NEXT: bb.7.bb1: 1396 ; CHECK-NEXT: [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[DEF]](s32), [[C2]] 1397 ; CHECK-NEXT: G_BRCOND [[ICMP2]](s1), %bb.4 1398 ; CHECK-NEXT: G_BR %bb.5 1399 ; CHECK-NEXT: {{ $}} 1400 ; CHECK-NEXT: bb.3.bb2: 1401 ; CHECK-NEXT: G_BR %bb.2 1402 ; CHECK-NEXT: {{ $}} 1403 ; CHECK-NEXT: bb.4.bb3: 1404 ; CHECK-NEXT: G_BR %bb.2 1405 ; CHECK-NEXT: {{ $}} 1406 ; CHECK-NEXT: bb.5.bb4: 1407 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp 1408 ; CHECK-NEXT: $w0 = COPY [[PHI]](s32) 1409 ; CHECK-NEXT: BL @ham, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $w0, implicit-def $x0 1410 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp 1411 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0 1412bb: 1413 br label %bb1 1414 1415bb1: ; preds = %bb3, %bb2, %bb1, %bb 1416 %tmp = phi i32 [undef, %bb ], [ 4, %bb2 ], [ 3, %bb3 ], [ 1, %bb1] 1417 switch i32 undef, label %bb4 [ 1418 i32 305, label %bb1 1419 i32 497, label %bb3 1420 i32 307, label %bb2 1421 ] 1422 1423bb2: ; preds = %bb1 1424 br label %bb1 1425 1426bb3: ; preds = %bb1 1427 br label %bb1 1428 1429bb4: ; preds = %bb1 1430 %tmp5 = tail call ptr @ham(i32 %tmp) 1431 unreachable 1432} 1433 1434declare ptr @ham(i32) 1435 1436define internal void @bar() unnamed_addr #1 { 1437 ; CHECK-LABEL: name: bar 1438 ; CHECK: bb.1 (%ir-block.0): 1439 unreachable 1440} 1441 1442define i1 @i1_value_cmp_is_signed(i1) { 1443 ; CHECK-LABEL: name: i1_value_cmp_is_signed 1444 ; CHECK: bb.1.Entry: 1445 ; CHECK-NEXT: liveins: $w0 1446 ; CHECK-NEXT: {{ $}} 1447 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0 1448 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[COPY]](s32) 1449 ; CHECK-NEXT: [[ASSERT_ZEXT:%[0-9]+]]:_(s8) = G_ASSERT_ZEXT [[TRUNC]], 1 1450 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s1) = G_TRUNC [[ASSERT_ZEXT]](s8) 1451 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s1) = G_CONSTANT i1 true 1452 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s1) = G_CONSTANT i1 false 1453 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(sle), [[TRUNC1]](s1), [[C1]] 1454 ; CHECK-NEXT: G_BRCOND [[ICMP]](s1), %bb.3 1455 ; CHECK-NEXT: G_BR %bb.2 1456 ; CHECK-NEXT: {{ $}} 1457 ; CHECK-NEXT: bb.2.BadValue: 1458 ; CHECK-NEXT: successors: 1459 ; CHECK-NEXT: {{ $}} 1460 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp 1461 ; CHECK-NEXT: BL @bar, csr_aarch64_aapcs, implicit-def $lr, implicit $sp 1462 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp 1463 ; CHECK-NEXT: {{ $}} 1464 ; CHECK-NEXT: bb.3.OkValue: 1465 ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s8) = G_ZEXT [[TRUNC1]](s1) 1466 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[ZEXT]](s8) 1467 ; CHECK-NEXT: $w0 = COPY [[ANYEXT]](s32) 1468 ; CHECK-NEXT: RET_ReallyLR implicit $w0 1469Entry: 1470 switch i1 %0, label %BadValue [ 1471 i1 false, label %OkValue 1472 i1 true, label %OkValue 1473 ] 1474 1475BadValue: 1476 call fastcc void @bar() 1477 unreachable 1478 1479OkValue: 1480 ret i1 %0 1481} 1482 1483