diff options
Diffstat (limited to 'test/MC/AArch64/arm64-advsimd.s')
-rw-r--r-- | test/MC/AArch64/arm64-advsimd.s | 1997 |
1 files changed, 1997 insertions, 0 deletions
diff --git a/test/MC/AArch64/arm64-advsimd.s b/test/MC/AArch64/arm64-advsimd.s new file mode 100644 index 0000000..c627de7 --- /dev/null +++ b/test/MC/AArch64/arm64-advsimd.s @@ -0,0 +1,1997 @@ +; RUN: llvm-mc -triple arm64-apple-darwin -mattr=crypto -output-asm-variant=1 -show-encoding < %s | FileCheck %s + +foo: + + abs.8b v0, v0 + abs.16b v0, v0 + abs.4h v0, v0 + abs.8h v0, v0 + abs.2s v0, v0 + abs.4s v0, v0 + +; CHECK: abs.8b v0, v0 ; encoding: [0x00,0xb8,0x20,0x0e] +; CHECK: abs.16b v0, v0 ; encoding: [0x00,0xb8,0x20,0x4e] +; CHECK: abs.4h v0, v0 ; encoding: [0x00,0xb8,0x60,0x0e] +; CHECK: abs.8h v0, v0 ; encoding: [0x00,0xb8,0x60,0x4e] +; CHECK: abs.2s v0, v0 ; encoding: [0x00,0xb8,0xa0,0x0e] +; CHECK: abs.4s v0, v0 ; encoding: [0x00,0xb8,0xa0,0x4e] + + add.8b v0, v0, v0 + add.16b v0, v0, v0 + add.4h v0, v0, v0 + add.8h v0, v0, v0 + add.2s v0, v0, v0 + add.4s v0, v0, v0 + add.2d v0, v0, v0 + +; CHECK: add.8b v0, v0, v0 ; encoding: [0x00,0x84,0x20,0x0e] +; CHECK: add.16b v0, v0, v0 ; encoding: [0x00,0x84,0x20,0x4e] +; CHECK: add.4h v0, v0, v0 ; encoding: [0x00,0x84,0x60,0x0e] +; CHECK: add.8h v0, v0, v0 ; encoding: [0x00,0x84,0x60,0x4e] +; CHECK: add.2s v0, v0, v0 ; encoding: [0x00,0x84,0xa0,0x0e] +; CHECK: add.4s v0, v0, v0 ; encoding: [0x00,0x84,0xa0,0x4e] +; CHECK: add.2d v0, v0, v0 ; encoding: [0x00,0x84,0xe0,0x4e] + + add d1, d2, d3 + +; CHECK: add d1, d2, d3 ; encoding: [0x41,0x84,0xe3,0x5e] + + addhn.8b v0, v0, v0 + addhn2.16b v0, v0, v0 + addhn.4h v0, v0, v0 + addhn2.8h v0, v0, v0 + addhn.2s v0, v0, v0 + addhn2.4s v0, v0, v0 + +; CHECK: addhn.8b v0, v0, v0 ; encoding: [0x00,0x40,0x20,0x0e] +; CHECK: addhn2.16b v0, v0, v0 ; encoding: [0x00,0x40,0x20,0x4e] +; CHECK: addhn.4h v0, v0, v0 ; encoding: [0x00,0x40,0x60,0x0e] +; CHECK: addhn2.8h v0, v0, v0 ; encoding: [0x00,0x40,0x60,0x4e] +; CHECK: addhn.2s v0, v0, v0 ; encoding: [0x00,0x40,0xa0,0x0e] +; CHECK: addhn2.4s v0, v0, v0 ; encoding: [0x00,0x40,0xa0,0x4e] + + addp.8b v0, v0, v0 + addp.16b v0, v0, v0 + addp.4h v0, v0, v0 + addp.8h v0, v0, v0 + addp.2s v0, v0, v0 + addp.4s v0, v0, v0 + addp.2d v0, v0, v0 + +; CHECK: addp.8b v0, v0, v0 ; encoding: [0x00,0xbc,0x20,0x0e] +; CHECK: addp.16b v0, v0, v0 ; encoding: [0x00,0xbc,0x20,0x4e] +; CHECK: addp.4h v0, v0, v0 ; encoding: [0x00,0xbc,0x60,0x0e] +; CHECK: addp.8h v0, v0, v0 ; encoding: [0x00,0xbc,0x60,0x4e] +; CHECK: addp.2s v0, v0, v0 ; encoding: [0x00,0xbc,0xa0,0x0e] +; CHECK: addp.4s v0, v0, v0 ; encoding: [0x00,0xbc,0xa0,0x4e] +; CHECK: addp.2d v0, v0, v0 ; encoding: [0x00,0xbc,0xe0,0x4e] + + addp.2d d0, v0 + +; CHECK: addp.2d d0, v0 ; encoding: [0x00,0xb8,0xf1,0x5e] + + addv.8b b0, v0 + addv.16b b0, v0 + addv.4h h0, v0 + addv.8h h0, v0 + addv.4s s0, v0 + +; CHECK: addv.8b b0, v0 ; encoding: [0x00,0xb8,0x31,0x0e] +; CHECK: addv.16b b0, v0 ; encoding: [0x00,0xb8,0x31,0x4e] +; CHECK: addv.4h h0, v0 ; encoding: [0x00,0xb8,0x71,0x0e] +; CHECK: addv.8h h0, v0 ; encoding: [0x00,0xb8,0x71,0x4e] +; CHECK: addv.4s s0, v0 ; encoding: [0x00,0xb8,0xb1,0x4e] + + +; INS/DUP + dup.2d v0, x3 + dup.4s v0, w3 + dup.2s v0, w3 + dup.8h v0, w3 + dup.4h v0, w3 + dup.16b v0, w3 + dup.8b v0, w3 + + dup v1.2d, x3 + dup v2.4s, w4 + dup v3.2s, w5 + dup v4.8h, w6 + dup v5.4h, w7 + dup v6.16b, w8 + dup v7.8b, w9 + +; CHECK: dup.2d v0, x3 ; encoding: [0x60,0x0c,0x08,0x4e] +; CHECK: dup.4s v0, w3 ; encoding: [0x60,0x0c,0x04,0x4e] +; CHECK: dup.2s v0, w3 ; encoding: [0x60,0x0c,0x04,0x0e] +; CHECK: dup.8h v0, w3 ; encoding: [0x60,0x0c,0x02,0x4e] +; CHECK: dup.4h v0, w3 ; encoding: [0x60,0x0c,0x02,0x0e] +; CHECK: dup.16b v0, w3 ; encoding: [0x60,0x0c,0x01,0x4e] +; CHECK: dup.8b v0, w3 ; encoding: [0x60,0x0c,0x01,0x0e] + +; CHECK: dup.2d v1, x3 ; encoding: [0x61,0x0c,0x08,0x4e] +; CHECK: dup.4s v2, w4 ; encoding: [0x82,0x0c,0x04,0x4e] +; CHECK: dup.2s v3, w5 ; encoding: [0xa3,0x0c,0x04,0x0e] +; CHECK: dup.8h v4, w6 ; encoding: [0xc4,0x0c,0x02,0x4e] +; CHECK: dup.4h v5, w7 ; encoding: [0xe5,0x0c,0x02,0x0e] +; CHECK: dup.16b v6, w8 ; encoding: [0x06,0x0d,0x01,0x4e] +; CHECK: dup.8b v7, w9 ; encoding: [0x27,0x0d,0x01,0x0e] + + dup.2d v0, v3[1] + dup.2s v0, v3[1] + dup.4s v0, v3[1] + dup.4h v0, v3[1] + dup.8h v0, v3[1] + dup.8b v0, v3[1] + dup.16b v0, v3[1] + + dup v7.2d, v9.d[1] + dup v6.2s, v8.s[1] + dup v5.4s, v7.s[2] + dup v4.4h, v6.h[3] + dup v3.8h, v5.h[4] + dup v2.8b, v4.b[5] + dup v1.16b, v3.b[6] + +; CHECK: dup.2d v0, v3[1] ; encoding: [0x60,0x04,0x18,0x4e] +; CHECK: dup.2s v0, v3[1] ; encoding: [0x60,0x04,0x0c,0x0e] +; CHECK: dup.4s v0, v3[1] ; encoding: [0x60,0x04,0x0c,0x4e] +; CHECK: dup.4h v0, v3[1] ; encoding: [0x60,0x04,0x06,0x0e] +; CHECK: dup.8h v0, v3[1] ; encoding: [0x60,0x04,0x06,0x4e] +; CHECK: dup.8b v0, v3[1] ; encoding: [0x60,0x04,0x03,0x0e] +; CHECK: dup.16b v0, v3[1] ; encoding: [0x60,0x04,0x03,0x4e] + +; CHECK: dup.2d v7, v9[1] ; encoding: [0x27,0x05,0x18,0x4e] +; CHECK: dup.2s v6, v8[1] ; encoding: [0x06,0x05,0x0c,0x0e] +; CHECK: dup.4s v5, v7[2] ; encoding: [0xe5,0x04,0x14,0x4e] +; CHECK: dup.4h v4, v6[3] ; encoding: [0xc4,0x04,0x0e,0x0e] +; CHECK: dup.8h v3, v5[4] ; encoding: [0xa3,0x04,0x12,0x4e] +; CHECK: dup.8b v2, v4[5] ; encoding: [0x82,0x04,0x0b,0x0e] +; CHECK: dup.16b v1, v3[6] ; encoding: [0x61,0x04,0x0d,0x4e] + + dup b3, v4[1] + dup h3, v4[1] + dup s3, v4[1] + dup d3, v4[1] + dup b3, v4.b[1] + dup h3, v4.h[1] + dup s3, v4.s[1] + dup d3, v4.d[1] + + mov b3, v4[1] + mov h3, v4[1] + mov s3, v4[1] + mov d3, v4[1] + mov b3, v4.b[1] + mov h3, v4.h[1] + mov s3, v4.s[1] + mov d3, v4.d[1] + +; CHECK: mov b3, v4[1] ; encoding: [0x83,0x04,0x03,0x5e] +; CHECK: mov h3, v4[1] ; encoding: [0x83,0x04,0x06,0x5e] +; CHECK: mov s3, v4[1] ; encoding: [0x83,0x04,0x0c,0x5e] +; CHECK: mov d3, v4[1] ; encoding: [0x83,0x04,0x18,0x5e] +; CHECK: mov b3, v4[1] ; encoding: [0x83,0x04,0x03,0x5e] +; CHECK: mov h3, v4[1] ; encoding: [0x83,0x04,0x06,0x5e] +; CHECK: mov s3, v4[1] ; encoding: [0x83,0x04,0x0c,0x5e] +; CHECK: mov d3, v4[1] ; encoding: [0x83,0x04,0x18,0x5e] + +; CHECK: mov b3, v4[1] ; encoding: [0x83,0x04,0x03,0x5e] +; CHECK: mov h3, v4[1] ; encoding: [0x83,0x04,0x06,0x5e] +; CHECK: mov s3, v4[1] ; encoding: [0x83,0x04,0x0c,0x5e] +; CHECK: mov d3, v4[1] ; encoding: [0x83,0x04,0x18,0x5e] +; CHECK: mov b3, v4[1] ; encoding: [0x83,0x04,0x03,0x5e] +; CHECK: mov h3, v4[1] ; encoding: [0x83,0x04,0x06,0x5e] +; CHECK: mov s3, v4[1] ; encoding: [0x83,0x04,0x0c,0x5e] +; CHECK: mov d3, v4[1] ; encoding: [0x83,0x04,0x18,0x5e] + + smov.s x3, v2[2] + smov x3, v2.s[2] + umov.s w3, v2[2] + umov w3, v2.s[2] + umov.d x3, v2[1] + umov x3, v2.d[1] + +; CHECK: smov.s x3, v2[2] ; encoding: [0x43,0x2c,0x14,0x4e] +; CHECK: smov.s x3, v2[2] ; encoding: [0x43,0x2c,0x14,0x4e] +; CHECK: mov.s w3, v2[2] ; encoding: [0x43,0x3c,0x14,0x0e] +; CHECK: mov.s w3, v2[2] ; encoding: [0x43,0x3c,0x14,0x0e] +; CHECK: mov.d x3, v2[1] ; encoding: [0x43,0x3c,0x18,0x4e] +; CHECK: mov.d x3, v2[1] ; encoding: [0x43,0x3c,0x18,0x4e] + + ; MOV aliases for UMOV instructions above + + mov.s w2, v3[3] + mov w5, v7.s[2] + mov.d x11, v13[1] + mov x17, v19.d[0] + +; CHECK: mov.s w2, v3[3] ; encoding: [0x62,0x3c,0x1c,0x0e] +; CHECK: mov.s w5, v7[2] ; encoding: [0xe5,0x3c,0x14,0x0e] +; CHECK: mov.d x11, v13[1] ; encoding: [0xab,0x3d,0x18,0x4e] +; CHECK: mov.d x17, v19[0] ; encoding: [0x71,0x3e,0x08,0x4e] + + ins.d v2[1], x5 + ins.s v2[1], w5 + ins.h v2[1], w5 + ins.b v2[1], w5 + + ins v2.d[1], x5 + ins v2.s[1], w5 + ins v2.h[1], w5 + ins v2.b[1], w5 + +; CHECK: ins.d v2[1], x5 ; encoding: [0xa2,0x1c,0x18,0x4e] +; CHECK: ins.s v2[1], w5 ; encoding: [0xa2,0x1c,0x0c,0x4e] +; CHECK: ins.h v2[1], w5 ; encoding: [0xa2,0x1c,0x06,0x4e] +; CHECK: ins.b v2[1], w5 ; encoding: [0xa2,0x1c,0x03,0x4e] + +; CHECK: ins.d v2[1], x5 ; encoding: [0xa2,0x1c,0x18,0x4e] +; CHECK: ins.s v2[1], w5 ; encoding: [0xa2,0x1c,0x0c,0x4e] +; CHECK: ins.h v2[1], w5 ; encoding: [0xa2,0x1c,0x06,0x4e] +; CHECK: ins.b v2[1], w5 ; encoding: [0xa2,0x1c,0x03,0x4e] + + ins.d v2[1], v15[1] + ins.s v2[1], v15[1] + ins.h v2[1], v15[1] + ins.b v2[1], v15[1] + + ins v2.d[1], v15.d[0] + ins v2.s[3], v15.s[2] + ins v2.h[7], v15.h[3] + ins v2.b[10], v15.b[5] + +; CHECK: ins.d v2[1], v15[1] ; encoding: [0xe2,0x45,0x18,0x6e] +; CHECK: ins.s v2[1], v15[1] ; encoding: [0xe2,0x25,0x0c,0x6e] +; CHECK: ins.h v2[1], v15[1] ; encoding: [0xe2,0x15,0x06,0x6e] +; CHECK: ins.b v2[1], v15[1] ; encoding: [0xe2,0x0d,0x03,0x6e] + +; CHECK: ins.d v2[1], v15[0] ; encoding: [0xe2,0x05,0x18,0x6e] +; CHECK: ins.s v2[3], v15[2] ; encoding: [0xe2,0x45,0x1c,0x6e] +; CHECK: ins.h v2[7], v15[3] ; encoding: [0xe2,0x35,0x1e,0x6e] +; CHECK: ins.b v2[10], v15[5] ; encoding: [0xe2,0x2d,0x15,0x6e] + +; MOV aliases for the above INS instructions. + mov.d v2[1], x5 + mov.s v3[1], w6 + mov.h v4[1], w7 + mov.b v5[1], w8 + + mov v9.d[1], x2 + mov v8.s[1], w3 + mov v7.h[1], w4 + mov v6.b[1], w5 + + mov.d v1[1], v10[1] + mov.s v2[1], v11[1] + mov.h v7[1], v12[1] + mov.b v8[1], v15[1] + + mov v2.d[1], v15.d[0] + mov v7.s[3], v16.s[2] + mov v8.h[7], v17.h[3] + mov v9.b[10], v18.b[5] + +; CHECK: ins.d v2[1], x5 ; encoding: [0xa2,0x1c,0x18,0x4e] +; CHECK: ins.s v3[1], w6 ; encoding: [0xc3,0x1c,0x0c,0x4e] +; CHECK: ins.h v4[1], w7 ; encoding: [0xe4,0x1c,0x06,0x4e] +; CHECK: ins.b v5[1], w8 ; encoding: [0x05,0x1d,0x03,0x4e] +; CHECK: ins.d v9[1], x2 ; encoding: [0x49,0x1c,0x18,0x4e] +; CHECK: ins.s v8[1], w3 ; encoding: [0x68,0x1c,0x0c,0x4e] +; CHECK: ins.h v7[1], w4 ; encoding: [0x87,0x1c,0x06,0x4e] +; CHECK: ins.b v6[1], w5 ; encoding: [0xa6,0x1c,0x03,0x4e] +; CHECK: ins.d v1[1], v10[1] ; encoding: [0x41,0x45,0x18,0x6e] +; CHECK: ins.s v2[1], v11[1] ; encoding: [0x62,0x25,0x0c,0x6e] +; CHECK: ins.h v7[1], v12[1] ; encoding: [0x87,0x15,0x06,0x6e] +; CHECK: ins.b v8[1], v15[1] ; encoding: [0xe8,0x0d,0x03,0x6e] +; CHECK: ins.d v2[1], v15[0] ; encoding: [0xe2,0x05,0x18,0x6e] +; CHECK: ins.s v7[3], v16[2] ; encoding: [0x07,0x46,0x1c,0x6e] +; CHECK: ins.h v8[7], v17[3] ; encoding: [0x28,0x36,0x1e,0x6e] +; CHECK: ins.b v9[10], v18[5] ; encoding: [0x49,0x2e,0x15,0x6e] + + + and.8b v0, v0, v0 + and.16b v0, v0, v0 + +; CHECK: and.8b v0, v0, v0 ; encoding: [0x00,0x1c,0x20,0x0e] +; CHECK: and.16b v0, v0, v0 ; encoding: [0x00,0x1c,0x20,0x4e] + + bic.8b v0, v0, v0 + +; CHECK: bic.8b v0, v0, v0 ; encoding: [0x00,0x1c,0x60,0x0e] + + cmeq.8b v0, v0, v0 + cmge.8b v0, v0, v0 + cmgt.8b v0, v0, v0 + cmhi.8b v0, v0, v0 + cmhs.8b v0, v0, v0 + cmtst.8b v0, v0, v0 + fabd.2s v0, v0, v0 + facge.2s v0, v0, v0 + facgt.2s v0, v0, v0 + faddp.2s v0, v0, v0 + fadd.2s v0, v0, v0 + fcmeq.2s v0, v0, v0 + fcmge.2s v0, v0, v0 + fcmgt.2s v0, v0, v0 + fdiv.2s v0, v0, v0 + fmaxnmp.2s v0, v0, v0 + fmaxnm.2s v0, v0, v0 + fmaxp.2s v0, v0, v0 + fmax.2s v0, v0, v0 + fminnmp.2s v0, v0, v0 + fminnm.2s v0, v0, v0 + fminp.2s v0, v0, v0 + fmin.2s v0, v0, v0 + fmla.2s v0, v0, v0 + fmls.2s v0, v0, v0 + fmulx.2s v0, v0, v0 + fmul.2s v0, v0, v0 + fmulx d2, d3, d1 + fmulx s2, s3, s1 + frecps.2s v0, v0, v0 + frsqrts.2s v0, v0, v0 + fsub.2s v0, v0, v0 + mla.8b v0, v0, v0 + mls.8b v0, v0, v0 + mul.8b v0, v0, v0 + pmul.8b v0, v0, v0 + saba.8b v0, v0, v0 + sabd.8b v0, v0, v0 + shadd.8b v0, v0, v0 + shsub.8b v0, v0, v0 + smaxp.8b v0, v0, v0 + smax.8b v0, v0, v0 + sminp.8b v0, v0, v0 + smin.8b v0, v0, v0 + sqadd.8b v0, v0, v0 + sqdmulh.4h v0, v0, v0 + sqrdmulh.4h v0, v0, v0 + sqrshl.8b v0, v0, v0 + sqshl.8b v0, v0, v0 + sqsub.8b v0, v0, v0 + srhadd.8b v0, v0, v0 + srshl.8b v0, v0, v0 + sshl.8b v0, v0, v0 + sub.8b v0, v0, v0 + uaba.8b v0, v0, v0 + uabd.8b v0, v0, v0 + uhadd.8b v0, v0, v0 + uhsub.8b v0, v0, v0 + umaxp.8b v0, v0, v0 + umax.8b v0, v0, v0 + uminp.8b v0, v0, v0 + umin.8b v0, v0, v0 + uqadd.8b v0, v0, v0 + uqrshl.8b v0, v0, v0 + uqshl.8b v0, v0, v0 + uqsub.8b v0, v0, v0 + urhadd.8b v0, v0, v0 + urshl.8b v0, v0, v0 + ushl.8b v0, v0, v0 + +; CHECK: cmeq.8b v0, v0, v0 ; encoding: [0x00,0x8c,0x20,0x2e] +; CHECK: cmge.8b v0, v0, v0 ; encoding: [0x00,0x3c,0x20,0x0e] +; CHECK: cmgt.8b v0, v0, v0 ; encoding: [0x00,0x34,0x20,0x0e] +; CHECK: cmhi.8b v0, v0, v0 ; encoding: [0x00,0x34,0x20,0x2e] +; CHECK: cmhs.8b v0, v0, v0 ; encoding: [0x00,0x3c,0x20,0x2e] +; CHECK: cmtst.8b v0, v0, v0 ; encoding: [0x00,0x8c,0x20,0x0e] +; CHECK: fabd.2s v0, v0, v0 ; encoding: [0x00,0xd4,0xa0,0x2e] +; CHECK: facge.2s v0, v0, v0 ; encoding: [0x00,0xec,0x20,0x2e] +; CHECK: facgt.2s v0, v0, v0 ; encoding: [0x00,0xec,0xa0,0x2e] +; CHECK: faddp.2s v0, v0, v0 ; encoding: [0x00,0xd4,0x20,0x2e] +; CHECK: fadd.2s v0, v0, v0 ; encoding: [0x00,0xd4,0x20,0x0e] +; CHECK: fcmeq.2s v0, v0, v0 ; encoding: [0x00,0xe4,0x20,0x0e] +; CHECK: fcmge.2s v0, v0, v0 ; encoding: [0x00,0xe4,0x20,0x2e] +; CHECK: fcmgt.2s v0, v0, v0 ; encoding: [0x00,0xe4,0xa0,0x2e] +; CHECK: fdiv.2s v0, v0, v0 ; encoding: [0x00,0xfc,0x20,0x2e] +; CHECK: fmaxnmp.2s v0, v0, v0 ; encoding: [0x00,0xc4,0x20,0x2e] +; CHECK: fmaxnm.2s v0, v0, v0 ; encoding: [0x00,0xc4,0x20,0x0e] +; CHECK: fmaxp.2s v0, v0, v0 ; encoding: [0x00,0xf4,0x20,0x2e] +; CHECK: fmax.2s v0, v0, v0 ; encoding: [0x00,0xf4,0x20,0x0e] +; CHECK: fminnmp.2s v0, v0, v0 ; encoding: [0x00,0xc4,0xa0,0x2e] +; CHECK: fminnm.2s v0, v0, v0 ; encoding: [0x00,0xc4,0xa0,0x0e] +; CHECK: fminp.2s v0, v0, v0 ; encoding: [0x00,0xf4,0xa0,0x2e] +; CHECK: fmin.2s v0, v0, v0 ; encoding: [0x00,0xf4,0xa0,0x0e] +; CHECK: fmla.2s v0, v0, v0 ; encoding: [0x00,0xcc,0x20,0x0e] +; CHECK: fmls.2s v0, v0, v0 ; encoding: [0x00,0xcc,0xa0,0x0e] +; CHECK: fmulx.2s v0, v0, v0 ; encoding: [0x00,0xdc,0x20,0x0e] + +; CHECK: fmul.2s v0, v0, v0 ; encoding: [0x00,0xdc,0x20,0x2e] +; CHECK: fmulx d2, d3, d1 ; encoding: [0x62,0xdc,0x61,0x5e] +; CHECK: fmulx s2, s3, s1 ; encoding: [0x62,0xdc,0x21,0x5e] +; CHECK: frecps.2s v0, v0, v0 ; encoding: [0x00,0xfc,0x20,0x0e] +; CHECK: frsqrts.2s v0, v0, v0 ; encoding: [0x00,0xfc,0xa0,0x0e] +; CHECK: fsub.2s v0, v0, v0 ; encoding: [0x00,0xd4,0xa0,0x0e] +; CHECK: mla.8b v0, v0, v0 ; encoding: [0x00,0x94,0x20,0x0e] +; CHECK: mls.8b v0, v0, v0 ; encoding: [0x00,0x94,0x20,0x2e] +; CHECK: mul.8b v0, v0, v0 ; encoding: [0x00,0x9c,0x20,0x0e] +; CHECK: pmul.8b v0, v0, v0 ; encoding: [0x00,0x9c,0x20,0x2e] +; CHECK: saba.8b v0, v0, v0 ; encoding: [0x00,0x7c,0x20,0x0e] +; CHECK: sabd.8b v0, v0, v0 ; encoding: [0x00,0x74,0x20,0x0e] +; CHECK: shadd.8b v0, v0, v0 ; encoding: [0x00,0x04,0x20,0x0e] +; CHECK: shsub.8b v0, v0, v0 ; encoding: [0x00,0x24,0x20,0x0e] +; CHECK: smaxp.8b v0, v0, v0 ; encoding: [0x00,0xa4,0x20,0x0e] +; CHECK: smax.8b v0, v0, v0 ; encoding: [0x00,0x64,0x20,0x0e] +; CHECK: sminp.8b v0, v0, v0 ; encoding: [0x00,0xac,0x20,0x0e] +; CHECK: smin.8b v0, v0, v0 ; encoding: [0x00,0x6c,0x20,0x0e] +; CHECK: sqadd.8b v0, v0, v0 ; encoding: [0x00,0x0c,0x20,0x0e] +; CHECK: sqdmulh.4h v0, v0, v0 ; encoding: [0x00,0xb4,0x60,0x0e] +; CHECK: sqrdmulh.4h v0, v0, v0 ; encoding: [0x00,0xb4,0x60,0x2e] +; CHECK: sqrshl.8b v0, v0, v0 ; encoding: [0x00,0x5c,0x20,0x0e] +; CHECK: sqshl.8b v0, v0, v0 ; encoding: [0x00,0x4c,0x20,0x0e] +; CHECK: sqsub.8b v0, v0, v0 ; encoding: [0x00,0x2c,0x20,0x0e] +; CHECK: srhadd.8b v0, v0, v0 ; encoding: [0x00,0x14,0x20,0x0e] +; CHECK: srshl.8b v0, v0, v0 ; encoding: [0x00,0x54,0x20,0x0e] +; CHECK: sshl.8b v0, v0, v0 ; encoding: [0x00,0x44,0x20,0x0e] +; CHECK: sub.8b v0, v0, v0 ; encoding: [0x00,0x84,0x20,0x2e] +; CHECK: uaba.8b v0, v0, v0 ; encoding: [0x00,0x7c,0x20,0x2e] +; CHECK: uabd.8b v0, v0, v0 ; encoding: [0x00,0x74,0x20,0x2e] +; CHECK: uhadd.8b v0, v0, v0 ; encoding: [0x00,0x04,0x20,0x2e] +; CHECK: uhsub.8b v0, v0, v0 ; encoding: [0x00,0x24,0x20,0x2e] +; CHECK: umaxp.8b v0, v0, v0 ; encoding: [0x00,0xa4,0x20,0x2e] +; CHECK: umax.8b v0, v0, v0 ; encoding: [0x00,0x64,0x20,0x2e] +; CHECK: uminp.8b v0, v0, v0 ; encoding: [0x00,0xac,0x20,0x2e] +; CHECK: umin.8b v0, v0, v0 ; encoding: [0x00,0x6c,0x20,0x2e] +; CHECK: uqadd.8b v0, v0, v0 ; encoding: [0x00,0x0c,0x20,0x2e] +; CHECK: uqrshl.8b v0, v0, v0 ; encoding: [0x00,0x5c,0x20,0x2e] +; CHECK: uqshl.8b v0, v0, v0 ; encoding: [0x00,0x4c,0x20,0x2e] +; CHECK: uqsub.8b v0, v0, v0 ; encoding: [0x00,0x2c,0x20,0x2e] +; CHECK: urhadd.8b v0, v0, v0 ; encoding: [0x00,0x14,0x20,0x2e] +; CHECK: urshl.8b v0, v0, v0 ; encoding: [0x00,0x54,0x20,0x2e] +; CHECK: ushl.8b v0, v0, v0 ; encoding: [0x00,0x44,0x20,0x2e] + + bif.8b v0, v0, v0 + bit.8b v0, v0, v0 + bsl.8b v0, v0, v0 + eor.8b v0, v0, v0 + orn.8b v0, v0, v0 + orr.8b v0, v0, v1 + +; CHECK: bif.8b v0, v0, v0 ; encoding: [0x00,0x1c,0xe0,0x2e] +; CHECK: bit.8b v0, v0, v0 ; encoding: [0x00,0x1c,0xa0,0x2e] +; CHECK: bsl.8b v0, v0, v0 ; encoding: [0x00,0x1c,0x60,0x2e] +; CHECK: eor.8b v0, v0, v0 ; encoding: [0x00,0x1c,0x20,0x2e] +; CHECK: orn.8b v0, v0, v0 ; encoding: [0x00,0x1c,0xe0,0x0e] +; CHECK: orr.8b v0, v0, v1 ; encoding: [0x00,0x1c,0xa1,0x0e] + + sadalp.4h v0, v0 + sadalp.8h v0, v0 + sadalp.2s v0, v0 + sadalp.4s v0, v0 + sadalp.1d v0, v0 + sadalp.2d v0, v0 + +; CHECK: sadalp.4h v0, v0 ; encoding: [0x00,0x68,0x20,0x0e] +; CHECK: sadalp.8h v0, v0 ; encoding: [0x00,0x68,0x20,0x4e] +; CHECK: sadalp.2s v0, v0 ; encoding: [0x00,0x68,0x60,0x0e] +; CHECK: sadalp.4s v0, v0 ; encoding: [0x00,0x68,0x60,0x4e] +; CHECK: sadalp.1d v0, v0 ; encoding: [0x00,0x68,0xa0,0x0e] +; CHECK: sadalp.2d v0, v0 ; encoding: [0x00,0x68,0xa0,0x4e] + + cls.8b v0, v0 + clz.8b v0, v0 + cnt.8b v0, v0 + fabs.2s v0, v0 + fneg.2s v0, v0 + frecpe.2s v0, v0 + frinta.2s v0, v0 + frintx.2s v0, v0 + frinti.2s v0, v0 + frintm.2s v0, v0 + frintn.2s v0, v0 + frintp.2s v0, v0 + frintz.2s v0, v0 + frsqrte.2s v0, v0 + fsqrt.2s v0, v0 + neg.8b v0, v0 + not.8b v0, v0 + rbit.8b v0, v0 + rev16.8b v0, v0 + rev32.8b v0, v0 + rev64.8b v0, v0 + sadalp.4h v0, v0 + saddlp.4h v0, v0 + scvtf.2s v0, v0 + sqabs.8b v0, v0 + sqneg.8b v0, v0 + sqxtn.8b v0, v0 + sqxtun.8b v0, v0 + suqadd.8b v0, v0 + uadalp.4h v0, v0 + uaddlp.4h v0, v0 + ucvtf.2s v0, v0 + uqxtn.8b v0, v0 + urecpe.2s v0, v0 + ursqrte.2s v0, v0 + usqadd.8b v0, v0 + xtn.8b v0, v0 + shll.8h v1, v2, #8 + shll.4s v3, v4, #16 + shll.2d v5, v6, #32 + shll2.8h v7, v8, #8 + shll2.4s v9, v10, #16 + shll2.2d v11, v12, #32 + shll v1.8h, v2.8b, #8 + shll v1.4s, v2.4h, #16 + shll v1.2d, v2.2s, #32 + shll2 v1.8h, v2.16b, #8 + shll2 v1.4s, v2.8h, #16 + shll2 v1.2d, v2.4s, #32 + +; CHECK: cls.8b v0, v0 ; encoding: [0x00,0x48,0x20,0x0e] +; CHECK: clz.8b v0, v0 ; encoding: [0x00,0x48,0x20,0x2e] +; CHECK: cnt.8b v0, v0 ; encoding: [0x00,0x58,0x20,0x0e] +; CHECK: fabs.2s v0, v0 ; encoding: [0x00,0xf8,0xa0,0x0e] +; CHECK: fneg.2s v0, v0 ; encoding: [0x00,0xf8,0xa0,0x2e] +; CHECK: frecpe.2s v0, v0 ; encoding: [0x00,0xd8,0xa1,0x0e] +; CHECK: frinta.2s v0, v0 ; encoding: [0x00,0x88,0x21,0x2e] +; CHECK: frintx.2s v0, v0 ; encoding: [0x00,0x98,0x21,0x2e] +; CHECK: frinti.2s v0, v0 ; encoding: [0x00,0x98,0xa1,0x2e] +; CHECK: frintm.2s v0, v0 ; encoding: [0x00,0x98,0x21,0x0e] +; CHECK: frintn.2s v0, v0 ; encoding: [0x00,0x88,0x21,0x0e] +; CHECK: frintp.2s v0, v0 ; encoding: [0x00,0x88,0xa1,0x0e] +; CHECK: frintz.2s v0, v0 ; encoding: [0x00,0x98,0xa1,0x0e] +; CHECK: frsqrte.2s v0, v0 ; encoding: [0x00,0xd8,0xa1,0x2e] +; CHECK: fsqrt.2s v0, v0 ; encoding: [0x00,0xf8,0xa1,0x2e] +; CHECK: neg.8b v0, v0 ; encoding: [0x00,0xb8,0x20,0x2e] +; CHECK: mvn.8b v0, v0 ; encoding: [0x00,0x58,0x20,0x2e] +; CHECK: rbit.8b v0, v0 ; encoding: [0x00,0x58,0x60,0x2e] +; CHECK: rev16.8b v0, v0 ; encoding: [0x00,0x18,0x20,0x0e] +; CHECK: rev32.8b v0, v0 ; encoding: [0x00,0x08,0x20,0x2e] +; CHECK: rev64.8b v0, v0 ; encoding: [0x00,0x08,0x20,0x0e] +; CHECK: sadalp.4h v0, v0 ; encoding: [0x00,0x68,0x20,0x0e] +; CHECK: saddlp.4h v0, v0 ; encoding: [0x00,0x28,0x20,0x0e] +; CHECK: scvtf.2s v0, v0 ; encoding: [0x00,0xd8,0x21,0x0e] +; CHECK: sqabs.8b v0, v0 ; encoding: [0x00,0x78,0x20,0x0e] +; CHECK: sqneg.8b v0, v0 ; encoding: [0x00,0x78,0x20,0x2e] +; CHECK: sqxtn.8b v0, v0 ; encoding: [0x00,0x48,0x21,0x0e] +; CHECK: sqxtun.8b v0, v0 ; encoding: [0x00,0x28,0x21,0x2e] +; CHECK: suqadd.8b v0, v0 ; encoding: [0x00,0x38,0x20,0x0e] +; CHECK: uadalp.4h v0, v0 ; encoding: [0x00,0x68,0x20,0x2e] +; CHECK: uaddlp.4h v0, v0 ; encoding: [0x00,0x28,0x20,0x2e] +; CHECK: ucvtf.2s v0, v0 ; encoding: [0x00,0xd8,0x21,0x2e] +; CHECK: uqxtn.8b v0, v0 ; encoding: [0x00,0x48,0x21,0x2e] +; CHECK: urecpe.2s v0, v0 ; encoding: [0x00,0xc8,0xa1,0x0e] +; CHECK: ursqrte.2s v0, v0 ; encoding: [0x00,0xc8,0xa1,0x2e] +; CHECK: usqadd.8b v0, v0 ; encoding: [0x00,0x38,0x20,0x2e] +; CHECK: xtn.8b v0, v0 ; encoding: [0x00,0x28,0x21,0x0e] +; CHECK: shll.8h v1, v2, #8 ; encoding: [0x41,0x38,0x21,0x2e] +; CHECK: shll.4s v3, v4, #16 ; encoding: [0x83,0x38,0x61,0x2e] +; CHECK: shll.2d v5, v6, #32 ; encoding: [0xc5,0x38,0xa1,0x2e] +; CHECK: shll2.8h v7, v8, #8 ; encoding: [0x07,0x39,0x21,0x6e] +; CHECK: shll2.4s v9, v10, #16 ; encoding: [0x49,0x39,0x61,0x6e] +; CHECK: shll2.2d v11, v12, #32 ; encoding: [0x8b,0x39,0xa1,0x6e] +; CHECK: shll.8h v1, v2, #8 ; encoding: [0x41,0x38,0x21,0x2e] +; CHECK: shll.4s v1, v2, #16 ; encoding: [0x41,0x38,0x61,0x2e] +; CHECK: shll.2d v1, v2, #32 ; encoding: [0x41,0x38,0xa1,0x2e] +; CHECK: shll2.8h v1, v2, #8 ; encoding: [0x41,0x38,0x21,0x6e] +; CHECK: shll2.4s v1, v2, #16 ; encoding: [0x41,0x38,0x61,0x6e] +; CHECK: shll2.2d v1, v2, #32 ; encoding: [0x41,0x38,0xa1,0x6e] + + + cmeq.8b v0, v0, #0 + cmeq.16b v0, v0, #0 + cmeq.4h v0, v0, #0 + cmeq.8h v0, v0, #0 + cmeq.2s v0, v0, #0 + cmeq.4s v0, v0, #0 + cmeq.2d v0, v0, #0 + +; CHECK: cmeq.8b v0, v0, #0 ; encoding: [0x00,0x98,0x20,0x0e] +; CHECK: cmeq.16b v0, v0, #0 ; encoding: [0x00,0x98,0x20,0x4e] +; CHECK: cmeq.4h v0, v0, #0 ; encoding: [0x00,0x98,0x60,0x0e] +; CHECK: cmeq.8h v0, v0, #0 ; encoding: [0x00,0x98,0x60,0x4e] +; CHECK: cmeq.2s v0, v0, #0 ; encoding: [0x00,0x98,0xa0,0x0e] +; CHECK: cmeq.4s v0, v0, #0 ; encoding: [0x00,0x98,0xa0,0x4e] +; CHECK: cmeq.2d v0, v0, #0 ; encoding: [0x00,0x98,0xe0,0x4e] + + cmge.8b v0, v0, #0 + cmgt.8b v0, v0, #0 + cmle.8b v0, v0, #0 + cmlt.8b v0, v0, #0 + fcmeq.2s v0, v0, #0 + fcmge.2s v0, v0, #0 + fcmgt.2s v0, v0, #0 + fcmle.2s v0, v0, #0 + fcmlt.2s v0, v0, #0 + +; ARM verbose mode aliases + cmlt v8.8b, v14.8b, #0 + cmlt v8.16b, v14.16b, #0 + cmlt v8.4h, v14.4h, #0 + cmlt v8.8h, v14.8h, #0 + cmlt v8.2s, v14.2s, #0 + cmlt v8.4s, v14.4s, #0 + cmlt v8.2d, v14.2d, #0 + +; CHECK: cmge.8b v0, v0, #0 ; encoding: [0x00,0x88,0x20,0x2e] +; CHECK: cmgt.8b v0, v0, #0 ; encoding: [0x00,0x88,0x20,0x0e] +; CHECK: cmle.8b v0, v0, #0 ; encoding: [0x00,0x98,0x20,0x2e] +; CHECK: cmlt.8b v0, v0, #0 ; encoding: [0x00,0xa8,0x20,0x0e] +; CHECK: fcmeq.2s v0, v0, #0.0 ; encoding: [0x00,0xd8,0xa0,0x0e] +; CHECK: fcmge.2s v0, v0, #0.0 ; encoding: [0x00,0xc8,0xa0,0x2e] +; CHECK: fcmgt.2s v0, v0, #0.0 ; encoding: [0x00,0xc8,0xa0,0x0e] +; CHECK: fcmle.2s v0, v0, #0.0 ; encoding: [0x00,0xd8,0xa0,0x2e] +; CHECK: fcmlt.2s v0, v0, #0.0 ; encoding: [0x00,0xe8,0xa0,0x0e] +; CHECK: cmlt.8b v8, v14, #0 ; encoding: [0xc8,0xa9,0x20,0x0e] +; CHECK: cmlt.16b v8, v14, #0 ; encoding: [0xc8,0xa9,0x20,0x4e] +; CHECK: cmlt.4h v8, v14, #0 ; encoding: [0xc8,0xa9,0x60,0x0e] +; CHECK: cmlt.8h v8, v14, #0 ; encoding: [0xc8,0xa9,0x60,0x4e] +; CHECK: cmlt.2s v8, v14, #0 ; encoding: [0xc8,0xa9,0xa0,0x0e] +; CHECK: cmlt.4s v8, v14, #0 ; encoding: [0xc8,0xa9,0xa0,0x4e] +; CHECK: cmlt.2d v8, v14, #0 ; encoding: [0xc8,0xa9,0xe0,0x4e] + + +;===-------------------------------------------------------------------------=== +; AdvSIMD Floating-point <-> Integer Conversions +;===-------------------------------------------------------------------------=== + + fcvtas.2s v0, v0 + fcvtas.4s v0, v0 + fcvtas.2d v0, v0 + fcvtas s0, s0 + fcvtas d0, d0 + +; CHECK: fcvtas.2s v0, v0 ; encoding: [0x00,0xc8,0x21,0x0e] +; CHECK: fcvtas.4s v0, v0 ; encoding: [0x00,0xc8,0x21,0x4e] +; CHECK: fcvtas.2d v0, v0 ; encoding: [0x00,0xc8,0x61,0x4e] +; CHECK: fcvtas s0, s0 ; encoding: [0x00,0xc8,0x21,0x5e] +; CHECK: fcvtas d0, d0 ; encoding: [0x00,0xc8,0x61,0x5e] + + fcvtau.2s v0, v0 + fcvtau.4s v0, v0 + fcvtau.2d v0, v0 + fcvtau s0, s0 + fcvtau d0, d0 + +; CHECK: fcvtau.2s v0, v0 ; encoding: [0x00,0xc8,0x21,0x2e] +; CHECK: fcvtau.4s v0, v0 ; encoding: [0x00,0xc8,0x21,0x6e] +; CHECK: fcvtau.2d v0, v0 ; encoding: [0x00,0xc8,0x61,0x6e] +; CHECK: fcvtau s0, s0 ; encoding: [0x00,0xc8,0x21,0x7e] +; CHECK: fcvtau d0, d0 ; encoding: [0x00,0xc8,0x61,0x7e] + + fcvtl v1.4s, v5.4h + fcvtl v2.2d, v6.2s + fcvtl2 v3.4s, v7.8h + fcvtl2 v4.2d, v8.4s + +; CHECK: fcvtl v1.4s, v5.4h ; encoding: [0xa1,0x78,0x21,0x0e] +; CHECK: fcvtl v2.2d, v6.2s ; encoding: [0xc2,0x78,0x61,0x0e] +; CHECK: fcvtl2 v3.4s, v7.8h ; encoding: [0xe3,0x78,0x21,0x4e] +; CHECK: fcvtl2 v4.2d, v8.4s ; encoding: [0x04,0x79,0x61,0x4e] + + fcvtms.2s v0, v0 + fcvtms.4s v0, v0 + fcvtms.2d v0, v0 + fcvtms s0, s0 + fcvtms d0, d0 + +; CHECK: fcvtms.2s v0, v0 ; encoding: [0x00,0xb8,0x21,0x0e] +; CHECK: fcvtms.4s v0, v0 ; encoding: [0x00,0xb8,0x21,0x4e] +; CHECK: fcvtms.2d v0, v0 ; encoding: [0x00,0xb8,0x61,0x4e] +; CHECK: fcvtms s0, s0 ; encoding: [0x00,0xb8,0x21,0x5e] +; CHECK: fcvtms d0, d0 ; encoding: [0x00,0xb8,0x61,0x5e] + + fcvtmu.2s v0, v0 + fcvtmu.4s v0, v0 + fcvtmu.2d v0, v0 + fcvtmu s0, s0 + fcvtmu d0, d0 + +; CHECK: fcvtmu.2s v0, v0 ; encoding: [0x00,0xb8,0x21,0x2e] +; CHECK: fcvtmu.4s v0, v0 ; encoding: [0x00,0xb8,0x21,0x6e] +; CHECK: fcvtmu.2d v0, v0 ; encoding: [0x00,0xb8,0x61,0x6e] +; CHECK: fcvtmu s0, s0 ; encoding: [0x00,0xb8,0x21,0x7e] +; CHECK: fcvtmu d0, d0 ; encoding: [0x00,0xb8,0x61,0x7e] + + fcvtns.2s v0, v0 + fcvtns.4s v0, v0 + fcvtns.2d v0, v0 + fcvtns s0, s0 + fcvtns d0, d0 + +; CHECK: fcvtns.2s v0, v0 ; encoding: [0x00,0xa8,0x21,0x0e] +; CHECK: fcvtns.4s v0, v0 ; encoding: [0x00,0xa8,0x21,0x4e] +; CHECK: fcvtns.2d v0, v0 ; encoding: [0x00,0xa8,0x61,0x4e] +; CHECK: fcvtns s0, s0 ; encoding: [0x00,0xa8,0x21,0x5e] +; CHECK: fcvtns d0, d0 ; encoding: [0x00,0xa8,0x61,0x5e] + + fcvtnu.2s v0, v0 + fcvtnu.4s v0, v0 + fcvtnu.2d v0, v0 + fcvtnu s0, s0 + fcvtnu d0, d0 + +; CHECK: fcvtnu.2s v0, v0 ; encoding: [0x00,0xa8,0x21,0x2e] +; CHECK: fcvtnu.4s v0, v0 ; encoding: [0x00,0xa8,0x21,0x6e] +; CHECK: fcvtnu.2d v0, v0 ; encoding: [0x00,0xa8,0x61,0x6e] +; CHECK: fcvtnu s0, s0 ; encoding: [0x00,0xa8,0x21,0x7e] +; CHECK: fcvtnu d0, d0 ; encoding: [0x00,0xa8,0x61,0x7e] + + fcvtn v2.4h, v4.4s + fcvtn v3.2s, v5.2d + fcvtn2 v4.8h, v6.4s + fcvtn2 v5.4s, v7.2d + fcvtxn v6.2s, v9.2d + fcvtxn2 v7.4s, v8.2d + +; CHECK: fcvtn v2.4h, v4.4s ; encoding: [0x82,0x68,0x21,0x0e] +; CHECK: fcvtn v3.2s, v5.2d ; encoding: [0xa3,0x68,0x61,0x0e] +; CHECK: fcvtn2 v4.8h, v6.4s ; encoding: [0xc4,0x68,0x21,0x4e] +; CHECK: fcvtn2 v5.4s, v7.2d ; encoding: [0xe5,0x68,0x61,0x4e] +; CHECK: fcvtxn v6.2s, v9.2d ; encoding: [0x26,0x69,0x61,0x2e] +; CHECK: fcvtxn2 v7.4s, v8.2d ; encoding: [0x07,0x69,0x61,0x6e] + + fcvtps.2s v0, v0 + fcvtps.4s v0, v0 + fcvtps.2d v0, v0 + fcvtps s0, s0 + fcvtps d0, d0 + +; CHECK: fcvtps.2s v0, v0 ; encoding: [0x00,0xa8,0xa1,0x0e] +; CHECK: fcvtps.4s v0, v0 ; encoding: [0x00,0xa8,0xa1,0x4e] +; CHECK: fcvtps.2d v0, v0 ; encoding: [0x00,0xa8,0xe1,0x4e] +; CHECK: fcvtps s0, s0 ; encoding: [0x00,0xa8,0xa1,0x5e] +; CHECK: fcvtps d0, d0 ; encoding: [0x00,0xa8,0xe1,0x5e] + + fcvtpu.2s v0, v0 + fcvtpu.4s v0, v0 + fcvtpu.2d v0, v0 + fcvtpu s0, s0 + fcvtpu d0, d0 + +; CHECK: fcvtpu.2s v0, v0 ; encoding: [0x00,0xa8,0xa1,0x2e] +; CHECK: fcvtpu.4s v0, v0 ; encoding: [0x00,0xa8,0xa1,0x6e] +; CHECK: fcvtpu.2d v0, v0 ; encoding: [0x00,0xa8,0xe1,0x6e] +; CHECK: fcvtpu s0, s0 ; encoding: [0x00,0xa8,0xa1,0x7e] +; CHECK: fcvtpu d0, d0 ; encoding: [0x00,0xa8,0xe1,0x7e] + + fcvtzs.2s v0, v0 + fcvtzs.4s v0, v0 + fcvtzs.2d v0, v0 + fcvtzs s0, s0 + fcvtzs d0, d0 + +; CHECK: fcvtzs.2s v0, v0 ; encoding: [0x00,0xb8,0xa1,0x0e] +; CHECK: fcvtzs.4s v0, v0 ; encoding: [0x00,0xb8,0xa1,0x4e] +; CHECK: fcvtzs.2d v0, v0 ; encoding: [0x00,0xb8,0xe1,0x4e] +; CHECK: fcvtzs s0, s0 ; encoding: [0x00,0xb8,0xa1,0x5e] +; CHECK: fcvtzs d0, d0 ; encoding: [0x00,0xb8,0xe1,0x5e] + + fcvtzu.2s v0, v0 + fcvtzu.4s v0, v0 + fcvtzu.2d v0, v0 + fcvtzu s0, s0 + fcvtzu d0, d0 + +; CHECK: fcvtzu.2s v0, v0 ; encoding: [0x00,0xb8,0xa1,0x2e] +; CHECK: fcvtzu.4s v0, v0 ; encoding: [0x00,0xb8,0xa1,0x6e] +; CHECK: fcvtzu.2d v0, v0 ; encoding: [0x00,0xb8,0xe1,0x6e] +; CHECK: fcvtzu s0, s0 ; encoding: [0x00,0xb8,0xa1,0x7e] +; CHECK: fcvtzu d0, d0 ; encoding: [0x00,0xb8,0xe1,0x7e] + +;===-------------------------------------------------------------------------=== +; AdvSIMD modified immediate instructions +;===-------------------------------------------------------------------------=== + + bic.2s v0, #1 + bic.2s v0, #1, lsl #0 + bic.2s v0, #1, lsl #8 + bic.2s v0, #1, lsl #16 + bic.2s v0, #1, lsl #24 + +; CHECK: bic.2s v0, #0x1 ; encoding: [0x20,0x14,0x00,0x2f] +; CHECK: bic.2s v0, #0x1 ; encoding: [0x20,0x14,0x00,0x2f] +; CHECK: bic.2s v0, #0x1, lsl #8 ; encoding: [0x20,0x34,0x00,0x2f] +; CHECK: bic.2s v0, #0x1, lsl #16 ; encoding: [0x20,0x54,0x00,0x2f] +; CHECK: bic.2s v0, #0x1, lsl #24 ; encoding: [0x20,0x74,0x00,0x2f] + + bic.4h v0, #1 + bic.4h v0, #1, lsl #0 + bic.4h v0, #1, lsl #8 + +; CHECK: bic.4h v0, #0x1 ; encoding: [0x20,0x94,0x00,0x2f] +; CHECK: bic.4h v0, #0x1 ; encoding: [0x20,0x94,0x00,0x2f] +; CHECK: bic.4h v0, #0x1, lsl #8 ; encoding: [0x20,0xb4,0x00,0x2f] + + bic.4s v0, #1 + bic.4s v0, #1, lsl #0 + bic.4s v0, #1, lsl #8 + bic.4s v0, #1, lsl #16 + bic.4s v0, #1, lsl #24 + +; CHECK: bic.4s v0, #0x1 ; encoding: [0x20,0x14,0x00,0x6f] +; CHECK: bic.4s v0, #0x1 ; encoding: [0x20,0x14,0x00,0x6f] +; CHECK: bic.4s v0, #0x1, lsl #8 ; encoding: [0x20,0x34,0x00,0x6f] +; CHECK: bic.4s v0, #0x1, lsl #16 ; encoding: [0x20,0x54,0x00,0x6f] +; CHECK: bic.4s v0, #0x1, lsl #24 ; encoding: [0x20,0x74,0x00,0x6f] + + bic.8h v0, #1 + bic.8h v0, #1, lsl #0 + bic.8h v0, #1, lsl #8 + +; CHECK: bic.8h v0, #0x1 ; encoding: [0x20,0x94,0x00,0x6f] +; CHECK: bic.8h v0, #0x1 ; encoding: [0x20,0x94,0x00,0x6f] +; CHECK: bic.8h v0, #0x1, lsl #8 ; encoding: [0x20,0xb4,0x00,0x6f] + + fmov.2d v0, #1.250000e-01 + +; CHECK: fmov.2d v0, #0.12500000 ; encoding: [0x00,0xf4,0x02,0x6f] + + fmov.2s v0, #1.250000e-01 + fmov.4s v0, #1.250000e-01 + +; CHECK: fmov.2s v0, #0.12500000 ; encoding: [0x00,0xf4,0x02,0x0f] +; CHECK: fmov.4s v0, #0.12500000 ; encoding: [0x00,0xf4,0x02,0x4f] + + orr.2s v0, #1 + orr.2s v0, #1, lsl #0 + orr.2s v0, #1, lsl #8 + orr.2s v0, #1, lsl #16 + orr.2s v0, #1, lsl #24 + +; CHECK: orr.2s v0, #0x1 ; encoding: [0x20,0x14,0x00,0x0f] +; CHECK: orr.2s v0, #0x1 ; encoding: [0x20,0x14,0x00,0x0f] +; CHECK: orr.2s v0, #0x1, lsl #8 ; encoding: [0x20,0x34,0x00,0x0f] +; CHECK: orr.2s v0, #0x1, lsl #16 ; encoding: [0x20,0x54,0x00,0x0f] +; CHECK: orr.2s v0, #0x1, lsl #24 ; encoding: [0x20,0x74,0x00,0x0f] + + orr.4h v0, #1 + orr.4h v0, #1, lsl #0 + orr.4h v0, #1, lsl #8 + +; CHECK: orr.4h v0, #0x1 ; encoding: [0x20,0x94,0x00,0x0f] +; CHECK: orr.4h v0, #0x1 ; encoding: [0x20,0x94,0x00,0x0f] +; CHECK: orr.4h v0, #0x1, lsl #8 ; encoding: [0x20,0xb4,0x00,0x0f] + + orr.4s v0, #1 + orr.4s v0, #1, lsl #0 + orr.4s v0, #1, lsl #8 + orr.4s v0, #1, lsl #16 + orr.4s v0, #1, lsl #24 + +; CHECK: orr.4s v0, #0x1 ; encoding: [0x20,0x14,0x00,0x4f] +; CHECK: orr.4s v0, #0x1 ; encoding: [0x20,0x14,0x00,0x4f] +; CHECK: orr.4s v0, #0x1, lsl #8 ; encoding: [0x20,0x34,0x00,0x4f] +; CHECK: orr.4s v0, #0x1, lsl #16 ; encoding: [0x20,0x54,0x00,0x4f] +; CHECK: orr.4s v0, #0x1, lsl #24 ; encoding: [0x20,0x74,0x00,0x4f] + + orr.8h v0, #1 + orr.8h v0, #1, lsl #0 + orr.8h v0, #1, lsl #8 + +; CHECK: orr.8h v0, #0x1 ; encoding: [0x20,0x94,0x00,0x4f] +; CHECK: orr.8h v0, #0x1 ; encoding: [0x20,0x94,0x00,0x4f] +; CHECK: orr.8h v0, #0x1, lsl #8 ; encoding: [0x20,0xb4,0x00,0x4f] + + movi d0, #0x000000000000ff + movi.2d v0, #0x000000000000ff + +; CHECK: movi d0, #0x000000000000ff ; encoding: [0x20,0xe4,0x00,0x2f] +; CHECK: movi.2d v0, #0x000000000000ff ; encoding: [0x20,0xe4,0x00,0x6f] + + movi.2s v0, #1 + movi.2s v0, #1, lsl #0 + movi.2s v0, #1, lsl #8 + movi.2s v0, #1, lsl #16 + movi.2s v0, #1, lsl #24 + +; CHECK: movi.2s v0, #0x1 ; encoding: [0x20,0x04,0x00,0x0f] +; CHECK: movi.2s v0, #0x1 ; encoding: [0x20,0x04,0x00,0x0f] +; CHECK: movi.2s v0, #0x1, lsl #8 ; encoding: [0x20,0x24,0x00,0x0f] +; CHECK: movi.2s v0, #0x1, lsl #16 ; encoding: [0x20,0x44,0x00,0x0f] +; CHECK: movi.2s v0, #0x1, lsl #24 ; encoding: [0x20,0x64,0x00,0x0f] + + movi.4s v0, #1 + movi.4s v0, #1, lsl #0 + movi.4s v0, #1, lsl #8 + movi.4s v0, #1, lsl #16 + movi.4s v0, #1, lsl #24 + +; CHECK: movi.4s v0, #0x1 ; encoding: [0x20,0x04,0x00,0x4f] +; CHECK: movi.4s v0, #0x1 ; encoding: [0x20,0x04,0x00,0x4f] +; CHECK: movi.4s v0, #0x1, lsl #8 ; encoding: [0x20,0x24,0x00,0x4f] +; CHECK: movi.4s v0, #0x1, lsl #16 ; encoding: [0x20,0x44,0x00,0x4f] +; CHECK: movi.4s v0, #0x1, lsl #24 ; encoding: [0x20,0x64,0x00,0x4f] + + movi.4h v0, #1 + movi.4h v0, #1, lsl #0 + movi.4h v0, #1, lsl #8 + +; CHECK: movi.4h v0, #0x1 ; encoding: [0x20,0x84,0x00,0x0f] +; CHECK: movi.4h v0, #0x1 ; encoding: [0x20,0x84,0x00,0x0f] +; CHECK: movi.4h v0, #0x1, lsl #8 ; encoding: [0x20,0xa4,0x00,0x0f] + + movi.8h v0, #1 + movi.8h v0, #1, lsl #0 + movi.8h v0, #1, lsl #8 + +; CHECK: movi.8h v0, #0x1 ; encoding: [0x20,0x84,0x00,0x4f] +; CHECK: movi.8h v0, #0x1 ; encoding: [0x20,0x84,0x00,0x4f] +; CHECK: movi.8h v0, #0x1, lsl #8 ; encoding: [0x20,0xa4,0x00,0x4f] + + movi.2s v0, #1, msl #8 + movi.2s v0, #1, msl #16 + movi.4s v0, #1, msl #8 + movi.4s v0, #1, msl #16 + +; CHECK: movi.2s v0, #0x1, msl #8 ; encoding: [0x20,0xc4,0x00,0x0f] +; CHECK: movi.2s v0, #0x1, msl #16 ; encoding: [0x20,0xd4,0x00,0x0f] +; CHECK: movi.4s v0, #0x1, msl #8 ; encoding: [0x20,0xc4,0x00,0x4f] +; CHECK: movi.4s v0, #0x1, msl #16 ; encoding: [0x20,0xd4,0x00,0x4f] + + movi.8b v0, #1 + movi.16b v0, #1 + +; CHECK: movi.8b v0, #0x1 ; encoding: [0x20,0xe4,0x00,0x0f] +; CHECK: movi.16b v0, #0x1 ; encoding: [0x20,0xe4,0x00,0x4f] + + mvni.2s v0, #1 + mvni.2s v0, #1, lsl #0 + mvni.2s v0, #1, lsl #8 + mvni.2s v0, #1, lsl #16 + mvni.2s v0, #1, lsl #24 + +; CHECK: mvni.2s v0, #0x1 ; encoding: [0x20,0x04,0x00,0x2f] +; CHECK: mvni.2s v0, #0x1 ; encoding: [0x20,0x04,0x00,0x2f] +; CHECK: mvni.2s v0, #0x1, lsl #8 ; encoding: [0x20,0x24,0x00,0x2f] +; CHECK: mvni.2s v0, #0x1, lsl #16 ; encoding: [0x20,0x44,0x00,0x2f] +; CHECK: mvni.2s v0, #0x1, lsl #24 ; encoding: [0x20,0x64,0x00,0x2f] + + mvni.4s v0, #1 + mvni.4s v0, #1, lsl #0 + mvni.4s v0, #1, lsl #8 + mvni.4s v0, #1, lsl #16 + mvni.4s v0, #1, lsl #24 + +; CHECK: mvni.4s v0, #0x1 ; encoding: [0x20,0x04,0x00,0x6f] +; CHECK: mvni.4s v0, #0x1 ; encoding: [0x20,0x04,0x00,0x6f] +; CHECK: mvni.4s v0, #0x1, lsl #8 ; encoding: [0x20,0x24,0x00,0x6f] +; CHECK: mvni.4s v0, #0x1, lsl #16 ; encoding: [0x20,0x44,0x00,0x6f] +; CHECK: mvni.4s v0, #0x1, lsl #24 ; encoding: [0x20,0x64,0x00,0x6f] + + mvni.4h v0, #1 + mvni.4h v0, #1, lsl #0 + mvni.4h v0, #1, lsl #8 + +; CHECK: mvni.4h v0, #0x1 ; encoding: [0x20,0x84,0x00,0x2f] +; CHECK: mvni.4h v0, #0x1 ; encoding: [0x20,0x84,0x00,0x2f] +; CHECK: mvni.4h v0, #0x1, lsl #8 ; encoding: [0x20,0xa4,0x00,0x2f] + + mvni.8h v0, #1 + mvni.8h v0, #1, lsl #0 + mvni.8h v0, #1, lsl #8 + +; CHECK: mvni.8h v0, #0x1 ; encoding: [0x20,0x84,0x00,0x6f] +; CHECK: mvni.8h v0, #0x1 ; encoding: [0x20,0x84,0x00,0x6f] +; CHECK: mvni.8h v0, #0x1, lsl #8 ; encoding: [0x20,0xa4,0x00,0x6f] + + mvni.2s v0, #1, msl #8 + mvni.2s v0, #1, msl #16 + mvni.4s v0, #1, msl #8 + mvni.4s v0, #1, msl #16 + +; CHECK: mvni.2s v0, #0x1, msl #8 ; encoding: [0x20,0xc4,0x00,0x2f] +; CHECK: mvni.2s v0, #0x1, msl #16 ; encoding: [0x20,0xd4,0x00,0x2f] +; CHECK: mvni.4s v0, #0x1, msl #8 ; encoding: [0x20,0xc4,0x00,0x6f] +; CHECK: mvni.4s v0, #0x1, msl #16 ; encoding: [0x20,0xd4,0x00,0x6f] + +;===-------------------------------------------------------------------------=== +; AdvSIMD scalar x index +;===-------------------------------------------------------------------------=== + + fmla.s s0, s0, v0[3] + fmla.d d0, d0, v0[1] + fmls.s s0, s0, v0[3] + fmls.d d0, d0, v0[1] + fmulx.s s0, s0, v0[3] + fmulx.d d0, d0, v0[1] + fmul.s s0, s0, v0[3] + fmul.d d0, d0, v0[1] + sqdmlal.h s0, h0, v0[7] + sqdmlal.s d0, s0, v0[3] + sqdmlsl.h s0, h0, v0[7] + sqdmulh.h h0, h0, v0[7] + sqdmulh.s s0, s0, v0[3] + sqdmull.h s0, h0, v0[7] + sqdmull.s d0, s0, v0[3] + sqrdmulh.h h0, h0, v0[7] + sqrdmulh.s s0, s0, v0[3] + +; CHECK: fmla.s s0, s0, v0[3] ; encoding: [0x00,0x18,0xa0,0x5f] +; CHECK: fmla.d d0, d0, v0[1] ; encoding: [0x00,0x18,0xc0,0x5f] +; CHECK: fmls.s s0, s0, v0[3] ; encoding: [0x00,0x58,0xa0,0x5f] +; CHECK: fmls.d d0, d0, v0[1] ; encoding: [0x00,0x58,0xc0,0x5f] +; CHECK: fmulx.s s0, s0, v0[3] ; encoding: [0x00,0x98,0xa0,0x7f] +; CHECK: fmulx.d d0, d0, v0[1] ; encoding: [0x00,0x98,0xc0,0x7f] +; CHECK: fmul.s s0, s0, v0[3] ; encoding: [0x00,0x98,0xa0,0x5f] +; CHECK: fmul.d d0, d0, v0[1] ; encoding: [0x00,0x98,0xc0,0x5f] +; CHECK: sqdmlal.h s0, h0, v0[7] ; encoding: [0x00,0x38,0x70,0x5f] +; CHECK: sqdmlal.s d0, s0, v0[3] ; encoding: [0x00,0x38,0xa0,0x5f] +; CHECK: sqdmlsl.h s0, h0, v0[7] ; encoding: [0x00,0x78,0x70,0x5f] +; CHECK: sqdmulh.h h0, h0, v0[7] ; encoding: [0x00,0xc8,0x70,0x5f] +; CHECK: sqdmulh.s s0, s0, v0[3] ; encoding: [0x00,0xc8,0xa0,0x5f] +; CHECK: sqdmull.h s0, h0, v0[7] ; encoding: [0x00,0xb8,0x70,0x5f] +; CHECK: sqdmull.s d0, s0, v0[3] ; encoding: [0x00,0xb8,0xa0,0x5f] +; CHECK: sqrdmulh.h h0, h0, v0[7] ; encoding: [0x00,0xd8,0x70,0x5f] +; CHECK: sqrdmulh.s s0, s0, v0[3] ; encoding: [0x00,0xd8,0xa0,0x5f] + +;===-------------------------------------------------------------------------=== +; AdvSIMD SMLAL +;===-------------------------------------------------------------------------=== + smlal.8h v1, v2, v3 + smlal.4s v1, v2, v3 + smlal.2d v1, v2, v3 + smlal2.8h v1, v2, v3 + smlal2.4s v1, v2, v3 + smlal2.2d v1, v2, v3 + + smlal v13.8h, v8.8b, v0.8b + smlal v13.4s, v8.4h, v0.4h + smlal v13.2d, v8.2s, v0.2s + smlal2 v13.8h, v8.16b, v0.16b + smlal2 v13.4s, v8.8h, v0.8h + smlal2 v13.2d, v8.4s, v0.4s + +; CHECK: smlal.8h v1, v2, v3 ; encoding: [0x41,0x80,0x23,0x0e] +; CHECK: smlal.4s v1, v2, v3 ; encoding: [0x41,0x80,0x63,0x0e] +; CHECK: smlal.2d v1, v2, v3 ; encoding: [0x41,0x80,0xa3,0x0e] +; CHECK: smlal2.8h v1, v2, v3 ; encoding: [0x41,0x80,0x23,0x4e] +; CHECK: smlal2.4s v1, v2, v3 ; encoding: [0x41,0x80,0x63,0x4e] +; CHECK: smlal2.2d v1, v2, v3 ; encoding: [0x41,0x80,0xa3,0x4e] +; CHECK: smlal.8h v13, v8, v0 ; encoding: [0x0d,0x81,0x20,0x0e] +; CHECK: smlal.4s v13, v8, v0 ; encoding: [0x0d,0x81,0x60,0x0e] +; CHECK: smlal.2d v13, v8, v0 ; encoding: [0x0d,0x81,0xa0,0x0e] +; CHECK: smlal2.8h v13, v8, v0 ; encoding: [0x0d,0x81,0x20,0x4e] +; CHECK: smlal2.4s v13, v8, v0 ; encoding: [0x0d,0x81,0x60,0x4e] +; CHECK: smlal2.2d v13, v8, v0 ; encoding: [0x0d,0x81,0xa0,0x4e] + + +;===-------------------------------------------------------------------------=== +; AdvSIMD scalar x index +;===-------------------------------------------------------------------------=== + + fmla.2s v0, v0, v0[0] + fmla.4s v0, v0, v0[1] + fmla.2d v0, v0, v0[1] + fmls.2s v0, v0, v0[0] + fmls.4s v0, v0, v0[1] + fmls.2d v0, v0, v0[1] + fmulx.2s v0, v0, v0[0] + fmulx.4s v0, v0, v0[1] + fmulx.2d v0, v0, v0[1] + fmul.2s v0, v0, v0[0] + fmul.4s v0, v0, v0[1] + fmul.2d v0, v0, v0[1] + mla.4h v0, v0, v0[0] + mla.8h v0, v0, v0[1] + mla.2s v0, v0, v0[2] + mla.4s v0, v0, v0[3] + mls.4h v0, v0, v0[0] + mls.8h v0, v0, v0[1] + mls.2s v0, v0, v0[2] + mls.4s v0, v0, v0[3] + mul.4h v0, v0, v0[0] + mul.8h v0, v0, v0[1] + mul.2s v0, v0, v0[2] + mul.4s v0, v0, v0[3] + smlal.4s v0, v0, v0[0] + smlal2.4s v0, v0, v0[1] + smlal.2d v0, v0, v0[2] + smlal2.2d v0, v0, v0[3] + smlsl.4s v0, v0, v0[0] + smlsl2.4s v0, v0, v0[1] + smlsl.2d v0, v0, v0[2] + smlsl2.2d v0, v0, v0[3] + smull.4s v0, v0, v0[0] + smull2.4s v0, v0, v0[1] + smull.2d v0, v0, v0[2] + smull2.2d v0, v0, v0[3] + sqdmlal.4s v0, v0, v0[0] + sqdmlal2.4s v0, v0, v0[1] + sqdmlal.2d v0, v0, v0[2] + sqdmlal2.2d v0, v0, v0[3] + sqdmlsl.4s v0, v0, v0[0] + sqdmlsl2.4s v0, v0, v0[1] + sqdmlsl.2d v0, v0, v0[2] + sqdmlsl2.2d v0, v0, v0[3] + sqdmulh.4h v0, v0, v0[0] + sqdmulh.8h v0, v0, v0[1] + sqdmulh.2s v0, v0, v0[2] + sqdmulh.4s v0, v0, v0[3] + sqdmull.4s v0, v0, v0[0] + sqdmull2.4s v0, v0, v0[1] + sqdmull.2d v0, v0, v0[2] + sqdmull2.2d v0, v0, v0[3] + sqrdmulh.4h v0, v0, v0[0] + sqrdmulh.8h v0, v0, v0[1] + sqrdmulh.2s v0, v0, v0[2] + sqrdmulh.4s v0, v0, v0[3] + umlal.4s v0, v0, v0[0] + umlal2.4s v0, v0, v0[1] + umlal.2d v0, v0, v0[2] + umlal2.2d v0, v0, v0[3] + umlsl.4s v0, v0, v0[0] + umlsl2.4s v0, v0, v0[1] + umlsl.2d v0, v0, v0[2] + umlsl2.2d v0, v0, v0[3] + umull.4s v0, v0, v0[0] + umull2.4s v0, v0, v0[1] + umull.2d v0, v0, v0[2] + umull2.2d v0, v0, v0[3] + +; CHECK: fmla.2s v0, v0, v0[0] ; encoding: [0x00,0x10,0x80,0x0f] +; CHECK: fmla.4s v0, v0, v0[1] ; encoding: [0x00,0x10,0xa0,0x4f] +; CHECK: fmla.2d v0, v0, v0[1] ; encoding: [0x00,0x18,0xc0,0x4f] +; CHECK: fmls.2s v0, v0, v0[0] ; encoding: [0x00,0x50,0x80,0x0f] +; CHECK: fmls.4s v0, v0, v0[1] ; encoding: [0x00,0x50,0xa0,0x4f] +; CHECK: fmls.2d v0, v0, v0[1] ; encoding: [0x00,0x58,0xc0,0x4f] +; CHECK: fmulx.2s v0, v0, v0[0] ; encoding: [0x00,0x90,0x80,0x2f] +; CHECK: fmulx.4s v0, v0, v0[1] ; encoding: [0x00,0x90,0xa0,0x6f] +; CHECK: fmulx.2d v0, v0, v0[1] ; encoding: [0x00,0x98,0xc0,0x6f] +; CHECK: fmul.2s v0, v0, v0[0] ; encoding: [0x00,0x90,0x80,0x0f] +; CHECK: fmul.4s v0, v0, v0[1] ; encoding: [0x00,0x90,0xa0,0x4f] +; CHECK: fmul.2d v0, v0, v0[1] ; encoding: [0x00,0x98,0xc0,0x4f] +; CHECK: mla.4h v0, v0, v0[0] ; encoding: [0x00,0x00,0x40,0x2f] +; CHECK: mla.8h v0, v0, v0[1] ; encoding: [0x00,0x00,0x50,0x6f] +; CHECK: mla.2s v0, v0, v0[2] ; encoding: [0x00,0x08,0x80,0x2f] +; CHECK: mla.4s v0, v0, v0[3] ; encoding: [0x00,0x08,0xa0,0x6f] +; CHECK: mls.4h v0, v0, v0[0] ; encoding: [0x00,0x40,0x40,0x2f] +; CHECK: mls.8h v0, v0, v0[1] ; encoding: [0x00,0x40,0x50,0x6f] +; CHECK: mls.2s v0, v0, v0[2] ; encoding: [0x00,0x48,0x80,0x2f] +; CHECK: mls.4s v0, v0, v0[3] ; encoding: [0x00,0x48,0xa0,0x6f] +; CHECK: mul.4h v0, v0, v0[0] ; encoding: [0x00,0x80,0x40,0x0f] +; CHECK: mul.8h v0, v0, v0[1] ; encoding: [0x00,0x80,0x50,0x4f] +; CHECK: mul.2s v0, v0, v0[2] ; encoding: [0x00,0x88,0x80,0x0f] +; CHECK: mul.4s v0, v0, v0[3] ; encoding: [0x00,0x88,0xa0,0x4f] +; CHECK: smlal.4s v0, v0, v0[0] ; encoding: [0x00,0x20,0x40,0x0f] +; CHECK: smlal2.4s v0, v0, v0[1] ; encoding: [0x00,0x20,0x50,0x4f] +; CHECK: smlal.2d v0, v0, v0[2] ; encoding: [0x00,0x28,0x80,0x0f] +; CHECK: smlal2.2d v0, v0, v0[3] ; encoding: [0x00,0x28,0xa0,0x4f] +; CHECK: smlsl.4s v0, v0, v0[0] ; encoding: [0x00,0x60,0x40,0x0f] +; CHECK: smlsl2.4s v0, v0, v0[1] ; encoding: [0x00,0x60,0x50,0x4f] +; CHECK: smlsl.2d v0, v0, v0[2] ; encoding: [0x00,0x68,0x80,0x0f] +; CHECK: smlsl2.2d v0, v0, v0[3] ; encoding: [0x00,0x68,0xa0,0x4f] +; CHECK: smull.4s v0, v0, v0[0] ; encoding: [0x00,0xa0,0x40,0x0f] +; CHECK: smull2.4s v0, v0, v0[1] ; encoding: [0x00,0xa0,0x50,0x4f] +; CHECK: smull.2d v0, v0, v0[2] ; encoding: [0x00,0xa8,0x80,0x0f] +; CHECK: smull2.2d v0, v0, v0[3] ; encoding: [0x00,0xa8,0xa0,0x4f] +; CHECK: sqdmlal.4s v0, v0, v0[0] ; encoding: [0x00,0x30,0x40,0x0f] +; CHECK: sqdmlal2.4s v0, v0, v0[1] ; encoding: [0x00,0x30,0x50,0x4f] +; CHECK: sqdmlal.2d v0, v0, v0[2] ; encoding: [0x00,0x38,0x80,0x0f] +; CHECK: sqdmlal2.2d v0, v0, v0[3] ; encoding: [0x00,0x38,0xa0,0x4f] +; CHECK: sqdmlsl.4s v0, v0, v0[0] ; encoding: [0x00,0x70,0x40,0x0f] +; CHECK: sqdmlsl2.4s v0, v0, v0[1] ; encoding: [0x00,0x70,0x50,0x4f] +; CHECK: sqdmlsl.2d v0, v0, v0[2] ; encoding: [0x00,0x78,0x80,0x0f] +; CHECK: sqdmlsl2.2d v0, v0, v0[3] ; encoding: [0x00,0x78,0xa0,0x4f] +; CHECK: sqdmulh.4h v0, v0, v0[0] ; encoding: [0x00,0xc0,0x40,0x0f] +; CHECK: sqdmulh.8h v0, v0, v0[1] ; encoding: [0x00,0xc0,0x50,0x4f] +; CHECK: sqdmulh.2s v0, v0, v0[2] ; encoding: [0x00,0xc8,0x80,0x0f] +; CHECK: sqdmulh.4s v0, v0, v0[3] ; encoding: [0x00,0xc8,0xa0,0x4f] +; CHECK: sqdmull.4s v0, v0, v0[0] ; encoding: [0x00,0xb0,0x40,0x0f] +; CHECK: sqdmull2.4s v0, v0, v0[1] ; encoding: [0x00,0xb0,0x50,0x4f] +; CHECK: sqdmull.2d v0, v0, v0[2] ; encoding: [0x00,0xb8,0x80,0x0f] +; CHECK: sqdmull2.2d v0, v0, v0[3] ; encoding: [0x00,0xb8,0xa0,0x4f] +; CHECK: sqrdmulh.4h v0, v0, v0[0] ; encoding: [0x00,0xd0,0x40,0x0f] +; CHECK: sqrdmulh.8h v0, v0, v0[1] ; encoding: [0x00,0xd0,0x50,0x4f] +; CHECK: sqrdmulh.2s v0, v0, v0[2] ; encoding: [0x00,0xd8,0x80,0x0f] +; CHECK: sqrdmulh.4s v0, v0, v0[3] ; encoding: [0x00,0xd8,0xa0,0x4f] +; CHECK: umlal.4s v0, v0, v0[0] ; encoding: [0x00,0x20,0x40,0x2f] +; CHECK: umlal2.4s v0, v0, v0[1] ; encoding: [0x00,0x20,0x50,0x6f] +; CHECK: umlal.2d v0, v0, v0[2] ; encoding: [0x00,0x28,0x80,0x2f] +; CHECK: umlal2.2d v0, v0, v0[3] ; encoding: [0x00,0x28,0xa0,0x6f] +; CHECK: umlsl.4s v0, v0, v0[0] ; encoding: [0x00,0x60,0x40,0x2f] +; CHECK: umlsl2.4s v0, v0, v0[1] ; encoding: [0x00,0x60,0x50,0x6f] +; CHECK: umlsl.2d v0, v0, v0[2] ; encoding: [0x00,0x68,0x80,0x2f] +; CHECK: umlsl2.2d v0, v0, v0[3] ; encoding: [0x00,0x68,0xa0,0x6f] +; CHECK: umull.4s v0, v0, v0[0] ; encoding: [0x00,0xa0,0x40,0x2f] +; CHECK: umull2.4s v0, v0, v0[1] ; encoding: [0x00,0xa0,0x50,0x6f] +; CHECK: umull.2d v0, v0, v0[2] ; encoding: [0x00,0xa8,0x80,0x2f] +; CHECK: umull2.2d v0, v0, v0[3] ; encoding: [0x00,0xa8,0xa0,0x6f] + + +;===-------------------------------------------------------------------------=== +; AdvSIMD scalar with shift +;===-------------------------------------------------------------------------=== + + fcvtzs s0, s0, #1 + fcvtzs d0, d0, #2 + fcvtzu s0, s0, #1 + fcvtzu d0, d0, #2 + shl d0, d0, #1 + sli d0, d0, #1 + sqrshrn b0, h0, #1 + sqrshrn h0, s0, #2 + sqrshrn s0, d0, #3 + sqrshrun b0, h0, #1 + sqrshrun h0, s0, #2 + sqrshrun s0, d0, #3 + sqshlu b0, b0, #1 + sqshlu h0, h0, #2 + sqshlu s0, s0, #3 + sqshlu d0, d0, #4 + sqshl b0, b0, #1 + sqshl h0, h0, #2 + sqshl s0, s0, #3 + sqshl d0, d0, #4 + sqshrn b0, h0, #1 + sqshrn h0, s0, #2 + sqshrn s0, d0, #3 + sqshrun b0, h0, #1 + sqshrun h0, s0, #2 + sqshrun s0, d0, #3 + sri d0, d0, #1 + srshr d0, d0, #1 + srsra d0, d0, #1 + sshr d0, d0, #1 + ucvtf s0, s0, #1 + ucvtf d0, d0, #2 + scvtf s0, s0, #1 + scvtf d0, d0, #2 + uqrshrn b0, h0, #1 + uqrshrn h0, s0, #2 + uqrshrn s0, d0, #3 + uqshl b0, b0, #1 + uqshl h0, h0, #2 + uqshl s0, s0, #3 + uqshl d0, d0, #4 + uqshrn b0, h0, #1 + uqshrn h0, s0, #2 + uqshrn s0, d0, #3 + urshr d0, d0, #1 + ursra d0, d0, #1 + ushr d0, d0, #1 + usra d0, d0, #1 + +; CHECK: fcvtzs s0, s0, #1 ; encoding: [0x00,0xfc,0x3f,0x5f] +; CHECK: fcvtzs d0, d0, #2 ; encoding: [0x00,0xfc,0x7e,0x5f] +; CHECK: fcvtzu s0, s0, #1 ; encoding: [0x00,0xfc,0x3f,0x7f] +; CHECK: fcvtzu d0, d0, #2 ; encoding: [0x00,0xfc,0x7e,0x7f] +; CHECK: shl d0, d0, #1 ; encoding: [0x00,0x54,0x41,0x5f] +; CHECK: sli d0, d0, #1 ; encoding: [0x00,0x54,0x41,0x7f] +; CHECK: sqrshrn b0, h0, #1 ; encoding: [0x00,0x9c,0x0f,0x5f] +; CHECK: sqrshrn h0, s0, #2 ; encoding: [0x00,0x9c,0x1e,0x5f] +; CHECK: sqrshrn s0, d0, #3 ; encoding: [0x00,0x9c,0x3d,0x5f] +; CHECK: sqrshrun b0, h0, #1 ; encoding: [0x00,0x8c,0x0f,0x7f] +; CHECK: sqrshrun h0, s0, #2 ; encoding: [0x00,0x8c,0x1e,0x7f] +; CHECK: sqrshrun s0, d0, #3 ; encoding: [0x00,0x8c,0x3d,0x7f] +; CHECK: sqshlu b0, b0, #1 ; encoding: [0x00,0x64,0x09,0x7f] +; CHECK: sqshlu h0, h0, #2 ; encoding: [0x00,0x64,0x12,0x7f] +; CHECK: sqshlu s0, s0, #3 ; encoding: [0x00,0x64,0x23,0x7f] +; CHECK: sqshlu d0, d0, #4 ; encoding: [0x00,0x64,0x44,0x7f] +; CHECK: sqshl b0, b0, #1 ; encoding: [0x00,0x74,0x09,0x5f] +; CHECK: sqshl h0, h0, #2 ; encoding: [0x00,0x74,0x12,0x5f] +; CHECK: sqshl s0, s0, #3 ; encoding: [0x00,0x74,0x23,0x5f] +; CHECK: sqshl d0, d0, #4 ; encoding: [0x00,0x74,0x44,0x5f] +; CHECK: sqshrn b0, h0, #1 ; encoding: [0x00,0x94,0x0f,0x5f] +; CHECK: sqshrn h0, s0, #2 ; encoding: [0x00,0x94,0x1e,0x5f] +; CHECK: sqshrn s0, d0, #3 ; encoding: [0x00,0x94,0x3d,0x5f] +; CHECK: sqshrun b0, h0, #1 ; encoding: [0x00,0x84,0x0f,0x7f] +; CHECK: sqshrun h0, s0, #2 ; encoding: [0x00,0x84,0x1e,0x7f] +; CHECK: sqshrun s0, d0, #3 ; encoding: [0x00,0x84,0x3d,0x7f] +; CHECK: sri d0, d0, #1 ; encoding: [0x00,0x44,0x7f,0x7f] +; CHECK: srshr d0, d0, #1 ; encoding: [0x00,0x24,0x7f,0x5f] +; CHECK: srsra d0, d0, #1 ; encoding: [0x00,0x34,0x7f,0x5f] +; CHECK: sshr d0, d0, #1 ; encoding: [0x00,0x04,0x7f,0x5f] +; CHECK: ucvtf s0, s0, #1 ; encoding: [0x00,0xe4,0x3f,0x7f] +; CHECK: ucvtf d0, d0, #2 ; encoding: [0x00,0xe4,0x7e,0x7f] +; check: scvtf s0, s0, #1 ; encoding: [0x00,0xe4,0x3f,0x5f] +; check: scvtf d0, d0, #2 ; encoding: [0x00,0xe4,0x7e,0x5f] +; CHECK: uqrshrn b0, h0, #1 ; encoding: [0x00,0x9c,0x0f,0x7f] +; CHECK: uqrshrn h0, s0, #2 ; encoding: [0x00,0x9c,0x1e,0x7f] +; CHECK: uqrshrn s0, d0, #3 ; encoding: [0x00,0x9c,0x3d,0x7f] +; CHECK: uqshl b0, b0, #1 ; encoding: [0x00,0x74,0x09,0x7f] +; CHECK: uqshl h0, h0, #2 ; encoding: [0x00,0x74,0x12,0x7f] +; CHECK: uqshl s0, s0, #3 ; encoding: [0x00,0x74,0x23,0x7f] +; CHECK: uqshl d0, d0, #4 ; encoding: [0x00,0x74,0x44,0x7f] +; CHECK: uqshrn b0, h0, #1 ; encoding: [0x00,0x94,0x0f,0x7f] +; CHECK: uqshrn h0, s0, #2 ; encoding: [0x00,0x94,0x1e,0x7f] +; CHECK: uqshrn s0, d0, #3 ; encoding: [0x00,0x94,0x3d,0x7f] +; CHECK: urshr d0, d0, #1 ; encoding: [0x00,0x24,0x7f,0x7f] +; CHECK: ursra d0, d0, #1 ; encoding: [0x00,0x34,0x7f,0x7f] +; CHECK: ushr d0, d0, #1 ; encoding: [0x00,0x04,0x7f,0x7f] +; CHECK: usra d0, d0, #1 ; encoding: [0x00,0x14,0x7f,0x7f] + + +;===-------------------------------------------------------------------------=== +; AdvSIMD vector with shift +;===-------------------------------------------------------------------------=== + + fcvtzs.2s v0, v0, #1 + fcvtzs.4s v0, v0, #2 + fcvtzs.2d v0, v0, #3 + fcvtzu.2s v0, v0, #1 + fcvtzu.4s v0, v0, #2 + fcvtzu.2d v0, v0, #3 + rshrn.8b v0, v0, #1 + rshrn2.16b v0, v0, #2 + rshrn.4h v0, v0, #3 + rshrn2.8h v0, v0, #4 + rshrn.2s v0, v0, #5 + rshrn2.4s v0, v0, #6 + scvtf.2s v0, v0, #1 + scvtf.4s v0, v0, #2 + scvtf.2d v0, v0, #3 + shl.8b v0, v0, #1 + shl.16b v0, v0, #2 + shl.4h v0, v0, #3 + shl.8h v0, v0, #4 + shl.2s v0, v0, #5 + shl.4s v0, v0, #6 + shl.2d v0, v0, #7 + shrn.8b v0, v0, #1 + shrn2.16b v0, v0, #2 + shrn.4h v0, v0, #3 + shrn2.8h v0, v0, #4 + shrn.2s v0, v0, #5 + shrn2.4s v0, v0, #6 + sli.8b v0, v0, #1 + sli.16b v0, v0, #2 + sli.4h v0, v0, #3 + sli.8h v0, v0, #4 + sli.2s v0, v0, #5 + sli.4s v0, v0, #6 + sli.2d v0, v0, #7 + sqrshrn.8b v0, v0, #1 + sqrshrn2.16b v0, v0, #2 + sqrshrn.4h v0, v0, #3 + sqrshrn2.8h v0, v0, #4 + sqrshrn.2s v0, v0, #5 + sqrshrn2.4s v0, v0, #6 + sqrshrun.8b v0, v0, #1 + sqrshrun2.16b v0, v0, #2 + sqrshrun.4h v0, v0, #3 + sqrshrun2.8h v0, v0, #4 + sqrshrun.2s v0, v0, #5 + sqrshrun2.4s v0, v0, #6 + sqshlu.8b v0, v0, #1 + sqshlu.16b v0, v0, #2 + sqshlu.4h v0, v0, #3 + sqshlu.8h v0, v0, #4 + sqshlu.2s v0, v0, #5 + sqshlu.4s v0, v0, #6 + sqshlu.2d v0, v0, #7 + sqshl.8b v0, v0, #1 + sqshl.16b v0, v0, #2 + sqshl.4h v0, v0, #3 + sqshl.8h v0, v0, #4 + sqshl.2s v0, v0, #5 + sqshl.4s v0, v0, #6 + sqshl.2d v0, v0, #7 + sqshrn.8b v0, v0, #1 + sqshrn2.16b v0, v0, #2 + sqshrn.4h v0, v0, #3 + sqshrn2.8h v0, v0, #4 + sqshrn.2s v0, v0, #5 + sqshrn2.4s v0, v0, #6 + sqshrun.8b v0, v0, #1 + sqshrun2.16b v0, v0, #2 + sqshrun.4h v0, v0, #3 + sqshrun2.8h v0, v0, #4 + sqshrun.2s v0, v0, #5 + sqshrun2.4s v0, v0, #6 + sri.8b v0, v0, #1 + sri.16b v0, v0, #2 + sri.4h v0, v0, #3 + sri.8h v0, v0, #4 + sri.2s v0, v0, #5 + sri.4s v0, v0, #6 + sri.2d v0, v0, #7 + srshr.8b v0, v0, #1 + srshr.16b v0, v0, #2 + srshr.4h v0, v0, #3 + srshr.8h v0, v0, #4 + srshr.2s v0, v0, #5 + srshr.4s v0, v0, #6 + srshr.2d v0, v0, #7 + srsra.8b v0, v0, #1 + srsra.16b v0, v0, #2 + srsra.4h v0, v0, #3 + srsra.8h v0, v0, #4 + srsra.2s v0, v0, #5 + srsra.4s v0, v0, #6 + srsra.2d v0, v0, #7 + sshll.8h v0, v0, #1 + sshll2.8h v0, v0, #2 + sshll.4s v0, v0, #3 + sshll2.4s v0, v0, #4 + sshll.2d v0, v0, #5 + sshll2.2d v0, v0, #6 + sshr.8b v0, v0, #1 + sshr.16b v0, v0, #2 + sshr.4h v0, v0, #3 + sshr.8h v0, v0, #4 + sshr.2s v0, v0, #5 + sshr.4s v0, v0, #6 + sshr.2d v0, v0, #7 + sshr.8b v0, v0, #1 + ssra.16b v0, v0, #2 + ssra.4h v0, v0, #3 + ssra.8h v0, v0, #4 + ssra.2s v0, v0, #5 + ssra.4s v0, v0, #6 + ssra.2d v0, v0, #7 + ssra d0, d0, #64 + ucvtf.2s v0, v0, #1 + ucvtf.4s v0, v0, #2 + ucvtf.2d v0, v0, #3 + uqrshrn.8b v0, v0, #1 + uqrshrn2.16b v0, v0, #2 + uqrshrn.4h v0, v0, #3 + uqrshrn2.8h v0, v0, #4 + uqrshrn.2s v0, v0, #5 + uqrshrn2.4s v0, v0, #6 + uqshl.8b v0, v0, #1 + uqshl.16b v0, v0, #2 + uqshl.4h v0, v0, #3 + uqshl.8h v0, v0, #4 + uqshl.2s v0, v0, #5 + uqshl.4s v0, v0, #6 + uqshl.2d v0, v0, #7 + uqshrn.8b v0, v0, #1 + uqshrn2.16b v0, v0, #2 + uqshrn.4h v0, v0, #3 + uqshrn2.8h v0, v0, #4 + uqshrn.2s v0, v0, #5 + uqshrn2.4s v0, v0, #6 + urshr.8b v0, v0, #1 + urshr.16b v0, v0, #2 + urshr.4h v0, v0, #3 + urshr.8h v0, v0, #4 + urshr.2s v0, v0, #5 + urshr.4s v0, v0, #6 + urshr.2d v0, v0, #7 + ursra.8b v0, v0, #1 + ursra.16b v0, v0, #2 + ursra.4h v0, v0, #3 + ursra.8h v0, v0, #4 + ursra.2s v0, v0, #5 + ursra.4s v0, v0, #6 + ursra.2d v0, v0, #7 + ushll.8h v0, v0, #1 + ushll2.8h v0, v0, #2 + ushll.4s v0, v0, #3 + ushll2.4s v0, v0, #4 + ushll.2d v0, v0, #5 + ushll2.2d v0, v0, #6 + ushr.8b v0, v0, #1 + ushr.16b v0, v0, #2 + ushr.4h v0, v0, #3 + ushr.8h v0, v0, #4 + ushr.2s v0, v0, #5 + ushr.4s v0, v0, #6 + ushr.2d v0, v0, #7 + usra.8b v0, v0, #1 + usra.16b v0, v0, #2 + usra.4h v0, v0, #3 + usra.8h v0, v0, #4 + usra.2s v0, v0, #5 + usra.4s v0, v0, #6 + usra.2d v0, v0, #7 + +; CHECK: fcvtzs.2s v0, v0, #1 ; encoding: [0x00,0xfc,0x3f,0x0f] +; CHECK: fcvtzs.4s v0, v0, #2 ; encoding: [0x00,0xfc,0x3e,0x4f] +; CHECK: fcvtzs.2d v0, v0, #3 ; encoding: [0x00,0xfc,0x7d,0x4f] +; CHECK: fcvtzu.2s v0, v0, #1 ; encoding: [0x00,0xfc,0x3f,0x2f] +; CHECK: fcvtzu.4s v0, v0, #2 ; encoding: [0x00,0xfc,0x3e,0x6f] +; CHECK: fcvtzu.2d v0, v0, #3 ; encoding: [0x00,0xfc,0x7d,0x6f] +; CHECK: rshrn.8b v0, v0, #1 ; encoding: [0x00,0x8c,0x0f,0x0f] +; CHECK: rshrn2.16b v0, v0, #2 ; encoding: [0x00,0x8c,0x0e,0x4f] +; CHECK: rshrn.4h v0, v0, #3 ; encoding: [0x00,0x8c,0x1d,0x0f] +; CHECK: rshrn2.8h v0, v0, #4 ; encoding: [0x00,0x8c,0x1c,0x4f] +; CHECK: rshrn.2s v0, v0, #5 ; encoding: [0x00,0x8c,0x3b,0x0f] +; CHECK: rshrn2.4s v0, v0, #6 ; encoding: [0x00,0x8c,0x3a,0x4f] +; CHECK: scvtf.2s v0, v0, #1 ; encoding: [0x00,0xe4,0x3f,0x0f] +; CHECK: scvtf.4s v0, v0, #2 ; encoding: [0x00,0xe4,0x3e,0x4f] +; CHECK: scvtf.2d v0, v0, #3 ; encoding: [0x00,0xe4,0x7d,0x4f] +; CHECK: shl.8b v0, v0, #1 ; encoding: [0x00,0x54,0x09,0x0f] +; CHECK: shl.16b v0, v0, #2 ; encoding: [0x00,0x54,0x0a,0x4f] +; CHECK: shl.4h v0, v0, #3 ; encoding: [0x00,0x54,0x13,0x0f] +; CHECK: shl.8h v0, v0, #4 ; encoding: [0x00,0x54,0x14,0x4f] +; CHECK: shl.2s v0, v0, #5 ; encoding: [0x00,0x54,0x25,0x0f] +; CHECK: shl.4s v0, v0, #6 ; encoding: [0x00,0x54,0x26,0x4f] +; CHECK: shl.2d v0, v0, #7 ; encoding: [0x00,0x54,0x47,0x4f] +; CHECK: shrn.8b v0, v0, #1 ; encoding: [0x00,0x84,0x0f,0x0f] +; CHECK: shrn2.16b v0, v0, #2 ; encoding: [0x00,0x84,0x0e,0x4f] +; CHECK: shrn.4h v0, v0, #3 ; encoding: [0x00,0x84,0x1d,0x0f] +; CHECK: shrn2.8h v0, v0, #4 ; encoding: [0x00,0x84,0x1c,0x4f] +; CHECK: shrn.2s v0, v0, #5 ; encoding: [0x00,0x84,0x3b,0x0f] +; CHECK: shrn2.4s v0, v0, #6 ; encoding: [0x00,0x84,0x3a,0x4f] +; CHECK: sli.8b v0, v0, #1 ; encoding: [0x00,0x54,0x09,0x2f] +; CHECK: sli.16b v0, v0, #2 ; encoding: [0x00,0x54,0x0a,0x6f] +; CHECK: sli.4h v0, v0, #3 ; encoding: [0x00,0x54,0x13,0x2f] +; CHECK: sli.8h v0, v0, #4 ; encoding: [0x00,0x54,0x14,0x6f] +; CHECK: sli.2s v0, v0, #5 ; encoding: [0x00,0x54,0x25,0x2f] +; CHECK: sli.4s v0, v0, #6 ; encoding: [0x00,0x54,0x26,0x6f] +; CHECK: sli.2d v0, v0, #7 ; encoding: [0x00,0x54,0x47,0x6f] +; CHECK: sqrshrn.8b v0, v0, #1 ; encoding: [0x00,0x9c,0x0f,0x0f] +; CHECK: sqrshrn2.16b v0, v0, #2 ; encoding: [0x00,0x9c,0x0e,0x4f] +; CHECK: sqrshrn.4h v0, v0, #3 ; encoding: [0x00,0x9c,0x1d,0x0f] +; CHECK: sqrshrn2.8h v0, v0, #4 ; encoding: [0x00,0x9c,0x1c,0x4f] +; CHECK: sqrshrn.2s v0, v0, #5 ; encoding: [0x00,0x9c,0x3b,0x0f] +; CHECK: sqrshrn2.4s v0, v0, #6 ; encoding: [0x00,0x9c,0x3a,0x4f] +; CHECK: sqrshrun.8b v0, v0, #1 ; encoding: [0x00,0x8c,0x0f,0x2f] +; CHECK: sqrshrun2.16b v0, v0, #2 ; encoding: [0x00,0x8c,0x0e,0x6f] +; CHECK: sqrshrun.4h v0, v0, #3 ; encoding: [0x00,0x8c,0x1d,0x2f] +; CHECK: sqrshrun2.8h v0, v0, #4 ; encoding: [0x00,0x8c,0x1c,0x6f] +; CHECK: sqrshrun.2s v0, v0, #5 ; encoding: [0x00,0x8c,0x3b,0x2f] +; CHECK: sqrshrun2.4s v0, v0, #6 ; encoding: [0x00,0x8c,0x3a,0x6f] +; CHECK: sqshlu.8b v0, v0, #1 ; encoding: [0x00,0x64,0x09,0x2f] +; CHECK: sqshlu.16b v0, v0, #2 ; encoding: [0x00,0x64,0x0a,0x6f] +; CHECK: sqshlu.4h v0, v0, #3 ; encoding: [0x00,0x64,0x13,0x2f] +; CHECK: sqshlu.8h v0, v0, #4 ; encoding: [0x00,0x64,0x14,0x6f] +; CHECK: sqshlu.2s v0, v0, #5 ; encoding: [0x00,0x64,0x25,0x2f] +; CHECK: sqshlu.4s v0, v0, #6 ; encoding: [0x00,0x64,0x26,0x6f] +; CHECK: sqshlu.2d v0, v0, #7 ; encoding: [0x00,0x64,0x47,0x6f] +; CHECK: sqshl.8b v0, v0, #1 ; encoding: [0x00,0x74,0x09,0x0f] +; CHECK: sqshl.16b v0, v0, #2 ; encoding: [0x00,0x74,0x0a,0x4f] +; CHECK: sqshl.4h v0, v0, #3 ; encoding: [0x00,0x74,0x13,0x0f] +; CHECK: sqshl.8h v0, v0, #4 ; encoding: [0x00,0x74,0x14,0x4f] +; CHECK: sqshl.2s v0, v0, #5 ; encoding: [0x00,0x74,0x25,0x0f] +; CHECK: sqshl.4s v0, v0, #6 ; encoding: [0x00,0x74,0x26,0x4f] +; CHECK: sqshl.2d v0, v0, #7 ; encoding: [0x00,0x74,0x47,0x4f] +; CHECK: sqshrn.8b v0, v0, #1 ; encoding: [0x00,0x94,0x0f,0x0f] +; CHECK: sqshrn2.16b v0, v0, #2 ; encoding: [0x00,0x94,0x0e,0x4f] +; CHECK: sqshrn.4h v0, v0, #3 ; encoding: [0x00,0x94,0x1d,0x0f] +; CHECK: sqshrn2.8h v0, v0, #4 ; encoding: [0x00,0x94,0x1c,0x4f] +; CHECK: sqshrn.2s v0, v0, #5 ; encoding: [0x00,0x94,0x3b,0x0f] +; CHECK: sqshrn2.4s v0, v0, #6 ; encoding: [0x00,0x94,0x3a,0x4f] +; CHECK: sqshrun.8b v0, v0, #1 ; encoding: [0x00,0x84,0x0f,0x2f] +; CHECK: sqshrun2.16b v0, v0, #2 ; encoding: [0x00,0x84,0x0e,0x6f] +; CHECK: sqshrun.4h v0, v0, #3 ; encoding: [0x00,0x84,0x1d,0x2f] +; CHECK: sqshrun2.8h v0, v0, #4 ; encoding: [0x00,0x84,0x1c,0x6f] +; CHECK: sqshrun.2s v0, v0, #5 ; encoding: [0x00,0x84,0x3b,0x2f] +; CHECK: sqshrun2.4s v0, v0, #6 ; encoding: [0x00,0x84,0x3a,0x6f] +; CHECK: sri.8b v0, v0, #1 ; encoding: [0x00,0x44,0x0f,0x2f] +; CHECK: sri.16b v0, v0, #2 ; encoding: [0x00,0x44,0x0e,0x6f] +; CHECK: sri.4h v0, v0, #3 ; encoding: [0x00,0x44,0x1d,0x2f] +; CHECK: sri.8h v0, v0, #4 ; encoding: [0x00,0x44,0x1c,0x6f] +; CHECK: sri.2s v0, v0, #5 ; encoding: [0x00,0x44,0x3b,0x2f] +; CHECK: sri.4s v0, v0, #6 ; encoding: [0x00,0x44,0x3a,0x6f] +; CHECK: sri.2d v0, v0, #7 ; encoding: [0x00,0x44,0x79,0x6f] +; CHECK: srshr.8b v0, v0, #1 ; encoding: [0x00,0x24,0x0f,0x0f] +; CHECK: srshr.16b v0, v0, #2 ; encoding: [0x00,0x24,0x0e,0x4f] +; CHECK: srshr.4h v0, v0, #3 ; encoding: [0x00,0x24,0x1d,0x0f] +; CHECK: srshr.8h v0, v0, #4 ; encoding: [0x00,0x24,0x1c,0x4f] +; CHECK: srshr.2s v0, v0, #5 ; encoding: [0x00,0x24,0x3b,0x0f] +; CHECK: srshr.4s v0, v0, #6 ; encoding: [0x00,0x24,0x3a,0x4f] +; CHECK: srshr.2d v0, v0, #7 ; encoding: [0x00,0x24,0x79,0x4f] +; CHECK: srsra.8b v0, v0, #1 ; encoding: [0x00,0x34,0x0f,0x0f] +; CHECK: srsra.16b v0, v0, #2 ; encoding: [0x00,0x34,0x0e,0x4f] +; CHECK: srsra.4h v0, v0, #3 ; encoding: [0x00,0x34,0x1d,0x0f] +; CHECK: srsra.8h v0, v0, #4 ; encoding: [0x00,0x34,0x1c,0x4f] +; CHECK: srsra.2s v0, v0, #5 ; encoding: [0x00,0x34,0x3b,0x0f] +; CHECK: srsra.4s v0, v0, #6 ; encoding: [0x00,0x34,0x3a,0x4f] +; CHECK: srsra.2d v0, v0, #7 ; encoding: [0x00,0x34,0x79,0x4f] +; CHECK: sshll.8h v0, v0, #1 ; encoding: [0x00,0xa4,0x09,0x0f] +; CHECK: sshll2.8h v0, v0, #2 ; encoding: [0x00,0xa4,0x0a,0x4f] +; CHECK: sshll.4s v0, v0, #3 ; encoding: [0x00,0xa4,0x13,0x0f] +; CHECK: sshll2.4s v0, v0, #4 ; encoding: [0x00,0xa4,0x14,0x4f] +; CHECK: sshll.2d v0, v0, #5 ; encoding: [0x00,0xa4,0x25,0x0f] +; CHECK: sshll2.2d v0, v0, #6 ; encoding: [0x00,0xa4,0x26,0x4f] +; CHECK: sshr.8b v0, v0, #1 ; encoding: [0x00,0x04,0x0f,0x0f] +; CHECK: sshr.16b v0, v0, #2 ; encoding: [0x00,0x04,0x0e,0x4f] +; CHECK: sshr.4h v0, v0, #3 ; encoding: [0x00,0x04,0x1d,0x0f] +; CHECK: sshr.8h v0, v0, #4 ; encoding: [0x00,0x04,0x1c,0x4f] +; CHECK: sshr.2s v0, v0, #5 ; encoding: [0x00,0x04,0x3b,0x0f] +; CHECK: sshr.4s v0, v0, #6 ; encoding: [0x00,0x04,0x3a,0x4f] +; CHECK: sshr.2d v0, v0, #7 ; encoding: [0x00,0x04,0x79,0x4f] +; CHECK: sshr.8b v0, v0, #1 ; encoding: [0x00,0x04,0x0f,0x0f] +; CHECK: ssra.16b v0, v0, #2 ; encoding: [0x00,0x14,0x0e,0x4f] +; CHECK: ssra.4h v0, v0, #3 ; encoding: [0x00,0x14,0x1d,0x0f] +; CHECK: ssra.8h v0, v0, #4 ; encoding: [0x00,0x14,0x1c,0x4f] +; CHECK: ssra.2s v0, v0, #5 ; encoding: [0x00,0x14,0x3b,0x0f] +; CHECK: ssra.4s v0, v0, #6 ; encoding: [0x00,0x14,0x3a,0x4f] +; CHECK: ssra.2d v0, v0, #7 ; encoding: [0x00,0x14,0x79,0x4f] +; CHECK: ssra d0, d0, #64 ; encoding: [0x00,0x14,0x40,0x5f] +; CHECK: ucvtf.2s v0, v0, #1 ; encoding: [0x00,0xe4,0x3f,0x2f] +; CHECK: ucvtf.4s v0, v0, #2 ; encoding: [0x00,0xe4,0x3e,0x6f] +; CHECK: ucvtf.2d v0, v0, #3 ; encoding: [0x00,0xe4,0x7d,0x6f] +; CHECK: uqrshrn.8b v0, v0, #1 ; encoding: [0x00,0x9c,0x0f,0x2f] +; CHECK: uqrshrn2.16b v0, v0, #2 ; encoding: [0x00,0x9c,0x0e,0x6f] +; CHECK: uqrshrn.4h v0, v0, #3 ; encoding: [0x00,0x9c,0x1d,0x2f] +; CHECK: uqrshrn2.8h v0, v0, #4 ; encoding: [0x00,0x9c,0x1c,0x6f] +; CHECK: uqrshrn.2s v0, v0, #5 ; encoding: [0x00,0x9c,0x3b,0x2f] +; CHECK: uqrshrn2.4s v0, v0, #6 ; encoding: [0x00,0x9c,0x3a,0x6f] +; CHECK: uqshl.8b v0, v0, #1 ; encoding: [0x00,0x74,0x09,0x2f] +; CHECK: uqshl.16b v0, v0, #2 ; encoding: [0x00,0x74,0x0a,0x6f] +; CHECK: uqshl.4h v0, v0, #3 ; encoding: [0x00,0x74,0x13,0x2f] +; CHECK: uqshl.8h v0, v0, #4 ; encoding: [0x00,0x74,0x14,0x6f] +; CHECK: uqshl.2s v0, v0, #5 ; encoding: [0x00,0x74,0x25,0x2f] +; CHECK: uqshl.4s v0, v0, #6 ; encoding: [0x00,0x74,0x26,0x6f] +; CHECK: uqshl.2d v0, v0, #7 ; encoding: [0x00,0x74,0x47,0x6f] +; CHECK: uqshrn.8b v0, v0, #1 ; encoding: [0x00,0x94,0x0f,0x2f] +; CHECK: uqshrn2.16b v0, v0, #2 ; encoding: [0x00,0x94,0x0e,0x6f] +; CHECK: uqshrn.4h v0, v0, #3 ; encoding: [0x00,0x94,0x1d,0x2f] +; CHECK: uqshrn2.8h v0, v0, #4 ; encoding: [0x00,0x94,0x1c,0x6f] +; CHECK: uqshrn.2s v0, v0, #5 ; encoding: [0x00,0x94,0x3b,0x2f] +; CHECK: uqshrn2.4s v0, v0, #6 ; encoding: [0x00,0x94,0x3a,0x6f] +; CHECK: urshr.8b v0, v0, #1 ; encoding: [0x00,0x24,0x0f,0x2f] +; CHECK: urshr.16b v0, v0, #2 ; encoding: [0x00,0x24,0x0e,0x6f] +; CHECK: urshr.4h v0, v0, #3 ; encoding: [0x00,0x24,0x1d,0x2f] +; CHECK: urshr.8h v0, v0, #4 ; encoding: [0x00,0x24,0x1c,0x6f] +; CHECK: urshr.2s v0, v0, #5 ; encoding: [0x00,0x24,0x3b,0x2f] +; CHECK: urshr.4s v0, v0, #6 ; encoding: [0x00,0x24,0x3a,0x6f] +; CHECK: urshr.2d v0, v0, #7 ; encoding: [0x00,0x24,0x79,0x6f] +; CHECK: ursra.8b v0, v0, #1 ; encoding: [0x00,0x34,0x0f,0x2f] +; CHECK: ursra.16b v0, v0, #2 ; encoding: [0x00,0x34,0x0e,0x6f] +; CHECK: ursra.4h v0, v0, #3 ; encoding: [0x00,0x34,0x1d,0x2f] +; CHECK: ursra.8h v0, v0, #4 ; encoding: [0x00,0x34,0x1c,0x6f] +; CHECK: ursra.2s v0, v0, #5 ; encoding: [0x00,0x34,0x3b,0x2f] +; CHECK: ursra.4s v0, v0, #6 ; encoding: [0x00,0x34,0x3a,0x6f] +; CHECK: ursra.2d v0, v0, #7 ; encoding: [0x00,0x34,0x79,0x6f] +; CHECK: ushll.8h v0, v0, #1 ; encoding: [0x00,0xa4,0x09,0x2f] +; CHECK: ushll2.8h v0, v0, #2 ; encoding: [0x00,0xa4,0x0a,0x6f] +; CHECK: ushll.4s v0, v0, #3 ; encoding: [0x00,0xa4,0x13,0x2f] +; CHECK: ushll2.4s v0, v0, #4 ; encoding: [0x00,0xa4,0x14,0x6f] +; CHECK: ushll.2d v0, v0, #5 ; encoding: [0x00,0xa4,0x25,0x2f] +; CHECK: ushll2.2d v0, v0, #6 ; encoding: [0x00,0xa4,0x26,0x6f] +; CHECK: ushr.8b v0, v0, #1 ; encoding: [0x00,0x04,0x0f,0x2f] +; CHECK: ushr.16b v0, v0, #2 ; encoding: [0x00,0x04,0x0e,0x6f] +; CHECK: ushr.4h v0, v0, #3 ; encoding: [0x00,0x04,0x1d,0x2f] +; CHECK: ushr.8h v0, v0, #4 ; encoding: [0x00,0x04,0x1c,0x6f] +; CHECK: ushr.2s v0, v0, #5 ; encoding: [0x00,0x04,0x3b,0x2f] +; CHECK: ushr.4s v0, v0, #6 ; encoding: [0x00,0x04,0x3a,0x6f] +; CHECK: ushr.2d v0, v0, #7 ; encoding: [0x00,0x04,0x79,0x6f] +; CHECK: usra.8b v0, v0, #1 ; encoding: [0x00,0x14,0x0f,0x2f] +; CHECK: usra.16b v0, v0, #2 ; encoding: [0x00,0x14,0x0e,0x6f] +; CHECK: usra.4h v0, v0, #3 ; encoding: [0x00,0x14,0x1d,0x2f] +; CHECK: usra.8h v0, v0, #4 ; encoding: [0x00,0x14,0x1c,0x6f] +; CHECK: usra.2s v0, v0, #5 ; encoding: [0x00,0x14,0x3b,0x2f] +; CHECK: usra.4s v0, v0, #6 ; encoding: [0x00,0x14,0x3a,0x6f] +; CHECK: usra.2d v0, v0, #7 ; encoding: [0x00,0x14,0x79,0x6f] + + +; ARM Verbose syntax variants. + + rshrn v9.8b, v11.8h, #1 + rshrn2 v8.16b, v9.8h, #2 + rshrn v7.4h, v8.4s, #3 + rshrn2 v6.8h, v7.4s, #4 + rshrn v5.2s, v6.2d, #5 + rshrn2 v4.4s, v5.2d, #6 + + shrn v9.8b, v11.8h, #1 + shrn2 v8.16b, v9.8h, #2 + shrn v7.4h, v8.4s, #3 + shrn2 v6.8h, v7.4s, #4 + shrn v5.2s, v6.2d, #5 + shrn2 v4.4s, v5.2d, #6 + + sqrshrn v9.8b, v11.8h, #1 + sqrshrn2 v8.16b, v9.8h, #2 + sqrshrn v7.4h, v8.4s, #3 + sqrshrn2 v6.8h, v7.4s, #4 + sqrshrn v5.2s, v6.2d, #5 + sqrshrn2 v4.4s, v5.2d, #6 + + sqshrn v9.8b, v11.8h, #1 + sqshrn2 v8.16b, v9.8h, #2 + sqshrn v7.4h, v8.4s, #3 + sqshrn2 v6.8h, v7.4s, #4 + sqshrn v5.2s, v6.2d, #5 + sqshrn2 v4.4s, v5.2d, #6 + + sqrshrun v9.8b, v11.8h, #1 + sqrshrun2 v8.16b, v9.8h, #2 + sqrshrun v7.4h, v8.4s, #3 + sqrshrun2 v6.8h, v7.4s, #4 + sqrshrun v5.2s, v6.2d, #5 + sqrshrun2 v4.4s, v5.2d, #6 + + sqshrun v9.8b, v11.8h, #1 + sqshrun2 v8.16b, v9.8h, #2 + sqshrun v7.4h, v8.4s, #3 + sqshrun2 v6.8h, v7.4s, #4 + sqshrun v5.2s, v6.2d, #5 + sqshrun2 v4.4s, v5.2d, #6 + + uqrshrn v9.8b, v11.8h, #1 + uqrshrn2 v8.16b, v9.8h, #2 + uqrshrn v7.4h, v8.4s, #3 + uqrshrn2 v6.8h, v7.4s, #4 + uqrshrn v5.2s, v6.2d, #5 + uqrshrn2 v4.4s, v5.2d, #6 + + uqshrn v9.8b, v11.8h, #1 + uqshrn2 v8.16b, v9.8h, #2 + uqshrn v7.4h, v8.4s, #3 + uqshrn2 v6.8h, v7.4s, #4 + uqshrn v5.2s, v6.2d, #5 + uqshrn2 v4.4s, v5.2d, #6 + + sshll2 v10.8h, v3.16b, #6 + sshll2 v11.4s, v4.8h, #5 + sshll2 v12.2d, v5.4s, #4 + sshll v13.8h, v6.8b, #3 + sshll v14.4s, v7.4h, #2 + sshll v15.2d, v8.2s, #7 + + ushll2 v10.8h, v3.16b, #6 + ushll2 v11.4s, v4.8h, #5 + ushll2 v12.2d, v5.4s, #4 + ushll v13.8h, v6.8b, #3 + ushll v14.4s, v7.4h, #2 + ushll v15.2d, v8.2s, #7 + + +; CHECK: rshrn.8b v9, v11, #1 ; encoding: [0x69,0x8d,0x0f,0x0f] +; CHECK: rshrn2.16b v8, v9, #2 ; encoding: [0x28,0x8d,0x0e,0x4f] +; CHECK: rshrn.4h v7, v8, #3 ; encoding: [0x07,0x8d,0x1d,0x0f] +; CHECK: rshrn2.8h v6, v7, #4 ; encoding: [0xe6,0x8c,0x1c,0x4f] +; CHECK: rshrn.2s v5, v6, #5 ; encoding: [0xc5,0x8c,0x3b,0x0f] +; CHECK: rshrn2.4s v4, v5, #6 ; encoding: [0xa4,0x8c,0x3a,0x4f] +; CHECK: shrn.8b v9, v11, #1 ; encoding: [0x69,0x85,0x0f,0x0f] +; CHECK: shrn2.16b v8, v9, #2 ; encoding: [0x28,0x85,0x0e,0x4f] +; CHECK: shrn.4h v7, v8, #3 ; encoding: [0x07,0x85,0x1d,0x0f] +; CHECK: shrn2.8h v6, v7, #4 ; encoding: [0xe6,0x84,0x1c,0x4f] +; CHECK: shrn.2s v5, v6, #5 ; encoding: [0xc5,0x84,0x3b,0x0f] +; CHECK: shrn2.4s v4, v5, #6 ; encoding: [0xa4,0x84,0x3a,0x4f] +; CHECK: sqrshrn.8b v9, v11, #1 ; encoding: [0x69,0x9d,0x0f,0x0f] +; CHECK: sqrshrn2.16b v8, v9, #2 ; encoding: [0x28,0x9d,0x0e,0x4f] +; CHECK: sqrshrn.4h v7, v8, #3 ; encoding: [0x07,0x9d,0x1d,0x0f] +; CHECK: sqrshrn2.8h v6, v7, #4 ; encoding: [0xe6,0x9c,0x1c,0x4f] +; CHECK: sqrshrn.2s v5, v6, #5 ; encoding: [0xc5,0x9c,0x3b,0x0f] +; CHECK: sqrshrn2.4s v4, v5, #6 ; encoding: [0xa4,0x9c,0x3a,0x4f] +; CHECK: sqshrn.8b v9, v11, #1 ; encoding: [0x69,0x95,0x0f,0x0f] +; CHECK: sqshrn2.16b v8, v9, #2 ; encoding: [0x28,0x95,0x0e,0x4f] +; CHECK: sqshrn.4h v7, v8, #3 ; encoding: [0x07,0x95,0x1d,0x0f] +; CHECK: sqshrn2.8h v6, v7, #4 ; encoding: [0xe6,0x94,0x1c,0x4f] +; CHECK: sqshrn.2s v5, v6, #5 ; encoding: [0xc5,0x94,0x3b,0x0f] +; CHECK: sqshrn2.4s v4, v5, #6 ; encoding: [0xa4,0x94,0x3a,0x4f] +; CHECK: sqrshrun.8b v9, v11, #1 ; encoding: [0x69,0x8d,0x0f,0x2f] +; CHECK: sqrshrun2.16b v8, v9, #2 ; encoding: [0x28,0x8d,0x0e,0x6f] +; CHECK: sqrshrun.4h v7, v8, #3 ; encoding: [0x07,0x8d,0x1d,0x2f] +; CHECK: sqrshrun2.8h v6, v7, #4 ; encoding: [0xe6,0x8c,0x1c,0x6f] +; CHECK: sqrshrun.2s v5, v6, #5 ; encoding: [0xc5,0x8c,0x3b,0x2f] +; CHECK: sqrshrun2.4s v4, v5, #6 ; encoding: [0xa4,0x8c,0x3a,0x6f] +; CHECK: sqshrun.8b v9, v11, #1 ; encoding: [0x69,0x85,0x0f,0x2f] +; CHECK: sqshrun2.16b v8, v9, #2 ; encoding: [0x28,0x85,0x0e,0x6f] +; CHECK: sqshrun.4h v7, v8, #3 ; encoding: [0x07,0x85,0x1d,0x2f] +; CHECK: sqshrun2.8h v6, v7, #4 ; encoding: [0xe6,0x84,0x1c,0x6f] +; CHECK: sqshrun.2s v5, v6, #5 ; encoding: [0xc5,0x84,0x3b,0x2f] +; CHECK: sqshrun2.4s v4, v5, #6 ; encoding: [0xa4,0x84,0x3a,0x6f] +; CHECK: uqrshrn.8b v9, v11, #1 ; encoding: [0x69,0x9d,0x0f,0x2f] +; CHECK: uqrshrn2.16b v8, v9, #2 ; encoding: [0x28,0x9d,0x0e,0x6f] +; CHECK: uqrshrn.4h v7, v8, #3 ; encoding: [0x07,0x9d,0x1d,0x2f] +; CHECK: uqrshrn2.8h v6, v7, #4 ; encoding: [0xe6,0x9c,0x1c,0x6f] +; CHECK: uqrshrn.2s v5, v6, #5 ; encoding: [0xc5,0x9c,0x3b,0x2f] +; CHECK: uqrshrn2.4s v4, v5, #6 ; encoding: [0xa4,0x9c,0x3a,0x6f] +; CHECK: uqshrn.8b v9, v11, #1 ; encoding: [0x69,0x95,0x0f,0x2f] +; CHECK: uqshrn2.16b v8, v9, #2 ; encoding: [0x28,0x95,0x0e,0x6f] +; CHECK: uqshrn.4h v7, v8, #3 ; encoding: [0x07,0x95,0x1d,0x2f] +; CHECK: uqshrn2.8h v6, v7, #4 ; encoding: [0xe6,0x94,0x1c,0x6f] +; CHECK: uqshrn.2s v5, v6, #5 ; encoding: [0xc5,0x94,0x3b,0x2f] +; CHECK: uqshrn2.4s v4, v5, #6 ; encoding: [0xa4,0x94,0x3a,0x6f] +; CHECK: sshll2.8h v10, v3, #6 ; encoding: [0x6a,0xa4,0x0e,0x4f] +; CHECK: sshll2.4s v11, v4, #5 ; encoding: [0x8b,0xa4,0x15,0x4f] +; CHECK: sshll2.2d v12, v5, #4 ; encoding: [0xac,0xa4,0x24,0x4f] +; CHECK: sshll.8h v13, v6, #3 ; encoding: [0xcd,0xa4,0x0b,0x0f] +; CHECK: sshll.4s v14, v7, #2 ; encoding: [0xee,0xa4,0x12,0x0f] +; CHECK: sshll.2d v15, v8, #7 ; encoding: [0x0f,0xa5,0x27,0x0f] +; CHECK: ushll2.8h v10, v3, #6 ; encoding: [0x6a,0xa4,0x0e,0x6f] +; CHECK: ushll2.4s v11, v4, #5 ; encoding: [0x8b,0xa4,0x15,0x6f] +; CHECK: ushll2.2d v12, v5, #4 ; encoding: [0xac,0xa4,0x24,0x6f] +; CHECK: ushll.8h v13, v6, #3 ; encoding: [0xcd,0xa4,0x0b,0x2f] +; CHECK: ushll.4s v14, v7, #2 ; encoding: [0xee,0xa4,0x12,0x2f] +; CHECK: ushll.2d v15, v8, #7 ; encoding: [0x0f,0xa5,0x27,0x2f] + + + pmull.8h v0, v0, v0 + pmull2.8h v0, v0, v0 + pmull.1q v2, v3, v4 + pmull2.1q v2, v3, v4 + pmull v2.1q, v3.1d, v4.1d + pmull2 v2.1q, v3.2d, v4.2d + +; CHECK: pmull.8h v0, v0, v0 ; encoding: [0x00,0xe0,0x20,0x0e] +; CHECK: pmull2.8h v0, v0, v0 ; encoding: [0x00,0xe0,0x20,0x4e] +; CHECK: pmull.1q v2, v3, v4 ; encoding: [0x62,0xe0,0xe4,0x0e] +; CHECK: pmull2.1q v2, v3, v4 ; encoding: [0x62,0xe0,0xe4,0x4e] +; CHECK: pmull.1q v2, v3, v4 ; encoding: [0x62,0xe0,0xe4,0x0e] +; CHECK: pmull2.1q v2, v3, v4 ; encoding: [0x62,0xe0,0xe4,0x4e] + + + faddp.2d d1, v2 + faddp.2s s3, v4 +; CHECK: faddp.2d d1, v2 ; encoding: [0x41,0xd8,0x70,0x7e] +; CHECK: faddp.2s s3, v4 ; encoding: [0x83,0xd8,0x30,0x7e] + + tbl.16b v2, {v4,v5,v6,v7}, v1 + tbl.8b v0, {v4,v5,v6,v7}, v1 + tbl.16b v2, {v5}, v1 + tbl.8b v0, {v5}, v1 + tbl.16b v2, {v5,v6,v7}, v1 + tbl.8b v0, {v5,v6,v7}, v1 + tbl.16b v2, {v6,v7}, v1 + tbl.8b v0, {v6,v7}, v1 +; CHECK: tbl.16b v2, { v4, v5, v6, v7 }, v1 ; encoding: [0x82,0x60,0x01,0x4e] +; CHECK: tbl.8b v0, { v4, v5, v6, v7 }, v1 ; encoding: [0x80,0x60,0x01,0x0e] +; CHECK: tbl.16b v2, { v5 }, v1 ; encoding: [0xa2,0x00,0x01,0x4e] +; CHECK: tbl.8b v0, { v5 }, v1 ; encoding: [0xa0,0x00,0x01,0x0e] +; CHECK: tbl.16b v2, { v5, v6, v7 }, v1 ; encoding: [0xa2,0x40,0x01,0x4e] +; CHECK: tbl.8b v0, { v5, v6, v7 }, v1 ; encoding: [0xa0,0x40,0x01,0x0e] +; CHECK: tbl.16b v2, { v6, v7 }, v1 ; encoding: [0xc2,0x20,0x01,0x4e] +; CHECK: tbl.8b v0, { v6, v7 }, v1 ; encoding: [0xc0,0x20,0x01,0x0e] + + tbl v2.16b, {v4.16b,v5.16b,v6.16b,v7.16b}, v1.16b + tbl v0.8b, {v4.16b,v5.16b,v6.16b,v7.16b}, v1.8b + tbl v2.16b, {v5.16b}, v1.16b + tbl v0.8b, {v5.16b}, v1.8b + tbl v2.16b, {v5.16b,v6.16b,v7.16b}, v1.16b + tbl v0.8b, {v5.16b,v6.16b,v7.16b}, v1.8b + tbl v2.16b, {v6.16b,v7.16b}, v1.16b + tbl v0.8b, {v6.16b,v7.16b}, v1.8b +; CHECK: tbl.16b v2, { v4, v5, v6, v7 }, v1 ; encoding: [0x82,0x60,0x01,0x4e] +; CHECK: tbl.8b v0, { v4, v5, v6, v7 }, v1 ; encoding: [0x80,0x60,0x01,0x0e] +; CHECK: tbl.16b v2, { v5 }, v1 ; encoding: [0xa2,0x00,0x01,0x4e] +; CHECK: tbl.8b v0, { v5 }, v1 ; encoding: [0xa0,0x00,0x01,0x0e] +; CHECK: tbl.16b v2, { v5, v6, v7 }, v1 ; encoding: [0xa2,0x40,0x01,0x4e] +; CHECK: tbl.8b v0, { v5, v6, v7 }, v1 ; encoding: [0xa0,0x40,0x01,0x0e] +; CHECK: tbl.16b v2, { v6, v7 }, v1 ; encoding: [0xc2,0x20,0x01,0x4e] +; CHECK: tbl.8b v0, { v6, v7 }, v1 ; encoding: [0xc0,0x20,0x01,0x0e] + + sqdmull s0, h0, h0 + sqdmull d0, s0, s0 +; CHECK: sqdmull s0, h0, h0 ; encoding: [0x00,0xd0,0x60,0x5e] +; CHECK: sqdmull d0, s0, s0 ; encoding: [0x00,0xd0,0xa0,0x5e] + + frsqrte s0, s0 + frsqrte d0, d0 +; CHECK: frsqrte s0, s0 ; encoding: [0x00,0xd8,0xa1,0x7e] +; CHECK: frsqrte d0, d0 ; encoding: [0x00,0xd8,0xe1,0x7e] + + mov.16b v0, v0 + mov.2s v0, v0 +; CHECK: mov.16b v0, v0 ; encoding: [0x00,0x1c,0xa0,0x4e] +; CHECK: mov.8b v0, v0 ; encoding: [0x00,0x1c,0xa0,0x0e] + + +; uadalp/sadalp verbose mode aliases. + uadalp v14.4h, v25.8b + uadalp v15.8h, v24.16b + uadalp v16.2s, v23.4h + uadalp v17.4s, v22.8h + uadalp v18.1d, v21.2s + uadalp v19.2d, v20.4s + + sadalp v1.4h, v11.8b + sadalp v2.8h, v12.16b + sadalp v3.2s, v13.4h + sadalp v4.4s, v14.8h + sadalp v5.1d, v15.2s + sadalp v6.2d, v16.4s + +; CHECK: uadalp.4h v14, v25 ; encoding: [0x2e,0x6b,0x20,0x2e] +; CHECK: uadalp.8h v15, v24 ; encoding: [0x0f,0x6b,0x20,0x6e] +; CHECK: uadalp.2s v16, v23 ; encoding: [0xf0,0x6a,0x60,0x2e] +; CHECK: uadalp.4s v17, v22 ; encoding: [0xd1,0x6a,0x60,0x6e] +; CHECK: uadalp.1d v18, v21 ; encoding: [0xb2,0x6a,0xa0,0x2e] +; CHECK: uadalp.2d v19, v20 ; encoding: [0x93,0x6a,0xa0,0x6e] +; CHECK: sadalp.4h v1, v11 ; encoding: [0x61,0x69,0x20,0x0e] +; CHECK: sadalp.8h v2, v12 ; encoding: [0x82,0x69,0x20,0x4e] +; CHECK: sadalp.2s v3, v13 ; encoding: [0xa3,0x69,0x60,0x0e] +; CHECK: sadalp.4s v4, v14 ; encoding: [0xc4,0x69,0x60,0x4e] +; CHECK: sadalp.1d v5, v15 ; encoding: [0xe5,0x69,0xa0,0x0e] +; CHECK: sadalp.2d v6, v16 ; encoding: [0x06,0x6a,0xa0,0x4e] + +; MVN is an alias for 'not'. + mvn v1.8b, v4.8b + mvn v19.16b, v17.16b + mvn.8b v10, v6 + mvn.16b v11, v7 + +; CHECK: mvn.8b v1, v4 ; encoding: [0x81,0x58,0x20,0x2e] +; CHECK: mvn.16b v19, v17 ; encoding: [0x33,0x5a,0x20,0x6e] +; CHECK: mvn.8b v10, v6 ; encoding: [0xca,0x58,0x20,0x2e] +; CHECK: mvn.16b v11, v7 ; encoding: [0xeb,0x58,0x20,0x6e] + +; sqdmull verbose mode aliases + sqdmull v10.4s, v12.4h, v12.4h + sqdmull2 v10.4s, v13.8h, v13.8h + sqdmull v10.2d, v13.2s, v13.2s + sqdmull2 v10.2d, v13.4s, v13.4s +; CHECK: sqdmull.4s v10, v12, v12 ; encoding: [0x8a,0xd1,0x6c,0x0e] +; CHECK: sqdmull2.4s v10, v13, v13 ; encoding: [0xaa,0xd1,0x6d,0x4e] +; CHECK: sqdmull.2d v10, v13, v13 ; encoding: [0xaa,0xd1,0xad,0x0e] +; CHECK: sqdmull2.2d v10, v13, v13 ; encoding: [0xaa,0xd1,0xad,0x4e] + +; xtn verbose mode aliases + xtn v14.8b, v14.8h + xtn2 v14.16b, v14.8h + xtn v14.4h, v14.4s + xtn2 v14.8h, v14.4s + xtn v14.2s, v14.2d + xtn2 v14.4s, v14.2d +; CHECK: xtn.8b v14, v14 ; encoding: [0xce,0x29,0x21,0x0e] +; CHECK: xtn2.16b v14, v14 ; encoding: [0xce,0x29,0x21,0x4e] +; CHECK: xtn.4h v14, v14 ; encoding: [0xce,0x29,0x61,0x0e] +; CHECK: xtn2.8h v14, v14 ; encoding: [0xce,0x29,0x61,0x4e] +; CHECK: xtn.2s v14, v14 ; encoding: [0xce,0x29,0xa1,0x0e] +; CHECK: xtn2.4s v14, v14 ; encoding: [0xce,0x29,0xa1,0x4e] + +; uaddl verbose mode aliases + uaddl v9.8h, v13.8b, v14.8b + uaddl2 v9.8h, v13.16b, v14.16b + uaddl v9.4s, v13.4h, v14.4h + uaddl2 v9.4s, v13.8h, v14.8h + uaddl v9.2d, v13.2s, v14.2s + uaddl2 v9.2d, v13.4s, v14.4s +; CHECK: uaddl.8h v9, v13, v14 ; encoding: [0xa9,0x01,0x2e,0x2e] +; CHECK: uaddl2.8h v9, v13, v14 ; encoding: [0xa9,0x01,0x2e,0x6e] +; CHECK: uaddl.4s v9, v13, v14 ; encoding: [0xa9,0x01,0x6e,0x2e] +; CHECK: uaddl2.4s v9, v13, v14 ; encoding: [0xa9,0x01,0x6e,0x6e] +; CHECK: uaddl.2d v9, v13, v14 ; encoding: [0xa9,0x01,0xae,0x2e] +; CHECK: uaddl2.2d v9, v13, v14 ; encoding: [0xa9,0x01,0xae,0x6e] + +; bit verbose mode aliases + bit v9.16b, v10.16b, v10.16b + bit v9.8b, v10.8b, v10.8b +; CHECK: bit.16b v9, v10, v10 ; encoding: [0x49,0x1d,0xaa,0x6e] +; CHECK: bit.8b v9, v10, v10 ; encoding: [0x49,0x1d,0xaa,0x2e] + +; pmull verbose mode aliases + pmull v8.8h, v8.8b, v8.8b + pmull2 v8.8h, v8.16b, v8.16b + pmull v8.1q, v8.1d, v8.1d + pmull2 v8.1q, v8.2d, v8.2d +; CHECK: pmull.8h v8, v8, v8 ; encoding: [0x08,0xe1,0x28,0x0e] +; CHECK: pmull2.8h v8, v8, v8 ; encoding: [0x08,0xe1,0x28,0x4e] +; CHECK: pmull.1q v8, v8, v8 ; encoding: [0x08,0xe1,0xe8,0x0e] +; CHECK: pmull2.1q v8, v8, v8 ; encoding: [0x08,0xe1,0xe8,0x4e] + +; usubl verbose mode aliases + usubl v9.8h, v13.8b, v14.8b + usubl2 v9.8h, v13.16b, v14.16b + usubl v9.4s, v13.4h, v14.4h + usubl2 v9.4s, v13.8h, v14.8h + usubl v9.2d, v13.2s, v14.2s + usubl2 v9.2d, v13.4s, v14.4s +; CHECK: usubl.8h v9, v13, v14 ; encoding: [0xa9,0x21,0x2e,0x2e] +; CHECK: usubl2.8h v9, v13, v14 ; encoding: [0xa9,0x21,0x2e,0x6e] +; CHECK: usubl.4s v9, v13, v14 ; encoding: [0xa9,0x21,0x6e,0x2e] +; CHECK: usubl2.4s v9, v13, v14 ; encoding: [0xa9,0x21,0x6e,0x6e] +; CHECK: usubl.2d v9, v13, v14 ; encoding: [0xa9,0x21,0xae,0x2e] +; CHECK: usubl2.2d v9, v13, v14 ; encoding: [0xa9,0x21,0xae,0x6e] + +; uabdl verbose mode aliases + uabdl v9.8h, v13.8b, v14.8b + uabdl2 v9.8h, v13.16b, v14.16b + uabdl v9.4s, v13.4h, v14.4h + uabdl2 v9.4s, v13.8h, v14.8h + uabdl v9.2d, v13.2s, v14.2s + uabdl2 v9.2d, v13.4s, v14.4s +; CHECK: uabdl.8h v9, v13, v14 ; encoding: [0xa9,0x71,0x2e,0x2e] +; CHECK: uabdl2.8h v9, v13, v14 ; encoding: [0xa9,0x71,0x2e,0x6e] +; CHECK: uabdl.4s v9, v13, v14 ; encoding: [0xa9,0x71,0x6e,0x2e] +; CHECK: uabdl2.4s v9, v13, v14 ; encoding: [0xa9,0x71,0x6e,0x6e] +; CHECK: uabdl.2d v9, v13, v14 ; encoding: [0xa9,0x71,0xae,0x2e] +; CHECK: uabdl2.2d v9, v13, v14 ; encoding: [0xa9,0x71,0xae,0x6e] + +; umull verbose mode aliases + umull v9.8h, v13.8b, v14.8b + umull2 v9.8h, v13.16b, v14.16b + umull v9.4s, v13.4h, v14.4h + umull2 v9.4s, v13.8h, v14.8h + umull v9.2d, v13.2s, v14.2s + umull2 v9.2d, v13.4s, v14.4s +; CHECK: umull.8h v9, v13, v14 ; encoding: [0xa9,0xc1,0x2e,0x2e] +; CHECK: umull2.8h v9, v13, v14 ; encoding: [0xa9,0xc1,0x2e,0x6e] +; CHECK: umull.4s v9, v13, v14 ; encoding: [0xa9,0xc1,0x6e,0x2e] +; CHECK: umull2.4s v9, v13, v14 ; encoding: [0xa9,0xc1,0x6e,0x6e] +; CHECK: umull.2d v9, v13, v14 ; encoding: [0xa9,0xc1,0xae,0x2e] +; CHECK: umull2.2d v9, v13, v14 ; encoding: [0xa9,0xc1,0xae,0x6e] + +; smull verbose mode aliases + smull v9.8h, v13.8b, v14.8b + smull2 v9.8h, v13.16b, v14.16b + smull v9.4s, v13.4h, v14.4h + smull2 v9.4s, v13.8h, v14.8h + smull v9.2d, v13.2s, v14.2s + smull2 v9.2d, v13.4s, v14.4s +; CHECK: smull.8h v9, v13, v14 ; encoding: [0xa9,0xc1,0x2e,0x0e] +; CHECK: smull2.8h v9, v13, v14 ; encoding: [0xa9,0xc1,0x2e,0x4e] +; CHECK: smull.4s v9, v13, v14 ; encoding: [0xa9,0xc1,0x6e,0x0e] +; CHECK: smull2.4s v9, v13, v14 ; encoding: [0xa9,0xc1,0x6e,0x4e] +; CHECK: smull.2d v9, v13, v14 ; encoding: [0xa9,0xc1,0xae,0x0e] +; CHECK: smull2.2d v9, v13, v14 ; encoding: [0xa9,0xc1,0xae,0x4e] |