1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-29 23:12:55 +01:00
llvm-mirror/test/MC/AArch64/neon-3vdiff.s
Tim Northover ca0f4dc4f0 AArch64/ARM64: move ARM64 into AArch64's place
This commit starts with a "git mv ARM64 AArch64" and continues out
from there, renaming the C++ classes, intrinsics, and other
target-local objects for consistency.

"ARM64" test directories are also moved, and tests that began their
life in ARM64 use an arm64 triple, those from AArch64 use an aarch64
triple. Both should be equivalent though.

This finishes the AArch64 merge, and everyone should feel free to
continue committing as normal now.

llvm-svn: 209577
2014-05-24 12:50:23 +00:00

416 lines
17 KiB
ArmAsm

// RUN: llvm-mc -triple=aarch64-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]