# RUN: not --crash llc -o - -run-pass=none -verify-machineinstrs -mtriple=arm64 %s 2>&1 | FileCheck %s # REQUIRES: aarch64-registered-target --- name: g_extract_subvector tracksRegLiveness: true liveins: body: | bb.0: %0:_(s32) = G_CONSTANT i32 0 %1:_() = G_IMPLICIT_DEF %2:_() = G_IMPLICIT_DEF ; CHECK: generic instruction must use register operands ; CHECK: G_EXTRACT_SUBVECTOR first source must be a register %3:_() = G_EXTRACT_SUBVECTOR 1, 0 ; CHECK: G_EXTRACT_SUBVECTOR index must be an immediate %4:_() = G_EXTRACT_SUBVECTOR %2, %0 ; CHECK: Destination type must be a vector %5:_(s32) = G_EXTRACT_SUBVECTOR %2, 0 ; CHECK: Source must be a vector %6:_() = G_EXTRACT_SUBVECTOR %0, 0 %7:_() = G_IMPLICIT_DEF ; CHECK: Element type of vectors must be the same %8:_() = G_EXTRACT_SUBVECTOR %7, 0 ; CHECK: Destination vector must be smaller than source vector %9:_() = G_EXTRACT_SUBVECTOR %1, 3 ; CHECK: Destination vector must be smaller than source vector %10:_() = G_EXTRACT_SUBVECTOR %1, 2 ; CHECK: Destination type and index must not cause extract to overrun the source vector %11:_() = G_EXTRACT_SUBVECTOR %1, 4 %12:_() = G_IMPLICIT_DEF ; CHECK: Destination type and index must not cause extract to overrun the source vector %13:_() = G_EXTRACT_SUBVECTOR %12, 3 %14:_(<2 x s32>) = G_IMPLICIT_DEF %15:_(<4 x s32>) = G_IMPLICIT_DEF ; CHECK: Destination type and index must not cause extract to overrun the source vector %16:_(<2 x s32>) = G_EXTRACT_SUBVECTOR %14, 4 ; CHECK: Destination type and index must not cause extract to overrun the source vector %17:_(<3 x s32>) = G_EXTRACT_SUBVECTOR %15, 3 ; CHECK: Vector types must both be fixed or both be scalable %18:_() = G_EXTRACT_SUBVECTOR %15, 0 ; CHECK: Vector types must both be fixed or both be scalable %19:_(<2 x s32>) = G_EXTRACT_SUBVECTOR %12, 0 ; CHECK: Index must be a multiple of the destination vector's minimum vector length %20:_() = G_EXTRACT_SUBVECTOR %12, 1 ...