xref: /llvm-project/llvm/test/MachineVerifier/test_g_shuffle_vector.mir (revision d20190e68413634b87f0f9426312a0e9d8456d18)
1# RUN: not --crash llc -o - -mtriple=arm64  -run-pass=none -verify-machineinstrs %s 2>&1 | FileCheck %s
2# REQUIRES: aarch64-registered-target
3---
4name:            g_shuffle_vector
5tracksRegLiveness: true
6liveins:
7body:             |
8  bb.0:
9    %0:_(<2 x s32>) = G_IMPLICIT_DEF
10    %1:_(<2 x s32>) = G_IMPLICIT_DEF
11    %2:_(<4 x s32>) = G_IMPLICIT_DEF
12
13    %3:_(s32) = G_CONSTANT i32 0
14    %4:_(s32) = G_CONSTANT i32 1
15    %5:_(<2 x s32>) = G_BUILD_VECTOR %3, %4
16
17    ; CHECK: Bad machine code: Incorrect mask operand type for G_SHUFFLE_VECTOR
18    %6:_(<4 x s32>) = G_SHUFFLE_VECTOR %0, %1, %2
19
20    ; CHECK: Bad machine code: Incorrect mask operand type for G_SHUFFLE_VECTOR
21    %7:_(<4 x s32>) = G_SHUFFLE_VECTOR %0, %1, %5
22
23    ; CHECK: Bad machine code: Incorrect mask operand type for G_SHUFFLE_VECTOR
24    %8:_(<4 x s32>) = G_SHUFFLE_VECTOR %0, %1, 0
25
26    ; CHECK: Bad machine code: Incorrect mask operand type for G_SHUFFLE_VECTOR
27    %9:_(<4 x s32>) = G_SHUFFLE_VECTOR %0, %1, i32 0
28
29    ; CHECK: Bad machine code: Wrong result type for shufflemask
30    %10:_(<4 x s32>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(0, 2)
31
32    ; CHECK: Bad machine code: Wrong result type for shufflemask
33    %11:_(<2 x s32>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(0, 2, 1, 1)
34
35    ; CHECK: Bad machine code: G_SHUFFLE_VECTOR cannot change element type
36    %12:_(<4 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(0, 2, 1, 1)
37
38    ; CHECK: Bad machine code: Source operands must be the same type
39    %13:_(<4 x s32>) = G_SHUFFLE_VECTOR %0, %2, shufflemask(0, 2, 1, 1)
40
41    ; CHECK: Bad machine code: Out of bounds shuffle index
42    %14:_(<4 x s32>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(0, 2, 1, 4)
43
44    ; CHECK: Bad machine code: Out of bounds shuffle index
45    %15:_(<4 x s32>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(0, 2, 1, 5)
46
47    %19:_(s16) = G_CONSTANT i16 0
48
49    ; CHECK: Bad machine code: Source operands must be the same type
50    %20:_(<2 x s32>) = G_SHUFFLE_VECTOR %3, %19, shufflemask(1, 0)
51
52    ; CHECK: Bad machine code: G_SHUFFLE_VECTOR cannot change element type
53    %21:_(s16) = G_SHUFFLE_VECTOR %3, %4, shufflemask(0)
54
55    ; CHECK: Bad machine code: Out of bounds shuffle index
56    %22:_(s32) = G_IMPLICIT_DEF
57    %20:_(<2 x s32>) = G_SHUFFLE_VECTOR %22, %22, shufflemask(0, 2)
58
59...
60