summaryrefslogtreecommitdiffstats
path: root/llvm/test
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test')
-rw-r--r--llvm/test/CodeGen/ARM/GlobalISel/arm-irtranslator.ll11
-rw-r--r--llvm/test/CodeGen/MIR/AArch64/parse-shufflemask.mir18
-rw-r--r--llvm/test/MachineVerifier/test_g_shuffle_vector.mir28
3 files changed, 47 insertions, 10 deletions
diff --git a/llvm/test/CodeGen/ARM/GlobalISel/arm-irtranslator.ll b/llvm/test/CodeGen/ARM/GlobalISel/arm-irtranslator.ll
index 5c9fbf1fe21..616299c3c09 100644
--- a/llvm/test/CodeGen/ARM/GlobalISel/arm-irtranslator.ll
+++ b/llvm/test/CodeGen/ARM/GlobalISel/arm-irtranslator.ll
@@ -446,6 +446,17 @@ define i32 @test_shufflevector_s32_v2s32(i32 %arg) {
ret i32 %res
}
+define i32 @test_shufflevector_s32_s32_s32(i32 %arg) {
+; CHECK-LABEL: name: test_shufflevector_s32_s32_s32
+; CHECK: [[ARG:%[0-9]+]]:_(s32) = COPY $r0
+; CHECK-DAG: [[UNDEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
+; CHECK: [[VEC:%[0-9]+]]:_(s32) = G_SHUFFLE_VECTOR [[ARG]](s32), [[UNDEF]], shufflemask(0)
+ %vec = insertelement <1 x i32> undef, i32 %arg, i32 0
+ %shuffle = shufflevector <1 x i32> %vec, <1 x i32> undef, <1 x i32> zeroinitializer
+ %res = extractelement <1 x i32> %shuffle, i32 0
+ ret i32 %res
+}
+
define i32 @test_shufflevector_v2s32_v3s32(i32 %arg1, i32 %arg2) {
; CHECK-LABEL: name: test_shufflevector_v2s32_v3s32
; CHECK: [[ARG1:%[0-9]+]]:_(s32) = COPY $r0
diff --git a/llvm/test/CodeGen/MIR/AArch64/parse-shufflemask.mir b/llvm/test/CodeGen/MIR/AArch64/parse-shufflemask.mir
index 4d9cce2945c..c529d63d6b5 100644
--- a/llvm/test/CodeGen/MIR/AArch64/parse-shufflemask.mir
+++ b/llvm/test/CodeGen/MIR/AArch64/parse-shufflemask.mir
@@ -134,9 +134,9 @@ body: |
%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
+ %1:_(s32) = G_SHUFFLE_VECTOR %0(<2 x s32>), %2, shufflemask(0)
+ $w0 = COPY %1
+ RET_ReallyLR implicit $w0
...
@@ -151,9 +151,9 @@ body: |
%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
+ %1:_(s32) = G_SHUFFLE_VECTOR %0(<2 x s32>), %2, shufflemask(1)
+ $w0 = COPY %1
+ RET_ReallyLR implicit $w0
...
@@ -168,8 +168,8 @@ body: |
%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
+ %1:_(s32) = G_SHUFFLE_VECTOR %0(<2 x s32>), %2, shufflemask(undef)
+ $w0 = COPY %1
+ RET_ReallyLR implicit $w0
...
diff --git a/llvm/test/MachineVerifier/test_g_shuffle_vector.mir b/llvm/test/MachineVerifier/test_g_shuffle_vector.mir
index 3c97f532b42..284f67a0fbd 100644
--- a/llvm/test/MachineVerifier/test_g_shuffle_vector.mir
+++ b/llvm/test/MachineVerifier/test_g_shuffle_vector.mir
@@ -1,4 +1,4 @@
-# RUN: not llc -o - -march=arm64 -global-isel -run-pass=none -verify-machineinstrs %s 2>&1 | FileCheck %s
+# RUN: not llc -o - -march=arm64 -run-pass=none -verify-machineinstrs %s 2>&1 | FileCheck %s
# REQUIRES: aarch64-registered-target
---
name: g_shuffle_vector
@@ -26,4 +26,30 @@ body: |
; CHECK: Bad machine code: Incorrect mask operand type for G_SHUFFLE_VECTOR
%9:_(<4 x s32>) = G_SHUFFLE_VECTOR %0, %1, i32 0
+ ; CHECK: Bad machine code: Wrong result type for shufflemask
+ %10:_(<4 x s32>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(0, 2)
+
+ ; CHECK: Bad machine code: Wrong result type for shufflemask
+ %11:_(<2 x s32>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(0, 2, 1, 1)
+
+ ; CHECK: Bad machine code: G_SHUFFLE_VECTOR cannot change element type
+ %12:_(<4 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(0, 2, 1, 1)
+
+ ; CHECK: Bad machine code: Source operands must be the same type
+ %13:_(<4 x s32>) = G_SHUFFLE_VECTOR %0, %2, shufflemask(0, 2, 1, 1)
+
+ ; CHECK: Bad machine code: Out of bounds shuffle index
+ %14:_(<4 x s32>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(0, 2, 1, 4)
+
+ ; CHECK: Bad machine code: Out of bounds shuffle index
+ %15:_(<4 x s32>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(0, 2, 1, 5)
+
+ %19:_(s16) = G_CONSTANT i16 0
+
+ ; CHECK: Bad machine code: Source operands must be the same type
+ %20:_(<2 x s32>) = G_SHUFFLE_VECTOR %3, %19, shufflemask(1, 0)
+
+ ; CHECK: Bad machine code: G_SHUFFLE_VECTOR cannot change element type
+ %21:_(s16) = G_SHUFFLE_VECTOR %3, %4, shufflemask(0)
+
...
OpenPOWER on IntegriCloud