]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Bug 431556 - Complete arm64 FADDP v8.2 instruction support started in 413547.
authorJulian Seward <jseward@acm.org>
Fri, 15 Jan 2021 17:46:00 +0000 (18:46 +0100)
committerJulian Seward <jseward@acm.org>
Fri, 15 Jan 2021 17:46:00 +0000 (18:46 +0100)
Patch from/by Assad Hashmi (assad.hashmi@linaro.org).

VEX/priv/guest_arm64_defs.h
VEX/priv/guest_arm64_toIR.c
none/tests/arm64/fp_and_simd_v82.c
none/tests/arm64/fp_and_simd_v82.stdout.exp

index b2094d61fbce8c91224395ae8e76bb05610ec6f4..a8d1685510908483c965655d0c71051f363c9989 100644 (file)
@@ -301,6 +301,17 @@ typedef
    }
    ARM64Condcode;
 
+/* Vector element size specifiers */
+
+typedef
+   enum {
+      ARM64VSizeH = 0, /* 16 bits (integer halfword or half-precision FP)    */
+      ARM64VSizeS = 1, /* 32 bits (integer shortword or single-precision FP) */
+      ARM64VSizeD = 2  /* 64 bits (integer word or double-precision FP)      */
+   }
+   ARM64VecESize;
+
+
 #endif /* ndef __VEX_GUEST_ARM64_DEFS_H */
 
 /*---------------------------------------------------------------*/
