diff options
Diffstat (limited to 'test/MC/AArch64/neon-across.s')
-rw-r--r-- | test/MC/AArch64/neon-across.s | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/test/MC/AArch64/neon-across.s b/test/MC/AArch64/neon-across.s new file mode 100644 index 000000000000..8b1c2d421ba6 --- /dev/null +++ b/test/MC/AArch64/neon-across.s @@ -0,0 +1,101 @@ +// RUN: llvm-mc -triple=aarch64 -mattr=+neon -show-encoding < %s | FileCheck %s + +// Check that the assembler can handle the documented syntax for AArch64 + +//------------------------------------------------------------------------------ +// Instructions across vector registers +//------------------------------------------------------------------------------ + + saddlv h0, v1.8b + saddlv h0, v1.16b + saddlv s0, v1.4h + saddlv s0, v1.8h + saddlv d0, v1.4s + +// CHECK: saddlv h0, v1.8b // encoding: [0x20,0x38,0x30,0x0e] +// CHECK: saddlv h0, v1.16b // encoding: [0x20,0x38,0x30,0x4e] +// CHECK: saddlv s0, v1.4h // encoding: [0x20,0x38,0x70,0x0e] +// CHECK: saddlv s0, v1.8h // encoding: [0x20,0x38,0x70,0x4e] +// CHECK: saddlv d0, v1.4s // encoding: [0x20,0x38,0xb0,0x4e] + + uaddlv h0, v1.8b + uaddlv h0, v1.16b + uaddlv s0, v1.4h + uaddlv s0, v1.8h + uaddlv d0, v1.4s + +// CHECK: uaddlv h0, v1.8b // encoding: [0x20,0x38,0x30,0x2e] +// CHECK: uaddlv h0, v1.16b // encoding: [0x20,0x38,0x30,0x6e] +// CHECK: uaddlv s0, v1.4h // encoding: [0x20,0x38,0x70,0x2e] +// CHECK: uaddlv s0, v1.8h // encoding: [0x20,0x38,0x70,0x6e] +// CHECK: uaddlv d0, v1.4s // encoding: [0x20,0x38,0xb0,0x6e] + + smaxv b0, v1.8b + smaxv b0, v1.16b + smaxv h0, v1.4h + smaxv h0, v1.8h + smaxv s0, v1.4s + +// CHECK: smaxv b0, v1.8b // encoding: [0x20,0xa8,0x30,0x0e] +// CHECK: smaxv b0, v1.16b // encoding: [0x20,0xa8,0x30,0x4e] +// CHECK: smaxv h0, v1.4h // encoding: [0x20,0xa8,0x70,0x0e] +// CHECK: smaxv h0, v1.8h // encoding: [0x20,0xa8,0x70,0x4e] +// CHECK: smaxv s0, v1.4s // encoding: [0x20,0xa8,0xb0,0x4e] + + sminv b0, v1.8b + sminv b0, v1.16b + sminv h0, v1.4h + sminv h0, v1.8h + sminv s0, v1.4s + +// CHECK: sminv b0, v1.8b // encoding: [0x20,0xa8,0x31,0x0e] +// CHECK: sminv b0, v1.16b // encoding: [0x20,0xa8,0x31,0x4e] +// CHECK: sminv h0, v1.4h // encoding: [0x20,0xa8,0x71,0x0e] +// CHECK: sminv h0, v1.8h // encoding: [0x20,0xa8,0x71,0x4e] +// CHECK: sminv s0, v1.4s // encoding: [0x20,0xa8,0xb1,0x4e] + + umaxv b0, v1.8b + umaxv b0, v1.16b + umaxv h0, v1.4h + umaxv h0, v1.8h + umaxv s0, v1.4s + +// CHECK: umaxv b0, v1.8b // encoding: [0x20,0xa8,0x30,0x2e] +// CHECK: umaxv b0, v1.16b // encoding: [0x20,0xa8,0x30,0x6e] +// CHECK: umaxv h0, v1.4h // encoding: [0x20,0xa8,0x70,0x2e] +// CHECK: umaxv h0, v1.8h // encoding: [0x20,0xa8,0x70,0x6e] +// CHECK: umaxv s0, v1.4s // encoding: [0x20,0xa8,0xb0,0x6e] + + uminv b0, v1.8b + uminv b0, v1.16b + uminv h0, v1.4h + uminv h0, v1.8h + uminv s0, v1.4s + +// CHECK: uminv b0, v1.8b // encoding: [0x20,0xa8,0x31,0x2e] +// CHECK: uminv b0, v1.16b // encoding: [0x20,0xa8,0x31,0x6e] +// CHECK: uminv h0, v1.4h // encoding: [0x20,0xa8,0x71,0x2e] +// CHECK: uminv h0, v1.8h // encoding: [0x20,0xa8,0x71,0x6e] +// CHECK: uminv s0, v1.4s // encoding: [0x20,0xa8,0xb1,0x6e] + + addv b0, v1.8b + addv b0, v1.16b + addv h0, v1.4h + addv h0, v1.8h + addv s0, v1.4s + +// CHECK: addv b0, v1.8b // encoding: [0x20,0xb8,0x31,0x0e] +// CHECK: addv b0, v1.16b // encoding: [0x20,0xb8,0x31,0x4e] +// CHECK: addv h0, v1.4h // encoding: [0x20,0xb8,0x71,0x0e] +// CHECK: addv h0, v1.8h // encoding: [0x20,0xb8,0x71,0x4e] +// CHECK: addv s0, v1.4s // encoding: [0x20,0xb8,0xb1,0x4e] + + fmaxnmv s0, v1.4s + fminnmv s0, v1.4s + fmaxv s0, v1.4s + fminv s0, v1.4s + +// CHECK: fmaxnmv s0, v1.4s // encoding: [0x20,0xc8,0x30,0x6e] +// CHECK: fminnmv s0, v1.4s // encoding: [0x20,0xc8,0xb0,0x6e] +// CHECK: fmaxv s0, v1.4s // encoding: [0x20,0xf8,0x30,0x6e] +// CHECK: fminv s0, v1.4s // encoding: [0x20,0xf8,0xb0,0x6e] |