57 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 62; RUN: llc -global-isel -o - %s | FileCheck %s3 4target triple = "aarch64-unknown-unknown"5 6; Check we don't crash here when computing known bits.7 8define <4 x i32> @test(<8 x i16> %in, i1 %continue) {9; CHECK-LABEL: test:10; CHECK: // %bb.0: // %entry11; CHECK-NEXT: sub sp, sp, #1612; CHECK-NEXT: .cfi_def_cfa_offset 1613; CHECK-NEXT: mov w12, wzr14; CHECK-NEXT: mov x8, sp15; CHECK-NEXT: mov w9, #2 // =0x216; CHECK-NEXT: mov w10, #0 // =0x017; CHECK-NEXT: .LBB0_1: // %loop18; CHECK-NEXT: // =>This Inner Loop Header: Depth=119; CHECK-NEXT: mov w11, w1220; CHECK-NEXT: mov w12, w1221; CHECK-NEXT: str q0, [sp]22; CHECK-NEXT: and x12, x12, #0x723; CHECK-NEXT: umull x12, w12, w924; CHECK-NEXT: ldrb w12, [x8, x12]25; CHECK-NEXT: cmp w12, #026; CHECK-NEXT: cset w12, eq27; CHECK-NEXT: fmov s1, w1228; CHECK-NEXT: mov v1.b[1], w1029; CHECK-NEXT: mov v1.b[2], w1030; CHECK-NEXT: mov v1.b[3], w1031; CHECK-NEXT: fmov w12, s132; CHECK-NEXT: tbz w0, #0, .LBB0_133; CHECK-NEXT: // %bb.2: // %exit34; CHECK-NEXT: fmov s0, w1135; CHECK-NEXT: mov v0.s[1], wzr36; CHECK-NEXT: mov v0.s[2], wzr37; CHECK-NEXT: mov v0.s[3], wzr38; CHECK-NEXT: add sp, sp, #1639; CHECK-NEXT: ret40entry:41 br label %loop42 43exit:44 %result = insertelement <4 x i32> zeroinitializer, i32 %index, i64 045 ret <4 x i32> %result46 47loop:48 %index = phi i32 [ 0, %entry ], [ %insert.bitcast, %loop ]49 %extracted = extractelement <8 x i16> %in, i32 %index50 %masked = and i16 %extracted, 25551 %maskedIsZero = icmp eq i16 %masked, 052 %maskedIsZero.zext = zext i1 %maskedIsZero to i853 %insert = insertelement <4 x i8> zeroinitializer, i8 %maskedIsZero.zext, i64 054 %insert.bitcast = bitcast <4 x i8> %insert to i3255 br i1 %continue, label %exit, label %loop56}57