summaryrefslogtreecommitdiffstats
path: root/llvm/test
diff options
context:
space:
mode:
authorChad Rosier <mcrosier@codeaurora.org>2013-10-16 21:04:39 +0000
committerChad Rosier <mcrosier@codeaurora.org>2013-10-16 21:04:39 +0000
commit846a72539c2a8b7cb507d2565750ba2cfd59d32e (patch)
treeb7f7c27baf9fed6da6ab5a8a459fa5f1fea8fd06 /llvm/test
parent175601d997446c57ff4c4931639ee76941ae1418 (diff)
downloadbcm5719-llvm-846a72539c2a8b7cb507d2565750ba2cfd59d32e.tar.gz
bcm5719-llvm-846a72539c2a8b7cb507d2565750ba2cfd59d32e.zip
[AArch64] Add support for NEON scalar negate instruction.
llvm-svn: 192843
Diffstat (limited to 'llvm/test')
-rw-r--r--llvm/test/CodeGen/AArch64/neon-scalar-neg.ll12
-rw-r--r--llvm/test/MC/AArch64/neon-diagnostics.s10
-rw-r--r--llvm/test/MC/AArch64/neon-scalar-neg.s8
-rw-r--r--llvm/test/MC/Disassembler/AArch64/neon-instructions.txt6
4 files changed, 36 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/AArch64/neon-scalar-neg.ll b/llvm/test/CodeGen/AArch64/neon-scalar-neg.ll
index 41d48322add..4dc9d519783 100644
--- a/llvm/test/CodeGen/AArch64/neon-scalar-neg.ll
+++ b/llvm/test/CodeGen/AArch64/neon-scalar-neg.ll
@@ -1,5 +1,17 @@
; RUN: llc < %s -verify-machineinstrs -mtriple=aarch64-none-linux-gnu -mattr=+neon | FileCheck %s
+define i64 @test_vnegd_s64(i64 %a) {
+; CHECK: test_vnegd_s64
+; CHECK: neg {{d[0-9]+}}, {{d[0-9]+}}
+entry:
+ %vneg.i = insertelement <1 x i64> undef, i64 %a, i32 0
+ %vneg1.i = tail call <1 x i64> @llvm.aarch64.neon.vneg(<1 x i64> %vneg.i)
+ %0 = extractelement <1 x i64> %vneg1.i, i32 0
+ ret i64 %0
+}
+
+declare <1 x i64> @llvm.aarch64.neon.vneg(<1 x i64>)
+
define i8 @test_vqnegb_s8(i8 %a) {
; CHECK: test_vqnegb_s8
; CHECK: sqneg {{b[0-9]+}}, {{b[0-9]+}}
diff --git a/llvm/test/MC/AArch64/neon-diagnostics.s b/llvm/test/MC/AArch64/neon-diagnostics.s
index ddd80ea1787..411ea9fe0b1 100644
--- a/llvm/test/MC/AArch64/neon-diagnostics.s
+++ b/llvm/test/MC/AArch64/neon-diagnostics.s
@@ -4450,3 +4450,13 @@
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR: abs d29, s24
// CHECK-ERROR: ^
+
+//----------------------------------------------------------------------
+// Scalar Negate
+//----------------------------------------------------------------------
+
+ neg d29, s24
+
+// CHECK-ERROR: error: invalid operand for instruction
+// CHECK-ERROR: neg d29, s24
+// CHECK-ERROR: ^
diff --git a/llvm/test/MC/AArch64/neon-scalar-neg.s b/llvm/test/MC/AArch64/neon-scalar-neg.s
index 0e637da7949..8e5d61dd245 100644
--- a/llvm/test/MC/AArch64/neon-scalar-neg.s
+++ b/llvm/test/MC/AArch64/neon-scalar-neg.s
@@ -3,6 +3,14 @@
// Check that the assembler can handle the documented syntax for AArch64
//----------------------------------------------------------------------
+// Scalar Negate
+//----------------------------------------------------------------------
+
+ neg d29, d24
+
+// CHECK: neg d29, d24 // encoding: [0x1d,0xbb,0xe0,0x7e]
+
+//----------------------------------------------------------------------
// Scalar Signed Saturating Negate
//----------------------------------------------------------------------
diff --git a/llvm/test/MC/Disassembler/AArch64/neon-instructions.txt b/llvm/test/MC/Disassembler/AArch64/neon-instructions.txt
index 81fffd6c7cb..c70a2f64868 100644
--- a/llvm/test/MC/Disassembler/AArch64/neon-instructions.txt
+++ b/llvm/test/MC/Disassembler/AArch64/neon-instructions.txt
@@ -1619,6 +1619,12 @@
0x92,0x79,0xe0,0x5e
#----------------------------------------------------------------------
+# Scalar Negate
+#----------------------------------------------------------------------
+# CHECK: neg d29, d24
+0x1d,0xbb,0xe0,0x7e
+
+#----------------------------------------------------------------------
# Scalar Signed Saturating Negate
#----------------------------------------------------------------------
# CHECK: sqneg b19, b14
OpenPOWER on IntegriCloud