aboutsummaryrefslogtreecommitdiffstats
path: root/test/MC
diff options
context:
space:
mode:
authorKevin Qin <Kevin.Qin@arm.com>2013-11-14 06:45:17 +0000
committerKevin Qin <Kevin.Qin@arm.com>2013-11-14 06:45:17 +0000
commit27df434c5e8c78e8b3e6e9596b55a6a6bd8d5116 (patch)
treed263502983aca5bd413828d8027419dcb2cf91b9 /test/MC
parent2bdf881ee403c0493acdb3253bc697f3bd914cca (diff)
downloadexternal_llvm-27df434c5e8c78e8b3e6e9596b55a6a6bd8d5116.zip
external_llvm-27df434c5e8c78e8b3e6e9596b55a6a6bd8d5116.tar.gz
external_llvm-27df434c5e8c78e8b3e6e9596b55a6a6bd8d5116.tar.bz2
Add test case for AArch64 NEON instruction set misc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194673 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/MC')
-rw-r--r--test/MC/AArch64/neon-simd-misc.s646
1 files changed, 646 insertions, 0 deletions
diff --git a/test/MC/AArch64/neon-simd-misc.s b/test/MC/AArch64/neon-simd-misc.s
new file mode 100644
index 0000000..9e0f9c5
--- /dev/null
+++ b/test/MC/AArch64/neon-simd-misc.s
@@ -0,0 +1,646 @@
+// RUN: llvm-mc -triple=aarch64 -mattr=+neon -show-encoding < %s | FileCheck %s
+
+// Check that the assembler can handle the documented syntax for AArch64
+
+
+//------------------------------------------------------------------------------
+// Element reverse
+//------------------------------------------------------------------------------
+ rev64 v0.16b, v31.16b
+ rev64 v2.8h, v4.8h
+ rev64 v6.4s, v8.4s
+ rev64 v1.8b, v9.8b
+ rev64 v13.4h, v21.4h
+ rev64 v4.2s, v0.2s
+
+// CHECK: rev64 v0.16b, v31.16b // encoding: [0xe0,0x0b,0x20,0x4e]
+// CHECK: rev64 v2.8h, v4.8h // encoding: [0x82,0x08,0x60,0x4e]
+// CHECK: rev64 v6.4s, v8.4s // encoding: [0x06,0x09,0xa0,0x4e]
+// CHECK: rev64 v1.8b, v9.8b // encoding: [0x21,0x09,0x20,0x0e]
+// CHECK: rev64 v13.4h, v21.4h // encoding: [0xad,0x0a,0x60,0x0e]
+// CHECK: rev64 v4.2s, v0.2s // encoding: [0x04,0x08,0xa0,0x0e]
+
+ rev32 v30.16b, v31.16b
+ rev32 v4.8h, v7.8h
+ rev32 v21.8b, v1.8b
+ rev32 v0.4h, v9.4h
+
+// CHECK: rev32 v30.16b, v31.16b // encoding: [0xfe,0x0b,0x20,0x6e]
+// CHECK: rev32 v4.8h, v7.8h // encoding: [0xe4,0x08,0x60,0x6e]
+// CHECK: rev32 v21.8b, v1.8b // encoding: [0x35,0x08,0x20,0x2e]
+// CHECK: rev32 v0.4h, v9.4h // encoding: [0x20,0x09,0x60,0x2e]
+
+ rev16 v30.16b, v31.16b
+ rev16 v21.8b, v1.8b
+
+// CHECK: rev16 v30.16b, v31.16b // encoding: [0xfe,0x1b,0x20,0x4e]
+// CHECK: rev16 v21.8b, v1.8b // encoding: [0x35,0x18,0x20,0x0e]
+
+//------------------------------------------------------------------------------
+// Signed integer pairwise add long
+//------------------------------------------------------------------------------
+
+ saddlp v3.8h, v21.16b
+ saddlp v8.4h, v5.8b
+ saddlp v9.4s, v1.8h
+ saddlp v0.2s, v1.4h
+ saddlp v12.2d, v4.4s
+ saddlp v17.1d, v28.2s
+
+// CHECK: saddlp v3.8h, v21.16b // encoding: [0xa3,0x2a,0x20,0x4e]
+// CHECK: saddlp v8.4h, v5.8b // encoding: [0xa8,0x28,0x20,0x0e]
+// CHECK: saddlp v9.4s, v1.8h // encoding: [0x29,0x28,0x60,0x4e]
+// CHECK: saddlp v0.2s, v1.4h // encoding: [0x20,0x28,0x60,0x0e]
+// CHECK: saddlp v12.2d, v4.4s // encoding: [0x8c,0x28,0xa0,0x4e]
+// CHECK: saddlp v17.1d, v28.2s // encoding: [0x91,0x2b,0xa0,0x0e]
+
+//------------------------------------------------------------------------------
+// Unsigned integer pairwise add long
+//------------------------------------------------------------------------------
+
+ uaddlp v3.8h, v21.16b
+ uaddlp v8.4h, v5.8b
+ uaddlp v9.4s, v1.8h
+ uaddlp v0.2s, v1.4h
+ uaddlp v12.2d, v4.4s
+ uaddlp v17.1d, v28.2s
+
+// CHECK: uaddlp v3.8h, v21.16b // encoding: [0xa3,0x2a,0x20,0x6e]
+// CHECK: uaddlp v8.4h, v5.8b // encoding: [0xa8,0x28,0x20,0x2e]
+// CHECK: uaddlp v9.4s, v1.8h // encoding: [0x29,0x28,0x60,0x6e]
+// CHECK: uaddlp v0.2s, v1.4h // encoding: [0x20,0x28,0x60,0x2e]
+// CHECK: uaddlp v12.2d, v4.4s // encoding: [0x8c,0x28,0xa0,0x6e]
+// CHECK: uaddlp v17.1d, v28.2s // encoding: [0x91,0x2b,0xa0,0x2e]
+
+//------------------------------------------------------------------------------
+// Signed integer pairwise add and accumulate long
+//------------------------------------------------------------------------------
+
+ sadalp v3.8h, v21.16b
+ sadalp v8.4h, v5.8b
+ sadalp v9.4s, v1.8h
+ sadalp v0.2s, v1.4h
+ sadalp v12.2d, v4.4s
+ sadalp v17.1d, v28.2s
+
+// CHECK: sadalp v3.8h, v21.16b // encoding: [0xa3,0x6a,0x20,0x4e]
+// CHECK: sadalp v8.4h, v5.8b // encoding: [0xa8,0x68,0x20,0x0e]
+// CHECK: sadalp v9.4s, v1.8h // encoding: [0x29,0x68,0x60,0x4e]
+// CHECK: sadalp v0.2s, v1.4h // encoding: [0x20,0x68,0x60,0x0e]
+// CHECK: sadalp v12.2d, v4.4s // encoding: [0x8c,0x68,0xa0,0x4e]
+// CHECK: sadalp v17.1d, v28.2s // encoding: [0x91,0x6b,0xa0,0x0e]
+
+//------------------------------------------------------------------------------
+// Unsigned integer pairwise add and accumulate long
+//------------------------------------------------------------------------------
+
+ uadalp v3.8h, v21.16b
+ uadalp v8.4h, v5.8b
+ uadalp v9.4s, v1.8h
+ uadalp v0.2s, v1.4h
+ uadalp v12.2d, v4.4s
+ uadalp v17.1d, v28.2s
+
+// CHECK: uadalp v3.8h, v21.16b // encoding: [0xa3,0x6a,0x20,0x6e]
+// CHECK: uadalp v8.4h, v5.8b // encoding: [0xa8,0x68,0x20,0x2e]
+// CHECK: uadalp v9.4s, v1.8h // encoding: [0x29,0x68,0x60,0x6e]
+// CHECK: uadalp v0.2s, v1.4h // encoding: [0x20,0x68,0x60,0x2e]
+// CHECK: uadalp v12.2d, v4.4s // encoding: [0x8c,0x68,0xa0,0x6e]
+// CHECK: uadalp v17.1d, v28.2s // encoding: [0x91,0x6b,0xa0,0x2e]
+
+//------------------------------------------------------------------------------
+// Signed integer saturating accumulate of unsigned value
+//------------------------------------------------------------------------------
+
+ suqadd v0.16b, v31.16b
+ suqadd v2.8h, v4.8h
+ suqadd v6.4s, v8.4s
+ suqadd v6.2d, v8.2d
+ suqadd v1.8b, v9.8b
+ suqadd v13.4h, v21.4h
+ suqadd v4.2s, v0.2s
+
+// CHECK: suqadd v0.16b, v31.16b // encoding: [0xe0,0x3b,0x20,0x4e]
+// CHECK: suqadd v2.8h, v4.8h // encoding: [0x82,0x38,0x60,0x4e]
+// CHECK: suqadd v6.4s, v8.4s // encoding: [0x06,0x39,0xa0,0x4e]
+// CHECK: suqadd v6.2d, v8.2d // encoding: [0x06,0x39,0xe0,0x4e]
+// CHECK: suqadd v1.8b, v9.8b // encoding: [0x21,0x39,0x20,0x0e]
+// CHECK: suqadd v13.4h, v21.4h // encoding: [0xad,0x3a,0x60,0x0e]
+// CHECK: suqadd v4.2s, v0.2s // encoding: [0x04,0x38,0xa0,0x0e]
+
+//------------------------------------------------------------------------------
+// Unsigned integer saturating accumulate of signed value
+//------------------------------------------------------------------------------
+
+ usqadd v0.16b, v31.16b
+ usqadd v2.8h, v4.8h
+ usqadd v6.4s, v8.4s
+ usqadd v6.2d, v8.2d
+ usqadd v1.8b, v9.8b
+ usqadd v13.4h, v21.4h
+ usqadd v4.2s, v0.2s
+
+// CHECK: usqadd v0.16b, v31.16b // encoding: [0xe0,0x3b,0x20,0x6e]
+// CHECK: usqadd v2.8h, v4.8h // encoding: [0x82,0x38,0x60,0x6e]
+// CHECK: usqadd v6.4s, v8.4s // encoding: [0x06,0x39,0xa0,0x6e]
+// CHECK: usqadd v6.2d, v8.2d // encoding: [0x06,0x39,0xe0,0x6e]
+// CHECK: usqadd v1.8b, v9.8b // encoding: [0x21,0x39,0x20,0x2e]
+// CHECK: usqadd v13.4h, v21.4h // encoding: [0xad,0x3a,0x60,0x2e]
+// CHECK: usqadd v4.2s, v0.2s // encoding: [0x04,0x38,0xa0,0x2e]
+
+//------------------------------------------------------------------------------
+// Integer saturating absolute
+//------------------------------------------------------------------------------
+
+ sqabs v0.16b, v31.16b
+ sqabs v2.8h, v4.8h
+ sqabs v6.4s, v8.4s
+ sqabs v6.2d, v8.2d
+ sqabs v1.8b, v9.8b
+ sqabs v13.4h, v21.4h
+ sqabs v4.2s, v0.2s
+
+// CHECK: sqabs v0.16b, v31.16b // encoding: [0xe0,0x7b,0x20,0x4e]
+// CHECK: sqabs v2.8h, v4.8h // encoding: [0x82,0x78,0x60,0x4e]
+// CHECK: sqabs v6.4s, v8.4s // encoding: [0x06,0x79,0xa0,0x4e]
+// CHECK: sqabs v6.2d, v8.2d // encoding: [0x06,0x79,0xe0,0x4e]
+// CHECK: sqabs v1.8b, v9.8b // encoding: [0x21,0x79,0x20,0x0e]
+// CHECK: sqabs v13.4h, v21.4h // encoding: [0xad,0x7a,0x60,0x0e]
+// CHECK: sqabs v4.2s, v0.2s // encoding: [0x04,0x78,0xa0,0x0e]
+
+//------------------------------------------------------------------------------
+// Signed integer saturating negate
+//------------------------------------------------------------------------------
+
+ sqneg v0.16b, v31.16b
+ sqneg v2.8h, v4.8h
+ sqneg v6.4s, v8.4s
+ sqneg v6.2d, v8.2d
+ sqneg v1.8b, v9.8b
+ sqneg v13.4h, v21.4h
+ sqneg v4.2s, v0.2s
+
+// CHECK: sqneg v0.16b, v31.16b // encoding: [0xe0,0x7b,0x20,0x6e]
+// CHECK: sqneg v2.8h, v4.8h // encoding: [0x82,0x78,0x60,0x6e]
+// CHECK: sqneg v6.4s, v8.4s // encoding: [0x06,0x79,0xa0,0x6e]
+// CHECK: sqneg v6.2d, v8.2d // encoding: [0x06,0x79,0xe0,0x6e]
+// CHECK: sqneg v1.8b, v9.8b // encoding: [0x21,0x79,0x20,0x2e]
+// CHECK: sqneg v13.4h, v21.4h // encoding: [0xad,0x7a,0x60,0x2e]
+// CHECK: sqneg v4.2s, v0.2s // encoding: [0x04,0x78,0xa0,0x2e]
+
+//------------------------------------------------------------------------------
+// Integer absolute
+//------------------------------------------------------------------------------
+
+ abs v0.16b, v31.16b
+ abs v2.8h, v4.8h
+ abs v6.4s, v8.4s
+ abs v6.2d, v8.2d
+ abs v1.8b, v9.8b
+ abs v13.4h, v21.4h
+ abs v4.2s, v0.2s
+
+// CHECK: abs v0.16b, v31.16b // encoding: [0xe0,0xbb,0x20,0x4e]
+// CHECK: abs v2.8h, v4.8h // encoding: [0x82,0xb8,0x60,0x4e]
+// CHECK: abs v6.4s, v8.4s // encoding: [0x06,0xb9,0xa0,0x4e]
+// CHECK: abs v6.2d, v8.2d // encoding: [0x06,0xb9,0xe0,0x4e]
+// CHECK: abs v1.8b, v9.8b // encoding: [0x21,0xb9,0x20,0x0e]
+// CHECK: abs v13.4h, v21.4h // encoding: [0xad,0xba,0x60,0x0e]
+// CHECK: abs v4.2s, v0.2s // encoding: [0x04,0xb8,0xa0,0x0e]
+
+//------------------------------------------------------------------------------
+// Integer negate
+//------------------------------------------------------------------------------
+
+ neg v0.16b, v31.16b
+ neg v2.8h, v4.8h
+ neg v6.4s, v8.4s
+ neg v6.2d, v8.2d
+ neg v1.8b, v9.8b
+ neg v13.4h, v21.4h
+ neg v4.2s, v0.2s
+
+// CHECK: neg v0.16b, v31.16b // encoding: [0xe0,0xbb,0x20,0x6e]
+// CHECK: neg v2.8h, v4.8h // encoding: [0x82,0xb8,0x60,0x6e]
+// CHECK: neg v6.4s, v8.4s // encoding: [0x06,0xb9,0xa0,0x6e]
+// CHECK: neg v6.2d, v8.2d // encoding: [0x06,0xb9,0xe0,0x6e]
+// CHECK: neg v1.8b, v9.8b // encoding: [0x21,0xb9,0x20,0x2e]
+// CHECK: neg v13.4h, v21.4h // encoding: [0xad,0xba,0x60,0x2e]
+// CHECK: neg v4.2s, v0.2s // encoding: [0x04,0xb8,0xa0,0x2e]
+
+//------------------------------------------------------------------------------
+// Integer count leading sign bits
+//------------------------------------------------------------------------------
+
+ cls v0.16b, v31.16b
+ cls v2.8h, v4.8h
+ cls v6.4s, v8.4s
+ cls v1.8b, v9.8b
+ cls v13.4h, v21.4h
+ cls v4.2s, v0.2s
+
+// CHECK: cls v0.16b, v31.16b // encoding: [0xe0,0x4b,0x20,0x4e]
+// CHECK: cls v2.8h, v4.8h // encoding: [0x82,0x48,0x60,0x4e]
+// CHECK: cls v6.4s, v8.4s // encoding: [0x06,0x49,0xa0,0x4e]
+// CHECK: cls v1.8b, v9.8b // encoding: [0x21,0x49,0x20,0x0e]
+// CHECK: cls v13.4h, v21.4h // encoding: [0xad,0x4a,0x60,0x0e]
+// CHECK: cls v4.2s, v0.2s // encoding: [0x04,0x48,0xa0,0x0e]
+
+//------------------------------------------------------------------------------
+// Integer count leading zeros
+//------------------------------------------------------------------------------
+
+ clz v0.16b, v31.16b
+ clz v2.8h, v4.8h
+ clz v6.4s, v8.4s
+ clz v1.8b, v9.8b
+ clz v13.4h, v21.4h
+ clz v4.2s, v0.2s
+
+// CHECK: clz v0.16b, v31.16b // encoding: [0xe0,0x4b,0x20,0x6e]
+// CHECK: clz v2.8h, v4.8h // encoding: [0x82,0x48,0x60,0x6e]
+// CHECK: clz v6.4s, v8.4s // encoding: [0x06,0x49,0xa0,0x6e]
+// CHECK: clz v1.8b, v9.8b // encoding: [0x21,0x49,0x20,0x2e]
+// CHECK: clz v13.4h, v21.4h // encoding: [0xad,0x4a,0x60,0x2e]
+// CHECK: clz v4.2s, v0.2s // encoding: [0x04,0x48,0xa0,0x2e]
+
+//------------------------------------------------------------------------------
+// Population count
+//------------------------------------------------------------------------------
+
+ cnt v0.16b, v31.16b
+ cnt v1.8b, v9.8b
+
+// CHECK: cnt v0.16b, v31.16b // encoding: [0xe0,0x5b,0x20,0x4e]
+// CHECK: cnt v1.8b, v9.8b // encoding: [0x21,0x59,0x20,0x0e]
+
+//------------------------------------------------------------------------------
+// Bitwise NOT
+//------------------------------------------------------------------------------
+
+ not v0.16b, v31.16b
+ not v1.8b, v9.8b
+
+// CHECK: not v0.16b, v31.16b // encoding: [0xe0,0x5b,0x20,0x6e]
+// CHECK: not v1.8b, v9.8b // encoding: [0x21,0x59,0x20,0x2e]
+
+//------------------------------------------------------------------------------
+// Bitwise reverse
+//------------------------------------------------------------------------------
+
+ rbit v0.16b, v31.16b
+ rbit v1.8b, v9.8b
+
+// CHECK: rbit v0.16b, v31.16b // encoding: [0xe0,0x5b,0x60,0x6e]
+// CHECK: rbit v1.8b, v9.8b // encoding: [0x21,0x59,0x60,0x2e]
+
+//------------------------------------------------------------------------------
+// Floating-point absolute
+//------------------------------------------------------------------------------
+
+ fabs v6.4s, v8.4s
+ fabs v6.2d, v8.2d
+ fabs v4.2s, v0.2s
+
+// CHECK: fabs v6.4s, v8.4s // encoding: [0x06,0xf9,0xa0,0x4e]
+// CHECK: fabs v6.2d, v8.2d // encoding: [0x06,0xf9,0xe0,0x4e]
+// CHECK: fabs v4.2s, v0.2s // encoding: [0x04,0xf8,0xa0,0x0e]
+
+//------------------------------------------------------------------------------
+// Floating-point negate
+//------------------------------------------------------------------------------
+
+ fneg v6.4s, v8.4s
+ fneg v6.2d, v8.2d
+ fneg v4.2s, v0.2s
+
+// CHECK: fneg v6.4s, v8.4s // encoding: [0x06,0xf9,0xa0,0x6e]
+// CHECK: fneg v6.2d, v8.2d // encoding: [0x06,0xf9,0xe0,0x6e]
+// CHECK: fneg v4.2s, v0.2s // encoding: [0x04,0xf8,0xa0,0x2e]
+
+//------------------------------------------------------------------------------
+// Integer extract and narrow
+//------------------------------------------------------------------------------
+
+ xtn2 v0.16b, v31.8h
+ xtn2 v2.8h, v4.4s
+ xtn2 v6.4s, v8.2d
+ xtn v1.8b, v9.8h
+ xtn v13.4h, v21.4s
+ xtn v4.2s, v0.2d
+
+// CHECK: xtn2 v0.16b, v31.8h // encoding: [0xe0,0x2b,0x21,0x4e]
+// CHECK: xtn2 v2.8h, v4.4s // encoding: [0x82,0x28,0x61,0x4e]
+// CHECK: xtn2 v6.4s, v8.2d // encoding: [0x06,0x29,0xa1,0x4e]
+// CHECK: xtn v1.8b, v9.8h // encoding: [0x21,0x29,0x21,0x0e]
+// CHECK: xtn v13.4h, v21.4s // encoding: [0xad,0x2a,0x61,0x0e]
+// CHECK: xtn v4.2s, v0.2d // encoding: [0x04,0x28,0xa1,0x0e]
+
+//------------------------------------------------------------------------------
+// Signed integer saturating extract and unsigned narrow
+//------------------------------------------------------------------------------
+
+ sqxtun2 v0.16b, v31.8h
+ sqxtun2 v2.8h, v4.4s
+ sqxtun2 v6.4s, v8.2d
+ sqxtun v1.8b, v9.8h
+ sqxtun v13.4h, v21.4s
+ sqxtun v4.2s, v0.2d
+
+// CHECK: sqxtun2 v0.16b, v31.8h // encoding: [0xe0,0x2b,0x21,0x6e]
+// CHECK: sqxtun2 v2.8h, v4.4s // encoding: [0x82,0x28,0x61,0x6e]
+// CHECK: sqxtun2 v6.4s, v8.2d // encoding: [0x06,0x29,0xa1,0x6e]
+// CHECK: sqxtun v1.8b, v9.8h // encoding: [0x21,0x29,0x21,0x2e]
+// CHECK: sqxtun v13.4h, v21.4s // encoding: [0xad,0x2a,0x61,0x2e]
+// CHECK: sqxtun v4.2s, v0.2d // encoding: [0x04,0x28,0xa1,0x2e]
+
+//------------------------------------------------------------------------------
+// Signed integer saturating extract and narrow
+//------------------------------------------------------------------------------
+
+ sqxtn2 v0.16b, v31.8h
+ sqxtn2 v2.8h, v4.4s
+ sqxtn2 v6.4s, v8.2d
+ sqxtn v1.8b, v9.8h
+ sqxtn v13.4h, v21.4s
+ sqxtn v4.2s, v0.2d
+
+// CHECK: sqxtn2 v0.16b, v31.8h // encoding: [0xe0,0x4b,0x21,0x4e]
+// CHECK: sqxtn2 v2.8h, v4.4s // encoding: [0x82,0x48,0x61,0x4e]
+// CHECK: sqxtn2 v6.4s, v8.2d // encoding: [0x06,0x49,0xa1,0x4e]
+// CHECK: sqxtn v1.8b, v9.8h // encoding: [0x21,0x49,0x21,0x0e]
+// CHECK: sqxtn v13.4h, v21.4s // encoding: [0xad,0x4a,0x61,0x0e]
+// CHECK: sqxtn v4.2s, v0.2d // encoding: [0x04,0x48,0xa1,0x0e]
+
+//------------------------------------------------------------------------------
+// Unsigned integer saturating extract and narrow
+//------------------------------------------------------------------------------
+
+ uqxtn2 v0.16b, v31.8h
+ uqxtn2 v2.8h, v4.4s
+ uqxtn2 v6.4s, v8.2d
+ uqxtn v1.8b, v9.8h
+ uqxtn v13.4h, v21.4s
+ uqxtn v4.2s, v0.2d
+
+// CHECK: uqxtn2 v0.16b, v31.8h // encoding: [0xe0,0x4b,0x21,0x6e]
+// CHECK: uqxtn2 v2.8h, v4.4s // encoding: [0x82,0x48,0x61,0x6e]
+// CHECK: uqxtn2 v6.4s, v8.2d // encoding: [0x06,0x49,0xa1,0x6e]
+// CHECK: uqxtn v1.8b, v9.8h // encoding: [0x21,0x49,0x21,0x2e]
+// CHECK: uqxtn v13.4h, v21.4s // encoding: [0xad,0x4a,0x61,0x2e]
+// CHECK: uqxtn v4.2s, v0.2d // encoding: [0x04,0x48,0xa1,0x2e]
+
+//------------------------------------------------------------------------------
+// Integer shift left long
+//------------------------------------------------------------------------------
+
+ shll2 v2.8h, v4.16b, #8
+ shll2 v6.4s, v8.8h, #16
+ shll2 v6.2d, v8.4s, #32
+ shll v2.8h, v4.8b, #8
+ shll v6.4s, v8.4h, #16
+ shll v6.2d, v8.2s, #32
+
+// CHECK: shll2 v2.8h, v4.16b, #8 // encoding: [0x82,0x38,0x21,0x6e]
+// CHECK: shll2 v6.4s, v8.8h, #16 // encoding: [0x06,0x39,0x61,0x6e]
+// CHECK: shll2 v6.2d, v8.4s, #32 // encoding: [0x06,0x39,0xa1,0x6e]
+// CHECK: shll v2.8h, v4.8b, #8 // encoding: [0x82,0x38,0x21,0x2e]
+// CHECK: shll v6.4s, v8.4h, #16 // encoding: [0x06,0x39,0x61,0x2e]
+// CHECK: shll v6.2d, v8.2s, #32 // encoding: [0x06,0x39,0xa1,0x2e]
+
+//------------------------------------------------------------------------------
+// Floating-point convert downsize
+//------------------------------------------------------------------------------
+
+ fcvtn2 v2.8h, v4.4s
+ fcvtn2 v6.4s, v8.2d
+ fcvtn v13.4h, v21.4s
+ fcvtn v4.2s, v0.2d
+
+// CHECK: fcvtn2 v2.8h, v4.4s // encoding: [0x82,0x68,0x21,0x4e]
+// CHECK: fcvtn2 v6.4s, v8.2d // encoding: [0x06,0x69,0x61,0x4e]
+// CHECK: fcvtn v13.4h, v21.4s // encoding: [0xad,0x6a,0x21,0x0e]
+// CHECK: fcvtn v4.2s, v0.2d // encoding: [0x04,0x68,0x61,0x0e]
+
+//------------------------------------------------------------------------------
+// Floating-point convert downsize with inexact
+//------------------------------------------------------------------------------
+
+ fcvtxn2 v6.4s, v8.2d
+ fcvtxn v4.2s, v0.2d
+
+// CHECK: fcvtxn2 v6.4s, v8.2d // encoding: [0x06,0x69,0x61,0x6e]
+// CHECK: fcvtxn v4.2s, v0.2d // encoding: [0x04,0x68,0x61,0x2e]
+
+//------------------------------------------------------------------------------
+// Floating-point convert upsize
+//------------------------------------------------------------------------------
+
+ fcvtl v9.4s, v1.4h
+ fcvtl v0.2d, v1.2s
+ fcvtl2 v12.4s, v4.8h
+ fcvtl2 v17.2d, v28.4s
+
+// CHECK: fcvtl v9.4s, v1.4h // encoding: [0x29,0x78,0x21,0x0e]
+// CHECK: fcvtl v0.2d, v1.2s // encoding: [0x20,0x78,0x61,0x0e]
+// CHECK: fcvtl2 v12.4s, v4.8h // encoding: [0x8c,0x78,0x21,0x4e]
+// CHECK: fcvtl2 v17.2d, v28.4s // encoding: [0x91,0x7b,0x61,0x4e]
+
+//------------------------------------------------------------------------------
+// Floating-point round to integral
+//------------------------------------------------------------------------------
+
+ frintn v6.4s, v8.4s
+ frintn v6.2d, v8.2d
+ frintn v4.2s, v0.2s
+
+// CHECK: frintn v6.4s, v8.4s // encoding: [0x06,0x89,0x21,0x4e]
+// CHECK: frintn v6.2d, v8.2d // encoding: [0x06,0x89,0x61,0x4e]
+// CHECK: frintn v4.2s, v0.2s // encoding: [0x04,0x88,0x21,0x0e]
+
+ frinta v6.4s, v8.4s
+ frinta v6.2d, v8.2d
+ frinta v4.2s, v0.2s
+
+// CHECK: frinta v6.4s, v8.4s // encoding: [0x06,0x89,0x21,0x6e]
+// CHECK: frinta v6.2d, v8.2d // encoding: [0x06,0x89,0x61,0x6e]
+// CHECK: frinta v4.2s, v0.2s // encoding: [0x04,0x88,0x21,0x2e]
+
+ frintp v6.4s, v8.4s
+ frintp v6.2d, v8.2d
+ frintp v4.2s, v0.2s
+
+// CHECK: frintp v6.4s, v8.4s // encoding: [0x06,0x89,0xa1,0x4e]
+// CHECK: frintp v6.2d, v8.2d // encoding: [0x06,0x89,0xe1,0x4e]
+// CHECK: frintp v4.2s, v0.2s // encoding: [0x04,0x88,0xa1,0x0e]
+
+ frintm v6.4s, v8.4s
+ frintm v6.2d, v8.2d
+ frintm v4.2s, v0.2s
+
+// CHECK: frintm v6.4s, v8.4s // encoding: [0x06,0x99,0x21,0x4e]
+// CHECK: frintm v6.2d, v8.2d // encoding: [0x06,0x99,0x61,0x4e]
+// CHECK: frintm v4.2s, v0.2s // encoding: [0x04,0x98,0x21,0x0e]
+
+ frintx v6.4s, v8.4s
+ frintx v6.2d, v8.2d
+ frintx v4.2s, v0.2s
+
+// CHECK: frintx v6.4s, v8.4s // encoding: [0x06,0x99,0x21,0x6e]
+// CHECK: frintx v6.2d, v8.2d // encoding: [0x06,0x99,0x61,0x6e]
+// CHECK: frintx v4.2s, v0.2s // encoding: [0x04,0x98,0x21,0x2e]
+
+ frintz v6.4s, v8.4s
+ frintz v6.2d, v8.2d
+ frintz v4.2s, v0.2s
+
+// CHECK: frintz v6.4s, v8.4s // encoding: [0x06,0x99,0xa1,0x4e]
+// CHECK: frintz v6.2d, v8.2d // encoding: [0x06,0x99,0xe1,0x4e]
+// CHECK: frintz v4.2s, v0.2s // encoding: [0x04,0x98,0xa1,0x0e]
+
+ frinti v6.4s, v8.4s
+ frinti v6.2d, v8.2d
+ frinti v4.2s, v0.2s
+
+// CHECK: frinti v6.4s, v8.4s // encoding: [0x06,0x99,0xa1,0x6e]
+// CHECK: frinti v6.2d, v8.2d // encoding: [0x06,0x99,0xe1,0x6e]
+// CHECK: frinti v4.2s, v0.2s // encoding: [0x04,0x98,0xa1,0x2e]
+
+//------------------------------------------------------------------------------
+// Floating-point convert to integer
+//------------------------------------------------------------------------------
+
+ fcvtns v6.4s, v8.4s
+ fcvtns v6.2d, v8.2d
+ fcvtns v4.2s, v0.2s
+
+// CHECK: fcvtns v6.4s, v8.4s // encoding: [0x06,0xa9,0x21,0x4e]
+// CHECK: fcvtns v6.2d, v8.2d // encoding: [0x06,0xa9,0x61,0x4e]
+// CHECK: fcvtns v4.2s, v0.2s // encoding: [0x04,0xa8,0x21,0x0e]
+
+ fcvtnu v6.4s, v8.4s
+ fcvtnu v6.2d, v8.2d
+ fcvtnu v4.2s, v0.2s
+
+// CHECK: fcvtnu v6.4s, v8.4s // encoding: [0x06,0xa9,0x21,0x6e]
+// CHECK: fcvtnu v6.2d, v8.2d // encoding: [0x06,0xa9,0x61,0x6e]
+// CHECK: fcvtnu v4.2s, v0.2s // encoding: [0x04,0xa8,0x21,0x2e]
+
+ fcvtps v6.4s, v8.4s
+ fcvtps v6.2d, v8.2d
+ fcvtps v4.2s, v0.2s
+
+// CHECK: fcvtps v6.4s, v8.4s // encoding: [0x06,0xa9,0xa1,0x4e]
+// CHECK: fcvtps v6.2d, v8.2d // encoding: [0x06,0xa9,0xe1,0x4e]
+// CHECK: fcvtps v4.2s, v0.2s // encoding: [0x04,0xa8,0xa1,0x0e]
+
+ fcvtpu v6.4s, v8.4s
+ fcvtpu v6.2d, v8.2d
+ fcvtpu v4.2s, v0.2s
+
+// CHECK: fcvtpu v6.4s, v8.4s // encoding: [0x06,0xa9,0xa1,0x6e]
+// CHECK: fcvtpu v6.2d, v8.2d // encoding: [0x06,0xa9,0xe1,0x6e]
+// CHECK: fcvtpu v4.2s, v0.2s // encoding: [0x04,0xa8,0xa1,0x2e]
+
+ fcvtms v6.4s, v8.4s
+ fcvtms v6.2d, v8.2d
+ fcvtms v4.2s, v0.2s
+
+// CHECK: fcvtms v6.4s, v8.4s // encoding: [0x06,0xb9,0x21,0x4e]
+// CHECK: fcvtms v6.2d, v8.2d // encoding: [0x06,0xb9,0x61,0x4e]
+// CHECK: fcvtms v4.2s, v0.2s // encoding: [0x04,0xb8,0x21,0x0e]
+
+ fcvtmu v6.4s, v8.4s
+ fcvtmu v6.2d, v8.2d
+ fcvtmu v4.2s, v0.2s
+
+// CHECK: fcvtmu v6.4s, v8.4s // encoding: [0x06,0xb9,0x21,0x6e]
+// CHECK: fcvtmu v6.2d, v8.2d // encoding: [0x06,0xb9,0x61,0x6e]
+// CHECK: fcvtmu v4.2s, v0.2s // encoding: [0x04,0xb8,0x21,0x2e]
+
+ fcvtzs v6.4s, v8.4s
+ fcvtzs v6.2d, v8.2d
+ fcvtzs v4.2s, v0.2s
+
+// CHECK: fcvtzs v6.4s, v8.4s // encoding: [0x06,0xb9,0xa1,0x4e]
+// CHECK: fcvtzs v6.2d, v8.2d // encoding: [0x06,0xb9,0xe1,0x4e]
+// CHECK: fcvtzs v4.2s, v0.2s // encoding: [0x04,0xb8,0xa1,0x0e]
+
+
+ fcvtzu v6.4s, v8.4s
+ fcvtzu v6.2d, v8.2d
+ fcvtzu v4.2s, v0.2s
+
+// CHECK: fcvtzu v6.4s, v8.4s // encoding: [0x06,0xb9,0xa1,0x6e]
+// CHECK: fcvtzu v6.2d, v8.2d // encoding: [0x06,0xb9,0xe1,0x6e]
+// CHECK: fcvtzu v4.2s, v0.2s // encoding: [0x04,0xb8,0xa1,0x2e]
+
+ fcvtas v6.4s, v8.4s
+ fcvtas v6.2d, v8.2d
+ fcvtas v4.2s, v0.2s
+
+// CHECK: fcvtas v6.4s, v8.4s // encoding: [0x06,0xc9,0x21,0x4e]
+// CHECK: fcvtas v6.2d, v8.2d // encoding: [0x06,0xc9,0x61,0x4e]
+// CHECK: fcvtas v4.2s, v0.2s // encoding: [0x04,0xc8,0x21,0x0e]
+
+ fcvtau v6.4s, v8.4s
+ fcvtau v6.2d, v8.2d
+ fcvtau v4.2s, v0.2s
+
+// CHECK: fcvtau v6.4s, v8.4s // encoding: [0x06,0xc9,0x21,0x6e]
+// CHECK: fcvtau v6.2d, v8.2d // encoding: [0x06,0xc9,0x61,0x6e]
+// CHECK: fcvtau v4.2s, v0.2s // encoding: [0x04,0xc8,0x21,0x2e]
+
+ urecpe v6.4s, v8.4s
+ urecpe v4.2s, v0.2s
+
+// CHECK: urecpe v6.4s, v8.4s // encoding: [0x06,0xc9,0xa1,0x4e]
+// CHECK: urecpe v4.2s, v0.2s // encoding: [0x04,0xc8,0xa1,0x0e]
+
+ ursqrte v6.4s, v8.4s
+ ursqrte v4.2s, v0.2s
+
+// CHECK: ursqrte v6.4s, v8.4s // encoding: [0x06,0xc9,0xa1,0x6e]
+// CHECK: ursqrte v4.2s, v0.2s // encoding: [0x04,0xc8,0xa1,0x2e]
+
+ scvtf v6.4s, v8.4s
+ scvtf v6.2d, v8.2d
+ scvtf v4.2s, v0.2s
+
+// CHECK: scvtf v6.4s, v8.4s // encoding: [0x06,0xd9,0x21,0x4e]
+// CHECK: scvtf v6.2d, v8.2d // encoding: [0x06,0xd9,0x61,0x4e]
+// CHECK: scvtf v4.2s, v0.2s // encoding: [0x04,0xd8,0x21,0x0e]
+
+ ucvtf v6.4s, v8.4s
+ ucvtf v6.2d, v8.2d
+ ucvtf v4.2s, v0.2s
+
+// CHECK: ucvtf v6.4s, v8.4s // encoding: [0x06,0xd9,0x21,0x6e]
+// CHECK: ucvtf v6.2d, v8.2d // encoding: [0x06,0xd9,0x61,0x6e]
+// CHECK: ucvtf v4.2s, v0.2s // encoding: [0x04,0xd8,0x21,0x2e]
+
+ frecpe v6.4s, v8.4s
+ frecpe v6.2d, v8.2d
+ frecpe v4.2s, v0.2s
+
+// CHECK: frecpe v6.4s, v8.4s // encoding: [0x06,0xd9,0xa1,0x4e]
+// CHECK: frecpe v6.2d, v8.2d // encoding: [0x06,0xd9,0xe1,0x4e]
+// CHECK: frecpe v4.2s, v0.2s // encoding: [0x04,0xd8,0xa1,0x0e]
+
+ frsqrte v6.4s, v8.4s
+ frsqrte v6.2d, v8.2d
+ frsqrte v4.2s, v0.2s
+
+// CHECK: frsqrte v6.4s, v8.4s // encoding: [0x06,0xd9,0xa1,0x6e]
+// CHECK: frsqrte v6.2d, v8.2d // encoding: [0x06,0xd9,0xe1,0x6e]
+// CHECK: frsqrte v4.2s, v0.2s // encoding: [0x04,0xd8,0xa1,0x2e]
+
+ fsqrt v6.4s, v8.4s
+ fsqrt v6.2d, v8.2d
+ fsqrt v4.2s, v0.2s
+
+// CHECK: fsqrt v6.4s, v8.4s // encoding: [0x06,0xf9,0xa1,0x6e]
+// CHECK: fsqrt v6.2d, v8.2d // encoding: [0x06,0xf9,0xe1,0x6e]
+// CHECK: fsqrt v4.2s, v0.2s // encoding: [0x04,0xf8,0xa1,0x2e]
+
+