diff options
author | Chad Rosier <mcrosier@codeaurora.org> | 2013-11-12 19:13:08 +0000 |
---|---|---|
committer | Chad Rosier <mcrosier@codeaurora.org> | 2013-11-12 19:13:08 +0000 |
commit | 13c83a2a09a0842ff57ec020fe3f534de766ccd1 (patch) | |
tree | 6a1897904b0179913e91d404e6d139aa733f1e79 /test/MC/Disassembler | |
parent | 3e94418e857d5e17b5d16dbc5abc8b5a8b4efac6 (diff) | |
download | external_llvm-13c83a2a09a0842ff57ec020fe3f534de766ccd1.zip external_llvm-13c83a2a09a0842ff57ec020fe3f534de766ccd1.tar.gz external_llvm-13c83a2a09a0842ff57ec020fe3f534de766ccd1.tar.bz2 |
[AArch64] Implemented AdvSIMD scalar x indexed element format and AdvSIMD scalar
copy in MC layer. Added the MC layer tests. Fixed triple setting in test cases.
Patch by Ana Pazos <apazos@codeaurora.org>.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194501 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/MC/Disassembler')
-rw-r--r-- | test/MC/Disassembler/AArch64/neon-instructions.txt | 213 |
1 files changed, 213 insertions, 0 deletions
diff --git a/test/MC/Disassembler/AArch64/neon-instructions.txt b/test/MC/Disassembler/AArch64/neon-instructions.txt index 2f53375..b9ea7c1 100644 --- a/test/MC/Disassembler/AArch64/neon-instructions.txt +++ b/test/MC/Disassembler/AArch64/neon-instructions.txt @@ -2174,3 +2174,216 @@ G# RUN: llvm-mc -triple aarch64-none-linux-gnu -mattr=+neon -disassemble < %s | 0x28,0x78,0x82,0x0e 0x19,0x78,0x82,0x4e 0x0a,0x78,0xc2,0x4e + +#---------------------------------------------------------------------- +# Scalar Floating Point multiply (scalar, by element) +#---------------------------------------------------------------------- +# CHECK: fmul s0, s1, v1.s[0] +# CHECK: fmul s0, s1, v1.s[3] +# CHECK: fmul d0, d1, v1.d[0] +# CHECK: fmul d0, d1, v1.d[1] +# CHECK: fmul d15, d15, v15.d[1] +0x20 0x90 0x81 0x5f +0x20 0x98 0xa1 0x5f +0x20 0x90 0xc1 0x5f +0x20 0x98 0xc1 0x5f +0xef 0x99 0xcf 0x5f + +#---------------------------------------------------------------------- +# Scalar Floating Point multiply extended (scalar, by element) +#---------------------------------------------------------------------- +# CHECK: fmulx s3, s5, v7.s[0] +# CHECK: fmulx s3, s5, v7.s[3] +# CHECK: fmulx s3, s5, v15.s[3] +# CHECK: fmulx d0, d4, v8.d[0] +# CHECK: fmulx d0, d4, v8.d[1] +0xa3 0x90 0x87 0x7f +0xa3 0x98 0xa7 0x7f +0xa3 0x98 0xaf 0x7f +0x80 0x90 0xc8 0x7f +0x80 0x98 0xc8 0x7f + +#---------------------------------------------------------------------- +# Scalar Floating Point fused multiply-add (scalar, by element) +#---------------------------------------------------------------------- +# CHECK: fmla s0, s1, v1.s[0] +# CHECK: fmla s0, s1, v1.s[3] +# CHECK: fmla d0, d1, v1.d[0] +# CHECK: fmla d0, d1, v1.d[1] +# CHECK: fmla d15, d15, v15.d[1] +0x20 0x10 0x81 0x5f +0x20 0x18 0xa1 0x5f +0x20 0x10 0xc1 0x5f +0x20 0x18 0xc1 0x5f +0xef 0x19 0xcf 0x5f + +#---------------------------------------------------------------------- +# Scalar Floating Point fused multiply-sub (scalar, by element) +#---------------------------------------------------------------------- +# CHECK: fmls s3, s5, v7.s[0] +# CHECK: fmls s3, s5, v7.s[3] +# CHECK: fmls s3, s5, v15.s[3] +# CHECK: fmls d0, d4, v8.d[0] +# CHECK: fmls d0, d4, v8.d[1] +0xa3 0x50 0x87 0x5f +0xa3 0x58 0xa7 0x5f +0xa3 0x58 0xaf 0x5f +0x80 0x50 0xc8 0x5f +0x80 0x58 0xc8 0x5f + +#---------------------------------------------------------------------- +# Scalar Signed saturating doubling +# multiply-add long (scalar, by element) +#---------------------------------------------------------------------- +# CHECK: sqdmlal s0, h0, v0.h[0] +# CHECK: sqdmlal s0, h0, v0.h[1] +# CHECK: sqdmlal s0, h0, v0.h[2] +# CHECK: sqdmlal s0, h0, v0.h[3] +# CHECK: sqdmlal s0, h0, v0.h[4] +# CHECK: sqdmlal s0, h0, v0.h[5] +# CHECK: sqdmlal s0, h0, v0.h[6] +# CHECK: sqdmlal s0, h0, v0.h[7] +# CHECK: sqdmlal d8, s9, v15.s[0] +# CHECK: sqdmlal d8, s9, v15.s[1] +# CHECK: sqdmlal d8, s9, v15.s[2] +# CHECK: sqdmlal d8, s9, v15.s[3] +0x00 0x30 0x40 0x5f +0x00 0x30 0x50 0x5f +0x00 0x30 0x60 0x5f +0x00 0x30 0x70 0x5f +0x00 0x38 0x40 0x5f +0x00 0x38 0x50 0x5f +0x00 0x38 0x60 0x5f +0x00 0x38 0x70 0x5f +0x28 0x31 0x8f 0x5f +0x28 0x31 0xaf 0x5f +0x28 0x39 0x8f 0x5f +0x28 0x39 0xaf 0x5f + +#---------------------------------------------------------------------- +# Scalar Signed saturating doubling +# multiply-sub long (scalar, by element) +#---------------------------------------------------------------------- +# CHECK: sqdmlsl s0, h0, v0.h[0] +# CHECK: sqdmlsl s0, h0, v0.h[1] +# CHECK: sqdmlsl s0, h0, v0.h[2] +# CHECK: sqdmlsl s0, h0, v0.h[3] +# CHECK: sqdmlsl s0, h0, v0.h[4] +# CHECK: sqdmlsl s0, h0, v0.h[5] +# CHECK: sqdmlsl s0, h0, v0.h[6] +# CHECK: sqdmlsl s0, h0, v0.h[7] +# CHECK: sqdmlsl d8, s9, v15.s[0] +# CHECK: sqdmlsl d8, s9, v15.s[1] +# CHECK: sqdmlsl d8, s9, v15.s[2] +# CHECK: sqdmlsl d8, s9, v15.s[3] +0x00 0x70 0x40 0x5f +0x00 0x70 0x50 0x5f +0x00 0x70 0x60 0x5f +0x00 0x70 0x70 0x5f +0x00 0x78 0x40 0x5f +0x00 0x78 0x50 0x5f +0x00 0x78 0x60 0x5f +0x00 0x78 0x70 0x5f +0x28 0x71 0x8f 0x5f +0x28 0x71 0xaf 0x5f +0x28 0x79 0x8f 0x5f +0x28 0x79 0xaf 0x5f + +#---------------------------------------------------------------------- +# Scalar Signed saturating doubling multiply long (scalar, by element) +#---------------------------------------------------------------------- +# CHECK: sqdmull s1, h1, v1.h[0] +# CHECK: sqdmull s1, h1, v1.h[1] +# CHECK: sqdmull s1, h1, v1.h[2] +# CHECK: sqdmull s1, h1, v1.h[3] +# CHECK: sqdmull s1, h1, v1.h[4] +# CHECK: sqdmull s1, h1, v1.h[5] +# CHECK: sqdmull s1, h1, v1.h[6] +# CHECK: sqdmull s1, h1, v1.h[7] +# CHECK: sqdmull d1, s1, v4.s[0] +# CHECK: sqdmull d1, s1, v4.s[1] +# CHECK: sqdmull d1, s1, v4.s[2] +# CHECK: sqdmull d1, s1, v4.s[3] +0x21 0xb0 0x41 0x5f +0x21 0xb0 0x51 0x5f +0x21 0xb0 0x61 0x5f +0x21 0xb0 0x71 0x5f +0x21 0xb8 0x41 0x5f +0x21 0xb8 0x51 0x5f +0x21 0xb8 0x61 0x5f +0x21 0xb8 0x71 0x5f +0x21 0xb0 0x84 0x5f +0x21 0xb0 0xa4 0x5f +0x21 0xb8 0x84 0x5f +0x21 0xb8 0xa4 0x5f + +#---------------------------------------------------------------------- +# Scalar Signed saturating doubling multiply returning +# high half (scalar, by element) +#---------------------------------------------------------------------- +# CHECK: sqdmulh h7, h1, v14.h[0] +# CHECK: sqdmulh h7, h15, v8.h[1] +# CHECK: sqdmulh h7, h15, v8.h[2] +# CHECK: sqdmulh h7, h15, v8.h[3] +# CHECK: sqdmulh h7, h15, v8.h[4] +# CHECK: sqdmulh h7, h15, v8.h[5] +# CHECK: sqdmulh h7, h15, v8.h[6] +# CHECK: sqdmulh h7, h15, v8.h[7] +# CHECK: sqdmulh s15, s3, v4.s[0] +# CHECK: sqdmulh s15, s14, v16.s[1] +# CHECK: sqdmulh s15, s15, v16.s[2] +# CHECK: sqdmulh s15, s16, v17.s[3] +0x27 0xc0 0x4e 0x5f +0xe7 0xc1 0x58 0x5f +0xe7 0xc1 0x68 0x5f +0xe7 0xc1 0x78 0x5f +0xe7 0xc9 0x48 0x5f +0xe7 0xc9 0x58 0x5f +0xe7 0xc9 0x68 0x5f +0xe7 0xc9 0x78 0x5f +0x6f 0xc0 0x84 0x5f +0xcf 0xc1 0xb0 0x5f +0xef 0xc9 0x90 0x5f +0x0f 0xca 0xb1 0x5f + +#---------------------------------------------------------------------- +# Scalar Signed saturating rounding doubling multiply +# returning high half (scalar, by element) +#---------------------------------------------------------------------- +# CHECK: sqrdmulh h7, h1, v14.h[0] +# CHECK: sqrdmulh h7, h15, v8.h[1] +# CHECK: sqrdmulh h7, h15, v8.h[2] +# CHECK: sqrdmulh h7, h15, v8.h[3] +# CHECK: sqrdmulh h7, h15, v8.h[4] +# CHECK: sqrdmulh h7, h15, v8.h[5] +# CHECK: sqrdmulh h7, h15, v8.h[6] +# CHECK: sqrdmulh h7, h15, v8.h[7] +# CHECK: sqrdmulh s15, s3, v4.s[0] +# CHECK: sqrdmulh s15, s14, v16.s[1] +# CHECK: sqrdmulh s15, s15, v16.s[2] +# CHECK: sqrdmulh s15, s16, v17.s[3] +0x27 0xd0 0x4e 0x5f +0xe7 0xd1 0x58 0x5f +0xe7 0xd1 0x68 0x5f +0xe7 0xd1 0x78 0x5f +0xe7 0xd9 0x48 0x5f +0xe7 0xd9 0x58 0x5f +0xe7 0xd9 0x68 0x5f +0xe7 0xd9 0x78 0x5f +0x6f 0xd0 0x84 0x5f +0xcf 0xd1 0xb0 0x5f +0xef 0xd9 0x90 0x5f +0x0f 0xda 0xb1 0x5f + +#---------------------------------------------------------------------- +#Duplicate element (scalar) +#---------------------------------------------------------------------- +# CHECK: dup b0, v0.b[15] +# CHECK: dup h2, v31.h[5] +# CHECK: dup s17, v2.s[2] +# CHECK: dup d6, v12.d[1] +0x00 0x04 0x1f 0x5e +0xe2 0x07 0x16 0x5e +0x51 0x04 0x14 0x5e +0x86 0x05 0x18 0x5e + |