1*9880d681SAndroid Build Coastguard Worker// RUN: llvm-mc -triple aarch64-none-linux-gnu -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// Vector Maximum (Signed and Unsigned Integer) 7*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 8*9880d681SAndroid Build Coastguard Worker smax v0.8b, v1.8b, v2.8b 9*9880d681SAndroid Build Coastguard Worker smax v0.16b, v1.16b, v2.16b 10*9880d681SAndroid Build Coastguard Worker smax v0.4h, v1.4h, v2.4h 11*9880d681SAndroid Build Coastguard Worker smax v0.8h, v1.8h, v2.8h 12*9880d681SAndroid Build Coastguard Worker smax v0.2s, v1.2s, v2.2s 13*9880d681SAndroid Build Coastguard Worker smax v0.4s, v1.4s, v2.4s 14*9880d681SAndroid Build Coastguard Worker 15*9880d681SAndroid Build Coastguard Worker// CHECK: smax v0.8b, v1.8b, v2.8b // encoding: [0x20,0x64,0x22,0x0e] 16*9880d681SAndroid Build Coastguard Worker// CHECK: smax v0.16b, v1.16b, v2.16b // encoding: [0x20,0x64,0x22,0x4e] 17*9880d681SAndroid Build Coastguard Worker// CHECK: smax v0.4h, v1.4h, v2.4h // encoding: [0x20,0x64,0x62,0x0e] 18*9880d681SAndroid Build Coastguard Worker// CHECK: smax v0.8h, v1.8h, v2.8h // encoding: [0x20,0x64,0x62,0x4e] 19*9880d681SAndroid Build Coastguard Worker// CHECK: smax v0.2s, v1.2s, v2.2s // encoding: [0x20,0x64,0xa2,0x0e] 20*9880d681SAndroid Build Coastguard Worker// CHECK: smax v0.4s, v1.4s, v2.4s // encoding: [0x20,0x64,0xa2,0x4e] 21*9880d681SAndroid Build Coastguard Worker 22*9880d681SAndroid Build Coastguard Worker umax v0.8b, v1.8b, v2.8b 23*9880d681SAndroid Build Coastguard Worker umax v0.16b, v1.16b, v2.16b 24*9880d681SAndroid Build Coastguard Worker umax v0.4h, v1.4h, v2.4h 25*9880d681SAndroid Build Coastguard Worker umax v0.8h, v1.8h, v2.8h 26*9880d681SAndroid Build Coastguard Worker umax v0.2s, v1.2s, v2.2s 27*9880d681SAndroid Build Coastguard Worker umax v0.4s, v1.4s, v2.4s 28*9880d681SAndroid Build Coastguard Worker 29*9880d681SAndroid Build Coastguard Worker// CHECK: umax v0.8b, v1.8b, v2.8b // encoding: [0x20,0x64,0x22,0x2e] 30*9880d681SAndroid Build Coastguard Worker// CHECK: umax v0.16b, v1.16b, v2.16b // encoding: [0x20,0x64,0x22,0x6e] 31*9880d681SAndroid Build Coastguard Worker// CHECK: umax v0.4h, v1.4h, v2.4h // encoding: [0x20,0x64,0x62,0x2e] 32*9880d681SAndroid Build Coastguard Worker// CHECK: umax v0.8h, v1.8h, v2.8h // encoding: [0x20,0x64,0x62,0x6e] 33*9880d681SAndroid Build Coastguard Worker// CHECK: umax v0.2s, v1.2s, v2.2s // encoding: [0x20,0x64,0xa2,0x2e] 34*9880d681SAndroid Build Coastguard Worker// CHECK: umax v0.4s, v1.4s, v2.4s // encoding: [0x20,0x64,0xa2,0x6e] 35*9880d681SAndroid Build Coastguard Worker 36*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 37*9880d681SAndroid Build Coastguard Worker// Vector Minimum (Signed and Unsigned Integer) 38*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 39*9880d681SAndroid Build Coastguard Worker smin v0.8b, v1.8b, v2.8b 40*9880d681SAndroid Build Coastguard Worker smin v0.16b, v1.16b, v2.16b 41*9880d681SAndroid Build Coastguard Worker smin v0.4h, v1.4h, v2.4h 42*9880d681SAndroid Build Coastguard Worker smin v0.8h, v1.8h, v2.8h 43*9880d681SAndroid Build Coastguard Worker smin v0.2s, v1.2s, v2.2s 44*9880d681SAndroid Build Coastguard Worker smin v0.4s, v1.4s, v2.4s 45*9880d681SAndroid Build Coastguard Worker 46*9880d681SAndroid Build Coastguard Worker// CHECK: smin v0.8b, v1.8b, v2.8b // encoding: [0x20,0x6c,0x22,0x0e] 47*9880d681SAndroid Build Coastguard Worker// CHECK: smin v0.16b, v1.16b, v2.16b // encoding: [0x20,0x6c,0x22,0x4e] 48*9880d681SAndroid Build Coastguard Worker// CHECK: smin v0.4h, v1.4h, v2.4h // encoding: [0x20,0x6c,0x62,0x0e] 49*9880d681SAndroid Build Coastguard Worker// CHECK: smin v0.8h, v1.8h, v2.8h // encoding: [0x20,0x6c,0x62,0x4e] 50*9880d681SAndroid Build Coastguard Worker// CHECK: smin v0.2s, v1.2s, v2.2s // encoding: [0x20,0x6c,0xa2,0x0e] 51*9880d681SAndroid Build Coastguard Worker// CHECK: smin v0.4s, v1.4s, v2.4s // encoding: [0x20,0x6c,0xa2,0x4e] 52*9880d681SAndroid Build Coastguard Worker 53*9880d681SAndroid Build Coastguard Worker umin v0.8b, v1.8b, v2.8b 54*9880d681SAndroid Build Coastguard Worker umin v0.16b, v1.16b, v2.16b 55*9880d681SAndroid Build Coastguard Worker umin v0.4h, v1.4h, v2.4h 56*9880d681SAndroid Build Coastguard Worker umin v0.8h, v1.8h, v2.8h 57*9880d681SAndroid Build Coastguard Worker umin v0.2s, v1.2s, v2.2s 58*9880d681SAndroid Build Coastguard Worker umin v0.4s, v1.4s, v2.4s 59*9880d681SAndroid Build Coastguard Worker 60*9880d681SAndroid Build Coastguard Worker// CHECK: umin v0.8b, v1.8b, v2.8b // encoding: [0x20,0x6c,0x22,0x2e] 61*9880d681SAndroid Build Coastguard Worker// CHECK: umin v0.16b, v1.16b, v2.16b // encoding: [0x20,0x6c,0x22,0x6e] 62*9880d681SAndroid Build Coastguard Worker// CHECK: umin v0.4h, v1.4h, v2.4h // encoding: [0x20,0x6c,0x62,0x2e] 63*9880d681SAndroid Build Coastguard Worker// CHECK: umin v0.8h, v1.8h, v2.8h // encoding: [0x20,0x6c,0x62,0x6e] 64*9880d681SAndroid Build Coastguard Worker// CHECK: umin v0.2s, v1.2s, v2.2s // encoding: [0x20,0x6c,0xa2,0x2e] 65*9880d681SAndroid Build Coastguard Worker// CHECK: umin v0.4s, v1.4s, v2.4s // encoding: [0x20,0x6c,0xa2,0x6e] 66*9880d681SAndroid Build Coastguard Worker 67*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 68*9880d681SAndroid Build Coastguard Worker// Vector Maximum (Floating Point) 69*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 70*9880d681SAndroid Build Coastguard Worker fmax v0.4h, v1.4h, v2.4h 71*9880d681SAndroid Build Coastguard Worker fmax v0.8h, v1.8h, v2.8h 72*9880d681SAndroid Build Coastguard Worker fmax v0.2s, v1.2s, v2.2s 73*9880d681SAndroid Build Coastguard Worker fmax v31.4s, v15.4s, v16.4s 74*9880d681SAndroid Build Coastguard Worker fmax v7.2d, v8.2d, v25.2d 75*9880d681SAndroid Build Coastguard Worker 76*9880d681SAndroid Build Coastguard Worker// CHECK: fmax v0.4h, v1.4h, v2.4h // encoding: [0x20,0x34,0x42,0x0e] 77*9880d681SAndroid Build Coastguard Worker// CHECK: fmax v0.8h, v1.8h, v2.8h // encoding: [0x20,0x34,0x42,0x4e] 78*9880d681SAndroid Build Coastguard Worker// CHECK: fmax v0.2s, v1.2s, v2.2s // encoding: [0x20,0xf4,0x22,0x0e] 79*9880d681SAndroid Build Coastguard Worker// CHECK: fmax v31.4s, v15.4s, v16.4s // encoding: [0xff,0xf5,0x30,0x4e] 80*9880d681SAndroid Build Coastguard Worker// CHECK: fmax v7.2d, v8.2d, v25.2d // encoding: [0x07,0xf5,0x79,0x4e] 81*9880d681SAndroid Build Coastguard Worker 82*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 83*9880d681SAndroid Build Coastguard Worker// Vector Minimum (Floating Point) 84*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 85*9880d681SAndroid Build Coastguard Worker fmin v10.4h, v15.4h, v22.4h 86*9880d681SAndroid Build Coastguard Worker fmin v10.8h, v15.8h, v22.8h 87*9880d681SAndroid Build Coastguard Worker fmin v10.2s, v15.2s, v22.2s 88*9880d681SAndroid Build Coastguard Worker fmin v3.4s, v5.4s, v6.4s 89*9880d681SAndroid Build Coastguard Worker fmin v17.2d, v13.2d, v2.2d 90*9880d681SAndroid Build Coastguard Worker 91*9880d681SAndroid Build Coastguard Worker// CHECK: fmin v10.4h, v15.4h, v22.4h // encoding: [0xea,0x35,0xd6,0x0e] 92*9880d681SAndroid Build Coastguard Worker// CHECK: fmin v10.8h, v15.8h, v22.8h // encoding: [0xea,0x35,0xd6,0x4e] 93*9880d681SAndroid Build Coastguard Worker// CHECK: fmin v10.2s, v15.2s, v22.2s // encoding: [0xea,0xf5,0xb6,0x0e] 94*9880d681SAndroid Build Coastguard Worker// CHECK: fmin v3.4s, v5.4s, v6.4s // encoding: [0xa3,0xf4,0xa6,0x4e] 95*9880d681SAndroid Build Coastguard Worker// CHECK: fmin v17.2d, v13.2d, v2.2d // encoding: [0xb1,0xf5,0xe2,0x4e] 96*9880d681SAndroid Build Coastguard Worker 97*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 98*9880d681SAndroid Build Coastguard Worker// Vector maxNum (Floating Point) 99*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 100*9880d681SAndroid Build Coastguard Worker fmaxnm v0.4h, v1.4h, v2.4h 101*9880d681SAndroid Build Coastguard Worker fmaxnm v0.8h, v1.8h, v2.8h 102*9880d681SAndroid Build Coastguard Worker fmaxnm v0.2s, v1.2s, v2.2s 103*9880d681SAndroid Build Coastguard Worker fmaxnm v31.4s, v15.4s, v16.4s 104*9880d681SAndroid Build Coastguard Worker fmaxnm v7.2d, v8.2d, v25.2d 105*9880d681SAndroid Build Coastguard Worker 106*9880d681SAndroid Build Coastguard Worker// CHECK: fmaxnm v0.4h, v1.4h, v2.4h // encoding: [0x20,0x04,0x42,0x0e] 107*9880d681SAndroid Build Coastguard Worker// CHECK: fmaxnm v0.8h, v1.8h, v2.8h // encoding: [0x20,0x04,0x42,0x4e] 108*9880d681SAndroid Build Coastguard Worker// CHECK: fmaxnm v0.2s, v1.2s, v2.2s // encoding: [0x20,0xc4,0x22,0x0e] 109*9880d681SAndroid Build Coastguard Worker// CHECK: fmaxnm v31.4s, v15.4s, v16.4s // encoding: [0xff,0xc5,0x30,0x4e] 110*9880d681SAndroid Build Coastguard Worker// CHECK: fmaxnm v7.2d, v8.2d, v25.2d // encoding: [0x07,0xc5,0x79,0x4e] 111*9880d681SAndroid Build Coastguard Worker 112*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 113*9880d681SAndroid Build Coastguard Worker// Vector minNum (Floating Point) 114*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 115*9880d681SAndroid Build Coastguard Worker fminnm v10.4h, v15.4h, v22.4h 116*9880d681SAndroid Build Coastguard Worker fminnm v10.8h, v15.8h, v22.8h 117*9880d681SAndroid Build Coastguard Worker fminnm v10.2s, v15.2s, v22.2s 118*9880d681SAndroid Build Coastguard Worker fminnm v3.4s, v5.4s, v6.4s 119*9880d681SAndroid Build Coastguard Worker fminnm v17.2d, v13.2d, v2.2d 120*9880d681SAndroid Build Coastguard Worker 121*9880d681SAndroid Build Coastguard Worker// CHECK: fminnm v10.4h, v15.4h, v22.4h // encoding: [0xea,0x05,0xd6,0x0e] 122*9880d681SAndroid Build Coastguard Worker// CHECK: fminnm v10.8h, v15.8h, v22.8h // encoding: [0xea,0x05,0xd6,0x4e] 123*9880d681SAndroid Build Coastguard Worker// CHECK: fminnm v10.2s, v15.2s, v22.2s // encoding: [0xea,0xc5,0xb6,0x0e] 124*9880d681SAndroid Build Coastguard Worker// CHECK: fminnm v3.4s, v5.4s, v6.4s // encoding: [0xa3,0xc4,0xa6,0x4e] 125*9880d681SAndroid Build Coastguard Worker// CHECK: fminnm v17.2d, v13.2d, v2.2d // encoding: [0xb1,0xc5,0xe2,0x4e] 126*9880d681SAndroid Build Coastguard Worker 127