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// Scalar Signed Integer Convert To Floating-point 7*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 8*9880d681SAndroid Build Coastguard Worker 9*9880d681SAndroid Build Coastguard Worker scvtf h23, h14 10*9880d681SAndroid Build Coastguard Worker scvtf s22, s13 11*9880d681SAndroid Build Coastguard Worker scvtf d21, d12 12*9880d681SAndroid Build Coastguard Worker 13*9880d681SAndroid Build Coastguard Worker// CHECK: scvtf h23, h14 // encoding: [0xd7,0xd9,0x79,0x5e] 14*9880d681SAndroid Build Coastguard Worker// CHECK: scvtf s22, s13 // encoding: [0xb6,0xd9,0x21,0x5e] 15*9880d681SAndroid Build Coastguard Worker// CHECK: scvtf d21, d12 // encoding: [0x95,0xd9,0x61,0x5e] 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 18*9880d681SAndroid Build Coastguard Worker// Scalar Unsigned Integer Convert To Floating-point 19*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 20*9880d681SAndroid Build Coastguard Worker 21*9880d681SAndroid Build Coastguard Worker ucvtf h20, h12 22*9880d681SAndroid Build Coastguard Worker ucvtf s22, s13 23*9880d681SAndroid Build Coastguard Worker ucvtf d21, d14 24*9880d681SAndroid Build Coastguard Worker 25*9880d681SAndroid Build Coastguard Worker// CHECK: ucvtf h20, h12 // encoding: [0x94,0xd9,0x79,0x7e] 26*9880d681SAndroid Build Coastguard Worker// CHECK: ucvtf s22, s13 // encoding: [0xb6,0xd9,0x21,0x7e] 27*9880d681SAndroid Build Coastguard Worker// CHECK: ucvtf d21, d14 // encoding: [0xd5,0xd9,0x61,0x7e] 28*9880d681SAndroid Build Coastguard Worker 29*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 30*9880d681SAndroid Build Coastguard Worker// Scalar Signed Fixed-point Convert To Floating-Point (Immediate) 31*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Worker scvtf h22, h13, #16 34*9880d681SAndroid Build Coastguard Worker scvtf s22, s13, #32 35*9880d681SAndroid Build Coastguard Worker scvtf d21, d12, #64 36*9880d681SAndroid Build Coastguard Worker 37*9880d681SAndroid Build Coastguard Worker// CHECK: scvtf h22, h13, #16 // encoding: [0xb6,0xe5,0x10,0x5f] 38*9880d681SAndroid Build Coastguard Worker// CHECK: scvtf s22, s13, #32 // encoding: [0xb6,0xe5,0x20,0x5f] 39*9880d681SAndroid Build Coastguard Worker// CHECK: scvtf d21, d12, #64 // encoding: [0x95,0xe5,0x40,0x5f] 40*9880d681SAndroid Build Coastguard Worker 41*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 42*9880d681SAndroid Build Coastguard Worker// Scalar Unsigned Fixed-point Convert To Floating-Point (Immediate) 43*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 44*9880d681SAndroid Build Coastguard Worker 45*9880d681SAndroid Build Coastguard Worker ucvtf h22, h13, #16 46*9880d681SAndroid Build Coastguard Worker ucvtf s22, s13, #32 47*9880d681SAndroid Build Coastguard Worker ucvtf d21, d14, #64 48*9880d681SAndroid Build Coastguard Worker 49*9880d681SAndroid Build Coastguard Worker// CHECK: ucvtf h22, h13, #16 // encoding: [0xb6,0xe5,0x10,0x7f] 50*9880d681SAndroid Build Coastguard Worker// CHECK: ucvtf s22, s13, #32 // encoding: [0xb6,0xe5,0x20,0x7f] 51*9880d681SAndroid Build Coastguard Worker// CHECK: ucvtf d21, d14, #64 // encoding: [0xd5,0xe5,0x40,0x7f] 52*9880d681SAndroid Build Coastguard Worker 53*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 54*9880d681SAndroid Build Coastguard Worker// Scalar Floating-point Convert To Signed Fixed-point (Immediate) 55*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 56*9880d681SAndroid Build Coastguard Worker 57*9880d681SAndroid Build Coastguard Worker fcvtzs h21, h12, #1 58*9880d681SAndroid Build Coastguard Worker fcvtzs s21, s12, #1 59*9880d681SAndroid Build Coastguard Worker fcvtzs d21, d12, #1 60*9880d681SAndroid Build Coastguard Worker 61*9880d681SAndroid Build Coastguard Worker// CHECK: fcvtzs h21, h12, #1 // encoding: [0x95,0xfd,0x1f,0x5f] 62*9880d681SAndroid Build Coastguard Worker// CHECK: fcvtzs s21, s12, #1 // encoding: [0x95,0xfd,0x3f,0x5f] 63*9880d681SAndroid Build Coastguard Worker// CHECK: fcvtzs d21, d12, #1 // encoding: [0x95,0xfd,0x7f,0x5f] 64*9880d681SAndroid Build Coastguard Worker 65*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 66*9880d681SAndroid Build Coastguard Worker// Scalar Floating-point Convert To Unsigned Fixed-point (Immediate) 67*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 68*9880d681SAndroid Build Coastguard Worker 69*9880d681SAndroid Build Coastguard Worker fcvtzu h21, h12, #1 70*9880d681SAndroid Build Coastguard Worker fcvtzu s21, s12, #1 71*9880d681SAndroid Build Coastguard Worker fcvtzu d21, d12, #1 72*9880d681SAndroid Build Coastguard Worker 73*9880d681SAndroid Build Coastguard Worker// CHECK: fcvtzu h21, h12, #1 // encoding: [0x95,0xfd,0x1f,0x7f] 74*9880d681SAndroid Build Coastguard Worker// CHECK: fcvtzu s21, s12, #1 // encoding: [0x95,0xfd,0x3f,0x7f] 75*9880d681SAndroid Build Coastguard Worker// CHECK: fcvtzu d21, d12, #1 // encoding: [0x95,0xfd,0x7f,0x7f] 76*9880d681SAndroid Build Coastguard Worker 77*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 78*9880d681SAndroid Build Coastguard Worker// Scalar Floating-point Convert To Lower Precision Narrow, Rounding To 79*9880d681SAndroid Build Coastguard Worker// Odd 80*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 81*9880d681SAndroid Build Coastguard Worker 82*9880d681SAndroid Build Coastguard Worker fcvtxn s22, d13 83*9880d681SAndroid Build Coastguard Worker 84*9880d681SAndroid Build Coastguard Worker// CHECK: fcvtxn s22, d13 // encoding: [0xb6,0x69,0x61,0x7e] 85*9880d681SAndroid Build Coastguard Worker 86*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 87*9880d681SAndroid Build Coastguard Worker// Scalar Floating-point Convert To Signed Integer, Rounding To Nearest 88*9880d681SAndroid Build Coastguard Worker// With Ties To Away 89*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 90*9880d681SAndroid Build Coastguard Worker 91*9880d681SAndroid Build Coastguard Worker fcvtas h12, h13 92*9880d681SAndroid Build Coastguard Worker fcvtas s12, s13 93*9880d681SAndroid Build Coastguard Worker fcvtas d21, d14 94*9880d681SAndroid Build Coastguard Worker 95*9880d681SAndroid Build Coastguard Worker// CHECK: fcvtas h12, h13 // encoding: [0xac,0xc9,0x79,0x5e] 96*9880d681SAndroid Build Coastguard Worker// CHECK: fcvtas s12, s13 // encoding: [0xac,0xc9,0x21,0x5e] 97*9880d681SAndroid Build Coastguard Worker// CHECK: fcvtas d21, d14 // encoding: [0xd5,0xc9,0x61,0x5e] 98*9880d681SAndroid Build Coastguard Worker 99*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 100*9880d681SAndroid Build Coastguard Worker// Scalar Floating-point Convert To Unsigned Integer, Rounding To 101*9880d681SAndroid Build Coastguard Worker// Nearest With Ties To Away 102*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 103*9880d681SAndroid Build Coastguard Worker 104*9880d681SAndroid Build Coastguard Worker fcvtau h12, h13 105*9880d681SAndroid Build Coastguard Worker fcvtau s12, s13 106*9880d681SAndroid Build Coastguard Worker fcvtau d21, d14 107*9880d681SAndroid Build Coastguard Worker 108*9880d681SAndroid Build Coastguard Worker// CHECK: fcvtau h12, h13 // encoding: [0xac,0xc9,0x79,0x7e] 109*9880d681SAndroid Build Coastguard Worker// CHECK: fcvtau s12, s13 // encoding: [0xac,0xc9,0x21,0x7e] 110*9880d681SAndroid Build Coastguard Worker// CHECK: fcvtau d21, d14 // encoding: [0xd5,0xc9,0x61,0x7e] 111*9880d681SAndroid Build Coastguard Worker 112*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 113*9880d681SAndroid Build Coastguard Worker// Scalar Floating-point Convert To Signed Integer, Rounding Toward 114*9880d681SAndroid Build Coastguard Worker// Minus Infinity 115*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 116*9880d681SAndroid Build Coastguard Worker 117*9880d681SAndroid Build Coastguard Worker fcvtms h22, h13 118*9880d681SAndroid Build Coastguard Worker fcvtms s22, s13 119*9880d681SAndroid Build Coastguard Worker fcvtms d21, d14 120*9880d681SAndroid Build Coastguard Worker 121*9880d681SAndroid Build Coastguard Worker// CHECK: fcvtms h22, h13 // encoding: [0xb6,0xb9,0x79,0x5e] 122*9880d681SAndroid Build Coastguard Worker// CHECK: fcvtms s22, s13 // encoding: [0xb6,0xb9,0x21,0x5e] 123*9880d681SAndroid Build Coastguard Worker// CHECK: fcvtms d21, d14 // encoding: [0xd5,0xb9,0x61,0x5e] 124*9880d681SAndroid Build Coastguard Worker 125*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 126*9880d681SAndroid Build Coastguard Worker// Scalar Floating-point Convert To Unsigned Integer, Rounding Toward 127*9880d681SAndroid Build Coastguard Worker// Minus Infinity 128*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 129*9880d681SAndroid Build Coastguard Worker 130*9880d681SAndroid Build Coastguard Worker fcvtmu h12, h13 131*9880d681SAndroid Build Coastguard Worker fcvtmu s12, s13 132*9880d681SAndroid Build Coastguard Worker fcvtmu d21, d14 133*9880d681SAndroid Build Coastguard Worker 134*9880d681SAndroid Build Coastguard Worker// CHECK: fcvtmu h12, h13 // encoding: [0xac,0xb9,0x79,0x7e] 135*9880d681SAndroid Build Coastguard Worker// CHECK: fcvtmu s12, s13 // encoding: [0xac,0xb9,0x21,0x7e] 136*9880d681SAndroid Build Coastguard Worker// CHECK: fcvtmu d21, d14 // encoding: [0xd5,0xb9,0x61,0x7e] 137*9880d681SAndroid Build Coastguard Worker 138*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 139*9880d681SAndroid Build Coastguard Worker// Scalar Floating-point Convert To Signed Integer, Rounding To Nearest 140*9880d681SAndroid Build Coastguard Worker// With Ties To Even 141*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 142*9880d681SAndroid Build Coastguard Worker 143*9880d681SAndroid Build Coastguard Worker fcvtns h22, h13 144*9880d681SAndroid Build Coastguard Worker fcvtns s22, s13 145*9880d681SAndroid Build Coastguard Worker fcvtns d21, d14 146*9880d681SAndroid Build Coastguard Worker 147*9880d681SAndroid Build Coastguard Worker// CHECK: fcvtns h22, h13 // encoding: [0xb6,0xa9,0x79,0x5e] 148*9880d681SAndroid Build Coastguard Worker// CHECK: fcvtns s22, s13 // encoding: [0xb6,0xa9,0x21,0x5e] 149*9880d681SAndroid Build Coastguard Worker// CHECK: fcvtns d21, d14 // encoding: [0xd5,0xa9,0x61,0x5e] 150*9880d681SAndroid Build Coastguard Worker 151*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 152*9880d681SAndroid Build Coastguard Worker// Scalar Floating-point Convert To Unsigned Integer, Rounding To 153*9880d681SAndroid Build Coastguard Worker// Nearest With Ties To Even 154*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 155*9880d681SAndroid Build Coastguard Worker 156*9880d681SAndroid Build Coastguard Worker fcvtnu h12, h13 157*9880d681SAndroid Build Coastguard Worker fcvtnu s12, s13 158*9880d681SAndroid Build Coastguard Worker fcvtnu d21, d14 159*9880d681SAndroid Build Coastguard Worker 160*9880d681SAndroid Build Coastguard Worker// CHECK: fcvtnu h12, h13 // encoding: [0xac,0xa9,0x79,0x7e] 161*9880d681SAndroid Build Coastguard Worker// CHECK: fcvtnu s12, s13 // encoding: [0xac,0xa9,0x21,0x7e] 162*9880d681SAndroid Build Coastguard Worker// CHECK: fcvtnu d21, d14 // encoding: [0xd5,0xa9,0x61,0x7e] 163*9880d681SAndroid Build Coastguard Worker 164*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 165*9880d681SAndroid Build Coastguard Worker// Scalar Floating-point Convert To Signed Integer, Rounding Toward 166*9880d681SAndroid Build Coastguard Worker// Positive Infinity 167*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 168*9880d681SAndroid Build Coastguard Worker 169*9880d681SAndroid Build Coastguard Worker fcvtps h22, h13 170*9880d681SAndroid Build Coastguard Worker fcvtps s22, s13 171*9880d681SAndroid Build Coastguard Worker fcvtps d21, d14 172*9880d681SAndroid Build Coastguard Worker 173*9880d681SAndroid Build Coastguard Worker// CHECK: fcvtps h22, h13 // encoding: [0xb6,0xa9,0xf9,0x5e] 174*9880d681SAndroid Build Coastguard Worker// CHECK: fcvtps s22, s13 // encoding: [0xb6,0xa9,0xa1,0x5e] 175*9880d681SAndroid Build Coastguard Worker// CHECK: fcvtps d21, d14 // encoding: [0xd5,0xa9,0xe1,0x5e] 176*9880d681SAndroid Build Coastguard Worker 177*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 178*9880d681SAndroid Build Coastguard Worker// Scalar Floating-point Convert To Unsigned Integer, Rounding Toward 179*9880d681SAndroid Build Coastguard Worker// Positive Infinity 180*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 181*9880d681SAndroid Build Coastguard Worker 182*9880d681SAndroid Build Coastguard Worker fcvtpu h12, h13 183*9880d681SAndroid Build Coastguard Worker fcvtpu s12, s13 184*9880d681SAndroid Build Coastguard Worker fcvtpu d21, d14 185*9880d681SAndroid Build Coastguard Worker 186*9880d681SAndroid Build Coastguard Worker// CHECK: fcvtpu h12, h13 // encoding: [0xac,0xa9,0xf9,0x7e] 187*9880d681SAndroid Build Coastguard Worker// CHECK: fcvtpu s12, s13 // encoding: [0xac,0xa9,0xa1,0x7e] 188*9880d681SAndroid Build Coastguard Worker// CHECK: fcvtpu d21, d14 // encoding: [0xd5,0xa9,0xe1,0x7e] 189*9880d681SAndroid Build Coastguard Worker 190*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 191*9880d681SAndroid Build Coastguard Worker// Scalar Floating-point Convert To Signed Integer, Rounding Toward Zero 192*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 193*9880d681SAndroid Build Coastguard Worker 194*9880d681SAndroid Build Coastguard Worker fcvtzs h12, h13 195*9880d681SAndroid Build Coastguard Worker fcvtzs s12, s13 196*9880d681SAndroid Build Coastguard Worker fcvtzs d21, d14 197*9880d681SAndroid Build Coastguard Worker 198*9880d681SAndroid Build Coastguard Worker// CHECK: fcvtzs h12, h13 // encoding: [0xac,0xb9,0xf9,0x5e] 199*9880d681SAndroid Build Coastguard Worker// CHECK: fcvtzs s12, s13 // encoding: [0xac,0xb9,0xa1,0x5e] 200*9880d681SAndroid Build Coastguard Worker// CHECK: fcvtzs d21, d14 // encoding: [0xd5,0xb9,0xe1,0x5e] 201*9880d681SAndroid Build Coastguard Worker 202*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 203*9880d681SAndroid Build Coastguard Worker// Scalar Floating-point Convert To Unsigned Integer, Rounding Toward 204*9880d681SAndroid Build Coastguard Worker// Zero 205*9880d681SAndroid Build Coastguard Worker//---------------------------------------------------------------------- 206*9880d681SAndroid Build Coastguard Worker 207*9880d681SAndroid Build Coastguard Worker fcvtzu h12, h13 208*9880d681SAndroid Build Coastguard Worker fcvtzu s12, s13 209*9880d681SAndroid Build Coastguard Worker fcvtzu d21, d14 210*9880d681SAndroid Build Coastguard Worker 211*9880d681SAndroid Build Coastguard Worker// CHECK: fcvtzu h12, h13 // encoding: [0xac,0xb9,0xf9,0x7e] 212*9880d681SAndroid Build Coastguard Worker// CHECK: fcvtzu s12, s13 // encoding: [0xac,0xb9,0xa1,0x7e] 213*9880d681SAndroid Build Coastguard Worker// CHECK: fcvtzu d21, d14 // encoding: [0xd5,0xb9,0xe1,0x7e] 214