# RUN: llc -mtriple=aarch64-none-linux-gnu -run-pass none -o - %s | FileCheck %s
# This test ensures that the MIR parser parses shufflemask correctly
# CHECK-LABEL: name: test_shuffle_1_0
# CHECK: G_SHUFFLE_VECTOR %0(<2 x s32>), %1, shufflemask(1, 0)
---
name: test_shuffle_1_0
tracksRegLiveness: true
body: |
bb.0:
liveins: $d0
%0:_(<2 x s32>) = COPY $d0
%2:_(<2 x s32>) = G_IMPLICIT_DEF
%1:_(<2 x s32>) = G_SHUFFLE_VECTOR %0(<2 x s32>), %2, shufflemask(1, 0)
$d0 = COPY %1(<2 x s32>)
RET_ReallyLR implicit $d0
...
# CHECK-LABEL: name: test_shuffle_nospace
# CHECK: G_SHUFFLE_VECTOR %0(<2 x s32>), %1, shufflemask(1, 0)
---
name: test_shuffle_nospace
tracksRegLiveness: true
body: |
bb.0:
liveins: $d0
%0:_(<2 x s32>) = COPY $d0
%2:_(<2 x s32>) = G_IMPLICIT_DEF
%1:_(<2 x s32>) = G_SHUFFLE_VECTOR %0(<2 x s32>), %2, shufflemask(1,0)
$d0 = COPY %1(<2 x s32>)
RET_ReallyLR implicit $d0
...
# CHECK-LABEL: name: test_shuffle_0_0
# CHECK: G_SHUFFLE_VECTOR %0(<2 x s32>), %1, shufflemask(0, 0)
---
name: test_shuffle_0_0
tracksRegLiveness: true
body: |
bb.0:
liveins: $d0
%0:_(<2 x s32>) = COPY $d0
%2:_(<2 x s32>) = G_IMPLICIT_DEF
%1:_(<2 x s32>) = G_SHUFFLE_VECTOR %0(<2 x s32>), %2, shufflemask(0, 0)
$d0 = COPY %1(<2 x s32>)
RET_ReallyLR implicit $d0
...
# CHECK-LABEL: name: test_shuffle_1_1
# CHECK: G_SHUFFLE_VECTOR %0(<2 x s32>), %1, shufflemask(1, 1)
---
name: test_shuffle_1_1
tracksRegLiveness: true
body: |
bb.0:
liveins: $d0
%0:_(<2 x s32>) = COPY $d0
%2:_(<2 x s32>) = G_IMPLICIT_DEF
%1:_(<2 x s32>) = G_SHUFFLE_VECTOR %0(<2 x s32>), %2, shufflemask(1, 1)
$d0 = COPY %1(<2 x s32>)
RET_ReallyLR implicit $d0
...
# CHECK-LABEL: name: test_shuffle_undef_undef
# CHECK: G_SHUFFLE_VECTOR %0(<2 x s32>), %1, shufflemask(undef, undef)
---
name: test_shuffle_undef_undef
tracksRegLiveness: true
body: |
bb.0:
liveins: $d0
%0:_(<2 x s32>) = COPY $d0
%2:_(<2 x s32>) = G_IMPLICIT_DEF
%1:_(<2 x s32>) = G_SHUFFLE_VECTOR %0(<2 x s32>), %2, shufflemask(undef, undef)
$d0 = COPY %1(<2 x s32>)
RET_ReallyLR implicit $d0
...
# CHECK-LABEL: name: test_shuffle_undef_0
# CHECK: G_SHUFFLE_VECTOR %0(<2 x s32>), %1, shufflemask(undef, 0)
---
name: test_shuffle_undef_0
tracksRegLiveness: true
body: |
bb.0:
liveins: $d0
%0:_(<2 x s32>) = COPY $d0
%2:_(<2 x s32>) = G_IMPLICIT_DEF
%1:_(<2 x s32>) = G_SHUFFLE_VECTOR %0(<2 x s32>), %2, shufflemask(undef, 0)
$d0 = COPY %1(<2 x s32>)
RET_ReallyLR implicit $d0
...
# CHECK-LABEL: name: test_shuffle_0_undef
# CHECK: G_SHUFFLE_VECTOR %0(<2 x s32>), %1, shufflemask(0, undef)
---
name: test_shuffle_0_undef
tracksRegLiveness: true
body: |
bb.0:
liveins: $d0
%0:_(<2 x s32>) = COPY $d0
%2:_(<2 x s32>) = G_IMPLICIT_DEF
%1:_(<2 x s32>) = G_SHUFFLE_VECTOR %0(<2 x s32>), %2, shufflemask(0, undef)
$d0 = COPY %1(<2 x s32>)
RET_ReallyLR implicit $d0
...
# CHECK-LABEL: name: test_shuffle_0
# CHECK: G_SHUFFLE_VECTOR %0(<2 x s32>), %1, shufflemask(0)
---
name: test_shuffle_0
tracksRegLiveness: true
body: |
bb.0:
liveins: $d0
%0:_(<2 x s32>) = COPY $d0
%2:_(<2 x s32>) = G_IMPLICIT_DEF
%1:_(s32) = G_SHUFFLE_VECTOR %0(<2 x s32>), %2, shufflemask(0)
$w0 = COPY %1
RET_ReallyLR implicit $w0
...
# CHECK-LABEL: name: test_shuffle_1
# CHECK: G_SHUFFLE_VECTOR %0(<2 x s32>), %1, shufflemask(1)
---
name: test_shuffle_1
tracksRegLiveness: true
body: |
bb.0:
liveins: $d0
%0:_(<2 x s32>) = COPY $d0
%2:_(<2 x s32>) = G_IMPLICIT_DEF
%1:_(s32) = G_SHUFFLE_VECTOR %0(<2 x s32>), %2, shufflemask(1)
$w0 = COPY %1
RET_ReallyLR implicit $w0
...
# CHECK-LABEL: name: test_shuffle_undef
# CHECK: G_SHUFFLE_VECTOR %0(<2 x s32>), %1, shufflemask(undef)
---
name: test_shuffle_undef
tracksRegLiveness: true
body: |
bb.0:
liveins: $d0
%0:_(<2 x s32>) = COPY $d0
%2:_(<2 x s32>) = G_IMPLICIT_DEF
%1:_(s32) = G_SHUFFLE_VECTOR %0(<2 x s32>), %2, shufflemask(undef)
$w0 = COPY %1
RET_ReallyLR implicit $w0
...