1// RUN: llvm-mc -triple=arm64 -mattr=+neon -show-encoding < %s | FileCheck %s 2 3// Check that the assembler can handle the documented syntax for AArch64 4 5//------------------------------------------------------------------------------ 6// Instructions for permute 7//------------------------------------------------------------------------------ 8 9 uzp1 v0.8b, v1.8b, v2.8b 10 uzp1 v0.16b, v1.16b, v2.16b 11 uzp1 v0.4h, v1.4h, v2.4h 12 uzp1 v0.8h, v1.8h, v2.8h 13 uzp1 v0.2s, v1.2s, v2.2s 14 uzp1 v0.4s, v1.4s, v2.4s 15 uzp1 v0.2d, v1.2d, v2.2d 16 17// CHECK: uzp1 v0.8b, v1.8b, v2.8b // encoding: [0x20,0x18,0x02,0x0e] 18// CHECK: uzp1 v0.16b, v1.16b, v2.16b // encoding: [0x20,0x18,0x02,0x4e] 19// CHECK: uzp1 v0.4h, v1.4h, v2.4h // encoding: [0x20,0x18,0x42,0x0e] 20// CHECK: uzp1 v0.8h, v1.8h, v2.8h // encoding: [0x20,0x18,0x42,0x4e] 21// CHECK: uzp1 v0.2s, v1.2s, v2.2s // encoding: [0x20,0x18,0x82,0x0e] 22// CHECK: uzp1 v0.4s, v1.4s, v2.4s // encoding: [0x20,0x18,0x82,0x4e] 23// CHECK: uzp1 v0.2d, v1.2d, v2.2d // encoding: [0x20,0x18,0xc2,0x4e] 24 25 trn1 v0.8b, v1.8b, v2.8b 26 trn1 v0.16b, v1.16b, v2.16b 27 trn1 v0.4h, v1.4h, v2.4h 28 trn1 v0.8h, v1.8h, v2.8h 29 trn1 v0.2s, v1.2s, v2.2s 30 trn1 v0.4s, v1.4s, v2.4s 31 trn1 v0.2d, v1.2d, v2.2d 32 33// CHECK: trn1 v0.8b, v1.8b, v2.8b // encoding: [0x20,0x28,0x02,0x0e] 34// CHECK: trn1 v0.16b, v1.16b, v2.16b // encoding: [0x20,0x28,0x02,0x4e] 35// CHECK: trn1 v0.4h, v1.4h, v2.4h // encoding: [0x20,0x28,0x42,0x0e] 36// CHECK: trn1 v0.8h, v1.8h, v2.8h // encoding: [0x20,0x28,0x42,0x4e] 37// CHECK: trn1 v0.2s, v1.2s, v2.2s // encoding: [0x20,0x28,0x82,0x0e] 38// CHECK: trn1 v0.4s, v1.4s, v2.4s // encoding: [0x20,0x28,0x82,0x4e] 39// CHECK: trn1 v0.2d, v1.2d, v2.2d // encoding: [0x20,0x28,0xc2,0x4e] 40 41 zip1 v0.8b, v1.8b, v2.8b 42 zip1 v0.16b, v1.16b, v2.16b 43 zip1 v0.4h, v1.4h, v2.4h 44 zip1 v0.8h, v1.8h, v2.8h 45 zip1 v0.2s, v1.2s, v2.2s 46 zip1 v0.4s, v1.4s, v2.4s 47 zip1 v0.2d, v1.2d, v2.2d 48 49// CHECK: zip1 v0.8b, v1.8b, v2.8b // encoding: [0x20,0x38,0x02,0x0e] 50// CHECK: zip1 v0.16b, v1.16b, v2.16b // encoding: [0x20,0x38,0x02,0x4e] 51// CHECK: zip1 v0.4h, v1.4h, v2.4h // encoding: [0x20,0x38,0x42,0x0e] 52// CHECK: zip1 v0.8h, v1.8h, v2.8h // encoding: [0x20,0x38,0x42,0x4e] 53// CHECK: zip1 v0.2s, v1.2s, v2.2s // encoding: [0x20,0x38,0x82,0x0e] 54// CHECK: zip1 v0.4s, v1.4s, v2.4s // encoding: [0x20,0x38,0x82,0x4e] 55// CHECK: zip1 v0.2d, v1.2d, v2.2d // encoding: [0x20,0x38,0xc2,0x4e] 56 57 uzp2 v0.8b, v1.8b, v2.8b 58 uzp2 v0.16b, v1.16b, v2.16b 59 uzp2 v0.4h, v1.4h, v2.4h 60 uzp2 v0.8h, v1.8h, v2.8h 61 uzp2 v0.2s, v1.2s, v2.2s 62 uzp2 v0.4s, v1.4s, v2.4s 63 uzp2 v0.2d, v1.2d, v2.2d 64 65// CHECK: uzp2 v0.8b, v1.8b, v2.8b // encoding: [0x20,0x58,0x02,0x0e] 66// CHECK: uzp2 v0.16b, v1.16b, v2.16b // encoding: [0x20,0x58,0x02,0x4e] 67// CHECK: uzp2 v0.4h, v1.4h, v2.4h // encoding: [0x20,0x58,0x42,0x0e] 68// CHECK: uzp2 v0.8h, v1.8h, v2.8h // encoding: [0x20,0x58,0x42,0x4e] 69// CHECK: uzp2 v0.2s, v1.2s, v2.2s // encoding: [0x20,0x58,0x82,0x0e] 70// CHECK: uzp2 v0.4s, v1.4s, v2.4s // encoding: [0x20,0x58,0x82,0x4e] 71// CHECK: uzp2 v0.2d, v1.2d, v2.2d // encoding: [0x20,0x58,0xc2,0x4e] 72 73 trn2 v0.8b, v1.8b, v2.8b 74 trn2 v0.16b, v1.16b, v2.16b 75 trn2 v0.4h, v1.4h, v2.4h 76 trn2 v0.8h, v1.8h, v2.8h 77 trn2 v0.2s, v1.2s, v2.2s 78 trn2 v0.4s, v1.4s, v2.4s 79 trn2 v0.2d, v1.2d, v2.2d 80 81// CHECK: trn2 v0.8b, v1.8b, v2.8b // encoding: [0x20,0x68,0x02,0x0e] 82// CHECK: trn2 v0.16b, v1.16b, v2.16b // encoding: [0x20,0x68,0x02,0x4e] 83// CHECK: trn2 v0.4h, v1.4h, v2.4h // encoding: [0x20,0x68,0x42,0x0e] 84// CHECK: trn2 v0.8h, v1.8h, v2.8h // encoding: [0x20,0x68,0x42,0x4e] 85// CHECK: trn2 v0.2s, v1.2s, v2.2s // encoding: [0x20,0x68,0x82,0x0e] 86// CHECK: trn2 v0.4s, v1.4s, v2.4s // encoding: [0x20,0x68,0x82,0x4e] 87// CHECK: trn2 v0.2d, v1.2d, v2.2d // encoding: [0x20,0x68,0xc2,0x4e] 88 89 zip2 v0.8b, v1.8b, v2.8b 90 zip2 v0.16b, v1.16b, v2.16b 91 zip2 v0.4h, v1.4h, v2.4h 92 zip2 v0.8h, v1.8h, v2.8h 93 zip2 v0.2s, v1.2s, v2.2s 94 zip2 v0.4s, v1.4s, v2.4s 95 zip2 v0.2d, v1.2d, v2.2d 96 97// CHECK: zip2 v0.8b, v1.8b, v2.8b // encoding: [0x20,0x78,0x02,0x0e] 98// CHECK: zip2 v0.16b, v1.16b, v2.16b // encoding: [0x20,0x78,0x02,0x4e] 99// CHECK: zip2 v0.4h, v1.4h, v2.4h // encoding: [0x20,0x78,0x42,0x0e] 100// CHECK: zip2 v0.8h, v1.8h, v2.8h // encoding: [0x20,0x78,0x42,0x4e] 101// CHECK: zip2 v0.2s, v1.2s, v2.2s // encoding: [0x20,0x78,0x82,0x0e] 102// CHECK: zip2 v0.4s, v1.4s, v2.4s // encoding: [0x20,0x78,0x82,0x4e] 103// CHECK: zip2 v0.2d, v1.2d, v2.2d // encoding: [0x20,0x78,0xc2,0x4e] 104