diff options
author | Kevin Qin <Kevin.Qin@arm.com> | 2013-11-14 06:45:17 +0000 |
---|---|---|
committer | Kevin Qin <Kevin.Qin@arm.com> | 2013-11-14 06:45:17 +0000 |
commit | 27df434c5e8c78e8b3e6e9596b55a6a6bd8d5116 (patch) | |
tree | d263502983aca5bd413828d8027419dcb2cf91b9 /test/MC | |
parent | 2bdf881ee403c0493acdb3253bc697f3bd914cca (diff) | |
download | external_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.s | 646 |
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] + + |