diff --git a/FEXCore/Source/Interface/Core/JIT/Arm64/VectorOps.cpp b/FEXCore/Source/Interface/Core/JIT/Arm64/VectorOps.cpp index 3aeaec95d..e9618e576 100644 --- a/FEXCore/Source/Interface/Core/JIT/Arm64/VectorOps.cpp +++ b/FEXCore/Source/Interface/Core/JIT/Arm64/VectorOps.cpp @@ -2555,59 +2555,33 @@ DEF_OP(VInsElement) { ElementSize == 4 ? ARMEmitter::SubRegSize::i32Bit : ElementSize == 8 ? ARMEmitter::SubRegSize::i64Bit : ARMEmitter::SubRegSize::i128Bit; - // We're going to use this to create our predicate register literal. - // On an SVE 256-bit capable system, the predicate register will be - // 32-bit in size. We want to set up only the element corresponding - // to the destination index, since we're going to copy over the equivalent - // indexed element from the source vector. - const auto Data = [ElementSize, DestIdx]() -> uint32_t { - const auto Log2ElementSize = FEXCore::ilog2(ElementSize); - - [[maybe_unused]] const auto MaxIndex = (32U >> Log2ElementSize) - 1; - LOGMAN_THROW_AA_FMT(DestIdx <= MaxIndex, "DestIdx ({}) out of range. Must be within [0, {}]", - DestIdx, MaxIndex); - - const auto ShiftAmount = DestIdx << Log2ElementSize; - - switch (ElementSize) { - case 1: - case 2: - case 4: - case 8: - return 1U << ShiftAmount; - case 16: - // Predicates can't be subdivided into the Q format, so we can just set up - // the predicate to select the two adjacent doublewords. - return 0x101U << ShiftAmount; - default: - FEX_UNREACHABLE; - return UINT32_MAX; - } - }(); - - // Load our predicate register. - const auto Predicate = ARMEmitter::PReg::p0; - ARMEmitter::ForwardLabel DataLocation; - adr(TMP1, &DataLocation); - ldr(Predicate, TMP1); - // Broadcast our source value across a temporary, // then combine with the destination. dup(SubRegSize, VTMP2.Z(), SrcVector.Z(), SrcIdx); - mov(Dst.Z(), Reg.Z()); - if (ElementSize == 16) { - mov(ARMEmitter::SubRegSize::i64Bit, Dst.Z(), Predicate.Merging(), VTMP2.Z()); - } - else { - mov(SubRegSize, Dst.Z(), Predicate.Merging(), VTMP2.Z()); + + // We don't need to move the data unnecessarily if + // DestVector just so happens to also be the IR op + // destination. + if (Dst != Reg) { + mov(Dst.Z(), Reg.Z()); } - // Set up a label to jump over the data we inserted, so we don't try and execute it. - ARMEmitter::ForwardLabel PastConstant; - b(&PastConstant); - Bind(&DataLocation); - dc32(Data); - Bind(&PastConstant); + constexpr auto Predicate = ARMEmitter::PReg::p0; + + if (ElementSize == 16) { + if (DestIdx == 0) { + mov(ARMEmitter::SubRegSize::i8Bit, Dst.Z(), PRED_TMP_16B.Merging(), VTMP2.Z()); + } else { + not_(Predicate, PRED_TMP_32B.Zeroing(), PRED_TMP_16B); + mov(ARMEmitter::SubRegSize::i8Bit, Dst.Z(), Predicate.Merging(), VTMP2.Z()); + } + } else { + const auto UpperBound = 16 >> FEXCore::ilog2(ElementSize); + const auto TargetElement = static_cast(DestIdx) - UpperBound; + index(SubRegSize, VTMP1.Z(), -UpperBound, 1); + cmpeq(SubRegSize, Predicate, PRED_TMP_32B.Zeroing(), VTMP1.Z(), TargetElement); + mov(SubRegSize, Dst.Z(), Predicate.Merging(), VTMP2.Z()); + } } else { LOGMAN_THROW_AA_FMT(ElementSize == 1 || ElementSize == 2 || ElementSize == 4 || ElementSize == 8, "Invalid size"); diff --git a/unittests/InstructionCountCI/VEX_map1.json b/unittests/InstructionCountCI/VEX_map1.json index e1d71ff3d..761534b44 100644 --- a/unittests/InstructionCountCI/VEX_map1.json +++ b/unittests/InstructionCountCI/VEX_map1.json @@ -333,7 +333,7 @@ ] }, "vunpcklps ymm0, ymm1, [rax]": { - "ExpectedInstructionCount": 12, + "ExpectedInstructionCount": 9, "Optimal": "No", "Comment": [ "Map 1 0b00 0x14 256-bit" @@ -343,13 +343,10 @@ "ld1b {z5.b}, p7/z, [x4]", "zip1 z6.s, z4.s, z5.s", "zip2 z4.s, z4.s, z5.s", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, q4", "mov z4.d, z6.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, @@ -368,7 +365,7 @@ ] }, "vunpcklpd ymm0, ymm1, [rax]": { - "ExpectedInstructionCount": 12, + "ExpectedInstructionCount": 9, "Optimal": "No", "Comment": [ "Map 1 0b01 0x14 256-bit" @@ -378,13 +375,10 @@ "ld1b {z5.b}, p7/z, [x4]", "zip1 z6.d, z4.d, z5.d", "zip2 z4.d, z4.d, z5.d", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, q4", "mov z4.d, z6.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, @@ -403,7 +397,7 @@ ] }, "vunpckhps ymm0, ymm1, [rax]": { - "ExpectedInstructionCount": 12, + "ExpectedInstructionCount": 7, "Optimal": "No", "Comment": [ "Map 1 0b00 0x15 256-bit" @@ -413,13 +407,8 @@ "ld1b {z5.b}, p7/z, [x4]", "zip1 z6.s, z4.s, z5.s", "zip2 z4.s, z4.s, z5.s", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, z6.q[1]", - "mov z4.d, z4.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", + "mov z4.b, p6/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, @@ -438,7 +427,7 @@ ] }, "vunpckhpd ymm0, ymm1, [rax]": { - "ExpectedInstructionCount": 12, + "ExpectedInstructionCount": 7, "Optimal": "No", "Comment": [ "Map 1 0b01 0x15 256-bit" @@ -448,13 +437,8 @@ "ld1b {z5.b}, p7/z, [x4]", "zip1 z6.d, z4.d, z5.d", "zip2 z4.d, z4.d, z5.d", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, z6.q[1]", - "mov z4.d, z4.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", + "mov z4.b, p6/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, @@ -1086,7 +1070,7 @@ ] }, "vpunpcklbw ymm0, ymm1, ymm2": { - "ExpectedInstructionCount": 12, + "ExpectedInstructionCount": 9, "Optimal": "No", "Comment": [ "Map 1 0b01 0x60 256-bit" @@ -1096,13 +1080,10 @@ "mov z5.d, p7/m, z18.d", "zip1 z6.b, z4.b, z5.b", "zip2 z4.b, z4.b, z5.b", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, q4", "mov z4.d, z6.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, @@ -1121,7 +1102,7 @@ ] }, "vpunpcklwd ymm0, ymm1, ymm2": { - "ExpectedInstructionCount": 12, + "ExpectedInstructionCount": 9, "Optimal": "No", "Comment": [ "Map 1 0b01 0x61 256-bit" @@ -1131,13 +1112,10 @@ "mov z5.d, p7/m, z18.d", "zip1 z6.h, z4.h, z5.h", "zip2 z4.h, z4.h, z5.h", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, q4", "mov z4.d, z6.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, @@ -1156,7 +1134,7 @@ ] }, "vpunpckldq ymm0, ymm1, ymm2": { - "ExpectedInstructionCount": 12, + "ExpectedInstructionCount": 9, "Optimal": "No", "Comment": [ "Map 1 0b01 0x62 256-bit" @@ -1166,13 +1144,10 @@ "mov z5.d, p7/m, z18.d", "zip1 z6.s, z4.s, z5.s", "zip2 z4.s, z4.s, z5.s", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, q4", "mov z4.d, z6.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, @@ -1195,7 +1170,7 @@ ] }, "vpacksswb ymm0, ymm1, ymm2": { - "ExpectedInstructionCount": 23, + "ExpectedInstructionCount": 19, "Optimal": "No", "Comment": [ "Map 1 0b01 0x63 256-bit" @@ -1209,20 +1184,16 @@ "uzp1 z1.b, z1.b, z1.b", "movprfx z4, z4", "splice z4.b, p6, z4.b, z1.b", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[1]", "mov z5.d, z4.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #0", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[2]", "mov z4.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", "mov z16.d, p7/m, z4.d" ] }, @@ -1335,7 +1306,7 @@ ] }, "vpackuswb ymm0, ymm1, ymm2": { - "ExpectedInstructionCount": 23, + "ExpectedInstructionCount": 19, "Optimal": "No", "Comment": [ "Map 1 0b01 0x67 256-bit" @@ -1349,20 +1320,16 @@ "uzp1 z1.b, z1.b, z1.b", "movprfx z4, z4", "splice z4.b, p6, z4.b, z1.b", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[1]", "mov z5.d, z4.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #0", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[2]", "mov z4.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", "mov z16.d, p7/m, z4.d" ] }, @@ -1447,270 +1414,182 @@ ] }, "vpshufd ymm0, ymm1, 00b": { - "ExpectedInstructionCount": 58, + "ExpectedInstructionCount": 36, "Optimal": "No", "Comment": [ "Map 1 0b01 0x70 256-bit" ], "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s4", "mov z5.d, z4.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-4", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[4]", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #0", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s4", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-3", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "udf #0x10", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[4]", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #1", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s4", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-2", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[4]", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #2", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s4", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-1", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "udf #0x1000", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[4]", "mov z4.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #3", "mov z4.s, p0/m, z1.s", - "b #+0x8", - "adr x0, #+0x0", "mov z16.d, p7/m, z4.d" ] }, "vpshufd ymm0, ymm1, 01b": { - "ExpectedInstructionCount": 58, + "ExpectedInstructionCount": 36, "Optimal": "No", "Comment": [ "Map 1 0b01 0x70 256-bit" ], "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[1]", "mov z5.d, z4.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-4", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[5]", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #0", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s4", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-3", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "udf #0x10", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[4]", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #1", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s4", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-2", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[4]", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #2", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s4", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-1", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "udf #0x1000", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[4]", "mov z4.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #3", "mov z4.s, p0/m, z1.s", - "b #+0x8", - "adr x0, #+0x0", "mov z16.d, p7/m, z4.d" ] }, "vpshufd ymm0, ymm1, 10b": { - "ExpectedInstructionCount": 58, + "ExpectedInstructionCount": 36, "Optimal": "No", "Comment": [ "Map 1 0b01 0x70 256-bit" ], "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[2]", "mov z5.d, z4.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-4", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[6]", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #0", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s4", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-3", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "udf #0x10", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[4]", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #1", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s4", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-2", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[4]", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #2", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s4", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-1", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "udf #0x1000", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[4]", "mov z4.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #3", "mov z4.s, p0/m, z1.s", - "b #+0x8", - "adr x0, #+0x0", "mov z16.d, p7/m, z4.d" ] }, "vpshufd ymm0, ymm1, 11b": { - "ExpectedInstructionCount": 58, + "ExpectedInstructionCount": 36, "Optimal": "No", "Comment": [ "Map 1 0b01 0x70 256-bit" ], "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[3]", "mov z5.d, z4.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-4", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[7]", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #0", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s4", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-3", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "udf #0x10", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[4]", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #1", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s4", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-2", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[4]", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #2", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s4", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-1", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "udf #0x1000", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[4]", "mov z4.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #3", "mov z4.s, p0/m, z1.s", - "b #+0x8", - "adr x0, #+0x0", "mov z16.d, p7/m, z4.d" ] }, @@ -1795,270 +1674,182 @@ ] }, "vpshufhw ymm0, ymm1, 00b": { - "ExpectedInstructionCount": 58, + "ExpectedInstructionCount": 36, "Optimal": "No", "Comment": [ "Map 1 0b10 0x70 256-bit" ], "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[4]", "mov z5.d, z4.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #-4", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[12]", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #4", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[4]", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #-3", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "udf #0x400", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[12]", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #5", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "add z0.b, p0/m, z0.b, z0.b", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[4]", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #-2", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "udf #0x1000", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[12]", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #6", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "adr x0, #+0x0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[4]", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #-1", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "udf #0x4000", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[12]", "mov z4.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #7", "mov z4.h, p0/m, z1.h", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, "vpshufhw ymm0, ymm1, 01b": { - "ExpectedInstructionCount": 58, + "ExpectedInstructionCount": 36, "Optimal": "No", "Comment": [ "Map 1 0b10 0x70 256-bit" ], "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[5]", "mov z5.d, z4.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #-4", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[13]", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #4", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[4]", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #-3", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "udf #0x400", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[12]", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #5", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "add z0.b, p0/m, z0.b, z0.b", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[4]", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #-2", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "udf #0x1000", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[12]", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #6", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "adr x0, #+0x0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[4]", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #-1", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "udf #0x4000", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[12]", "mov z4.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #7", "mov z4.h, p0/m, z1.h", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, "vpshufhw ymm0, ymm1, 10b": { - "ExpectedInstructionCount": 58, + "ExpectedInstructionCount": 36, "Optimal": "No", "Comment": [ "Map 1 0b10 0x70 256-bit" ], "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[6]", "mov z5.d, z4.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #-4", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[14]", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #4", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[4]", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #-3", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "udf #0x400", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[12]", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #5", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "add z0.b, p0/m, z0.b, z0.b", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[4]", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #-2", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "udf #0x1000", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[12]", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #6", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "adr x0, #+0x0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[4]", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #-1", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "udf #0x4000", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[12]", "mov z4.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #7", "mov z4.h, p0/m, z1.h", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, "vpshufhw ymm0, ymm1, 11b": { - "ExpectedInstructionCount": 58, + "ExpectedInstructionCount": 36, "Optimal": "No", "Comment": [ "Map 1 0b10 0x70 256-bit" ], "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[7]", "mov z5.d, z4.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #-4", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[15]", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #4", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[4]", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #-3", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "udf #0x400", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[12]", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #5", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "add z0.b, p0/m, z0.b, z0.b", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[4]", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #-2", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "udf #0x1000", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[12]", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #6", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "adr x0, #+0x0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[4]", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #-1", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "udf #0x4000", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[12]", "mov z4.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #7", "mov z4.h, p0/m, z1.h", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, @@ -2143,270 +1934,182 @@ ] }, "vpshuflw ymm0, ymm1, 00b": { - "ExpectedInstructionCount": 58, + "ExpectedInstructionCount": 36, "Optimal": "No", "Comment": [ "Map 1 0b11 0x70 256-bit" ], "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, h4", "mov z5.d, z4.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #-8", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[8]", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #0", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, h4", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #-7", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "udf #0x4", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[8]", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #1", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, h4", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #-6", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "udf #0x10", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[8]", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #2", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, h4", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #-5", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "udf #0x40", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[8]", "mov z4.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #3", "mov z4.h, p0/m, z1.h", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, "vpshuflw ymm0, ymm1, 01b": { - "ExpectedInstructionCount": 58, + "ExpectedInstructionCount": 36, "Optimal": "No", "Comment": [ "Map 1 0b11 0x70 256-bit" ], "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[1]", "mov z5.d, z4.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #-8", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[9]", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #0", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, h4", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #-7", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "udf #0x4", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[8]", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #1", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, h4", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #-6", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "udf #0x10", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[8]", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #2", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, h4", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #-5", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "udf #0x40", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[8]", "mov z4.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #3", "mov z4.h, p0/m, z1.h", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, "vpshuflw ymm0, ymm1, 10b": { - "ExpectedInstructionCount": 58, + "ExpectedInstructionCount": 36, "Optimal": "No", "Comment": [ "Map 1 0b11 0x70 256-bit" ], "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[2]", "mov z5.d, z4.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #-8", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[10]", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #0", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, h4", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #-7", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "udf #0x4", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[8]", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #1", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, h4", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #-6", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "udf #0x10", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[8]", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #2", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, h4", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #-5", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "udf #0x40", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[8]", "mov z4.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #3", "mov z4.h, p0/m, z1.h", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, "vpshuflw ymm0, ymm1, 11b": { - "ExpectedInstructionCount": 58, + "ExpectedInstructionCount": 36, "Optimal": "No", "Comment": [ "Map 1 0b11 0x70 256-bit" ], "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[3]", "mov z5.d, z4.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #-8", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[11]", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #0", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, h4", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #-7", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "udf #0x4", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[8]", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #1", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, h4", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #-6", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "udf #0x10", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[8]", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #2", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, h4", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #-5", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "udf #0x40", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[8]", "mov z4.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #3", "mov z4.h, p0/m, z1.h", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, @@ -3480,7 +3183,7 @@ ] }, "vshufps ymm0, ymm1, ymm2, 00b": { - "ExpectedInstructionCount": 59, + "ExpectedInstructionCount": 37, "Optimal": "No", "Comment": [ "Map 1 0b00 0xC6 256-bit" @@ -3488,62 +3191,40 @@ "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", "mov z5.d, p7/m, z18.d", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s4", "mov z6.d, z4.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-4", "mov z6.s, p0/m, z1.s", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[4]", - "mov z6.d, z6.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #0", "mov z6.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s4", - "mov z6.d, z6.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-3", "mov z6.s, p0/m, z1.s", - "b #+0x8", - "udf #0x10", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[4]", "mov z4.d, z6.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #1", "mov z4.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s5", - "mov z4.d, z4.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-2", "mov z4.s, p0/m, z1.s", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z5.s[4]", - "mov z4.d, z4.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #2", "mov z4.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s5", - "mov z4.d, z4.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-1", "mov z4.s, p0/m, z1.s", - "b #+0x8", - "udf #0x1000", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z5.s[4]", - "mov z4.d, z4.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #3", "mov z4.s, p0/m, z1.s", - "b #+0x8", - "adr x0, #+0x0", "mov z16.d, p7/m, z4.d" ] }, @@ -3569,7 +3250,7 @@ ] }, "vshufps ymm0, ymm1, ymm2, 01b": { - "ExpectedInstructionCount": 59, + "ExpectedInstructionCount": 37, "Optimal": "No", "Comment": [ "Map 1 0b00 0xC6 256-bit" @@ -3577,62 +3258,40 @@ "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", "mov z5.d, p7/m, z18.d", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[1]", "mov z6.d, z4.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-4", "mov z6.s, p0/m, z1.s", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[5]", - "mov z6.d, z6.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #0", "mov z6.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s4", - "mov z6.d, z6.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-3", "mov z6.s, p0/m, z1.s", - "b #+0x8", - "udf #0x10", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[4]", "mov z4.d, z6.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #1", "mov z4.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s5", - "mov z4.d, z4.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-2", "mov z4.s, p0/m, z1.s", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z5.s[4]", - "mov z4.d, z4.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #2", "mov z4.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s5", - "mov z4.d, z4.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-1", "mov z4.s, p0/m, z1.s", - "b #+0x8", - "udf #0x1000", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z5.s[4]", - "mov z4.d, z4.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #3", "mov z4.s, p0/m, z1.s", - "b #+0x8", - "adr x0, #+0x0", "mov z16.d, p7/m, z4.d" ] }, @@ -3658,7 +3317,7 @@ ] }, "vshufps ymm0, ymm1, ymm2, 10b": { - "ExpectedInstructionCount": 59, + "ExpectedInstructionCount": 37, "Optimal": "No", "Comment": [ "Map 1 0b00 0xC6 256-bit" @@ -3666,62 +3325,40 @@ "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", "mov z5.d, p7/m, z18.d", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[2]", "mov z6.d, z4.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-4", "mov z6.s, p0/m, z1.s", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[6]", - "mov z6.d, z6.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #0", "mov z6.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s4", - "mov z6.d, z6.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-3", "mov z6.s, p0/m, z1.s", - "b #+0x8", - "udf #0x10", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[4]", "mov z4.d, z6.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #1", "mov z4.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s5", - "mov z4.d, z4.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-2", "mov z4.s, p0/m, z1.s", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z5.s[4]", - "mov z4.d, z4.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #2", "mov z4.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s5", - "mov z4.d, z4.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-1", "mov z4.s, p0/m, z1.s", - "b #+0x8", - "udf #0x1000", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z5.s[4]", - "mov z4.d, z4.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #3", "mov z4.s, p0/m, z1.s", - "b #+0x8", - "adr x0, #+0x0", "mov z16.d, p7/m, z4.d" ] }, @@ -3747,7 +3384,7 @@ ] }, "vshufps ymm0, ymm1, ymm2, 11b": { - "ExpectedInstructionCount": 59, + "ExpectedInstructionCount": 37, "Optimal": "No", "Comment": [ "Map 1 0b00 0xC6 256-bit" @@ -3755,62 +3392,40 @@ "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", "mov z5.d, p7/m, z18.d", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[3]", "mov z6.d, z4.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-4", "mov z6.s, p0/m, z1.s", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[7]", - "mov z6.d, z6.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #0", "mov z6.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s4", - "mov z6.d, z6.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-3", "mov z6.s, p0/m, z1.s", - "b #+0x8", - "udf #0x10", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[4]", "mov z4.d, z6.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #1", "mov z4.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s5", - "mov z4.d, z4.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-2", "mov z4.s, p0/m, z1.s", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z5.s[4]", - "mov z4.d, z4.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #2", "mov z4.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s5", - "mov z4.d, z4.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-1", "mov z4.s, p0/m, z1.s", - "b #+0x8", - "udf #0x1000", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z5.s[4]", - "mov z4.d, z4.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #3", "mov z4.s, p0/m, z1.s", - "b #+0x8", - "adr x0, #+0x0", "mov z16.d, p7/m, z4.d" ] }, @@ -3830,7 +3445,7 @@ ] }, "vshufpd ymm0, ymm1, ymm2, 0b": { - "ExpectedInstructionCount": 31, + "ExpectedInstructionCount": 21, "Optimal": "No", "Comment": [ "Map 1 0b01 0xC6 256-bit" @@ -3838,34 +3453,24 @@ "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", "mov z5.d, p7/m, z18.d", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, d4", "mov z6.d, z4.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-2", "mov z6.d, p0/m, z1.d", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[2]", "mov z4.d, z6.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #0", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, d5", - "mov z4.d, z4.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z5.d[2]", - "mov z4.d, z4.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #1", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, @@ -3885,7 +3490,7 @@ ] }, "vshufpd ymm0, ymm1, ymm2, 1b": { - "ExpectedInstructionCount": 31, + "ExpectedInstructionCount": 21, "Optimal": "No", "Comment": [ "Map 1 0b01 0xC6 256-bit" @@ -3893,34 +3498,24 @@ "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", "mov z5.d, p7/m, z18.d", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[1]", "mov z6.d, z4.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-2", "mov z6.d, p0/m, z1.d", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[2]", "mov z4.d, z6.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #0", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, d5", - "mov z4.d, z4.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z5.d[2]", - "mov z4.d, z4.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #1", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, @@ -5026,7 +4621,7 @@ ] }, "vpunpckhbw ymm0, ymm1, ymm2": { - "ExpectedInstructionCount": 12, + "ExpectedInstructionCount": 7, "Optimal": "No", "Comment": [ "Map 1 0b01 0x68 256-bit" @@ -5036,13 +4631,8 @@ "mov z5.d, p7/m, z18.d", "zip1 z6.b, z4.b, z5.b", "zip2 z4.b, z4.b, z5.b", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, z6.q[1]", - "mov z4.d, z4.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", + "mov z4.b, p6/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, @@ -5061,7 +4651,7 @@ ] }, "vpunpckhwd ymm0, ymm1, ymm2": { - "ExpectedInstructionCount": 12, + "ExpectedInstructionCount": 7, "Optimal": "No", "Comment": [ "Map 1 0b01 0x69 256-bit" @@ -5071,13 +4661,8 @@ "mov z5.d, p7/m, z18.d", "zip1 z6.h, z4.h, z5.h", "zip2 z4.h, z4.h, z5.h", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, z6.q[1]", - "mov z4.d, z4.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", + "mov z4.b, p6/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, @@ -5096,7 +4681,7 @@ ] }, "vpunpckhdq ymm0, ymm1, ymm2": { - "ExpectedInstructionCount": 12, + "ExpectedInstructionCount": 7, "Optimal": "No", "Comment": [ "Map 1 0b01 0x6a 256-bit" @@ -5106,13 +4691,8 @@ "mov z5.d, p7/m, z18.d", "zip1 z6.s, z4.s, z5.s", "zip2 z4.s, z4.s, z5.s", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, z6.q[1]", - "mov z4.d, z4.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", + "mov z4.b, p6/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, @@ -5135,7 +4715,7 @@ ] }, "vpackssdw ymm0, ymm1, ymm2": { - "ExpectedInstructionCount": 23, + "ExpectedInstructionCount": 19, "Optimal": "No", "Comment": [ "Map 1 0b01 0x6b 256-bit" @@ -5149,20 +4729,16 @@ "uzp1 z1.h, z1.h, z1.h", "movprfx z4, z4", "splice z4.h, p6, z4.h, z1.h", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[1]", "mov z5.d, z4.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #0", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[2]", "mov z4.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", "mov z16.d, p7/m, z4.d" ] }, @@ -5181,7 +4757,7 @@ ] }, "vpunpcklqdq ymm0, ymm1, ymm2": { - "ExpectedInstructionCount": 12, + "ExpectedInstructionCount": 9, "Optimal": "No", "Comment": [ "Map 1 0b01 0x6c 256-bit" @@ -5191,13 +4767,10 @@ "mov z5.d, p7/m, z18.d", "zip1 z6.d, z4.d, z5.d", "zip2 z4.d, z4.d, z5.d", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, q4", "mov z4.d, z6.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, @@ -5216,7 +4789,7 @@ ] }, "vpunpckhqdq ymm0, ymm1, ymm2": { - "ExpectedInstructionCount": 12, + "ExpectedInstructionCount": 7, "Optimal": "No", "Comment": [ "Map 1 0b01 0x6d 256-bit" @@ -5226,13 +4799,8 @@ "mov z5.d, p7/m, z18.d", "zip1 z6.d, z4.d, z5.d", "zip2 z4.d, z4.d, z5.d", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, z6.q[1]", - "mov z4.d, z4.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", + "mov z4.b, p6/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, @@ -5320,7 +4888,7 @@ ] }, "vhaddpd ymm0, ymm1, ymm2": { - "ExpectedInstructionCount": 22, + "ExpectedInstructionCount": 18, "Optimal": "No", "Comment": [ "Map 1 0b01 0x7c 256-bit" @@ -5333,20 +4901,16 @@ "uzp1 z4.d, z0.d, z0.d", "uzp2 z1.d, z0.d, z0.d", "splice z4.d, p6, z4.d, z1.d", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[2]", "mov z5.d, z4.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[1]", "mov z4.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #0", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, @@ -5366,7 +4930,7 @@ ] }, "vhaddps ymm0, ymm1, ymm2": { - "ExpectedInstructionCount": 22, + "ExpectedInstructionCount": 18, "Optimal": "No", "Comment": [ "Map 1 0b11 0x7c 256-bit" @@ -5379,20 +4943,16 @@ "uzp1 z4.s, z0.s, z0.s", "uzp2 z1.s, z0.s, z0.s", "splice z4.d, p6, z4.d, z1.d", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[2]", "mov z5.d, z4.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[1]", "mov z4.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #0", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, @@ -5413,7 +4973,7 @@ ] }, "vhsubpd ymm0, ymm1, ymm2": { - "ExpectedInstructionCount": 20, + "ExpectedInstructionCount": 16, "Optimal": "No", "Comment": [ "Map 1 0b01 0x7d 256-bit" @@ -5424,20 +4984,16 @@ "uzp1 z6.d, z4.d, z5.d", "uzp2 z4.d, z4.d, z5.d", "fsub z4.d, z6.d, z4.d", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[2]", "mov z5.d, z4.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[1]", "mov z4.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #0", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, @@ -5458,7 +5014,7 @@ ] }, "vhsubps ymm0, ymm1, ymm2": { - "ExpectedInstructionCount": 20, + "ExpectedInstructionCount": 16, "Optimal": "No", "Comment": [ "Map 1 0b11 0x7d 256-bit" @@ -5469,20 +5025,16 @@ "uzp1 z6.s, z4.s, z5.s", "uzp2 z4.s, z4.s, z5.s", "fsub z4.s, z6.s, z4.s", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[2]", "mov z5.d, z4.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[1]", "mov z4.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #0", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, @@ -6799,7 +6351,7 @@ ] }, "vpsadbw ymm0, ymm1, ymm2": { - "ExpectedInstructionCount": 44, + "ExpectedInstructionCount": 35, "Optimal": "No", "Comment": [ "Map 1 0b01 0xf6 256-bit" @@ -6820,34 +6372,25 @@ "mov z4.q, z4.q[1]", "addv h6, v6.8h", "addv h4, v4.8h", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, d4", "mov z4.d, z6.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, q4", "mov z4.d, z5.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z1.d, z4.d[1]", "mov z5.d, z4.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #0", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[2]", "mov z4.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", "mov z16.d, p7/m, z4.d" ] }, diff --git a/unittests/InstructionCountCI/VEX_map2.json b/unittests/InstructionCountCI/VEX_map2.json index ef25b9784..917d4d8cd 100644 --- a/unittests/InstructionCountCI/VEX_map2.json +++ b/unittests/InstructionCountCI/VEX_map2.json @@ -24,7 +24,7 @@ ] }, "vpshufb ymm0, ymm1, ymm2": { - "ExpectedInstructionCount": 21, + "ExpectedInstructionCount": 13, "Optimal": "No", "Comment": [ "Map 2 0b01 0x00 256-bit" @@ -35,21 +35,13 @@ "mov z6.b, #-113", "and z5.d, z5.d, z6.d", "tbl v6.16b, {v4.16b}, v5.16b", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, z4.q[1]", - "mov z4.d, z4.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", + "mov z4.b, p6/m, z1.b", "tbl v4.16b, {v4.16b}, v5.16b", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, q4", "mov z4.d, z6.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, @@ -69,7 +61,7 @@ ] }, "vphaddw ymm0, ymm1, ymm2": { - "ExpectedInstructionCount": 22, + "ExpectedInstructionCount": 18, "Optimal": "No", "Comment": [ "Map 2 0b01 0x01 256-bit" @@ -82,20 +74,16 @@ "uzp1 z4.h, z0.h, z0.h", "uzp2 z1.h, z0.h, z0.h", "splice z4.d, p6, z4.d, z1.d", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[2]", "mov z5.d, z4.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[1]", "mov z4.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #0", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, @@ -115,7 +103,7 @@ ] }, "vphaddd ymm0, ymm1, ymm2": { - "ExpectedInstructionCount": 22, + "ExpectedInstructionCount": 18, "Optimal": "No", "Comment": [ "Map 2 0b01 0x02 256-bit" @@ -128,20 +116,16 @@ "uzp1 z4.s, z0.s, z0.s", "uzp2 z1.s, z0.s, z0.s", "splice z4.d, p6, z4.d, z1.d", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[2]", "mov z5.d, z4.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[1]", "mov z4.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #0", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, @@ -162,7 +146,7 @@ ] }, "vphaddsw ymm0, ymm1, ymm2": { - "ExpectedInstructionCount": 20, + "ExpectedInstructionCount": 16, "Optimal": "No", "Comment": [ "Map 2 0b01 0x03 256-bit" @@ -173,20 +157,16 @@ "uzp1 z6.h, z4.h, z5.h", "uzp2 z4.h, z4.h, z5.h", "sqadd z4.h, z6.h, z4.h", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[2]", "mov z5.d, z4.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[1]", "mov z4.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #0", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, @@ -251,7 +231,7 @@ ] }, "vphsubw ymm0, ymm1, ymm2": { - "ExpectedInstructionCount": 20, + "ExpectedInstructionCount": 16, "Optimal": "No", "Comment": [ "Map 2 0b01 0x05 256-bit" @@ -262,20 +242,16 @@ "uzp1 z6.h, z4.h, z5.h", "uzp2 z4.h, z4.h, z5.h", "sub z4.h, z6.h, z4.h", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[2]", "mov z5.d, z4.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[1]", "mov z4.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #0", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, @@ -297,7 +273,7 @@ ] }, "vphsubd ymm0, ymm1, ymm2": { - "ExpectedInstructionCount": 20, + "ExpectedInstructionCount": 16, "Optimal": "No", "Comment": [ "Map 2 0b01 0x06 256-bit" @@ -308,20 +284,16 @@ "uzp1 z6.s, z4.s, z5.s", "uzp2 z4.s, z4.s, z5.s", "sub z4.s, z6.s, z4.s", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[2]", "mov z5.d, z4.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[1]", "mov z4.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #0", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, @@ -342,7 +314,7 @@ ] }, "vphsubsw ymm0, ymm1, ymm2": { - "ExpectedInstructionCount": 20, + "ExpectedInstructionCount": 16, "Optimal": "No", "Comment": [ "Map 2 0b01 0x07 256-bit" @@ -353,20 +325,16 @@ "uzp1 z6.h, z4.h, z5.h", "uzp2 z4.h, z4.h, z5.h", "sqsub z4.h, z6.h, z4.h", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[2]", "mov z5.d, z4.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[1]", "mov z4.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #0", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, @@ -549,7 +517,7 @@ ] }, "vpermilps ymm0, ymm1, ymm2": { - "ExpectedInstructionCount": 24, + "ExpectedInstructionCount": 20, "Optimal": "No", "Comment": [ "Map 2 0b01 0x0c 256-bit" @@ -568,13 +536,9 @@ "mov z6.s, w20", "mov z7.d, #0", "mov z8.b, #16", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, q8", - "mov z7.d, z7.d", - "mov z7.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z7.b, p0/m, z1.b", "add z6.b, z6.b, z7.b", "add z5.b, z6.b, z5.b", "tbl z4.b, {z4.b}, z5.b", @@ -610,7 +574,7 @@ ] }, "vpermilpd ymm0, ymm1, ymm2": { - "ExpectedInstructionCount": 29, + "ExpectedInstructionCount": 25, "Optimal": "No", "Comment": [ "Map 2 0b01 0x0d 256-bit" @@ -634,13 +598,9 @@ "mov z6.d, x20", "mov z7.d, #0", "mov z8.b, #16", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, q8", - "mov z7.d, z7.d", - "mov z7.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z7.b, p0/m, z1.b", "add z6.b, z6.b, z7.b", "add z5.b, z6.b, z5.b", "tbl z4.b, {z4.b}, z5.b", @@ -1319,7 +1279,7 @@ ] }, "vpackusdw ymm0, ymm1, ymm2": { - "ExpectedInstructionCount": 23, + "ExpectedInstructionCount": 19, "Optimal": "No", "Comment": [ "Map 2 0b01 0x2b 256-bit" @@ -1333,20 +1293,16 @@ "uzp1 z1.h, z1.h, z1.h", "movprfx z4, z4", "splice z4.h, p6, z4.h, z1.h", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[1]", "mov z5.d, z4.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #0", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[2]", "mov z4.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", "mov z16.d, p7/m, z4.d" ] }, diff --git a/unittests/InstructionCountCI/VEX_map3.json b/unittests/InstructionCountCI/VEX_map3.json index fe6532dd7..b4f4e0e51 100644 --- a/unittests/InstructionCountCI/VEX_map3.json +++ b/unittests/InstructionCountCI/VEX_map3.json @@ -435,7 +435,7 @@ ] }, "vpblendd ymm0, ymm1, 01010101b": { - "ExpectedInstructionCount": 60, + "ExpectedInstructionCount": 38, "Optimal": "No", "Comment": [ "Map 3 0b01 0x02 256-bit" @@ -444,67 +444,45 @@ "mov z4.d, p7/m, z16.d", "mov z5.d, p7/m, z17.d", "mov z6.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s5", - "mov z6.d, z6.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-4", "mov z6.s, p0/m, z1.s", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[1]", - "mov z6.d, z6.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-3", "mov z6.s, p0/m, z1.s", - "b #+0x8", - "udf #0x10", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z5.s[2]", - "mov z6.d, z6.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-2", "mov z6.s, p0/m, z1.s", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[3]", - "mov z6.d, z6.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-1", "mov z6.s, p0/m, z1.s", - "b #+0x8", - "udf #0x1000", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z5.s[4]", - "mov z6.d, z6.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #0", "mov z6.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[5]", - "mov z6.d, z6.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #1", "mov z6.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z5.s[6]", "mov z5.d, z6.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #2", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[7]", "mov z4.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #3", "mov z4.s, p0/m, z1.s", - "b #+0x8", - "adr x0, #+0x0", "mov z16.d, p7/m, z4.d" ] }, "vpblendd ymm0, ymm1, 10101010b": { - "ExpectedInstructionCount": 60, + "ExpectedInstructionCount": 37, "Optimal": "No", "Comment": [ "Map 3 0b01 0x02 256-bit" @@ -513,62 +491,39 @@ "mov z4.d, p7/m, z16.d", "mov z5.d, p7/m, z17.d", "mov z6.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s4", - "mov z6.d, z6.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-4", "mov z6.s, p0/m, z1.s", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z5.s[1]", - "mov z6.d, z6.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-3", "mov z6.s, p0/m, z1.s", - "b #+0x8", - "udf #0x10", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[2]", - "mov z6.d, z6.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-2", "mov z6.s, p0/m, z1.s", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z5.s[3]", - "mov z6.d, z6.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-1", "mov z6.s, p0/m, z1.s", - "b #+0x8", - "udf #0x1000", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[4]", - "mov z6.d, z6.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #0", "mov z6.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z5.s[5]", - "mov z6.d, z6.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #1", "mov z6.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[6]", "mov z4.d, z6.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #2", "mov z4.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z5.s[7]", - "mov z4.d, z4.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #3", "mov z4.s, p0/m, z1.s", - "b #+0x8", - "adr x0, #+0x0", "mov z16.d, p7/m, z4.d" ] }, @@ -660,7 +615,7 @@ ] }, "vpermilps ymm0, ymm1, 00000000b": { - "ExpectedInstructionCount": 59, + "ExpectedInstructionCount": 36, "Optimal": "No", "Comment": [ "Map 3 0b01 0x03 256-bit" @@ -668,67 +623,44 @@ "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", "mov z5.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s4", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-4", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s4", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-3", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "udf #0x10", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s4", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-2", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s4", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-1", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "udf #0x1000", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[4]", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #0", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[4]", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #1", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[4]", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #2", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[4]", "mov z4.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #3", "mov z4.s, p0/m, z1.s", - "b #+0x8", - "adr x0, #+0x0", "mov z16.d, p7/m, z4.d" ] }, "vpermilps ymm0, ymm1, 01010101b": { - "ExpectedInstructionCount": 59, + "ExpectedInstructionCount": 36, "Optimal": "No", "Comment": [ "Map 3 0b01 0x03 256-bit" @@ -736,67 +668,44 @@ "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", "mov z5.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[1]", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-4", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[1]", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-3", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "udf #0x10", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[1]", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-2", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[1]", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-1", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "udf #0x1000", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[5]", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #0", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[5]", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #1", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[5]", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #2", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[5]", "mov z4.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #3", "mov z4.s, p0/m, z1.s", - "b #+0x8", - "adr x0, #+0x0", "mov z16.d, p7/m, z4.d" ] }, "vpermilps ymm0, ymm1, 10101010b": { - "ExpectedInstructionCount": 59, + "ExpectedInstructionCount": 36, "Optimal": "No", "Comment": [ "Map 3 0b01 0x03 256-bit" @@ -804,67 +713,44 @@ "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", "mov z5.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[2]", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-4", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[2]", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-3", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "udf #0x10", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[2]", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-2", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[2]", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-1", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "udf #0x1000", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[6]", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #0", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[6]", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #1", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[6]", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #2", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[6]", "mov z4.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #3", "mov z4.s, p0/m, z1.s", - "b #+0x8", - "adr x0, #+0x0", "mov z16.d, p7/m, z4.d" ] }, "vpermilps ymm0, ymm1, 11111111b": { - "ExpectedInstructionCount": 59, + "ExpectedInstructionCount": 36, "Optimal": "No", "Comment": [ "Map 3 0b01 0x03 256-bit" @@ -872,62 +758,39 @@ "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", "mov z5.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[3]", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-4", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[3]", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-3", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "udf #0x10", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[3]", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-2", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[3]", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-1", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "udf #0x1000", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[7]", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #0", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[7]", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #1", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[7]", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #2", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[7]", "mov z4.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #3", "mov z4.s, p0/m, z1.s", - "b #+0x8", - "adr x0, #+0x0", "mov z16.d, p7/m, z4.d" ] }, @@ -1000,7 +863,7 @@ ] }, "vpermilpd ymm0, ymm1, 0000b": { - "ExpectedInstructionCount": 31, + "ExpectedInstructionCount": 20, "Optimal": "No", "Comment": [ "Map 3 0b01 0x05 256-bit" @@ -1008,39 +871,28 @@ "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", "mov z5.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, d4", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-2", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, d4", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[2]", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #0", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[2]", "mov z4.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #1", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, "vpermilpd ymm0, ymm1, 0001b": { - "ExpectedInstructionCount": 31, + "ExpectedInstructionCount": 20, "Optimal": "No", "Comment": [ "Map 3 0b01 0x05 256-bit" @@ -1048,39 +900,28 @@ "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", "mov z5.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[1]", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-2", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, d4", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[2]", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #0", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[2]", "mov z4.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #1", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, "vpermilpd ymm0, ymm1, 0010b": { - "ExpectedInstructionCount": 31, + "ExpectedInstructionCount": 20, "Optimal": "No", "Comment": [ "Map 3 0b01 0x05 256-bit" @@ -1088,39 +929,28 @@ "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", "mov z5.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, d4", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-2", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[1]", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[2]", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #0", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[2]", "mov z4.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #1", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, "vpermilpd ymm0, ymm1, 0011b": { - "ExpectedInstructionCount": 31, + "ExpectedInstructionCount": 20, "Optimal": "No", "Comment": [ "Map 3 0b01 0x05 256-bit" @@ -1128,39 +958,28 @@ "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", "mov z5.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[1]", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-2", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[1]", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[2]", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #0", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[2]", "mov z4.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #1", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, "vpermilpd ymm0, ymm1, 0100b": { - "ExpectedInstructionCount": 31, + "ExpectedInstructionCount": 20, "Optimal": "No", "Comment": [ "Map 3 0b01 0x05 256-bit" @@ -1168,39 +987,28 @@ "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", "mov z5.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, d4", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-2", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, d4", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[3]", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #0", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[2]", "mov z4.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #1", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, "vpermilpd ymm0, ymm1, 0101b": { - "ExpectedInstructionCount": 31, + "ExpectedInstructionCount": 20, "Optimal": "No", "Comment": [ "Map 3 0b01 0x05 256-bit" @@ -1208,39 +1016,28 @@ "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", "mov z5.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[1]", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-2", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, d4", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[3]", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #0", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[2]", "mov z4.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #1", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, "vpermilpd ymm0, ymm1, 0110b": { - "ExpectedInstructionCount": 31, + "ExpectedInstructionCount": 20, "Optimal": "No", "Comment": [ "Map 3 0b01 0x05 256-bit" @@ -1248,39 +1045,28 @@ "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", "mov z5.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, d4", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-2", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[1]", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[3]", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #0", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[2]", "mov z4.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #1", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, "vpermilpd ymm0, ymm1, 0111b": { - "ExpectedInstructionCount": 31, + "ExpectedInstructionCount": 20, "Optimal": "No", "Comment": [ "Map 3 0b01 0x05 256-bit" @@ -1288,39 +1074,28 @@ "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", "mov z5.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[1]", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-2", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[1]", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[3]", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #0", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[2]", "mov z4.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #1", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, "vpermilpd ymm0, ymm1, 1000b": { - "ExpectedInstructionCount": 31, + "ExpectedInstructionCount": 20, "Optimal": "No", "Comment": [ "Map 3 0b01 0x05 256-bit" @@ -1328,39 +1103,28 @@ "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", "mov z5.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, d4", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-2", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, d4", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[2]", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #0", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[3]", "mov z4.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #1", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, "vpermilpd ymm0, ymm1, 1001b": { - "ExpectedInstructionCount": 31, + "ExpectedInstructionCount": 20, "Optimal": "No", "Comment": [ "Map 3 0b01 0x05 256-bit" @@ -1368,39 +1132,28 @@ "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", "mov z5.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[1]", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-2", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, d4", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[2]", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #0", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[3]", "mov z4.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #1", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, "vpermilpd ymm0, ymm1, 1010b": { - "ExpectedInstructionCount": 31, + "ExpectedInstructionCount": 20, "Optimal": "No", "Comment": [ "Map 3 0b01 0x05 256-bit" @@ -1408,39 +1161,28 @@ "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", "mov z5.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, d4", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-2", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[1]", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[2]", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #0", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[3]", "mov z4.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #1", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, "vpermilpd ymm0, ymm1, 1011b": { - "ExpectedInstructionCount": 31, + "ExpectedInstructionCount": 20, "Optimal": "No", "Comment": [ "Map 3 0b01 0x05 256-bit" @@ -1448,39 +1190,28 @@ "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", "mov z5.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[1]", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-2", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[1]", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[2]", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #0", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[3]", "mov z4.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #1", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, "vpermilpd ymm0, ymm1, 1100b": { - "ExpectedInstructionCount": 31, + "ExpectedInstructionCount": 20, "Optimal": "No", "Comment": [ "Map 3 0b01 0x05 256-bit" @@ -1488,39 +1219,28 @@ "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", "mov z5.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, d4", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-2", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, d4", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[3]", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #0", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[3]", "mov z4.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #1", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, "vpermilpd ymm0, ymm1, 1101b": { - "ExpectedInstructionCount": 31, + "ExpectedInstructionCount": 20, "Optimal": "No", "Comment": [ "Map 3 0b01 0x05 256-bit" @@ -1528,39 +1248,28 @@ "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", "mov z5.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[1]", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-2", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, d4", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[3]", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #0", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[3]", "mov z4.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #1", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, "vpermilpd ymm0, ymm1, 1110b": { - "ExpectedInstructionCount": 31, + "ExpectedInstructionCount": 20, "Optimal": "No", "Comment": [ "Map 3 0b01 0x05 256-bit" @@ -1568,39 +1277,28 @@ "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", "mov z5.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, d4", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-2", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[1]", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[3]", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #0", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[3]", "mov z4.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #1", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, "vpermilpd ymm0, ymm1, 1111b": { - "ExpectedInstructionCount": 31, + "ExpectedInstructionCount": 20, "Optimal": "No", "Comment": [ "Map 3 0b01 0x05 256-bit" @@ -1608,39 +1306,28 @@ "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", "mov z5.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[1]", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-2", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[1]", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[3]", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #0", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[3]", "mov z4.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #1", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, "vperm2f128 ymm0, ymm1, 000000b": { - "ExpectedInstructionCount": 17, + "ExpectedInstructionCount": 9, "Optimal": "No", "Comment": [ "Map 3 0b01 0x06 256-bit" @@ -1648,25 +1335,17 @@ "ExpectedArm64ASM": [ "mov z4.d, p7/m, z16.d", "mov z5.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, q4", - "mov z5.d, z5.d", - "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", - "adr x0, #+0x18", - "ldr p0, [x0]", + "mov z5.b, p6/m, z1.b", "mov z1.q, q4", "mov z4.d, z5.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, "vperm2f128 ymm0, ymm1, 000001b": { - "ExpectedInstructionCount": 17, + "ExpectedInstructionCount": 9, "Optimal": "No", "Comment": [ "Map 3 0b01 0x06 256-bit" @@ -1674,25 +1353,17 @@ "ExpectedArm64ASM": [ "mov z4.d, p7/m, z16.d", "mov z5.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, z4.q[1]", - "mov z5.d, z5.d", - "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", - "adr x0, #+0x18", - "ldr p0, [x0]", + "mov z5.b, p6/m, z1.b", "mov z1.q, q4", "mov z4.d, z5.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, "vperm2f128 ymm0, ymm1, 000010b": { - "ExpectedInstructionCount": 18, + "ExpectedInstructionCount": 11, "Optimal": "No", "Comment": [ "Map 3 0b01 0x06 256-bit" @@ -1701,25 +1372,18 @@ "mov z4.d, p7/m, z16.d", "mov z5.d, p7/m, z17.d", "mov z6.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, q5", "mov z5.d, z6.d", - "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", - "adr x0, #+0x18", - "ldr p0, [x0]", + "mov z5.b, p6/m, z1.b", "mov z1.q, q4", "mov z4.d, z5.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, "vperm2f128 ymm0, ymm1, 000011b": { - "ExpectedInstructionCount": 18, + "ExpectedInstructionCount": 11, "Optimal": "No", "Comment": [ "Map 3 0b01 0x06 256-bit" @@ -1728,25 +1392,18 @@ "mov z4.d, p7/m, z16.d", "mov z5.d, p7/m, z17.d", "mov z6.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, z5.q[1]", "mov z5.d, z6.d", - "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", - "adr x0, #+0x18", - "ldr p0, [x0]", + "mov z5.b, p6/m, z1.b", "mov z1.q, q4", "mov z4.d, z5.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, "vperm2f128 ymm0, ymm1, 010000b": { - "ExpectedInstructionCount": 17, + "ExpectedInstructionCount": 9, "Optimal": "No", "Comment": [ "Map 3 0b01 0x06 256-bit" @@ -1754,25 +1411,17 @@ "ExpectedArm64ASM": [ "mov z4.d, p7/m, z16.d", "mov z5.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, q4", - "mov z5.d, z5.d", - "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", - "adr x0, #+0x18", - "ldr p0, [x0]", + "mov z5.b, p6/m, z1.b", "mov z1.q, z4.q[1]", "mov z4.d, z5.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, "vperm2f128 ymm0, ymm1, 010001b": { - "ExpectedInstructionCount": 17, + "ExpectedInstructionCount": 9, "Optimal": "No", "Comment": [ "Map 3 0b01 0x06 256-bit" @@ -1780,25 +1429,17 @@ "ExpectedArm64ASM": [ "mov z4.d, p7/m, z16.d", "mov z5.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, z4.q[1]", - "mov z5.d, z5.d", - "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", - "adr x0, #+0x18", - "ldr p0, [x0]", + "mov z5.b, p6/m, z1.b", "mov z1.q, z4.q[1]", "mov z4.d, z5.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, "vperm2f128 ymm0, ymm1, 010010b": { - "ExpectedInstructionCount": 18, + "ExpectedInstructionCount": 11, "Optimal": "No", "Comment": [ "Map 3 0b01 0x06 256-bit" @@ -1807,25 +1448,18 @@ "mov z4.d, p7/m, z16.d", "mov z5.d, p7/m, z17.d", "mov z6.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, q5", "mov z5.d, z6.d", - "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", - "adr x0, #+0x18", - "ldr p0, [x0]", + "mov z5.b, p6/m, z1.b", "mov z1.q, z4.q[1]", "mov z4.d, z5.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, "vperm2f128 ymm0, ymm1, 010011b": { - "ExpectedInstructionCount": 18, + "ExpectedInstructionCount": 11, "Optimal": "No", "Comment": [ "Map 3 0b01 0x06 256-bit" @@ -1834,25 +1468,18 @@ "mov z4.d, p7/m, z16.d", "mov z5.d, p7/m, z17.d", "mov z6.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, z5.q[1]", "mov z5.d, z6.d", - "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", - "adr x0, #+0x18", - "ldr p0, [x0]", + "mov z5.b, p6/m, z1.b", "mov z1.q, z4.q[1]", "mov z4.d, z5.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, "vperm2f128 ymm0, ymm1, 100000b": { - "ExpectedInstructionCount": 18, + "ExpectedInstructionCount": 10, "Optimal": "No", "Comment": [ "Map 3 0b01 0x06 256-bit" @@ -1861,25 +1488,17 @@ "mov z4.d, p7/m, z16.d", "mov z5.d, p7/m, z17.d", "mov z6.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, q4", "mov z4.d, z6.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", - "adr x0, #+0x18", - "ldr p0, [x0]", + "mov z4.b, p6/m, z1.b", "mov z1.q, q5", - "mov z4.d, z4.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, "vperm2f128 ymm0, ymm1, 100001b": { - "ExpectedInstructionCount": 18, + "ExpectedInstructionCount": 10, "Optimal": "No", "Comment": [ "Map 3 0b01 0x06 256-bit" @@ -1888,25 +1507,17 @@ "mov z4.d, p7/m, z16.d", "mov z5.d, p7/m, z17.d", "mov z6.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, z4.q[1]", "mov z4.d, z6.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", - "adr x0, #+0x18", - "ldr p0, [x0]", + "mov z4.b, p6/m, z1.b", "mov z1.q, q5", - "mov z4.d, z4.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, "vperm2f128 ymm0, ymm1, 100010b": { - "ExpectedInstructionCount": 17, + "ExpectedInstructionCount": 9, "Optimal": "No", "Comment": [ "Map 3 0b01 0x06 256-bit" @@ -1914,25 +1525,17 @@ "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", "mov z5.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, q4", - "mov z5.d, z5.d", - "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", - "adr x0, #+0x18", - "ldr p0, [x0]", + "mov z5.b, p6/m, z1.b", "mov z1.q, q4", "mov z4.d, z5.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, "vperm2f128 ymm0, ymm1, 100011b": { - "ExpectedInstructionCount": 17, + "ExpectedInstructionCount": 9, "Optimal": "No", "Comment": [ "Map 3 0b01 0x06 256-bit" @@ -1940,25 +1543,17 @@ "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", "mov z5.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, z4.q[1]", - "mov z5.d, z5.d", - "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", - "adr x0, #+0x18", - "ldr p0, [x0]", + "mov z5.b, p6/m, z1.b", "mov z1.q, q4", "mov z4.d, z5.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, "vperm2f128 ymm0, ymm1, 110000b": { - "ExpectedInstructionCount": 18, + "ExpectedInstructionCount": 10, "Optimal": "No", "Comment": [ "Map 3 0b01 0x06 256-bit" @@ -1967,25 +1562,17 @@ "mov z4.d, p7/m, z16.d", "mov z5.d, p7/m, z17.d", "mov z6.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, q4", "mov z4.d, z6.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", - "adr x0, #+0x18", - "ldr p0, [x0]", + "mov z4.b, p6/m, z1.b", "mov z1.q, z5.q[1]", - "mov z4.d, z4.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, "vperm2f128 ymm0, ymm1, 110001b": { - "ExpectedInstructionCount": 18, + "ExpectedInstructionCount": 10, "Optimal": "No", "Comment": [ "Map 3 0b01 0x06 256-bit" @@ -1994,25 +1581,17 @@ "mov z4.d, p7/m, z16.d", "mov z5.d, p7/m, z17.d", "mov z6.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, z4.q[1]", "mov z4.d, z6.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", - "adr x0, #+0x18", - "ldr p0, [x0]", + "mov z4.b, p6/m, z1.b", "mov z1.q, z5.q[1]", - "mov z4.d, z4.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, "vperm2f128 ymm0, ymm1, 110010b": { - "ExpectedInstructionCount": 17, + "ExpectedInstructionCount": 9, "Optimal": "No", "Comment": [ "Map 3 0b01 0x06 256-bit" @@ -2020,25 +1599,17 @@ "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", "mov z5.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, q4", - "mov z5.d, z5.d", - "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", - "adr x0, #+0x18", - "ldr p0, [x0]", + "mov z5.b, p6/m, z1.b", "mov z1.q, z4.q[1]", "mov z4.d, z5.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, "vperm2f128 ymm0, ymm1, 110011b": { - "ExpectedInstructionCount": 17, + "ExpectedInstructionCount": 9, "Optimal": "No", "Comment": [ "Map 3 0b01 0x06 256-bit" @@ -2046,20 +1617,12 @@ "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", "mov z5.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, z4.q[1]", - "mov z5.d, z5.d", - "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", - "adr x0, #+0x18", - "ldr p0, [x0]", + "mov z5.b, p6/m, z1.b", "mov z1.q, z4.q[1]", "mov z4.d, z5.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, @@ -2593,7 +2156,7 @@ ] }, "vblendps ymm0, ymm1, ymm2, 10000001b": { - "ExpectedInstructionCount": 60, + "ExpectedInstructionCount": 37, "Optimal": "No", "Comment": [ "Map 3 0b01 0x0c 256-bit" @@ -2602,62 +2165,39 @@ "mov z4.d, p7/m, z17.d", "mov z5.d, p7/m, z18.d", "mov z6.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s5", - "mov z6.d, z6.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-4", "mov z6.s, p0/m, z1.s", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[1]", - "mov z6.d, z6.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-3", "mov z6.s, p0/m, z1.s", - "b #+0x8", - "udf #0x10", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[2]", - "mov z6.d, z6.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-2", "mov z6.s, p0/m, z1.s", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[3]", - "mov z6.d, z6.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-1", "mov z6.s, p0/m, z1.s", - "b #+0x8", - "udf #0x1000", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[4]", - "mov z6.d, z6.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #0", "mov z6.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[5]", - "mov z6.d, z6.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #1", "mov z6.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z4.s[6]", "mov z4.d, z6.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #2", "mov z4.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, z5.s[7]", - "mov z4.d, z4.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #3", "mov z4.s, p0/m, z1.s", - "b #+0x8", - "adr x0, #+0x0", "mov z16.d, p7/m, z4.d" ] }, @@ -2748,7 +2288,7 @@ ] }, "vblendpd ymm0, ymm1, ymm2, 0001b": { - "ExpectedInstructionCount": 32, + "ExpectedInstructionCount": 22, "Optimal": "No", "Comment": [ "Map 3 0b01 0x0d 256-bit" @@ -2757,39 +2297,29 @@ "mov z4.d, p7/m, z17.d", "mov z5.d, p7/m, z18.d", "mov z6.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, d5", "mov z5.d, z6.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-2", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[1]", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[2]", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #0", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[3]", "mov z4.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #1", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, "vblendpd ymm0, ymm1, ymm2, 0010b": { - "ExpectedInstructionCount": 32, + "ExpectedInstructionCount": 22, "Optimal": "No", "Comment": [ "Map 3 0b01 0x0d 256-bit" @@ -2798,39 +2328,29 @@ "mov z4.d, p7/m, z17.d", "mov z5.d, p7/m, z18.d", "mov z6.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, d4", - "mov z6.d, z6.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-2", "mov z6.d, p0/m, z1.d", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z5.d[1]", "mov z5.d, z6.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[2]", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #0", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[3]", "mov z4.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #1", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, "vblendpd ymm0, ymm1, ymm2, 0011b": { - "ExpectedInstructionCount": 32, + "ExpectedInstructionCount": 22, "Optimal": "No", "Comment": [ "Map 3 0b01 0x0d 256-bit" @@ -2839,39 +2359,29 @@ "mov z4.d, p7/m, z17.d", "mov z5.d, p7/m, z18.d", "mov z6.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, d5", - "mov z6.d, z6.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-2", "mov z6.d, p0/m, z1.d", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z5.d[1]", "mov z5.d, z6.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[2]", - "mov z5.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #0", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[3]", "mov z4.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #1", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, "vblendpd ymm0, ymm1, ymm2, 0100b": { - "ExpectedInstructionCount": 32, + "ExpectedInstructionCount": 22, "Optimal": "No", "Comment": [ "Map 3 0b01 0x0d 256-bit" @@ -2880,39 +2390,29 @@ "mov z4.d, p7/m, z17.d", "mov z5.d, p7/m, z18.d", "mov z6.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, d4", - "mov z6.d, z6.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-2", "mov z6.d, p0/m, z1.d", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[1]", - "mov z6.d, z6.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z6.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z5.d[2]", "mov z5.d, z6.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #0", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[3]", "mov z4.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #1", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, "vblendpd ymm0, ymm1, ymm2, 0101b": { - "ExpectedInstructionCount": 32, + "ExpectedInstructionCount": 22, "Optimal": "No", "Comment": [ "Map 3 0b01 0x0d 256-bit" @@ -2921,39 +2421,29 @@ "mov z4.d, p7/m, z17.d", "mov z5.d, p7/m, z18.d", "mov z6.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, d5", - "mov z6.d, z6.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-2", "mov z6.d, p0/m, z1.d", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[1]", - "mov z6.d, z6.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z6.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z5.d[2]", "mov z5.d, z6.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #0", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[3]", "mov z4.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #1", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, "vblendpd ymm0, ymm1, ymm2, 0110b": { - "ExpectedInstructionCount": 32, + "ExpectedInstructionCount": 22, "Optimal": "No", "Comment": [ "Map 3 0b01 0x0d 256-bit" @@ -2962,39 +2452,29 @@ "mov z4.d, p7/m, z17.d", "mov z5.d, p7/m, z18.d", "mov z6.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, d4", - "mov z6.d, z6.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-2", "mov z6.d, p0/m, z1.d", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z5.d[1]", - "mov z6.d, z6.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z6.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z5.d[2]", "mov z5.d, z6.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #0", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[3]", "mov z4.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #1", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, "vblendpd ymm0, ymm1, ymm2, 0111b": { - "ExpectedInstructionCount": 32, + "ExpectedInstructionCount": 22, "Optimal": "No", "Comment": [ "Map 3 0b01 0x0d 256-bit" @@ -3003,39 +2483,29 @@ "mov z4.d, p7/m, z17.d", "mov z5.d, p7/m, z18.d", "mov z6.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, d5", - "mov z6.d, z6.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-2", "mov z6.d, p0/m, z1.d", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z5.d[1]", - "mov z6.d, z6.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z6.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z5.d[2]", "mov z5.d, z6.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #0", "mov z5.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[3]", "mov z4.d, z5.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #1", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, "vblendpd ymm0, ymm1, ymm2, 1000b": { - "ExpectedInstructionCount": 32, + "ExpectedInstructionCount": 21, "Optimal": "No", "Comment": [ "Map 3 0b01 0x0d 256-bit" @@ -3044,39 +2514,28 @@ "mov z4.d, p7/m, z17.d", "mov z5.d, p7/m, z18.d", "mov z6.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, d4", - "mov z6.d, z6.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-2", "mov z6.d, p0/m, z1.d", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[1]", - "mov z6.d, z6.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z6.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[2]", "mov z4.d, z6.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #0", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z5.d[3]", - "mov z4.d, z4.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #1", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, "vblendpd ymm0, ymm1, ymm2, 1001b": { - "ExpectedInstructionCount": 32, + "ExpectedInstructionCount": 21, "Optimal": "No", "Comment": [ "Map 3 0b01 0x0d 256-bit" @@ -3085,39 +2544,28 @@ "mov z4.d, p7/m, z17.d", "mov z5.d, p7/m, z18.d", "mov z6.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, d5", - "mov z6.d, z6.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-2", "mov z6.d, p0/m, z1.d", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[1]", - "mov z6.d, z6.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z6.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[2]", "mov z4.d, z6.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #0", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z5.d[3]", - "mov z4.d, z4.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #1", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, "vblendpd ymm0, ymm1, ymm2, 1010b": { - "ExpectedInstructionCount": 32, + "ExpectedInstructionCount": 21, "Optimal": "No", "Comment": [ "Map 3 0b01 0x0d 256-bit" @@ -3126,39 +2574,28 @@ "mov z4.d, p7/m, z17.d", "mov z5.d, p7/m, z18.d", "mov z6.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, d4", - "mov z6.d, z6.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-2", "mov z6.d, p0/m, z1.d", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z5.d[1]", - "mov z6.d, z6.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z6.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[2]", "mov z4.d, z6.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #0", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z5.d[3]", - "mov z4.d, z4.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #1", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, "vblendpd ymm0, ymm1, ymm2, 1011b": { - "ExpectedInstructionCount": 32, + "ExpectedInstructionCount": 21, "Optimal": "No", "Comment": [ "Map 3 0b01 0x0d 256-bit" @@ -3167,39 +2604,28 @@ "mov z4.d, p7/m, z17.d", "mov z5.d, p7/m, z18.d", "mov z6.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, d5", - "mov z6.d, z6.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-2", "mov z6.d, p0/m, z1.d", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z5.d[1]", - "mov z6.d, z6.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z6.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[2]", "mov z4.d, z6.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #0", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z5.d[3]", - "mov z4.d, z4.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #1", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, "vblendpd ymm0, ymm1, ymm2, 1100b": { - "ExpectedInstructionCount": 32, + "ExpectedInstructionCount": 21, "Optimal": "No", "Comment": [ "Map 3 0b01 0x0d 256-bit" @@ -3208,39 +2634,28 @@ "mov z4.d, p7/m, z17.d", "mov z5.d, p7/m, z18.d", "mov z6.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, d4", - "mov z6.d, z6.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-2", "mov z6.d, p0/m, z1.d", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[1]", "mov z4.d, z6.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z5.d[2]", - "mov z4.d, z4.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #0", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z5.d[3]", - "mov z4.d, z4.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #1", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, "vblendpd ymm0, ymm1, ymm2, 1101b": { - "ExpectedInstructionCount": 32, + "ExpectedInstructionCount": 21, "Optimal": "No", "Comment": [ "Map 3 0b01 0x0d 256-bit" @@ -3249,39 +2664,28 @@ "mov z4.d, p7/m, z17.d", "mov z5.d, p7/m, z18.d", "mov z6.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, d5", - "mov z6.d, z6.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-2", "mov z6.d, p0/m, z1.d", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z4.d[1]", "mov z4.d, z6.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z5.d[2]", - "mov z4.d, z4.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #0", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z5.d[3]", - "mov z4.d, z4.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #1", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, "vblendpd ymm0, ymm1, ymm2, 1110b": { - "ExpectedInstructionCount": 32, + "ExpectedInstructionCount": 21, "Optimal": "No", "Comment": [ "Map 3 0b01 0x0d 256-bit" @@ -3290,34 +2694,23 @@ "mov z4.d, p7/m, z17.d", "mov z5.d, p7/m, z18.d", "mov z6.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, d4", "mov z4.d, z6.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-2", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z5.d[1]", - "mov z4.d, z4.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #-1", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z5.d[2]", - "mov z4.d, z4.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #0", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.d, z5.d[3]", - "mov z4.d, z4.d", + "index z0.d, #-2, #1", + "cmpeq p0.d, p7/z, z0.d, #1", "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, @@ -3396,7 +2789,7 @@ ] }, "vpblendw ymm0, ymm1, ymm2, 00000001b": { - "ExpectedInstructionCount": 116, + "ExpectedInstructionCount": 70, "Optimal": "No", "Comment": [ "Map 3 0b01 0x0e 128-bit" @@ -3405,118 +2798,72 @@ "mov z4.d, p7/m, z17.d", "mov z5.d, p7/m, z18.d", "mov z6.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, h5", - "mov z6.d, z6.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #-8", "mov z6.h, p0/m, z1.h", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[1]", - "mov z6.d, z6.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #-7", "mov z6.h, p0/m, z1.h", - "b #+0x8", - "udf #0x4", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[2]", - "mov z6.d, z6.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #-6", "mov z6.h, p0/m, z1.h", - "b #+0x8", - "udf #0x10", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[3]", - "mov z6.d, z6.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #-5", "mov z6.h, p0/m, z1.h", - "b #+0x8", - "udf #0x40", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[4]", - "mov z6.d, z6.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #-4", "mov z6.h, p0/m, z1.h", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[5]", - "mov z6.d, z6.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #-3", "mov z6.h, p0/m, z1.h", - "b #+0x8", - "udf #0x400", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[6]", - "mov z6.d, z6.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #-2", "mov z6.h, p0/m, z1.h", - "b #+0x8", - "udf #0x1000", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[7]", - "mov z6.d, z6.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #-1", "mov z6.h, p0/m, z1.h", - "b #+0x8", - "udf #0x4000", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z5.h[8]", "mov z5.d, z6.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #0", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[9]", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #1", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[10]", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #2", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[11]", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #3", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[12]", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #4", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[13]", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #5", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "add z0.b, p0/m, z0.b, z0.b", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[14]", - "mov z5.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #6", "mov z5.h, p0/m, z1.h", - "b #+0x8", - "adr x0, #+0x0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.h, z4.h[15]", "mov z4.d, z5.d", + "index z0.h, #-8, #1", + "cmpeq p0.h, p7/z, z0.h, #7", "mov z4.h, p0/m, z1.h", - "b #+0x8", - "unallocated (Unallocated)", "mov z16.d, p7/m, z4.d" ] }, @@ -3589,7 +2936,7 @@ ] }, "vpalignr ymm0, ymm1, ymm2, 0": { - "ExpectedInstructionCount": 26, + "ExpectedInstructionCount": 13, "Optimal": "No", "Comment": [ "Map 3 0b01 0x0f 256-bit" @@ -3598,33 +2945,20 @@ "mov z4.d, p7/m, z17.d", "mov z5.d, p7/m, z18.d", "ext v6.16b, v5.16b, v4.16b, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, z4.q[1]", - "mov z4.d, z4.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", - "adr x0, #+0x18", - "ldr p0, [x0]", + "mov z4.b, p6/m, z1.b", "mov z1.q, z5.q[1]", - "mov z5.d, z5.d", - "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", + "mov z5.b, p6/m, z1.b", "ext v4.16b, v5.16b, v4.16b, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, q4", "mov z4.d, z6.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, "vpalignr ymm0, ymm1, ymm2, 1": { - "ExpectedInstructionCount": 26, + "ExpectedInstructionCount": 13, "Optimal": "No", "Comment": [ "Map 3 0b01 0x0f 256-bit" @@ -3633,33 +2967,20 @@ "mov z4.d, p7/m, z17.d", "mov z5.d, p7/m, z18.d", "ext v6.16b, v5.16b, v4.16b, #1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, z4.q[1]", - "mov z4.d, z4.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", - "adr x0, #+0x18", - "ldr p0, [x0]", + "mov z4.b, p6/m, z1.b", "mov z1.q, z5.q[1]", - "mov z5.d, z5.d", - "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", + "mov z5.b, p6/m, z1.b", "ext v4.16b, v5.16b, v4.16b, #1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, q4", "mov z4.d, z6.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, "vpalignr ymm0, ymm1, ymm2, 15": { - "ExpectedInstructionCount": 26, + "ExpectedInstructionCount": 13, "Optimal": "No", "Comment": [ "Map 3 0b01 0x0f 256-bit" @@ -3668,33 +2989,20 @@ "mov z4.d, p7/m, z17.d", "mov z5.d, p7/m, z18.d", "ext v6.16b, v5.16b, v4.16b, #15", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, z4.q[1]", - "mov z4.d, z4.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", - "adr x0, #+0x18", - "ldr p0, [x0]", + "mov z4.b, p6/m, z1.b", "mov z1.q, z5.q[1]", - "mov z5.d, z5.d", - "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", + "mov z5.b, p6/m, z1.b", "ext v4.16b, v5.16b, v4.16b, #15", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, q4", "mov z4.d, z6.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, "vpalignr ymm0, ymm1, ymm2, 16": { - "ExpectedInstructionCount": 28, + "ExpectedInstructionCount": 15, "Optimal": "No", "Comment": [ "Map 3 0b01 0x0f 256-bit" @@ -3704,29 +3012,16 @@ "mov z5.d, p7/m, z18.d", "movi v0.2d, #0x0", "ext v6.16b, v4.16b, v0.16b, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, z4.q[1]", - "mov z4.d, z4.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", - "adr x0, #+0x18", - "ldr p0, [x0]", + "mov z4.b, p6/m, z1.b", "mov z1.q, z5.q[1]", - "mov z5.d, z5.d", - "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", + "mov z5.b, p6/m, z1.b", "movi v0.2d, #0x0", "ext v4.16b, v4.16b, v0.16b, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, q4", "mov z4.d, z6.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, @@ -3823,7 +3118,7 @@ ] }, "vinsertf128 ymm0, ymm1, xmm2, 0": { - "ExpectedInstructionCount": 10, + "ExpectedInstructionCount": 5, "Optimal": "No", "Comment": [ "Map 3 0b01 0x18 256-bit" @@ -3831,18 +3126,13 @@ "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", "mov z5.d, p7/m, z18.d", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, q5", - "mov z4.d, z4.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", + "mov z4.b, p6/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, "vinsertf128 ymm0, ymm1, xmm2, 1": { - "ExpectedInstructionCount": 10, + "ExpectedInstructionCount": 6, "Optimal": "No", "Comment": [ "Map 3 0b01 0x18 256-bit" @@ -3850,13 +3140,9 @@ "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", "mov z5.d, p7/m, z18.d", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, q5", - "mov z4.d, z4.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, @@ -4122,7 +3408,7 @@ ] }, "vinserti128 ymm0, ymm1, xmm2, 0": { - "ExpectedInstructionCount": 10, + "ExpectedInstructionCount": 5, "Optimal": "No", "Comment": [ "Map 3 0b01 0x38 256-bit" @@ -4130,18 +3416,13 @@ "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", "mov z5.d, p7/m, z18.d", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, q5", - "mov z4.d, z4.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", + "mov z4.b, p6/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, "vinserti128 ymm0, ymm1, xmm2, 1": { - "ExpectedInstructionCount": 10, + "ExpectedInstructionCount": 6, "Optimal": "No", "Comment": [ "Map 3 0b01 0x38 256-bit" @@ -4149,13 +3430,9 @@ "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", "mov z5.d, p7/m, z18.d", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, q5", - "mov z4.d, z4.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, @@ -4274,7 +3551,7 @@ ] }, "vdpps ymm0, ymm1, ymm2, 00001111b": { - "ExpectedInstructionCount": 127, + "ExpectedInstructionCount": 81, "Optimal": "No", "Comment": [ "Map 3 0b01 0x40 128-bit" @@ -4284,62 +3561,38 @@ "mov z5.d, p7/m, z18.d", "mov z6.d, #0", "fmul z4.s, z4.s, z5.s", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s6", - "mov z4.d, z4.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-4", "mov z4.s, p0/m, z1.s", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s6", - "mov z4.d, z4.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-3", "mov z4.s, p0/m, z1.s", - "b #+0x8", - "udf #0x10", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s6", - "mov z4.d, z4.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-2", "mov z4.s, p0/m, z1.s", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s6", - "mov z4.d, z4.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-1", "mov z4.s, p0/m, z1.s", - "b #+0x8", - "udf #0x1000", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s6", - "mov z4.d, z4.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #0", "mov z4.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s6", - "mov z4.d, z4.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #1", "mov z4.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s6", - "mov z4.d, z4.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #2", "mov z4.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s6", - "mov z4.d, z4.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #3", "mov z4.s, p0/m, z1.s", - "b #+0x8", - "adr x0, #+0x0", "movprfx z0, z4", "faddp z0.s, p7/m, z0.s, z6.s", "uzp1 z4.s, z0.s, z0.s", @@ -4350,62 +3603,40 @@ "uzp1 z4.s, z0.s, z0.s", "uzp2 z1.s, z0.s, z0.s", "splice z4.d, p6, z4.d, z1.d", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s4", "mov z5.d, z6.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-4", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s4", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-3", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "udf #0x10", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s4", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-2", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s4", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-1", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "udf #0x1000", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s4", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #0", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s4", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #1", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s4", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #2", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s4", "mov z4.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #3", "mov z4.s, p0/m, z1.s", - "b #+0x8", - "adr x0, #+0x0", "mov z16.d, p7/m, z4.d" ] }, @@ -4421,7 +3652,7 @@ ] }, "vdpps ymm0, ymm1, ymm2, 11111111b": { - "ExpectedInstructionCount": 71, + "ExpectedInstructionCount": 49, "Optimal": "No", "Comment": [ "Map 3 0b01 0x40 128-bit" @@ -4441,62 +3672,40 @@ "uzp1 z4.s, z0.s, z0.s", "uzp2 z1.s, z0.s, z0.s", "splice z4.d, p6, z4.d, z1.d", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s4", "mov z5.d, z6.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-4", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "udf #0x1", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s4", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-3", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "udf #0x10", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s4", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-2", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "udf #0x100", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s4", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #-1", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "udf #0x1000", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s4", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #0", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s4", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #1", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s4", - "mov z5.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #2", "mov z5.s, p0/m, z1.s", - "b #+0x8", - "unallocated (Unallocated)", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.s, s4", "mov z4.d, z5.d", + "index z0.s, #-4, #1", + "cmpeq p0.s, p7/z, z0.s, #3", "mov z4.s, p0/m, z1.s", - "b #+0x8", - "adr x0, #+0x0", "mov z16.d, p7/m, z4.d" ] }, @@ -4787,7 +3996,7 @@ ] }, "vmpsadbw ymm0, ymm1, ymm2, 000b": { - "ExpectedInstructionCount": 40, + "ExpectedInstructionCount": 37, "Optimal": "No", "Comment": [ "Map 3 0b01 0x42 256-bit" @@ -4825,18 +4034,15 @@ "trn1 v7.4s, v5.4s, v4.4s", "trn2 v4.4s, v5.4s, v4.4s", "addp v4.8h, v7.8h, v4.8h", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, q4", "mov z4.d, z6.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, "vmpsadbw ymm0, ymm1, ymm2, 001b": { - "ExpectedInstructionCount": 40, + "ExpectedInstructionCount": 37, "Optimal": "No", "Comment": [ "Map 3 0b01 0x42 256-bit" @@ -4874,18 +4080,15 @@ "trn1 v7.4s, v5.4s, v4.4s", "trn2 v4.4s, v5.4s, v4.4s", "addp v4.8h, v7.8h, v4.8h", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, q4", "mov z4.d, z6.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, "vmpsadbw ymm0, ymm1, ymm2, 010b": { - "ExpectedInstructionCount": 40, + "ExpectedInstructionCount": 37, "Optimal": "No", "Comment": [ "Map 3 0b01 0x42 256-bit" @@ -4923,18 +4126,15 @@ "trn1 v7.4s, v5.4s, v4.4s", "trn2 v4.4s, v5.4s, v4.4s", "addp v4.8h, v7.8h, v4.8h", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, q4", "mov z4.d, z6.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, "vmpsadbw ymm0, ymm1, ymm2, 011b": { - "ExpectedInstructionCount": 40, + "ExpectedInstructionCount": 37, "Optimal": "No", "Comment": [ "Map 3 0b01 0x42 256-bit" @@ -4972,18 +4172,15 @@ "trn1 v7.4s, v5.4s, v4.4s", "trn2 v4.4s, v5.4s, v4.4s", "addp v4.8h, v7.8h, v4.8h", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, q4", "mov z4.d, z6.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, "vmpsadbw ymm0, ymm1, ymm2, 100b": { - "ExpectedInstructionCount": 40, + "ExpectedInstructionCount": 37, "Optimal": "No", "Comment": [ "Map 3 0b01 0x42 256-bit" @@ -5021,18 +4218,15 @@ "trn1 v7.4s, v5.4s, v4.4s", "trn2 v4.4s, v5.4s, v4.4s", "addp v4.8h, v7.8h, v4.8h", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, q4", "mov z4.d, z6.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, "vmpsadbw ymm0, ymm1, ymm2, 101b": { - "ExpectedInstructionCount": 40, + "ExpectedInstructionCount": 37, "Optimal": "No", "Comment": [ "Map 3 0b01 0x42 256-bit" @@ -5070,18 +4264,15 @@ "trn1 v7.4s, v5.4s, v4.4s", "trn2 v4.4s, v5.4s, v4.4s", "addp v4.8h, v7.8h, v4.8h", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, q4", "mov z4.d, z6.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, "vmpsadbw ymm0, ymm1, ymm2, 110b": { - "ExpectedInstructionCount": 40, + "ExpectedInstructionCount": 37, "Optimal": "No", "Comment": [ "Map 3 0b01 0x42 256-bit" @@ -5119,18 +4310,15 @@ "trn1 v7.4s, v5.4s, v4.4s", "trn2 v4.4s, v5.4s, v4.4s", "addp v4.8h, v7.8h, v4.8h", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, q4", "mov z4.d, z6.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, "vmpsadbw ymm0, ymm1, ymm2, 111b": { - "ExpectedInstructionCount": 40, + "ExpectedInstructionCount": 37, "Optimal": "No", "Comment": [ "Map 3 0b01 0x42 256-bit" @@ -5168,13 +4356,10 @@ "trn1 v7.4s, v5.4s, v4.4s", "trn2 v4.4s, v5.4s, v4.4s", "addp v4.8h, v7.8h, v4.8h", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, q4", "mov z4.d, z6.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, @@ -5273,7 +4458,7 @@ ] }, "vperm2i128 ymm0, ymm1, ymm2, 00b": { - "ExpectedInstructionCount": 17, + "ExpectedInstructionCount": 9, "Optimal": "No", "Comment": [ "Map 3 0b01 0x46 256-bit" @@ -5281,25 +4466,17 @@ "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", "mov z5.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, q4", - "mov z5.d, z5.d", - "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", - "adr x0, #+0x18", - "ldr p0, [x0]", + "mov z5.b, p6/m, z1.b", "mov z1.q, q4", "mov z4.d, z5.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, "vperm2i128 ymm0, ymm1, ymm2, 01b": { - "ExpectedInstructionCount": 17, + "ExpectedInstructionCount": 9, "Optimal": "No", "Comment": [ "Map 3 0b01 0x46 256-bit" @@ -5307,25 +4484,17 @@ "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", "mov z5.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, z4.q[1]", - "mov z5.d, z5.d", - "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", - "adr x0, #+0x18", - "ldr p0, [x0]", + "mov z5.b, p6/m, z1.b", "mov z1.q, q4", "mov z4.d, z5.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, "vperm2i128 ymm0, ymm1, ymm2, 10b": { - "ExpectedInstructionCount": 18, + "ExpectedInstructionCount": 11, "Optimal": "No", "Comment": [ "Map 3 0b01 0x46 256-bit" @@ -5334,25 +4503,18 @@ "mov z4.d, p7/m, z17.d", "mov z5.d, p7/m, z18.d", "mov z6.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, q5", "mov z5.d, z6.d", - "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", - "adr x0, #+0x18", - "ldr p0, [x0]", + "mov z5.b, p6/m, z1.b", "mov z1.q, q4", "mov z4.d, z5.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, "vperm2i128 ymm0, ymm1, ymm2, 11b": { - "ExpectedInstructionCount": 18, + "ExpectedInstructionCount": 11, "Optimal": "No", "Comment": [ "Map 3 0b01 0x46 256-bit" @@ -5361,25 +4523,18 @@ "mov z4.d, p7/m, z17.d", "mov z5.d, p7/m, z18.d", "mov z6.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, z5.q[1]", "mov z5.d, z6.d", - "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", - "adr x0, #+0x18", - "ldr p0, [x0]", + "mov z5.b, p6/m, z1.b", "mov z1.q, q4", "mov z4.d, z5.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, "vperm2i128 ymm0, ymm1, ymm2, 010000b": { - "ExpectedInstructionCount": 17, + "ExpectedInstructionCount": 9, "Optimal": "No", "Comment": [ "Map 3 0b01 0x46 256-bit" @@ -5387,25 +4542,17 @@ "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", "mov z5.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, q4", - "mov z5.d, z5.d", - "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", - "adr x0, #+0x18", - "ldr p0, [x0]", + "mov z5.b, p6/m, z1.b", "mov z1.q, z4.q[1]", "mov z4.d, z5.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, "vperm2i128 ymm0, ymm1, ymm2, 010001b": { - "ExpectedInstructionCount": 17, + "ExpectedInstructionCount": 9, "Optimal": "No", "Comment": [ "Map 3 0b01 0x46 256-bit" @@ -5413,25 +4560,17 @@ "ExpectedArm64ASM": [ "mov z4.d, p7/m, z17.d", "mov z5.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, z4.q[1]", - "mov z5.d, z5.d", - "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", - "adr x0, #+0x18", - "ldr p0, [x0]", + "mov z5.b, p6/m, z1.b", "mov z1.q, z4.q[1]", "mov z4.d, z5.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, "vperm2i128 ymm0, ymm1, ymm2, 010010b": { - "ExpectedInstructionCount": 18, + "ExpectedInstructionCount": 11, "Optimal": "No", "Comment": [ "Map 3 0b01 0x46 256-bit" @@ -5440,25 +4579,18 @@ "mov z4.d, p7/m, z17.d", "mov z5.d, p7/m, z18.d", "mov z6.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, q5", "mov z5.d, z6.d", - "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", - "adr x0, #+0x18", - "ldr p0, [x0]", + "mov z5.b, p6/m, z1.b", "mov z1.q, z4.q[1]", "mov z4.d, z5.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, "vperm2i128 ymm0, ymm1, ymm2, 010011b": { - "ExpectedInstructionCount": 18, + "ExpectedInstructionCount": 11, "Optimal": "No", "Comment": [ "Map 3 0b01 0x46 256-bit" @@ -5467,25 +4599,18 @@ "mov z4.d, p7/m, z17.d", "mov z5.d, p7/m, z18.d", "mov z6.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, z5.q[1]", "mov z5.d, z6.d", - "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", - "adr x0, #+0x18", - "ldr p0, [x0]", + "mov z5.b, p6/m, z1.b", "mov z1.q, z4.q[1]", "mov z4.d, z5.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, "vperm2i128 ymm0, ymm1, ymm2, 100000b": { - "ExpectedInstructionCount": 18, + "ExpectedInstructionCount": 10, "Optimal": "No", "Comment": [ "Map 3 0b01 0x46 256-bit" @@ -5494,25 +4619,17 @@ "mov z4.d, p7/m, z17.d", "mov z5.d, p7/m, z18.d", "mov z6.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, q4", "mov z4.d, z6.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", - "adr x0, #+0x18", - "ldr p0, [x0]", + "mov z4.b, p6/m, z1.b", "mov z1.q, q5", - "mov z4.d, z4.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, "vperm2i128 ymm0, ymm1, ymm2, 100001b": { - "ExpectedInstructionCount": 18, + "ExpectedInstructionCount": 10, "Optimal": "No", "Comment": [ "Map 3 0b01 0x46 256-bit" @@ -5521,25 +4638,17 @@ "mov z4.d, p7/m, z17.d", "mov z5.d, p7/m, z18.d", "mov z6.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, z4.q[1]", "mov z4.d, z6.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", - "adr x0, #+0x18", - "ldr p0, [x0]", + "mov z4.b, p6/m, z1.b", "mov z1.q, q5", - "mov z4.d, z4.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, "vperm2i128 ymm0, ymm1, ymm2, 100010b": { - "ExpectedInstructionCount": 17, + "ExpectedInstructionCount": 9, "Optimal": "No", "Comment": [ "Map 3 0b01 0x46 256-bit" @@ -5547,25 +4656,17 @@ "ExpectedArm64ASM": [ "mov z4.d, p7/m, z18.d", "mov z5.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, q4", - "mov z5.d, z5.d", - "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", - "adr x0, #+0x18", - "ldr p0, [x0]", + "mov z5.b, p6/m, z1.b", "mov z1.q, q4", "mov z4.d, z5.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, "vperm2i128 ymm0, ymm1, ymm2, 100011b": { - "ExpectedInstructionCount": 17, + "ExpectedInstructionCount": 9, "Optimal": "No", "Comment": [ "Map 3 0b01 0x46 256-bit" @@ -5573,25 +4674,17 @@ "ExpectedArm64ASM": [ "mov z4.d, p7/m, z18.d", "mov z5.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, z4.q[1]", - "mov z5.d, z5.d", - "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", - "adr x0, #+0x18", - "ldr p0, [x0]", + "mov z5.b, p6/m, z1.b", "mov z1.q, q4", "mov z4.d, z5.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, "vperm2i128 ymm0, ymm1, ymm2, 110000b": { - "ExpectedInstructionCount": 18, + "ExpectedInstructionCount": 10, "Optimal": "No", "Comment": [ "Map 3 0b01 0x46 256-bit" @@ -5600,25 +4693,17 @@ "mov z4.d, p7/m, z17.d", "mov z5.d, p7/m, z18.d", "mov z6.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, q4", "mov z4.d, z6.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", - "adr x0, #+0x18", - "ldr p0, [x0]", + "mov z4.b, p6/m, z1.b", "mov z1.q, z5.q[1]", - "mov z4.d, z4.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, "vperm2i128 ymm0, ymm1, ymm2, 110001b": { - "ExpectedInstructionCount": 18, + "ExpectedInstructionCount": 10, "Optimal": "No", "Comment": [ "Map 3 0b01 0x46 256-bit" @@ -5627,25 +4712,17 @@ "mov z4.d, p7/m, z17.d", "mov z5.d, p7/m, z18.d", "mov z6.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, z4.q[1]", "mov z4.d, z6.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", - "adr x0, #+0x18", - "ldr p0, [x0]", + "mov z4.b, p6/m, z1.b", "mov z1.q, z5.q[1]", - "mov z4.d, z4.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, "vperm2i128 ymm0, ymm1, ymm2, 110010b": { - "ExpectedInstructionCount": 17, + "ExpectedInstructionCount": 9, "Optimal": "No", "Comment": [ "Map 3 0b01 0x46 256-bit" @@ -5653,25 +4730,17 @@ "ExpectedArm64ASM": [ "mov z4.d, p7/m, z18.d", "mov z5.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, q4", - "mov z5.d, z5.d", - "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", - "adr x0, #+0x18", - "ldr p0, [x0]", + "mov z5.b, p6/m, z1.b", "mov z1.q, z4.q[1]", "mov z4.d, z5.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, "vperm2i128 ymm0, ymm1, ymm2, 110011b": { - "ExpectedInstructionCount": 17, + "ExpectedInstructionCount": 9, "Optimal": "No", "Comment": [ "Map 3 0b01 0x46 256-bit" @@ -5679,20 +4748,12 @@ "ExpectedArm64ASM": [ "mov z4.d, p7/m, z18.d", "mov z5.d, #0", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, z4.q[1]", - "mov z5.d, z5.d", - "mov z5.d, p0/m, z1.d", - "b #+0x8", - "udf #0x101", - "adr x0, #+0x18", - "ldr p0, [x0]", + "mov z5.b, p6/m, z1.b", "mov z1.q, z4.q[1]", "mov z4.d, z5.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, diff --git a/unittests/InstructionCountCI/VEX_map_group.json b/unittests/InstructionCountCI/VEX_map_group.json index 208df340b..17535d91e 100644 --- a/unittests/InstructionCountCI/VEX_map_group.json +++ b/unittests/InstructionCountCI/VEX_map_group.json @@ -598,7 +598,7 @@ ] }, "vpsrldq ymm0, ymm1, 15": { - "ExpectedInstructionCount": 14, + "ExpectedInstructionCount": 11, "Optimal": "No", "Comment": [ "Map group 14 0b011 256-bit" @@ -610,13 +610,10 @@ "movprfx z1, z4", "ext z1.b, z1.b, z5.b, #31", "mov z4.d, z1.d", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, q4", "mov z4.d, z6.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] }, @@ -758,7 +755,7 @@ ] }, "vpslldq ymm0, ymm1, 15": { - "ExpectedInstructionCount": 14, + "ExpectedInstructionCount": 11, "Optimal": "No", "Comment": [ "Map group 14 0b111 256-bit" @@ -770,13 +767,10 @@ "movprfx z1, z5", "ext z1.b, z1.b, z4.b, #17", "mov z4.d, z1.d", - "adr x0, #+0x18", - "ldr p0, [x0]", "mov z1.q, q4", "mov z4.d, z6.d", - "mov z4.d, p0/m, z1.d", - "b #+0x8", - "unallocated (Unallocated)", + "not p0.b, p7/z, p6.b", + "mov z4.b, p0/m, z1.b", "mov z16.d, p7/m, z4.d" ] },