static IROp mkNEGF ( IRType ty ) {
switch (ty) {
+ case Ity_F16: return Iop_NegF16;
case Ity_F32: return Iop_NegF32;
case Ity_F64: return Iop_NegF64;
default: vpanic("mkNEGF");
static IROp mkABSF ( IRType ty ) {
switch (ty) {
+ case Ity_F16: return Iop_AbsF16;
case Ity_F32: return Iop_AbsF32;
case Ity_F64: return Iop_AbsF64;
default: vpanic("mkABSF");
static IROp mkSQRTF ( IRType ty ) {
switch (ty) {
+ case Ity_F16: return Iop_SqrtF16;
case Ity_F32: return Iop_SqrtF32;
case Ity_F64: return Iop_SqrtF64;
default: vpanic("mkSQRTF");
}
+static
+Bool dis_AdvSIMD_two_reg_misc_fp16(/*MB_OUT*/DisResult* dres, UInt insn)
+{
+ /* 31 30 29 28 23 21 16 11 9 4
+ 0 Q U 01110 size 11100 opcode 10 n d
+ Decode fields: U,size,opcode
+ */
+# define INSN(_bMax,_bMin) SLICE_UInt(insn, (_bMax), (_bMin))
+ if (INSN(31,31) != 0
+ || INSN(28,24) != BITS5(0,1,1,1,0)
+ || INSN(21,17) != BITS5(1,1,1,0,0)
+ || INSN(11,10) != BITS2(1,0)) {
+ return False;
+ }
+ UInt bitQ = INSN(30,30);
+ UInt bitU = INSN(29,29);
+ UInt size = INSN(23,22);
+ UInt opcode = INSN(16,12);
+ UInt nn = INSN(9,5);
+ UInt dd = INSN(4,0);
+ vassert(size < 4);
+
+ if (size == X11 && opcode == BITS5(0,1,1,1,1)) {
+ /* -------- Q,0,11,01111: FABS 4h_4h, 8h_8h -------- */
+ /* -------- Q,1,11,01111: FNEG 4h_4h, 8h_8h -------- */
+ Bool isFNEG = bitU == 1;
+ IROp op = isFNEG ? Iop_Neg16Fx8 : Iop_Abs16Fx8;
+ IRTemp res = newTempV128();
+ assign(res, unop(op, getQReg128(nn)));
+ putQReg128(dd, math_MAYBE_ZERO_HI64(bitQ, res));
+ const HChar* arr = bitQ == 0 ? "4h" : "8h";
+ DIP("%s %s.%s, %s.%s\n", isFNEG ? "fneg" : "fabs",
+ nameQReg128(dd), arr, nameQReg128(nn), arr);
+ return True;
+ }
+
+ if (bitU == 1 && size == X11 && opcode == BITS5(1,1,1,1,1)) {
+ /* -------- 1,11,11111: FSQRT 4h_4h, 8h_8h -------- */
+ IRTemp resV = newTempV128();
+ assign(resV, binop(Iop_Sqrt16Fx8, mkexpr(mk_get_IR_rounding_mode()),
+ getQReg128(nn)));
+ putQReg128(dd, math_MAYBE_ZERO_HI64(bitQ, resV));
+ const HChar* arr = bitQ == 0 ? "4h" : "8h";
+ DIP("%s %s.%s, %s.%s\n", "fsqrt",
+ nameQReg128(dd), arr, nameQReg128(nn), arr);
+ return True;
+ }
+
+ return False;
+# undef INSN
+}
+
static
Bool dis_AdvSIMD_vector_x_indexed_elem(/*MB_OUT*/DisResult* dres, UInt insn)
{
UInt nn = INSN(9,5);
UInt dd = INSN(4,0);
- if (ty <= X01 && opcode <= BITS6(0,0,0,0,1,1)) {
+ if (opcode <= BITS6(0,0,0,0,1,1)) {
/* -------- 0x,000000: FMOV d_d, s_s -------- */
- /* -------- 0x,000001: FABS d_d, s_s -------- */
- /* -------- 0x,000010: FNEG d_d, s_s -------- */
- /* -------- 0x,000011: FSQRT d_d, s_s -------- */
- IRType ity = ty == X01 ? Ity_F64 : Ity_F32;
+ /* -------- 0x,000001: FABS d_d, s_s, h_h --- */
+ /* -------- 0x,000010: FNEG d_d, s_s, h_h --- */
+ /* -------- 0x,000011: FSQRT d_d, s_s, h_h --- */
+ IRType ity;
+ if (ty == X01) ity = Ity_F64;
+ else if (ty == X00) ity = Ity_F32;
+ else if (ty == X11) ity = Ity_F16;
+ else vassert(0);
IRTemp src = newTemp(ity);
IRTemp res = newTemp(ity);
const HChar* nm = "??";
case BITS6(0,0,0,0,0,1):
nm = "fabs"; assign(res, unop(mkABSF(ity), mkexpr(src))); break;
case BITS6(0,0,0,0,1,0):
- nm = "fabs"; assign(res, unop(mkNEGF(ity), mkexpr(src))); break;
+ nm = "fneg"; assign(res, unop(mkNEGF(ity), mkexpr(src))); break;
case BITS6(0,0,0,0,1,1):
nm = "fsqrt";
assign(res, binop(mkSQRTF(ity),
if (UNLIKELY(ok)) return True;
ok = dis_AdvSIMD_two_reg_misc(dres, insn);
if (UNLIKELY(ok)) return True;
+ ok = dis_AdvSIMD_two_reg_misc_fp16(dres, insn);
+ if (UNLIKELY(ok)) return True;
ok = dis_AdvSIMD_vector_x_indexed_elem(dres, insn);
if (UNLIKELY(ok)) return True;
ok = dis_AdvSIMD_crypto_aes(dres, insn);
switch (op) {
case ARM64vecu_FNEG64x2: *nm = "fneg "; *ar = "2d"; return;
case ARM64vecu_FNEG32x4: *nm = "fneg "; *ar = "4s"; return;
+ case ARM64vecu_FNEG16x8: *nm = "fneg "; *ar = "8h"; return;
case ARM64vecu_FABS64x2: *nm = "fabs "; *ar = "2d"; return;
case ARM64vecu_FABS32x4: *nm = "fabs "; *ar = "4s"; return;
+ case ARM64vecu_FABS16x8: *nm = "fabs "; *ar = "8h"; return;
case ARM64vecu_NOT: *nm = "not "; *ar = "all"; return;
case ARM64vecu_ABS64x2: *nm = "abs "; *ar = "2d"; return;
case ARM64vecu_ABS32x4: *nm = "abs "; *ar = "4s"; return;
case ARM64vecu_FRSQRTE32x4: *nm = "frsqrte"; *ar = "4s"; return;
case ARM64vecu_FSQRT64x2: *nm = "fsqrt"; *ar = "2d"; return;
case ARM64vecu_FSQRT32x4: *nm = "fsqrt"; *ar = "4s"; return;
+ case ARM64vecu_FSQRT16x8: *nm = "fsqrt"; *ar = "8h"; return;
default: vpanic("showARM64VecUnaryOp");
}
}
i->ARM64in.VUnaryS.src = src;
return i;
}
+ARM64Instr* ARM64Instr_VUnaryH ( ARM64FpUnaryOp op, HReg dst, HReg src ) {
+ ARM64Instr* i = LibVEX_Alloc_inline(sizeof(ARM64Instr));
+ i->tag = ARM64in_VUnaryH;
+ i->ARM64in.VUnaryH.op = op;
+ i->ARM64in.VUnaryH.dst = dst;
+ i->ARM64in.VUnaryH.src = src;
+ return i;
+}
ARM64Instr* ARM64Instr_VBinD ( ARM64FpBinOp op,
HReg dst, HReg argL, HReg argR ) {
ARM64Instr* i = LibVEX_Alloc_inline(sizeof(ARM64Instr));
vex_printf(", ");
ppHRegARM64asSreg(i->ARM64in.VUnaryS.src);
return;
+ case ARM64in_VUnaryH:
+ vex_printf("f%s ", showARM64FpUnaryOp(i->ARM64in.VUnaryH.op));
+ ppHRegARM64asHreg(i->ARM64in.VUnaryH.dst);
+ vex_printf(", ");
+ ppHRegARM64asHreg(i->ARM64in.VUnaryH.src);
+ return;
case ARM64in_VBinD:
vex_printf("f%s ", showARM64FpBinOp(i->ARM64in.VBinD.op));
ppHRegARM64(i->ARM64in.VBinD.dst);
addHRegUse(u, HRmWrite, i->ARM64in.VUnaryS.dst);
addHRegUse(u, HRmRead, i->ARM64in.VUnaryS.src);
return;
+ case ARM64in_VUnaryH:
+ addHRegUse(u, HRmWrite, i->ARM64in.VUnaryH.dst);
+ addHRegUse(u, HRmRead, i->ARM64in.VUnaryH.src);
+ return;
case ARM64in_VBinD:
addHRegUse(u, HRmWrite, i->ARM64in.VBinD.dst);
addHRegUse(u, HRmRead, i->ARM64in.VBinD.argL);
i->ARM64in.VUnaryS.dst = lookupHRegRemap(m, i->ARM64in.VUnaryS.dst);
i->ARM64in.VUnaryS.src = lookupHRegRemap(m, i->ARM64in.VUnaryS.src);
return;
+ case ARM64in_VUnaryH:
+ i->ARM64in.VUnaryH.dst = lookupHRegRemap(m, i->ARM64in.VUnaryH.dst);
+ i->ARM64in.VUnaryH.src = lookupHRegRemap(m, i->ARM64in.VUnaryH.src);
+ return;
case ARM64in_VBinD:
i->ARM64in.VBinD.dst = lookupHRegRemap(m, i->ARM64in.VBinD.dst);
i->ARM64in.VBinD.argL = lookupHRegRemap(m, i->ARM64in.VBinD.argL);
#define X01000 BITS8(0,0,0, 0,1,0,0,0)
#define X10000 BITS8(0,0,0, 1,0,0,0,0)
#define X11000 BITS8(0,0,0, 1,1,0,0,0)
+#define X11001 BITS8(0,0,0, 1,1,0,0,1)
#define X11110 BITS8(0,0,0, 1,1,1,1,0)
#define X11111 BITS8(0,0,0, 1,1,1,1,1)
}
goto bad;
}
+ case ARM64in_VUnaryH: {
+ /* 31 23 21 16 14 9 4
+ 000 11110 11 1 0000 0,1 10000 n d FABS Hd, Hn
+ ------------------- 1,0 --------- FNEG Hd, Hn
+ ------------------- 1,1 --------- FSQRT Hd, Hn
+ */
+ UInt hD = dregEnc(i->ARM64in.VUnaryH.dst);
+ UInt hN = dregEnc(i->ARM64in.VUnaryH.src);
+ /* opc field (bits 15 and 16) */
+ UInt b16 = 2; /* impossible */
+ UInt b15 = 2; /* impossible */
+ switch (i->ARM64in.VUnaryH.op) {
+ case ARM64fpu_NEG: b16 = 1; b15 = 0; break;
+ case ARM64fpu_SQRT: b16 = 1; b15 = 1; break;
+ case ARM64fpu_ABS: b16 = 0; b15 = 1; break;
+ default: break;
+ }
+ /*
+ 000, 11110 11 1,0000 01,10000 n d FABS Hd, Hn
+ ---, ----- -- -,---- 10,----- n d FNEG Hd, Hn
+ ---, ----- -- -,---- 11,----- n d FSQRT Hd, Hn
+ */
+ if (b16 < 2 && b15 < 2) {
+ *p++ = X_3_8_5_6_5_5(X000, X11110111, (X0000 << 1) | b16,
+ (b15 << 5) | X10000, hN, hD);
+ goto done;
+ }
+ goto bad;
+ }
case ARM64in_VBinD: {
/* 31 23 20 15 11 9 4
---------------- 0000 ------ FMUL --------
/* 31 23 20 15 9 4
010 01110 11 1 00000 111110 n d FABS Vd.2d, Vn.2d
010 01110 10 1 00000 111110 n d FABS Vd.4s, Vn.4s
+ 010 01110 11 1 11000 111110 n d FABS Vd.8h, Vn.8h
011 01110 11 1 00000 111110 n d FNEG Vd.2d, Vn.2d
011 01110 10 1 00000 111110 n d FNEG Vd.4s, Vn.4s
+ 011 01110 11 1 11000 111110 n d FNEG Vd.8h, Vn.8h
011 01110 00 1 00000 010110 n d NOT Vd.16b, Vn.16b
010 01110 11 1 00000 101110 n d ABS Vd.2d, Vn.2d
011 01110 11 1 00001 111110 n d FSQRT Vd.2d, Vn.2d
011 01110 10 1 00001 111110 n d FSQRT Vd.4s, Vn.4s
+ 011 01110 11 1 11001 111110 n d FSQRT Vd.8h, Vn.8h
*/
UInt vD = qregEnc(i->ARM64in.VUnaryV.dst);
UInt vN = qregEnc(i->ARM64in.VUnaryV.arg);
switch (i->ARM64in.VUnaryV.op) {
+ case ARM64vecu_FABS16x8:
+ *p++ = X_3_8_5_6_5_5(X010, X01110111, X11000, X111110, vN, vD);
+ break;
case ARM64vecu_FABS64x2:
*p++ = X_3_8_5_6_5_5(X010, X01110111, X00000, X111110, vN, vD);
break;
case ARM64vecu_FABS32x4:
*p++ = X_3_8_5_6_5_5(X010, X01110101, X00000, X111110, vN, vD);
break;
+ case ARM64vecu_FNEG16x8:
+ *p++ = X_3_8_5_6_5_5(X011, X01110111, X11000, X111110, vN, vD);
+ break;
case ARM64vecu_FNEG64x2:
*p++ = X_3_8_5_6_5_5(X011, X01110111, X00000, X111110, vN, vD);
break;
case ARM64vecu_FSQRT32x4:
*p++ = X_3_8_5_6_5_5(X011, X01110101, X00001, X111110, vN, vD);
break;
+ case ARM64vecu_FSQRT16x8:
+ *p++ = X_3_8_5_6_5_5(X011, X01110111, X11001, X111110, vN, vD);
+ break;
default:
goto bad;
}
typedef
enum {
- ARM64vecu_FNEG64x2=350, ARM64vecu_FNEG32x4,
- ARM64vecu_FABS64x2, ARM64vecu_FABS32x4,
+ ARM64vecu_FNEG64x2=350, ARM64vecu_FNEG32x4, ARM64vecu_FNEG16x8,
+ ARM64vecu_FABS64x2, ARM64vecu_FABS32x4, ARM64vecu_FABS16x8,
ARM64vecu_NOT,
ARM64vecu_ABS64x2, ARM64vecu_ABS32x4,
ARM64vecu_ABS16x8, ARM64vecu_ABS8x16,
ARM64vecu_URSQRTE32x4,
ARM64vecu_FRECPE64x2, ARM64vecu_FRECPE32x4,
ARM64vecu_FRSQRTE64x2, ARM64vecu_FRSQRTE32x4,
- ARM64vecu_FSQRT64x2, ARM64vecu_FSQRT32x4,
+ ARM64vecu_FSQRT64x2, ARM64vecu_FSQRT32x4, ARM64vecu_FSQRT16x8,
ARM64vecu_INVALID
}
ARM64VecUnaryOp;
ARM64in_VCvtHD, /* scalar 16 bit FP <--> 64 bit FP */
ARM64in_VUnaryD,
ARM64in_VUnaryS,
+ ARM64in_VUnaryH,
ARM64in_VBinD,
ARM64in_VBinS,
ARM64in_VTriD,
HReg dst;
HReg src;
} VUnaryS;
+ /* 16-bit FP unary */
+ struct {
+ ARM64FpUnaryOp op;
+ HReg dst;
+ HReg src;
+ } VUnaryH;
/* 64-bit FP binary arithmetic */
struct {
ARM64FpBinOp op;
extern ARM64Instr* ARM64Instr_VCvtHD ( Bool hToD, HReg dst, HReg src );
extern ARM64Instr* ARM64Instr_VUnaryD ( ARM64FpUnaryOp op, HReg dst, HReg src );
extern ARM64Instr* ARM64Instr_VUnaryS ( ARM64FpUnaryOp op, HReg dst, HReg src );
+extern ARM64Instr* ARM64Instr_VUnaryH ( ARM64FpUnaryOp op, HReg dst, HReg src );
extern ARM64Instr* ARM64Instr_VBinD ( ARM64FpBinOp op, HReg, HReg, HReg );
extern ARM64Instr* ARM64Instr_VBinS ( ARM64FpBinOp op, HReg, HReg, HReg );
extern ARM64Instr* ARM64Instr_VTriD ( ARM64FpTriOp op, HReg dst,
/* Other cases */
switch (e->Iex.Unop.op) {
case Iop_NotV128:
- case Iop_Abs64Fx2: case Iop_Abs32Fx4:
- case Iop_Neg64Fx2: case Iop_Neg32Fx4:
+ case Iop_Abs64Fx2: case Iop_Abs32Fx4: case Iop_Abs16Fx8:
+ case Iop_Neg64Fx2: case Iop_Neg32Fx4: case Iop_Neg16Fx8:
case Iop_Abs64x2: case Iop_Abs32x4:
case Iop_Abs16x8: case Iop_Abs8x16:
case Iop_Cls32x4: case Iop_Cls16x8: case Iop_Cls8x16:
case Iop_NotV128: op = ARM64vecu_NOT; break;
case Iop_Abs64Fx2: op = ARM64vecu_FABS64x2; break;
case Iop_Abs32Fx4: op = ARM64vecu_FABS32x4; break;
+ case Iop_Abs16Fx8: op = ARM64vecu_FABS16x8; break;
case Iop_Neg64Fx2: op = ARM64vecu_FNEG64x2; break;
case Iop_Neg32Fx4: op = ARM64vecu_FNEG32x4; break;
+ case Iop_Neg16Fx8: op = ARM64vecu_FNEG16x8; break;
case Iop_Abs64x2: op = ARM64vecu_ABS64x2; break;
case Iop_Abs32x4: op = ARM64vecu_ABS32x4; break;
case Iop_Abs16x8: op = ARM64vecu_ABS16x8; break;
if (e->tag == Iex_Binop) {
switch (e->Iex.Binop.op) {
+ case Iop_Sqrt16Fx8:
case Iop_Sqrt32Fx4:
case Iop_Sqrt64Fx2: {
HReg arg = iselV128Expr(env, e->Iex.Binop.arg2);
HReg res = newVRegV(env);
set_FPCR_rounding_mode(env, e->Iex.Binop.arg1);
- ARM64VecUnaryOp op
- = e->Iex.Binop.op == Iop_Sqrt32Fx4
- ? ARM64vecu_FSQRT32x4 : ARM64vecu_FSQRT64x2;
+ ARM64VecUnaryOp op;
+ switch (e->Iex.Binop.op) {
+ case Iop_Sqrt16Fx8: op = ARM64vecu_FSQRT16x8; break;
+ case Iop_Sqrt32Fx4: op = ARM64vecu_FSQRT32x4; break;
+ case Iop_Sqrt64Fx2: op = ARM64vecu_FSQRT64x2; break;
+ default: vassert(0);
+ }
addInstr(env, ARM64Instr_VUnaryV(op, res, arg));
return res;
}
}
}
+ if (e->tag == Iex_Unop) {
+ switch (e->Iex.Unop.op) {
+ case Iop_NegF16: {
+ HReg srcH = iselF16Expr(env, e->Iex.Unop.arg);
+ HReg dstH = newVRegD(env);
+ addInstr(env, ARM64Instr_VUnaryH(ARM64fpu_NEG, dstH, srcH));
+ return dstH;
+ }
+ case Iop_AbsF16: {
+ HReg srcH = iselF16Expr(env, e->Iex.Unop.arg);
+ HReg dstH = newVRegD(env);
+ addInstr(env, ARM64Instr_VUnaryH(ARM64fpu_ABS, dstH, srcH));
+ return dstH;
+ }
+ default:
+ break;
+ }
+ }
+
if (e->tag == Iex_Binop) {
switch (e->Iex.Binop.op) {
case Iop_F32toF16: {
addInstr(env, ARM64Instr_VCvtHD(False/*!hToD*/, dstH, srcD));
return dstH;
}
+ case Iop_SqrtF16: {
+ HReg src = iselF16Expr(env, e->Iex.Binop.arg2);
+ set_FPCR_rounding_mode(env, e->Iex.Binop.arg1);
+ HReg dst = newVRegD(env);
+ addInstr(env, ARM64Instr_VUnaryH(ARM64fpu_SQRT, dst, src));
+ return dst;
+ }
default:
break;
}
case Iop_AbsF64: vex_printf("AbsF64"); return;
case Iop_NegF32: vex_printf("NegF32"); return;
case Iop_AbsF32: vex_printf("AbsF32"); return;
+ case Iop_NegF16: vex_printf("NegF16"); return;
+ case Iop_AbsF16: vex_printf("AbsF16"); return;
case Iop_SqrtF64: vex_printf("SqrtF64"); return;
case Iop_SqrtF32: vex_printf("SqrtF32"); return;
+ case Iop_SqrtF16: vex_printf("SqrtF16"); return;
case Iop_SinF64: vex_printf("SinF64"); return;
case Iop_CosF64: vex_printf("CosF64"); return;
case Iop_TanF64: vex_printf("TanF64"); return;
case Iop_RecipEst64Fx2: vex_printf("RecipEst64Fx2"); return;
case Iop_RecipStep64Fx2: vex_printf("RecipStep64Fx2"); return;
+ case Iop_Abs16Fx8: vex_printf("Abs16Fx8"); return;
case Iop_Abs32Fx4: vex_printf("Abs32Fx4"); return;
case Iop_Abs64Fx2: vex_printf("Abs64Fx2"); return;
case Iop_RSqrtStep32Fx4: vex_printf("RSqrtStep32Fx4"); return;
case Iop_RSqrtEst32F0x4: vex_printf("RSqrtEst32F0x4"); return;
case Iop_RSqrtEst32Fx8: vex_printf("RSqrtEst32Fx8"); return;
+ case Iop_Sqrt16Fx8: vex_printf("Sqrt16Fx8"); return;
case Iop_Sqrt32Fx4: vex_printf("Sqrt32Fx4"); return;
case Iop_Sqrt32F0x4: vex_printf("Sqrt32F0x4"); return;
case Iop_Sqrt64Fx2: vex_printf("Sqrt64Fx2"); return;
case Iop_Neg64Fx2: vex_printf("Neg64Fx2"); return;
case Iop_Neg32Fx4: vex_printf("Neg32Fx4"); return;
case Iop_Neg32Fx2: vex_printf("Neg32Fx2"); return;
+ case Iop_Neg16Fx8: vex_printf("Neg16Fx8"); return;
case Iop_F32x4_2toQ16x8: vex_printf("F32x4_2toQ16x8"); return;
case Iop_F64x2_2toQ32x4: vex_printf("F64x2_2toQ32x4"); return;
case Iop_CmpGT32Fx4: case Iop_CmpGE32Fx4:
case Iop_PwMax32Fx4: case Iop_PwMin32Fx4:
case Iop_Abs32Fx4: case Iop_Neg32Fx4: case Iop_Sqrt32Fx4:
+ case Iop_Abs16Fx8: case Iop_Neg16Fx8: case Iop_Sqrt16Fx8:
case Iop_RecipEst32Fx4: case Iop_RecipStep32Fx4: case Iop_RSqrtEst32Fx4:
case Iop_Scale2_32Fx4: case Iop_Log2_32Fx4: case Iop_Exp2_32Fx4:
case Iop_RSqrtStep32Fx4:
case Iop_NegF32: case Iop_AbsF32:
UNARY(Ity_F32, Ity_F32);
+ case Iop_NegF16: case Iop_AbsF16:
+ UNARY(Ity_F16, Ity_F16);
+
case Iop_SqrtF64:
case Iop_RecpExpF64:
BINARY(ity_RMode,Ity_F64, Ity_F64);
case Iop_RecpExpF32:
BINARY(ity_RMode,Ity_F32, Ity_F32);
+ case Iop_SqrtF16:
+ BINARY(ity_RMode, Ity_F16, Ity_F16);
+
case Iop_MaxNumF64: case Iop_MinNumF64:
BINARY(Ity_F64,Ity_F64, Ity_F64);
case Iop_RoundF32x4_RP:
case Iop_RoundF32x4_RN:
case Iop_RoundF32x4_RZ:
- case Iop_Abs64Fx2: case Iop_Abs32Fx4:
+ case Iop_Abs64Fx2: case Iop_Abs32Fx4: case Iop_Abs16Fx8:
case Iop_RSqrtEst32Fx4:
case Iop_RSqrtEst32Ux4:
UNARY(Ity_V128, Ity_V128);
case Iop_Sqrt64Fx2:
case Iop_Sqrt32Fx4:
+ case Iop_Sqrt16Fx8:
case Iop_I32StoF32x4:
case Iop_F32toI32Sx4:
BINARY(ity_RMode,Ity_V128, Ity_V128);
case Iop_Reverse8sIn32_x4: case Iop_Reverse16sIn32_x4:
case Iop_Reverse8sIn16_x8:
case Iop_Reverse1sIn8_x16:
- case Iop_Neg64Fx2: case Iop_Neg32Fx4:
+ case Iop_Neg64Fx2: case Iop_Neg32Fx4: case Iop_Neg16Fx8:
case Iop_Abs8x16: case Iop_Abs16x8: case Iop_Abs32x4: case Iop_Abs64x2:
case Iop_CipherSV128:
case Iop_PwBitMtxXpose64x2:
/* :: F32 -> F32 */
Iop_NegF32, Iop_AbsF32,
+ /* :: F16 -> F16 */
+ Iop_NegF16, Iop_AbsF16,
+
/* Unary operations, with rounding. */
/* :: IRRoundingMode(I32) x F64 -> F64 */
Iop_SqrtF64,
/* :: IRRoundingMode(I32) x F32 -> F32 */
Iop_SqrtF32,
+ /* :: IRRoundingMode(I32) x F16 -> F16 */
+ Iop_SqrtF16,
+
/* Comparison, yielding GT/LT/EQ/UN(ordered), as per the following:
0x45 Unordered
0x01 LT
Iop_PwMax32Fx4, Iop_PwMin32Fx4,
/* unary */
+ Iop_Abs16Fx8,
Iop_Abs32Fx4,
+ Iop_Neg16Fx8,
Iop_Neg32Fx4,
/* binary :: IRRoundingMode(I32) x V128 -> V128 */
+ Iop_Sqrt16Fx8,
Iop_Sqrt32Fx4,
/* Vector Reciprocal Estimate finds an approximate reciprocal of each
return at;
}
+static
+IRAtom* unary16Fx8 ( MCEnv* mce, IRAtom* vatomX )
+{
+ IRAtom* at;
+ tl_assert(isShadowAtom(mce, vatomX));
+ at = assignNew('V', mce, Ity_V128, mkPCast16x8(mce, vatomX));
+ return at;
+}
+
/* TODO: remaining versions of 16x4 FP ops when more of the half-precision IR is
implemented.
*/
return t1;
}
+/* --- ... and ... 16Fx8 versions of the same --- */
+
+static
+IRAtom* unary16Fx8_w_rm ( MCEnv* mce, IRAtom* vRM, IRAtom* vatomX )
+{
+ /* Same scheme as binaryFx4_w_rm. */
+ IRAtom* t1 = unary16Fx8(mce, vatomX);
+ // PCast the RM, and widen it to 128 bits
+ IRAtom* t2 = mkPCastTo(mce, Ity_V128, vRM);
+ // Roll it into the result
+ t1 = mkUifUV128(mce, t1, t2);
+ return t1;
+}
+
/* --- ... and ... 32Fx8 versions of the same --- */
static
case Iop_I32StoF32x4:
case Iop_F32toI32Sx4:
+ case Iop_Sqrt16Fx8:
+ return unary16Fx8_w_rm(mce, vatom1, vatom2);
case Iop_Sqrt32Fx4:
return unary32Fx4_w_rm(mce, vatom1, vatom2);
case Iop_Sqrt64Fx2:
/* I32(rm) x F32/F64/F128/D32/D64/D128 -> D128/F128 */
return mkLazy2(mce, Ity_I128, vatom1, vatom2);
+ case Iop_SqrtF16:
+ /* I32(rm) x F16 -> F16 */
+ return mkLazy2(mce, Ity_I16, vatom1, vatom2);
+
case Iop_RoundF32toInt:
case Iop_SqrtF32:
case Iop_RecpExpF32:
case Iop_RecipEst32F0x4:
return unary32F0x4(mce, vatom);
+ case Iop_Abs16Fx8:
+ case Iop_Neg16Fx8:
+ return unary16Fx8(mce, vatom);
+
// These are self-shadowing.
case Iop_32UtoV128:
case Iop_64UtoV128:
case Iop_F16toF32:
return mkPCastTo(mce, Ity_I32, vatom);
+ case Iop_AbsF16:
+ case Iop_NegF16:
+ return mkPCastTo(mce, Ity_I16, vatom);
+
case Iop_Ctz32: case Iop_CtzNat32:
case Iop_Ctz64: case Iop_CtzNat64:
return expensiveCountTrailingZeroes(mce, op, atom, vatom);
{ DEFOP(Iop_NegF64, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 },
{ DEFOP(Iop_AbsF64, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 },
{ DEFOP(Iop_NegF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 1, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1 },
+ { DEFOP(Iop_NegF16, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 1, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 },
{ DEFOP(Iop_AbsF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 1, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1 },
+ { DEFOP(Iop_AbsF16, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 1, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 },
{ DEFOP(Iop_SqrtF64, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1 }, // mips asserts
{ DEFOP(Iop_SqrtF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 1, .ppc64 = 0, .ppc32 = 0, .mips32 = 1, .mips64 = 1 },
+ { DEFOP(Iop_SqrtF16, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 1, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 },
{ DEFOP(Iop_CmpF64, UNDEF_ALL), .s390x = 1, .amd64 = 1, .x86 = 1, .arm = 1, .ppc64 = 1, .ppc32 = 1, .mips32 = 1, .mips64 = 1 },
{ DEFOP(Iop_CmpF32, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 }, // mips asserts
{ DEFOP(Iop_CmpF128, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 0, .ppc32 = 0, .mips32 = 0, .mips64 = 0 },
{ DEFOP(Iop_CmpGE32Fx4, UNDEF_UNKNOWN), },
{ DEFOP(Iop_PwMax32Fx4, UNDEF_UNKNOWN), },
{ DEFOP(Iop_PwMin32Fx4, UNDEF_UNKNOWN), },
+ { DEFOP(Iop_Abs16Fx8, UNDEF_UNKNOWN), },
{ DEFOP(Iop_Abs32Fx4, UNDEF_UNKNOWN), },
{ DEFOP(Iop_Sqrt32Fx4, UNDEF_UNKNOWN), },
+ { DEFOP(Iop_Sqrt16Fx8, UNDEF_UNKNOWN), },
{ DEFOP(Iop_Scale2_32Fx4, UNDEF_UNKNOWN), },
{ DEFOP(Iop_Log2_32Fx4, UNDEF_UNKNOWN), },
{ DEFOP(Iop_Exp2_32Fx4, UNDEF_UNKNOWN), },
{ DEFOP(Iop_Neg32Fx4, UNDEF_UNKNOWN), },
+ { DEFOP(Iop_Neg16Fx8, UNDEF_UNKNOWN), },
{ DEFOP(Iop_RecipEst32Fx4, UNDEF_UNKNOWN), },
{ DEFOP(Iop_RecipStep32Fx4, UNDEF_UNKNOWN), },
{ DEFOP(Iop_RSqrtEst32Fx4, UNDEF_UNKNOWN), },
GEN_THREEVEC_TEST(faddp_4h_28_29_30, "faddp v28.4h, v29.4h, v30.4h", 28, 29, 30)
GEN_THREEVEC_TEST(faddp_4h_29_30_31, "faddp v29.4h, v30.4h, v31.4h", 29, 30, 31)
+// FABS <Hd>, <Hn>
+
+GEN_TWOVEC_TEST(fabs_h_00_01, "fabs h0, h1", 0, 1)
+GEN_TWOVEC_TEST(fabs_h_01_02, "fabs h1, h2", 1, 2)
+GEN_TWOVEC_TEST(fabs_h_02_03, "fabs h2, h3", 2, 3)
+GEN_TWOVEC_TEST(fabs_h_03_04, "fabs h3, h4", 3, 4)
+GEN_TWOVEC_TEST(fabs_h_04_05, "fabs h4, h5", 4, 5)
+GEN_TWOVEC_TEST(fabs_h_05_06, "fabs h5, h6", 5, 6)
+GEN_TWOVEC_TEST(fabs_h_06_07, "fabs h6, h7", 6, 7)
+GEN_TWOVEC_TEST(fabs_h_07_08, "fabs h7, h8", 7, 8)
+GEN_TWOVEC_TEST(fabs_h_08_09, "fabs h8, h9", 8, 9)
+GEN_TWOVEC_TEST(fabs_h_09_10, "fabs h9, h10", 9, 10)
+GEN_TWOVEC_TEST(fabs_h_10_11, "fabs h10, h11", 10, 11)
+GEN_TWOVEC_TEST(fabs_h_11_12, "fabs h11, h12", 11, 12)
+GEN_TWOVEC_TEST(fabs_h_12_13, "fabs h12, h13", 12, 13)
+GEN_TWOVEC_TEST(fabs_h_13_14, "fabs h13, h14", 13, 14)
+GEN_TWOVEC_TEST(fabs_h_14_15, "fabs h14, h15", 14, 15)
+GEN_TWOVEC_TEST(fabs_h_15_16, "fabs h15, h16", 15, 16)
+GEN_TWOVEC_TEST(fabs_h_16_17, "fabs h16, h17", 16, 17)
+GEN_TWOVEC_TEST(fabs_h_17_18, "fabs h17, h18", 17, 18)
+GEN_TWOVEC_TEST(fabs_h_18_19, "fabs h18, h19", 18, 19)
+GEN_TWOVEC_TEST(fabs_h_19_20, "fabs h19, h20", 19, 20)
+GEN_TWOVEC_TEST(fabs_h_20_21, "fabs h20, h21", 20, 21)
+GEN_TWOVEC_TEST(fabs_h_21_22, "fabs h21, h22", 21, 22)
+GEN_TWOVEC_TEST(fabs_h_22_23, "fabs h22, h23", 22, 23)
+GEN_TWOVEC_TEST(fabs_h_23_24, "fabs h23, h24", 23, 24)
+GEN_TWOVEC_TEST(fabs_h_24_25, "fabs h24, h25", 24, 25)
+GEN_TWOVEC_TEST(fabs_h_25_26, "fabs h25, h26", 25, 26)
+GEN_TWOVEC_TEST(fabs_h_26_27, "fabs h26, h27", 26, 27)
+GEN_TWOVEC_TEST(fabs_h_27_28, "fabs h27, h28", 27, 28)
+GEN_TWOVEC_TEST(fabs_h_28_29, "fabs h28, h29", 28, 29)
+GEN_TWOVEC_TEST(fabs_h_29_30, "fabs h29, h30", 29, 30)
+GEN_TWOVEC_TEST(fabs_h_30_31, "fabs h30, h31", 30, 31)
+
+// FABS <Vd>.<T>, <Vn>.<T>
+
+GEN_TWOVEC_TEST(fabs_8h_00_01, "fabs v0.8h, v1.8h", 0, 1)
+GEN_TWOVEC_TEST(fabs_8h_01_02, "fabs v1.8h, v2.8h", 1, 2)
+GEN_TWOVEC_TEST(fabs_8h_02_03, "fabs v2.8h, v3.8h", 2, 3)
+GEN_TWOVEC_TEST(fabs_8h_03_04, "fabs v3.8h, v4.8h", 3, 4)
+GEN_TWOVEC_TEST(fabs_8h_04_05, "fabs v4.8h, v5.8h", 4, 5)
+GEN_TWOVEC_TEST(fabs_8h_05_06, "fabs v5.8h, v6.8h", 5, 6)
+GEN_TWOVEC_TEST(fabs_8h_06_07, "fabs v6.8h, v7.8h", 6, 7)
+GEN_TWOVEC_TEST(fabs_8h_07_08, "fabs v7.8h, v8.8h", 7, 8)
+GEN_TWOVEC_TEST(fabs_8h_08_09, "fabs v8.8h, v9.8h", 8, 9)
+GEN_TWOVEC_TEST(fabs_8h_09_10, "fabs v9.8h, v10.8h", 9, 10)
+GEN_TWOVEC_TEST(fabs_8h_10_11, "fabs v10.8h, v11.8h", 10, 11)
+GEN_TWOVEC_TEST(fabs_8h_11_12, "fabs v11.8h, v12.8h", 11, 12)
+GEN_TWOVEC_TEST(fabs_8h_12_13, "fabs v12.8h, v13.8h", 12, 13)
+GEN_TWOVEC_TEST(fabs_8h_13_14, "fabs v13.8h, v14.8h", 13, 14)
+GEN_TWOVEC_TEST(fabs_8h_14_15, "fabs v14.8h, v15.8h", 14, 15)
+GEN_TWOVEC_TEST(fabs_8h_15_16, "fabs v15.8h, v16.8h", 15, 16)
+GEN_TWOVEC_TEST(fabs_8h_16_17, "fabs v16.8h, v17.8h", 16, 17)
+GEN_TWOVEC_TEST(fabs_8h_17_18, "fabs v17.8h, v18.8h", 17, 18)
+GEN_TWOVEC_TEST(fabs_8h_18_19, "fabs v18.8h, v19.8h", 18, 19)
+GEN_TWOVEC_TEST(fabs_8h_19_20, "fabs v19.8h, v20.8h", 19, 20)
+GEN_TWOVEC_TEST(fabs_8h_20_21, "fabs v20.8h, v21.8h", 20, 21)
+GEN_TWOVEC_TEST(fabs_8h_21_22, "fabs v21.8h, v22.8h", 21, 22)
+GEN_TWOVEC_TEST(fabs_8h_22_23, "fabs v22.8h, v23.8h", 22, 23)
+GEN_TWOVEC_TEST(fabs_8h_23_24, "fabs v23.8h, v24.8h", 23, 24)
+GEN_TWOVEC_TEST(fabs_8h_24_25, "fabs v24.8h, v25.8h", 24, 25)
+GEN_TWOVEC_TEST(fabs_8h_25_26, "fabs v25.8h, v26.8h", 25, 26)
+GEN_TWOVEC_TEST(fabs_8h_26_27, "fabs v26.8h, v27.8h", 26, 27)
+GEN_TWOVEC_TEST(fabs_8h_27_28, "fabs v27.8h, v28.8h", 27, 28)
+GEN_TWOVEC_TEST(fabs_8h_28_29, "fabs v28.8h, v29.8h", 28, 29)
+GEN_TWOVEC_TEST(fabs_8h_29_30, "fabs v29.8h, v30.8h", 29, 30)
+GEN_TWOVEC_TEST(fabs_8h_30_31, "fabs v30.8h, v31.8h", 30, 31)
+
+GEN_TWOVEC_TEST(fabs_4h_00_01, "fabs v0.4h, v1.4h", 0, 1)
+GEN_TWOVEC_TEST(fabs_4h_01_02, "fabs v1.4h, v2.4h", 1, 2)
+GEN_TWOVEC_TEST(fabs_4h_02_03, "fabs v2.4h, v3.4h", 2, 3)
+GEN_TWOVEC_TEST(fabs_4h_03_04, "fabs v3.4h, v4.4h", 3, 4)
+GEN_TWOVEC_TEST(fabs_4h_04_05, "fabs v4.4h, v5.4h", 4, 5)
+GEN_TWOVEC_TEST(fabs_4h_05_06, "fabs v5.4h, v6.4h", 5, 6)
+GEN_TWOVEC_TEST(fabs_4h_06_07, "fabs v6.4h, v7.4h", 6, 7)
+GEN_TWOVEC_TEST(fabs_4h_07_08, "fabs v7.4h, v8.4h", 7, 8)
+GEN_TWOVEC_TEST(fabs_4h_08_09, "fabs v8.4h, v9.4h", 8, 9)
+GEN_TWOVEC_TEST(fabs_4h_09_10, "fabs v9.4h, v10.4h", 9, 10)
+GEN_TWOVEC_TEST(fabs_4h_10_11, "fabs v10.4h, v11.4h", 10, 11)
+GEN_TWOVEC_TEST(fabs_4h_11_12, "fabs v11.4h, v12.4h", 11, 12)
+GEN_TWOVEC_TEST(fabs_4h_12_13, "fabs v12.4h, v13.4h", 12, 13)
+GEN_TWOVEC_TEST(fabs_4h_13_14, "fabs v13.4h, v14.4h", 13, 14)
+GEN_TWOVEC_TEST(fabs_4h_14_15, "fabs v14.4h, v15.4h", 14, 15)
+GEN_TWOVEC_TEST(fabs_4h_15_16, "fabs v15.4h, v16.4h", 15, 16)
+GEN_TWOVEC_TEST(fabs_4h_16_17, "fabs v16.4h, v17.4h", 16, 17)
+GEN_TWOVEC_TEST(fabs_4h_17_18, "fabs v17.4h, v18.4h", 17, 18)
+GEN_TWOVEC_TEST(fabs_4h_18_19, "fabs v18.4h, v19.4h", 18, 19)
+GEN_TWOVEC_TEST(fabs_4h_19_20, "fabs v19.4h, v20.4h", 19, 20)
+GEN_TWOVEC_TEST(fabs_4h_20_21, "fabs v20.4h, v21.4h", 20, 21)
+GEN_TWOVEC_TEST(fabs_4h_21_22, "fabs v21.4h, v22.4h", 21, 22)
+GEN_TWOVEC_TEST(fabs_4h_22_23, "fabs v22.4h, v23.4h", 22, 23)
+GEN_TWOVEC_TEST(fabs_4h_23_24, "fabs v23.4h, v24.4h", 23, 24)
+GEN_TWOVEC_TEST(fabs_4h_24_25, "fabs v24.4h, v25.4h", 24, 25)
+GEN_TWOVEC_TEST(fabs_4h_25_26, "fabs v25.4h, v26.4h", 25, 26)
+GEN_TWOVEC_TEST(fabs_4h_26_27, "fabs v26.4h, v27.4h", 26, 27)
+GEN_TWOVEC_TEST(fabs_4h_27_28, "fabs v27.4h, v28.4h", 27, 28)
+GEN_TWOVEC_TEST(fabs_4h_28_29, "fabs v28.4h, v29.4h", 28, 29)
+GEN_TWOVEC_TEST(fabs_4h_29_30, "fabs v29.4h, v30.4h", 29, 30)
+GEN_TWOVEC_TEST(fabs_4h_30_31, "fabs v30.4h, v31.4h", 30, 31)
+
+// FNEG <Hd>, <Hn>
+
+GEN_TWOVEC_TEST(fneg_h_00_01, "fneg h0, h1", 0, 1)
+GEN_TWOVEC_TEST(fneg_h_01_02, "fneg h1, h2", 1, 2)
+GEN_TWOVEC_TEST(fneg_h_02_03, "fneg h2, h3", 2, 3)
+GEN_TWOVEC_TEST(fneg_h_03_04, "fneg h3, h4", 3, 4)
+GEN_TWOVEC_TEST(fneg_h_04_05, "fneg h4, h5", 4, 5)
+GEN_TWOVEC_TEST(fneg_h_05_06, "fneg h5, h6", 5, 6)
+GEN_TWOVEC_TEST(fneg_h_06_07, "fneg h6, h7", 6, 7)
+GEN_TWOVEC_TEST(fneg_h_07_08, "fneg h7, h8", 7, 8)
+GEN_TWOVEC_TEST(fneg_h_08_09, "fneg h8, h9", 8, 9)
+GEN_TWOVEC_TEST(fneg_h_09_10, "fneg h9, h10", 9, 10)
+GEN_TWOVEC_TEST(fneg_h_10_11, "fneg h10, h11", 10, 11)
+GEN_TWOVEC_TEST(fneg_h_11_12, "fneg h11, h12", 11, 12)
+GEN_TWOVEC_TEST(fneg_h_12_13, "fneg h12, h13", 12, 13)
+GEN_TWOVEC_TEST(fneg_h_13_14, "fneg h13, h14", 13, 14)
+GEN_TWOVEC_TEST(fneg_h_14_15, "fneg h14, h15", 14, 15)
+GEN_TWOVEC_TEST(fneg_h_15_16, "fneg h15, h16", 15, 16)
+GEN_TWOVEC_TEST(fneg_h_16_17, "fneg h16, h17", 16, 17)
+GEN_TWOVEC_TEST(fneg_h_17_18, "fneg h17, h18", 17, 18)
+GEN_TWOVEC_TEST(fneg_h_18_19, "fneg h18, h19", 18, 19)
+GEN_TWOVEC_TEST(fneg_h_19_20, "fneg h19, h20", 19, 20)
+GEN_TWOVEC_TEST(fneg_h_20_21, "fneg h20, h21", 20, 21)
+GEN_TWOVEC_TEST(fneg_h_21_22, "fneg h21, h22", 21, 22)
+GEN_TWOVEC_TEST(fneg_h_22_23, "fneg h22, h23", 22, 23)
+GEN_TWOVEC_TEST(fneg_h_23_24, "fneg h23, h24", 23, 24)
+GEN_TWOVEC_TEST(fneg_h_24_25, "fneg h24, h25", 24, 25)
+GEN_TWOVEC_TEST(fneg_h_25_26, "fneg h25, h26", 25, 26)
+GEN_TWOVEC_TEST(fneg_h_26_27, "fneg h26, h27", 26, 27)
+GEN_TWOVEC_TEST(fneg_h_27_28, "fneg h27, h28", 27, 28)
+GEN_TWOVEC_TEST(fneg_h_28_29, "fneg h28, h29", 28, 29)
+GEN_TWOVEC_TEST(fneg_h_29_30, "fneg h29, h30", 29, 30)
+GEN_TWOVEC_TEST(fneg_h_30_31, "fneg h30, h31", 30, 31)
+
+// FNEG <Vd>.<T>, <Vn>.<T>
+
+GEN_TWOVEC_TEST(fneg_8h_00_01, "fneg v0.8h, v1.8h", 0, 1)
+GEN_TWOVEC_TEST(fneg_8h_01_02, "fneg v1.8h, v2.8h", 1, 2)
+GEN_TWOVEC_TEST(fneg_8h_02_03, "fneg v2.8h, v3.8h", 2, 3)
+GEN_TWOVEC_TEST(fneg_8h_03_04, "fneg v3.8h, v4.8h", 3, 4)
+GEN_TWOVEC_TEST(fneg_8h_04_05, "fneg v4.8h, v5.8h", 4, 5)
+GEN_TWOVEC_TEST(fneg_8h_05_06, "fneg v5.8h, v6.8h", 5, 6)
+GEN_TWOVEC_TEST(fneg_8h_06_07, "fneg v6.8h, v7.8h", 6, 7)
+GEN_TWOVEC_TEST(fneg_8h_07_08, "fneg v7.8h, v8.8h", 7, 8)
+GEN_TWOVEC_TEST(fneg_8h_08_09, "fneg v8.8h, v9.8h", 8, 9)
+GEN_TWOVEC_TEST(fneg_8h_09_10, "fneg v9.8h, v10.8h", 9, 10)
+GEN_TWOVEC_TEST(fneg_8h_10_11, "fneg v10.8h, v11.8h", 10, 11)
+GEN_TWOVEC_TEST(fneg_8h_11_12, "fneg v11.8h, v12.8h", 11, 12)
+GEN_TWOVEC_TEST(fneg_8h_12_13, "fneg v12.8h, v13.8h", 12, 13)
+GEN_TWOVEC_TEST(fneg_8h_13_14, "fneg v13.8h, v14.8h", 13, 14)
+GEN_TWOVEC_TEST(fneg_8h_14_15, "fneg v14.8h, v15.8h", 14, 15)
+GEN_TWOVEC_TEST(fneg_8h_15_16, "fneg v15.8h, v16.8h", 15, 16)
+GEN_TWOVEC_TEST(fneg_8h_16_17, "fneg v16.8h, v17.8h", 16, 17)
+GEN_TWOVEC_TEST(fneg_8h_17_18, "fneg v17.8h, v18.8h", 17, 18)
+GEN_TWOVEC_TEST(fneg_8h_18_19, "fneg v18.8h, v19.8h", 18, 19)
+GEN_TWOVEC_TEST(fneg_8h_19_20, "fneg v19.8h, v20.8h", 19, 20)
+GEN_TWOVEC_TEST(fneg_8h_20_21, "fneg v20.8h, v21.8h", 20, 21)
+GEN_TWOVEC_TEST(fneg_8h_21_22, "fneg v21.8h, v22.8h", 21, 22)
+GEN_TWOVEC_TEST(fneg_8h_22_23, "fneg v22.8h, v23.8h", 22, 23)
+GEN_TWOVEC_TEST(fneg_8h_23_24, "fneg v23.8h, v24.8h", 23, 24)
+GEN_TWOVEC_TEST(fneg_8h_24_25, "fneg v24.8h, v25.8h", 24, 25)
+GEN_TWOVEC_TEST(fneg_8h_25_26, "fneg v25.8h, v26.8h", 25, 26)
+GEN_TWOVEC_TEST(fneg_8h_26_27, "fneg v26.8h, v27.8h", 26, 27)
+GEN_TWOVEC_TEST(fneg_8h_27_28, "fneg v27.8h, v28.8h", 27, 28)
+GEN_TWOVEC_TEST(fneg_8h_28_29, "fneg v28.8h, v29.8h", 28, 29)
+GEN_TWOVEC_TEST(fneg_8h_29_30, "fneg v29.8h, v30.8h", 29, 30)
+GEN_TWOVEC_TEST(fneg_8h_30_31, "fneg v30.8h, v31.8h", 30, 31)
+
+GEN_TWOVEC_TEST(fneg_4h_00_01, "fneg v0.4h, v1.4h", 0, 1)
+GEN_TWOVEC_TEST(fneg_4h_01_02, "fneg v1.4h, v2.4h", 1, 2)
+GEN_TWOVEC_TEST(fneg_4h_02_03, "fneg v2.4h, v3.4h", 2, 3)
+GEN_TWOVEC_TEST(fneg_4h_03_04, "fneg v3.4h, v4.4h", 3, 4)
+GEN_TWOVEC_TEST(fneg_4h_04_05, "fneg v4.4h, v5.4h", 4, 5)
+GEN_TWOVEC_TEST(fneg_4h_05_06, "fneg v5.4h, v6.4h", 5, 6)
+GEN_TWOVEC_TEST(fneg_4h_06_07, "fneg v6.4h, v7.4h", 6, 7)
+GEN_TWOVEC_TEST(fneg_4h_07_08, "fneg v7.4h, v8.4h", 7, 8)
+GEN_TWOVEC_TEST(fneg_4h_08_09, "fneg v8.4h, v9.4h", 8, 9)
+GEN_TWOVEC_TEST(fneg_4h_09_10, "fneg v9.4h, v10.4h", 9, 10)
+GEN_TWOVEC_TEST(fneg_4h_10_11, "fneg v10.4h, v11.4h", 10, 11)
+GEN_TWOVEC_TEST(fneg_4h_11_12, "fneg v11.4h, v12.4h", 11, 12)
+GEN_TWOVEC_TEST(fneg_4h_12_13, "fneg v12.4h, v13.4h", 12, 13)
+GEN_TWOVEC_TEST(fneg_4h_13_14, "fneg v13.4h, v14.4h", 13, 14)
+GEN_TWOVEC_TEST(fneg_4h_14_15, "fneg v14.4h, v15.4h", 14, 15)
+GEN_TWOVEC_TEST(fneg_4h_15_16, "fneg v15.4h, v16.4h", 15, 16)
+GEN_TWOVEC_TEST(fneg_4h_16_17, "fneg v16.4h, v17.4h", 16, 17)
+GEN_TWOVEC_TEST(fneg_4h_17_18, "fneg v17.4h, v18.4h", 17, 18)
+GEN_TWOVEC_TEST(fneg_4h_18_19, "fneg v18.4h, v19.4h", 18, 19)
+GEN_TWOVEC_TEST(fneg_4h_19_20, "fneg v19.4h, v20.4h", 19, 20)
+GEN_TWOVEC_TEST(fneg_4h_20_21, "fneg v20.4h, v21.4h", 20, 21)
+GEN_TWOVEC_TEST(fneg_4h_21_22, "fneg v21.4h, v22.4h", 21, 22)
+GEN_TWOVEC_TEST(fneg_4h_22_23, "fneg v22.4h, v23.4h", 22, 23)
+GEN_TWOVEC_TEST(fneg_4h_23_24, "fneg v23.4h, v24.4h", 23, 24)
+GEN_TWOVEC_TEST(fneg_4h_24_25, "fneg v24.4h, v25.4h", 24, 25)
+GEN_TWOVEC_TEST(fneg_4h_25_26, "fneg v25.4h, v26.4h", 25, 26)
+GEN_TWOVEC_TEST(fneg_4h_26_27, "fneg v26.4h, v27.4h", 26, 27)
+GEN_TWOVEC_TEST(fneg_4h_27_28, "fneg v27.4h, v28.4h", 27, 28)
+GEN_TWOVEC_TEST(fneg_4h_28_29, "fneg v28.4h, v29.4h", 28, 29)
+GEN_TWOVEC_TEST(fneg_4h_29_30, "fneg v29.4h, v30.4h", 29, 30)
+GEN_TWOVEC_TEST(fneg_4h_30_31, "fneg v30.4h, v31.4h", 30, 31)
+
+// FSQRT <Hd>, <Hn>
+
+GEN_TWOVEC_TEST(fsqrt_h_00_01, "fsqrt h0, h1", 0, 1)
+GEN_TWOVEC_TEST(fsqrt_h_01_02, "fsqrt h1, h2", 1, 2)
+GEN_TWOVEC_TEST(fsqrt_h_02_03, "fsqrt h2, h3", 2, 3)
+GEN_TWOVEC_TEST(fsqrt_h_03_04, "fsqrt h3, h4", 3, 4)
+GEN_TWOVEC_TEST(fsqrt_h_04_05, "fsqrt h4, h5", 4, 5)
+GEN_TWOVEC_TEST(fsqrt_h_05_06, "fsqrt h5, h6", 5, 6)
+GEN_TWOVEC_TEST(fsqrt_h_06_07, "fsqrt h6, h7", 6, 7)
+GEN_TWOVEC_TEST(fsqrt_h_07_08, "fsqrt h7, h8", 7, 8)
+GEN_TWOVEC_TEST(fsqrt_h_08_09, "fsqrt h8, h9", 8, 9)
+GEN_TWOVEC_TEST(fsqrt_h_09_10, "fsqrt h9, h10", 9, 10)
+GEN_TWOVEC_TEST(fsqrt_h_10_11, "fsqrt h10, h11", 10, 11)
+GEN_TWOVEC_TEST(fsqrt_h_11_12, "fsqrt h11, h12", 11, 12)
+GEN_TWOVEC_TEST(fsqrt_h_12_13, "fsqrt h12, h13", 12, 13)
+GEN_TWOVEC_TEST(fsqrt_h_13_14, "fsqrt h13, h14", 13, 14)
+GEN_TWOVEC_TEST(fsqrt_h_14_15, "fsqrt h14, h15", 14, 15)
+GEN_TWOVEC_TEST(fsqrt_h_15_16, "fsqrt h15, h16", 15, 16)
+GEN_TWOVEC_TEST(fsqrt_h_16_17, "fsqrt h16, h17", 16, 17)
+GEN_TWOVEC_TEST(fsqrt_h_17_18, "fsqrt h17, h18", 17, 18)
+GEN_TWOVEC_TEST(fsqrt_h_18_19, "fsqrt h18, h19", 18, 19)
+GEN_TWOVEC_TEST(fsqrt_h_19_20, "fsqrt h19, h20", 19, 20)
+GEN_TWOVEC_TEST(fsqrt_h_20_21, "fsqrt h20, h21", 20, 21)
+GEN_TWOVEC_TEST(fsqrt_h_21_22, "fsqrt h21, h22", 21, 22)
+GEN_TWOVEC_TEST(fsqrt_h_22_23, "fsqrt h22, h23", 22, 23)
+GEN_TWOVEC_TEST(fsqrt_h_23_24, "fsqrt h23, h24", 23, 24)
+GEN_TWOVEC_TEST(fsqrt_h_24_25, "fsqrt h24, h25", 24, 25)
+GEN_TWOVEC_TEST(fsqrt_h_25_26, "fsqrt h25, h26", 25, 26)
+GEN_TWOVEC_TEST(fsqrt_h_26_27, "fsqrt h26, h27", 26, 27)
+GEN_TWOVEC_TEST(fsqrt_h_27_28, "fsqrt h27, h28", 27, 28)
+GEN_TWOVEC_TEST(fsqrt_h_28_29, "fsqrt h28, h29", 28, 29)
+GEN_TWOVEC_TEST(fsqrt_h_29_30, "fsqrt h29, h30", 29, 30)
+GEN_TWOVEC_TEST(fsqrt_h_30_31, "fsqrt h30, h31", 30, 31)
+
+// FSQRT <Vd>.<T>, <Vn>.<T>
+
+GEN_TWOVEC_TEST(fsqrt_8h_00_01, "fsqrt v0.8h, v1.8h", 0, 1)
+GEN_TWOVEC_TEST(fsqrt_8h_01_02, "fsqrt v1.8h, v2.8h", 1, 2)
+GEN_TWOVEC_TEST(fsqrt_8h_02_03, "fsqrt v2.8h, v3.8h", 2, 3)
+GEN_TWOVEC_TEST(fsqrt_8h_03_04, "fsqrt v3.8h, v4.8h", 3, 4)
+GEN_TWOVEC_TEST(fsqrt_8h_04_05, "fsqrt v4.8h, v5.8h", 4, 5)
+GEN_TWOVEC_TEST(fsqrt_8h_05_06, "fsqrt v5.8h, v6.8h", 5, 6)
+GEN_TWOVEC_TEST(fsqrt_8h_06_07, "fsqrt v6.8h, v7.8h", 6, 7)
+GEN_TWOVEC_TEST(fsqrt_8h_07_08, "fsqrt v7.8h, v8.8h", 7, 8)
+GEN_TWOVEC_TEST(fsqrt_8h_08_09, "fsqrt v8.8h, v9.8h", 8, 9)
+GEN_TWOVEC_TEST(fsqrt_8h_09_10, "fsqrt v9.8h, v10.8h", 9, 10)
+GEN_TWOVEC_TEST(fsqrt_8h_10_11, "fsqrt v10.8h, v11.8h", 10, 11)
+GEN_TWOVEC_TEST(fsqrt_8h_11_12, "fsqrt v11.8h, v12.8h", 11, 12)
+GEN_TWOVEC_TEST(fsqrt_8h_12_13, "fsqrt v12.8h, v13.8h", 12, 13)
+GEN_TWOVEC_TEST(fsqrt_8h_13_14, "fsqrt v13.8h, v14.8h", 13, 14)
+GEN_TWOVEC_TEST(fsqrt_8h_14_15, "fsqrt v14.8h, v15.8h", 14, 15)
+GEN_TWOVEC_TEST(fsqrt_8h_15_16, "fsqrt v15.8h, v16.8h", 15, 16)
+GEN_TWOVEC_TEST(fsqrt_8h_16_17, "fsqrt v16.8h, v17.8h", 16, 17)
+GEN_TWOVEC_TEST(fsqrt_8h_17_18, "fsqrt v17.8h, v18.8h", 17, 18)
+GEN_TWOVEC_TEST(fsqrt_8h_18_19, "fsqrt v18.8h, v19.8h", 18, 19)
+GEN_TWOVEC_TEST(fsqrt_8h_19_20, "fsqrt v19.8h, v20.8h", 19, 20)
+GEN_TWOVEC_TEST(fsqrt_8h_20_21, "fsqrt v20.8h, v21.8h", 20, 21)
+GEN_TWOVEC_TEST(fsqrt_8h_21_22, "fsqrt v21.8h, v22.8h", 21, 22)
+GEN_TWOVEC_TEST(fsqrt_8h_22_23, "fsqrt v22.8h, v23.8h", 22, 23)
+GEN_TWOVEC_TEST(fsqrt_8h_23_24, "fsqrt v23.8h, v24.8h", 23, 24)
+GEN_TWOVEC_TEST(fsqrt_8h_24_25, "fsqrt v24.8h, v25.8h", 24, 25)
+GEN_TWOVEC_TEST(fsqrt_8h_25_26, "fsqrt v25.8h, v26.8h", 25, 26)
+GEN_TWOVEC_TEST(fsqrt_8h_26_27, "fsqrt v26.8h, v27.8h", 26, 27)
+GEN_TWOVEC_TEST(fsqrt_8h_27_28, "fsqrt v27.8h, v28.8h", 27, 28)
+GEN_TWOVEC_TEST(fsqrt_8h_28_29, "fsqrt v28.8h, v29.8h", 28, 29)
+GEN_TWOVEC_TEST(fsqrt_8h_29_30, "fsqrt v29.8h, v30.8h", 29, 30)
+GEN_TWOVEC_TEST(fsqrt_8h_30_31, "fsqrt v30.8h, v31.8h", 30, 31)
+
+GEN_TWOVEC_TEST(fsqrt_4h_00_01, "fsqrt v0.4h, v1.4h", 0, 1)
+GEN_TWOVEC_TEST(fsqrt_4h_01_02, "fsqrt v1.4h, v2.4h", 1, 2)
+GEN_TWOVEC_TEST(fsqrt_4h_02_03, "fsqrt v2.4h, v3.4h", 2, 3)
+GEN_TWOVEC_TEST(fsqrt_4h_03_04, "fsqrt v3.4h, v4.4h", 3, 4)
+GEN_TWOVEC_TEST(fsqrt_4h_04_05, "fsqrt v4.4h, v5.4h", 4, 5)
+GEN_TWOVEC_TEST(fsqrt_4h_05_06, "fsqrt v5.4h, v6.4h", 5, 6)
+GEN_TWOVEC_TEST(fsqrt_4h_06_07, "fsqrt v6.4h, v7.4h", 6, 7)
+GEN_TWOVEC_TEST(fsqrt_4h_07_08, "fsqrt v7.4h, v8.4h", 7, 8)
+GEN_TWOVEC_TEST(fsqrt_4h_08_09, "fsqrt v8.4h, v9.4h", 8, 9)
+GEN_TWOVEC_TEST(fsqrt_4h_09_10, "fsqrt v9.4h, v10.4h", 9, 10)
+GEN_TWOVEC_TEST(fsqrt_4h_10_11, "fsqrt v10.4h, v11.4h", 10, 11)
+GEN_TWOVEC_TEST(fsqrt_4h_11_12, "fsqrt v11.4h, v12.4h", 11, 12)
+GEN_TWOVEC_TEST(fsqrt_4h_12_13, "fsqrt v12.4h, v13.4h", 12, 13)
+GEN_TWOVEC_TEST(fsqrt_4h_13_14, "fsqrt v13.4h, v14.4h", 13, 14)
+GEN_TWOVEC_TEST(fsqrt_4h_14_15, "fsqrt v14.4h, v15.4h", 14, 15)
+GEN_TWOVEC_TEST(fsqrt_4h_15_16, "fsqrt v15.4h, v16.4h", 15, 16)
+GEN_TWOVEC_TEST(fsqrt_4h_16_17, "fsqrt v16.4h, v17.4h", 16, 17)
+GEN_TWOVEC_TEST(fsqrt_4h_17_18, "fsqrt v17.4h, v18.4h", 17, 18)
+GEN_TWOVEC_TEST(fsqrt_4h_18_19, "fsqrt v18.4h, v19.4h", 18, 19)
+GEN_TWOVEC_TEST(fsqrt_4h_19_20, "fsqrt v19.4h, v20.4h", 19, 20)
+GEN_TWOVEC_TEST(fsqrt_4h_20_21, "fsqrt v20.4h, v21.4h", 20, 21)
+GEN_TWOVEC_TEST(fsqrt_4h_21_22, "fsqrt v21.4h, v22.4h", 21, 22)
+GEN_TWOVEC_TEST(fsqrt_4h_22_23, "fsqrt v22.4h, v23.4h", 22, 23)
+GEN_TWOVEC_TEST(fsqrt_4h_23_24, "fsqrt v23.4h, v24.4h", 23, 24)
+GEN_TWOVEC_TEST(fsqrt_4h_24_25, "fsqrt v24.4h, v25.4h", 24, 25)
+GEN_TWOVEC_TEST(fsqrt_4h_25_26, "fsqrt v25.4h, v26.4h", 25, 26)
+GEN_TWOVEC_TEST(fsqrt_4h_26_27, "fsqrt v26.4h, v27.4h", 26, 27)
+GEN_TWOVEC_TEST(fsqrt_4h_27_28, "fsqrt v27.4h, v28.4h", 27, 28)
+GEN_TWOVEC_TEST(fsqrt_4h_28_29, "fsqrt v28.4h, v29.4h", 28, 29)
+GEN_TWOVEC_TEST(fsqrt_4h_29_30, "fsqrt v29.4h, v30.4h", 29, 30)
+GEN_TWOVEC_TEST(fsqrt_4h_30_31, "fsqrt v30.4h, v31.4h", 30, 31)
/* ---------------------------------------------------------------- */
/* -- main() -- */
if (1) test_faddp_4h_28_29_30(TyH);
if (1) test_faddp_4h_29_30_31(TyH);
+ printf("\nFABS <Hd>, <Hn>\n\n");
+
+ if (1) test_fabs_h_00_01(TyH);
+ if (1) test_fabs_h_01_02(TyH);
+ if (1) test_fabs_h_02_03(TyH);
+ if (1) test_fabs_h_03_04(TyH);
+ if (1) test_fabs_h_04_05(TyH);
+ if (1) test_fabs_h_05_06(TyH);
+ if (1) test_fabs_h_06_07(TyH);
+ if (1) test_fabs_h_07_08(TyH);
+ if (1) test_fabs_h_08_09(TyH);
+ if (1) test_fabs_h_09_10(TyH);
+ if (1) test_fabs_h_10_11(TyH);
+ if (1) test_fabs_h_11_12(TyH);
+ if (1) test_fabs_h_12_13(TyH);
+ if (1) test_fabs_h_13_14(TyH);
+ if (1) test_fabs_h_14_15(TyH);
+ if (1) test_fabs_h_15_16(TyH);
+ if (1) test_fabs_h_16_17(TyH);
+ if (1) test_fabs_h_17_18(TyH);
+ if (1) test_fabs_h_18_19(TyH);
+ if (1) test_fabs_h_19_20(TyH);
+ if (1) test_fabs_h_20_21(TyH);
+ if (1) test_fabs_h_21_22(TyH);
+ if (1) test_fabs_h_22_23(TyH);
+ if (1) test_fabs_h_23_24(TyH);
+ if (1) test_fabs_h_24_25(TyH);
+ if (1) test_fabs_h_25_26(TyH);
+ if (1) test_fabs_h_26_27(TyH);
+ if (1) test_fabs_h_27_28(TyH);
+ if (1) test_fabs_h_28_29(TyH);
+ if (1) test_fabs_h_29_30(TyH);
+ if (1) test_fabs_h_30_31(TyH);
+
+ printf("\nFABS <Vd>.<T>, <Vn>.<T>\n\n");
+
+ if (1) test_fabs_8h_00_01(TyH);
+ if (1) test_fabs_8h_01_02(TyH);
+ if (1) test_fabs_8h_02_03(TyH);
+ if (1) test_fabs_8h_03_04(TyH);
+ if (1) test_fabs_8h_04_05(TyH);
+ if (1) test_fabs_8h_05_06(TyH);
+ if (1) test_fabs_8h_06_07(TyH);
+ if (1) test_fabs_8h_07_08(TyH);
+ if (1) test_fabs_8h_08_09(TyH);
+ if (1) test_fabs_8h_09_10(TyH);
+ if (1) test_fabs_8h_10_11(TyH);
+ if (1) test_fabs_8h_11_12(TyH);
+ if (1) test_fabs_8h_12_13(TyH);
+ if (1) test_fabs_8h_13_14(TyH);
+ if (1) test_fabs_8h_14_15(TyH);
+ if (1) test_fabs_8h_15_16(TyH);
+ if (1) test_fabs_8h_16_17(TyH);
+ if (1) test_fabs_8h_17_18(TyH);
+ if (1) test_fabs_8h_18_19(TyH);
+ if (1) test_fabs_8h_19_20(TyH);
+ if (1) test_fabs_8h_20_21(TyH);
+ if (1) test_fabs_8h_21_22(TyH);
+ if (1) test_fabs_8h_22_23(TyH);
+ if (1) test_fabs_8h_23_24(TyH);
+ if (1) test_fabs_8h_24_25(TyH);
+ if (1) test_fabs_8h_25_26(TyH);
+ if (1) test_fabs_8h_26_27(TyH);
+ if (1) test_fabs_8h_27_28(TyH);
+ if (1) test_fabs_8h_28_29(TyH);
+ if (1) test_fabs_8h_29_30(TyH);
+ if (1) test_fabs_8h_30_31(TyH);
+
+ if (1) test_fabs_4h_00_01(TyH);
+ if (1) test_fabs_4h_01_02(TyH);
+ if (1) test_fabs_4h_02_03(TyH);
+ if (1) test_fabs_4h_03_04(TyH);
+ if (1) test_fabs_4h_04_05(TyH);
+ if (1) test_fabs_4h_05_06(TyH);
+ if (1) test_fabs_4h_06_07(TyH);
+ if (1) test_fabs_4h_07_08(TyH);
+ if (1) test_fabs_4h_08_09(TyH);
+ if (1) test_fabs_4h_09_10(TyH);
+ if (1) test_fabs_4h_10_11(TyH);
+ if (1) test_fabs_4h_11_12(TyH);
+ if (1) test_fabs_4h_12_13(TyH);
+ if (1) test_fabs_4h_13_14(TyH);
+ if (1) test_fabs_4h_14_15(TyH);
+ if (1) test_fabs_4h_15_16(TyH);
+ if (1) test_fabs_4h_16_17(TyH);
+ if (1) test_fabs_4h_17_18(TyH);
+ if (1) test_fabs_4h_18_19(TyH);
+ if (1) test_fabs_4h_19_20(TyH);
+ if (1) test_fabs_4h_20_21(TyH);
+ if (1) test_fabs_4h_21_22(TyH);
+ if (1) test_fabs_4h_22_23(TyH);
+ if (1) test_fabs_4h_23_24(TyH);
+ if (1) test_fabs_4h_24_25(TyH);
+ if (1) test_fabs_4h_25_26(TyH);
+ if (1) test_fabs_4h_26_27(TyH);
+ if (1) test_fabs_4h_27_28(TyH);
+ if (1) test_fabs_4h_28_29(TyH);
+ if (1) test_fabs_4h_29_30(TyH);
+ if (1) test_fabs_4h_30_31(TyH);
+
+ printf("\nFNEG <Hd>, <Hn>\n\n");
+
+ if (1) test_fneg_h_00_01(TyH);
+ if (1) test_fneg_h_01_02(TyH);
+ if (1) test_fneg_h_02_03(TyH);
+ if (1) test_fneg_h_03_04(TyH);
+ if (1) test_fneg_h_04_05(TyH);
+ if (1) test_fneg_h_05_06(TyH);
+ if (1) test_fneg_h_06_07(TyH);
+ if (1) test_fneg_h_07_08(TyH);
+ if (1) test_fneg_h_08_09(TyH);
+ if (1) test_fneg_h_09_10(TyH);
+ if (1) test_fneg_h_10_11(TyH);
+ if (1) test_fneg_h_11_12(TyH);
+ if (1) test_fneg_h_12_13(TyH);
+ if (1) test_fneg_h_13_14(TyH);
+ if (1) test_fneg_h_14_15(TyH);
+ if (1) test_fneg_h_15_16(TyH);
+ if (1) test_fneg_h_16_17(TyH);
+ if (1) test_fneg_h_17_18(TyH);
+ if (1) test_fneg_h_18_19(TyH);
+ if (1) test_fneg_h_19_20(TyH);
+ if (1) test_fneg_h_20_21(TyH);
+ if (1) test_fneg_h_21_22(TyH);
+ if (1) test_fneg_h_22_23(TyH);
+ if (1) test_fneg_h_23_24(TyH);
+ if (1) test_fneg_h_24_25(TyH);
+ if (1) test_fneg_h_25_26(TyH);
+ if (1) test_fneg_h_26_27(TyH);
+ if (1) test_fneg_h_27_28(TyH);
+ if (1) test_fneg_h_28_29(TyH);
+ if (1) test_fneg_h_29_30(TyH);
+ if (1) test_fneg_h_30_31(TyH);
+
+ printf("\nFNEG <Vd>.<T>, <Vn>.<T>\n\n");
+
+ if (1) test_fneg_8h_00_01(TyH);
+ if (1) test_fneg_8h_01_02(TyH);
+ if (1) test_fneg_8h_02_03(TyH);
+ if (1) test_fneg_8h_03_04(TyH);
+ if (1) test_fneg_8h_04_05(TyH);
+ if (1) test_fneg_8h_05_06(TyH);
+ if (1) test_fneg_8h_06_07(TyH);
+ if (1) test_fneg_8h_07_08(TyH);
+ if (1) test_fneg_8h_08_09(TyH);
+ if (1) test_fneg_8h_09_10(TyH);
+ if (1) test_fneg_8h_10_11(TyH);
+ if (1) test_fneg_8h_11_12(TyH);
+ if (1) test_fneg_8h_12_13(TyH);
+ if (1) test_fneg_8h_13_14(TyH);
+ if (1) test_fneg_8h_14_15(TyH);
+ if (1) test_fneg_8h_15_16(TyH);
+ if (1) test_fneg_8h_16_17(TyH);
+ if (1) test_fneg_8h_17_18(TyH);
+ if (1) test_fneg_8h_18_19(TyH);
+ if (1) test_fneg_8h_19_20(TyH);
+ if (1) test_fneg_8h_20_21(TyH);
+ if (1) test_fneg_8h_21_22(TyH);
+ if (1) test_fneg_8h_22_23(TyH);
+ if (1) test_fneg_8h_23_24(TyH);
+ if (1) test_fneg_8h_24_25(TyH);
+ if (1) test_fneg_8h_25_26(TyH);
+ if (1) test_fneg_8h_26_27(TyH);
+ if (1) test_fneg_8h_27_28(TyH);
+ if (1) test_fneg_8h_28_29(TyH);
+ if (1) test_fneg_8h_29_30(TyH);
+ if (1) test_fneg_8h_30_31(TyH);
+
+ if (1) test_fneg_4h_00_01(TyH);
+ if (1) test_fneg_4h_01_02(TyH);
+ if (1) test_fneg_4h_02_03(TyH);
+ if (1) test_fneg_4h_03_04(TyH);
+ if (1) test_fneg_4h_04_05(TyH);
+ if (1) test_fneg_4h_05_06(TyH);
+ if (1) test_fneg_4h_06_07(TyH);
+ if (1) test_fneg_4h_07_08(TyH);
+ if (1) test_fneg_4h_08_09(TyH);
+ if (1) test_fneg_4h_09_10(TyH);
+ if (1) test_fneg_4h_10_11(TyH);
+ if (1) test_fneg_4h_11_12(TyH);
+ if (1) test_fneg_4h_12_13(TyH);
+ if (1) test_fneg_4h_13_14(TyH);
+ if (1) test_fneg_4h_14_15(TyH);
+ if (1) test_fneg_4h_15_16(TyH);
+ if (1) test_fneg_4h_16_17(TyH);
+ if (1) test_fneg_4h_17_18(TyH);
+ if (1) test_fneg_4h_18_19(TyH);
+ if (1) test_fneg_4h_19_20(TyH);
+ if (1) test_fneg_4h_20_21(TyH);
+ if (1) test_fneg_4h_21_22(TyH);
+ if (1) test_fneg_4h_22_23(TyH);
+ if (1) test_fneg_4h_23_24(TyH);
+ if (1) test_fneg_4h_24_25(TyH);
+ if (1) test_fneg_4h_25_26(TyH);
+ if (1) test_fneg_4h_26_27(TyH);
+ if (1) test_fneg_4h_27_28(TyH);
+ if (1) test_fneg_4h_28_29(TyH);
+ if (1) test_fneg_4h_29_30(TyH);
+ if (1) test_fneg_4h_30_31(TyH);
+
+ printf("\nFSQRT <Hd>, <Hn>\n\n");
+
+ if (1) test_fsqrt_h_00_01(TyH);
+ if (1) test_fsqrt_h_01_02(TyH);
+ if (1) test_fsqrt_h_02_03(TyH);
+ if (1) test_fsqrt_h_03_04(TyH);
+ if (1) test_fsqrt_h_04_05(TyH);
+ if (1) test_fsqrt_h_05_06(TyH);
+ if (1) test_fsqrt_h_06_07(TyH);
+ if (1) test_fsqrt_h_07_08(TyH);
+ if (1) test_fsqrt_h_08_09(TyH);
+ if (1) test_fsqrt_h_09_10(TyH);
+ if (1) test_fsqrt_h_10_11(TyH);
+ if (1) test_fsqrt_h_11_12(TyH);
+ if (1) test_fsqrt_h_12_13(TyH);
+ if (1) test_fsqrt_h_13_14(TyH);
+ if (1) test_fsqrt_h_14_15(TyH);
+ if (1) test_fsqrt_h_15_16(TyH);
+ if (1) test_fsqrt_h_16_17(TyH);
+ if (1) test_fsqrt_h_17_18(TyH);
+ if (1) test_fsqrt_h_18_19(TyH);
+ if (1) test_fsqrt_h_19_20(TyH);
+ if (1) test_fsqrt_h_20_21(TyH);
+ if (1) test_fsqrt_h_21_22(TyH);
+ if (1) test_fsqrt_h_22_23(TyH);
+ if (1) test_fsqrt_h_23_24(TyH);
+ if (1) test_fsqrt_h_24_25(TyH);
+ if (1) test_fsqrt_h_25_26(TyH);
+ if (1) test_fsqrt_h_26_27(TyH);
+ if (1) test_fsqrt_h_27_28(TyH);
+ if (1) test_fsqrt_h_28_29(TyH);
+ if (1) test_fsqrt_h_29_30(TyH);
+ if (1) test_fsqrt_h_30_31(TyH);
+
+ printf("\nFSQRT <Vd>.<T>, <Vn>.<T>\n\n");
+
+ if (1) test_fsqrt_8h_00_01(TyH);
+ if (1) test_fsqrt_8h_01_02(TyH);
+ if (1) test_fsqrt_8h_02_03(TyH);
+ if (1) test_fsqrt_8h_03_04(TyH);
+ if (1) test_fsqrt_8h_04_05(TyH);
+ if (1) test_fsqrt_8h_05_06(TyH);
+ if (1) test_fsqrt_8h_06_07(TyH);
+ if (1) test_fsqrt_8h_07_08(TyH);
+ if (1) test_fsqrt_8h_08_09(TyH);
+ if (1) test_fsqrt_8h_09_10(TyH);
+ if (1) test_fsqrt_8h_10_11(TyH);
+ if (1) test_fsqrt_8h_11_12(TyH);
+ if (1) test_fsqrt_8h_12_13(TyH);
+ if (1) test_fsqrt_8h_13_14(TyH);
+ if (1) test_fsqrt_8h_14_15(TyH);
+ if (1) test_fsqrt_8h_15_16(TyH);
+ if (1) test_fsqrt_8h_16_17(TyH);
+ if (1) test_fsqrt_8h_17_18(TyH);
+ if (1) test_fsqrt_8h_18_19(TyH);
+ if (1) test_fsqrt_8h_19_20(TyH);
+ if (1) test_fsqrt_8h_20_21(TyH);
+ if (1) test_fsqrt_8h_21_22(TyH);
+ if (1) test_fsqrt_8h_22_23(TyH);
+ if (1) test_fsqrt_8h_23_24(TyH);
+ if (1) test_fsqrt_8h_24_25(TyH);
+ if (1) test_fsqrt_8h_25_26(TyH);
+ if (1) test_fsqrt_8h_26_27(TyH);
+ if (1) test_fsqrt_8h_27_28(TyH);
+ if (1) test_fsqrt_8h_28_29(TyH);
+ if (1) test_fsqrt_8h_29_30(TyH);
+ if (1) test_fsqrt_8h_30_31(TyH);
+
+ if (1) test_fsqrt_4h_00_01(TyH);
+ if (1) test_fsqrt_4h_01_02(TyH);
+ if (1) test_fsqrt_4h_02_03(TyH);
+ if (1) test_fsqrt_4h_03_04(TyH);
+ if (1) test_fsqrt_4h_04_05(TyH);
+ if (1) test_fsqrt_4h_05_06(TyH);
+ if (1) test_fsqrt_4h_06_07(TyH);
+ if (1) test_fsqrt_4h_07_08(TyH);
+ if (1) test_fsqrt_4h_08_09(TyH);
+ if (1) test_fsqrt_4h_09_10(TyH);
+ if (1) test_fsqrt_4h_10_11(TyH);
+ if (1) test_fsqrt_4h_11_12(TyH);
+ if (1) test_fsqrt_4h_12_13(TyH);
+ if (1) test_fsqrt_4h_13_14(TyH);
+ if (1) test_fsqrt_4h_14_15(TyH);
+ if (1) test_fsqrt_4h_15_16(TyH);
+ if (1) test_fsqrt_4h_16_17(TyH);
+ if (1) test_fsqrt_4h_17_18(TyH);
+ if (1) test_fsqrt_4h_18_19(TyH);
+ if (1) test_fsqrt_4h_19_20(TyH);
+ if (1) test_fsqrt_4h_20_21(TyH);
+ if (1) test_fsqrt_4h_21_22(TyH);
+ if (1) test_fsqrt_4h_22_23(TyH);
+ if (1) test_fsqrt_4h_23_24(TyH);
+ if (1) test_fsqrt_4h_24_25(TyH);
+ if (1) test_fsqrt_4h_25_26(TyH);
+ if (1) test_fsqrt_4h_26_27(TyH);
+ if (1) test_fsqrt_4h_27_28(TyH);
+ if (1) test_fsqrt_4h_28_29(TyH);
+ if (1) test_fsqrt_4h_29_30(TyH);
+ if (1) test_fsqrt_4h_30_31(TyH);
+
return 0;
}
/* ---------------------------------------------------------------- */
/* -- List of instructions tested in order of execution. -- */
+/* -- Useful strings when searching for blocks of test cases. -- */
/* ---------------------------------------------------------------- */
/*
FADDP <V><d>, <Vn>.<T> Floating-point Add Pair of elements (scalar).
FADDP <Vd>.<T>, <Vn>.<T>, <Vm>.<T> Floating-point Add Pairwise (vector).
+ FABS <Hd>, <Hn> Floating-point Absolute value (scalar).
+ FABS <Vd>.<T>, <Vn>.<T> Floating-point Absolute value (vector).
+ FNEG <Hd>, <Hn> Floating-point Negate (scalar).
+ FNEG <Vd>.<T>, <Vn>.<T> Floating-point Negate (vector).
+ FSQRT <Hd>, <Hn> Floating-point Square Root (scalar).
+ FSQRT <Vd>.<T>, <Vn>.<T> Floating-point Square Root (vector).
*/
faddp v27.4h, v28.4h, v29.4h 96584f08a2f98312aff067d5f03b44cf 1eb33ae9199674ecd8d7987a5aa2c601 29fec9e82973b95bac8519f59f2d04ab 0000000000000000ac559f1ad8d75a72 1eb33ae9199674ecd8d7987a5aa2c601 29fec9e82973b95bac8519f59f2d04ab fpsr=00000000
faddp v28.4h, v29.4h, v30.4h 89dc3ea5a31f12c364df0e25357e07d6 913d502c107e9cd06a3eec76b56ecb74 3edf14402e48bffaabe616bb98dc80c1 0000000000000000abb098e2e55ccb9f 913d502c107e9cd06a3eec76b56ecb74 3edf14402e48bffaabe616bb98dc80c1 fpsr=00000000
faddp v29.4h, v30.4h, v31.4h 2a1fe48bf7d8b25706c5dff7abfe7295 0d2ba7bfbfefcfc75bab8685a4c94b2d 19f3d7116d5971d5d234977794db61d6 0000000000000000d23461d65bab4b2b 0d2ba7bfbfefcfc75bab8685a4c94b2d 19f3d7116d5971d5d234977794db61d6 fpsr=00000000
+
+FABS <Hd>, <Hn>
+
+fabs h0, h1 0937e4909fe80ce02f87a429eb5f081f 45af4ec7c2a821574df11effc5645bbb 00000000000000000000000000005bbb 45af4ec7c2a821574df11effc5645bbb fpsr=00000000
+fabs h1, h2 f57a25258fdf807367ff0cd7231ec7ef 8ab45265eb7423219729192a5f256ae7 00000000000000000000000000006ae7 8ab45265eb7423219729192a5f256ae7 fpsr=00000000
+fabs h2, h3 b1cff9f1b4ddbe2322a9c22776ff3042 83a818b6f3943cb7c8dd1991b6cb297d 0000000000000000000000000000297d 83a818b6f3943cb7c8dd1991b6cb297d fpsr=00000000
+fabs h3, h4 f7579b2891a813446e1bdf8d327099a8 51c6f6af2a1de39526bc45f7a76187ef 000000000000000000000000000007ef 51c6f6af2a1de39526bc45f7a76187ef fpsr=00000000
+fabs h4, h5 124ecb70f79979a7ae01844088bd7bbe 1614be74a19641dae470df8abcc9c0b3 000000000000000000000000000040b3 1614be74a19641dae470df8abcc9c0b3 fpsr=00000000
+fabs h5, h6 f209069ea7d3e520baedeb496f09ca07 f17c0c040cee6e4364c5ec2b482151d1 000000000000000000000000000051d1 f17c0c040cee6e4364c5ec2b482151d1 fpsr=00000000
+randV128: 512 calls, 699 iters
+fabs h6, h7 919b29bf2bfec2c5dd3bb51ccef7f987 ae2d4071b09e34d197ade8b4986d6b05 00000000000000000000000000006b05 ae2d4071b09e34d197ade8b4986d6b05 fpsr=00000000
+fabs h7, h8 1130d272c0b0f3b1b55dd7a60757997f 5136e60ea8b68eb60aff985d1d21b4da 000000000000000000000000000034da 5136e60ea8b68eb60aff985d1d21b4da fpsr=00000000
+fabs h8, h9 4c8b686f3a23b6d93a12e81f605f5002 d0f01218c3380ef0bee102374fafd4e3 000000000000000000000000000054e3 d0f01218c3380ef0bee102374fafd4e3 fpsr=00000000
+fabs h9, h10 b2aa237461d97084eb06887153eff01a cfa6ab954bb50e5bd22fb34754a219c5 000000000000000000000000000019c5 cfa6ab954bb50e5bd22fb34754a219c5 fpsr=00000000
+fabs h10, h11 1c9fc204c8c052c704da5f3444a81014 0e492839a79cda20f92eb913e40864e6 000000000000000000000000000064e6 0e492839a79cda20f92eb913e40864e6 fpsr=00000000
+fabs h11, h12 0f7c166980b896167145c55bed24b56c cc893028e602d73eb2831f4bf609ebf8 00000000000000000000000000006bf8 cc893028e602d73eb2831f4bf609ebf8 fpsr=00000000
+fabs h12, h13 0be77b318842c856059940783863e7a8 94463cd1c7914d221e876212d6c92a13 00000000000000000000000000002a13 94463cd1c7914d221e876212d6c92a13 fpsr=00000000
+fabs h13, h14 b78debf535fec705eaad3f4eb709cd41 c504bb084073c96cf268ed1e8d817879 00000000000000000000000000007879 c504bb084073c96cf268ed1e8d817879 fpsr=00000000
+fabs h14, h15 392f0631401ae5027aa91a00bcc34007 bf3e07b2c2da04a6f33908f372f209e1 000000000000000000000000000009e1 bf3e07b2c2da04a6f33908f372f209e1 fpsr=00000000
+fabs h15, h16 455d9993e4a5f1b876795aaf7a3a6332 768d72ee82413c1cef651c6c49c9b9c3 000000000000000000000000000039c3 768d72ee82413c1cef651c6c49c9b9c3 fpsr=00000000
+fabs h16, h17 031cbc1bd0f7f4313c3427feb9ab05a7 f7df3280711908adf17116fa75aea535 00000000000000000000000000002535 f7df3280711908adf17116fa75aea535 fpsr=00000000
+fabs h17, h18 f376b669ae2ce35a2a57a09a50746818 bf9212cf2c335fb533ff1b3c28c23a5e 00000000000000000000000000003a5e bf9212cf2c335fb533ff1b3c28c23a5e fpsr=00000000
+fabs h18, h19 091a1f4f5923c556de8f49b6eb14daf9 95a02171b9c06a425dbdc3e2025a96a7 000000000000000000000000000016a7 95a02171b9c06a425dbdc3e2025a96a7 fpsr=00000000
+fabs h19, h20 edcf0197e7c200c7409e243038d0ce7b 1855d89a262a1b0a53270c4dcc860398 00000000000000000000000000000398 1855d89a262a1b0a53270c4dcc860398 fpsr=00000000
+fabs h20, h21 539af0a5cbcde8d1860844ed2dee1843 06d4130774cb026e0b85da88ee6240d4 000000000000000000000000000040d4 06d4130774cb026e0b85da88ee6240d4 fpsr=00000000
+fabs h21, h22 f0c7891470a9c6d97711cd0105a75eff 2c00565c14c9b5e0cc4528dc9099beba 00000000000000000000000000003eba 2c00565c14c9b5e0cc4528dc9099beba fpsr=00000000
+fabs h22, h23 738244a36537113d88fba7bfdd5d0131 ad8bac2d354666290b996d125b24f4bd 000000000000000000000000000074bd ad8bac2d354666290b996d125b24f4bd fpsr=00000000
+fabs h23, h24 ab54e2e2e2e9a17df5c4cddac86ba5d7 df49d6a4ee899c7ee449c250d31cbfc2 00000000000000000000000000003fc2 df49d6a4ee899c7ee449c250d31cbfc2 fpsr=00000000
+fabs h24, h25 0aefbd68c882e0ba8688124d9a8034e6 4f3e6b0b450ee14a3f6391173f4b1584 00000000000000000000000000001584 4f3e6b0b450ee14a3f6391173f4b1584 fpsr=00000000
+fabs h25, h26 84629830272617d94573bcb41f7f9ba4 9c342f9777c1646445ad3ed3b57d49d5 000000000000000000000000000049d5 9c342f9777c1646445ad3ed3b57d49d5 fpsr=00000000
+fabs h26, h27 b803f91594cef4691ed025b60377507f 80efa667b5aedab485401690c81e5949 00000000000000000000000000005949 80efa667b5aedab485401690c81e5949 fpsr=00000000
+fabs h27, h28 b70b87ec21fcaee0ded12dca0df26a17 70b1ce7f93297a1aeff889594c121bf4 00000000000000000000000000001bf4 70b1ce7f93297a1aeff889594c121bf4 fpsr=00000000
+fabs h28, h29 8ede7208c800b715da12557654765782 f0d64bb3c491e2964c871592462727ca 000000000000000000000000000027ca f0d64bb3c491e2964c871592462727ca fpsr=00000000
+fabs h29, h30 4467de8de308363b05d28a171d1a294d 20cbc3f09aaa865164adf8d51b36a175 00000000000000000000000000002175 20cbc3f09aaa865164adf8d51b36a175 fpsr=00000000
+fabs h30, h31 25ee34ff9e689545c592399af877a248 df912f8374159df2f7085589b343d21f 0000000000000000000000000000521f df912f8374159df2f7085589b343d21f fpsr=00000000
+
+FABS <Vd>.<T>, <Vn>.<T>
+
+fabs v0.8h, v1.8h 5b3835128dd0355762546ab8a9c9f869 7a591efbe94e37d632c5c500931264b7 7a591efb694e37d632c54500131264b7 7a591efbe94e37d632c5c500931264b7 fpsr=00000000
+fabs v1.8h, v2.8h 7695b11f8084e96131699e77ba13900a bddc2f3f9e7ca05380906821cd649648 3ddc2f3f1e7c2053009068214d641648 bddc2f3f9e7ca05380906821cd649648 fpsr=00000000
+fabs v2.8h, v3.8h 6ebcc4c757e84ee401f6228492d84a9b 0ce747ec936710ebfbe70be75829395f 0ce747ec136710eb7be70be75829395f 0ce747ec936710ebfbe70be75829395f fpsr=00000000
+fabs v3.8h, v4.8h 84b4b96d2e26a96f0d355683bcd06b85 67bd0a55cfd546a986815ea08ffe7621 67bd0a554fd546a906815ea00ffe7621 67bd0a55cfd546a986815ea08ffe7621 fpsr=00000000
+fabs v4.8h, v5.8h c208da666ec923c9a6447b2b73612f52 a286f1ebadc1138d54839bd88d84ce1e 228671eb2dc1138d54831bd80d844e1e a286f1ebadc1138d54839bd88d84ce1e fpsr=00000000
+fabs v5.8h, v6.8h 9ca3dd0d0d8957f8464ca0f2311c20b5 b3a2b91de06daeb55b71d1649acc2190 33a2391d606d2eb55b7151641acc2190 b3a2b91de06daeb55b71d1649acc2190 fpsr=00000000
+fabs v6.8h, v7.8h 3773ae1bcf8ff14a3d3c4e4b5a254e46 2ae60a0d6cd20b6d770c50d4ac6c0dc7 2ae60a0d6cd20b6d770c50d42c6c0dc7 2ae60a0d6cd20b6d770c50d4ac6c0dc7 fpsr=00000000
+fabs v7.8h, v8.8h dbd8609b86ba8d162d9b0d5f9d85c79b ed24c0578608f5c373d4f26ff7522fb6 6d244057060875c373d4726f77522fb6 ed24c0578608f5c373d4f26ff7522fb6 fpsr=00000000
+fabs v8.8h, v9.8h e19a660dfbf22d561be6f39a2c0cfb30 7a7b4e2ba2eb89d3b39f1de9625c24b1 7a7b4e2b22eb09d3339f1de9625c24b1 7a7b4e2ba2eb89d3b39f1de9625c24b1 fpsr=00000000
+fabs v9.8h, v10.8h 5ff5310749300238b7eb0dd98437b5ac 4fce29f348d45b519eda58ac7a9edc2f 4fce29f348d45b511eda58ac7a9e5c2f 4fce29f348d45b519eda58ac7a9edc2f fpsr=00000000
+fabs v10.8h, v11.8h 4c7d311058224c9e16e48416217a378f f30a5bd562bcb117541a3dac4fa95437 730a5bd562bc3117541a3dac4fa95437 f30a5bd562bcb117541a3dac4fa95437 fpsr=00000000
+fabs v11.8h, v12.8h 7b408c9b2067aa17b9a984144ef62b49 f81b4f5fe03bec2401c8b1f90f4166de 781b4f5f603b6c2401c831f90f4166de f81b4f5fe03bec2401c8b1f90f4166de fpsr=00000000
+fabs v12.8h, v13.8h 9cd9212673fb3d5f28b1fa34a6deaa2f e2b0c1b33d707512acc6a5cbc3245db3 62b041b33d7075122cc625cb43245db3 e2b0c1b33d707512acc6a5cbc3245db3 fpsr=00000000
+fabs v13.8h, v14.8h 61076702b3356dd0a94456d89e10168e 203fe937d71e545a5fb8b48c3ff8390d 203f6937571e545a5fb8348c3ff8390d 203fe937d71e545a5fb8b48c3ff8390d fpsr=00000000
+fabs v14.8h, v15.8h 1da02ac32de40ca086b6f3b5f5ec755f ab5bb74d390b29ca76006c9b969ea1de 2b5b374d390b29ca76006c9b169e21de ab5bb74d390b29ca76006c9b969ea1de fpsr=00000000
+fabs v15.8h, v16.8h 12c1d292dadac5cb275692ecb1c50570 0467c77c934fcdee3f104d5a2c898c46 0467477c134f4dee3f104d5a2c890c46 0467c77c934fcdee3f104d5a2c898c46 fpsr=00000000
+fabs v16.8h, v17.8h b35fdb64701e945ab1e9eaf6c694941e 918fbdc5e291947a408fc950490c6c99 118f3dc56291147a408f4950490c6c99 918fbdc5e291947a408fc950490c6c99 fpsr=00000000
+fabs v17.8h, v18.8h cebf5594ee8bc3c1b02de71711f26e5d ef07e90793524658d8287172c6422b47 6f076907135246585828717246422b47 ef07e90793524658d8287172c6422b47 fpsr=00000000
+fabs v18.8h, v19.8h db05f902c9a2df3e3cb7f382b0f69ba6 cb02be9bd72c829bcf087be4a6069c87 4b023e9b572c029b4f087be426061c87 cb02be9bd72c829bcf087be4a6069c87 fpsr=00000000
+fabs v19.8h, v20.8h 45b41a5728f342c14290ae66ab459ed4 6f74ad21e7c0a58301ba82fc21ccdd85 6f742d2167c0258301ba02fc21cc5d85 6f74ad21e7c0a58301ba82fc21ccdd85 fpsr=00000000
+fabs v20.8h, v21.8h 31e2defb421abff328343e3beb65bccc ef5942a1c0e0ca1e28d1f199ea5ce881 6f5942a140e04a1e28d171996a5c6881 ef5942a1c0e0ca1e28d1f199ea5ce881 fpsr=00000000
+fabs v21.8h, v22.8h cd8bb349e538e7dda8ab04445f43e64a c77ffab3aa8fa5f5909c99db2e522a3d 477f7ab32a8f25f5109c19db2e522a3d c77ffab3aa8fa5f5909c99db2e522a3d fpsr=00000000
+fabs v22.8h, v23.8h 47ef89ab93dcc610deab3e35e4b56fd0 5a22fb2a97f2b725f377acfa21466716 5a227b2a17f2372573772cfa21466716 5a22fb2a97f2b725f377acfa21466716 fpsr=00000000
+fabs v23.8h, v24.8h e73092581227a95d868c1b95d9e8bc43 6701d88dd7e8dd3f864752b984649c70 6701588d57e85d3f064752b904641c70 6701d88dd7e8dd3f864752b984649c70 fpsr=00000000
+fabs v24.8h, v25.8h 41932201ece1f76cab44100b00fb703f 9c05382834d243e8102309289f0487d0 1c05382834d243e8102309281f0407d0 9c05382834d243e8102309289f0487d0 fpsr=00000000
+fabs v25.8h, v26.8h a360f8a9cb209147bcf11ee6690c48d1 d380ece50912c7462ffa470ba7c38a89 53806ce5091247462ffa470b27c30a89 d380ece50912c7462ffa470ba7c38a89 fpsr=00000000
+fabs v26.8h, v27.8h 2b2e060ec00e220ad279adafb572e8bd 9f559c6abf12bf38fa2e0670b01bcafa 1f551c6a3f123f387a2e0670301b4afa 9f559c6abf12bf38fa2e0670b01bcafa fpsr=00000000
+fabs v27.8h, v28.8h 699bc759eb22cacbec75d26340ffddf6 b3e72358437eb891e7c38e901fb05a72 33e72358437e389167c30e901fb05a72 b3e72358437eb891e7c38e901fb05a72 fpsr=00000000
+fabs v28.8h, v29.8h cb6c0e4df0c8e3dcdbbc80afcead8284 eefaadd40278e05968494fd990dfcfdb 6efa2dd40278605968494fd910df4fdb eefaadd40278e05968494fd990dfcfdb fpsr=00000000
+fabs v29.8h, v30.8h 24fd09259b8aa0e483b6c449099d482d 456adc6dece67498047f6143a81e6dd3 456a5c6d6ce67498047f6143281e6dd3 456adc6dece67498047f6143a81e6dd3 fpsr=00000000
+fabs v30.8h, v31.8h 40e45202dcf949c54d4c8e652c2ea45c 3dc787326b364376e1256796e5753057 3dc707326b3643766125679665753057 3dc787326b364376e1256796e5753057 fpsr=00000000
+fabs v0.4h, v1.4h d0247b4a28d835a36ffff2e82aa56bb5 88134186f12ca11732c074b63b26eb09 000000000000000032c074b63b266b09 88134186f12ca11732c074b63b26eb09 fpsr=00000000
+fabs v1.4h, v2.4h 5edc01923794338d74faa2ddf8e1a090 8bc2195ff2ebb5a01b5604b6f74470da 00000000000000001b5604b6774470da 8bc2195ff2ebb5a01b5604b6f74470da fpsr=00000000
+fabs v2.4h, v3.4h 94e3abf26c26b7a66d1858edf6f399e9 c5dd39d1b0c43bc118fccda3094fb4e2 000000000000000018fc4da3094f34e2 c5dd39d1b0c43bc118fccda3094fb4e2 fpsr=00000000
+fabs v3.4h, v4.4h 348f5988c1f6c82abad98c7cf36c568a 2497720343b5ec2ae5f8f1335752c15f 000000000000000065f871335752415f 2497720343b5ec2ae5f8f1335752c15f fpsr=00000000
+fabs v4.4h, v5.4h 68bc8fcb3f9c61edeb7496cb5e0437a5 0c880f75039997ff91acbb1a75ad5ef0 000000000000000011ac3b1a75ad5ef0 0c880f75039997ff91acbb1a75ad5ef0 fpsr=00000000
+fabs v5.4h, v6.4h e2d10a83d1fbeeb59283ef9809a139d7 bdf57a5acc0300c3685016cac1c13e83 0000000000000000685016ca41c13e83 bdf57a5acc0300c3685016cac1c13e83 fpsr=00000000
+fabs v6.4h, v7.4h 4b2939371428a2738d4ac2b58b3fe613 00cccbbd5f8a40bcd0100e90e20d52c2 000000000000000050100e90620d52c2 00cccbbd5f8a40bcd0100e90e20d52c2 fpsr=00000000
+fabs v7.4h, v8.4h de3613dbcdea9a46a0b7619465b43f63 3ddf478523227766b5984b4c78162e0a 000000000000000035984b4c78162e0a 3ddf478523227766b5984b4c78162e0a fpsr=00000000
+randV128: 768 calls, 1047 iters
+fabs v8.4h, v9.4h cdf9a5fdd4619ca3fbbaaadd3bcfd967 b602c7a266815d1ae592158f24400e74 00000000000000006592158f24400e74 b602c7a266815d1ae592158f24400e74 fpsr=00000000
+fabs v9.4h, v10.4h 1345b2d1f5cf93b0dbb2b3391d86b89e 968adddb0a7d641192ced1619083e128 000000000000000012ce516110836128 968adddb0a7d641192ced1619083e128 fpsr=00000000
+fabs v10.4h, v11.4h eefcef7a686e5be61a6a4debdaf028ce 70c12b2242100a1b51fb9bfc1e11f753 000000000000000051fb1bfc1e117753 70c12b2242100a1b51fb9bfc1e11f753 fpsr=00000000
+fabs v11.4h, v12.4h 9dbadedc5fb420fa5ec66b8ee2e7c1c7 e970cd3de35a4e1617453bcbf839d058 000000000000000017453bcb78395058 e970cd3de35a4e1617453bcbf839d058 fpsr=00000000
+fabs v12.4h, v13.4h 84238a63d0b094ac3e4009a988c78d73 516423533673b907314755eca9625466 0000000000000000314755ec29625466 516423533673b907314755eca9625466 fpsr=00000000
+fabs v13.4h, v14.4h 123429d34950a423bda5423513ded944 7b78995ea148096c521348c82dc23e60 0000000000000000521348c82dc23e60 7b78995ea148096c521348c82dc23e60 fpsr=00000000
+fabs v14.4h, v15.4h 4a23bc92c0a3ca39462ca98ced9ee362 8153f481b3023300833af8cfe8e7d506 0000000000000000033a78cf68e75506 8153f481b3023300833af8cfe8e7d506 fpsr=00000000
+fabs v15.4h, v16.4h 35d96c4c7ada81c9ab59a59dafba8e47 ef5c9847cb5bb98f619c4d5ea5f2255e 0000000000000000619c4d5e25f2255e ef5c9847cb5bb98f619c4d5ea5f2255e fpsr=00000000
+fabs v16.4h, v17.4h a9b3e9a3c3904619f63f1c4b1b9f4223 86aa11887877a6d849b3512b5e2a8218 000000000000000049b3512b5e2a0218 86aa11887877a6d849b3512b5e2a8218 fpsr=00000000
+fabs v17.4h, v18.4h bc404be66e836250454c3b390ef5d0f9 7443688dbee9625eec89f510d5ec3223 00000000000000006c89751055ec3223 7443688dbee9625eec89f510d5ec3223 fpsr=00000000
+fabs v18.4h, v19.4h 4f764588d0158833cd1c203a3edd7a52 c947e188f225fba0cba393991642f012 00000000000000004ba3139916427012 c947e188f225fba0cba393991642f012 fpsr=00000000
+fabs v19.4h, v20.4h ed553385d2a045fcb1e4194e2f953af0 c9f644af6c35b5a9298bd0f8923b179a 0000000000000000298b50f8123b179a c9f644af6c35b5a9298bd0f8923b179a fpsr=00000000
+fabs v20.4h, v21.4h fb255f422135581fb5fb8666d0e41372 1ca43e3121fba3ffacfe5cc842680cf4 00000000000000002cfe5cc842680cf4 1ca43e3121fba3ffacfe5cc842680cf4 fpsr=00000000
+fabs v21.4h, v22.4h 3151b853da308a1146e2e32500cd8fd7 4f455ede773e287b72d7d019b8471c89 000000000000000072d7501938471c89 4f455ede773e287b72d7d019b8471c89 fpsr=00000000
+fabs v22.4h, v23.4h 6f381e19ddf1bb3242f811ed9db08e7e 413a82184f5f247e5d780d4ad43726b8 00000000000000005d780d4a543726b8 413a82184f5f247e5d780d4ad43726b8 fpsr=00000000
+fabs v23.4h, v24.4h 943a71f409d6cbe08b9ef01e88ebf0c8 d4e28b3f89bd76674b41f3bc75980ce1 00000000000000004b4173bc75980ce1 d4e28b3f89bd76674b41f3bc75980ce1 fpsr=00000000
+fabs v24.4h, v25.4h 45609fd5e10f0ff762c923a14cb059d6 59cccbd0a3b1a06db3c73ae0ca2ee8a2 000000000000000033c73ae04a2e68a2 59cccbd0a3b1a06db3c73ae0ca2ee8a2 fpsr=00000000
+fabs v25.4h, v26.4h 0bcec3fc42073749ed465b523d239efb 9c834eaab10a107f9f54bf7726e66322 00000000000000001f543f7726e66322 9c834eaab10a107f9f54bf7726e66322 fpsr=00000000
+fabs v26.4h, v27.4h e9e53f246ebcbf3251632ec2c358364b d8308a161f694382213cafb53a36aff3 0000000000000000213c2fb53a362ff3 d8308a161f694382213cafb53a36aff3 fpsr=00000000
+fabs v27.4h, v28.4h 7b86d0bd834973a67642acd16da757d4 60898789ecfa86c5322e33ad392b6262 0000000000000000322e33ad392b6262 60898789ecfa86c5322e33ad392b6262 fpsr=00000000
+fabs v28.4h, v29.4h 77c81da655b51bba5253e15cf9d4ed0e d29952a65385b97bbb8a37610426c3e4 00000000000000003b8a3761042643e4 d29952a65385b97bbb8a37610426c3e4 fpsr=00000000
+fabs v29.4h, v30.4h e45c02af1c4e4317490de45654920060 0bdc2237e45a0fefef97b25e24fe3da4 00000000000000006f97325e24fe3da4 0bdc2237e45a0fefef97b25e24fe3da4 fpsr=00000000
+fabs v30.4h, v31.4h 7532770527b503faba181aeb0bcff737 b0d603a742d668fbec83e542163f4e88 00000000000000006c836542163f4e88 b0d603a742d668fbec83e542163f4e88 fpsr=00000000
+
+FNEG <Hd>, <Hn>
+
+fneg h0, h1 667c91075419db83ef0ab980073e89c8 6cdc819cfa68500465ee79fe87c9727e 0000000000000000000000000000f27e 6cdc819cfa68500465ee79fe87c9727e fpsr=00000000
+fneg h1, h2 ac89d491f84d4d934bc24480623a7323 c3c391a4d67da7770a72bf3d4d01cb88 00000000000000000000000000004b88 c3c391a4d67da7770a72bf3d4d01cb88 fpsr=00000000
+fneg h2, h3 a855ef96dd4b939b91c15167a2913ff9 bd93203fa5ba14d39e79ad9453d8d768 00000000000000000000000000005768 bd93203fa5ba14d39e79ad9453d8d768 fpsr=00000000
+fneg h3, h4 dc0a6363f6c70594cca9bcc22d02be55 7830544b46d033d95986e9e2ce510435 00000000000000000000000000008435 7830544b46d033d95986e9e2ce510435 fpsr=00000000
+fneg h4, h5 4142cc6e0151dec49a87e0aecdb528fb 1ce8746b100c316e5f21d698972394a5 000000000000000000000000000014a5 1ce8746b100c316e5f21d698972394a5 fpsr=00000000
+fneg h5, h6 1abdfbb76d0b454872abd2b6d05e3da6 a9a281db5ffba917992fba4fc06c3ac9 0000000000000000000000000000bac9 a9a281db5ffba917992fba4fc06c3ac9 fpsr=00000000
+fneg h6, h7 1c3cd4473b05d3739b191eb18db24784 395bb8385df15dd1efa9f2064667303b 0000000000000000000000000000b03b 395bb8385df15dd1efa9f2064667303b fpsr=00000000
+fneg h7, h8 843c995e1987d6cd91b17366b498ce77 bca76ecf3bf5428bf658d74321fc004f 0000000000000000000000000000804f bca76ecf3bf5428bf658d74321fc004f fpsr=00000000
+fneg h8, h9 f778a7d83e836d98be89e66fb0620f95 6c9982253f796c209a63a01da4fc15dd 000000000000000000000000000095dd 6c9982253f796c209a63a01da4fc15dd fpsr=00000000
+fneg h9, h10 dbdf9b08c4db0c3c613532d7cd0d2505 98d0cbb0670d038eb3448f1a1f831c2c 00000000000000000000000000009c2c 98d0cbb0670d038eb3448f1a1f831c2c fpsr=00000000
+fneg h10, h11 82d5bd42ea2a9ce0d2064f0c52702884 9535e446495ef6e439b80035aa588dc4 00000000000000000000000000000dc4 9535e446495ef6e439b80035aa588dc4 fpsr=00000000
+fneg h11, h12 6a64c4bc1ef078764f175e08ea67f5db df41b8323ce5b9c1c44832b87167b9ab 000000000000000000000000000039ab df41b8323ce5b9c1c44832b87167b9ab fpsr=00000000
+fneg h12, h13 99b7b1906b87b46c65c6d4046a7db02c ed62aaa3d0bc8048499b55733db3f2da 000000000000000000000000000072da ed62aaa3d0bc8048499b55733db3f2da fpsr=00000000
+fneg h13, h14 f79e72ed5bfd7037ca9edd979b2f27a8 dd7809bb1ade554610281e521140e12f 0000000000000000000000000000612f dd7809bb1ade554610281e521140e12f fpsr=00000000
+fneg h14, h15 362189c698dc26f0f74603b517463e55 9725b55308a2d1130289a02676ce7992 0000000000000000000000000000f992 9725b55308a2d1130289a02676ce7992 fpsr=00000000
+fneg h15, h16 08b60537cfcfe777b9c4aad2fb750f6d f9936c23310119a90ede5217759691de 000000000000000000000000000011de f9936c23310119a90ede5217759691de fpsr=00000000
+fneg h16, h17 31965e6ba117763d3801f1069d2d32d8 6ce5f7902ccea7d58f8a9df9690074d5 0000000000000000000000000000f4d5 6ce5f7902ccea7d58f8a9df9690074d5 fpsr=00000000
+fneg h17, h18 932174c4ec15b4a1525ebab3ddcf88f5 ce7a38f9d8685cf863ed602b346b02d6 000000000000000000000000000082d6 ce7a38f9d8685cf863ed602b346b02d6 fpsr=00000000
+fneg h18, h19 18a572afecf734e2e7d5725b0ec96331 0d0ac5f213624efc284cc26fbea1d16c 0000000000000000000000000000516c 0d0ac5f213624efc284cc26fbea1d16c fpsr=00000000
+fneg h19, h20 dbabbe15d021980b625e27aef3b33e8b 548df6decac624e79624406356756cd6 0000000000000000000000000000ecd6 548df6decac624e79624406356756cd6 fpsr=00000000
+fneg h20, h21 6876b2ef4493cb3611bde6fb4fb86a95 4b7848c9e734cbc93e2e51051cd7993c 0000000000000000000000000000193c 4b7848c9e734cbc93e2e51051cd7993c fpsr=00000000
+fneg h21, h22 d92e37acd05b093195d4cc196042f3c4 3b6c42f286950f5fdc3471d4a000137e 0000000000000000000000000000937e 3b6c42f286950f5fdc3471d4a000137e fpsr=00000000
+fneg h22, h23 7995b5a86a843e090eac1b090faf60f4 9c9caabe421a7bb4cfd27b0999f67851 0000000000000000000000000000f851 9c9caabe421a7bb4cfd27b0999f67851 fpsr=00000000
+fneg h23, h24 3106cf285ec202de0303cbd23c65e037 cd70a6e690ccee61f688dfef494e6890 0000000000000000000000000000e890 cd70a6e690ccee61f688dfef494e6890 fpsr=00000000
+fneg h24, h25 af4717cb4f0c47c331b57be58e66c298 3df836c31f59eefee506c39695529edf 00000000000000000000000000001edf 3df836c31f59eefee506c39695529edf fpsr=00000000
+fneg h25, h26 1f81ddcc6139683c60ba304b49a168cb c4eacc5248f1cbd32400593fd06401d4 000000000000000000000000000081d4 c4eacc5248f1cbd32400593fd06401d4 fpsr=00000000
+fneg h26, h27 74388f35dbeec777eec8e091990f07ab 41859f453ecc281e798668f9c8c98689 00000000000000000000000000000689 41859f453ecc281e798668f9c8c98689 fpsr=00000000
+fneg h27, h28 d109228b0759d612ae4c89891b611cb7 ba65a049044f0a6ec6b4dfc0b99e8ac5 00000000000000000000000000000ac5 ba65a049044f0a6ec6b4dfc0b99e8ac5 fpsr=00000000
+fneg h28, h29 c6c3580edaccddcf5265f9e4da12353b 6297549b24245209338fce0077d9a665 00000000000000000000000000002665 6297549b24245209338fce0077d9a665 fpsr=00000000
+fneg h29, h30 d9369fb98def23e2b5fb412778825141 df3896fccb1fa9e696df458dcfef3ab5 0000000000000000000000000000bab5 df3896fccb1fa9e696df458dcfef3ab5 fpsr=00000000
+fneg h30, h31 d887cf76fb2c393d2780ce4bf4a68846 ab0fdde6a7b5615b0e6739d26218557a 0000000000000000000000000000d57a ab0fdde6a7b5615b0e6739d26218557a fpsr=00000000
+
+FNEG <Vd>.<T>, <Vn>.<T>
+
+fneg v0.8h, v1.8h c2e51eb2c26ae24c429f4d84f36bc2e8 8e7df72f5417009cee38f9ccd7f81f37 0e7d772fd417809c6e3879cc57f89f37 8e7df72f5417009cee38f9ccd7f81f37 fpsr=00000000
+fneg v1.8h, v2.8h f2a1546f267de84418ad1bee69937563 29770459d723e1c39d554c895f5b36c0 a9778459572361c31d55cc89df5bb6c0 29770459d723e1c39d554c895f5b36c0 fpsr=00000000
+fneg v2.8h, v3.8h 10e8927696ec55e2380329874e749e64 c10380fea42b07395f10c1d376077a97 410300fe242b8739df1041d3f607fa97 c10380fea42b07395f10c1d376077a97 fpsr=00000000
+fneg v3.8h, v4.8h 2e04ddb8ce6b79a06fd086fddb7739ba 1053ca4553bf527dae5149384fd86c20 90534a45d3bfd27d2e51c938cfd8ec20 1053ca4553bf527dae5149384fd86c20 fpsr=00000000
+fneg v4.8h, v5.8h 3b1353a6dc026b3f41eddb408b1a83bd 92bf2a292c094c75314a43d24eb988fe 12bfaa29ac09cc75b14ac3d2ceb908fe 92bf2a292c094c75314a43d24eb988fe fpsr=00000000
+fneg v5.8h, v6.8h 9ef053f0f62818afda6eb8629600867d 72960517154507cf5ec1b548e5f9bb5f f2968517954587cfdec1354865f93b5f 72960517154507cf5ec1b548e5f9bb5f fpsr=00000000
+fneg v6.8h, v7.8h a09a97414698f159e6804a208c3aef5c acbc0643aca508b945cb85797b52dcfd 2cbc86432ca588b9c5cb0579fb525cfd acbc0643aca508b945cb85797b52dcfd fpsr=00000000
+fneg v7.8h, v8.8h e7d126249134f10473a47ba276512cba 7abc1e3f1f44a40d833548a11bad0962 fabc9e3f9f44240d0335c8a19bad8962 7abc1e3f1f44a40d833548a11bad0962 fpsr=00000000
+fneg v8.8h, v9.8h 7151676243eafb855945992c900aca7c 781273a866fa978a94423df7150f4108 f812f3a8e6fa178a1442bdf7950fc108 781273a866fa978a94423df7150f4108 fpsr=00000000
+fneg v9.8h, v10.8h e6eb18244c8f95bbb17c5080d451166d 05b8c1eecab4c0be68f85523d79f9f0c 85b841ee4ab440bee8f8d523579f1f0c 05b8c1eecab4c0be68f85523d79f9f0c fpsr=00000000
+randV128: 1024 calls, 1393 iters
+fneg v10.8h, v11.8h df70e09bb0d6eb8b94165af6c637b7eb f82dab261adaf78393fc8cfe1b5584db 782d2b269ada778313fc0cfe9b5504db f82dab261adaf78393fc8cfe1b5584db fpsr=00000000
+fneg v11.8h, v12.8h 516be226f5a384cc8b8c5092f134a93a bd31f61eaf7339316fe637f02448ac88 3d31761e2f73b931efe6b7f0a4482c88 bd31f61eaf7339316fe637f02448ac88 fpsr=00000000
+fneg v12.8h, v13.8h ce08b43c76375b73104228ad24ae708d b5fff19e1df48c28c508326540315023 35ff719e9df40c284508b265c031d023 b5fff19e1df48c28c508326540315023 fpsr=00000000
+fneg v13.8h, v14.8h c2da713ddfbe20ee62ed7bd14f57939b baa1500e5bbebe48a67944424c4eaafc 3aa1d00edbbe3e482679c442cc4e2afc baa1500e5bbebe48a67944424c4eaafc fpsr=00000000
+fneg v14.8h, v15.8h 28fa9f6aa122df73c14cf1322c6fc011 208fa40aea8b37bb14690d0d90d069d6 a08f240a6a8bb7bb94698d0d10d0e9d6 208fa40aea8b37bb14690d0d90d069d6 fpsr=00000000
+fneg v15.8h, v16.8h 8596a2c29953279530d61873e1918131 6c1b8f6851ded3326b212d0a1e8180b0 ec1b0f68d1de5332eb21ad0a9e8100b0 6c1b8f6851ded3326b212d0a1e8180b0 fpsr=00000000
+fneg v16.8h, v17.8h b2d53a7623b1760ed37897654c15cdbb 40e208fb8277ef56ae879d8e99ac994b c0e288fb02776f562e871d8e19ac194b 40e208fb8277ef56ae879d8e99ac994b fpsr=00000000
+fneg v17.8h, v18.8h 2679afd4eda67346d348f7bc0cc35d54 a70e5e5a3030a0f7f71cd8d73ba23f44 270ede5ab03020f7771c58d7bba2bf44 a70e5e5a3030a0f7f71cd8d73ba23f44 fpsr=00000000
+fneg v18.8h, v19.8h e34e2b34ae9b2dd31c1d0674dda09449 d928407deb9d4c3cb3aaeb1c91a8b198 5928c07d6b9dcc3c33aa6b1c11a83198 d928407deb9d4c3cb3aaeb1c91a8b198 fpsr=00000000
+fneg v19.8h, v20.8h 02d0fb54178f5368387de719fb59d66c fb614308eca488666fef2d4394bfe4da 7b61c3086ca40866efefad4314bf64da fb614308eca488666fef2d4394bfe4da fpsr=00000000
+fneg v20.8h, v21.8h cfb9024454a1dff5e62ede86ba27f7b2 817f3e85e8d9b5f645db4a1e113763d8 017fbe8568d935f6c5dbca1e9137e3d8 817f3e85e8d9b5f645db4a1e113763d8 fpsr=00000000
+fneg v21.8h, v22.8h 74375b3467ee4c0b15999d3669e55679 57cbeb16f306e4f536d011bf39e3b202 d7cb6b16730664f5b6d091bfb9e33202 57cbeb16f306e4f536d011bf39e3b202 fpsr=00000000
+fneg v22.8h, v23.8h f834673518e89429dfd72a10236460d0 234beca0f3d9a7afa813e66e129bf574 a34b6ca073d927af2813666e929b7574 234beca0f3d9a7afa813e66e129bf574 fpsr=00000000
+fneg v23.8h, v24.8h b1cee2eacd5bdf215c1414ab14a7d662 9d661f1cc06e2aff2c8f9c4e2364608c 1d669f1c406eaaffac8f1c4ea364e08c 9d661f1cc06e2aff2c8f9c4e2364608c fpsr=00000000
+fneg v24.8h, v25.8h b00c709d6799bdcdac0b328733f75f37 a716398f8972c081c5ad24f43c6b291e 2716b98f0972408145ada4f4bc6ba91e a716398f8972c081c5ad24f43c6b291e fpsr=00000000
+fneg v25.8h, v26.8h 3b9dbd82c7b93e7907e68a7820b3d0d5 02c200141b3e087caa9fc6fb8400232f 82c280149b3e887c2a9f46fb0400a32f 02c200141b3e087caa9fc6fb8400232f fpsr=00000000
+fneg v26.8h, v27.8h 1d7ae72bc22e8f641e808282cbf994c5 506bb16f457cb07d22cb4f3562ed6b16 d06b316fc57c307da2cbcf35e2edeb16 506bb16f457cb07d22cb4f3562ed6b16 fpsr=00000000
+fneg v27.8h, v28.8h 37c3504f080ead048d0bb4e834ca63e5 f498d4ce3cb40a749200c4309e084fe1 749854cebcb48a74120044301e08cfe1 f498d4ce3cb40a749200c4309e084fe1 fpsr=00000000
+fneg v28.8h, v29.8h 6cfb19614c73775ff9894d3eda70e22f 9660b1fd2ed965ff52e32d1c61ec623c 166031fdaed9e5ffd2e3ad1ce1ece23c 9660b1fd2ed965ff52e32d1c61ec623c fpsr=00000000
+fneg v29.8h, v30.8h ec3fcdbadb73ee3f25f818c40e48ad71 50554c1c4a9ae0c235da6940e181e567 d055cc1cca9a60c2b5dae94061816567 50554c1c4a9ae0c235da6940e181e567 fpsr=00000000
+fneg v30.8h, v31.8h a2d6034040ef690313d087bc60defa26 4050bed30dcbc2cd9cc9f2725dbc2349 c0503ed38dcb42cd1cc97272ddbca349 4050bed30dcbc2cd9cc9f2725dbc2349 fpsr=00000000
+fneg v0.4h, v1.4h 6b43b7c8ef3ae223cd2665f0bc6583d6 9b96acbbae82c2fba1f6db7bd4ddf32d 000000000000000021f65b7b54dd732d 9b96acbbae82c2fba1f6db7bd4ddf32d fpsr=00000000
+fneg v1.4h, v2.4h 05c0703f21a708bf197a5e75409f8ebc c4b19a523d29b0d58bac37ba5050a0c7 00000000000000000bacb7bad05020c7 c4b19a523d29b0d58bac37ba5050a0c7 fpsr=00000000
+fneg v2.4h, v3.4h 57cd827a199ba578e424469fc3b38d56 5f266815af1733225facf1cdf3ee5aae 0000000000000000dfac71cd73eedaae 5f266815af1733225facf1cdf3ee5aae fpsr=00000000
+fneg v3.4h, v4.4h 6451773725664353f9d23bc4096ce025 d89a02a4f756122e0b13a7830ad31c25 00000000000000008b1327838ad39c25 d89a02a4f756122e0b13a7830ad31c25 fpsr=00000000
+fneg v4.4h, v5.4h 9909ea29c99b30a963e96f81cef2a01f 1e87f0a162e4b6f6e6b353f681423c17 000000000000000066b3d3f60142bc17 1e87f0a162e4b6f6e6b353f681423c17 fpsr=00000000
+fneg v5.4h, v6.4h c4888ad6fb96068abf0ce3edd9afb7e2 8b79cefb919eced2736d1309051d4eac 0000000000000000f36d9309851dceac 8b79cefb919eced2736d1309051d4eac fpsr=00000000
+fneg v6.4h, v7.4h 94c1ea268f143d648c3e7980d06fed6f 2b42907aba1f33118f2529149b127bc3 00000000000000000f25a9141b12fbc3 2b42907aba1f33118f2529149b127bc3 fpsr=00000000
+fneg v7.4h, v8.4h b5fdf63e525d3feba342c69747df8863 ed0f1a45700b54f6115a355ea8ad0a90 0000000000000000915ab55e28ad8a90 ed0f1a45700b54f6115a355ea8ad0a90 fpsr=00000000
+fneg v8.4h, v9.4h 3ddbe9c2a6f6e512bfadeff8241e3c28 bfec5696158a0ccb99f6f56acd565067 000000000000000019f6756a4d56d067 bfec5696158a0ccb99f6f56acd565067 fpsr=00000000
+fneg v9.4h, v10.4h 3c1124001b91659515743ae0b18f0eb4 04802eb5d90d46256a9a5a4429cccc71 0000000000000000ea9ada44a9cc4c71 04802eb5d90d46256a9a5a4429cccc71 fpsr=00000000
+fneg v10.4h, v11.4h bcdbf2a7bc81fa034c4609a265f82941 49a84aa060ad36459f47c73f6b938255 00000000000000001f47473feb930255 49a84aa060ad36459f47c73f6b938255 fpsr=00000000
+fneg v11.4h, v12.4h 6301eda3c6d6ae3f0ee7c80ba6fbe7af 6ec48bb888cabd8b175a1eb9730b5474 0000000000000000975a9eb9f30bd474 6ec48bb888cabd8b175a1eb9730b5474 fpsr=00000000
+fneg v12.4h, v13.4h 5332d25c32c5ba58b4353d152095212d b416549ca745513e432fc4285cd110a0 0000000000000000c32f4428dcd190a0 b416549ca745513e432fc4285cd110a0 fpsr=00000000
+fneg v13.4h, v14.4h 5384b32f8f3b8682773a52fa547819c9 1b27be9bcf0e10ea2b26bec4a6760425 0000000000000000ab263ec426768425 1b27be9bcf0e10ea2b26bec4a6760425 fpsr=00000000
+fneg v14.4h, v15.4h 74ca84e211d6eb0a36d74814464ff864 11a81a5d949f34be0f03adc6b685bcc3 00000000000000008f032dc636853cc3 11a81a5d949f34be0f03adc6b685bcc3 fpsr=00000000
+fneg v15.4h, v16.4h e4af9be86dd5d64c0ceb13c5d1eaa098 745aafe52d4e95afc5e0452688866081 000000000000000045e0c5260886e081 745aafe52d4e95afc5e0452688866081 fpsr=00000000
+fneg v16.4h, v17.4h 6ca1ddb8d6cd6d2c4fb273a0cd3c812c 373421adb82c509d1ec822a5ece5c289 00000000000000009ec8a2a56ce54289 373421adb82c509d1ec822a5ece5c289 fpsr=00000000
+fneg v17.4h, v18.4h 10d7c5b28d562b256781909d84c0aa9d 46460db99b03be371a30d4eab7a31d80 00000000000000009a3054ea37a39d80 46460db99b03be371a30d4eab7a31d80 fpsr=00000000
+fneg v18.4h, v19.4h 7361b239c6bb60a5a217767ce154cea9 cc44f62a37cf1caff1f748e7608cea69 000000000000000071f7c8e7e08c6a69 cc44f62a37cf1caff1f748e7608cea69 fpsr=00000000
+fneg v19.4h, v20.4h 779e84ad615eec0be2d4069ac35bccaf ab8dbd606ef04866847d5cfdc7fd0aa5 0000000000000000047ddcfd47fd8aa5 ab8dbd606ef04866847d5cfdc7fd0aa5 fpsr=00000000
+fneg v20.4h, v21.4h faef1b6d3e9faeb805191e590b328610 c18140ba1ec724bbb323f18bcc585d93 00000000000000003323718b4c58dd93 c18140ba1ec724bbb323f18bcc585d93 fpsr=00000000
+fneg v21.4h, v22.4h ddb257d93ddc870bec459f189a3bda2b ef81609828b38e0f5e48e7f24efcc394 0000000000000000de4867f2cefc4394 ef81609828b38e0f5e48e7f24efcc394 fpsr=00000000
+fneg v22.4h, v23.4h 014a17513d78586477b968384ed5a960 ec8710ffca0f332b11c008e3680e1a99 000000000000000091c088e3e80e9a99 ec8710ffca0f332b11c008e3680e1a99 fpsr=00000000
+fneg v23.4h, v24.4h e908aced0955b67f0687e52afa0e634c 8672a7e7c4465daaf8f65719a83e389a 000000000000000078f6d719283eb89a 8672a7e7c4465daaf8f65719a83e389a fpsr=00000000
+fneg v24.4h, v25.4h 0fe3752eb1ff58a1861eb21a19a74fe1 a9c336c50a395257af7f3b990dccb85e 00000000000000002f7fbb998dcc385e a9c336c50a395257af7f3b990dccb85e fpsr=00000000
+fneg v25.4h, v26.4h 3d7a4b24a470f9f173e45012a639beb8 8c68cb2fd20abe8a89d0e8fb196c32bd 000000000000000009d068fb996cb2bd 8c68cb2fd20abe8a89d0e8fb196c32bd fpsr=00000000
+fneg v26.4h, v27.4h 112c822868c37a032a491ddea25f98ca 503de8a6c4fe95ab18b9bbe926001e1a 000000000000000098b93be9a6009e1a 503de8a6c4fe95ab18b9bbe926001e1a fpsr=00000000
+fneg v27.4h, v28.4h 8e43a9cdb03e91d8e29887d09eee2923 c2a7a387d167f282db5771c6a6c0162d 00000000000000005b57f1c626c0962d c2a7a387d167f282db5771c6a6c0162d fpsr=00000000
+fneg v28.4h, v29.4h 64c3c8f31496c86c724e30e7e800c13d 3787daa35552ae5a03aa438878d134f0 000000000000000083aac388f8d1b4f0 3787daa35552ae5a03aa438878d134f0 fpsr=00000000
+fneg v29.4h, v30.4h caa63a35caddc516f6dcf26ea833a380 f4625db36342a8a1d76c2693f81c1435 0000000000000000576ca693781c9435 f4625db36342a8a1d76c2693f81c1435 fpsr=00000000
+fneg v30.4h, v31.4h a04de2f3b3706a364da1adc6bee7b14f d9980d18db98c1b637fefb450700975d 0000000000000000b7fe7b458700175d d9980d18db98c1b637fefb450700975d fpsr=00000000
+
+FSQRT <Hd>, <Hn>
+
+fsqrt h0, h1 c68aca319cb4d9f902bfa00083dd9dc7 9d471b3c57b1d30768629292c9db4f6a 00000000000000000000000000004572 9d471b3c57b1d30768629292c9db4f6a fpsr=00000000
+fsqrt h1, h2 9a97735e88f4d0cb190ff6244d1406d4 4226770a9361f5f7878c194b150f1525 00000000000000000000000000002889 4226770a9361f5f7878c194b150f1525 fpsr=00000000
+fsqrt h2, h3 d6091249c74400d7725ed1c8f0481370 7b840e765d66da99acdf34244b0e8055 00000000000000000000000000007e00 7b840e765d66da99acdf34244b0e8055 fpsr=00000000
+fsqrt h3, h4 fb20e315c8fb07e70dd889d1d3231792 4723be200657ae56e61dddc13e915188 000000000000000000000000000046a7 4723be200657ae56e61dddc13e915188 fpsr=00000000
+fsqrt h4, h5 d03b289e3c3ff5aebcc979eb4cc0857e 7b5edb5f59ede021ed6bb64500ed06de 0000000000000000000000000000213e 7b5edb5f59ede021ed6bb64500ed06de fpsr=00000000
+fsqrt h5, h6 35b9c2430170a98b5f9282753b7f3f95 a49ce48e093f64703205c653c448cd3f 00000000000000000000000000007e00 a49ce48e093f64703205c653c448cd3f fpsr=00000000
+fsqrt h6, h7 a24e0f0b2d2e8cc2d8281af14681b732 477280550d50719989722807d7da346f 00000000000000000000000000003836 477280550d50719989722807d7da346f fpsr=00000000
+fsqrt h7, h8 268c6b7e9b93d19b5bba58e8e1c927ad e814fa73cafac05ff19e1f8211469119 00000000000000000000000000007e00 e814fa73cafac05ff19e1f8211469119 fpsr=00000000
+fsqrt h8, h9 543ce1c67875a052c96df6ed4258c7f1 3c235c46486e774b773bc5de6d4be1a4 00000000000000000000000000007e00 3c235c46486e774b773bc5de6d4be1a4 fpsr=00000000
+fsqrt h9, h10 40cd368d6fe2effe9103811c125d722a 60d654755910358f31f0c3eb80b1bc99 00000000000000000000000000007e00 60d654755910358f31f0c3eb80b1bc99 fpsr=00000000
+fsqrt h10, h11 e746f8ab0d097917737d018a5a5442f2 de903629eb7cbad3152d3a84abc48154 00000000000000000000000000007e00 de903629eb7cbad3152d3a84abc48154 fpsr=00000000
+fsqrt h11, h12 6c8176edb6c5581f565b93f3b9ed4db6 4697db8c52f4167c568b8b1e79013133 00000000000000000000000000003673 4697db8c52f4167c568b8b1e79013133 fpsr=00000000
+randV128: 1280 calls, 1728 iters
+fsqrt h12, h13 c0326f92f544c1d108fce825a42f83af a68d649fc70626c80d0d8d0892c2b18a 00000000000000000000000000007e00 a68d649fc70626c80d0d8d0892c2b18a fpsr=00000000
+fsqrt h13, h14 b81f1215993282e86afab6f843810006 476c5525b4923838ce1803aed8154112 00000000000000000000000000003e5e 476c5525b4923838ce1803aed8154112 fpsr=00000000
+fsqrt h14, h15 cb8031fa86b43909168c67920408af40 9a16de5b42f1a65873f0f00d63a6676f 00000000000000000000000000005174 9a16de5b42f1a65873f0f00d63a6676f fpsr=00000000
+fsqrt h15, h16 17c226b34c5a34a7bf8dccb0df52264b 91b4903cf39777fa3947b33c7b4a36ca 00000000000000000000000000003936 91b4903cf39777fa3947b33c7b4a36ca fpsr=00000000
+fsqrt h16, h17 e580bf97431ccd971a2a3c5bc4587782 a12601952d994b954b7415edc1b34343 00000000000000000000000000003f9f a12601952d994b954b7415edc1b34343 fpsr=00000000
+fsqrt h17, h18 07c8246527734c8517ad25579f1dbf63 e97bc65213f5b386370943be44abcd00 00000000000000000000000000007e00 e97bc65213f5b386370943be44abcd00 fpsr=00000000
+fsqrt h18, h19 42e9f57daed1254c33a14ac880f3b84c 1db872d7196f03f22f8b5194f876a7a4 00000000000000000000000000007e00 1db872d7196f03f22f8b5194f876a7a4 fpsr=00000000
+fsqrt h19, h20 1c82218811983fe514d246fd45c42814 1b8f4c06c1c6d81e6d774ce2ab8513a4 000000000000000000000000000027d1 1b8f4c06c1c6d81e6d774ce2ab8513a4 fpsr=00000000
+fsqrt h20, h21 7adacbe18b1bc5f06f4ab031a4c41b5e a2e2dc54a10fc7ebe00eaa06ecab2986 000000000000000000000000000032a6 a2e2dc54a10fc7ebe00eaa06ecab2986 fpsr=00000000
+fsqrt h21, h22 18f8cec856cda8c815645ddfc3969d32 e5b4982f8347cc056b4aa489471322d4 00000000000000000000000000002f64 e5b4982f8347cc056b4aa489471322d4 fpsr=00000000
+fsqrt h22, h23 4704a7fd7539a67b6bc4831cc3726064 942fe43c73cad30cccef11def36c92aa 00000000000000000000000000007e00 942fe43c73cad30cccef11def36c92aa fpsr=00000000
+fsqrt h23, h24 b1dd9cae316c95faa7ed4ee26dd6e740 3107b68984d4db389e20d8eec432c40d 00000000000000000000000000007e00 3107b68984d4db389e20d8eec432c40d fpsr=00000000
+fsqrt h24, h25 993af5532e348909ee9a0faaa5e049f6 8f328d6218bb5ae9931869de3b08f20b 00000000000000000000000000007e00 8f328d6218bb5ae9931869de3b08f20b fpsr=00000000
+fsqrt h25, h26 6ab43b0d56205ba781d781d92b430e4f 8d1249270de02f828c37a20e3750fb03 00000000000000000000000000007e00 8d1249270de02f828c37a20e3750fb03 fpsr=00000000
+fsqrt h26, h27 0a04ca3943a33c6069de64df996abe56 a08f7aab0a3b94409750f226f070a8a6 00000000000000000000000000007e00 a08f7aab0a3b94409750f226f070a8a6 fpsr=00000000
+fsqrt h27, h28 e76af0f79c635fe50a6c8fb142b51c63 0b8459738887cd96c3a8bc9a50436de7 000000000000000000000000000054dc 0b8459738887cd96c3a8bc9a50436de7 fpsr=00000000
+fsqrt h28, h29 318dd83a8b4fd9a79525ceed8b34c676 410faaf9335a6b6318bf9fd4e45f2a2c 00000000000000000000000000003307 410faaf9335a6b6318bf9fd4e45f2a2c fpsr=00000000
+fsqrt h29, h30 b3cc19fd2f102933748cb804f98d51ad 63257918bf57a16fa7c611ea378a1cc6 00000000000000000000000000002c5f 63257918bf57a16fa7c611ea378a1cc6 fpsr=00000000
+fsqrt h30, h31 5829ccc78138adcc66eddbf4eacd951b 83f6f8a2042f60654d4908816dd7679e 00000000000000000000000000005185 83f6f8a2042f60654d4908816dd7679e fpsr=00000000
+
+FSQRT <Vd>.<T>, <Vn>.<T>
+
+fsqrt v0.8h, v1.8h d44a6d683c14859187c4b7a9ba659dc0 8a57b9b475c74a9ac7e4f0024fea1ce9 7e007e0058cf43447e007e0045a02c6f 8a57b9b475c74a9ac7e4f0024fea1ce9 fpsr=00000000
+fsqrt v1.8h, v2.8h e1a6b20576e45319660bfabdf251bad7 f15181843ed8573b5e1eb3f400a721a0 7e007e003d3b49614cf27e001a762eb5 f15181843ed8573b5e1eb3f400a721a0 fpsr=00000000
+fsqrt v2.8h, v3.8h a51b48e54cd51e1c6ec0dc41e35981a4 68388c83142e2162a6a7400c41cc403a 51cf7e0028172e907e003db13ecf3dd1 68388c83142e2162a6a7400c41cc403a fpsr=00000000
+fsqrt v3.8h, v4.8h 753d505c0ab09ee1b8d82f6a47ac22b0 57392c71721ca7ec07dc3d60ae9fe86f 4960343756fe7e00219b3ca37e007e00 57392c71721ca7ec07dc3d60ae9fe86f fpsr=00000000
+fsqrt v4.8h, v5.8h d5c2adf11b78e6bdf5c89b0321220fe6 8e361a535a0e6be515814afcc8ac5227 7e002b1d4af653f228b1437a7e004704 8e361a535a0e6be515814afcc8ac5227 fpsr=00000000
+fsqrt v5.8h, v6.8h ed8f348aac664eacaff4484170525fc1 f13bc7738256418b76fa9831407c1991 7e007e007e003ea959487e003dfd2aac f13bc7738256418b76fa9831407c1991 fpsr=00000000
+fsqrt v6.8h, v7.8h 5838978548d16d6bf9832414c3af14ec 7011e9fc977a579b4599434661bc9e12 55b47e007e00498440bb3fa14ec67e00 7011e9fc977a579b4599434661bc9e12 fpsr=00000000
+fsqrt v7.8h, v8.8h 544da1105bccb1693018eb4b1e0dca8a 4632e74945f33bead1f79073408676e6 40fa7e0040e13bf57e007e003e045941 4632e74945f33bead1f79073408676e6 fpsr=00000000
+fsqrt v8.8h, v9.8h 54fea2bb6e22ced7f8755d1abc38816c c34f179ed96993791434ccb7eb81b08f 7e0029857e007e00281a7e007e007e00 c34f179ed96993791434ccb7eb81b08f fpsr=00000000
+fsqrt v9.8h, v10.8h 7bd6fab1f066f1c39b728b98b7359f05 e209d1bd35a2e4bb69102ed3e89ebea3 7e007e0038bf7e00525d353a7e007e00 e209d1bd35a2e4bb69102ed3e89ebea3 fpsr=00000000
+fsqrt v10.8h, v11.8h b1c6009702681bb3d263c8fe7b7d3782 012339f9fa9ea4e2b47820294273b14b 1c443aea7e007e007e002dc53f2f7e00 012339f9fa9ea4e2b47820294273b14b fpsr=00000000
+fsqrt v11.8h, v12.8h 3c59dcc3166cba001e7254415aa8ce6d 3d616f6e5273703c2b251ae55aa12bfd 3ca35574472f55d2338f2b6d4b4833fe 3d616f6e5273703c2b251ae55aa12bfd fpsr=00000000
+fsqrt v12.8h, v13.8h a49b6129882f18d10b5aef24abfed6d5 31ff6f3a14e08a109ffc5653bc8638c0 36ed5560286a7e007e0049087e003a2a 31ff6f3a14e08a109ffc5653bc8638c0 fpsr=00000000
+fsqrt v13.8h, v14.8h 55d2e8525cc0762696d2924eeb23e01a abc8640652ae595ea822c0efc24c75d6 7e005003474f4a8d7e007e007e0058d5 abc8640652ae595ea822c0efc24c75d6 fpsr=00000000
+fsqrt v14.8h, v15.8h f97ab12b2ba45a7de821105e3894cf53 082cc900a58919e51e439bf94068375f 21c77e007e002ade2d017e003df0396e 082cc900a58919e51e439bf94068375f fpsr=00000000
+fsqrt v15.8h, v16.8h 9ab4503ea7a83efbd0ea437cc5935023 e526e8ea7278511ee4c699ab27a603eb 7e007e00573246667e007e0031881feb e526e8ea7278511ee4c699ab27a603eb fpsr=00000000
+fsqrt v16.8h, v17.8h 9a349e40d527781e1631a8850d52596d 43e19344a0160660602c934a5f319dc7 3ff07e007e00210d4dc77e004d5d7e00 43e19344a0160660602c934a5f319dc7 fpsr=00000000
+fsqrt v17.8h, v18.8h 2f0267ce739b46a7b3fd525ab02c337e 029e80085846604c3e4ebfaa2cb6152d 1e797e0049d94ddd3d067e003457288d 029e80085846604c3e4ebfaa2cb6152d fpsr=00000000
+fsqrt v18.8h, v19.8h fbe9d859891712b1b35914e7e42a7a71 5d4b2274ebe468fb5486cc410e1801e6 4c9a2f2f7e00525048417e0024f01d83 5d4b2274ebe468fb5486cc410e1801e6 fpsr=00000000
+fsqrt v19.8h, v20.8h e9cdab2bb169e9ce39f9a86d69613a92 8aed8c8368ede101ec9d3c3e779a80f9 7e007e0052477e007e003c1f59847e00 8aed8c8368ede101ec9d3c3e779a80f9 fpsr=00000000
+fsqrt v20.8h, v21.8h 456b8bb56e4498c148387a3e59326169 4f64754589366d561fb31cf3e37509c5 457058977e00549f2d8d2c737e0022cb 4f64754589366d561fb31cf3e37509c5 fpsr=00000000
+fsqrt v21.8h, v22.8h 7b77ca9c542457b91dd92e901c2a76b3 a097a85aa041bdc22f9182dd81e819c9 7e007e007e007e0035807e007e002ace a097a85aa041bdc22f9182dd81e819c9 fpsr=00000000
+fsqrt v22.8h, v23.8h d90399e9dae54146d80143fbf733e392 3bcee14c0640be80f87a1d846ed595d5 3be77e0021007e007e002cb2553a7e00 3bcee14c0640be80f87a1d846ed595d5 fpsr=00000000
+fsqrt v23.8h, v24.8h 2e1317db718f10f9a16847995c1fcc0c ca15c8ed1505ee21d5776119143daa31 7e007e00287b7e007e004e63281e7e00 ca15c8ed1505ee21d5776119143daa31 fpsr=00000000
+fsqrt v24.8h, v25.8h 016ff3a23f54a1c8fb0e617f68642b80 3bf48ba2d61af696e18c2239490ddcba 3bfa7e007e007e007e002f0e425b7e00 3bf48ba2d61af696e18c2239490ddcba fpsr=00000000
+fsqrt v25.8h, v26.8h 08a6b8d1064a9e3ad001994e59389c1a 94e1f4cffaf12c9a9dc130995c8eed66 7e007e007e00344a7e0036114c457e00 94e1f4cffaf12c9a9dc130995c8eed66 fpsr=00000000
+fsqrt v26.8h, v27.8h 8b7887b6f63ea182e21280c5b35ebc79 e6361aaa2010089529bb688260dce41f 7e002b4d2db3220e32c552014e3c7e00 e6361aaa2010089529bb688260dce41f fpsr=00000000
+fsqrt v27.8h, v28.8h e49534af27175e15e16107dbd5a6606d 99d581b2e320cdf781478d9a43ec0c35 7e007e007e007e007e007e003ff6241a 99d581b2e320cdf781478d9a43ec0c35 fpsr=00000000
+fsqrt v28.8h, v29.8h 04a0245f9f65c076f574b3ab4566e87e 04130360427a62305f23dc1e1768efe3 20091f593f334f094d587e0029717e00 04130360427a62305f23dc1e1768efe3 fpsr=00000000
+fsqrt v29.8h, v30.8h 6793c6d7194320f1e0b3c777e933db0c 8b6449ea491c338e64793ba0751cf7cd 7e0042e1426537c6503b3bcf58857e00 8b6449ea491c338e64793ba0751cf7cd fpsr=00000000
+fsqrt v30.8h, v31.8h b12f76631b32bd41aed1633909582ad6 83e5ef0298c3535817fa1ee38ba609b7 7e007e007e0047aa29a62d407e0022c3 83e5ef0298c3535817fa1ee38ba609b7 fpsr=00000000
+fsqrt v0.4h, v1.4h c445f26226a6187fa7df90c35736bba3 fa795a662907aa69ae038ac60802d7fc 00000000000000007e007e0021aa7e00 fa795a662907aa69ae038ac60802d7fc fpsr=00000000
+fsqrt v1.4h, v2.4h 872e250c87472c2806c0a709ab26e38e 9aeff8e48c664ff3f48fa86ec0e2ba54 00000000000000007e007e007e007e00 9aeff8e48c664ff3f48fa86ec0e2ba54 fpsr=00000000
+fsqrt v2.4h, v3.4h 1f6bf81b2645b6018b0ac3f1a0bd60a8 8c6ac68f9ea00bc7aa9753c913bdfa7d 00000000000000007e0047e427de7e00 8c6ac68f9ea00bc7aa9753c913bdfa7d fpsr=00000000
+fsqrt v3.4h, v4.4h 7611035293dbb3cdb74b8d512c891fe8 6da299f279b631fc9c3e4bba0d306dbf 00000000000000007e0043dd248e54cb 6da299f279b631fc9c3e4bba0d306dbf fpsr=00000000
+fsqrt v4.4h, v5.4h 448b0100f58a3193ea534c3f4d54fb02 325d1ceb2f11d87bf6eadc2d3d476aa8 00000000000000007e007e003c98534c 325d1ceb2f11d87bf6eadc2d3d476aa8 fpsr=00000000
+fsqrt v5.4h, v6.4h 43c51e6768628f085cafcca94707b6da 3776619e0d5aca932d5ae16eeddcc289 000000000000000034a07e007e007e00 3776619e0d5aca932d5ae16eeddcc289 fpsr=00000000
+fsqrt v6.4h, v7.4h 8cd8dc081b67f5355e943c9eefb134c0 8293494f21fca67ee9454ce8204f7852 00000000000000007e00446e2ddf59e1 8293494f21fca67ee9454ce8204f7852 fpsr=00000000
+fsqrt v7.4h, v8.4h 9c54c65cc8cc8abfd94811120823b885 ed2955df375631a25058f0b2bd374aa8 000000000000000045e57e007e00434c ed2955df375631a25058f0b2bd374aa8 fpsr=00000000
+fsqrt v8.4h, v9.4h 6617b826e12955b7ddc20e4d86b96483 5319f39f9ecac7852d8ab81fe32b187b 000000000000000034b57e007e0029fd 5319f39f9ecac7852d8ab81fe32b187b fpsr=00000000
+fsqrt v9.4h, v10.4h 09d6d8d885aff022b22bcec66697e83d e0e63a5c5c94bb02074b769dba030784 0000000000000000216759257e00217c e0e63a5c5c94bb02074b769dba030784 fpsr=00000000
+fsqrt v10.4h, v11.4h c11ccb19d2b368a946d06f7c6a6421d3 f48af22d1951e72f690496f69de3b8ce 000000000000000052567e007e007e00 f48af22d1951e72f690496f69de3b8ce fpsr=00000000
+fsqrt v11.4h, v12.4h 896d49ea72f8f2dfd2e519c3681f9ec3 ea41e60b86ce74605bfb073f1283795e 00000000000000004bfd216227385a8d ea41e60b86ce74605bfb073f1283795e fpsr=00000000
+fsqrt v12.4h, v13.4h 1a3994301bc23c0389e954d394935db6 5f0b9f3435e839d6307a0128ecf5f449 000000000000000035fc1c4d7e007e00 5f0b9f3435e839d6307a0128ecf5f449 fpsr=00000000
+fsqrt v13.4h, v14.4h 53861ef4365dab7a38013545f68ff409 a9519fc481a9a0eea5a8b334dd794614 00000000000000007e007e007e0040ee a9519fc481a9a0eea5a8b334dd794614 fpsr=00000000
+randV128: 1536 calls, 2067 iters
+fsqrt v14.4h, v15.4h 72b0b8f1a8f12219c85df7728a9ac8e5 3a43017b120053c576502975eb08ee5e 00000000000000005906329b7e007e00 3a43017b120053c576502975eb08ee5e fpsr=00000000
+fsqrt v15.4h, v16.4h b476b35703f8f0f1eb3fc28fd068aefb 8377d12725708809765a434867421e57 0000000000000000590a3fa251632d09 8377d12725708809765a434867421e57 fpsr=00000000
+fsqrt v16.4h, v17.4h 435ec7c1a9cb706003f7df7ab3e6d16b ada181a18ad9d09f6709d94ed44591d5 0000000000000000514e7e007e007e00 ada181a18ad9d09f6709d94ed44591d5 fpsr=00000000
+fsqrt v17.4h, v18.4h 7a30b9bfe71c46956bf33b64ddb3f772 69d08752515fa192d8b248ad4c876c1e 00000000000000007e00421e4441540f 69d08752515fa192d8b248ad4c876c1e fpsr=00000000
+fsqrt v18.4h, v19.4h 4eddaffabac1d2bd400641bd53b338f3 b9f8b9bac9d462a96eb18a806646c2a4 0000000000000000552c7e0051027e00 b9f8b9bac9d462a96eb18a806646c2a4 fpsr=00000000
+fsqrt v19.4h, v20.4h 9630e571ed391d0e3a673b3de33d9c62 b0fa97f72c2ec20e10003c7b8f1e3c8c 000000000000000025a83c3c7e003c44 b0fa97f72c2ec20e10003c7b8f1e3c8c fpsr=00000000
+fsqrt v20.4h, v21.4h ae26b044b2de6fb568e08d6d2a278b3b 2f39036958cea0229efd40fea670b837 00000000000000007e003e527e007e00 2f39036958cea0229efd40fea670b837 fpsr=00000000
+fsqrt v21.4h, v22.4h 7620f0d4e811a713aad018ae06d3e4df 1613db6e2e13de44f80a746a8a9c1804 00000000000000007e0058347e0029ab 1613db6e2e13de44f80a746a8a9c1804 fpsr=00000000
+fsqrt v22.4h, v23.4h ce7d85807031a787e098bc6058a089ac 56efc6eff999a7571c2aee70b3922d51 00000000000000002c157e007e00349d 56efc6eff999a7571c2aee70b3922d51 fpsr=00000000
+fsqrt v23.4h, v24.4h 9c31822c6aaac4ded2c45b77c85515a2 aee22eadf7ba7b32a72dcf93dd1f3247 00000000000000007e007e007e003716 aee22eadf7ba7b32a72dcf93dd1f3247 fpsr=00000000
+fsqrt v24.4h, v25.4h 13dedbcdf7269287993b3fa461ed52bb e1d712331df72e6e1d71c3eab80ee227 00000000000000002caa7e007e007e00 e1d712331df72e6e1d71c3eab80ee227 fpsr=00000000
+fsqrt v25.4h, v26.4h a5fdc463222aa8a4915159eab147f2f5 e87b05bcbd7e79f33cc7c8a8ad19a545 00000000000000003c5f7e007e007e00 e87b05bcbd7e79f33cc7c8a8ad19a545 fpsr=00000000
+fsqrt v26.4h, v27.4h 787170ff1018f127682d4ad92f00b640 062b95cbb71a5477d79c2e3e206d7b76 00000000000000007e0034ff2df35bba 062b95cbb71a5477d79c2e3e206d7b76 fpsr=00000000
+fsqrt v27.4h, v28.4h 8bb8a0a8016332b0e3518329d34af5a6 1c46a1bdeb2b9d59ce50d50df06b4419 00000000000000007e007e007e00400c 1c46a1bdeb2b9d59ce50d50df06b4419 fpsr=00000000
+fsqrt v28.4h, v29.4h c9611cde37959b4cd91e5db77abc3411 d8eaf997f07414df561343ef2337b325 000000000000000048ee3ff72f997e00 d8eaf997f07414df561343ef2337b325 fpsr=00000000
+fsqrt v29.4h, v30.4h 901c0d6900edf86a0158413c5196da3d ee75320989cf2631c75a810f33800fea 00000000000000007e007e0037bf25a0 ee75320989cf2631c75a810f33800fea fpsr=00000000
+fsqrt v30.4h, v31.4h d696144656b55795b629c3ab5ea13ec3 111eab69783527c0ccd64ec77b5e309b 00000000000000007e0045355bad3612 111eab69783527c0ccd64ec77b5e309b fpsr=00000000