diff options
Diffstat (limited to 'llvm/test/CodeGen/MIR')
5 files changed, 248 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/MIR/AArch64/parse-shufflemask-invalid0.mir b/llvm/test/CodeGen/MIR/AArch64/parse-shufflemask-invalid0.mir new file mode 100644 index 00000000000..9a8f94f754d --- /dev/null +++ b/llvm/test/CodeGen/MIR/AArch64/parse-shufflemask-invalid0.mir @@ -0,0 +1,19 @@ +# RUN: not llc -mtriple=aarch64-- -run-pass=none -o /dev/null %s 2>&1 | FileCheck %s + +--- +name: test_missing_comma +tracksRegLiveness: true +body: | + bb.0: + liveins: $d0 + + %0:_(<2 x s32>) = COPY $d0 + %2:_(<2 x s32>) = G_IMPLICIT_DEF + + ; FIXME: Not ideal error + ; CHECK: [[@LINE+1]]:73: shufflemask should be terminated by ')'. + %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 + +... diff --git a/llvm/test/CodeGen/MIR/AArch64/parse-shufflemask-invalid1.mir b/llvm/test/CodeGen/MIR/AArch64/parse-shufflemask-invalid1.mir new file mode 100644 index 00000000000..3b82de57bf6 --- /dev/null +++ b/llvm/test/CodeGen/MIR/AArch64/parse-shufflemask-invalid1.mir @@ -0,0 +1,18 @@ +# RUN: not llc -mtriple=aarch64-- -run-pass=none -o /dev/null %s 2>&1 | FileCheck %s + +--- +name: test_missing_lparen +tracksRegLiveness: true +body: | + bb.0: + liveins: $d0 + + %0:_(<2 x s32>) = COPY $d0 + %2:_(<2 x s32>) = G_IMPLICIT_DEF + + ; CHECK: [[@LINE+1]]:71: expected syntax shufflemask(<integer or undef>, ...) + %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 + +... diff --git a/llvm/test/CodeGen/MIR/AArch64/parse-shufflemask-invalid2.mir b/llvm/test/CodeGen/MIR/AArch64/parse-shufflemask-invalid2.mir new file mode 100644 index 00000000000..5d3d62f119e --- /dev/null +++ b/llvm/test/CodeGen/MIR/AArch64/parse-shufflemask-invalid2.mir @@ -0,0 +1,18 @@ +# RUN: not llc -mtriple=aarch64-- -run-pass=none -o /dev/null %s 2>&1 | FileCheck %s + +--- +name: test_missing_rparen +tracksRegLiveness: true +body: | + bb.0: + liveins: $d0 + + %0:_(<2 x s32>) = COPY $d0 + %2:_(<2 x s32>) = G_IMPLICIT_DEF + + ; CHECK: [[@LINE+1]]:75: shufflemask should be terminated by ')'. + %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 + +... diff --git a/llvm/test/CodeGen/MIR/AArch64/parse-shufflemask-invalid3.mir b/llvm/test/CodeGen/MIR/AArch64/parse-shufflemask-invalid3.mir new file mode 100644 index 00000000000..95b7cfc27d9 --- /dev/null +++ b/llvm/test/CodeGen/MIR/AArch64/parse-shufflemask-invalid3.mir @@ -0,0 +1,18 @@ +# RUN: not llc -mtriple=aarch64-- -run-pass=none -o /dev/null %s 2>&1 | FileCheck %s + +--- +name: test_not_integer +tracksRegLiveness: true +body: | + bb.0: + liveins: $d0 + + %0:_(<2 x s32>) = COPY $d0 + %2:_(<2 x s32>) = G_IMPLICIT_DEF + + ; CHECK: [[@LINE+1]]:74: expected integer constant + %1:_(<2 x s32>) = G_SHUFFLE_VECTOR %0(<2 x s32>), %2, shufflemask(1, arst) + $d0 = COPY %1(<2 x s32>) + RET_ReallyLR implicit $d0 + +... diff --git a/llvm/test/CodeGen/MIR/AArch64/parse-shufflemask.mir b/llvm/test/CodeGen/MIR/AArch64/parse-shufflemask.mir new file mode 100644 index 00000000000..4d9cce2945c --- /dev/null +++ b/llvm/test/CodeGen/MIR/AArch64/parse-shufflemask.mir @@ -0,0 +1,175 @@ +# 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:_(<2 x s32>) = G_SHUFFLE_VECTOR %0(<2 x s32>), %2, shufflemask(0) + $d0 = COPY %1(<2 x s32>) + RET_ReallyLR implicit $d0 + +... + +# 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:_(<2 x s32>) = G_SHUFFLE_VECTOR %0(<2 x s32>), %2, shufflemask(1) + $d0 = COPY %1(<2 x s32>) + RET_ReallyLR implicit $d0 + +... + +# 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:_(<2 x s32>) = G_SHUFFLE_VECTOR %0(<2 x s32>), %2, shufflemask(undef) + $d0 = COPY %1(<2 x s32>) + RET_ReallyLR implicit $d0 + +... |