summaryrefslogtreecommitdiff
path: root/test/CodeGen/AArch64/divrem.ll
diff options
context:
space:
mode:
authorChad Rosier <mcrosier@codeaurora.org>2015-12-04 21:38:44 +0000
committerChad Rosier <mcrosier@codeaurora.org>2015-12-04 21:38:44 +0000
commitb590f81c153265bc3ce6173161642b7fbc5b8a1c (patch)
treef0e3f8e72d165c738ab6635a802452be9c8d219c /test/CodeGen/AArch64/divrem.ll
parentfca82775a2b75d8aaaf8f30226acaa3b3607f356 (diff)
[AArch64] Expand vector SDIVREM/UDIVREM operations.
http://reviews.llvm.org/D15214 Patch by Ana Pazos <apazos@codeaurora.org>! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@254773 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/AArch64/divrem.ll')
-rw-r--r--test/CodeGen/AArch64/divrem.ll22
1 files changed, 22 insertions, 0 deletions
diff --git a/test/CodeGen/AArch64/divrem.ll b/test/CodeGen/AArch64/divrem.ll
new file mode 100644
index 00000000000..9f648eb63ea
--- /dev/null
+++ b/test/CodeGen/AArch64/divrem.ll
@@ -0,0 +1,22 @@
+; RUN: llc -mtriple=aarch64-none-linux-gnu < %s -mattr=+neon | FileCheck %s
+
+; SDIVREM/UDIVREM DAG nodes are generated but expanded when lowering and
+; should not generate select error.
+define <2 x i32> @test_udivrem(<2 x i32> %x, < 2 x i32> %y, < 2 x i32>* %z) {
+; CHECK-LABEL: test_udivrem
+; CHECK-DAG: udivrem
+; CHECK-NOT: LLVM ERROR: Cannot select
+ %div = udiv <2 x i32> %x, %y
+ store <2 x i32> %div, <2 x i32>* %z
+ %1 = urem <2 x i32> %x, %y
+ ret <2 x i32> %1
+}
+
+define <4 x i32> @test_sdivrem(<4 x i32> %x, <4 x i32>* %y) {
+; CHECK-LABEL: test_sdivrem
+; CHECK-DAG: sdivrem
+ %div = sdiv <4 x i32> %x, < i32 20, i32 20, i32 20, i32 20 >
+ store <4 x i32> %div, <4 x i32>* %y
+ %1 = srem <4 x i32> %x, < i32 20, i32 20, i32 20, i32 20 >
+ ret <4 x i32> %1
+}