blob: 2002eee0be690deab2c577aeef22241d1301db77 [file] [edit]
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 6
; RUN: llc -mtriple=aarch64-unknown-linux -global-isel -global-isel-abort=1 < %s | FileCheck %s
define <2 x i8> @test_bitcast_assertion(<4 x i32> %vqaddq_v2.i.i, ptr %BS_VAR_0) {
; CHECK-LABEL: test_bitcast_assertion:
; CHECK: // %bb.0: // %entry
; CHECK-NEXT: sub sp, sp, #16
; CHECK-NEXT: .cfi_def_cfa_offset 16
; CHECK-NEXT: movi v1.2d, #0000000000000000
; CHECK-NEXT: mov x8, sp
; CHECK-NEXT: mov w9, #4 // =0x4
; CHECK-NEXT: .LBB0_1: // %for.cond
; CHECK-NEXT: // =>This Inner Loop Header: Depth=1
; CHECK-NEXT: umov w10, v1.h[0]
; CHECK-NEXT: str q0, [sp]
; CHECK-NEXT: and x10, x10, #0x3
; CHECK-NEXT: umull x10, w10, w9
; CHECK-NEXT: ldrh w10, [x8, x10]
; CHECK-NEXT: stp q1, q1, [x0, #32]
; CHECK-NEXT: stp q1, q1, [x0, #64]
; CHECK-NEXT: fmov d2, x10
; CHECK-NEXT: stp q1, q1, [x0, #96]
; CHECK-NEXT: mov v2.d[1], xzr
; CHECK-NEXT: stp q2, q1, [x0]
; CHECK-NEXT: b .LBB0_1
entry:
br label %for.cond
for.cond: ; preds = %for.cond, %entry
%vec_wide = phi <64 x i16> [ %bitcasted_vec, %for.cond ], [ zeroinitializer, %entry ]
%conv = extractelement <64 x i16> %vec_wide, i64 0
%vecext.i = extractelement <4 x i32> %vqaddq_v2.i.i, i16 %conv
%masked_val = and i32 %vecext.i, 65535
%val_i64 = zext i32 %masked_val to i64
%vecinit16 = insertelement <16 x i64> zeroinitializer, i64 %val_i64, i64 0
store <16 x i64> %vecinit16, ptr %BS_VAR_0, align 16
%bitcasted_vec = bitcast <16 x i64> zeroinitializer to <64 x i16>
br label %for.cond
}