llvm/llvm/test/MachineVerifier/test_g_unmerge_values.mir

# RUN: not --crash llc -o - -mtriple=arm64 -run-pass=none -verify-machineinstrs %s 2>&1 | FileCheck %s
# REQUIRES: aarch64-registered-target

---
name: g_unmerge_values
tracksRegLiveness: true
body: |
  bb.0:
    ; CHECK: Bad machine code: G_UNMERGE_VALUES destination types do not match
    %0:_(s64) = IMPLICIT_DEF
    %1:_(s32), %2:_(s16) = G_UNMERGE_VALUES %0

    ; CHECK: Bad machine code: G_UNMERGE_VALUES source operand does not match vector destination operands
    %3:_(<4 x s32>) = IMPLICIT_DEF
    %4:_(<3 x s32>), %5:_(<3 x s32>) = G_UNMERGE_VALUES %3

    ; CHECK: Bad machine code: G_UNMERGE_VALUES source operand does not match vector destination operands
    %6:_(<2 x s16>), %7:_(<2 x s16>) = G_UNMERGE_VALUES %3

    ; CHECK: Bad machine code: G_UNMERGE_VALUES vector source operand does not match scalar destination operands
    %8:_(<2 x s32>) = IMPLICIT_DEF
    %9:_(s32), %10:_(s32), %11:_(s32) = G_UNMERGE_VALUES %8

    ; CHECK: Bad machine code: G_UNMERGE_VALUES vector source operand does not match scalar destination operands
    %12:_(s16), %13:_(s16) = G_UNMERGE_VALUES %8

    ; CHECK: Bad machine code: G_UNMERGE_VALUES scalar source operand does not match scalar destination operands
    %14:_(s64) = IMPLICIT_DEF
    %15:_(s16), %16:_(s16) = G_UNMERGE_VALUES %14

    ; CHECK: Bad machine code: G_UNMERGE_VALUES scalar source operand does not match scalar destination operands
    %17:_(s32), %18:_(s32), %19:_(s32) = G_UNMERGE_VALUES %14
...