mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-26 21:32:10 +00:00
7b59710b6f
This skips a couple of compare ones due to the different syntaxt for floating-point 0.0. AArch64 does it more canonically, and we'll need to fiddle ARM64 to make it work. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207119 91177308-0d34-0410-b5e6-96231b3b80d8
417 lines
17 KiB
ArmAsm
417 lines
17 KiB
ArmAsm
// RUN: llvm-mc -triple=aarch64-none-linux-gnu -mattr=+neon -show-encoding < %s | FileCheck %s
|
|
// RUN: llvm-mc -triple=arm64-none-linux-gnu -mattr=+crypto -mattr=+neon -show-encoding < %s | FileCheck %s
|
|
|
|
// Check that the assembler can handle the documented syntax for AArch64
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Instructions with 3 different vector data types
|
|
//------------------------------------------------------------------------------
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Long
|
|
//------------------------------------------------------------------------------
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Long - Variant 1
|
|
//------------------------------------------------------------------------------
|
|
|
|
saddl v0.8h, v1.8b, v2.8b
|
|
saddl v0.4s, v1.4h, v2.4h
|
|
saddl v0.2d, v1.2s, v2.2s
|
|
|
|
// CHECK: saddl v0.8h, v1.8b, v2.8b // encoding: [0x20,0x00,0x22,0x0e]
|
|
// CHECK: saddl v0.4s, v1.4h, v2.4h // encoding: [0x20,0x00,0x62,0x0e]
|
|
// CHECK: saddl v0.2d, v1.2s, v2.2s // encoding: [0x20,0x00,0xa2,0x0e]
|
|
|
|
saddl2 v0.4s, v1.8h, v2.8h
|
|
saddl2 v0.8h, v1.16b, v2.16b
|
|
saddl2 v0.2d, v1.4s, v2.4s
|
|
|
|
// CHECK: saddl2 v0.4s, v1.8h, v2.8h // encoding: [0x20,0x00,0x62,0x4e]
|
|
// CHECK: saddl2 v0.8h, v1.16b, v2.16b // encoding: [0x20,0x00,0x22,0x4e]
|
|
// CHECK: saddl2 v0.2d, v1.4s, v2.4s // encoding: [0x20,0x00,0xa2,0x4e]
|
|
|
|
uaddl v0.8h, v1.8b, v2.8b
|
|
uaddl v0.4s, v1.4h, v2.4h
|
|
uaddl v0.2d, v1.2s, v2.2s
|
|
|
|
// CHECK: uaddl v0.8h, v1.8b, v2.8b // encoding: [0x20,0x00,0x22,0x2e]
|
|
// CHECK: uaddl v0.4s, v1.4h, v2.4h // encoding: [0x20,0x00,0x62,0x2e]
|
|
// CHECK: uaddl v0.2d, v1.2s, v2.2s // encoding: [0x20,0x00,0xa2,0x2e]
|
|
|
|
uaddl2 v0.8h, v1.16b, v2.16b
|
|
uaddl2 v0.4s, v1.8h, v2.8h
|
|
uaddl2 v0.2d, v1.4s, v2.4s
|
|
|
|
// CHECK: uaddl2 v0.8h, v1.16b, v2.16b // encoding: [0x20,0x00,0x22,0x6e]
|
|
// CHECK: uaddl2 v0.4s, v1.8h, v2.8h // encoding: [0x20,0x00,0x62,0x6e]
|
|
// CHECK: uaddl2 v0.2d, v1.4s, v2.4s // encoding: [0x20,0x00,0xa2,0x6e]
|
|
|
|
ssubl v0.8h, v1.8b, v2.8b
|
|
ssubl v0.4s, v1.4h, v2.4h
|
|
ssubl v0.2d, v1.2s, v2.2s
|
|
|
|
// CHECK: ssubl v0.8h, v1.8b, v2.8b // encoding: [0x20,0x20,0x22,0x0e]
|
|
// CHECK: ssubl v0.4s, v1.4h, v2.4h // encoding: [0x20,0x20,0x62,0x0e]
|
|
// CHECK: ssubl v0.2d, v1.2s, v2.2s // encoding: [0x20,0x20,0xa2,0x0e]
|
|
|
|
ssubl2 v0.8h, v1.16b, v2.16b
|
|
ssubl2 v0.4s, v1.8h, v2.8h
|
|
ssubl2 v0.2d, v1.4s, v2.4s
|
|
|
|
// CHECK: ssubl2 v0.8h, v1.16b, v2.16b // encoding: [0x20,0x20,0x22,0x4e]
|
|
// CHECK: ssubl2 v0.4s, v1.8h, v2.8h // encoding: [0x20,0x20,0x62,0x4e]
|
|
// CHECK: ssubl2 v0.2d, v1.4s, v2.4s // encoding: [0x20,0x20,0xa2,0x4e]
|
|
|
|
usubl v0.8h, v1.8b, v2.8b
|
|
usubl v0.4s, v1.4h, v2.4h
|
|
usubl v0.2d, v1.2s, v2.2s
|
|
|
|
// CHECK: usubl v0.8h, v1.8b, v2.8b // encoding: [0x20,0x20,0x22,0x2e]
|
|
// CHECK: usubl v0.4s, v1.4h, v2.4h // encoding: [0x20,0x20,0x62,0x2e]
|
|
// CHECK: usubl v0.2d, v1.2s, v2.2s // encoding: [0x20,0x20,0xa2,0x2e]
|
|
|
|
usubl2 v0.8h, v1.16b, v2.16b
|
|
usubl2 v0.4s, v1.8h, v2.8h
|
|
usubl2 v0.2d, v1.4s, v2.4s
|
|
|
|
// CHECK: usubl2 v0.8h, v1.16b, v2.16b // encoding: [0x20,0x20,0x22,0x6e]
|
|
// CHECK: usubl2 v0.4s, v1.8h, v2.8h // encoding: [0x20,0x20,0x62,0x6e]
|
|
// CHECK: usubl2 v0.2d, v1.4s, v2.4s // encoding: [0x20,0x20,0xa2,0x6e]
|
|
|
|
sabal v0.8h, v1.8b, v2.8b
|
|
sabal v0.4s, v1.4h, v2.4h
|
|
sabal v0.2d, v1.2s, v2.2s
|
|
|
|
// CHECK: sabal v0.8h, v1.8b, v2.8b // encoding: [0x20,0x50,0x22,0x0e]
|
|
// CHECK: sabal v0.4s, v1.4h, v2.4h // encoding: [0x20,0x50,0x62,0x0e]
|
|
// CHECK: sabal v0.2d, v1.2s, v2.2s // encoding: [0x20,0x50,0xa2,0x0e]
|
|
|
|
sabal2 v0.8h, v1.16b, v2.16b
|
|
sabal2 v0.4s, v1.8h, v2.8h
|
|
sabal2 v0.2d, v1.4s, v2.4s
|
|
|
|
// CHECK: sabal2 v0.8h, v1.16b, v2.16b // encoding: [0x20,0x50,0x22,0x4e]
|
|
// CHECK: sabal2 v0.4s, v1.8h, v2.8h // encoding: [0x20,0x50,0x62,0x4e]
|
|
// CHECK: sabal2 v0.2d, v1.4s, v2.4s // encoding: [0x20,0x50,0xa2,0x4e]
|
|
|
|
uabal v0.8h, v1.8b, v2.8b
|
|
uabal v0.4s, v1.4h, v2.4h
|
|
uabal v0.2d, v1.2s, v2.2s
|
|
|
|
// CHECK: uabal v0.8h, v1.8b, v2.8b // encoding: [0x20,0x50,0x22,0x2e]
|
|
// CHECK: uabal v0.4s, v1.4h, v2.4h // encoding: [0x20,0x50,0x62,0x2e]
|
|
// CHECK: uabal v0.2d, v1.2s, v2.2s // encoding: [0x20,0x50,0xa2,0x2e]
|
|
|
|
uabal2 v0.8h, v1.16b, v2.16b
|
|
uabal2 v0.4s, v1.8h, v2.8h
|
|
uabal2 v0.2d, v1.4s, v2.4s
|
|
|
|
// CHECK: uabal2 v0.8h, v1.16b, v2.16b // encoding: [0x20,0x50,0x22,0x6e]
|
|
// CHECK: uabal2 v0.4s, v1.8h, v2.8h // encoding: [0x20,0x50,0x62,0x6e]
|
|
// CHECK: uabal2 v0.2d, v1.4s, v2.4s // encoding: [0x20,0x50,0xa2,0x6e]
|
|
|
|
sabdl v0.8h, v1.8b, v2.8b
|
|
sabdl v0.4s, v1.4h, v2.4h
|
|
sabdl v0.2d, v1.2s, v2.2s
|
|
|
|
// CHECK: sabdl v0.8h, v1.8b, v2.8b // encoding: [0x20,0x70,0x22,0x0e]
|
|
// CHECK: sabdl v0.4s, v1.4h, v2.4h // encoding: [0x20,0x70,0x62,0x0e]
|
|
// CHECK: sabdl v0.2d, v1.2s, v2.2s // encoding: [0x20,0x70,0xa2,0x0e]
|
|
|
|
sabdl2 v0.8h, v1.16b, v2.16b
|
|
sabdl2 v0.4s, v1.8h, v2.8h
|
|
sabdl2 v0.2d, v1.4s, v2.4s
|
|
|
|
// CHECK: sabdl2 v0.8h, v1.16b, v2.16b // encoding: [0x20,0x70,0x22,0x4e]
|
|
// CHECK: sabdl2 v0.4s, v1.8h, v2.8h // encoding: [0x20,0x70,0x62,0x4e]
|
|
// CHECK: sabdl2 v0.2d, v1.4s, v2.4s // encoding: [0x20,0x70,0xa2,0x4e]
|
|
|
|
uabdl v0.8h, v1.8b, v2.8b
|
|
uabdl v0.4s, v1.4h, v2.4h
|
|
uabdl v0.2d, v1.2s, v2.2s
|
|
|
|
// CHECK: uabdl v0.8h, v1.8b, v2.8b // encoding: [0x20,0x70,0x22,0x2e]
|
|
// CHECK: uabdl v0.4s, v1.4h, v2.4h // encoding: [0x20,0x70,0x62,0x2e]
|
|
// CHECK: uabdl v0.2d, v1.2s, v2.2s // encoding: [0x20,0x70,0xa2,0x2e]
|
|
|
|
uabdl2 v0.8h, v1.16b, v2.16b
|
|
uabdl2 v0.4s, v1.8h, v2.8h
|
|
uabdl2 v0.2d, v1.4s, v2.4s
|
|
|
|
// CHECK: uabdl2 v0.8h, v1.16b, v2.16b // encoding: [0x20,0x70,0x22,0x6e]
|
|
// CHECK: uabdl2 v0.4s, v1.8h, v2.8h // encoding: [0x20,0x70,0x62,0x6e]
|
|
// CHECK: uabdl2 v0.2d, v1.4s, v2.4s // encoding: [0x20,0x70,0xa2,0x6e]
|
|
|
|
smlal v0.8h, v1.8b, v2.8b
|
|
smlal v0.4s, v1.4h, v2.4h
|
|
smlal v0.2d, v1.2s, v2.2s
|
|
|
|
// CHECK: smlal v0.8h, v1.8b, v2.8b // encoding: [0x20,0x80,0x22,0x0e]
|
|
// CHECK: smlal v0.4s, v1.4h, v2.4h // encoding: [0x20,0x80,0x62,0x0e]
|
|
// CHECK: smlal v0.2d, v1.2s, v2.2s // encoding: [0x20,0x80,0xa2,0x0e]
|
|
|
|
smlal2 v0.8h, v1.16b, v2.16b
|
|
smlal2 v0.4s, v1.8h, v2.8h
|
|
smlal2 v0.2d, v1.4s, v2.4s
|
|
|
|
// CHECK: smlal2 v0.8h, v1.16b, v2.16b // encoding: [0x20,0x80,0x22,0x4e]
|
|
// CHECK: smlal2 v0.4s, v1.8h, v2.8h // encoding: [0x20,0x80,0x62,0x4e]
|
|
// CHECK: smlal2 v0.2d, v1.4s, v2.4s // encoding: [0x20,0x80,0xa2,0x4e]
|
|
|
|
umlal v0.8h, v1.8b, v2.8b
|
|
umlal v0.4s, v1.4h, v2.4h
|
|
umlal v0.2d, v1.2s, v2.2s
|
|
|
|
// CHECK: umlal v0.8h, v1.8b, v2.8b // encoding: [0x20,0x80,0x22,0x2e]
|
|
// CHECK: umlal v0.4s, v1.4h, v2.4h // encoding: [0x20,0x80,0x62,0x2e]
|
|
// CHECK: umlal v0.2d, v1.2s, v2.2s // encoding: [0x20,0x80,0xa2,0x2e]
|
|
|
|
umlal2 v0.8h, v1.16b, v2.16b
|
|
umlal2 v0.4s, v1.8h, v2.8h
|
|
umlal2 v0.2d, v1.4s, v2.4s
|
|
|
|
// CHECK: umlal2 v0.8h, v1.16b, v2.16b // encoding: [0x20,0x80,0x22,0x6e]
|
|
// CHECK: umlal2 v0.4s, v1.8h, v2.8h // encoding: [0x20,0x80,0x62,0x6e]
|
|
// CHECK: umlal2 v0.2d, v1.4s, v2.4s // encoding: [0x20,0x80,0xa2,0x6e]
|
|
|
|
smlsl v0.8h, v1.8b, v2.8b
|
|
smlsl v0.4s, v1.4h, v2.4h
|
|
smlsl v0.2d, v1.2s, v2.2s
|
|
|
|
// CHECK: smlsl v0.8h, v1.8b, v2.8b // encoding: [0x20,0xa0,0x22,0x0e]
|
|
// CHECK: smlsl v0.4s, v1.4h, v2.4h // encoding: [0x20,0xa0,0x62,0x0e]
|
|
// CHECK: smlsl v0.2d, v1.2s, v2.2s // encoding: [0x20,0xa0,0xa2,0x0e]
|
|
|
|
smlsl2 v0.8h, v1.16b, v2.16b
|
|
smlsl2 v0.4s, v1.8h, v2.8h
|
|
smlsl2 v0.2d, v1.4s, v2.4s
|
|
|
|
// CHECK: smlsl2 v0.8h, v1.16b, v2.16b // encoding: [0x20,0xa0,0x22,0x4e]
|
|
// CHECK: smlsl2 v0.4s, v1.8h, v2.8h // encoding: [0x20,0xa0,0x62,0x4e]
|
|
// CHECK: smlsl2 v0.2d, v1.4s, v2.4s // encoding: [0x20,0xa0,0xa2,0x4e]
|
|
|
|
umlsl v0.8h, v1.8b, v2.8b
|
|
umlsl v0.4s, v1.4h, v2.4h
|
|
umlsl v0.2d, v1.2s, v2.2s
|
|
|
|
// CHECK: umlsl v0.8h, v1.8b, v2.8b // encoding: [0x20,0xa0,0x22,0x2e]
|
|
// CHECK: umlsl v0.4s, v1.4h, v2.4h // encoding: [0x20,0xa0,0x62,0x2e]
|
|
// CHECK: umlsl v0.2d, v1.2s, v2.2s // encoding: [0x20,0xa0,0xa2,0x2e]
|
|
|
|
umlsl2 v0.8h, v1.16b, v2.16b
|
|
umlsl2 v0.4s, v1.8h, v2.8h
|
|
umlsl2 v0.2d, v1.4s, v2.4s
|
|
|
|
// CHECK: umlsl2 v0.8h, v1.16b, v2.16b // encoding: [0x20,0xa0,0x22,0x6e]
|
|
// CHECK: umlsl2 v0.4s, v1.8h, v2.8h // encoding: [0x20,0xa0,0x62,0x6e]
|
|
// CHECK: umlsl2 v0.2d, v1.4s, v2.4s // encoding: [0x20,0xa0,0xa2,0x6e]
|
|
|
|
smull v0.8h, v1.8b, v2.8b
|
|
smull v0.4s, v1.4h, v2.4h
|
|
smull v0.2d, v1.2s, v2.2s
|
|
|
|
// CHECK: smull v0.8h, v1.8b, v2.8b // encoding: [0x20,0xc0,0x22,0x0e]
|
|
// CHECK: smull v0.4s, v1.4h, v2.4h // encoding: [0x20,0xc0,0x62,0x0e]
|
|
// CHECK: smull v0.2d, v1.2s, v2.2s // encoding: [0x20,0xc0,0xa2,0x0e]
|
|
|
|
smull2 v0.8h, v1.16b, v2.16b
|
|
smull2 v0.4s, v1.8h, v2.8h
|
|
smull2 v0.2d, v1.4s, v2.4s
|
|
|
|
// CHECK: smull2 v0.8h, v1.16b, v2.16b // encoding: [0x20,0xc0,0x22,0x4e]
|
|
// CHECK: smull2 v0.4s, v1.8h, v2.8h // encoding: [0x20,0xc0,0x62,0x4e]
|
|
// CHECK: smull2 v0.2d, v1.4s, v2.4s // encoding: [0x20,0xc0,0xa2,0x4e]
|
|
|
|
umull v0.8h, v1.8b, v2.8b
|
|
umull v0.4s, v1.4h, v2.4h
|
|
umull v0.2d, v1.2s, v2.2s
|
|
|
|
// CHECK: umull v0.8h, v1.8b, v2.8b // encoding: [0x20,0xc0,0x22,0x2e]
|
|
// CHECK: umull v0.4s, v1.4h, v2.4h // encoding: [0x20,0xc0,0x62,0x2e]
|
|
// CHECK: umull v0.2d, v1.2s, v2.2s // encoding: [0x20,0xc0,0xa2,0x2e]
|
|
|
|
umull2 v0.8h, v1.16b, v2.16b
|
|
umull2 v0.4s, v1.8h, v2.8h
|
|
umull2 v0.2d, v1.4s, v2.4s
|
|
|
|
// CHECK: umull2 v0.8h, v1.16b, v2.16b // encoding: [0x20,0xc0,0x22,0x6e]
|
|
// CHECK: umull2 v0.4s, v1.8h, v2.8h // encoding: [0x20,0xc0,0x62,0x6e]
|
|
// CHECK: umull2 v0.2d, v1.4s, v2.4s // encoding: [0x20,0xc0,0xa2,0x6e]
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Long - Variant 2
|
|
//------------------------------------------------------------------------------
|
|
|
|
sqdmlal v0.4s, v1.4h, v2.4h
|
|
sqdmlal v0.2d, v1.2s, v2.2s
|
|
|
|
// CHECK: sqdmlal v0.4s, v1.4h, v2.4h // encoding: [0x20,0x90,0x62,0x0e]
|
|
// CHECK: sqdmlal v0.2d, v1.2s, v2.2s // encoding: [0x20,0x90,0xa2,0x0e]
|
|
|
|
sqdmlal2 v0.4s, v1.8h, v2.8h
|
|
sqdmlal2 v0.2d, v1.4s, v2.4s
|
|
|
|
// CHECK: sqdmlal2 v0.4s, v1.8h, v2.8h // encoding: [0x20,0x90,0x62,0x4e]
|
|
// CHECK: sqdmlal2 v0.2d, v1.4s, v2.4s // encoding: [0x20,0x90,0xa2,0x4e]
|
|
|
|
sqdmlsl v0.4s, v1.4h, v2.4h
|
|
sqdmlsl v0.2d, v1.2s, v2.2s
|
|
|
|
// CHECK: sqdmlsl v0.4s, v1.4h, v2.4h // encoding: [0x20,0xb0,0x62,0x0e]
|
|
// CHECK: sqdmlsl v0.2d, v1.2s, v2.2s // encoding: [0x20,0xb0,0xa2,0x0e]
|
|
|
|
sqdmlsl2 v0.4s, v1.8h, v2.8h
|
|
sqdmlsl2 v0.2d, v1.4s, v2.4s
|
|
|
|
// CHECK: sqdmlsl2 v0.4s, v1.8h, v2.8h // encoding: [0x20,0xb0,0x62,0x4e]
|
|
// CHECK: sqdmlsl2 v0.2d, v1.4s, v2.4s // encoding: [0x20,0xb0,0xa2,0x4e]
|
|
|
|
sqdmull v0.4s, v1.4h, v2.4h
|
|
sqdmull v0.2d, v1.2s, v2.2s
|
|
|
|
// CHECK: sqdmull v0.4s, v1.4h, v2.4h // encoding: [0x20,0xd0,0x62,0x0e]
|
|
// CHECK: sqdmull v0.2d, v1.2s, v2.2s // encoding: [0x20,0xd0,0xa2,0x0e]
|
|
|
|
sqdmull2 v0.4s, v1.8h, v2.8h
|
|
sqdmull2 v0.2d, v1.4s, v2.4s
|
|
|
|
// CHECK: sqdmull2 v0.4s, v1.8h, v2.8h // encoding: [0x20,0xd0,0x62,0x4e]
|
|
// CHECK: sqdmull2 v0.2d, v1.4s, v2.4s // encoding: [0x20,0xd0,0xa2,0x4e]
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Long - Variant 3
|
|
//------------------------------------------------------------------------------
|
|
|
|
pmull v0.8h, v1.8b, v2.8b
|
|
pmull v0.1q, v1.1d, v2.1d
|
|
|
|
// CHECK: pmull v0.8h, v1.8b, v2.8b // encoding: [0x20,0xe0,0x22,0x0e]
|
|
// CHECK: pmull v0.1q, v1.1d, v2.1d // encoding: [0x20,0xe0,0xe2,0x0e]
|
|
|
|
pmull2 v0.8h, v1.16b, v2.16b
|
|
pmull2 v0.1q, v1.2d, v2.2d
|
|
|
|
// CHECK: pmull2 v0.8h, v1.16b, v2.16b // encoding: [0x20,0xe0,0x22,0x4e]
|
|
// CHECK: pmull2 v0.1q, v1.2d, v2.2d // encoding: [0x20,0xe0,0xe2,0x4e]
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Widen
|
|
//------------------------------------------------------------------------------
|
|
|
|
saddw v0.8h, v1.8h, v2.8b
|
|
saddw v0.4s, v1.4s, v2.4h
|
|
saddw v0.2d, v1.2d, v2.2s
|
|
|
|
// CHECK: saddw v0.8h, v1.8h, v2.8b // encoding: [0x20,0x10,0x22,0x0e]
|
|
// CHECK: saddw v0.4s, v1.4s, v2.4h // encoding: [0x20,0x10,0x62,0x0e]
|
|
// CHECK: saddw v0.2d, v1.2d, v2.2s // encoding: [0x20,0x10,0xa2,0x0e]
|
|
|
|
saddw2 v0.8h, v1.8h, v2.16b
|
|
saddw2 v0.4s, v1.4s, v2.8h
|
|
saddw2 v0.2d, v1.2d, v2.4s
|
|
|
|
// CHECK: saddw2 v0.8h, v1.8h, v2.16b // encoding: [0x20,0x10,0x22,0x4e]
|
|
// CHECK: saddw2 v0.4s, v1.4s, v2.8h // encoding: [0x20,0x10,0x62,0x4e]
|
|
// CHECK: saddw2 v0.2d, v1.2d, v2.4s // encoding: [0x20,0x10,0xa2,0x4e]
|
|
|
|
uaddw v0.8h, v1.8h, v2.8b
|
|
uaddw v0.4s, v1.4s, v2.4h
|
|
uaddw v0.2d, v1.2d, v2.2s
|
|
|
|
// CHECK: uaddw v0.8h, v1.8h, v2.8b // encoding: [0x20,0x10,0x22,0x2e]
|
|
// CHECK: uaddw v0.4s, v1.4s, v2.4h // encoding: [0x20,0x10,0x62,0x2e]
|
|
// CHECK: uaddw v0.2d, v1.2d, v2.2s // encoding: [0x20,0x10,0xa2,0x2e]
|
|
|
|
uaddw2 v0.8h, v1.8h, v2.16b
|
|
uaddw2 v0.4s, v1.4s, v2.8h
|
|
uaddw2 v0.2d, v1.2d, v2.4s
|
|
|
|
// CHECK: uaddw2 v0.8h, v1.8h, v2.16b // encoding: [0x20,0x10,0x22,0x6e]
|
|
// CHECK: uaddw2 v0.4s, v1.4s, v2.8h // encoding: [0x20,0x10,0x62,0x6e]
|
|
// CHECK: uaddw2 v0.2d, v1.2d, v2.4s // encoding: [0x20,0x10,0xa2,0x6e]
|
|
|
|
ssubw v0.8h, v1.8h, v2.8b
|
|
ssubw v0.4s, v1.4s, v2.4h
|
|
ssubw v0.2d, v1.2d, v2.2s
|
|
|
|
// CHECK: ssubw v0.8h, v1.8h, v2.8b // encoding: [0x20,0x30,0x22,0x0e]
|
|
// CHECK: ssubw v0.4s, v1.4s, v2.4h // encoding: [0x20,0x30,0x62,0x0e]
|
|
// CHECK: ssubw v0.2d, v1.2d, v2.2s // encoding: [0x20,0x30,0xa2,0x0e]
|
|
|
|
ssubw2 v0.8h, v1.8h, v2.16b
|
|
ssubw2 v0.4s, v1.4s, v2.8h
|
|
ssubw2 v0.2d, v1.2d, v2.4s
|
|
|
|
// CHECK: ssubw2 v0.8h, v1.8h, v2.16b // encoding: [0x20,0x30,0x22,0x4e]
|
|
// CHECK: ssubw2 v0.4s, v1.4s, v2.8h // encoding: [0x20,0x30,0x62,0x4e]
|
|
// CHECK: ssubw2 v0.2d, v1.2d, v2.4s // encoding: [0x20,0x30,0xa2,0x4e]
|
|
|
|
usubw v0.8h, v1.8h, v2.8b
|
|
usubw v0.4s, v1.4s, v2.4h
|
|
usubw v0.2d, v1.2d, v2.2s
|
|
|
|
// CHECK: usubw v0.8h, v1.8h, v2.8b // encoding: [0x20,0x30,0x22,0x2e]
|
|
// CHECK: usubw v0.4s, v1.4s, v2.4h // encoding: [0x20,0x30,0x62,0x2e]
|
|
// CHECK: usubw v0.2d, v1.2d, v2.2s // encoding: [0x20,0x30,0xa2,0x2e]
|
|
|
|
usubw2 v0.8h, v1.8h, v2.16b
|
|
usubw2 v0.4s, v1.4s, v2.8h
|
|
usubw2 v0.2d, v1.2d, v2.4s
|
|
|
|
// CHECK: usubw2 v0.8h, v1.8h, v2.16b // encoding: [0x20,0x30,0x22,0x6e]
|
|
// CHECK: usubw2 v0.4s, v1.4s, v2.8h // encoding: [0x20,0x30,0x62,0x6e]
|
|
// CHECK: usubw2 v0.2d, v1.2d, v2.4s // encoding: [0x20,0x30,0xa2,0x6e]
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Narrow
|
|
//------------------------------------------------------------------------------
|
|
|
|
addhn v0.8b, v1.8h, v2.8h
|
|
addhn v0.4h, v1.4s, v2.4s
|
|
addhn v0.2s, v1.2d, v2.2d
|
|
|
|
// CHECK: addhn v0.8b, v1.8h, v2.8h // encoding: [0x20,0x40,0x22,0x0e]
|
|
// CHECK: addhn v0.4h, v1.4s, v2.4s // encoding: [0x20,0x40,0x62,0x0e]
|
|
// CHECK: addhn v0.2s, v1.2d, v2.2d // encoding: [0x20,0x40,0xa2,0x0e]
|
|
|
|
addhn2 v0.16b, v1.8h, v2.8h
|
|
addhn2 v0.8h, v1.4s, v2.4s
|
|
addhn2 v0.4s, v1.2d, v2.2d
|
|
|
|
// CHECK: addhn2 v0.16b, v1.8h, v2.8h // encoding: [0x20,0x40,0x22,0x4e]
|
|
// CHECK: addhn2 v0.8h, v1.4s, v2.4s // encoding: [0x20,0x40,0x62,0x4e]
|
|
// CHECK: addhn2 v0.4s, v1.2d, v2.2d // encoding: [0x20,0x40,0xa2,0x4e]
|
|
|
|
raddhn v0.8b, v1.8h, v2.8h
|
|
raddhn v0.4h, v1.4s, v2.4s
|
|
raddhn v0.2s, v1.2d, v2.2d
|
|
|
|
// CHECK: raddhn v0.8b, v1.8h, v2.8h // encoding: [0x20,0x40,0x22,0x2e]
|
|
// CHECK: raddhn v0.4h, v1.4s, v2.4s // encoding: [0x20,0x40,0x62,0x2e]
|
|
// CHECK: raddhn v0.2s, v1.2d, v2.2d // encoding: [0x20,0x40,0xa2,0x2e]
|
|
|
|
raddhn2 v0.16b, v1.8h, v2.8h
|
|
raddhn2 v0.8h, v1.4s, v2.4s
|
|
raddhn2 v0.4s, v1.2d, v2.2d
|
|
|
|
// CHECK: raddhn2 v0.16b, v1.8h, v2.8h // encoding: [0x20,0x40,0x22,0x6e]
|
|
// CHECK: raddhn2 v0.8h, v1.4s, v2.4s // encoding: [0x20,0x40,0x62,0x6e]
|
|
// CHECK: raddhn2 v0.4s, v1.2d, v2.2d // encoding: [0x20,0x40,0xa2,0x6e]
|
|
|
|
rsubhn v0.8b, v1.8h, v2.8h
|
|
rsubhn v0.4h, v1.4s, v2.4s
|
|
rsubhn v0.2s, v1.2d, v2.2d
|
|
|
|
// CHECK: rsubhn v0.8b, v1.8h, v2.8h // encoding: [0x20,0x60,0x22,0x2e]
|
|
// CHECK: rsubhn v0.4h, v1.4s, v2.4s // encoding: [0x20,0x60,0x62,0x2e]
|
|
// CHECK: rsubhn v0.2s, v1.2d, v2.2d // encoding: [0x20,0x60,0xa2,0x2e]
|
|
|
|
rsubhn2 v0.16b, v1.8h, v2.8h
|
|
rsubhn2 v0.8h, v1.4s, v2.4s
|
|
rsubhn2 v0.4s, v1.2d, v2.2d
|
|
|
|
// CHECK: rsubhn2 v0.16b, v1.8h, v2.8h // encoding: [0x20,0x60,0x22,0x6e]
|
|
// CHECK: rsubhn2 v0.8h, v1.4s, v2.4s // encoding: [0x20,0x60,0x62,0x6e]
|
|
// CHECK: rsubhn2 v0.4s, v1.2d, v2.2d // encoding: [0x20,0x60,0xa2,0x6e]
|