diff options
-rw-r--r-- | lib/Target/ARM/ARMISelLowering.cpp | 131 | ||||
-rw-r--r-- | lib/Target/ARM/ARMISelLowering.h | 12 | ||||
-rw-r--r-- | lib/Target/ARM/ARMPerfectShuffle.h | 6586 | ||||
-rw-r--r-- | utils/PerfectShuffle/PerfectShuffle.cpp | 75 |
4 files changed, 6793 insertions, 11 deletions
diff --git a/lib/Target/ARM/ARMISelLowering.cpp b/lib/Target/ARM/ARMISelLowering.cpp index 2f194d39ba..18207c34a9 100644 --- a/lib/Target/ARM/ARMISelLowering.cpp +++ b/lib/Target/ARM/ARMISelLowering.cpp @@ -17,6 +17,7 @@ #include "ARMConstantPoolValue.h" #include "ARMISelLowering.h" #include "ARMMachineFunctionInfo.h" +#include "ARMPerfectShuffle.h" #include "ARMRegisterInfo.h" #include "ARMSubtarget.h" #include "ARMTargetMachine.h" @@ -2488,6 +2489,26 @@ static SDValue LowerBUILD_VECTOR(SDValue Op, SelectionDAG &DAG) { bool ARMTargetLowering::isShuffleMaskLegal(const SmallVectorImpl<int> &M, EVT VT) const { + if (VT.getVectorNumElements() == 4 && + (VT.is128BitVector() || VT.is64BitVector())) { + unsigned PFIndexes[4]; + for (unsigned i = 0; i != 4; ++i) { + if (M[i] < 0) + PFIndexes[i] = 8; + else + PFIndexes[i] = M[i]; + } + + // Compute the index in the perfect shuffle table. + unsigned PFTableIndex = + PFIndexes[0]*9*9*9+PFIndexes[1]*9*9+PFIndexes[2]*9+PFIndexes[3]; + unsigned PFEntry = PerfectShuffleTable[PFTableIndex]; + unsigned Cost = (PFEntry >> 30); + + if (Cost <= 4) + return true; + } + bool ReverseVEXT; unsigned Imm; @@ -2498,10 +2519,84 @@ ARMTargetLowering::isShuffleMaskLegal(const SmallVectorImpl<int> &M, isVEXTMask(M, VT, ReverseVEXT, Imm)); } +/// GeneratePerfectShuffle - Given an entry in the perfect-shuffle table, emit +/// the specified operations to build the shuffle. +static SDValue GeneratePerfectShuffle(unsigned PFEntry, SDValue LHS, + SDValue RHS, SelectionDAG &DAG, + DebugLoc dl) { + unsigned OpNum = (PFEntry >> 26) & 0x0F; + unsigned LHSID = (PFEntry >> 13) & ((1 << 13)-1); + unsigned RHSID = (PFEntry >> 0) & ((1 << 13)-1); + + enum { + OP_COPY = 0, // Copy, used for things like <u,u,u,3> to say it is <0,1,2,3> + OP_VREV, + OP_VDUP0, + OP_VDUP1, + OP_VDUP2, + OP_VDUP3, + OP_VEXT1, + OP_VEXT2, + OP_VEXT3, + OP_VUZPL, // VUZP, left result + OP_VUZPR, // VUZP, right result + OP_VZIPL, // VZIP, left result + OP_VZIPR, // VZIP, right result + OP_VTRNL, // VTRN, left result + OP_VTRNR // VTRN, right result + }; + + if (OpNum == OP_COPY) { + if (LHSID == (1*9+2)*9+3) return LHS; + assert(LHSID == ((4*9+5)*9+6)*9+7 && "Illegal OP_COPY!"); + return RHS; + } + + SDValue OpLHS, OpRHS; + OpLHS = GeneratePerfectShuffle(PerfectShuffleTable[LHSID], LHS, RHS, DAG, dl); + OpRHS = GeneratePerfectShuffle(PerfectShuffleTable[RHSID], LHS, RHS, DAG, dl); + EVT VT = OpLHS.getValueType(); + + switch (OpNum) { + default: llvm_unreachable("Unknown shuffle opcode!"); + case OP_VREV: + return DAG.getNode(ARMISD::VREV64, dl, VT, OpLHS); + case OP_VDUP0: + case OP_VDUP1: + case OP_VDUP2: + case OP_VDUP3: + return DAG.getNode(ARMISD::VDUPLANE, dl, VT, + OpLHS, DAG.getConstant(OpNum-OP_VDUP0+1, MVT::i32)); + case OP_VEXT1: + case OP_VEXT2: + case OP_VEXT3: + return DAG.getNode(ARMISD::VEXT, dl, VT, + OpLHS, OpRHS, + DAG.getConstant(OpNum-OP_VEXT1+1, MVT::i32)); + case OP_VUZPL: + case OP_VUZPR: + return DAG.getNode(VT.is64BitVector() ? ARMISD::VUZP16 : ARMISD::VUZP32, + dl, DAG.getVTList(VT, VT), + OpLHS, OpRHS).getValue(OpNum-OP_VUZPL); + case OP_VZIPL: + case OP_VZIPR: + return DAG.getNode(VT.is64BitVector() ? ARMISD::VZIP16 : ARMISD::VZIP32, + dl, DAG.getVTList(VT, VT), + OpLHS, OpRHS).getValue(OpNum-OP_VZIPL); + case OP_VTRNL: + case OP_VTRNR: + return DAG.getNode(VT.is64BitVector() ? ARMISD::VTRN16 : ARMISD::VTRN32, + dl, DAG.getVTList(VT, VT), + OpLHS, OpRHS).getValue(0); + } +} + static SDValue LowerVECTOR_SHUFFLE(SDValue Op, SelectionDAG &DAG) { - ShuffleVectorSDNode *SVN = cast<ShuffleVectorSDNode>(Op.getNode()); + SDValue V1 = Op.getOperand(0); + SDValue V2 = Op.getOperand(1); DebugLoc dl = Op.getDebugLoc(); EVT VT = Op.getValueType(); + ShuffleVectorSDNode *SVN = cast<ShuffleVectorSDNode>(Op.getNode()); SmallVector<int, 8> ShuffleMask; // Convert shuffles that are directly supported on NEON to target-specific @@ -2514,11 +2609,10 @@ static SDValue LowerVECTOR_SHUFFLE(SDValue Op, SelectionDAG &DAG) { if (ShuffleVectorSDNode::isSplatMask(&ShuffleMask[0], VT)) { int Lane = SVN->getSplatIndex(); - SDValue Op0 = SVN->getOperand(0); - if (Lane == 0 && Op0.getOpcode() == ISD::SCALAR_TO_VECTOR) { - return DAG.getNode(ARMISD::VDUP, dl, VT, Op0.getOperand(0)); + if (Lane == 0 && V1.getOpcode() == ISD::SCALAR_TO_VECTOR) { + return DAG.getNode(ARMISD::VDUP, dl, VT, V1.getOperand(0)); } - return DAG.getNode(ARMISD::VDUPLANE, dl, VT, SVN->getOperand(0), + return DAG.getNode(ARMISD::VDUPLANE, dl, VT, V1, DAG.getConstant(Lane, MVT::i32)); } @@ -2534,11 +2628,32 @@ static SDValue LowerVECTOR_SHUFFLE(SDValue Op, SelectionDAG &DAG) { } if (isVREVMask(ShuffleMask, VT, 64)) - return DAG.getNode(ARMISD::VREV64, dl, VT, SVN->getOperand(0)); + return DAG.getNode(ARMISD::VREV64, dl, VT, V1); if (isVREVMask(ShuffleMask, VT, 32)) - return DAG.getNode(ARMISD::VREV32, dl, VT, SVN->getOperand(0)); + return DAG.getNode(ARMISD::VREV32, dl, VT, V1); if (isVREVMask(ShuffleMask, VT, 16)) - return DAG.getNode(ARMISD::VREV16, dl, VT, SVN->getOperand(0)); + return DAG.getNode(ARMISD::VREV16, dl, VT, V1); + + if (VT.getVectorNumElements() == 4 && + (VT.is128BitVector() || VT.is64BitVector())) { + unsigned PFIndexes[4]; + for (unsigned i = 0; i != 4; ++i) { + if (ShuffleMask[i] < 0) + PFIndexes[i] = 8; + else + PFIndexes[i] = ShuffleMask[i]; + } + + // Compute the index in the perfect shuffle table. + unsigned PFTableIndex = + PFIndexes[0]*9*9*9+PFIndexes[1]*9*9+PFIndexes[2]*9+PFIndexes[3]; + + unsigned PFEntry = PerfectShuffleTable[PFTableIndex]; + unsigned Cost = (PFEntry >> 30); + + if (Cost <= 4) + return GeneratePerfectShuffle(PFEntry, V1, V2, DAG, dl); + } return SDValue(); } diff --git a/lib/Target/ARM/ARMISelLowering.h b/lib/Target/ARM/ARMISelLowering.h index b72a59f317..c54eddd88c 100644 --- a/lib/Target/ARM/ARMISelLowering.h +++ b/lib/Target/ARM/ARMISelLowering.h @@ -131,7 +131,17 @@ namespace llvm { VEXT, // extract VREV64, // reverse elements within 64-bit doublewords VREV32, // reverse elements within 32-bit words - VREV16 // reverse elements within 16-bit halfwords + VREV16, // reverse elements within 16-bit halfwords + + VZIP32, + VZIP16, + VZIP8, + VUZP32, + VUZP16, + VUZP8, + VTRN32, + VTRN16, + VTRN8 }; } diff --git a/lib/Target/ARM/ARMPerfectShuffle.h b/lib/Target/ARM/ARMPerfectShuffle.h new file mode 100644 index 0000000000..51da27aeb9 --- /dev/null +++ b/lib/Target/ARM/ARMPerfectShuffle.h @@ -0,0 +1,6586 @@ +//===-- ARMPerfectShuffle.h - NEON Perfect Shuffle Table ------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file, which was autogenerated by llvm-PerfectShuffle, contains data +// for the optimal way to build a perfect shuffle using neon instructions. +// +//===----------------------------------------------------------------------===// + +// 31 entries have cost 0 +// 242 entries have cost 1 +// 1374 entries have cost 2 +// 3515 entries have cost 3 +// 1390 entries have cost 4 +// 9 entries have cost 5 + +// This table is 6561*4 = 26244 bytes in size. +static const unsigned PerfectShuffleTable[6561+1] = { + 135053414U, // <0,0,0,0>: Cost 1 vdup0 LHS + 1543503974U, // <0,0,0,1>: Cost 2 vext2 <0,0,0,0>, LHS + 2819407872U, // <0,0,0,2>: Cost 3 vuzpr LHS, <0,0,0,0> + 2568054923U, // <0,0,0,3>: Cost 3 vext1 <3,0,0,0>, <3,0,0,0> + 1476398390U, // <0,0,0,4>: Cost 2 vext1 <0,0,0,0>, RHS + 2550140624U, // <0,0,0,5>: Cost 3 vext1 <0,0,0,0>, <5,1,7,3> + 2550141434U, // <0,0,0,6>: Cost 3 vext1 <0,0,0,0>, <6,2,7,3> + 2591945711U, // <0,0,0,7>: Cost 3 vext1 <7,0,0,0>, <7,0,0,0> + 135053414U, // <0,0,0,u>: Cost 1 vdup0 LHS + 2556117094U, // <0,0,1,0>: Cost 3 vext1 <1,0,0,1>, LHS + 1879883878U, // <0,0,1,1>: Cost 2 vzipr LHS, LHS + 1618133094U, // <0,0,1,2>: Cost 2 vext3 <1,2,3,0>, LHS + 2568063116U, // <0,0,1,3>: Cost 3 vext1 <3,0,0,1>, <3,0,0,1> + 2556120374U, // <0,0,1,4>: Cost 3 vext1 <1,0,0,1>, RHS + 2617246864U, // <0,0,1,5>: Cost 3 vext2 <0,0,0,0>, <1,5,3,7> + 3629863418U, // <0,0,1,6>: Cost 4 vext1 <1,0,0,1>, <6,2,7,3> + 2591953904U, // <0,0,1,7>: Cost 3 vext1 <7,0,0,1>, <7,0,0,1> + 1884528742U, // <0,0,1,u>: Cost 2 vzipr LHS, LHS + 3088351334U, // <0,0,2,0>: Cost 3 vtrnr <0,2,0,2>, LHS + 2953625764U, // <0,0,2,1>: Cost 3 vzipr LHS, <0,2,0,2> + 2014101606U, // <0,0,2,2>: Cost 2 vtrnr LHS, LHS + 2631181989U, // <0,0,2,3>: Cost 3 vext2 <2,3,0,0>, <2,3,0,0> + 2562100534U, // <0,0,2,4>: Cost 3 vext1 <2,0,0,2>, RHS + 3635842768U, // <0,0,2,5>: Cost 4 vext1 <2,0,0,2>, <5,1,7,3> + 2617247674U, // <0,0,2,6>: Cost 3 vext2 <0,0,0,0>, <2,6,3,7> + 2591962097U, // <0,0,2,7>: Cost 3 vext1 <7,0,0,2>, <7,0,0,2> + 2014543974U, // <0,0,2,u>: Cost 2 vtrnr LHS, LHS + 2635163787U, // <0,0,3,0>: Cost 3 vext2 <3,0,0,0>, <3,0,0,0> + 3704260849U, // <0,0,3,1>: Cost 4 vext2 <2,2,0,0>, <3,1,2,3> + 2686492933U, // <0,0,3,2>: Cost 3 vext3 <0,3,2,0>, <0,3,2,0> + 2617248156U, // <0,0,3,3>: Cost 3 vext2 <0,0,0,0>, <3,3,3,3> + 2617248258U, // <0,0,3,4>: Cost 3 vext2 <0,0,0,0>, <3,4,5,6> + 3913302016U, // <0,0,3,5>: Cost 4 vuzpr <3,4,5,6>, <0,0,0,0> + 3690990218U, // <0,0,3,6>: Cost 4 vext2 <0,0,0,0>, <3,6,2,7> + 3690990275U, // <0,0,3,7>: Cost 4 vext2 <0,0,0,0>, <3,7,0,1> + 2635163787U, // <0,0,3,u>: Cost 3 vext2 <3,0,0,0>, <3,0,0,0> + 2643790738U, // <0,0,4,0>: Cost 3 vext2 <4,4,0,0>, <4,0,5,1> + 2718712146U, // <0,0,4,1>: Cost 3 vext3 <5,6,7,0>, <0,4,1,5> + 2718712156U, // <0,0,4,2>: Cost 3 vext3 <5,6,7,0>, <0,4,2,6> + 3641829519U, // <0,0,4,3>: Cost 4 vext1 <3,0,0,4>, <3,0,0,4> + 2643791016U, // <0,0,4,4>: Cost 3 vext2 <4,4,0,0>, <4,4,0,0> + 1543507254U, // <0,0,4,5>: Cost 2 vext2 <0,0,0,0>, RHS + 2846277632U, // <0,0,4,6>: Cost 3 vuzpr RHS, <0,0,0,0> + 3665720307U, // <0,0,4,7>: Cost 4 vext1 <7,0,0,4>, <7,0,0,4> + 1543507497U, // <0,0,4,u>: Cost 2 vext2 <0,0,0,0>, RHS + 2684354972U, // <0,0,5,0>: Cost 3 vext3 <0,0,0,0>, <0,5,0,7> + 2617249488U, // <0,0,5,1>: Cost 3 vext2 <0,0,0,0>, <5,1,7,3> + 3696299808U, // <0,0,5,2>: Cost 4 vext2 <0,u,0,0>, <5,2,7,2> + 3690991471U, // <0,0,5,3>: Cost 4 vext2 <0,0,0,0>, <5,3,7,0> + 2617249734U, // <0,0,5,4>: Cost 3 vext2 <0,0,0,0>, <5,4,7,6> + 2617249796U, // <0,0,5,5>: Cost 3 vext2 <0,0,0,0>, <5,5,5,5> + 2718712274U, // <0,0,5,6>: Cost 3 vext3 <5,6,7,0>, <0,5,6,7> + 3923378176U, // <0,0,5,7>: Cost 4 vuzpr <5,1,7,3>, <0,0,0,0> + 2720039396U, // <0,0,5,u>: Cost 3 vext3 <5,u,7,0>, <0,5,u,7> + 2684355053U, // <0,0,6,0>: Cost 3 vext3 <0,0,0,0>, <0,6,0,7> + 3786113526U, // <0,0,6,1>: Cost 4 vext3 <4,6,2,0>, <0,6,1,7> + 2617250298U, // <0,0,6,2>: Cost 3 vext2 <0,0,0,0>, <6,2,7,3> + 3704263240U, // <0,0,6,3>: Cost 4 vext2 <2,2,0,0>, <6,3,7,0> + 3729478234U, // <0,0,6,4>: Cost 4 vext2 <6,4,0,0>, <6,4,0,0> + 3717534443U, // <0,0,6,5>: Cost 4 vext2 <4,4,0,0>, <6,5,7,1> + 2617250616U, // <0,0,6,6>: Cost 3 vext2 <0,0,0,0>, <6,6,6,6> + 2657727309U, // <0,0,6,7>: Cost 3 vext2 <6,7,0,0>, <6,7,0,0> + 2658390942U, // <0,0,6,u>: Cost 3 vext2 <6,u,0,0>, <6,u,0,0> + 2659054575U, // <0,0,7,0>: Cost 3 vext2 <7,0,0,0>, <7,0,0,0> + 3934208000U, // <0,0,7,1>: Cost 4 vuzpr <7,0,1,2>, <0,0,0,0> + 3934265508U, // <0,0,7,2>: Cost 4 vuzpr <7,0,2,0>, <0,2,0,2> + 3734787298U, // <0,0,7,3>: Cost 4 vext2 <7,3,0,0>, <7,3,0,0> + 2617251174U, // <0,0,7,4>: Cost 3 vext2 <0,0,0,0>, <7,4,5,6> + 3665743970U, // <0,0,7,5>: Cost 4 vext1 <7,0,0,7>, <5,6,7,0> + 3665744562U, // <0,0,7,6>: Cost 4 vext1 <7,0,0,7>, <6,5,0,7> + 2617251436U, // <0,0,7,7>: Cost 3 vext2 <0,0,0,0>, <7,7,7,7> + 2659054575U, // <0,0,7,u>: Cost 3 vext2 <7,0,0,0>, <7,0,0,0> + 135053414U, // <0,0,u,0>: Cost 1 vdup0 LHS + 1879884445U, // <0,0,u,1>: Cost 2 vzipr LHS, LHS + 2014101660U, // <0,0,u,2>: Cost 2 vtrnr LHS, LHS + 2568120467U, // <0,0,u,3>: Cost 3 vext1 <3,0,0,u>, <3,0,0,u> + 1476463926U, // <0,0,u,4>: Cost 2 vext1 <0,0,0,u>, RHS + 1543510170U, // <0,0,u,5>: Cost 2 vext2 <0,0,0,0>, RHS + 2870165504U, // <0,0,u,6>: Cost 3 vuzpr RHS, <0,0,0,0> + 2592011255U, // <0,0,u,7>: Cost 3 vext1 <7,0,0,u>, <7,0,0,u> + 135053414U, // <0,0,u,u>: Cost 1 vdup0 LHS + 2631188480U, // <0,1,0,0>: Cost 3 vext2 <2,3,0,1>, <0,0,0,0> + 1557446758U, // <0,1,0,1>: Cost 2 vext2 <2,3,0,1>, LHS + 2819448842U, // <0,1,0,2>: Cost 3 vuzpr LHS, <0,0,1,1> + 3020734464U, // <0,1,0,3>: Cost 3 vtrnl LHS, <0,0,0,0> + 2568129846U, // <0,1,0,4>: Cost 3 vext1 <3,0,1,0>, RHS + 3641872080U, // <0,1,0,5>: Cost 4 vext1 <3,0,1,0>, <5,1,7,3> + 2592019278U, // <0,1,0,6>: Cost 3 vext1 <7,0,1,0>, <6,7,0,1> + 2592019448U, // <0,1,0,7>: Cost 3 vext1 <7,0,1,0>, <7,0,1,0> + 1557447325U, // <0,1,0,u>: Cost 2 vext2 <2,3,0,1>, LHS + 1524252774U, // <0,1,1,0>: Cost 2 vext1 <u,0,1,1>, LHS + 2556191459U, // <0,1,1,1>: Cost 3 vext1 <1,0,1,1>, <1,0,1,1> + 2960310374U, // <0,1,1,2>: Cost 3 vzipr <1,2,3,0>, LHS + 3020734474U, // <0,1,1,3>: Cost 3 vtrnl LHS, <0,0,1,1> + 1524256054U, // <0,1,1,4>: Cost 2 vext1 <u,0,1,1>, RHS + 2580082247U, // <0,1,1,5>: Cost 3 vext1 <5,0,1,1>, <5,0,1,1> + 2597999098U, // <0,1,1,6>: Cost 3 vext1 <u,0,1,1>, <6,2,7,3> + 2597999610U, // <0,1,1,7>: Cost 3 vext1 <u,0,1,1>, <7,0,1,2> + 1524258514U, // <0,1,1,u>: Cost 2 vext1 <u,0,1,1>, <u,0,1,1> + 1494401126U, // <0,1,2,0>: Cost 2 vext1 <3,0,1,2>, LHS + 2556199652U, // <0,1,2,1>: Cost 3 vext1 <1,0,1,2>, <1,0,1,2> + 2562172349U, // <0,1,2,2>: Cost 3 vext1 <2,0,1,2>, <2,0,1,2> + 835584U, // <0,1,2,3>: Cost 0 copy LHS + 1494404406U, // <0,1,2,4>: Cost 2 vext1 <3,0,1,2>, RHS + 2568146640U, // <0,1,2,5>: Cost 3 vext1 <3,0,1,2>, <5,1,7,3> + 2568147450U, // <0,1,2,6>: Cost 3 vext1 <3,0,1,2>, <6,2,7,3> + 1518294010U, // <0,1,2,7>: Cost 2 vext1 <7,0,1,2>, <7,0,1,2> + 835584U, // <0,1,2,u>: Cost 0 copy LHS + 2631190676U, // <0,1,3,0>: Cost 3 vext2 <2,3,0,1>, <3,0,1,0> + 3696969948U, // <0,1,3,1>: Cost 4 vext2 <1,0,0,1>, <3,1,0,0> + 2631190856U, // <0,1,3,2>: Cost 3 vext2 <2,3,0,1>, <3,2,3,0> + 2692539367U, // <0,1,3,3>: Cost 3 vext3 <1,3,3,0>, <1,3,3,0> + 2631191042U, // <0,1,3,4>: Cost 3 vext2 <2,3,0,1>, <3,4,5,6> + 3704932898U, // <0,1,3,5>: Cost 4 vext2 <2,3,0,1>, <3,5,0,2> + 2657733296U, // <0,1,3,6>: Cost 3 vext2 <6,7,0,1>, <3,6,7,0> + 2639817411U, // <0,1,3,7>: Cost 3 vext2 <3,7,0,1>, <3,7,0,1> + 2692908052U, // <0,1,3,u>: Cost 3 vext3 <1,3,u,0>, <1,3,u,0> + 2631191442U, // <0,1,4,0>: Cost 3 vext2 <2,3,0,1>, <4,0,5,1> + 3704933322U, // <0,1,4,1>: Cost 4 vext2 <2,3,0,1>, <4,1,2,3> + 2568160934U, // <0,1,4,2>: Cost 3 vext1 <3,0,1,4>, <2,3,0,1> + 2568161432U, // <0,1,4,3>: Cost 3 vext1 <3,0,1,4>, <3,0,1,4> + 2568162614U, // <0,1,4,4>: Cost 3 vext1 <3,0,1,4>, RHS + 1557450038U, // <0,1,4,5>: Cost 2 vext2 <2,3,0,1>, RHS + 2631191884U, // <0,1,4,6>: Cost 3 vext2 <2,3,0,1>, <4,6,0,2> + 2592052220U, // <0,1,4,7>: Cost 3 vext1 <7,0,1,4>, <7,0,1,4> + 1557450281U, // <0,1,4,u>: Cost 2 vext2 <2,3,0,1>, RHS + 3704933959U, // <0,1,5,0>: Cost 4 vext2 <2,3,0,1>, <5,0,1,1> + 2631192272U, // <0,1,5,1>: Cost 3 vext2 <2,3,0,1>, <5,1,7,3> + 3696308006U, // <0,1,5,2>: Cost 4 vext2 <0,u,0,1>, <5,2,7,u> + 2718712976U, // <0,1,5,3>: Cost 3 vext3 <5,6,7,0>, <1,5,3,7> + 2657734598U, // <0,1,5,4>: Cost 3 vext2 <6,7,0,1>, <5,4,7,6> + 2657734660U, // <0,1,5,5>: Cost 3 vext2 <6,7,0,1>, <5,5,5,5> + 2651099172U, // <0,1,5,6>: Cost 3 vext2 <5,6,0,1>, <5,6,0,1> + 3704934518U, // <0,1,5,7>: Cost 4 vext2 <2,3,0,1>, <5,7,0,2> + 2631192839U, // <0,1,5,u>: Cost 3 vext2 <2,3,0,1>, <5,u,7,3> + 2592063590U, // <0,1,6,0>: Cost 3 vext1 <7,0,1,6>, LHS + 3704934780U, // <0,1,6,1>: Cost 4 vext2 <2,3,0,1>, <6,1,2,3> + 2631193082U, // <0,1,6,2>: Cost 3 vext2 <2,3,0,1>, <6,2,7,3> + 3704934984U, // <0,1,6,3>: Cost 4 vext2 <2,3,0,1>, <6,3,7,0> + 2592066870U, // <0,1,6,4>: Cost 3 vext1 <7,0,1,6>, RHS + 3721523947U, // <0,1,6,5>: Cost 4 vext2 <5,1,0,1>, <6,5,7,1> + 2657735480U, // <0,1,6,6>: Cost 3 vext2 <6,7,0,1>, <6,6,6,6> + 1583993678U, // <0,1,6,7>: Cost 2 vext2 <6,7,0,1>, <6,7,0,1> + 1584657311U, // <0,1,6,u>: Cost 2 vext2 <6,u,0,1>, <6,u,0,1> + 2657735672U, // <0,1,7,0>: Cost 3 vext2 <6,7,0,1>, <7,0,1,0> + 3731477571U, // <0,1,7,1>: Cost 4 vext2 <6,7,0,1>, <7,1,0,3> + 2631193772U, // <0,1,7,2>: Cost 3 vext2 <2,3,0,1>, <7,2,3,0> + 2661053667U, // <0,1,7,3>: Cost 3 vext2 <7,3,0,1>, <7,3,0,1> + 2657736038U, // <0,1,7,4>: Cost 3 vext2 <6,7,0,1>, <7,4,5,6> + 3721524621U, // <0,1,7,5>: Cost 4 vext2 <5,1,0,1>, <7,5,1,0> + 2657736158U, // <0,1,7,6>: Cost 3 vext2 <6,7,0,1>, <7,6,1,0> + 2657736300U, // <0,1,7,7>: Cost 3 vext2 <6,7,0,1>, <7,7,7,7> + 2657736322U, // <0,1,7,u>: Cost 3 vext2 <6,7,0,1>, <7,u,1,2> + 1494450278U, // <0,1,u,0>: Cost 2 vext1 <3,0,1,u>, LHS + 1557452590U, // <0,1,u,1>: Cost 2 vext2 <2,3,0,1>, LHS + 2960310941U, // <0,1,u,2>: Cost 3 vzipr <1,2,3,0>, LHS + 835584U, // <0,1,u,3>: Cost 0 copy LHS + 1494453558U, // <0,1,u,4>: Cost 2 vext1 <3,0,1,u>, RHS + 1557452954U, // <0,1,u,5>: Cost 2 vext2 <2,3,0,1>, RHS + 2631194800U, // <0,1,u,6>: Cost 3 vext2 <2,3,0,1>, <u,6,0,2> + 1518343168U, // <0,1,u,7>: Cost 2 vext1 <7,0,1,u>, <7,0,1,u> + 835584U, // <0,1,u,u>: Cost 0 copy LHS + 2618589184U, // <0,2,0,0>: Cost 3 vext2 <0,2,0,2>, <0,0,0,0> + 1544847462U, // <0,2,0,1>: Cost 2 vext2 <0,2,0,2>, LHS + 1745666150U, // <0,2,0,2>: Cost 2 vuzpr LHS, LHS + 2886516736U, // <0,2,0,3>: Cost 3 vzipl LHS, <0,0,0,0> + 2562231606U, // <0,2,0,4>: Cost 3 vext1 <2,0,2,0>, RHS + 3635973840U, // <0,2,0,5>: Cost 4 vext1 <2,0,2,0>, <5,1,7,3> + 2586120488U, // <0,2,0,6>: Cost 3 vext1 <6,0,2,0>, <6,0,2,0> + 2592093185U, // <0,2,0,7>: Cost 3 vext1 <7,0,2,0>, <7,0,2,0> + 1746108518U, // <0,2,0,u>: Cost 2 vuzpr LHS, LHS + 2618589942U, // <0,2,1,0>: Cost 3 vext2 <0,2,0,2>, <1,0,3,2> + 2618590004U, // <0,2,1,1>: Cost 3 vext2 <0,2,0,2>, <1,1,1,1> + 2618590102U, // <0,2,1,2>: Cost 3 vext2 <0,2,0,2>, <1,2,3,0> + 2886518438U, // <0,2,1,3>: Cost 3 vzipl LHS, <2,3,0,1> + 2556267830U, // <0,2,1,4>: Cost 3 vext1 <1,0,2,1>, RHS + 2645132432U, // <0,2,1,5>: Cost 3 vext2 <4,6,0,2>, <1,5,3,7> + 2586128681U, // <0,2,1,6>: Cost 3 vext1 <6,0,2,1>, <6,0,2,1> + 3725509931U, // <0,2,1,7>: Cost 4 vext2 <5,7,0,2>, <1,7,3,0> + 2886559398U, // <0,2,1,u>: Cost 3 vzipl LHS, <2,3,0,1> + 1524334694U, // <0,2,2,0>: Cost 2 vext1 <u,0,2,2>, LHS + 2618590744U, // <0,2,2,1>: Cost 3 vext2 <0,2,0,2>, <2,1,2,3> + 2618590824U, // <0,2,2,2>: Cost 3 vext2 <0,2,0,2>, <2,2,2,2> + 2886516900U, // <0,2,2,3>: Cost 3 vzipl LHS, <0,2,0,2> + 1524337974U, // <0,2,2,4>: Cost 2 vext1 <u,0,2,2>, RHS + 2598080208U, // <0,2,2,5>: Cost 3 vext1 <u,0,2,2>, <5,1,7,3> + 2645133242U, // <0,2,2,6>: Cost 3 vext2 <4,6,0,2>, <2,6,3,7> + 2598081530U, // <0,2,2,7>: Cost 3 vext1 <u,0,2,2>, <7,0,1,2> + 1524340444U, // <0,2,2,u>: Cost 2 vext1 <u,0,2,2>, <u,0,2,2> + 2618591382U, // <0,2,3,0>: Cost 3 vext2 <0,2,0,2>, <3,0,1,2> + 2691876528U, // <0,2,3,1>: Cost 3 vext3 <1,2,3,0>, <2,3,1,2> + 3692333360U, // <0,2,3,2>: Cost 4 vext2 <0,2,0,2>, <3,2,0,3> + 2618591644U, // <0,2,3,3>: Cost 3 vext2 <0,2,0,2>, <3,3,3,3> + 2618591746U, // <0,2,3,4>: Cost 3 vext2 <0,2,0,2>, <3,4,5,6> + 2839560294U, // <0,2,3,5>: Cost 3 vuzpr <3,4,5,6>, LHS + 3692333706U, // <0,2,3,6>: Cost 4 vext2 <0,2,0,2>, <3,6,2,7> + 2698807012U, // <0,2,3,7>: Cost 3 vext3 <2,3,7,0>, <2,3,7,0> + 2618592030U, // <0,2,3,u>: Cost 3 vext2 <0,2,0,2>, <3,u,1,2> + 2618592146U, // <0,2,4,0>: Cost 3 vext2 <0,2,0,2>, <4,0,5,1> + 3692334062U, // <0,2,4,1>: Cost 4 vext2 <0,2,0,2>, <4,1,6,3> + 2226718152U, // <0,2,4,2>: Cost 3 vrev <2,0,2,4> + 2568235169U, // <0,2,4,3>: Cost 3 vext1 <3,0,2,4>, <3,0,2,4> + 2562264374U, // <0,2,4,4>: Cost 3 vext1 <2,0,2,4>, RHS + 1544850742U, // <0,2,4,5>: Cost 2 vext2 <0,2,0,2>, RHS + 1772535910U, // <0,2,4,6>: Cost 2 vuzpr RHS, LHS + 2592125957U, // <0,2,4,7>: Cost 3 vext1 <7,0,2,4>, <7,0,2,4> + 1544850985U, // <0,2,4,u>: Cost 2 vext2 <0,2,0,2>, RHS + 2691876686U, // <0,2,5,0>: Cost 3 vext3 <1,2,3,0>, <2,5,0,7> + 2618592976U, // <0,2,5,1>: Cost 3 vext2 <0,2,0,2>, <5,1,7,3> + 2618593056U, // <0,2,5,2>: Cost 3 vext2 <0,2,0,2>, <5,2,7,2> + 3964905940U, // <0,2,5,3>: Cost 4 vzipl LHS, <3,4,0,5> + 2645135302U, // <0,2,5,4>: Cost 3 vext2 <4,6,0,2>, <5,4,7,6> + 2645135364U, // <0,2,5,5>: Cost 3 vext2 <4,6,0,2>, <5,5,5,5> + 2645135458U, // <0,2,5,6>: Cost 3 vext2 <4,6,0,2>, <5,6,7,0> + 2849636454U, // <0,2,5,7>: Cost 3 vuzpr <5,1,7,3>, LHS + 2645135620U, // <0,2,5,u>: Cost 3 vext2 <4,6,0,2>, <5,u,7,0> + 2645135656U, // <0,2,6,0>: Cost 3 vext2 <4,6,0,2>, <6,0,2,0> + 2645135740U, // <0,2,6,1>: Cost 3 vext2 <4,6,0,2>, <6,1,2,3> + 2618593786U, // <0,2,6,2>: Cost 3 vext2 <0,2,0,2>, <6,2,7,3> + 2718713786U, // <0,2,6,3>: Cost 3 vext3 <5,6,7,0>, <2,6,3,7> + 2645135980U, // <0,2,6,4>: Cost 3 vext2 <4,6,0,2>, <6,4,2,0> + 2645136068U, // <0,2,6,5>: Cost 3 vext2 <4,6,0,2>, <6,5,2,7> + 2645136184U, // <0,2,6,6>: Cost 3 vext2 <4,6,0,2>, <6,6,6,6> + 2645136206U, // <0,2,6,7>: Cost 3 vext2 <4,6,0,2>, <6,7,0,1> + 2618594272U, // <0,2,6,u>: Cost 3 vext2 <0,2,0,2>, <6,u,7,3> + 2645136378U, // <0,2,7,0>: Cost 3 vext2 <4,6,0,2>, <7,0,1,2> + 2860466278U, // <0,2,7,1>: Cost 3 vuzpr <7,0,1,2>, LHS + 3692336303U, // <0,2,7,2>: Cost 4 vext2 <0,2,0,2>, <7,2,3,3> + 2701166596U, // <0,2,7,3>: Cost 3 vext3 <2,7,3,0>, <2,7,3,0> + 2645136742U, // <0,2,7,4>: Cost 3 vext2 <4,6,0,2>, <7,4,5,6> + 2863448166U, // <0,2,7,5>: Cost 3 vuzpr <7,4,5,6>, LHS + 3718878688U, // <0,2,7,6>: Cost 4 vext2 <4,6,0,2>, <7,6,1,2> + 2645137004U, // <0,2,7,7>: Cost 3 vext2 <4,6,0,2>, <7,7,7,7> + 2645137026U, // <0,2,7,u>: Cost 3 vext2 <4,6,0,2>, <7,u,1,2> + 1524383846U, // <0,2,u,0>: Cost 2 vext1 <u,0,2,u>, LHS + 1544853294U, // <0,2,u,1>: Cost 2 vext2 <0,2,0,2>, LHS + 1793441894U, // <0,2,u,2>: Cost 2 vuzpr LHS, LHS + 2886518445U, // <0,2,u,3>: Cost 3 vzipl LHS, <2,3,0,u> + 1524387126U, // <0,2,u,4>: Cost 2 vext1 <u,0,2,u>, RHS + 1544853658U, // <0,2,u,5>: Cost 2 vext2 <0,2,0,2>, RHS + 1796423782U, // <0,2,u,6>: Cost 2 vuzpr RHS, LHS + 2645137664U, // <0,2,u,7>: Cost 3 vext2 <4,6,0,2>, <u,7,0,1> + 1544853861U, // <0,2,u,u>: Cost 2 vext2 <0,2,0,2>, LHS + 2618597376U, // <0,3,0,0>: Cost 3 vext2 <0,2,0,3>, <0,0,0,0> + 2618597478U, // <0,3,0,1>: Cost 3 vext2 <0,2,0,3>, LHS + 2618597541U, // <0,3,0,2>: Cost 3 vext2 <0,2,0,3>, <0,2,0,3> + 3692339443U, // <0,3,0,3>: Cost 4 vext2 <0,2,0,3>, <0,3,0,0> + 2691877044U, // <0,3,0,4>: Cost 3 vext3 <1,2,3,0>, <3,0,4,5> + 3765618873U, // <0,3,0,5>: Cost 4 vext3 <1,2,3,0>, <3,0,5,1> + 3765618883U, // <0,3,0,6>: Cost 4 vext3 <1,2,3,0>, <3,0,6,2> + 3665908746U, // <0,3,0,7>: Cost 4 vext1 <7,0,3,0>, <7,0,3,0> + 2618598045U, // <0,3,0,u>: Cost 3 vext2 <0,2,0,3>, LHS + 2562310246U, // <0,3,1,0>: Cost 3 vext1 <2,0,3,1>, LHS + 3692340020U, // <0,3,1,1>: Cost 4 vext2 <0,2,0,3>, <1,1,1,1> + 2691877105U, // <0,3,1,2>: Cost 3 vext3 <1,2,3,0>, <3,1,2,3> + 2568284327U, // <0,3,1,3>: Cost 3 vext1 <3,0,3,1>, <3,0,3,1> + 2562313526U, // <0,3,1,4>: Cost 3 vext1 <2,0,3,1>, RHS + 3765618956U, // <0,3,1,5>: Cost 4 vext3 <1,2,3,0>, <3,1,5,3> + 3636056570U, // <0,3,1,6>: Cost 4 vext1 <2,0,3,1>, <6,2,7,3> + 3665916939U, // <0,3,1,7>: Cost 4 vext1 <7,0,3,1>, <7,0,3,1> + 2695858471U, // <0,3,1,u>: Cost 3 vext3 <1,u,3,0>, <3,1,u,3> + 1482604646U, // <0,3,2,0>: Cost 2 vext1 <1,0,3,2>, LHS + 1482605302U, // <0,3,2,1>: Cost 2 vext1 <1,0,3,2>, <1,0,3,2> + 2556348008U, // <0,3,2,2>: Cost 3 vext1 <1,0,3,2>, <2,2,2,2> + 2556348566U, // <0,3,2,3>: Cost 3 vext1 <1,0,3,2>, <3,0,1,2> + 1482607926U, // <0,3,2,4>: Cost 2 vext1 <1,0,3,2>, RHS + 2556350160U, // <0,3,2,5>: Cost 3 vext1 <1,0,3,2>, <5,1,7,3> + 2556350970U, // <0,3,2,6>: Cost 3 vext1 <1,0,3,2>, <6,2,7,3> + 2598155258U, // <0,3,2,7>: Cost 3 vext1 <u,0,3,2>, <7,0,1,2> + 1482610478U, // <0,3,2,u>: Cost 2 vext1 <1,0,3,2>, LHS + 3692341387U, // <0,3,3,0>: Cost 4 vext2 <0,2,0,3>, <3,0,0,0> + 2635851999U, // <0,3,3,1>: Cost 3 vext2 <3,1,0,3>, <3,1,0,3> + 2636515632U, // <0,3,3,2>: Cost 3 vext2 <3,2,0,3>, <3,2,0,3> + 2691877276U, // <0,3,3,3>: Cost 3 vext3 <1,2,3,0>, <3,3,3,3> + 3692341762U, // <0,3,3,4>: Cost 4 vext2 <0,2,0,3>, <3,4,5,6> + 3778374059U, // <0,3,3,5>: Cost 4 vext3 <3,3,5,0>, <3,3,5,0> + 3692341898U, // <0,3,3,6>: Cost 5 vext2 <0,2,0,3>, <3,6,2,7> + 3665933325U, // <0,3,3,7>: Cost 4 vext1 <7,0,3,3>, <7,0,3,3> + 2640497430U, // <0,3,3,u>: Cost 3 vext2 <3,u,0,3>, <3,u,0,3> + 3692342162U, // <0,3,4,0>: Cost 4 vext2 <0,2,0,3>, <4,0,5,1> + 2232617112U, // <0,3,4,1>: Cost 3 vrev <3,0,1,4> + 2232690849U, // <0,3,4,2>: Cost 3 vrev <3,0,2,4> + 3306506410U, // <0,3,4,3>: Cost 4 vrev <3,0,3,4> + 3765987832U, // <0,3,4,4>: Cost 4 vext3 <1,2,u,0>, <3,4,4,5> + 2618600758U, // <0,3,4,5>: Cost 3 vext2 <0,2,0,3>, RHS + 2705369605U, // <0,3,4,6>: Cost 3 vext3 <3,4,6,0>, <3,4,6,0> + 3665941518U, // <0,3,4,7>: Cost 4 vext1 <7,0,3,4>, <7,0,3,4> + 2618601001U, // <0,3,4,u>: Cost 3 vext2 <0,2,0,3>, RHS + 3765619234U, // <0,3,5,0>: Cost 4 vext3 <1,2,3,0>, <3,5,0,2> + 3692342992U, // <0,3,5,1>: Cost 4 vext2 <0,2,0,3>, <5,1,7,3> + 3708268318U, // <0,3,5,2>: Cost 4 vext2 <2,u,0,3>, <5,2,7,0> + 3648031234U, // <0,3,5,3>: Cost 4 vext1 <4,0,3,5>, <3,4,5,6> + 2232846516U, // <0,3,5,4>: Cost 3 vrev <3,0,4,5> + 3779701325U, // <0,3,5,5>: Cost 4 vext3 <3,5,5,0>, <3,5,5,0> + 2718714461U, // <0,3,5,6>: Cost 3 vext3 <5,6,7,0>, <3,5,6,7> + 3779848799U, // <0,3,5,7>: Cost 4 vext3 <3,5,7,0>, <3,5,7,0> + 2233141464U, // <0,3,5,u>: Cost 3 vrev <3,0,u,5> + 3648036966U, // <0,3,6,0>: Cost 4 vext1 <4,0,3,6>, LHS + 3306375322U, // <0,3,6,1>: Cost 4 vrev <3,0,1,6> + 3692343802U, // <0,3,6,2>: Cost 4 vext2 <0,2,0,3>, <6,2,7,3> + 3703624266U, // <0,3,6,3>: Cost 4 vext2 <2,1,0,3>, <6,3,7,2> + 3306596533U, // <0,3,6,4>: Cost 4 vrev <3,0,4,6> + 3306670270U, // <0,3,6,5>: Cost 4 vrev <3,0,5,6> + 3733484344U, // <0,3,6,6>: Cost 4 vext2 <7,1,0,3>, <6,6,6,6> + 2706770608U, // <0,3,6,7>: Cost 3 vext3 <3,6,7,0>, <3,6,7,0> + 2706844345U, // <0,3,6,u>: Cost 3 vext3 <3,6,u,0>, <3,6,u,0> + 3796437698U, // <0,3,7,0>: Cost 4 vext3 <6,3,7,0>, <3,7,0,0> + 2659742787U, // <0,3,7,1>: Cost 3 vext2 <7,1,0,3>, <7,1,0,3> + 3734148244U, // <0,3,7,2>: Cost 4 vext2 <7,2,0,3>, <7,2,0,3> + 3734811877U, // <0,3,7,3>: Cost 4 vext2 <7,3,0,3>, <7,3,0,3> + 3733484902U, // <0,3,7,4>: Cost 4 vext2 <7,1,0,3>, <7,4,5,6> + 3781028591U, // <0,3,7,5>: Cost 4 vext3 <3,7,5,0>, <3,7,5,0> + 3736802776U, // <0,3,7,6>: Cost 4 vext2 <7,6,0,3>, <7,6,0,3> + 3733485103U, // <0,3,7,7>: Cost 4 vext2 <7,1,0,3>, <7,7,1,0> + 2664388218U, // <0,3,7,u>: Cost 3 vext2 <7,u,0,3>, <7,u,0,3> + 1482653798U, // <0,3,u,0>: Cost 2 vext1 <1,0,3,u>, LHS + 1482654460U, // <0,3,u,1>: Cost 2 vext1 <1,0,3,u>, <1,0,3,u> + 2556397160U, // <0,3,u,2>: Cost 3 vext1 <1,0,3,u>, <2,2,2,2> + 2556397718U, // <0,3,u,3>: Cost 3 vext1 <1,0,3,u>, <3,0,1,2> + 1482657078U, // <0,3,u,4>: Cost 2 vext1 <1,0,3,u>, RHS + 2618603674U, // <0,3,u,5>: Cost 3 vext2 <0,2,0,3>, RHS + 2556400122U, // <0,3,u,6>: Cost 3 vext1 <1,0,3,u>, <6,2,7,3> + 2598204410U, // <0,3,u,7>: Cost 3 vext1 <u,0,3,u>, <7,0,1,2> + 1482659630U, // <0,3,u,u>: Cost 2 vext1 <1,0,3,u>, LHS + 2617278468U, // <0,4,0,0>: Cost 3 vext2 <0,0,0,4>, <0,0,0,4> + 2631213158U, // <0,4,0,1>: Cost 3 vext2 <2,3,0,4>, LHS + 2819408076U, // <0,4,0,2>: Cost 3 vuzpr LHS, <0,2,4,6> + 3642091695U, // <0,4,0,3>: Cost 4 vext1 <3,0,4,0>, <3,0,4,0> + 2657755474U, // <0,4,0,4>: Cost 3 vext2 <6,7,0,4>, <0,4,1,5> + 2691877778U, // <0,4,0,5>: Cost 3 vext3 <1,2,3,0>, <4,0,5,1> + 2691877788U, // <0,4,0,6>: Cost 3 vext3 <1,2,3,0>, <4,0,6,2> + 3665982483U, // <0,4,0,7>: Cost 4 vext1 <7,0,4,0>, <7,0,4,0> + 2691877805U, // <0,4,0,u>: Cost 3 vext3 <1,2,3,0>, <4,0,u,1> + 2568355942U, // <0,4,1,0>: Cost 3 vext1 <3,0,4,1>, LHS + 3704955700U, // <0,4,1,1>: Cost 4 vext2 <2,3,0,4>, <1,1,1,1> + 2631213974U, // <0,4,1,2>: Cost 3 vext2 <2,3,0,4>, <1,2,3,0> + 2568358064U, // <0,4,1,3>: Cost 3 vext1 <3,0,4,1>, <3,0,4,1> + 2568359222U, // <0,4,1,4>: Cost 3 vext1 <3,0,4,1>, RHS + 1906753638U, // <0,4,1,5>: Cost 2 vzipr RHS, LHS + 3114713098U, // <0,4,1,6>: Cost 3 vtrnr RHS, <0,0,1,1> + 2592248852U, // <0,4,1,7>: Cost 3 vext1 <7,0,4,1>, <7,0,4,1> + 1908744294U, // <0,4,1,u>: Cost 2 vzipr RHS, LHS + 2562392166U, // <0,4,2,0>: Cost 3 vext1 <2,0,4,2>, LHS + 2238573423U, // <0,4,2,1>: Cost 3 vrev <4,0,1,2> + 2562393560U, // <0,4,2,2>: Cost 3 vext1 <2,0,4,2>, <2,0,4,2> + 2631214761U, // <0,4,2,3>: Cost 3 vext2 <2,3,0,4>, <2,3,0,4> + 2562395446U, // <0,4,2,4>: Cost 3 vext1 <2,0,4,2>, RHS + 3111272550U, // <0,4,2,5>: Cost 3 vtrnr <4,0,5,1>, LHS + 2040971366U, // <0,4,2,6>: Cost 2 vtrnr RHS, LHS + 2592257045U, // <0,4,2,7>: Cost 3 vext1 <7,0,4,2>, <7,0,4,2> + 2041118822U, // <0,4,2,u>: Cost 2 vtrnr RHS, LHS + 3704957078U, // <0,4,3,0>: Cost 4 vext2 <2,3,0,4>, <3,0,1,2> + 3704957169U, // <0,4,3,1>: Cost 4 vext2 <2,3,0,4>, <3,1,2,3> + 3704957232U, // <0,4,3,2>: Cost 4 vext2 <2,3,0,4>, <3,2,0,3> + 3704957340U, // <0,4,3,3>: Cost 4 vext2 <2,3,0,4>, <3,3,3,3> + 3704957442U, // <0,4,3,4>: Cost 4 vext2 <2,3,0,4>, <3,4,5,6> + 3312618388U, // <0,4,3,5>: Cost 4 vrev <4,0,5,3> + 3312692125U, // <0,4,3,6>: Cost 4 vrev <4,0,6,3> + 3713583814U, // <0,4,3,7>: Cost 4 vext2 <3,7,0,4>, <3,7,0,4> + 3704957726U, // <0,4,3,u>: Cost 4 vext2 <2,3,0,4>, <3,u,1,2> + 2710899880U, // <0,4,4,0>: Cost 3 vext3 <4,4,0,0>, <4,4,0,0> + 3704957924U, // <0,4,4,1>: Cost 4 vext2 <2,3,0,4>, <4,1,5,2> + 3642123945U, // <0,4,4,2>: Cost 4 vext1 <3,0,4,4>, <2,3,0,4> + 3642124467U, // <0,4,4,3>: Cost 4 vext1 <3,0,4,4>, <3,0,4,4> + 2718715088U, // <0,4,4,4>: Cost 3 vext3 <5,6,7,0>, <4,4,4,4> + 2631216438U, // <0,4,4,5>: Cost 3 vext2 <2,3,0,4>, RHS + 2846277836U, // <0,4,4,6>: Cost 3 vuzpr RHS, <0,2,4,6> + 3666015255U, // <0,4,4,7>: Cost 4 vext1 <7,0,4,4>, <7,0,4,4> + 2631216681U, // <0,4,4,u>: Cost 3 vext2 <2,3,0,4>, RHS + 2568388710U, // <0,4,5,0>: Cost 3 vext1 <3,0,4,5>, LHS + 2568389526U, // <0,4,5,1>: Cost 3 vext1 <3,0,4,5>, <1,2,3,0> + 3636159963U, // <0,4,5,2>: Cost 4 vext1 <2,0,4,5>, <2,0,4,5> + 2568390836U, // <0,4,5,3>: Cost 3 vext1 <3,0,4,5>, <3,0,4,5> + 2568391990U, // <0,4,5,4>: Cost 3 vext1 <3,0,4,5>, RHS + 2592280674U, // <0,4,5,5>: Cost 3 vext1 <7,0,4,5>, <5,6,7,0> + 1618136374U, // <0,4,5,6>: Cost 2 vext3 <1,2,3,0>, RHS + 2592281624U, // <0,4,5,7>: Cost 3 vext1 <7,0,4,5>, <7,0,4,5> + 1618136392U, // <0,4,5,u>: Cost 2 vext3 <1,2,3,0>, RHS + 2691878220U, // <0,4,6,0>: Cost 3 vext3 <1,2,3,0>, <4,6,0,2> + 3765620052U, // <0,4,6,1>: Cost 4 vext3 <1,2,3,0>, <4,6,1,1> + 2712374620U, // <0,4,6,2>: Cost 3 vext3 <4,6,2,0>, <4,6,2,0> + 3704959560U, // <0,4,6,3>: Cost 4 vext2 <2,3,0,4>, <6,3,7,0> + 2712522094U, // <0,4,6,4>: Cost 3 vext3 <4,6,4,0>, <4,6,4,0> + 4054237677U, // <0,4,6,5>: Cost 4 vzipr RHS, <0,6,0,7> + 2712669568U, // <0,4,6,6>: Cost 3 vext3 <4,6,6,0>, <4,6,6,0> + 2657760081U, // <0,4,6,7>: Cost 3 vext2 <6,7,0,4>, <6,7,0,4> + 2712817042U, // <0,4,6,u>: Cost 3 vext3 <4,6,u,0>, <4,6,u,0> + 3731502074U, // <0,4,7,0>: Cost 4 vext2 <6,7,0,4>, <7,0,1,2> + 3934208204U, // <0,4,7,1>: Cost 4 vuzpr <7,0,1,2>, <0,2,4,6> + 3934298316U, // <0,4,7,2>: Cost 4 vuzpr <7,0,2,4>, <0,2,4,6> + 3734820070U, // <0,4,7,3>: Cost 4 vext2 <7,3,0,4>, <7,3,0,4> + 3731502438U, // <0,4,7,4>: Cost 4 vext2 <6,7,0,4>, <7,4,5,6> + 3937190092U, // <0,4,7,5>: Cost 4 vuzpr <7,4,5,6>, <0,2,4,6> + 2713333201U, // <0,4,7,6>: Cost 3 vext3 <4,7,6,0>, <4,7,6,0> + 3731502700U, // <0,4,7,7>: Cost 4 vext2 <6,7,0,4>, <7,7,7,7> + 2713480675U, // <0,4,7,u>: Cost 3 vext3 <4,7,u,0>, <4,7,u,0> + 2691878382U, // <0,4,u,0>: Cost 3 vext3 <1,2,3,0>, <4,u,0,2> + 2631218990U, // <0,4,u,1>: Cost 3 vext2 <2,3,0,4>, LHS + 2562442718U, // <0,4,u,2>: Cost 3 vext1 <2,0,4,u>, <2,0,4,u> + 2568415415U, // <0,4,u,3>: Cost 3 vext1 <3,0,4,u>, <3,0,4,u> + 2562444598U, // <0,4,u,4>: Cost 3 vext1 <2,0,4,u>, RHS + 1906754205U, // <0,4,u,5>: Cost 2 vzipr RHS, LHS + 1618136617U, // <0,4,u,6>: Cost 2 vext3 <1,2,3,0>, RHS + 2592306203U, // <0,4,u,7>: Cost 3 vext1 <7,0,4,u>, <7,0,4,u> + 1618136635U, // <0,4,u,u>: Cost 2 vext3 <1,2,3,0>, RHS + 3636191334U, // <0,5,0,0>: Cost 4 vext1 <2,0,5,0>, LHS + 2637856870U, // <0,5,0,1>: Cost 3 vext2 <3,4,0,5>, LHS + 3636192735U, // <0,5,0,2>: Cost 4 vext1 <2,0,5,0>, <2,0,5,0> + 3642165432U, // <0,5,0,3>: Cost 4 vext1 <3,0,5,0>, <3,0,5,0> + 3636194614U, // <0,5,0,4>: Cost 4 vext1 <2,0,5,0>, RHS + 3711598998U, // <0,5,0,5>: Cost 4 vext2 <3,4,0,5>, <0,5,0,1> + 2718715508U, // <0,5,0,6>: Cost 3 vext3 <5,6,7,0>, <5,0,6,1> + 3047604224U, // <0,5,0,7>: Cost 3 vtrnl RHS, <0,0,0,0> + 2637857437U, // <0,5,0,u>: Cost 3 vext2 <3,4,0,5>, LHS + 1500659814U, // <0,5,1,0>: Cost 2 vext1 <4,0,5,1>, LHS + 2574402294U, // <0,5,1,1>: Cost 3 vext1 <4,0,5,1>, <1,0,3,2> + 2574403176U, // <0,5,1,2>: Cost 3 vext1 <4,0,5,1>, <2,2,2,2> + 2574403734U, // <0,5,1,3>: Cost 3 vext1 <4,0,5,1>, <3,0,1,2> + 1500662674U, // <0,5,1,4>: Cost 2 vext1 <4,0,5,1>, <4,0,5,1> + 2574405328U, // <0,5,1,5>: Cost 3 vext1 <4,0,5,1>, <5,1,7,3> + 2574406138U, // <0,5,1,6>: Cost 3 vext1 <4,0,5,1>, <6,2,7,3> + 2691878608U, // <0,5,1,7>: Cost 3 vext3 <1,2,3,0>, <5,1,7,3> + 1500665646U, // <0,5,1,u>: Cost 2 vext1 <4,0,5,1>, LHS + 2568437862U, // <0,5,2,0>: Cost 3 vext1 <3,0,5,2>, LHS + 2244546120U, // <0,5,2,1>: Cost 3 vrev <5,0,1,2> + 3636209121U, // <0,5,2,2>: Cost 4 vext1 <2,0,5,2>, <2,0,5,2> + 2568439994U, // <0,5,2,3>: Cost 3 vext1 <3,0,5,2>, <3,0,5,2> + 2568441142U, // <0,5,2,4>: Cost 3 vext1 <3,0,5,2>, RHS + 3120595046U, // <0,5,2,5>: Cost 3 vtrnr <5,5,5,5>, LHS + 3765620504U, // <0,5,2,6>: Cost 4 vext3 <1,2,3,0>, <5,2,6,3> + 3047604244U, // <0,5,2,7>: Cost 3 vtrnl RHS, <0,0,2,2> + 2568443694U, // <0,5,2,u>: Cost 3 vext1 <3,0,5,2>, LHS + 3710937274U, // <0,5,3,0>: Cost 4 vext2 <3,3,0,5>, <3,0,5,2> + 3790024505U, // <0,5,3,1>: Cost 4 vext3 <5,3,1,0>, <5,3,1,0> + 3318369874U, // <0,5,3,2>: Cost 4 vrev <5,0,2,3> + 3710937475U, // <0,5,3,3>: Cost 4 vext2 <3,3,0,5>, <3,3,0,5> + 2637859284U, // <0,5,3,4>: Cost 3 vext2 <3,4,0,5>, <3,4,0,5> + 3790319453U, // <0,5,3,5>: Cost 4 vext3 <5,3,5,0>, <5,3,5,0> + 3790393190U, // <0,5,3,6>: Cost 4 vext3 <5,3,6,0>, <5,3,6,0> + 2716725103U, // <0,5,3,7>: Cost 3 vext3 <5,3,7,0>, <5,3,7,0> + 2640513816U, // <0,5,3,u>: Cost 3 vext2 <3,u,0,5>, <3,u,0,5> + 2637859730U, // <0,5,4,0>: Cost 3 vext2 <3,4,0,5>, <4,0,5,1> + 3711601637U, // <0,5,4,1>: Cost 4 vext2 <3,4,0,5>, <4,1,5,3> + 3636225507U, // <0,5,4,2>: Cost 4 vext1 <2,0,5,4>, <2,0,5,4> + 3648170452U, // <0,5,4,3>: Cost 4 vext1 <4,0,5,4>, <3,4,0,5> + 3636227382U, // <0,5,4,4>: Cost 4 vext1 <2,0,5,4>, RHS + 2637860150U, // <0,5,4,5>: Cost 3 vext2 <3,4,0,5>, RHS + 2718715836U, // <0,5,4,6>: Cost 3 vext3 <5,6,7,0>, <5,4,6,5> + 2718715846U, // <0,5,4,7>: Cost 3 vext3 <5,6,7,0>, <5,4,7,6> + 2637860393U, // <0,5,4,u>: Cost 3 vext2 <3,4,0,5>, RHS + 3792457683U, // <0,5,5,0>: Cost 4 vext3 <5,6,7,0>, <5,5,0,1> + 3704966864U, // <0,5,5,1>: Cost 4 vext2 <2,3,0,5>, <5,1,7,3> + 3711602411U, // <0,5,5,2>: Cost 4 vext2 <3,4,0,5>, <5,2,1,3> + 3642206397U, // <0,5,5,3>: Cost 4 vext1 <3,0,5,5>, <3,0,5,5> + 3318533734U, // <0,5,5,4>: Cost 4 vrev <5,0,4,5> + 2718715908U, // <0,5,5,5>: Cost 3 vext3 <5,6,7,0>, <5,5,5,5> + 2657767522U, // <0,5,5,6>: Cost 3 vext2 <6,7,0,5>, <5,6,7,0> + 2718715928U, // <0,5,5,7>: Cost 3 vext3 <5,6,7,0>, <5,5,7,7> + 2718715937U, // <0,5,5,u>: Cost 3 vext3 <5,6,7,0>, <5,5,u,7> + 2592358502U, // <0,5,6,0>: Cost 3 vext1 <7,0,5,6>, LHS + 3788918835U, // < |