118 lines · plain
1// RUN: llvm-mc -triple=arm64 -mattr=+neon,+fullfp16 -show-encoding < %s | FileCheck %s2 3// Check that the assembler can handle the documented syntax for AArch644 5//------------------------------------------------------------------------------6// Instructions across vector registers7//------------------------------------------------------------------------------8 9 saddlv h0, v1.8b10 saddlv h0, v1.16b11 saddlv s0, v1.4h12 saddlv s0, v1.8h13 saddlv d0, v1.4s14 15// CHECK: saddlv h0, v1.8b // encoding: [0x20,0x38,0x30,0x0e]16// CHECK: saddlv h0, v1.16b // encoding: [0x20,0x38,0x30,0x4e]17// CHECK: saddlv s0, v1.4h // encoding: [0x20,0x38,0x70,0x0e]18// CHECK: saddlv s0, v1.8h // encoding: [0x20,0x38,0x70,0x4e]19// CHECK: saddlv d0, v1.4s // encoding: [0x20,0x38,0xb0,0x4e]20 21 uaddlv h0, v1.8b22 uaddlv h0, v1.16b23 uaddlv s0, v1.4h24 uaddlv s0, v1.8h25 uaddlv d0, v1.4s26 27// CHECK: uaddlv h0, v1.8b // encoding: [0x20,0x38,0x30,0x2e]28// CHECK: uaddlv h0, v1.16b // encoding: [0x20,0x38,0x30,0x6e]29// CHECK: uaddlv s0, v1.4h // encoding: [0x20,0x38,0x70,0x2e]30// CHECK: uaddlv s0, v1.8h // encoding: [0x20,0x38,0x70,0x6e]31// CHECK: uaddlv d0, v1.4s // encoding: [0x20,0x38,0xb0,0x6e]32 33 smaxv b0, v1.8b34 smaxv b0, v1.16b35 smaxv h0, v1.4h36 smaxv h0, v1.8h37 smaxv s0, v1.4s38 39// CHECK: smaxv b0, v1.8b // encoding: [0x20,0xa8,0x30,0x0e]40// CHECK: smaxv b0, v1.16b // encoding: [0x20,0xa8,0x30,0x4e]41// CHECK: smaxv h0, v1.4h // encoding: [0x20,0xa8,0x70,0x0e]42// CHECK: smaxv h0, v1.8h // encoding: [0x20,0xa8,0x70,0x4e]43// CHECK: smaxv s0, v1.4s // encoding: [0x20,0xa8,0xb0,0x4e]44 45 sminv b0, v1.8b46 sminv b0, v1.16b47 sminv h0, v1.4h48 sminv h0, v1.8h49 sminv s0, v1.4s50 51// CHECK: sminv b0, v1.8b // encoding: [0x20,0xa8,0x31,0x0e]52// CHECK: sminv b0, v1.16b // encoding: [0x20,0xa8,0x31,0x4e]53// CHECK: sminv h0, v1.4h // encoding: [0x20,0xa8,0x71,0x0e]54// CHECK: sminv h0, v1.8h // encoding: [0x20,0xa8,0x71,0x4e]55// CHECK: sminv s0, v1.4s // encoding: [0x20,0xa8,0xb1,0x4e]56 57 umaxv b0, v1.8b58 umaxv b0, v1.16b59 umaxv h0, v1.4h60 umaxv h0, v1.8h61 umaxv s0, v1.4s62 63// CHECK: umaxv b0, v1.8b // encoding: [0x20,0xa8,0x30,0x2e]64// CHECK: umaxv b0, v1.16b // encoding: [0x20,0xa8,0x30,0x6e]65// CHECK: umaxv h0, v1.4h // encoding: [0x20,0xa8,0x70,0x2e]66// CHECK: umaxv h0, v1.8h // encoding: [0x20,0xa8,0x70,0x6e]67// CHECK: umaxv s0, v1.4s // encoding: [0x20,0xa8,0xb0,0x6e]68 69 uminv b0, v1.8b70 uminv b0, v1.16b71 uminv h0, v1.4h72 uminv h0, v1.8h73 uminv s0, v1.4s74 75// CHECK: uminv b0, v1.8b // encoding: [0x20,0xa8,0x31,0x2e]76// CHECK: uminv b0, v1.16b // encoding: [0x20,0xa8,0x31,0x6e]77// CHECK: uminv h0, v1.4h // encoding: [0x20,0xa8,0x71,0x2e]78// CHECK: uminv h0, v1.8h // encoding: [0x20,0xa8,0x71,0x6e]79// CHECK: uminv s0, v1.4s // encoding: [0x20,0xa8,0xb1,0x6e]80 81 addv b0, v1.8b82 addv b0, v1.16b83 addv h0, v1.4h84 addv h0, v1.8h85 addv s0, v1.4s86 87// CHECK: addv b0, v1.8b // encoding: [0x20,0xb8,0x31,0x0e]88// CHECK: addv b0, v1.16b // encoding: [0x20,0xb8,0x31,0x4e]89// CHECK: addv h0, v1.4h // encoding: [0x20,0xb8,0x71,0x0e]90// CHECK: addv h0, v1.8h // encoding: [0x20,0xb8,0x71,0x4e]91// CHECK: addv s0, v1.4s // encoding: [0x20,0xb8,0xb1,0x4e]92 93 fmaxnmv h0, v1.4h94 fminnmv h0, v1.4h95 fmaxv h0, v1.4h96 fminv h0, v1.4h97 fmaxnmv h0, v1.8h98 fminnmv h0, v1.8h99 fmaxv h0, v1.8h100 fminv h0, v1.8h101 fmaxnmv s0, v1.4s102 fminnmv s0, v1.4s103 fmaxv s0, v1.4s104 fminv s0, v1.4s105 106// CHECK: fmaxnmv h0, v1.4h // encoding: [0x20,0xc8,0x30,0x0e]107// CHECK: fminnmv h0, v1.4h // encoding: [0x20,0xc8,0xb0,0x0e]108// CHECK: fmaxv h0, v1.4h // encoding: [0x20,0xf8,0x30,0x0e]109// CHECK: fminv h0, v1.4h // encoding: [0x20,0xf8,0xb0,0x0e]110// CHECK: fmaxnmv h0, v1.8h // encoding: [0x20,0xc8,0x30,0x4e]111// CHECK: fminnmv h0, v1.8h // encoding: [0x20,0xc8,0xb0,0x4e]112// CHECK: fmaxv h0, v1.8h // encoding: [0x20,0xf8,0x30,0x4e]113// CHECK: fminv h0, v1.8h // encoding: [0x20,0xf8,0xb0,0x4e]114// CHECK: fmaxnmv s0, v1.4s // encoding: [0x20,0xc8,0x30,0x6e]115// CHECK: fminnmv s0, v1.4s // encoding: [0x20,0xc8,0xb0,0x6e]116// CHECK: fmaxv s0, v1.4s // encoding: [0x20,0xf8,0x30,0x6e]117// CHECK: fminv s0, v1.4s // encoding: [0x20,0xf8,0xb0,0x6e]118