1*9880d681SAndroid Build Coastguard Worker// RUN: llvm-mc -triple=arm64 -mattr=+neon,+fullfp16 -show-encoding < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker// Check that the assembler can handle the documented syntax for AArch64 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker//------------------------------------------------------------------------------ 6*9880d681SAndroid Build Coastguard Worker// Instructions across vector registers 7*9880d681SAndroid Build Coastguard Worker//------------------------------------------------------------------------------ 8*9880d681SAndroid Build Coastguard Worker 9*9880d681SAndroid Build Coastguard Worker saddlv h0, v1.8b 10*9880d681SAndroid Build Coastguard Worker saddlv h0, v1.16b 11*9880d681SAndroid Build Coastguard Worker saddlv s0, v1.4h 12*9880d681SAndroid Build Coastguard Worker saddlv s0, v1.8h 13*9880d681SAndroid Build Coastguard Worker saddlv d0, v1.4s 14*9880d681SAndroid Build Coastguard Worker 15*9880d681SAndroid Build Coastguard Worker// CHECK: saddlv h0, v1.8b // encoding: [0x20,0x38,0x30,0x0e] 16*9880d681SAndroid Build Coastguard Worker// CHECK: saddlv h0, v1.16b // encoding: [0x20,0x38,0x30,0x4e] 17*9880d681SAndroid Build Coastguard Worker// CHECK: saddlv s0, v1.4h // encoding: [0x20,0x38,0x70,0x0e] 18*9880d681SAndroid Build Coastguard Worker// CHECK: saddlv s0, v1.8h // encoding: [0x20,0x38,0x70,0x4e] 19*9880d681SAndroid Build Coastguard Worker// CHECK: saddlv d0, v1.4s // encoding: [0x20,0x38,0xb0,0x4e] 20*9880d681SAndroid Build Coastguard Worker 21*9880d681SAndroid Build Coastguard Worker uaddlv h0, v1.8b 22*9880d681SAndroid Build Coastguard Worker uaddlv h0, v1.16b 23*9880d681SAndroid Build Coastguard Worker uaddlv s0, v1.4h 24*9880d681SAndroid Build Coastguard Worker uaddlv s0, v1.8h 25*9880d681SAndroid Build Coastguard Worker uaddlv d0, v1.4s 26*9880d681SAndroid Build Coastguard Worker 27*9880d681SAndroid Build Coastguard Worker// CHECK: uaddlv h0, v1.8b // encoding: [0x20,0x38,0x30,0x2e] 28*9880d681SAndroid Build Coastguard Worker// CHECK: uaddlv h0, v1.16b // encoding: [0x20,0x38,0x30,0x6e] 29*9880d681SAndroid Build Coastguard Worker// CHECK: uaddlv s0, v1.4h // encoding: [0x20,0x38,0x70,0x2e] 30*9880d681SAndroid Build Coastguard Worker// CHECK: uaddlv s0, v1.8h // encoding: [0x20,0x38,0x70,0x6e] 31*9880d681SAndroid Build Coastguard Worker// CHECK: uaddlv d0, v1.4s // encoding: [0x20,0x38,0xb0,0x6e] 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Worker smaxv b0, v1.8b 34*9880d681SAndroid Build Coastguard Worker smaxv b0, v1.16b 35*9880d681SAndroid Build Coastguard Worker smaxv h0, v1.4h 36*9880d681SAndroid Build Coastguard Worker smaxv h0, v1.8h 37*9880d681SAndroid Build Coastguard Worker smaxv s0, v1.4s 38*9880d681SAndroid Build Coastguard Worker 39*9880d681SAndroid Build Coastguard Worker// CHECK: smaxv b0, v1.8b // encoding: [0x20,0xa8,0x30,0x0e] 40*9880d681SAndroid Build Coastguard Worker// CHECK: smaxv b0, v1.16b // encoding: [0x20,0xa8,0x30,0x4e] 41*9880d681SAndroid Build Coastguard Worker// CHECK: smaxv h0, v1.4h // encoding: [0x20,0xa8,0x70,0x0e] 42*9880d681SAndroid Build Coastguard Worker// CHECK: smaxv h0, v1.8h // encoding: [0x20,0xa8,0x70,0x4e] 43*9880d681SAndroid Build Coastguard Worker// CHECK: smaxv s0, v1.4s // encoding: [0x20,0xa8,0xb0,0x4e] 44*9880d681SAndroid Build Coastguard Worker 45*9880d681SAndroid Build Coastguard Worker sminv b0, v1.8b 46*9880d681SAndroid Build Coastguard Worker sminv b0, v1.16b 47*9880d681SAndroid Build Coastguard Worker sminv h0, v1.4h 48*9880d681SAndroid Build Coastguard Worker sminv h0, v1.8h 49*9880d681SAndroid Build Coastguard Worker sminv s0, v1.4s 50*9880d681SAndroid Build Coastguard Worker 51*9880d681SAndroid Build Coastguard Worker// CHECK: sminv b0, v1.8b // encoding: [0x20,0xa8,0x31,0x0e] 52*9880d681SAndroid Build Coastguard Worker// CHECK: sminv b0, v1.16b // encoding: [0x20,0xa8,0x31,0x4e] 53*9880d681SAndroid Build Coastguard Worker// CHECK: sminv h0, v1.4h // encoding: [0x20,0xa8,0x71,0x0e] 54*9880d681SAndroid Build Coastguard Worker// CHECK: sminv h0, v1.8h // encoding: [0x20,0xa8,0x71,0x4e] 55*9880d681SAndroid Build Coastguard Worker// CHECK: sminv s0, v1.4s // encoding: [0x20,0xa8,0xb1,0x4e] 56*9880d681SAndroid Build Coastguard Worker 57*9880d681SAndroid Build Coastguard Worker umaxv b0, v1.8b 58*9880d681SAndroid Build Coastguard Worker umaxv b0, v1.16b 59*9880d681SAndroid Build Coastguard Worker umaxv h0, v1.4h 60*9880d681SAndroid Build Coastguard Worker umaxv h0, v1.8h 61*9880d681SAndroid Build Coastguard Worker umaxv s0, v1.4s 62*9880d681SAndroid Build Coastguard Worker 63*9880d681SAndroid Build Coastguard Worker// CHECK: umaxv b0, v1.8b // encoding: [0x20,0xa8,0x30,0x2e] 64*9880d681SAndroid Build Coastguard Worker// CHECK: umaxv b0, v1.16b // encoding: [0x20,0xa8,0x30,0x6e] 65*9880d681SAndroid Build Coastguard Worker// CHECK: umaxv h0, v1.4h // encoding: [0x20,0xa8,0x70,0x2e] 66*9880d681SAndroid Build Coastguard Worker// CHECK: umaxv h0, v1.8h // encoding: [0x20,0xa8,0x70,0x6e] 67*9880d681SAndroid Build Coastguard Worker// CHECK: umaxv s0, v1.4s // encoding: [0x20,0xa8,0xb0,0x6e] 68*9880d681SAndroid Build Coastguard Worker 69*9880d681SAndroid Build Coastguard Worker uminv b0, v1.8b 70*9880d681SAndroid Build Coastguard Worker uminv b0, v1.16b 71*9880d681SAndroid Build Coastguard Worker uminv h0, v1.4h 72*9880d681SAndroid Build Coastguard Worker uminv h0, v1.8h 73*9880d681SAndroid Build Coastguard Worker uminv s0, v1.4s 74*9880d681SAndroid Build Coastguard Worker 75*9880d681SAndroid Build Coastguard Worker// CHECK: uminv b0, v1.8b // encoding: [0x20,0xa8,0x31,0x2e] 76*9880d681SAndroid Build Coastguard Worker// CHECK: uminv b0, v1.16b // encoding: [0x20,0xa8,0x31,0x6e] 77*9880d681SAndroid Build Coastguard Worker// CHECK: uminv h0, v1.4h // encoding: [0x20,0xa8,0x71,0x2e] 78*9880d681SAndroid Build Coastguard Worker// CHECK: uminv h0, v1.8h // encoding: [0x20,0xa8,0x71,0x6e] 79*9880d681SAndroid Build Coastguard Worker// CHECK: uminv s0, v1.4s // encoding: [0x20,0xa8,0xb1,0x6e] 80*9880d681SAndroid Build Coastguard Worker 81*9880d681SAndroid Build Coastguard Worker addv b0, v1.8b 82*9880d681SAndroid Build Coastguard Worker addv b0, v1.16b 83*9880d681SAndroid Build Coastguard Worker addv h0, v1.4h 84*9880d681SAndroid Build Coastguard Worker addv h0, v1.8h 85*9880d681SAndroid Build Coastguard Worker addv s0, v1.4s 86*9880d681SAndroid Build Coastguard Worker 87*9880d681SAndroid Build Coastguard Worker// CHECK: addv b0, v1.8b // encoding: [0x20,0xb8,0x31,0x0e] 88*9880d681SAndroid Build Coastguard Worker// CHECK: addv b0, v1.16b // encoding: [0x20,0xb8,0x31,0x4e] 89*9880d681SAndroid Build Coastguard Worker// CHECK: addv h0, v1.4h // encoding: [0x20,0xb8,0x71,0x0e] 90*9880d681SAndroid Build Coastguard Worker// CHECK: addv h0, v1.8h // encoding: [0x20,0xb8,0x71,0x4e] 91*9880d681SAndroid Build Coastguard Worker// CHECK: addv s0, v1.4s // encoding: [0x20,0xb8,0xb1,0x4e] 92*9880d681SAndroid Build Coastguard Worker 93*9880d681SAndroid Build Coastguard Worker fmaxnmv h0, v1.4h 94*9880d681SAndroid Build Coastguard Worker fminnmv h0, v1.4h 95*9880d681SAndroid Build Coastguard Worker fmaxv h0, v1.4h 96*9880d681SAndroid Build Coastguard Worker fminv h0, v1.4h 97*9880d681SAndroid Build Coastguard Worker fmaxnmv h0, v1.8h 98*9880d681SAndroid Build Coastguard Worker fminnmv h0, v1.8h 99*9880d681SAndroid Build Coastguard Worker fmaxv h0, v1.8h 100*9880d681SAndroid Build Coastguard Worker fminv h0, v1.8h 101*9880d681SAndroid Build Coastguard Worker fmaxnmv s0, v1.4s 102*9880d681SAndroid Build Coastguard Worker fminnmv s0, v1.4s 103*9880d681SAndroid Build Coastguard Worker fmaxv s0, v1.4s 104*9880d681SAndroid Build Coastguard Worker fminv s0, v1.4s 105*9880d681SAndroid Build Coastguard Worker 106*9880d681SAndroid Build Coastguard Worker// CHECK: fmaxnmv h0, v1.4h // encoding: [0x20,0xc8,0x30,0x0e] 107*9880d681SAndroid Build Coastguard Worker// CHECK: fminnmv h0, v1.4h // encoding: [0x20,0xc8,0xb0,0x0e] 108*9880d681SAndroid Build Coastguard Worker// CHECK: fmaxv h0, v1.4h // encoding: [0x20,0xf8,0x30,0x0e] 109*9880d681SAndroid Build Coastguard Worker// CHECK: fminv h0, v1.4h // encoding: [0x20,0xf8,0xb0,0x0e] 110*9880d681SAndroid Build Coastguard Worker// CHECK: fmaxnmv h0, v1.8h // encoding: [0x20,0xc8,0x30,0x4e] 111*9880d681SAndroid Build Coastguard Worker// CHECK: fminnmv h0, v1.8h // encoding: [0x20,0xc8,0xb0,0x4e] 112*9880d681SAndroid Build Coastguard Worker// CHECK: fmaxv h0, v1.8h // encoding: [0x20,0xf8,0x30,0x4e] 113*9880d681SAndroid Build Coastguard Worker// CHECK: fminv h0, v1.8h // encoding: [0x20,0xf8,0xb0,0x4e] 114*9880d681SAndroid Build Coastguard Worker// CHECK: fmaxnmv s0, v1.4s // encoding: [0x20,0xc8,0x30,0x6e] 115*9880d681SAndroid Build Coastguard Worker// CHECK: fminnmv s0, v1.4s // encoding: [0x20,0xc8,0xb0,0x6e] 116*9880d681SAndroid Build Coastguard Worker// CHECK: fmaxv s0, v1.4s // encoding: [0x20,0xf8,0x30,0x6e] 117*9880d681SAndroid Build Coastguard Worker// CHECK: fminv s0, v1.4s // encoding: [0x20,0xf8,0xb0,0x6e] 118