From: Assad Hashmi Date: Fri, 29 Jan 2021 13:38:40 +0000 (-0500) Subject: Bug 432161 Addition of arm64 v8.2 FADDP, FNEG and FSQRT X-Git-Tag: VALGRIND_3_17_0~69 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7593a4773997807695d6514e9d01a60cb489851c;p=thirdparty%2Fvalgrind.git Bug 432161 Addition of arm64 v8.2 FADDP, FNEG and FSQRT This patch adds FP half-precision support for the following: FABS , FABS ., . FNEG , FNEG ., . FSQRT , FSQRT ., . Fixes https://bugs.kde.org/show_bug.cgi?id=432161 --- diff --git a/VEX/priv/guest_arm64_toIR.c b/VEX/priv/guest_arm64_toIR.c index 89231be29d..6c9762e5c6 100644 --- a/VEX/priv/guest_arm64_toIR.c +++ b/VEX/priv/guest_arm64_toIR.c @@ -580,6 +580,7 @@ static IROp mkDIVF ( IRType ty ) { 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"); @@ -588,6 +589,7 @@ static IROp mkNEGF ( IRType ty ) { 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"); @@ -596,6 +598,7 @@ static IROp mkABSF ( IRType ty ) { 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"); @@ -13491,6 +13494,58 @@ Bool dis_AdvSIMD_two_reg_misc(/*MB_OUT*/DisResult* dres, UInt insn) } +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) { @@ -14296,12 +14351,16 @@ Bool dis_AdvSIMD_fp_data_proc_1_source(/*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 = "??"; @@ -14312,7 +14371,7 @@ Bool dis_AdvSIMD_fp_data_proc_1_source(/*MB_OUT*/DisResult* dres, UInt insn) 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), @@ -15090,6 +15149,8 @@ Bool dis_ARM64_simd_and_fp(/*MB_OUT*/DisResult* dres, UInt insn, 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); diff --git a/VEX/priv/host_arm64_defs.c b/VEX/priv/host_arm64_defs.c index e6b06e5fbe..4423ced3e2 100644 --- a/VEX/priv/host_arm64_defs.c +++ b/VEX/priv/host_arm64_defs.c @@ -748,8 +748,10 @@ static void showARM64VecUnaryOp(/*OUT*/const HChar** nm, 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; @@ -777,6 +779,7 @@ static void showARM64VecUnaryOp(/*OUT*/const HChar** nm, 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"); } } @@ -1173,6 +1176,14 @@ ARM64Instr* ARM64Instr_VUnaryS ( ARM64FpUnaryOp op, HReg dst, HReg src ) { 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)); @@ -1811,6 +1822,12 @@ void ppARM64Instr ( const ARM64Instr* i ) { 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); @@ -2283,6 +2300,10 @@ void getRegUsage_ARM64Instr ( HRegUsage* u, const ARM64Instr* i, Bool mode64 ) 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); @@ -2557,6 +2578,10 @@ void mapRegs_ARM64Instr ( HRegRemap* m, ARM64Instr* i, Bool mode64 ) 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); @@ -2862,6 +2887,7 @@ static inline UInt qregEnc ( HReg r ) #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) @@ -4505,6 +4531,35 @@ Int emit_ARM64Instr ( /*MB_MOD*/Bool* is_profInc, } 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 -------- @@ -5291,8 +5346,10 @@ Int emit_ARM64Instr ( /*MB_MOD*/Bool* is_profInc, /* 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 @@ -5330,16 +5387,23 @@ Int emit_ARM64Instr ( /*MB_MOD*/Bool* is_profInc, 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; @@ -5427,6 +5491,9 @@ Int emit_ARM64Instr ( /*MB_MOD*/Bool* is_profInc, 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; } diff --git a/VEX/priv/host_arm64_defs.h b/VEX/priv/host_arm64_defs.h index 8cece7b9c5..6c35c4c5aa 100644 --- a/VEX/priv/host_arm64_defs.h +++ b/VEX/priv/host_arm64_defs.h @@ -423,8 +423,8 @@ typedef 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, @@ -439,7 +439,7 @@ typedef ARM64vecu_URSQRTE32x4, ARM64vecu_FRECPE64x2, ARM64vecu_FRECPE32x4, ARM64vecu_FRSQRTE64x2, ARM64vecu_FRSQRTE32x4, - ARM64vecu_FSQRT64x2, ARM64vecu_FSQRT32x4, + ARM64vecu_FSQRT64x2, ARM64vecu_FSQRT32x4, ARM64vecu_FSQRT16x8, ARM64vecu_INVALID } ARM64VecUnaryOp; @@ -524,6 +524,7 @@ typedef ARM64in_VCvtHD, /* scalar 16 bit FP <--> 64 bit FP */ ARM64in_VUnaryD, ARM64in_VUnaryS, + ARM64in_VUnaryH, ARM64in_VBinD, ARM64in_VBinS, ARM64in_VTriD, @@ -824,6 +825,12 @@ typedef 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; @@ -1025,6 +1032,7 @@ extern ARM64Instr* ARM64Instr_VCvtHS ( Bool hToS, HReg dst, HReg src ); 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, diff --git a/VEX/priv/host_arm64_isel.c b/VEX/priv/host_arm64_isel.c index 8c090c37e1..1e5ce70674 100644 --- a/VEX/priv/host_arm64_isel.c +++ b/VEX/priv/host_arm64_isel.c @@ -2456,8 +2456,8 @@ static HReg iselV128Expr_wrk ( ISelEnv* env, IRExpr* e ) /* 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: @@ -2481,8 +2481,10 @@ static HReg iselV128Expr_wrk ( ISelEnv* env, IRExpr* e ) 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; @@ -2592,14 +2594,19 @@ static HReg iselV128Expr_wrk ( ISelEnv* env, IRExpr* e ) 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; } @@ -3694,6 +3701,25 @@ static HReg iselF16Expr_wrk ( ISelEnv* env, IRExpr* e ) } } + 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: { @@ -3710,6 +3736,13 @@ static HReg iselF16Expr_wrk ( ISelEnv* env, IRExpr* e ) 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; } diff --git a/VEX/priv/ir_defs.c b/VEX/priv/ir_defs.c index 2734776f5b..9940903b3a 100644 --- a/VEX/priv/ir_defs.c +++ b/VEX/priv/ir_defs.c @@ -342,8 +342,11 @@ void ppIROp ( IROp op ) 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; @@ -688,6 +691,7 @@ void ppIROp ( IROp op ) 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; @@ -698,6 +702,7 @@ void ppIROp ( IROp op ) 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; @@ -743,6 +748,7 @@ void ppIROp ( IROp op ) 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; @@ -1556,6 +1562,7 @@ Bool primopMightTrap ( IROp op ) 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: @@ -3331,6 +3338,9 @@ void typeOfPrimop ( IROp op, 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); @@ -3340,6 +3350,9 @@ void typeOfPrimop ( IROp op, 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); @@ -3425,13 +3438,14 @@ void typeOfPrimop ( IROp op, 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); @@ -3632,7 +3646,7 @@ void typeOfPrimop ( IROp op, 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: diff --git a/VEX/pub/libvex_ir.h b/VEX/pub/libvex_ir.h index 8d924b3b4e..a74e3ac5d5 100644 --- a/VEX/pub/libvex_ir.h +++ b/VEX/pub/libvex_ir.h @@ -592,6 +592,9 @@ typedef /* :: F32 -> F32 */ Iop_NegF32, Iop_AbsF32, + /* :: F16 -> F16 */ + Iop_NegF16, Iop_AbsF16, + /* Unary operations, with rounding. */ /* :: IRRoundingMode(I32) x F64 -> F64 */ Iop_SqrtF64, @@ -599,6 +602,9 @@ typedef /* :: 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 @@ -1366,10 +1372,13 @@ typedef 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 diff --git a/memcheck/mc_translate.c b/memcheck/mc_translate.c index 91f23ed60e..288895dea2 100644 --- a/memcheck/mc_translate.c +++ b/memcheck/mc_translate.c @@ -2705,6 +2705,15 @@ IRAtom* binary16Fx8 ( MCEnv* mce, IRAtom* vatomX, IRAtom* vatomY ) 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. */ @@ -2884,6 +2893,20 @@ IRAtom* unary32Fx4_w_rm ( MCEnv* mce, IRAtom* vRM, IRAtom* vatomX ) 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 @@ -3752,6 +3775,8 @@ IRAtom* expr2vbits_Binop ( MCEnv* mce, 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: @@ -4403,6 +4428,10 @@ IRAtom* expr2vbits_Binop ( MCEnv* mce, /* 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: @@ -5017,6 +5046,10 @@ IRExpr* expr2vbits_Unop ( MCEnv* mce, IROp op, IRAtom* atom ) 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: @@ -5104,6 +5137,10 @@ IRExpr* expr2vbits_Unop ( MCEnv* mce, IROp op, IRAtom* atom ) 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); diff --git a/memcheck/tests/vbit-test/irops.c b/memcheck/tests/vbit-test/irops.c index 39939b711d..9ac2927871 100644 --- a/memcheck/tests/vbit-test/irops.c +++ b/memcheck/tests/vbit-test/irops.c @@ -210,9 +210,12 @@ static irop_t irops[] = { { 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 }, @@ -630,12 +633,15 @@ static irop_t irops[] = { { 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), }, diff --git a/none/tests/arm64/fp_and_simd_v82.c b/none/tests/arm64/fp_and_simd_v82.c index 1878fbd0b6..90fbf5d202 100644 --- a/none/tests/arm64/fp_and_simd_v82.c +++ b/none/tests/arm64/fp_and_simd_v82.c @@ -2228,6 +2228,305 @@ GEN_THREEVEC_TEST(faddp_4h_27_28_29, "faddp v27.4h, v28.4h, v29.4h", 27, 28, 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 , + +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 ., . + +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 , + +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 ., . + +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 , + +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 ., . + +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() -- */ @@ -2335,13 +2634,320 @@ int main ( void ) if (1) test_faddp_4h_28_29_30(TyH); if (1) test_faddp_4h_29_30_31(TyH); + printf("\nFABS , \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 ., .\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 , \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 ., .\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 , \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 ., .\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 , . Floating-point Add Pair of elements (scalar). FADDP ., ., . Floating-point Add Pairwise (vector). + FABS , Floating-point Absolute value (scalar). + FABS ., . Floating-point Absolute value (vector). + FNEG , Floating-point Negate (scalar). + FNEG ., . Floating-point Negate (vector). + FSQRT , Floating-point Square Root (scalar). + FSQRT ., . Floating-point Square Root (vector). */ diff --git a/none/tests/arm64/fp_and_simd_v82.stdout.exp b/none/tests/arm64/fp_and_simd_v82.stdout.exp index 1dd9e8c6b0..f2c1975a21 100644 --- a/none/tests/arm64/fp_and_simd_v82.stdout.exp +++ b/none/tests/arm64/fp_and_simd_v82.stdout.exp @@ -96,3 +96,305 @@ faddp v26.4h, v27.4h, v28.4h 1c7493622cfa2597b6855d5cd44e174a 868b2e22d97fdd6 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 , + +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 ., . + +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 , + +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 ., . + +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 , + +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 ., . + +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