# 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 ...