104 lines · plain
1// RUN: llvm-mc -triple=arm64 -mattr=+neon -show-encoding < %s | FileCheck %s2 3// Check that the assembler can handle the documented syntax for AArch644 5//------------------------------------------------------------------------------6// Instructions for permute7//------------------------------------------------------------------------------8 9 uzp1 v0.8b, v1.8b, v2.8b10 uzp1 v0.16b, v1.16b, v2.16b11 uzp1 v0.4h, v1.4h, v2.4h12 uzp1 v0.8h, v1.8h, v2.8h13 uzp1 v0.2s, v1.2s, v2.2s14 uzp1 v0.4s, v1.4s, v2.4s15 uzp1 v0.2d, v1.2d, v2.2d16 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.8b26 trn1 v0.16b, v1.16b, v2.16b27 trn1 v0.4h, v1.4h, v2.4h28 trn1 v0.8h, v1.8h, v2.8h29 trn1 v0.2s, v1.2s, v2.2s30 trn1 v0.4s, v1.4s, v2.4s31 trn1 v0.2d, v1.2d, v2.2d32 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.8b42 zip1 v0.16b, v1.16b, v2.16b43 zip1 v0.4h, v1.4h, v2.4h44 zip1 v0.8h, v1.8h, v2.8h45 zip1 v0.2s, v1.2s, v2.2s46 zip1 v0.4s, v1.4s, v2.4s47 zip1 v0.2d, v1.2d, v2.2d48 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.8b58 uzp2 v0.16b, v1.16b, v2.16b59 uzp2 v0.4h, v1.4h, v2.4h60 uzp2 v0.8h, v1.8h, v2.8h61 uzp2 v0.2s, v1.2s, v2.2s62 uzp2 v0.4s, v1.4s, v2.4s63 uzp2 v0.2d, v1.2d, v2.2d64 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.8b74 trn2 v0.16b, v1.16b, v2.16b75 trn2 v0.4h, v1.4h, v2.4h76 trn2 v0.8h, v1.8h, v2.8h77 trn2 v0.2s, v1.2s, v2.2s78 trn2 v0.4s, v1.4s, v2.4s79 trn2 v0.2d, v1.2d, v2.2d80 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.8b90 zip2 v0.16b, v1.16b, v2.16b91 zip2 v0.4h, v1.4h, v2.4h92 zip2 v0.8h, v1.8h, v2.8h93 zip2 v0.2s, v1.2s, v2.2s94 zip2 v0.4s, v1.4s, v2.4s95 zip2 v0.2d, v1.2d, v2.2d96 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