index a296565591353ff1907a9b95edc3e7099e7a1fec..89231be29d01fe3c257da8a179fc43b457bb81a7 100644 (file)
@@ -8855,50 +8855,78 @@ void updateQCFLAGwithDifference ( IRTemp qres, IRTemp nres )
 
 
 /* Generate IR to rearrange two vector values in a way which is useful
-   for doing S/D add-pair etc operations.  There are 3 cases:
+   for doing S/D/H add-pair etc operations.  There are 5 cases:
 
    2d:  [m1 m0] [n1 n0]  -->  [m1 n1] [m0 n0]
 
    4s:  [m3 m2 m1 m0] [n3 n2 n1 n0]  -->  [m3 m1 n3 n1] [m2 m0 n2 n0]
 
-   2s:  [m2 m2 m1 m0] [n3 n2 n1 n0]  -->  [0 0 m1 n1] [0 0 m0 n0]
+   8h:  [m7 m6 m5 m4 m3 m2 m1 m0] [n7 n6 n5 n4 n3 n2 n1 n0] -->
+        [m7 m5 n7 n5 m3 m1 n3 n1] [m6 m4 n6 n4 m2 m0 n2 n0]
 
-   The cases are distinguished as follows:
-   isD == True,  bitQ == 1  =>  2d
-   isD == False, bitQ == 1  =>  4s
-   isD == False, bitQ == 0  =>  2s
+   2s:  [m3 m2 m1 m0] [n3 n2 n1 n0]  -->  [0 0 m1 n1] [0 0 m0 n0]
+
+   4h:  [m7 m6 m5 m4 m3 m2 m1 m0] [n7 n6 n5 n4 n3 n2 n1 n0] -->
+        [ 0  0  0  0 m3 m1 n3 n1] [ 0  0  0  0 m2 m0 n2 n0]
 */
 static
 void math_REARRANGE_FOR_FLOATING_PAIRWISE (
         /*OUT*/IRTemp* rearrL, /*OUT*/IRTemp* rearrR,
-        IRTemp vecM, IRTemp vecN, Bool isD, UInt bitQ
+        IRTemp vecM, IRTemp vecN, ARM64VecESize sz, UInt bitQ
      )
 {
    vassert(rearrL && *rearrL == IRTemp_INVALID);
    vassert(rearrR && *rearrR == IRTemp_INVALID);
    *rearrL = newTempV128();
    *rearrR = newTempV128();
-   if (isD) {
-      // 2d case
-      vassert(bitQ == 1);
-      assign(*rearrL, binop(Iop_InterleaveHI64x2, mkexpr(vecM), mkexpr(vecN)));
-      assign(*rearrR, binop(Iop_InterleaveLO64x2, mkexpr(vecM), mkexpr(vecN)));
-   }
-   else if (!isD && bitQ == 1) {
-      // 4s case
-      assign(*rearrL, binop(Iop_CatOddLanes32x4,  mkexpr(vecM), mkexpr(vecN)));
-      assign(*rearrR, binop(Iop_CatEvenLanes32x4, mkexpr(vecM), mkexpr(vecN)));
-   } else {
-      // 2s case
-      vassert(!isD && bitQ == 0);
-      IRTemp m1n1m0n0 = newTempV128();
-      IRTemp m0n0m1n1 = newTempV128();
-      assign(m1n1m0n0, binop(Iop_InterleaveLO32x4,
-                             mkexpr(vecM), mkexpr(vecN)));
-      assign(m0n0m1n1, triop(Iop_SliceV128,
-                             mkexpr(m1n1m0n0), mkexpr(m1n1m0n0), mkU8(8)));
-      assign(*rearrL, unop(Iop_ZeroHI64ofV128, mkexpr(m1n1m0n0)));
-      assign(*rearrR, unop(Iop_ZeroHI64ofV128, mkexpr(m0n0m1n1)));
+
+   switch (sz) {
+      case ARM64VSizeD:
+         // 2d case
+         vassert(bitQ == 1);
+         assign(*rearrL, binop(Iop_InterleaveHI64x2, mkexpr(vecM), mkexpr(vecN)));
+         assign(*rearrR, binop(Iop_InterleaveLO64x2, mkexpr(vecM), mkexpr(vecN)));
+         break;
+
+      case ARM64VSizeS:
+         if (bitQ == 1) {
+            // 4s case
+            assign(*rearrL, binop(Iop_CatOddLanes32x4,  mkexpr(vecM), mkexpr(vecN)));
+            assign(*rearrR, binop(Iop_CatEvenLanes32x4, mkexpr(vecM), mkexpr(vecN)));
+         } else {
+            // 2s case
+            IRTemp m1n1m0n0 = newTempV128();
+            IRTemp m0n0m1n1 = newTempV128();
+            assign(m1n1m0n0, binop(Iop_InterleaveLO32x4,
+                                   mkexpr(vecM), mkexpr(vecN)));
+            assign(m0n0m1n1, triop(Iop_SliceV128,
+                                   mkexpr(m1n1m0n0), mkexpr(m1n1m0n0), mkU8(8)));
+            assign(*rearrL, unop(Iop_ZeroHI64ofV128, mkexpr(m1n1m0n0)));
+            assign(*rearrR, unop(Iop_ZeroHI64ofV128, mkexpr(m0n0m1n1)));
+         }
+         break;
+
+      case ARM64VSizeH:
+         if (bitQ == 1) {
+            // 8h case
+            assign(*rearrL, binop(Iop_CatOddLanes16x8,  mkexpr(vecM), mkexpr(vecN)));
+            assign(*rearrR, binop(Iop_CatEvenLanes16x8, mkexpr(vecM), mkexpr(vecN)));
+         } else {
+            // 4h case
+            IRTemp m3m1n3n1 = newTempV128();
+            IRTemp m2m0n2n0 = newTempV128();
+            assign(m3m1n3n1, binop(Iop_CatOddLanes16x8, mkexpr(vecM), mkexpr(vecN)));
+            assign(m2m0n2n0, binop(Iop_CatEvenLanes16x8, mkexpr(vecM), mkexpr(vecN)));
+            assign(*rearrL, unop(Iop_ZeroHI64ofV128,
+                                 binop(Iop_CatEvenLanes32x4, mkexpr(m3m1n3n1),
+                                                             mkexpr(m3m1n3n1))));
+            assign(*rearrR, unop(Iop_ZeroHI64ofV128,
+                                 binop(Iop_CatEvenLanes32x4, mkexpr(m2m0n2n0),
+                                                             mkexpr(m2m0n2n0))));
+         }
+         break;
+
+      default: vpanic("math_REARRANGE_FOR_FLOATING_PAIRWISE");
    }
 }
 
@@ -12608,8 +12636,8 @@ Bool dis_AdvSIMD_three_same(/*MB_OUT*/DisResult* dres, UInt insn)
       IRTemp preR  = IRTemp_INVALID;
       assign(srcN, getQReg128(nn));
       assign(srcM, getQReg128(mm));
-      math_REARRANGE_FOR_FLOATING_PAIRWISE(&preL, &preR,
-                                           srcM, srcN, isD, bitQ);
+      math_REARRANGE_FOR_FLOATING_PAIRWISE(&preL, &preR, srcM, srcN,
+                                           isD ? ARM64VSizeD : ARM64VSizeS, bitQ);
       putQReg128(
          dd, math_MAYBE_ZERO_HI64_fromE(
                 bitQ,
@@ -12631,8 +12659,8 @@ Bool dis_AdvSIMD_three_same(/*MB_OUT*/DisResult* dres, UInt insn)
       IRTemp preR = IRTemp_INVALID;
       assign(srcN, getQReg128(nn));
       assign(srcM, getQReg128(mm));
-      math_REARRANGE_FOR_FLOATING_PAIRWISE(&preL, &preR,
-                                           srcM, srcN, isD, bitQ);
+      math_REARRANGE_FOR_FLOATING_PAIRWISE(&preL, &preR, srcM, srcN,
+                                           isD ? ARM64VSizeD : ARM64VSizeS, bitQ);
       putQReg128(
          dd, math_MAYBE_ZERO_HI64_fromE(
                 bitQ,
@@ -12740,6 +12768,56 @@ Bool dis_AdvSIMD_three_same_extra(/*MB_OUT*/DisResult* dres, UInt insn)
 #  undef INSN
 }
 
+static
+Bool dis_AdvSIMD_three_same_fp16(/*MB_OUT*/DisResult* dres, UInt insn)
+{
+   /* 31 30 29 28    23   21 20 15     10 9 4
+      0  Q  U  01110 size 0  m  opcode 1  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,21) != 0
+       || INSN(10,10) != 1) {
+      return False;
+   }
+   UInt bitQ   = INSN(30,30);
+   UInt bitU   = INSN(29,29);
+   UInt size   = INSN(23,22);
+   UInt mm     = INSN(20,16);
+   UInt opcode = INSN(15,11);
+   UInt nn     = INSN(9,5);
+   UInt dd     = INSN(4,0);
+   vassert(size < 4);
+   vassert(mm < 32 && nn < 32 && dd < 32);
+
+   if (bitU == 1 && size == X01 && opcode == BITS5(0,0,0,1,0)) {
+      /* -------- 1,01,00010 FADDP 4h_4h_4h, 8h_8h_8h -------- */
+      IROp  opADD = mkVecADDF(1); //bitQ == 0 ? 0 : 1);
+      IRTemp srcN = newTempV128();
+      IRTemp srcM = newTempV128();
+      IRTemp preL = IRTemp_INVALID;
+      IRTemp preR = IRTemp_INVALID;
+      assign(srcN, getQReg128(nn));
+      assign(srcM, getQReg128(mm));
+      math_REARRANGE_FOR_FLOATING_PAIRWISE(&preL, &preR, srcM, srcN,
+                                           ARM64VSizeH, bitQ);
+      putQReg128(
+         dd, math_MAYBE_ZERO_HI64_fromE(
+                bitQ,
+                triop(opADD, mkexpr(mk_get_IR_rounding_mode()),
+                      mkexpr(preL), mkexpr(preR))));
+      const HChar* arr = bitQ == 0 ? "4h" : "8h";
+      DIP("%s %s.%s, %s.%s, %s.%s\n", "faddp",
+          nameQReg128(dd), arr, nameQReg128(nn), arr, nameQReg128(mm), arr);
+      return True;
+   }
+
+   return False;
+#  undef INSN
+}
+
 
 static
 Bool dis_AdvSIMD_two_reg_misc(/*MB_OUT*/DisResult* dres, UInt insn)
@@ -15008,6 +15086,8 @@ Bool dis_ARM64_simd_and_fp(/*MB_OUT*/DisResult* dres, UInt insn,
    if (UNLIKELY(ok)) return True;
    ok = dis_AdvSIMD_three_same_extra(dres, insn);
    if (UNLIKELY(ok)) return True;
+   ok = dis_AdvSIMD_three_same_fp16(dres, insn);
+   if (UNLIKELY(ok)) return True;
    ok = dis_AdvSIMD_two_reg_misc(dres, insn);
    if (UNLIKELY(ok)) return True;
    ok = dis_AdvSIMD_vector_x_indexed_elem(dres, insn);
index 8c66ff27bd67f809f8d3fe7552b3c88c79177126..1878fbd0b649a09d47babc6779aeb5c2c9e7eab5 100644 (file)
@@ -2126,42 +2126,11 @@ void test_SMAXV ( void )
 
 /* ---------------------------------------------------------------- */
 /* -- Tests, in the same order that they appear in main()        -- */
+/* -- The full list of instructions tested appear at the end of  -- */
+/* -- this file.                                                 -- */
 /* ---------------------------------------------------------------- */
 
-// ======================== FP ========================
-
-GEN_TWOVEC_TEST(faddp_h_2h_00_00,    "faddp h0, v0.2h",    0, 0)
-GEN_TWOVEC_TEST(faddp_h_2h_01_01,    "faddp h1, v1.2h",    1, 1)
-GEN_TWOVEC_TEST(faddp_h_2h_02_02,    "faddp h2, v2.2h",    2, 2)
-GEN_TWOVEC_TEST(faddp_h_2h_03_03,    "faddp h3, v3.2h",    3, 3)
-GEN_TWOVEC_TEST(faddp_h_2h_04_04,    "faddp h4, v4.2h",    4, 4)
-GEN_TWOVEC_TEST(faddp_h_2h_05_05,    "faddp h5, v5.2h",    5, 5)
-GEN_TWOVEC_TEST(faddp_h_2h_06_06,    "faddp h6, v6.2h",    6, 6)
-GEN_TWOVEC_TEST(faddp_h_2h_07_07,    "faddp h7, v7.2h",    7, 7)
-GEN_TWOVEC_TEST(faddp_h_2h_08_08,    "faddp h8, v8.2h",    8, 8)
-GEN_TWOVEC_TEST(faddp_h_2h_09_09,    "faddp h9, v9.2h",    9, 9)
-GEN_TWOVEC_TEST(faddp_h_2h_10_10,    "faddp h10, v10.2h",    10, 10)
-GEN_TWOVEC_TEST(faddp_h_2h_11_11,    "faddp h11, v11.2h",    11, 11)
-GEN_TWOVEC_TEST(faddp_h_2h_12_12,    "faddp h12, v12.2h",    12, 12)
-GEN_TWOVEC_TEST(faddp_h_2h_13_13,    "faddp h13, v13.2h",    13, 13)
-GEN_TWOVEC_TEST(faddp_h_2h_14_14,    "faddp h14, v14.2h",    14, 14)
-GEN_TWOVEC_TEST(faddp_h_2h_15_15,    "faddp h15, v15.2h",    15, 15)
-GEN_TWOVEC_TEST(faddp_h_2h_16_16,    "faddp h16, v16.2h",    16, 16)
-GEN_TWOVEC_TEST(faddp_h_2h_17_17,    "faddp h17, v17.2h",    17, 17)
-GEN_TWOVEC_TEST(faddp_h_2h_18_18,    "faddp h18, v18.2h",    18, 18)
-GEN_TWOVEC_TEST(faddp_h_2h_19_19,    "faddp h19, v19.2h",    19, 19)
-GEN_TWOVEC_TEST(faddp_h_2h_20_20,    "faddp h20, v20.2h",    20, 20)
-GEN_TWOVEC_TEST(faddp_h_2h_21_21,    "faddp h21, v21.2h",    21, 21)
-GEN_TWOVEC_TEST(faddp_h_2h_22_22,    "faddp h22, v22.2h",    22, 22)
-GEN_TWOVEC_TEST(faddp_h_2h_23_23,    "faddp h23, v23.2h",    23, 23)
-GEN_TWOVEC_TEST(faddp_h_2h_24_24,    "faddp h24, v24.2h",    24, 24)
-GEN_TWOVEC_TEST(faddp_h_2h_25_25,    "faddp h25, v25.2h",    25, 25)
-GEN_TWOVEC_TEST(faddp_h_2h_26_26,    "faddp h26, v26.2h",    26, 26)
-GEN_TWOVEC_TEST(faddp_h_2h_27_27,    "faddp h27, v27.2h",    27, 27)
-GEN_TWOVEC_TEST(faddp_h_2h_28_28,    "faddp h28, v28.2h",    28, 28)
-GEN_TWOVEC_TEST(faddp_h_2h_29_29,    "faddp h29, v29.2h",    29, 29)
-GEN_TWOVEC_TEST(faddp_h_2h_30_30,    "faddp h30, v30.2h",    30, 30)
-GEN_TWOVEC_TEST(faddp_h_2h_31_31,    "faddp h31, v31.2h",    31, 31)
+// FADDP <V><d>, <Vn>.<T>
 
 GEN_TWOVEC_TEST(faddp_h_2h_00_01,    "faddp h0, v1.2h",    0, 1)
 GEN_TWOVEC_TEST(faddp_h_2h_01_02,    "faddp h1, v2.2h",    1, 2)
@@ -2195,6 +2164,70 @@ GEN_TWOVEC_TEST(faddp_h_2h_28_29,    "faddp h28, v29.2h",    28, 29)
 GEN_TWOVEC_TEST(faddp_h_2h_29_30,    "faddp h29, v30.2h",    29, 30)
 GEN_TWOVEC_TEST(faddp_h_2h_30_31,    "faddp h30, v31.2h",    30, 31)
 
+// FADDP <Vd>.<T>, <Vn>.<T>, <Vm>.<T>
+
+GEN_THREEVEC_TEST(faddp_8h_00_01_02, "faddp v0.8h, v1.8h, v2.8h",    0, 1, 2)
+GEN_THREEVEC_TEST(faddp_8h_01_02_03, "faddp v1.8h, v2.8h, v3.8h",    1, 2, 3)
+GEN_THREEVEC_TEST(faddp_8h_02_03_04, "faddp v2.8h, v3.8h, v4.8h",    2, 3, 4)
+GEN_THREEVEC_TEST(faddp_8h_03_04_05, "faddp v3.8h, v4.8h, v5.8h",    3, 4, 5)
+GEN_THREEVEC_TEST(faddp_8h_04_05_06, "faddp v4.8h, v5.8h, v6.8h",    4, 5, 6)
+GEN_THREEVEC_TEST(faddp_8h_05_06_07, "faddp v5.8h, v6.8h, v7.8h",    5, 6, 7)
+GEN_THREEVEC_TEST(faddp_8h_06_07_08, "faddp v6.8h, v7.8h, v8.8h",    6, 7, 8)
+GEN_THREEVEC_TEST(faddp_8h_07_08_09, "faddp v7.8h, v8.8h, v9.8h",    7, 8, 9)
+GEN_THREEVEC_TEST(faddp_8h_08_09_10, "faddp v8.8h, v9.8h, v10.8h",    8, 9, 10)
+GEN_THREEVEC_TEST(faddp_8h_09_10_11, "faddp v9.8h, v10.8h, v11.8h",    9, 10, 11)
+GEN_THREEVEC_TEST(faddp_8h_10_11_12, "faddp v10.8h, v11.8h, v12.8h",    10, 11, 12)
+GEN_THREEVEC_TEST(faddp_8h_11_12_13, "faddp v11.8h, v12.8h, v13.8h",    11, 12, 13)
+GEN_THREEVEC_TEST(faddp_8h_12_13_14, "faddp v12.8h, v13.8h, v14.8h",    12, 13, 14)
+GEN_THREEVEC_TEST(faddp_8h_13_14_15, "faddp v13.8h, v14.8h, v15.8h",    13, 14, 15)
+GEN_THREEVEC_TEST(faddp_8h_14_15_16, "faddp v14.8h, v15.8h, v16.8h",    14, 15, 16)
+GEN_THREEVEC_TEST(faddp_8h_15_16_17, "faddp v15.8h, v16.8h, v17.8h",    15, 16, 17)
+GEN_THREEVEC_TEST(faddp_8h_16_17_18, "faddp v16.8h, v17.8h, v18.8h",    16, 17, 18)
+GEN_THREEVEC_TEST(faddp_8h_17_18_19, "faddp v17.8h, v18.8h, v19.8h",    17, 18, 19)
+GEN_THREEVEC_TEST(faddp_8h_18_19_20, "faddp v18.8h, v19.8h, v20.8h",    18, 19, 20)
+GEN_THREEVEC_TEST(faddp_8h_19_20_21, "faddp v19.8h, v20.8h, v21.8h",    19, 20, 21)
+GEN_THREEVEC_TEST(faddp_8h_20_21_22, "faddp v20.8h, v21.8h, v22.8h",    20, 21, 22)
+GEN_THREEVEC_TEST(faddp_8h_21_22_23, "faddp v21.8h, v22.8h, v23.8h",    21, 22, 23)
+GEN_THREEVEC_TEST(faddp_8h_22_23_24, "faddp v22.8h, v23.8h, v24.8h",    22, 23, 24)
+GEN_THREEVEC_TEST(faddp_8h_23_24_25, "faddp v23.8h, v24.8h, v25.8h",    23, 24, 25)
+GEN_THREEVEC_TEST(faddp_8h_24_25_26, "faddp v24.8h, v25.8h, v26.8h",    24, 25, 26)
+GEN_THREEVEC_TEST(faddp_8h_25_26_27, "faddp v25.8h, v26.8h, v27.8h",    25, 26, 27)
+GEN_THREEVEC_TEST(faddp_8h_26_27_28, "faddp v26.8h, v27.8h, v28.8h",    26, 27, 28)
+GEN_THREEVEC_TEST(faddp_8h_27_28_29, "faddp v27.8h, v28.8h, v29.8h",    27, 28, 29)
+GEN_THREEVEC_TEST(faddp_8h_28_29_30, "faddp v28.8h, v29.8h, v30.8h",    28, 29, 30)
+GEN_THREEVEC_TEST(faddp_8h_29_30_31, "faddp v29.8h, v30.8h, v31.8h",    29, 30, 31)
+
+GEN_THREEVEC_TEST(faddp_4h_00_01_02, "faddp v0.4h, v1.4h, v2.4h",    0, 1, 2)
+GEN_THREEVEC_TEST(faddp_4h_01_02_03, "faddp v1.4h, v2.4h, v3.4h",    1, 2, 3)
+GEN_THREEVEC_TEST(faddp_4h_02_03_04, "faddp v2.4h, v3.4h, v4.4h",    2, 3, 4)
+GEN_THREEVEC_TEST(faddp_4h_03_04_05, "faddp v3.4h, v4.4h, v5.4h",    3, 4, 5)
+GEN_THREEVEC_TEST(faddp_4h_04_05_06, "faddp v4.4h, v5.4h, v6.4h",    4, 5, 6)
+GEN_THREEVEC_TEST(faddp_4h_05_06_07, "faddp v5.4h, v6.4h, v7.4h",    5, 6, 7)
+GEN_THREEVEC_TEST(faddp_4h_06_07_08, "faddp v6.4h, v7.4h, v8.4h",    6, 7, 8)
+GEN_THREEVEC_TEST(faddp_4h_07_08_09, "faddp v7.4h, v8.4h, v9.4h",    7, 8, 9)
+GEN_THREEVEC_TEST(faddp_4h_08_09_10, "faddp v8.4h, v9.4h, v10.4h",    8, 9, 10)
+GEN_THREEVEC_TEST(faddp_4h_09_10_11, "faddp v9.4h, v10.4h, v11.4h",    9, 10, 11)
+GEN_THREEVEC_TEST(faddp_4h_10_11_12, "faddp v10.4h, v11.4h, v12.4h",    10, 11, 12)
+GEN_THREEVEC_TEST(faddp_4h_11_12_13, "faddp v11.4h, v12.4h, v13.4h",    11, 12, 13)
+GEN_THREEVEC_TEST(faddp_4h_12_13_14, "faddp v12.4h, v13.4h, v14.4h",    12, 13, 14)
+GEN_THREEVEC_TEST(faddp_4h_13_14_15, "faddp v13.4h, v14.4h, v15.4h",    13, 14, 15)
+GEN_THREEVEC_TEST(faddp_4h_14_15_16, "faddp v14.4h, v15.4h, v16.4h",    14, 15, 16)
+GEN_THREEVEC_TEST(faddp_4h_15_16_17, "faddp v15.4h, v16.4h, v17.4h",    15, 16, 17)
+GEN_THREEVEC_TEST(faddp_4h_16_17_18, "faddp v16.4h, v17.4h, v18.4h",    16, 17, 18)
+GEN_THREEVEC_TEST(faddp_4h_17_18_19, "faddp v17.4h, v18.4h, v19.4h",    17, 18, 19)
+GEN_THREEVEC_TEST(faddp_4h_18_19_20, "faddp v18.4h, v19.4h, v20.4h",    18, 19, 20)
+GEN_THREEVEC_TEST(faddp_4h_19_20_21, "faddp v19.4h, v20.4h, v21.4h",    19, 20, 21)
+GEN_THREEVEC_TEST(faddp_4h_20_21_22, "faddp v20.4h, v21.4h, v22.4h",    20, 21, 22)
+GEN_THREEVEC_TEST(faddp_4h_21_22_23, "faddp v21.4h, v22.4h, v23.4h",    21, 22, 23)
+GEN_THREEVEC_TEST(faddp_4h_22_23_24, "faddp v22.4h, v23.4h, v24.4h",    22, 23, 24)
+GEN_THREEVEC_TEST(faddp_4h_23_24_25, "faddp v23.4h, v24.4h, v25.4h",    23, 24, 25)
+GEN_THREEVEC_TEST(faddp_4h_24_25_26, "faddp v24.4h, v25.4h, v26.4h",    24, 25, 26)
+GEN_THREEVEC_TEST(faddp_4h_25_26_27, "faddp v25.4h, v26.4h, v27.4h",    25, 26, 27)
+GEN_THREEVEC_TEST(faddp_4h_26_27_28, "faddp v26.4h, v27.4h, v28.4h",    26, 27, 28)
+GEN_THREEVEC_TEST(faddp_4h_27_28_29, "faddp v27.4h, v28.4h, v29.4h",    27, 28, 29)
+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)
+
 
 /* ---------------------------------------------------------------- */
 /* -- main()                                                     -- */
@@ -2204,42 +2237,7 @@ int main ( void )
 {
    assert(sizeof(V128) == 16);
 
-   // ======================== FP ========================
-
-   // faddp     h (half-precision floating add pair)
-   // faddp     2h
-   if (1) test_faddp_h_2h_00_00(TyH);
-   if (1) test_faddp_h_2h_01_01(TyH);
-   if (1) test_faddp_h_2h_02_02(TyH);
-   if (1) test_faddp_h_2h_03_03(TyH);
-   if (1) test_faddp_h_2h_04_04(TyH);
-   if (1) test_faddp_h_2h_05_05(TyH);
-   if (1) test_faddp_h_2h_06_06(TyH);
-   if (1) test_faddp_h_2h_07_07(TyH);
-   if (1) test_faddp_h_2h_08_08(TyH);
-   if (1) test_faddp_h_2h_09_09(TyH);
-   if (1) test_faddp_h_2h_10_10(TyH);
-   if (1) test_faddp_h_2h_11_11(TyH);
-   if (1) test_faddp_h_2h_12_12(TyH);
-   if (1) test_faddp_h_2h_13_13(TyH);
-   if (1) test_faddp_h_2h_14_14(TyH);
-   if (1) test_faddp_h_2h_15_15(TyH);
-   if (1) test_faddp_h_2h_16_16(TyH);
-   if (1) test_faddp_h_2h_17_17(TyH);
-   if (1) test_faddp_h_2h_18_18(TyH);
-   if (1) test_faddp_h_2h_19_19(TyH);
-   if (1) test_faddp_h_2h_20_20(TyH);
-   if (1) test_faddp_h_2h_21_21(TyH);
-   if (1) test_faddp_h_2h_22_22(TyH);
-   if (1) test_faddp_h_2h_23_23(TyH);
-   if (1) test_faddp_h_2h_24_24(TyH);
-   if (1) test_faddp_h_2h_25_25(TyH);
-   if (1) test_faddp_h_2h_26_26(TyH);
-   if (1) test_faddp_h_2h_27_27(TyH);
-   if (1) test_faddp_h_2h_28_28(TyH);
-   if (1) test_faddp_h_2h_29_29(TyH);
-   if (1) test_faddp_h_2h_30_30(TyH);
-   if (1) test_faddp_h_2h_31_31(TyH);
+   printf("\nFADDP <V><d>, <Vn>.<T>\n\n");
 
    if (1) test_faddp_h_2h_00_01(TyH);
    if (1) test_faddp_h_2h_01_02(TyH);
@@ -2273,13 +2271,77 @@ int main ( void )
    if (1) test_faddp_h_2h_29_30(TyH);
    if (1) test_faddp_h_2h_30_31(TyH);
 
+   printf("\nFADDP <Vd>.<T>, <Vn>.<T>, <Vm>.<T>\n\n");
+
+   if (1) test_faddp_8h_00_01_02(TyH);
+   if (1) test_faddp_8h_01_02_03(TyH);
+   if (1) test_faddp_8h_02_03_04(TyH);
+   if (1) test_faddp_8h_03_04_05(TyH);
+   if (1) test_faddp_8h_04_05_06(TyH);
+   if (1) test_faddp_8h_05_06_07(TyH);
+   if (1) test_faddp_8h_06_07_08(TyH);
+   if (1) test_faddp_8h_07_08_09(TyH);
+   if (1) test_faddp_8h_08_09_10(TyH);
+   if (1) test_faddp_8h_09_10_11(TyH);
+   if (1) test_faddp_8h_10_11_12(TyH);
+   if (1) test_faddp_8h_11_12_13(TyH);
+   if (1) test_faddp_8h_12_13_14(TyH);
+   if (1) test_faddp_8h_13_14_15(TyH);
+   if (1) test_faddp_8h_14_15_16(TyH);
+   if (1) test_faddp_8h_15_16_17(TyH);
+   if (1) test_faddp_8h_16_17_18(TyH);
+   if (1) test_faddp_8h_17_18_19(TyH);
+   if (1) test_faddp_8h_18_19_20(TyH);
+   if (1) test_faddp_8h_19_20_21(TyH);
+   if (1) test_faddp_8h_20_21_22(TyH);
+   if (1) test_faddp_8h_21_22_23(TyH);
+   if (1) test_faddp_8h_22_23_24(TyH);
+   if (1) test_faddp_8h_23_24_25(TyH);
+   if (1) test_faddp_8h_24_25_26(TyH);
+   if (1) test_faddp_8h_25_26_27(TyH);
+   if (1) test_faddp_8h_26_27_28(TyH);
+   if (1) test_faddp_8h_27_28_29(TyH);
+   if (1) test_faddp_8h_28_29_30(TyH);
+   if (1) test_faddp_8h_29_30_31(TyH);
+
+   if (1) test_faddp_4h_00_01_02(TyH);
+   if (1) test_faddp_4h_01_02_03(TyH);
+   if (1) test_faddp_4h_02_03_04(TyH);
+   if (1) test_faddp_4h_03_04_05(TyH);
+   if (1) test_faddp_4h_04_05_06(TyH);
+   if (1) test_faddp_4h_05_06_07(TyH);
+   if (1) test_faddp_4h_06_07_08(TyH);
+   if (1) test_faddp_4h_07_08_09(TyH);
+   if (1) test_faddp_4h_08_09_10(TyH);
+   if (1) test_faddp_4h_09_10_11(TyH);
+   if (1) test_faddp_4h_10_11_12(TyH);
+   if (1) test_faddp_4h_11_12_13(TyH);
+   if (1) test_faddp_4h_12_13_14(TyH);
+   if (1) test_faddp_4h_13_14_15(TyH);
+   if (1) test_faddp_4h_14_15_16(TyH);
+   if (1) test_faddp_4h_15_16_17(TyH);
+   if (1) test_faddp_4h_16_17_18(TyH);
+   if (1) test_faddp_4h_17_18_19(TyH);
+   if (1) test_faddp_4h_18_19_20(TyH);
+   if (1) test_faddp_4h_19_20_21(TyH);
+   if (1) test_faddp_4h_20_21_22(TyH);
+   if (1) test_faddp_4h_21_22_23(TyH);
+   if (1) test_faddp_4h_22_23_24(TyH);
+   if (1) test_faddp_4h_23_24_25(TyH);
+   if (1) test_faddp_4h_24_25_26(TyH);
+   if (1) test_faddp_4h_25_26_27(TyH);
+   if (1) test_faddp_4h_26_27_28(TyH);
+   if (1) test_faddp_4h_27_28_29(TyH);
+   if (1) test_faddp_4h_28_29_30(TyH);
+   if (1) test_faddp_4h_29_30_31(TyH);
+
    return 0;
 }
 
 /* ---------------------------------------------------------------- */
-/* -- Alphabetical list of insns                                 -- */
+/* -- List of instructions tested in order of execution.         -- */
 /* ---------------------------------------------------------------- */
 /*
-   faddp     h (half-precision floating add pair)
-   faddp     2h
+   FADDP <V><d>, <Vn>.<T> Floating-point Add Pair of elements (scalar).
+   FADDP <Vd>.<T>, <Vn>.<T>, <Vm>.<T> Floating-point Add Pairwise (vector).
 */
index 8ef1dee2f13133a7aaa9940979ab430021244d6f..1dd9e8c6b02f6a5a5424374be41178b8131396ac 100644 (file)
@@ -1,63 +1,98 @@
-faddp h0, v0.2h   5175e39d19c9ca1e98f24a4984175700  19a348215c3a67fd399182c2dbcc2d38  0000000000000000000000000000dbcb  0000000000000000000000000000dbcb fpsr=00000000
-faddp h1, v1.2h   cb509970b8136c85d740b80eb7839b97  f9dd4a29f8c093db56b01a12b0ca1583  0000000000000000000000000000b0bf  0000000000000000000000000000b0bf fpsr=00000000
-faddp h2, v2.2h   d182c916cebc2e17cfaff39be272ef40  6897b536bbe4da8a369dab4f9465b86e  0000000000000000000000000000b870  0000000000000000000000000000b870 fpsr=00000000
-faddp h3, v3.2h   81f2a547be8d181184ededbc53239dcf  019963bf7459630b8d69483df7e8c6a9  0000000000000000000000000000f7e8  0000000000000000000000000000f7e8 fpsr=00000000
-faddp h4, v4.2h   5f490104ced83ff86262dd37727c80f3  e9b5f3f66b2e58c121a6c3476d21f1e5  0000000000000000000000000000eea9  0000000000000000000000000000eea9 fpsr=00000000
-faddp h5, v5.2h   61c82534e9bf6f37c9e25f72d82e582b  ecb42ac54b0966d4089b756aa3f77018  00000000000000000000000000007018  00000000000000000000000000007018 fpsr=00000000
-faddp h6, v6.2h   36b2a38dcef18acf0e0f01a829ba3c66  65ce6d498492e7e796df010bf4b23b84  0000000000000000000000000000f4b2  0000000000000000000000000000f4b2 fpsr=00000000
-faddp h7, v7.2h   6d08ed19fa045f841810cd8c109ed568  1c4a678450562685769ab818a5b7985e  0000000000000000000000000000a643  0000000000000000000000000000a643 fpsr=00000000
-faddp h8, v8.2h   048612e51a468e36c51cdd8f87e12ab4  0c05cb6ebd128663d7568e3e8a3ac80e  0000000000000000000000000000c80e  0000000000000000000000000000c80e fpsr=00000000
-faddp h9, v9.2h   6489eab2c96df363d52c4330a7aae391  14575775bc3a12029d8e66ea90352a18  00000000000000000000000000002a07  00000000000000000000000000002a07 fpsr=00000000
-faddp h10, v10.2h   4784d95987cd4ed80c3ca578a32bd88e  08aebee85fda964fbba02737f3c98220  0000000000000000000000000000f3c9  0000000000000000000000000000f3c9 fpsr=00000000
-faddp h11, v11.2h   4e92f1b240a122141a366d352714867e  0aaa836b194e242cc5fc3ae904033357  00000000000000000000000000003358  00000000000000000000000000003358 fpsr=00000000
-faddp h12, v12.2h   ac82c1007a7d3cd8f54b130cdaa89cef  627bb6e12d1f6d4651ef145cb9b83843  0000000000000000000000000000b1d4  0000000000000000000000000000b1d4 fpsr=00000000
-faddp h13, v13.2h   f0f1798fe3c1699cf02b3b25bca27a9c  d4ba52a206ff21b170fbbab6a7f19faf  0000000000000000000000000000a8ee  0000000000000000000000000000a8ee fpsr=00000000
-faddp h14, v14.2h   16559ec50352a3d92d460a61a5dd0f6f  0784892e9360315bf0177599dbe14b46  0000000000000000000000000000db6d  0000000000000000000000000000db6d fpsr=00000000
-faddp h15, v15.2h   9432a2e46543b956b819f459105730e9  5da3cfd6aea6558e0c28728e28dc3c9c  00000000000000000000000000003cc3  00000000000000000000000000003cc3 fpsr=00000000
-faddp h16, v16.2h   89fba268812abdb21e4a9e0958fac555  e4450ababbfae0f9bc3127138b19183c  00000000000000000000000000001795  00000000000000000000000000001795 fpsr=00000000
-faddp h17, v17.2h   7acb193b9abab2f9e1917689e3f6bf86  2573776df1835e3ede9a220dce0e75e0  000000000000000000000000000075de  000000000000000000000000000075de fpsr=00000000
-faddp h18, v18.2h   fa99500fef6024ba39dce32c239cf309  570037914d04ab3d05d75ec6f616ee9a  0000000000000000000000000000f7bc  0000000000000000000000000000f7bc fpsr=00000000
-faddp h19, v19.2h   8fcf04e5b2dca44fcf4c517ea3a413ff  5d700527e24d9241c57eb74d70183523  00000000000000000000000000007018  00000000000000000000000000007018 fpsr=00000000
-faddp h20, v20.2h   f34428d9c8833f5b78fb29445f3bc8d7  da30ef8bc0b5573e34a901384a97a32f  00000000000000000000000000004a95  00000000000000000000000000004a95 fpsr=00000000
-faddp h21, v21.2h   ac8dd5bbc503330eb9dd5dab8e212ab7  4e94ec120b386f523bfcd80321664d3e  00000000000000000000000000004d3f  00000000000000000000000000004d3f fpsr=00000000
-faddp h22, v22.2h   125934a781e479d33d431279cce48fce  d4d14e592776b1ef0b40d58cb22d00b1  0000000000000000000000000000b22d  0000000000000000000000000000b22d fpsr=00000000
-faddp h23, v23.2h   9e477892854b43e0beafe48541dc8da0  acb9433f079dacacabeb000208c90296  00000000000000000000000000000a14  00000000000000000000000000000a14 fpsr=00000000
-faddp h24, v24.2h   ef56701db49bea4ce52e79ce9700a7f7  200d17261638b12a2a6a07863ec28077  00000000000000000000000000003ec2  00000000000000000000000000003ec2 fpsr=00000000
-faddp h25, v25.2h   445ef059e641a1ccb097e047aacc5b89  1c9c7740ef193457959960926235021b  00000000000000000000000000006235  00000000000000000000000000006235 fpsr=00000000
-faddp h26, v26.2h   80c745ef729f1792ccd7e987538166e1  f4ad41832c22ba116c949cea66e687ae  000000000000000000000000000066e6  000000000000000000000000000066e6 fpsr=00000000
-faddp h27, v27.2h   e309aef8a605af130821eb96e737777e  b5a9377eb31749ef710cf757885d2728  0000000000000000000000000000271f  0000000000000000000000000000271f fpsr=00000000
-faddp h28, v28.2h   dbacfa35b7d2b75af8ad6b99bb3fa4c2  c673c91ec9aed3f8b9c3e32f2103009d  00000000000000000000000000002104  00000000000000000000000000002104 fpsr=00000000
-faddp h29, v29.2h   76f140aa4182b4e706a17746411ab40c  5e58aa8b4c88ae0d34fa174f9ce927c4  0000000000000000000000000000268a  0000000000000000000000000000268a fpsr=00000000
-faddp h30, v30.2h   61cd123e19cf1e2bb001f1161e946f5c  d5f13a9ab645e140698bec649583f5aa  0000000000000000000000000000f5aa  0000000000000000000000000000f5aa fpsr=00000000
-faddp h31, v31.2h   2993e139f7d64ff4532f9ae1d7da8010  19714a711ce1284318b88425f2de758f  00000000000000000000000000007040  00000000000000000000000000007040 fpsr=00000000
-faddp h0, v1.2h   7af177f11da748fc8b9145fe16d0390f  a77700084a491a0ef099b6dd61462ec3  00000000000000000000000000006146  a77700084a491a0ef099b6dd61462ec3 fpsr=00000000
-faddp h1, v2.2h   c50f1401e45b82d3086a7a39a1e6217d  b79cd058188318692112ca1cf9f1dd31  0000000000000000000000000000f9fb  b79cd058188318692112ca1cf9f1dd31 fpsr=00000000
-faddp h2, v3.2h   d4ec68f21f468712f7b8ab3708137382  0b9c016be95f18de62bba1a11cc04c89  00000000000000000000000000004c89  0b9c016be95f18de62bba1a11cc04c89 fpsr=00000000
-faddp h3, v4.2h   30c9028972f8733d11f7fa4450de2529  a1cd852d9cd970502d146432e64644c9  0000000000000000000000000000e641  a1cd852d9cd970502d146432e64644c9 fpsr=00000000
-faddp h4, v5.2h   35e7926e777aa43f56470887bfdd3daf  b2ed4ecc1e172df2d3a0a41fce854ae7  0000000000000000000000000000ca23  b2ed4ecc1e172df2d3a0a41fce854ae7 fpsr=00000000
-faddp h5, v6.2h   04b4378bce1492e08680a7399beeae16  09e14df041cdc14f0bf7ba2283e22a31  00000000000000000000000000002a2f  09e14df041cdc14f0bf7ba2283e22a31 fpsr=00000000
-faddp h6, v7.2h   9c86e5cb54c594021c25022200a7415e  1adad8978cbfb47829861f0d48dc87f5  000000000000000000000000000048dc  1adad8978cbfb47829861f0d48dc87f5 fpsr=00000000
-faddp h7, v8.2h   b168a24af5479e7bc9f1d5f8e2de4bd3  894d9fe1f98d1aa0861ef69cf4e34e11  0000000000000000000000000000f4e1  894d9fe1f98d1aa0861ef69cf4e34e11 fpsr=00000000
-faddp h8, v9.2h   7b813bf15120fbc8683cbc58f8b23fca  74876ac63afb7562c67d2c86fa7c09a3  0000000000000000000000000000fa7c  74876ac63afb7562c67d2c86fa7c09a3 fpsr=00000000
-faddp h9, v10.2h   c501b4c64209aa2e0719232dba0b82d5  077815d35567232e66c997070e860c39  00000000000000000000000000001160  077815d35567232e66c997070e860c39 fpsr=00000000
-faddp h10, v11.2h   462deabeada6093241150c7a1a4df892  89ad76dc21a1f8f15acd7ad9f991bada  0000000000000000000000000000f991  89ad76dc21a1f8f15acd7ad9f991bada fpsr=00000000
-faddp h11, v12.2h   f82db3448c8c9a654f1c8c8db3b639e1  de62d56351fe96dabe7a2cefcf2b96bb  0000000000000000000000000000cf2b  de62d56351fe96dabe7a2cefcf2b96bb fpsr=00000000
-faddp h12, v13.2h   8514e93e478d067a5a4ac156a6cb98bf  d4442998096825896787a06c436d8e39  0000000000000000000000000000436d  d4442998096825896787a06c436d8e39 fpsr=00000000
-faddp h13, v14.2h   a20cab554a62dd2468a718ec4422710c  b330aadc8a7cbfaf26fbc229d962e2d7  0000000000000000000000000000e418  b330aadc8a7cbfaf26fbc229d962e2d7 fpsr=00000000
-faddp h14, v15.2h   3028339e0d3a0c468e8f584ceae94e7a  e33fad8f313a964967940f284cfce9a3  0000000000000000000000000000e999  e33fad8f313a964967940f284cfce9a3 fpsr=00000000
-faddp h15, v16.2h   5df79fd3324f914fb79f41ec172107e2  d6006035af2e8bb7b3736be34585abe2  00000000000000000000000000004575  d6006035af2e8bb7b3736be34585abe2 fpsr=00000000
-faddp h16, v17.2h   57d0e8a18b5417adc6b295b85f1c3056  e70216ec5cbcf49e8a09cb539549408a  00000000000000000000000000004089  e70216ec5cbcf49e8a09cb539549408a fpsr=00000000
-faddp h17, v18.2h   a9430469f9a6aaf90d07193d2e134034  e0fd1393714954977124406c74e81e7a  000000000000000000000000000074e8  e0fd1393714954977124406c74e81e7a fpsr=00000000
-faddp h18, v19.2h   3b947b8f0a536415b779aada6ea680b0  3fa5c4d84771e518605a54f56dfe15b7  00000000000000000000000000006dfe  3fa5c4d84771e518605a54f56dfe15b7 fpsr=00000000
-faddp h19, v20.2h   b71315802c502c586d5043a8665c8797  d4eaedef93c21b55bdb0c6ce36392d36  00000000000000000000000000003786  d4eaedef93c21b55bdb0c6ce36392d36 fpsr=00000000
-faddp h20, v21.2h   98bf1ba36919393bc4d999db7390839e  44d5584589abea635dc49b10189f4c14  00000000000000000000000000004c14  44d5584589abea635dc49b10189f4c14 fpsr=00000000
-faddp h21, v22.2h   0b0b9f6018e987aeba97106bb88dbd45  9d5fe4af824eabd8f8f577d6f4dd0223  0000000000000000000000000000f4dd  9d5fe4af824eabd8f8f577d6f4dd0223 fpsr=00000000
-faddp h22, v23.2h   1eca927d6d5eee012a6fe8ae3cfe5e6a  22d9446284e6ae8126fc5ee9b286181e  0000000000000000000000000000b276  22d9446284e6ae8126fc5ee9b286181e fpsr=00000000
-faddp h23, v24.2h   3131620a2265f8c8f64df6cdcb51c286  6eeb8d90d86668b60a08b6d0cfc59797  0000000000000000000000000000cfc5  6eeb8d90d86668b60a08b6d0cfc59797 fpsr=00000000
-faddp h24, v25.2h   1854ddf6d8b991ce01deaf4923243fc0  4210b3d32431d146a45cad2eccb0e21a  0000000000000000000000000000e240  4210b3d32431d146a45cad2eccb0e21a fpsr=00000000
-faddp h25, v26.2h   ee7d691b146130944d3d038a0b69312c  4df433720fd7245dafacd5bdced9cd88  0000000000000000000000000000d230  4df433720fd7245dafacd5bdced9cd88 fpsr=00000000
-faddp h26, v27.2h   9c423a145875f5144ccc5e105c99661d  a353e8d137de89d3071b5bad6b52ee61  0000000000000000000000000000e970  a353e8d137de89d3071b5bad6b52ee61 fpsr=00000000
-faddp h27, v28.2h   d04b750405c33deba68d8a6feefdf8d2  e11053b38ffdcd305e88d8c318f5aa57  0000000000000000000000000000aa08  e11053b38ffdcd305e88d8c318f5aa57 fpsr=00000000
-faddp h28, v29.2h   2af3bd4b509e6608a513cfe482162be8  6f8ae74d5f7960b4a01933ef595f6af1  00000000000000000000000000006b47  6f8ae74d5f7960b4a01933ef595f6af1 fpsr=00000000
-faddp h29, v30.2h   95d26cc246074b10bda9f7bf92a71bac  8932e026330d2e5552f8564f761e13a8  0000000000000000000000000000761e  8932e026330d2e5552f8564f761e13a8 fpsr=00000000
-faddp h30, v31.2h   470818041ac5e9b218db305838ff3248  06ced856b4d04648a668c3da0fcbe652  0000000000000000000000000000e652  06ced856b4d04648a668c3da0fcbe652 fpsr=00000000
+
+FADDP <V><d>, <Vn>.<T>
+
+faddp h0, v1.2h   5175e39d19c9ca1e98f24a4984175700  19a348215c3a67fd399182c2dbcc2d38  0000000000000000000000000000dbcb  19a348215c3a67fd399182c2dbcc2d38 fpsr=00000000
+faddp h1, v2.2h   cb509970b8136c85d740b80eb7839b97  f9dd4a29f8c093db56b01a12b0ca1583  0000000000000000000000000000b0bf  f9dd4a29f8c093db56b01a12b0ca1583 fpsr=00000000
+faddp h2, v3.2h   d182c916cebc2e17cfaff39be272ef40  6897b536bbe4da8a369dab4f9465b86e  0000000000000000000000000000b870  6897b536bbe4da8a369dab4f9465b86e fpsr=00000000
+faddp h3, v4.2h   81f2a547be8d181184ededbc53239dcf  019963bf7459630b8d69483df7e8c6a9  0000000000000000000000000000f7e8  019963bf7459630b8d69483df7e8c6a9 fpsr=00000000
+faddp h4, v5.2h   5f490104ced83ff86262dd37727c80f3  e9b5f3f66b2e58c121a6c3476d21f1e5  0000000000000000000000000000eea9  e9b5f3f66b2e58c121a6c3476d21f1e5 fpsr=00000000
+faddp h5, v6.2h   61c82534e9bf6f37c9e25f72d82e582b  ecb42ac54b0966d4089b756aa3f77018  00000000000000000000000000007018  ecb42ac54b0966d4089b756aa3f77018 fpsr=00000000
+faddp h6, v7.2h   36b2a38dcef18acf0e0f01a829ba3c66  65ce6d498492e7e796df010bf4b23b84  0000000000000000000000000000f4b2  65ce6d498492e7e796df010bf4b23b84 fpsr=00000000
+faddp h7, v8.2h   6d08ed19fa045f841810cd8c109ed568  1c4a678450562685769ab818a5b7985e  0000000000000000000000000000a643  1c4a678450562685769ab818a5b7985e fpsr=00000000
+faddp h8, v9.2h   048612e51a468e36c51cdd8f87e12ab4  0c05cb6ebd128663d7568e3e8a3ac80e  0000000000000000000000000000c80e  0c05cb6ebd128663d7568e3e8a3ac80e fpsr=00000000
+faddp h9, v10.2h   6489eab2c96df363d52c4330a7aae391  14575775bc3a12029d8e66ea90352a18  00000000000000000000000000002a07  14575775bc3a12029d8e66ea90352a18 fpsr=00000000
+faddp h10, v11.2h   4784d95987cd4ed80c3ca578a32bd88e  08aebee85fda964fbba02737f3c98220  0000000000000000000000000000f3c9  08aebee85fda964fbba02737f3c98220 fpsr=00000000
+faddp h11, v12.2h   4e92f1b240a122141a366d352714867e  0aaa836b194e242cc5fc3ae904033357  00000000000000000000000000003358  0aaa836b194e242cc5fc3ae904033357 fpsr=00000000
+faddp h12, v13.2h   ac82c1007a7d3cd8f54b130cdaa89cef  627bb6e12d1f6d4651ef145cb9b83843  0000000000000000000000000000b1d4  627bb6e12d1f6d4651ef145cb9b83843 fpsr=00000000
+faddp h13, v14.2h   f0f1798fe3c1699cf02b3b25bca27a9c  d4ba52a206ff21b170fbbab6a7f19faf  0000000000000000000000000000a8ee  d4ba52a206ff21b170fbbab6a7f19faf fpsr=00000000
+faddp h14, v15.2h   16559ec50352a3d92d460a61a5dd0f6f  0784892e9360315bf0177599dbe14b46  0000000000000000000000000000db6d  0784892e9360315bf0177599dbe14b46 fpsr=00000000
+faddp h15, v16.2h   9432a2e46543b956b819f459105730e9  5da3cfd6aea6558e0c28728e28dc3c9c  00000000000000000000000000003cc3  5da3cfd6aea6558e0c28728e28dc3c9c fpsr=00000000
+faddp h16, v17.2h   89fba268812abdb21e4a9e0958fac555  e4450ababbfae0f9bc3127138b19183c  00000000000000000000000000001795  e4450ababbfae0f9bc3127138b19183c fpsr=00000000
+faddp h17, v18.2h   7acb193b9abab2f9e1917689e3f6bf86  2573776df1835e3ede9a220dce0e75e0  000000000000000000000000000075de  2573776df1835e3ede9a220dce0e75e0 fpsr=00000000
+faddp h18, v19.2h   fa99500fef6024ba39dce32c239cf309  570037914d04ab3d05d75ec6f616ee9a  0000000000000000000000000000f7bc  570037914d04ab3d05d75ec6f616ee9a fpsr=00000000
+faddp h19, v20.2h   8fcf04e5b2dca44fcf4c517ea3a413ff  5d700527e24d9241c57eb74d70183523  00000000000000000000000000007018  5d700527e24d9241c57eb74d70183523 fpsr=00000000
+faddp h20, v21.2h   f34428d9c8833f5b78fb29445f3bc8d7  da30ef8bc0b5573e34a901384a97a32f  00000000000000000000000000004a95  da30ef8bc0b5573e34a901384a97a32f fpsr=00000000
+faddp h21, v22.2h   ac8dd5bbc503330eb9dd5dab8e212ab7  4e94ec120b386f523bfcd80321664d3e  00000000000000000000000000004d3f  4e94ec120b386f523bfcd80321664d3e fpsr=00000000
+faddp h22, v23.2h   125934a781e479d33d431279cce48fce  d4d14e592776b1ef0b40d58cb22d00b1  0000000000000000000000000000b22d  d4d14e592776b1ef0b40d58cb22d00b1 fpsr=00000000
+faddp h23, v24.2h   9e477892854b43e0beafe48541dc8da0  acb9433f079dacacabeb000208c90296  00000000000000000000000000000a14  acb9433f079dacacabeb000208c90296 fpsr=00000000
+faddp h24, v25.2h   ef56701db49bea4ce52e79ce9700a7f7  200d17261638b12a2a6a07863ec28077  00000000000000000000000000003ec2  200d17261638b12a2a6a07863ec28077 fpsr=00000000
+faddp h25, v26.2h   445ef059e641a1ccb097e047aacc5b89  1c9c7740ef193457959960926235021b  00000000000000000000000000006235  1c9c7740ef193457959960926235021b fpsr=00000000
+faddp h26, v27.2h   80c745ef729f1792ccd7e987538166e1  f4ad41832c22ba116c949cea66e687ae  000000000000000000000000000066e6  f4ad41832c22ba116c949cea66e687ae fpsr=00000000
+faddp h27, v28.2h   e309aef8a605af130821eb96e737777e  b5a9377eb31749ef710cf757885d2728  0000000000000000000000000000271f  b5a9377eb31749ef710cf757885d2728 fpsr=00000000
+faddp h28, v29.2h   dbacfa35b7d2b75af8ad6b99bb3fa4c2  c673c91ec9aed3f8b9c3e32f2103009d  00000000000000000000000000002104  c673c91ec9aed3f8b9c3e32f2103009d fpsr=00000000
+faddp h29, v30.2h   76f140aa4182b4e706a17746411ab40c  5e58aa8b4c88ae0d34fa174f9ce927c4  0000000000000000000000000000268a  5e58aa8b4c88ae0d34fa174f9ce927c4 fpsr=00000000
+faddp h30, v31.2h   61cd123e19cf1e2bb001f1161e946f5c  d5f13a9ab645e140698bec649583f5aa  0000000000000000000000000000f5aa  d5f13a9ab645e140698bec649583f5aa fpsr=00000000
+
+FADDP <Vd>.<T>, <Vn>.<T>, <Vm>.<T>
+
+faddp v0.8h, v1.8h, v2.8h   2993e139f7d64ff4532f9ae1d7da8010  19714a711ce1284318b88425f2de758f  0760c299b42e1fdcc2e9e9cf82c7aff8  c299b40fe9d1aff94a7128df18977040  19714a711ce1284318b88425f2de758f  0760c299b42e1fdcc2e9e9cf82c7aff8 fpsr=00000000
+faddp v1.8h, v2.8h, v3.8h   e70a9c61f55fce335d68e1a25652a804  1dd493f59184345437d5e366d0e20c30  c50f1401e45b82d3086a7a39a1e6217d  c50fe45b7a3992901cd53451e365d0e2  1dd493f59184345437d5e366d0e20c30  c50f1401e45b82d3086a7a39a1e6217d fpsr=00000000
+faddp v2.8h, v3.8h, v4.8h   d4ec68f21f468712f7b8ab3708137382  0b9c016be95f18de62bba1a11cc04c89  761b274ac4c4f0c7f31ed81010c417bc  761bf0c8f32e190f0c29e95f62bb4c89  0b9c016be95f18de62bba1a11cc04c89  761b274ac4c4f0c7f31ed81010c417bc fpsr=00000000
+faddp v3.8h, v4.8h, v5.8h   25c80a060da03fb0c33ebc4b44b8ddd8  94d7265949ca62b46a8a793cf9d5f0d1  35e7926e777aa43f56470887bfdd3daf  35e4777a5647b85c260c62cb79a5fb09  94d7265949ca62b46a8a793cf9d5f0d1  35e7926e777aa43f56470887bfdd3daf fpsr=00000000
+faddp v4.8h, v5.8h, v6.8h   04b4378bce1492e08680a7399beeae16  09e14df041cdc14f0bf7ba2283e22a31  f0fdf0aee1dda4e888e2774acbc13287  f4d6e1dd774acba74df033e0ba222a2f  09e14df041cdc14f0bf7ba2283e22a31  f0fdf0aee1dda4e888e2774acbc13287 fpsr=00000000
+faddp v5.8h, v6.8h, v7.8h   62bbc77143b71e92668b24fb9133bf52  9fedb2229a090d2c018b42f3d3ec8415  b168a24af5479e7bc9f1d5f8e2de4bd3  b1cdf547d6b6e2bfb261996442f3d3ec  9fedb2229a090d2c018b42f3d3ec8415  b168a24af5479e7bc9f1d5f8e2de4bd3 fpsr=00000000
+faddp v6.8h, v7.8h, v8.8h   7b813bf15120fbc8683cbc58f8b23fca  74876ac63afb7562c67d2c86fa7c09a3  07121ecd88441b7dd2cc3eca9347d80f  1ee91b39d296d80f75607562c66bfa7c  74876ac63afb7562c67d2c86fa7c09a3  07121ecd88441b7dd2cc3eca9347d80f fpsr=00000000
+faddp v7.8h, v8.8h, v9.8h   109cfa471afbe686e2ede96f8809f947  9ce5d1a297a56adb474e1bb03bc55073  462deabeada6093241150c7a1a4df892  eabbada34115f892d1a26adb474f5092  9ce5d1a297a56adb474e1bb03bc55073  462deabeada6093241150c7a1a4df892 fpsr=00000000
+faddp v8.8h, v9.8h, v10.8h   f82db3448c8c9a654f1c8c8db3b639e1  de62d56351fe96dabe7a2cefcf2b96bb  e76fcc086aeb0414a9cd126c0869c6a0  e77f6aeba9b3c6a0dfbb51febe2bcf2b  de62d56351fe96dabe7a2cefcf2b96bb  e76fcc086aeb0414a9cd126c0869c6a0 fpsr=00000000
+faddp v9.8h, v10.8h, v11.8h   fa0ba48e9db3d6f2c0c135e244f24dfe  95a6e59e2a7fabcb65b86284a1cb27a3  a20cab554a62dd2468a718ec4422710c  ac6cdcf168a7710de59ea130687d24be  95a6e59e2a7fabcb65b86284a1cb27a3  a20cab554a62dd2468a718ec4422710c fpsr=00000000
+faddp v10.8h, v11.8h, v12.8h   3028339e0d3a0c468e8f584ceae94e7a  e33fad8f313a964967940f284cfce9a3  45738ec585d726b8f4ecb95e02f1d179  457326b2f4ecd179e33f312d6794e999  e33fad8f313a964967940f284cfce9a3  45738ec585d726b8f4ecb95e02f1d179 fpsr=00000000
+faddp v11.8h, v12.8h, v13.8h   7742a77a117513548f9ea7c3a323665c  0bd9cf5599014e9dc435b32da92a7aa5  57d0e8a18b5417adc6b295b85f1c3056  e86216c2c6b25f1dcf554e9dc46e7aa5  0bd9cf5599014e9dc435b32da92a7aa5  57d0e8a18b5417adc6b295b85f1c3056 fpsr=00000000
+faddp v12.8h, v13.8h, v14.8h   a9430469f9a6aaf90d07193d2e134034  e0fd1393714954977124406c74e81e7a  d52f1cc78e47c9e383314ed9438203c8  d52fc9e34ed94382e0fd7152712474e8  e0fd1393714954977124406c74e81e7a  d52f1cc78e47c9e383314ed9438203c8 fpsr=00000000
+faddp v13.8h, v14.8h, v15.8h   ddeb80fe57ce3c26f9fcb34432fe8249  3b3296ac6d6e4ba4d95578b09e02700d  b71315802c502c586d5043a8665c8797  b70e30546d51665c3b2f6d7278ab700d  3b3296ac6d6e4ba4d95578b09e02700d  b71315802c502c586d5043a8665c8797 fpsr=00000000
+faddp v14.8h, v15.8h, v16.8h   98bf1ba36919393bc4d999db7390839e  44d5584589abea635dc49b10189f4c14  4f80e2044f3a41cb6610e404623f3cac  e1c84ff360186241586cea635dc44c14  44d5584589abea635dc49b10189f4c14  4f80e2044f3a41cb6610e404623f3cac fpsr=00000000
+faddp v15.8h, v16.8h, v17.8h   71a6062013b6eaf839f583c290e85d6f  0beca39f21ddd399b28a073ef6656128  1eca927d6d5eee012a6fe8ae3cfe5e6a  1dfae118e8ae5e6fa37fd399b289f63c  0beca39f21ddd399b28a073ef6656128  1eca927d6d5eee012a6fe8ae3cfe5e6a fpsr=00000000
+faddp v16.8h, v17.8h, v18.8h   3131620a2265f8c8f64df6cdcb51c286  6eeb8d90d86668b60a08b6d0cfc59797  dc2316810c4e5ddd66c8f02281b3c8f2  dc235dddee92c8f26eeb6870b6cfcfc5  6eeb8d90d86668b60a08b6d0cfc59797  dc2316810c4e5ddd66c8f02281b3c8f2 fpsr=00000000
+faddp v17.8h, v18.8h, v19.8h   b7a39486894259f1290e68be98626e2d  6ddc67b25da28240909c451c6eb3e447  ee7d691b146130944d3d038a0b69312c  ebdf309d4d3d312e6fc85da2451c6da1  6ddc67b25da28240909c451c6eb3e447  ee7d691b146130944d3d038a0b69312c fpsr=00000000
+faddp v18.8h, v19.8h, v20.8h   9c423a145875f5144ccc5e105c99661d  a353e8d137de89d3071b5bad6b52ee61  5c979f40cdc58392364fbbe21b8d12fc  5c97cdc5b8ba1ca6e8d137dd5bade970  a353e8d137de89d3071b5bad6b52ee61  5c979f40cdc58392364fbbe21b8d12fc fpsr=00000000
+faddp v19.8h, v20.8h, v21.8h   37d75b1941319f8c3175b6b243e17860  850ae0642ddae0466041d5d9cb7738db  2af3bd4b509e6608a513cfe482162be8  bd13662dcfe52be7e064e0465f0ccb29  850ae0642ddae0466041d5d9cb7738db  2af3bd4b509e6608a513cfe482162be8 fpsr=00000000
+faddp v20.8h, v21.8h, v22.8h   95d26cc246074b10bda9f7bf92a71bac  8932e026330d2e5552f8564f761e13a8  b8d75a9620326a7d927f8ecd4a783d65  5a916a7d94f34b25e026351c58e6761e  8932e026330d2e5552f8564f761e13a8  b8d75a9620326a7d927f8ecd4a783d65 fpsr=00000000
+randV128: 256 calls, 353 iters
+faddp v21.8h, v22.8h, v23.8h   39d4db0931b25e927a9632b68f624628  527594f68adebded1af4c541ebe715af  ed8854faa096b85e32ad5a2818eb39be  ed74b8705a2a39c35275bdedc540ebe7  527594f68adebded1af4c541ebe715af  ed8854faa096b85e32ad5a2818eb39be fpsr=00000000
+faddp v22.8h, v23.8h, v24.8h   13a692ea909413e36b813705ba95d96d  27c81bff702749760afcca34c46a4acc  92478e7f987ac472db7137e460cce35a  94c3c473db6ddd1c28647028ca344897  27c81bff702749760afcca34c46a4acc  92478e7f987ac472db7137e460cce35a fpsr=00000000
+faddp v23.8h, v24.8h, v25.8h   ded3251e3f2e1bf337f62011aebf77d2  fbc9f1302bfc1b23d243aed4a862c488  6597ea0af6727713e0401415c692d5dd  e67d6908e040d646fc002c37d246c491  fbc9f1302bfc1b23d243aed4a862c488  6597ea0af6727713e0401415c692d5dd fpsr=00000000
+faddp v24.8h, v25.8h, v26.8h   549a65de5531bc5072bb7bf9cc326fbb  6aed102f2e988dcd62d86d00d43737f5  190c026f4f4108bb97f152ac79a338e2  191f4f4152ac79a36aed2e926ddbd42f  6aed102f2e988dcd62d86d00d43737f5  190c026f4f4108bb97f152ac79a338e2 fpsr=00000000
+faddp v25.8h, v26.8h, v27.8h   35954eb164b81a015d181eb0d13422c0  cccf2d05af86747edec1b4c5c4fa8650  ba6d23fbddcfb6e48aa9987b39e47961  ba4dddd198e67961ccca747edec2c4fa  cccf2d05af86747edec1b4c5c4fa8650  ba6d23fbddcfb6e48aa9987b39e47961 fpsr=00000000
+faddp v26.8h, v27.8h, v28.8h   76df5c23d344e7279f0d2317c41d637d  40c9e0a4e28cc38e27b63222a6b73935  2f76953322c0b8926a280fa06b4f801c  2f61b8776a286b4fe09fe294331938ff  40c9e0a4e28cc38e27b63222a6b73935  2f76953322c0b8926a280fa06b4f801c fpsr=00000000
+faddp v27.8h, v28.8h, v29.8h   c8746293ddf96221a55f780d618fa50b  16458560adcdd7091db23c3834cb4d4d  8a8cc509a7178875c1b1aa5552bf7b54  c509a720c1ca7b5615efd70a3c3e4d60  16458560adcdd7091db23c3834cb4d4d  8a8cc509a7178875c1b1aa5552bf7b54 fpsr=00000000
+faddp v28.8h, v29.8h, v30.8h   23de85e7f3ba676cd7ca3327879cb597  9a985ec5f0031343f3185309c7b360a0  16da21aeefac01e48b55d9bb9a9e8466  2289efacd9bb9ac15ec5f003f3116091  9a985ec5f0031343f3185309c7b360a0  16da21aeefac01e48b55d9bb9a9e8466 fpsr=00000000
+faddp v29.8h, v30.8h, v31.8h   eb8aeda98a0320fe506fd007449d8620  759b310e98e167b9e8f5f99ff99706c8  ddb98a28084c634f63bfc3013161828e  ddb9634f63b83161759b67b9f9eef997  759b310e98e167b9e8f5f99ff99706c8  ddb98a28084c634f63bfc3013161828e fpsr=00000000
+faddp v0.4h, v1.4h, v2.4h   bc4a103eacf98853bc63f107d94d1889  348ab47fa96b098734939ce54eb5d374  e6246ae1a4f77a426cd3657964fa47a9  00000000000000006e316502347fd01a  348ab47fa96b098734939ce54eb5d374  e6246ae1a4f77a426cd3657964fa47a9 fpsr=00000000
+faddp v1.4h, v2.4h, v3.4h   329e49985ce0a08d4e504c0d1ea88aa7  e072c1566081a703100e83175782ed8c  0cd7c78555e44c4138f5b60885c215db  000000000000000033c4157f0f56ed6e  e072c1566081a703100e83175782ed8c  0cd7c78555e44c4138f5b60885c215db fpsr=00000000
+faddp v2.4h, v3.4h, v4.4h   f4bac99b8dc500224c09e6f9f4b7ac8c  3637c27a144a5b20f8ab9814aff9c5f0  bafd469c03bb81a72d0fa3c734a93060  00000000000000002c1636d9f8abc610  3637c27a144a5b20f8ab9814aff9c5f0  bafd469c03bb81a72d0fa3c734a93060 fpsr=00000000
+faddp v3.4h, v4.4h, v5.4h   2c59ee263f9ae6eb5ef02a0e24fd533c  ae69f33c480a53cab65d9cff1df10031  f6d81f33742433f2cc7dd6bb9c2cca19  0000000000000000d7daca1ab6711df2  ae69f33c480a53cab65d9cff1df10031  f6d81f33742433f2cc7dd6bb9c2cca19 fpsr=00000000
+faddp v4.4h, v5.4h, v6.4h   84562c36ddb9ea8ea8c8d0e79a950eb5  23c025e6d5d2e99c2ac801d7a6e270f6  02471f026197d9cd943b5e67093fabba  00000000000000005e67abb52ac970f6  23c025e6d5d2e99c2ac801d7a6e270f6  02471f026197d9cd943b5e67093fabba fpsr=00000000
+faddp v5.4h, v6.4h, v7.4h   cb85ad27dfef8a41beaf642702c9ac20  6f975f6b5d959b0038d06f14677d22db  b0100d870c73d98e7631228f404d2c47  00000000000000007631406f6f14677d  6f975f6b5d959b0038d06f14677d22db  b0100d870c73d98e7631228f404d2c47 fpsr=00000000
+faddp v6.4h, v7.4h, v8.4h   db5accc20d6d491ef5972073e0fedfcb  5e270e3ebfc4b369e7450a380da0993e  f502195aa1a15db4a2a879a23d7c0ae2  000000000000000079a23d7ce745988a  5e270e3ebfc4b369e7450a380da0993e  f502195aa1a15db4a2a879a23d7c0ae2 fpsr=00000000
+faddp v7.4h, v8.4h, v9.4h   0b8c2426798b6a5de77616637239f19e  20669f6fdacc5d7113531763f353aed5  a0538e824a418418f0b95884e5242620  0000000000000000f0a7e5241986f353  20669f6fdacc5d7113531763f353aed5  a0538e824a418418f0b95884e5242620 fpsr=00000000
+faddp v8.4h, v9.4h, v10.4h   2a781815facd19a8f37bb80620d01d92  5fc5f55aaedf1f8b30f295b30ed2d86a  db3648af097836cf4a5aca5a97e15cd2  000000000000000000005cd230e7d86a  5fc5f55aaedf1f8b30f295b30ed2d86a  db3648af097836cf4a5aca5a97e15cd2 fpsr=00000000
+faddp v9.4h, v10.4h, v11.4h   4aeb1e341b4e429f4dc35e54b697e4cc  2da9a6af8d2f212ea4344190d5f211f7  e3b7188215a149fe53ac1abaaba25024  000000000000000053ac50224188d5f2  2da9a6af8d2f212ea4344190d5f211f7  e3b7188215a149fe53ac1abaaba25024 fpsr=00000000
+faddp v10.4h, v11.4h, v12.4h   957f97690fcf998c647b85644dc3143d  078c20e1106551b53bb68b07cdad1dcc  a6368e1cc3188fca46c4038221f7f388  000000000000000046c4f3883bb6cdad  078c20e1106551b53bb68b07cdad1dcc  a6368e1cc3188fca46c4038221f7f388 fpsr=00000000
+faddp v11.4h, v12.4h, v13.4h   409d0d24fbf1bd35c23659debd8d75ea  a9435828b945f0ef083a4f0c6dd2c295  f76b95fa6844fb06cbc7d36dc1d5402f  0000000000000000d4afba984f0c6dd1  a9435828b945f0ef083a4f0c6dd2c295  f76b95fa6844fb06cbc7d36dc1d5402f fpsr=00000000
+faddp v12.4h, v13.4h, v14.4h   d8dc6e794dd364af37b3aa17a4931751  3fad6a0b2cb3893654bc5db73e9c4e61  0f443ca873d6b22db10a44033e825486  000000000000000043b554a05ee64ecb  3fad6a0b2cb3893654bc5db73e9c4e61  0f443ca873d6b22db10a44033e825486 fpsr=00000000
+faddp v13.4h, v14.4h, v15.4h   740c78331916c2ee0656d19da0e92b0a  a7dc73ed183713208e6e2a227349679c  b9c7d9eb61d469d49e0a48b8c8011cc8  000000000000000048b7c8002a15741e  a7dc73ed183713208e6e2a227349679c  b9c7d9eb61d469d49e0a48b8c8011cc8 fpsr=00000000
+faddp v14.4h, v15.4h, v16.4h   27e28a572897658ef2a6d6ae590f40fd  2ebbabf3470db8782ccb8833608433b6  2ef9b0a22bd197c376de3baf5fdb8ce1  000000000000000076de5fdb2cc96084  2ebbabf3470db8782ccb8833608433b6  2ef9b0a22bd197c376de3baf5fdb8ce1 fpsr=00000000
+faddp v15.4h, v16.4h, v17.4h   ad11927ad336084a3ccd2df1aa8a93d7  876d9bdcc5bca72ebf51e0cba2325322  dea946e0b179bef5361cb20c2785c541  0000000000000000322cc539e0cf5322  876d9bdcc5bca72ebf51e0cba2325322  dea946e0b179bef5361cb20c2785c541 fpsr=00000000
+faddp v16.4h, v17.4h, v18.4h   ed6e1ebb8cda5175a26641cf5aff34ce  77e43d084fa5891a8b20646381504fb2  84323c09c110a7a3ccf943504995e94a  0000000000000000cc0fe94464634fb2  77e43d084fa5891a8b20646381504fb2  84323c09c110a7a3ccf943504995e94a fpsr=00000000
+faddp v17.4h, v18.4h, v19.4h   b32227dc5a8cb261c3bb28e1f220fb09  d399277fd05ca4f26ef8025fbb4dcba1  f71b72246ed821cc62b7f4350fa9ad03  0000000000000000f3ffacfb6ef8cc0b  d399277fd05ca4f26ef8025fbb4dcba1  f71b72246ed821cc62b7f4350fa9ad03 fpsr=00000000
+faddp v18.4h, v19.4h, v20.4h   81e19ba751200b054e9e031d71f33fe9  5bdb13e5665fd76eee30ba9cd9b572f2  37607b3155405557892d6649f507b77e  00000000000000006649f507ee3072db  5bdb13e5665fd76eee30ba9cd9b572f2  37607b3155405557892d6649f507b77e fpsr=00000000
+faddp v19.4h, v20.4h, v21.4h   02e2121f7aa8d894a9c470d95890d444  c4276f9d7a2066089aed1b36751530dd  a5d2c97f7788bae1eca9a838c108ae44  0000000000000000eca9c13a08907515  c4276f9d7a2066089aed1b36751530dd  a5d2c97f7788bae1eca9a838c108ae44 fpsr=00000000
+faddp v20.4h, v21.4h, v22.4h   a936258b9666b4d4f37549976fb022ff  c32cf63309e402406e9f5a58ac1a54d1  f411072078b28ffac6b0f635c6d5ccf1  0000000000000000f635cea66ed254d0  c32cf63309e402406e9f5a58ac1a54d1  f411072078b28ffac6b0f635c6d5ccf1 fpsr=00000000
+faddp v21.4h, v22.4h, v23.4h   eb961e83edc02ffa57cb79e901fcadd7  ef23560adb3157cc50072abaf61c5a46  4fd84b29b99a6b2dcd4345d71d165b24  0000000000000000cb9a5b245009f60f  ef23560adb3157cc50072abaf61c5a46  4fd84b29b99a6b2dcd4345d71d165b24 fpsr=00000000
+faddp v22.4h, v23.4h, v24.4h   692a2afdae04a39e34e7a802b90e2f84  52bffb790361bc8206a61431e6f4cfcd  6a9d96d7b56b3f7ef02dfb66a188a88b  0000000000000000fc00a9ed149be713  52bffb790361bc8206a61431e6f4cfcd  6a9d96d7b56b3f7ef02dfb66a188a88b fpsr=00000000
+faddp v23.4h, v24.4h, v25.4h   264b8be9b6fd329ce1613adc48a6dcd9  d648d4b952a71df16a0141c98eb2505e  9a04d2f816626c2c2f38a8db40b290ab  00000000000000002cca40b26a02505e  d648d4b952a71df16a0141c98eb2505e  9a04d2f816626c2c2f38a8db40b290ab fpsr=00000000
+faddp v24.4h, v25.4h, v26.4h   03485ea08590e93c07700db0637e8eb7  23fa3e4706acddf45d393078afc3b5d8  3e8e322a4ff6b6d1b75f0f9fb4e98c0d  0000000000000000b75db4ea5d3ab7c9  23fa3e4706acddf45d393078afc3b5d8  3e8e322a4ff6b6d1b75f0f9fb4e98c0d fpsr=00000000
+faddp v25.4h, v26.4h, v27.4h   5f3646169d10a4a4a96e8ad5ed65b981  3b2220ae6674d2fb42f1655f05df749c  e266a78d90ffdc91cea49ae5c06573d8  0000000000000000cea473d86562749c  3b2220ae6674d2fb42f1655f05df749c  e266a78d90ffdc91cea49ae5c06573d8 fpsr=00000000
+faddp v26.4h, v27.4h, v28.4h   1c7493622cfa2597b6855d5cd44e174a  868b2e22d97fdd69760648ac6426460c  349f42f2e67983ac302a67122627dc71  00000000000000006712dc717607642c  868b2e22d97fdd69760648ac6426460c  349f42f2e67983ac302a67122627dc71 fpsr=00000000
+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