mirror of
https://github.com/FEX-Emu/FEX.git
synced 2026-10-06 10:00:16 +02:00
6510 lines
169 KiB
JSON
6510 lines
169 KiB
JSON
{
|
|
"Features": {
|
|
"Bitness": 64,
|
|
"EnabledHostFeatures": [
|
|
"SVE128",
|
|
"SVE256"
|
|
],
|
|
"DisabledHostFeatures": [
|
|
"FCMA"
|
|
]
|
|
},
|
|
"Instructions": {
|
|
"vmovups xmm0, xmm0": {
|
|
"ExpectedInstructionCount": 3,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Spurious moves",
|
|
"Map 1 0b00 0x10 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmovups xmm0, [rax]": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"SVE 128-bit load already zero's the upper bits",
|
|
"Spurious move afterwards",
|
|
"Map 1 0b00 0x10 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"ldr q2, [x4]",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmovups ymm0, ymm0": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Spurious moves",
|
|
"Map 1 0b00 0x10 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmovups ymm0, [rax]": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Doesn't load directly in to destination",
|
|
"Map 1 0b00 0x10 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"ld1b {z2.b}, p7/z, [x4]",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmovupd xmm0, xmm0": {
|
|
"ExpectedInstructionCount": 3,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Spurious moves",
|
|
"Map 1 0b01 0x10 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmovupd xmm0, [rax]": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"SVE 128-bit load already zero's the upper bits",
|
|
"Spurious move afterwards",
|
|
"Map 1 0b01 0x10 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"ldr q2, [x4]",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmovupd ymm0, ymm0": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Spurious moves",
|
|
"Map 1 0b01 0x10 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmovupd ymm0, [rax]": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Doesn't load directly in to destination",
|
|
"Map 1 0b01 0x10 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"ld1b {z2.b}, p7/z, [x4]",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmovss xmm0, [rax]": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"32-bit vector load already zero's the upper bits",
|
|
"Spurious move afterwards",
|
|
"Map 1 0b10 0x10 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"ldr s2, [x4]",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmovss xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Insert in to first element could be more optimal, which is the common case.",
|
|
"Map 1 0b10 0x10 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"mov v2.s[0], v3.s[0]",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmovsd xmm0, [rax]": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"32-bit vector load already zero's the upper bits",
|
|
"Spurious move afterwards",
|
|
"Map 1 0b11 0x10 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"ldr d2, [x4]",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmovsd xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Insert in to first element could be more optimal, which is the common case.",
|
|
"Map 1 0b11 0x10 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"mov v2.d[0], v3.d[0]",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmovups [rax], xmm0": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0x11 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"str q2, [x4]"
|
|
]
|
|
},
|
|
"vmovups [rax], ymm0": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0x11 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"st1b {z2.b}, p7, [x4]"
|
|
]
|
|
},
|
|
"vmovupd [rax], xmm0": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x11 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"str q2, [x4]"
|
|
]
|
|
},
|
|
"vmovupd [rax], ymm0": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x11 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"st1b {z2.b}, p7, [x4]"
|
|
]
|
|
},
|
|
"vmovss [rax], xmm0": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b10 0x11 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"str s2, [x4]"
|
|
]
|
|
},
|
|
"db 0xc5, 0xf2, 0x11, 0xc2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"vmovss xmm2, xmm1, xmm0",
|
|
"Need to manually encode since nasm won't encode this",
|
|
"Insert in to first element could be more optimal, which is the common case.",
|
|
"Map 1 0b10 0x11 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z16.d",
|
|
"mov v2.s[0], v3.s[0]",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z18.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmovsd [rax], xmm0": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b11 0x11 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"str d2, [x4]"
|
|
]
|
|
},
|
|
"db 0xc5, 0xf3, 0x11, 0xc2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"vmovsd xmm2, xmm1, xmm0",
|
|
"Need to manually encode since nasm won't encode this",
|
|
"Insert in to first element could be more optimal, which is the common case.",
|
|
"Map 1 0b11 0x11 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z16.d",
|
|
"mov v2.d[0], v3.d[0]",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z18.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmovlps xmm0, xmm1, [rax]": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Insert in to first element could be more optimal, which is the common case.",
|
|
"Map 1 0b00 0x12 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"ldr q3, [x4]",
|
|
"mov v2.d[0], v3.d[0]",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmovlpd xmm0, xmm1, [rax]": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Insert in to first element could be more optimal, which is the common case.",
|
|
"Map 1 0b01 0x12 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"ldr q3, [x4]",
|
|
"mov v2.d[0], v3.d[0]",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmovsldup xmm0, [rax]": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b10 0x12 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"ldr q2, [x4]",
|
|
"trn1 v2.4s, v2.4s, v2.4s",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmovsldup ymm0, [rax]": {
|
|
"ExpectedInstructionCount": 3,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b10 0x12 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"ld1b {z2.b}, p7/z, [x4]",
|
|
"trn1 z2.s, z2.s, z2.s",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmovddup xmm0, [rax]": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b11 0x12 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"ldr d2, [x4]",
|
|
"dup v2.2d, v2.d[0]",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmovddup ymm0, [rax]": {
|
|
"ExpectedInstructionCount": 3,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b11 0x12 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"ld1b {z2.b}, p7/z, [x4]",
|
|
"trn1 z2.d, z2.d, z2.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmovlps [rax], xmm0": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0x13 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"str d2, [x4]"
|
|
]
|
|
},
|
|
"vmovlpd [rax], xmm0": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x13 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"str d2, [x4]"
|
|
]
|
|
},
|
|
"vunpcklps xmm0, xmm1, [rax]": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0x14 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"ldr q3, [x4]",
|
|
"zip1 v2.4s, v2.4s, v3.4s",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vunpcklps ymm0, ymm1, [rax]": {
|
|
"ExpectedInstructionCount": 9,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0x14 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"ld1b {z3.b}, p7/z, [x4]",
|
|
"zip1 z4.s, z2.s, z3.s",
|
|
"zip2 z2.s, z2.s, z3.s",
|
|
"mov z1.q, q2",
|
|
"mov z2.d, z4.d",
|
|
"not p0.b, p7/z, p6.b",
|
|
"mov z2.b, p0/m, z1.b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vunpcklpd xmm0, xmm1, [rax]": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x14 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"ldr q3, [x4]",
|
|
"zip1 v2.2d, v2.2d, v3.2d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vunpcklpd ymm0, ymm1, [rax]": {
|
|
"ExpectedInstructionCount": 9,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x14 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"ld1b {z3.b}, p7/z, [x4]",
|
|
"zip1 z4.d, z2.d, z3.d",
|
|
"zip2 z2.d, z2.d, z3.d",
|
|
"mov z1.q, q2",
|
|
"mov z2.d, z4.d",
|
|
"not p0.b, p7/z, p6.b",
|
|
"mov z2.b, p0/m, z1.b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vunpckhps xmm0, xmm1, [rax]": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0x15 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"ldr q3, [x4]",
|
|
"zip2 v2.4s, v2.4s, v3.4s",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vunpckhps ymm0, ymm1, [rax]": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0x15 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"ld1b {z3.b}, p7/z, [x4]",
|
|
"zip1 z4.s, z2.s, z3.s",
|
|
"zip2 z2.s, z2.s, z3.s",
|
|
"mov z1.q, z4.q[1]",
|
|
"mov z2.b, p6/m, z1.b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vunpckhpd xmm0, xmm1, [rax]": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x15 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"ldr q3, [x4]",
|
|
"zip2 v2.2d, v2.2d, v3.2d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vunpckhpd ymm0, ymm1, [rax]": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x15 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"ld1b {z3.b}, p7/z, [x4]",
|
|
"zip1 z4.d, z2.d, z3.d",
|
|
"zip2 z2.d, z2.d, z3.d",
|
|
"mov z1.q, z4.q[1]",
|
|
"mov z2.b, p6/m, z1.b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmovhps xmm0, xmm1, [rax]": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0x16 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov v2.8b, v2.8b",
|
|
"ldr d3, [x4]",
|
|
"mov v2.d[1], v3.d[0]",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmovhpd xmm0, xmm1, [rax]": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x16 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov v2.8b, v2.8b",
|
|
"ldr d3, [x4]",
|
|
"mov v2.d[1], v3.d[0]",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmovshdup xmm0, [rax]": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b10 0x16 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"ldr q2, [x4]",
|
|
"trn2 v2.4s, v2.4s, v2.4s",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmovshdup ymm0, [rax]": {
|
|
"ExpectedInstructionCount": 3,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b10 0x16 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"ld1b {z2.b}, p7/z, [x4]",
|
|
"trn2 z2.s, z2.s, z2.s",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmovhps [rax], xmm0": {
|
|
"ExpectedInstructionCount": 3,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0x17 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"mov v2.d[0], v2.d[1]",
|
|
"str d2, [x4]"
|
|
]
|
|
},
|
|
"vmovhpd [rax], xmm0": {
|
|
"ExpectedInstructionCount": 3,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x17 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"mov v2.d[0], v2.d[1]",
|
|
"str d2, [x4]"
|
|
]
|
|
},
|
|
"vmovmskps rax, xmm0": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0x50 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"ushr v2.4s, v2.4s, #31",
|
|
"index z3.s, #0, #1",
|
|
"ushl v2.4s, v2.4s, v3.4s",
|
|
"addv s2, v2.4s",
|
|
"mov w4, v2.s[0]"
|
|
]
|
|
},
|
|
"vmovmskps rax, ymm0": {
|
|
"ExpectedInstructionCount": 42,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0x50 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"mov w20, #0x0",
|
|
"mov w21, v2.s[0]",
|
|
"lsr w21, w21, #31",
|
|
"orr x20, x20, x21",
|
|
"mov w21, v2.s[1]",
|
|
"lsr w21, w21, #31",
|
|
"lsl w21, w21, #1",
|
|
"orr x20, x20, x21",
|
|
"mov w21, v2.s[2]",
|
|
"lsr w21, w21, #31",
|
|
"lsl w21, w21, #2",
|
|
"orr x20, x20, x21",
|
|
"mov w21, v2.s[3]",
|
|
"lsr w21, w21, #31",
|
|
"lsl w21, w21, #3",
|
|
"orr x20, x20, x21",
|
|
"not p0.b, p7/z, p6.b",
|
|
"compact z0.d, p0, z2.d",
|
|
"mov w21, v2.s[0]",
|
|
"lsr w21, w21, #31",
|
|
"lsl w21, w21, #4",
|
|
"orr x20, x20, x21",
|
|
"not p0.b, p7/z, p6.b",
|
|
"compact z0.d, p0, z2.d",
|
|
"mov w21, v2.s[1]",
|
|
"lsr w21, w21, #31",
|
|
"lsl w21, w21, #5",
|
|
"orr x20, x20, x21",
|
|
"not p0.b, p7/z, p6.b",
|
|
"compact z0.d, p0, z2.d",
|
|
"mov w21, v2.s[2]",
|
|
"lsr w21, w21, #31",
|
|
"lsl w21, w21, #6",
|
|
"orr x20, x20, x21",
|
|
"not p0.b, p7/z, p6.b",
|
|
"compact z0.d, p0, z2.d",
|
|
"mov w21, v2.s[3]",
|
|
"lsr w21, w21, #31",
|
|
"lsl w21, w21, #7",
|
|
"orr x20, x20, x21",
|
|
"lsr w4, w20, #0"
|
|
]
|
|
},
|
|
"vmovmskpd rax, xmm0": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x50 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"uzp2 v2.4s, v2.4s, v2.4s",
|
|
"mov x20, v2.d[0]",
|
|
"bfi x20, x20, #31, #32",
|
|
"lsr x4, x20, #62"
|
|
]
|
|
},
|
|
"vmovmskpd rax, ymm0": {
|
|
"ExpectedInstructionCount": 22,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x50 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"mov w20, #0x0",
|
|
"mov x21, v2.d[0]",
|
|
"lsr x21, x21, #63",
|
|
"orr x20, x20, x21",
|
|
"mov x21, v2.d[1]",
|
|
"lsr x21, x21, #63",
|
|
"lsl x21, x21, #1",
|
|
"orr x20, x20, x21",
|
|
"not p0.b, p7/z, p6.b",
|
|
"compact z0.d, p0, z2.d",
|
|
"mov x21, v2.d[0]",
|
|
"lsr x21, x21, #63",
|
|
"lsl x21, x21, #2",
|
|
"orr x20, x20, x21",
|
|
"not p0.b, p7/z, p6.b",
|
|
"compact z0.d, p0, z2.d",
|
|
"mov x21, v2.d[1]",
|
|
"lsr x21, x21, #63",
|
|
"lsl x21, x21, #3",
|
|
"orr x20, x20, x21",
|
|
"lsr w4, w20, #0"
|
|
]
|
|
},
|
|
"vsqrtps xmm0, xmm1": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0x51 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"fsqrt v2.4s, v2.4s",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vsqrtps ymm0, ymm1": {
|
|
"ExpectedInstructionCount": 3,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0x51 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"fsqrt z2.s, p7/m, z2.s",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vsqrtpd xmm0, xmm1": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x51 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"fsqrt v2.2d, v2.2d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vsqrtpd ymm0, ymm1": {
|
|
"ExpectedInstructionCount": 3,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x51 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"fsqrt z2.d, p7/m, z2.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vsqrtss xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 8,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Insert in to first element could be more optimal, which is the common case.",
|
|
"Map 1 0b10 0x51 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z18.d",
|
|
"mov z3.d, p7/m, z17.d",
|
|
"fsqrt s2, s2",
|
|
"mov v0.16b, v3.16b",
|
|
"mov v0.s[0], v2.s[0]",
|
|
"mov v2.16b, v0.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vsqrtsd xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 8,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Insert in to first element could be more optimal, which is the common case.",
|
|
"Map 1 0b11 0x51 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z18.d",
|
|
"mov z3.d, p7/m, z17.d",
|
|
"fsqrt d2, d2",
|
|
"mov v0.16b, v3.16b",
|
|
"mov v0.d[0], v2.d[0]",
|
|
"mov v2.16b, v0.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vrsqrtps xmm0, xmm1": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"FEAT_FPRES could make this more optimal",
|
|
"Map 1 0b00 0x52 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"fmov v0.4s, #0x70 (1.0000)",
|
|
"fsqrt v1.4s, v2.4s",
|
|
"fdiv v2.4s, v0.4s, v1.4s",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vrsqrtps ymm0, ymm1": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"FEAT_FPRES could make this more optimal",
|
|
"Map 1 0b00 0x52 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"fsqrt z0.s, p7/m, z2.s",
|
|
"fmov z2.s, #0x70 (1.0000)",
|
|
"fdiv z2.s, p7/m, z2.s, z0.s",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vrsqrtss xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 10,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"FEAT_FPRES could make this more optimal",
|
|
"Map 1 0b10 0x52 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z18.d",
|
|
"mov z3.d, p7/m, z17.d",
|
|
"fmov s0, #0x70 (1.0000)",
|
|
"fsqrt s1, s2",
|
|
"fdiv s2, s0, s1",
|
|
"mov v0.16b, v3.16b",
|
|
"mov v0.s[0], v2.s[0]",
|
|
"mov v2.16b, v0.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vrcpps xmm0, xmm1": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"FEAT_FPRES could make this more optimal",
|
|
"Map 1 0b00 0x53 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"fmov v0.4s, #0x70 (1.0000)",
|
|
"fdiv v2.4s, v0.4s, v2.4s",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vrcpps ymm0, ymm1": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"FEAT_FPRES could make this more optimal",
|
|
"Map 1 0b00 0x53 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"fmov z0.s, #0x70 (1.0000)",
|
|
"fdiv z0.s, p7/m, z0.s, z2.s",
|
|
"mov z2.d, z0.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vrcpss xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 9,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"FEAT_FPRES could make this more optimal",
|
|
"Map 1 0b10 0x53 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z18.d",
|
|
"mov z3.d, p7/m, z17.d",
|
|
"fmov s0, #0x70 (1.0000)",
|
|
"fdiv s2, s0, s2",
|
|
"mov v0.16b, v3.16b",
|
|
"mov v0.s[0], v2.s[0]",
|
|
"mov v2.16b, v0.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vandps xmm0, xmm1": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0x54 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"mov z3.d, p7/m, z17.d",
|
|
"and v2.16b, v2.16b, v3.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vandps ymm0, ymm1": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0x54 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"mov z3.d, p7/m, z17.d",
|
|
"and z2.d, z2.d, z3.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vandpd xmm0, xmm1": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x54 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"mov z3.d, p7/m, z17.d",
|
|
"and v2.16b, v2.16b, v3.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vandpd ymm0, ymm1": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x54 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"mov z3.d, p7/m, z17.d",
|
|
"and z2.d, z2.d, z3.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vandnps xmm0, xmm1": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0x55 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"mov z3.d, p7/m, z17.d",
|
|
"bic v2.16b, v3.16b, v2.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vandnps ymm0, ymm1": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0x55 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"mov z3.d, p7/m, z17.d",
|
|
"bic z2.d, z3.d, z2.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vandnpd xmm0, xmm1": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x55 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"mov z3.d, p7/m, z17.d",
|
|
"bic v2.16b, v3.16b, v2.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vandnpd ymm0, ymm1": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x55 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"mov z3.d, p7/m, z17.d",
|
|
"bic z2.d, z3.d, z2.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vorps xmm0, xmm1": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0x56 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"mov z3.d, p7/m, z17.d",
|
|
"orr v2.16b, v2.16b, v3.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vorps ymm0, ymm1": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0x56 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"mov z3.d, p7/m, z17.d",
|
|
"orr z2.d, z2.d, z3.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vorpd xmm0, xmm1": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x56 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"mov z3.d, p7/m, z17.d",
|
|
"orr v2.16b, v2.16b, v3.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vorpd ymm0, ymm1": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x56 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"mov z3.d, p7/m, z17.d",
|
|
"orr z2.d, z2.d, z3.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vxorps xmm0, xmm1": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0x57 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"mov z3.d, p7/m, z17.d",
|
|
"eor v2.16b, v2.16b, v3.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vxorps ymm0, ymm1": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0x57 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"mov z3.d, p7/m, z17.d",
|
|
"eor z2.d, z2.d, z3.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vxorpd xmm0, xmm1": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x57 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"mov z3.d, p7/m, z17.d",
|
|
"eor v2.16b, v2.16b, v3.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vxorpd ymm0, ymm1": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x57 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"mov z3.d, p7/m, z17.d",
|
|
"eor z2.d, z2.d, z3.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpunpcklbw xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x60 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"zip1 v2.16b, v2.16b, v3.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpunpcklbw ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 9,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x60 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"zip1 z4.b, z2.b, z3.b",
|
|
"zip2 z2.b, z2.b, z3.b",
|
|
"mov z1.q, q2",
|
|
"mov z2.d, z4.d",
|
|
"not p0.b, p7/z, p6.b",
|
|
"mov z2.b, p0/m, z1.b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpunpcklwd xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x61 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"zip1 v2.8h, v2.8h, v3.8h",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpunpcklwd ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 9,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x61 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"zip1 z4.h, z2.h, z3.h",
|
|
"zip2 z2.h, z2.h, z3.h",
|
|
"mov z1.q, q2",
|
|
"mov z2.d, z4.d",
|
|
"not p0.b, p7/z, p6.b",
|
|
"mov z2.b, p0/m, z1.b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpunpckldq xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x62 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"zip1 v2.4s, v2.4s, v3.4s",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpunpckldq ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 9,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x62 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"zip1 z4.s, z2.s, z3.s",
|
|
"zip2 z2.s, z2.s, z3.s",
|
|
"mov z1.q, q2",
|
|
"mov z2.d, z4.d",
|
|
"not p0.b, p7/z, p6.b",
|
|
"mov z2.b, p0/m, z1.b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpacksswb xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x63 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"sqxtn v2.8b, v2.8h",
|
|
"sqxtn2 v2.16b, v3.8h",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpacksswb ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 18,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x63 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"sqxtnb z1.b, z3.h",
|
|
"uzp1 z1.b, z1.b, z1.b",
|
|
"sqxtnb z2.b, z2.h",
|
|
"uzp1 z2.b, z2.b, z2.b",
|
|
"splice z2.b, p6, z2.b, z1.b",
|
|
"mov z1.d, z2.d[1]",
|
|
"mov z3.d, z2.d",
|
|
"index z0.d, #-2, #1",
|
|
"cmpeq p0.d, p7/z, z0.d, #0",
|
|
"mov z3.d, p0/m, z1.d",
|
|
"mov z1.d, z2.d[2]",
|
|
"mov z2.d, z3.d",
|
|
"index z0.d, #-2, #1",
|
|
"cmpeq p0.d, p7/z, z0.d, #-1",
|
|
"mov z2.d, p0/m, z1.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpcmpgtb xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x64 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"cmgt v2.16b, v2.16b, v3.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpcmpgtb ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x64 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"cmpgt p0.b, p7/z, z2.b, z3.b",
|
|
"not z0.b, p0/m, z2.b",
|
|
"movprfx z2.b, p0/z, z2.b",
|
|
"orr z2.b, p0/m, z2.b, z0.b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpcmpgtw xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x65 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"cmgt v2.8h, v2.8h, v3.8h",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpcmpgtw ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x65 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"cmpgt p0.h, p7/z, z2.h, z3.h",
|
|
"not z0.h, p0/m, z2.h",
|
|
"movprfx z2.h, p0/z, z2.h",
|
|
"orr z2.h, p0/m, z2.h, z0.h",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpcmpgtd xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x66 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"cmgt v2.4s, v2.4s, v3.4s",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpcmpgtd ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x66 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"cmpgt p0.s, p7/z, z2.s, z3.s",
|
|
"not z0.s, p0/m, z2.s",
|
|
"movprfx z2.s, p0/z, z2.s",
|
|
"orr z2.s, p0/m, z2.s, z0.s",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpackuswb xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x67 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"sqxtun v2.8b, v2.8h",
|
|
"sqxtun2 v2.16b, v3.8h",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpackuswb ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 18,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x67 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"sqxtunb z1.b, z3.h",
|
|
"uzp1 z1.b, z1.b, z1.b",
|
|
"sqxtunb z2.b, z2.h",
|
|
"uzp1 z2.b, z2.b, z2.b",
|
|
"splice z2.b, p6, z2.b, z1.b",
|
|
"mov z1.d, z2.d[1]",
|
|
"mov z3.d, z2.d",
|
|
"index z0.d, #-2, #1",
|
|
"cmpeq p0.d, p7/z, z0.d, #0",
|
|
"mov z3.d, p0/m, z1.d",
|
|
"mov z1.d, z2.d[2]",
|
|
"mov z2.d, z3.d",
|
|
"index z0.d, #-2, #1",
|
|
"cmpeq p0.d, p7/z, z0.d, #-1",
|
|
"mov z2.d, p0/m, z1.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpshufd xmm0, xmm1, 00b": {
|
|
"ExpectedInstructionCount": 11,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x70 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov v0.16b, v2.16b",
|
|
"mov v0.s[0], v2.s[0]",
|
|
"mov v3.16b, v0.16b",
|
|
"mov v3.s[1], v2.s[0]",
|
|
"mov v3.s[2], v2.s[0]",
|
|
"mov v0.16b, v3.16b",
|
|
"mov v0.s[3], v2.s[0]",
|
|
"mov v2.16b, v0.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpshufd xmm0, xmm1, 01b": {
|
|
"ExpectedInstructionCount": 11,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x70 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov v0.16b, v2.16b",
|
|
"mov v0.s[0], v2.s[1]",
|
|
"mov v3.16b, v0.16b",
|
|
"mov v3.s[1], v2.s[0]",
|
|
"mov v3.s[2], v2.s[0]",
|
|
"mov v0.16b, v3.16b",
|
|
"mov v0.s[3], v2.s[0]",
|
|
"mov v2.16b, v0.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpshufd xmm0, xmm1, 10b": {
|
|
"ExpectedInstructionCount": 11,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x70 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov v0.16b, v2.16b",
|
|
"mov v0.s[0], v2.s[2]",
|
|
"mov v3.16b, v0.16b",
|
|
"mov v3.s[1], v2.s[0]",
|
|
"mov v3.s[2], v2.s[0]",
|
|
"mov v0.16b, v3.16b",
|
|
"mov v0.s[3], v2.s[0]",
|
|
"mov v2.16b, v0.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpshufd xmm0, xmm1, 11b": {
|
|
"ExpectedInstructionCount": 11,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x70 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov v0.16b, v2.16b",
|
|
"mov v0.s[0], v2.s[3]",
|
|
"mov v3.16b, v0.16b",
|
|
"mov v3.s[1], v2.s[0]",
|
|
"mov v3.s[2], v2.s[0]",
|
|
"mov v0.16b, v3.16b",
|
|
"mov v0.s[3], v2.s[0]",
|
|
"mov v2.16b, v0.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpshufd ymm0, ymm1, 00b": {
|
|
"ExpectedInstructionCount": 36,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x70 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z1.s, s2",
|
|
"mov z3.d, z2.d",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #-4",
|
|
"mov z3.s, p0/m, z1.s",
|
|
"mov z1.s, z2.s[4]",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #0",
|
|
"mov z3.s, p0/m, z1.s",
|
|
"mov z1.s, s2",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #-3",
|
|
"mov z3.s, p0/m, z1.s",
|
|
"mov z1.s, z2.s[4]",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #1",
|
|
"mov z3.s, p0/m, z1.s",
|
|
"mov z1.s, s2",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #-2",
|
|
"mov z3.s, p0/m, z1.s",
|
|
"mov z1.s, z2.s[4]",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #2",
|
|
"mov z3.s, p0/m, z1.s",
|
|
"mov z1.s, s2",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #-1",
|
|
"mov z3.s, p0/m, z1.s",
|
|
"mov z1.s, z2.s[4]",
|
|
"mov z2.d, z3.d",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #3",
|
|
"mov z2.s, p0/m, z1.s",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpshufd ymm0, ymm1, 01b": {
|
|
"ExpectedInstructionCount": 36,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x70 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z1.s, z2.s[1]",
|
|
"mov z3.d, z2.d",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #-4",
|
|
"mov z3.s, p0/m, z1.s",
|
|
"mov z1.s, z2.s[5]",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #0",
|
|
"mov z3.s, p0/m, z1.s",
|
|
"mov z1.s, s2",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #-3",
|
|
"mov z3.s, p0/m, z1.s",
|
|
"mov z1.s, z2.s[4]",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #1",
|
|
"mov z3.s, p0/m, z1.s",
|
|
"mov z1.s, s2",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #-2",
|
|
"mov z3.s, p0/m, z1.s",
|
|
"mov z1.s, z2.s[4]",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #2",
|
|
"mov z3.s, p0/m, z1.s",
|
|
"mov z1.s, s2",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #-1",
|
|
"mov z3.s, p0/m, z1.s",
|
|
"mov z1.s, z2.s[4]",
|
|
"mov z2.d, z3.d",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #3",
|
|
"mov z2.s, p0/m, z1.s",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpshufd ymm0, ymm1, 10b": {
|
|
"ExpectedInstructionCount": 36,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x70 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z1.s, z2.s[2]",
|
|
"mov z3.d, z2.d",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #-4",
|
|
"mov z3.s, p0/m, z1.s",
|
|
"mov z1.s, z2.s[6]",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #0",
|
|
"mov z3.s, p0/m, z1.s",
|
|
"mov z1.s, s2",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #-3",
|
|
"mov z3.s, p0/m, z1.s",
|
|
"mov z1.s, z2.s[4]",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #1",
|
|
"mov z3.s, p0/m, z1.s",
|
|
"mov z1.s, s2",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #-2",
|
|
"mov z3.s, p0/m, z1.s",
|
|
"mov z1.s, z2.s[4]",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #2",
|
|
"mov z3.s, p0/m, z1.s",
|
|
"mov z1.s, s2",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #-1",
|
|
"mov z3.s, p0/m, z1.s",
|
|
"mov z1.s, z2.s[4]",
|
|
"mov z2.d, z3.d",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #3",
|
|
"mov z2.s, p0/m, z1.s",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpshufd ymm0, ymm1, 11b": {
|
|
"ExpectedInstructionCount": 36,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x70 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z1.s, z2.s[3]",
|
|
"mov z3.d, z2.d",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #-4",
|
|
"mov z3.s, p0/m, z1.s",
|
|
"mov z1.s, z2.s[7]",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #0",
|
|
"mov z3.s, p0/m, z1.s",
|
|
"mov z1.s, s2",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #-3",
|
|
"mov z3.s, p0/m, z1.s",
|
|
"mov z1.s, z2.s[4]",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #1",
|
|
"mov z3.s, p0/m, z1.s",
|
|
"mov z1.s, s2",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #-2",
|
|
"mov z3.s, p0/m, z1.s",
|
|
"mov z1.s, z2.s[4]",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #2",
|
|
"mov z3.s, p0/m, z1.s",
|
|
"mov z1.s, s2",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #-1",
|
|
"mov z3.s, p0/m, z1.s",
|
|
"mov z1.s, z2.s[4]",
|
|
"mov z2.d, z3.d",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #3",
|
|
"mov z2.s, p0/m, z1.s",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpshufhw xmm0, xmm1, 00b": {
|
|
"ExpectedInstructionCount": 11,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b10 0x70 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov v0.16b, v2.16b",
|
|
"mov v0.h[4], v2.h[4]",
|
|
"mov v3.16b, v0.16b",
|
|
"mov v3.h[5], v2.h[4]",
|
|
"mov v3.h[6], v2.h[4]",
|
|
"mov v0.16b, v3.16b",
|
|
"mov v0.h[7], v2.h[4]",
|
|
"mov v2.16b, v0.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpshufhw xmm0, xmm1, 01b": {
|
|
"ExpectedInstructionCount": 11,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b10 0x70 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov v0.16b, v2.16b",
|
|
"mov v0.h[4], v2.h[5]",
|
|
"mov v3.16b, v0.16b",
|
|
"mov v3.h[5], v2.h[4]",
|
|
"mov v3.h[6], v2.h[4]",
|
|
"mov v0.16b, v3.16b",
|
|
"mov v0.h[7], v2.h[4]",
|
|
"mov v2.16b, v0.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpshufhw xmm0, xmm1, 10b": {
|
|
"ExpectedInstructionCount": 11,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b10 0x70 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov v0.16b, v2.16b",
|
|
"mov v0.h[4], v2.h[6]",
|
|
"mov v3.16b, v0.16b",
|
|
"mov v3.h[5], v2.h[4]",
|
|
"mov v3.h[6], v2.h[4]",
|
|
"mov v0.16b, v3.16b",
|
|
"mov v0.h[7], v2.h[4]",
|
|
"mov v2.16b, v0.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpshufhw xmm0, xmm1, 11b": {
|
|
"ExpectedInstructionCount": 11,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b10 0x70 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov v0.16b, v2.16b",
|
|
"mov v0.h[4], v2.h[7]",
|
|
"mov v3.16b, v0.16b",
|
|
"mov v3.h[5], v2.h[4]",
|
|
"mov v3.h[6], v2.h[4]",
|
|
"mov v0.16b, v3.16b",
|
|
"mov v0.h[7], v2.h[4]",
|
|
"mov v2.16b, v0.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpshufhw ymm0, ymm1, 00b": {
|
|
"ExpectedInstructionCount": 36,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b10 0x70 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z1.h, z2.h[4]",
|
|
"mov z3.d, z2.d",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #-4",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, z2.h[12]",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #4",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, z2.h[4]",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #-3",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, z2.h[12]",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #5",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, z2.h[4]",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #-2",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, z2.h[12]",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #6",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, z2.h[4]",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #-1",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, z2.h[12]",
|
|
"mov z2.d, z3.d",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #7",
|
|
"mov z2.h, p0/m, z1.h",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpshufhw ymm0, ymm1, 01b": {
|
|
"ExpectedInstructionCount": 36,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b10 0x70 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z1.h, z2.h[5]",
|
|
"mov z3.d, z2.d",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #-4",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, z2.h[13]",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #4",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, z2.h[4]",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #-3",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, z2.h[12]",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #5",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, z2.h[4]",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #-2",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, z2.h[12]",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #6",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, z2.h[4]",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #-1",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, z2.h[12]",
|
|
"mov z2.d, z3.d",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #7",
|
|
"mov z2.h, p0/m, z1.h",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpshufhw ymm0, ymm1, 10b": {
|
|
"ExpectedInstructionCount": 36,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b10 0x70 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z1.h, z2.h[6]",
|
|
"mov z3.d, z2.d",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #-4",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, z2.h[14]",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #4",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, z2.h[4]",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #-3",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, z2.h[12]",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #5",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, z2.h[4]",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #-2",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, z2.h[12]",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #6",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, z2.h[4]",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #-1",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, z2.h[12]",
|
|
"mov z2.d, z3.d",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #7",
|
|
"mov z2.h, p0/m, z1.h",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpshufhw ymm0, ymm1, 11b": {
|
|
"ExpectedInstructionCount": 36,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b10 0x70 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z1.h, z2.h[7]",
|
|
"mov z3.d, z2.d",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #-4",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, z2.h[15]",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #4",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, z2.h[4]",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #-3",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, z2.h[12]",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #5",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, z2.h[4]",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #-2",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, z2.h[12]",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #6",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, z2.h[4]",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #-1",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, z2.h[12]",
|
|
"mov z2.d, z3.d",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #7",
|
|
"mov z2.h, p0/m, z1.h",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpshuflw xmm0, xmm1, 00b": {
|
|
"ExpectedInstructionCount": 11,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b11 0x70 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov v0.16b, v2.16b",
|
|
"mov v0.h[0], v2.h[0]",
|
|
"mov v3.16b, v0.16b",
|
|
"mov v3.h[1], v2.h[0]",
|
|
"mov v3.h[2], v2.h[0]",
|
|
"mov v0.16b, v3.16b",
|
|
"mov v0.h[3], v2.h[0]",
|
|
"mov v2.16b, v0.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpshuflw xmm0, xmm1, 01b": {
|
|
"ExpectedInstructionCount": 11,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b11 0x70 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov v0.16b, v2.16b",
|
|
"mov v0.h[0], v2.h[1]",
|
|
"mov v3.16b, v0.16b",
|
|
"mov v3.h[1], v2.h[0]",
|
|
"mov v3.h[2], v2.h[0]",
|
|
"mov v0.16b, v3.16b",
|
|
"mov v0.h[3], v2.h[0]",
|
|
"mov v2.16b, v0.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpshuflw xmm0, xmm1, 10b": {
|
|
"ExpectedInstructionCount": 11,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b11 0x70 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov v0.16b, v2.16b",
|
|
"mov v0.h[0], v2.h[2]",
|
|
"mov v3.16b, v0.16b",
|
|
"mov v3.h[1], v2.h[0]",
|
|
"mov v3.h[2], v2.h[0]",
|
|
"mov v0.16b, v3.16b",
|
|
"mov v0.h[3], v2.h[0]",
|
|
"mov v2.16b, v0.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpshuflw xmm0, xmm1, 11b": {
|
|
"ExpectedInstructionCount": 11,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b11 0x70 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov v0.16b, v2.16b",
|
|
"mov v0.h[0], v2.h[3]",
|
|
"mov v3.16b, v0.16b",
|
|
"mov v3.h[1], v2.h[0]",
|
|
"mov v3.h[2], v2.h[0]",
|
|
"mov v0.16b, v3.16b",
|
|
"mov v0.h[3], v2.h[0]",
|
|
"mov v2.16b, v0.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpshuflw ymm0, ymm1, 00b": {
|
|
"ExpectedInstructionCount": 36,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b11 0x70 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z1.h, h2",
|
|
"mov z3.d, z2.d",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #-8",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, z2.h[8]",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #0",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, h2",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #-7",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, z2.h[8]",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #1",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, h2",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #-6",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, z2.h[8]",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #2",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, h2",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #-5",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, z2.h[8]",
|
|
"mov z2.d, z3.d",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #3",
|
|
"mov z2.h, p0/m, z1.h",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpshuflw ymm0, ymm1, 01b": {
|
|
"ExpectedInstructionCount": 36,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b11 0x70 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z1.h, z2.h[1]",
|
|
"mov z3.d, z2.d",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #-8",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, z2.h[9]",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #0",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, h2",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #-7",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, z2.h[8]",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #1",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, h2",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #-6",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, z2.h[8]",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #2",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, h2",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #-5",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, z2.h[8]",
|
|
"mov z2.d, z3.d",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #3",
|
|
"mov z2.h, p0/m, z1.h",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpshuflw ymm0, ymm1, 10b": {
|
|
"ExpectedInstructionCount": 36,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b11 0x70 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z1.h, z2.h[2]",
|
|
"mov z3.d, z2.d",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #-8",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, z2.h[10]",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #0",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, h2",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #-7",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, z2.h[8]",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #1",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, h2",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #-6",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, z2.h[8]",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #2",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, h2",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #-5",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, z2.h[8]",
|
|
"mov z2.d, z3.d",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #3",
|
|
"mov z2.h, p0/m, z1.h",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpshuflw ymm0, ymm1, 11b": {
|
|
"ExpectedInstructionCount": 36,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b11 0x70 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z1.h, z2.h[3]",
|
|
"mov z3.d, z2.d",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #-8",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, z2.h[11]",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #0",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, h2",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #-7",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, z2.h[8]",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #1",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, h2",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #-6",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, z2.h[8]",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #2",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, h2",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #-5",
|
|
"mov z3.h, p0/m, z1.h",
|
|
"mov z1.h, z2.h[8]",
|
|
"mov z2.d, z3.d",
|
|
"index z0.h, #-8, #1",
|
|
"cmpeq p0.h, p7/z, z0.h, #3",
|
|
"mov z2.h, p0/m, z1.h",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpcmpeqb xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x74 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"cmeq v2.16b, v2.16b, v3.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpcmpeqb ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x74 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"cmpeq p0.b, p7/z, z2.b, z3.b",
|
|
"not z0.b, p0/m, z2.b",
|
|
"movprfx z2.b, p0/z, z2.b",
|
|
"orr z2.b, p0/m, z2.b, z0.b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpcmpeqw xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x75 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"cmeq v2.8h, v2.8h, v3.8h",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpcmpeqw ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x75 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"cmpeq p0.h, p7/z, z2.h, z3.h",
|
|
"not z0.h, p0/m, z2.h",
|
|
"movprfx z2.h, p0/z, z2.h",
|
|
"orr z2.h, p0/m, z2.h, z0.h",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpcmpeqd xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x76 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"cmeq v2.4s, v2.4s, v3.4s",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpcmpeqd ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x76 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"cmpeq p0.s, p7/z, z2.s, z3.s",
|
|
"not z0.s, p0/m, z2.s",
|
|
"movprfx z2.s, p0/z, z2.s",
|
|
"orr z2.s, p0/m, z2.s, z0.s",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vzeroupper": {
|
|
"ExpectedInstructionCount": 48,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x77 L=0"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d",
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z17.d, p7/m, z2.d",
|
|
"mov z2.d, p7/m, z18.d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z18.d, p7/m, z2.d",
|
|
"mov z2.d, p7/m, z19.d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z19.d, p7/m, z2.d",
|
|
"mov z2.d, p7/m, z20.d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z20.d, p7/m, z2.d",
|
|
"mov z2.d, p7/m, z21.d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z21.d, p7/m, z2.d",
|
|
"mov z2.d, p7/m, z22.d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z22.d, p7/m, z2.d",
|
|
"mov z2.d, p7/m, z23.d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z23.d, p7/m, z2.d",
|
|
"mov z2.d, p7/m, z24.d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z24.d, p7/m, z2.d",
|
|
"mov z2.d, p7/m, z25.d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z25.d, p7/m, z2.d",
|
|
"mov z2.d, p7/m, z26.d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z26.d, p7/m, z2.d",
|
|
"mov z2.d, p7/m, z27.d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z27.d, p7/m, z2.d",
|
|
"mov z2.d, p7/m, z28.d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z28.d, p7/m, z2.d",
|
|
"mov z2.d, p7/m, z29.d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z29.d, p7/m, z2.d",
|
|
"mov z2.d, p7/m, z30.d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z30.d, p7/m, z2.d",
|
|
"mov z2.d, p7/m, z31.d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z31.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vzeroall": {
|
|
"ExpectedInstructionCount": 17,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Should use movi for all registers",
|
|
"Map 1 0b01 0x77 L=1"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"movi v2.2d, #0x0",
|
|
"mov z16.d, p7/m, z2.d",
|
|
"mov z17.d, p7/m, z2.d",
|
|
"mov z18.d, p7/m, z2.d",
|
|
"mov z19.d, p7/m, z2.d",
|
|
"mov z20.d, p7/m, z2.d",
|
|
"mov z21.d, p7/m, z2.d",
|
|
"mov z22.d, p7/m, z2.d",
|
|
"mov z23.d, p7/m, z2.d",
|
|
"mov z24.d, p7/m, z2.d",
|
|
"mov z25.d, p7/m, z2.d",
|
|
"mov z26.d, p7/m, z2.d",
|
|
"mov z27.d, p7/m, z2.d",
|
|
"mov z28.d, p7/m, z2.d",
|
|
"mov z29.d, p7/m, z2.d",
|
|
"mov z30.d, p7/m, z2.d",
|
|
"mov z31.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmpps xmm0, xmm1, xmm2, 0x00": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0xC2 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmeq v2.4s, v2.4s, v3.4s",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmpps ymm0, ymm1, ymm2, 0x00": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0xC2 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmeq p0.s, p7/z, z2.s, z3.s",
|
|
"not z0.s, p0/m, z2.s",
|
|
"movprfx z2.s, p0/z, z2.s",
|
|
"orr z2.s, p0/m, z2.s, z0.s",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmpps xmm0, xmm1, xmm2, 0x01": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0xC2 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmgt v2.4s, v3.4s, v2.4s",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmpps ymm0, ymm1, ymm2, 0x01": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0xC2 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmgt p0.s, p7/z, z3.s, z2.s",
|
|
"not z0.s, p0/m, z3.s",
|
|
"movprfx z2.s, p0/z, z3.s",
|
|
"orr z2.s, p0/m, z2.s, z0.s",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmpps xmm0, xmm1, xmm2, 0x02": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0xC2 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmge v2.4s, v3.4s, v2.4s",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmpps ymm0, ymm1, ymm2, 0x02": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0xC2 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmge p0.s, p7/z, z3.s, z2.s",
|
|
"not z0.s, p0/m, z3.s",
|
|
"movprfx z2.s, p0/z, z3.s",
|
|
"orr z2.s, p0/m, z2.s, z0.s",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmpps xmm0, xmm1, xmm2, 0x03": {
|
|
"ExpectedInstructionCount": 8,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0xC2 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmge v0.4s, v2.4s, v3.4s",
|
|
"fcmgt v1.4s, v3.4s, v2.4s",
|
|
"orr v2.16b, v0.16b, v1.16b",
|
|
"mvn v2.16b, v2.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmpps ymm0, ymm1, ymm2, 0x03": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0xC2 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmuo p0.s, p7/z, z2.s, z3.s",
|
|
"not z0.s, p0/m, z2.s",
|
|
"movprfx z2.s, p0/z, z2.s",
|
|
"orr z2.s, p0/m, z2.s, z0.s",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmpps xmm0, xmm1, xmm2, 0x04": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0xC2 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmeq v2.4s, v2.4s, v3.4s",
|
|
"mvn v2.16b, v2.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmpps ymm0, ymm1, ymm2, 0x04": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0xC2 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmne p0.s, p7/z, z2.s, z3.s",
|
|
"not z0.s, p0/m, z2.s",
|
|
"movprfx z2.s, p0/z, z2.s",
|
|
"orr z2.s, p0/m, z2.s, z0.s",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmpps xmm0, xmm1, xmm2, 0x05": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0xC2 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmgt v2.4s, v3.4s, v2.4s",
|
|
"mvn v2.16b, v2.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmpps ymm0, ymm1, ymm2, 0x05": {
|
|
"ExpectedInstructionCount": 8,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0xC2 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmgt p0.s, p7/z, z3.s, z2.s",
|
|
"not z0.s, p0/m, z3.s",
|
|
"movprfx z2.s, p0/z, z3.s",
|
|
"orr z2.s, p0/m, z2.s, z0.s",
|
|
"not z2.b, p7/m, z2.b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmpps xmm0, xmm1, xmm2, 0x06": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0xC2 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmge v2.4s, v3.4s, v2.4s",
|
|
"mvn v2.16b, v2.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmpps ymm0, ymm1, ymm2, 0x06": {
|
|
"ExpectedInstructionCount": 8,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0xC2 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmge p0.s, p7/z, z3.s, z2.s",
|
|
"not z0.s, p0/m, z3.s",
|
|
"movprfx z2.s, p0/z, z3.s",
|
|
"orr z2.s, p0/m, z2.s, z0.s",
|
|
"not z2.b, p7/m, z2.b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmpps xmm0, xmm1, xmm2, 0x07": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0xC2 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmge v0.4s, v2.4s, v3.4s",
|
|
"fcmgt v1.4s, v3.4s, v2.4s",
|
|
"orr v2.16b, v0.16b, v1.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmpps ymm0, ymm1, ymm2, 0x07": {
|
|
"ExpectedInstructionCount": 8,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0xC2 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmuo p0.s, p7/z, z2.s, z3.s",
|
|
"not p0.b, p7/z, p0.b",
|
|
"not z0.s, p0/m, z2.s",
|
|
"movprfx z2.s, p0/z, z2.s",
|
|
"orr z2.s, p0/m, z2.s, z0.s",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmppd xmm0, xmm1, xmm2, 0x00": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xC2 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmeq v2.2d, v2.2d, v3.2d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmppd ymm0, ymm1, ymm2, 0x00": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xC2 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmeq p0.d, p7/z, z2.d, z3.d",
|
|
"not z0.d, p0/m, z2.d",
|
|
"movprfx z2.d, p0/z, z2.d",
|
|
"orr z2.d, p0/m, z2.d, z0.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmppd xmm0, xmm1, xmm2, 0x01": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xC2 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmgt v2.2d, v3.2d, v2.2d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmppd ymm0, ymm1, ymm2, 0x01": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xC2 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmgt p0.d, p7/z, z3.d, z2.d",
|
|
"not z0.d, p0/m, z3.d",
|
|
"movprfx z2.d, p0/z, z3.d",
|
|
"orr z2.d, p0/m, z2.d, z0.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmppd xmm0, xmm1, xmm2, 0x02": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xC2 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmge v2.2d, v3.2d, v2.2d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmppd ymm0, ymm1, ymm2, 0x02": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xC2 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmge p0.d, p7/z, z3.d, z2.d",
|
|
"not z0.d, p0/m, z3.d",
|
|
"movprfx z2.d, p0/z, z3.d",
|
|
"orr z2.d, p0/m, z2.d, z0.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmppd xmm0, xmm1, xmm2, 0x03": {
|
|
"ExpectedInstructionCount": 8,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xC2 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmge v0.2d, v2.2d, v3.2d",
|
|
"fcmgt v1.2d, v3.2d, v2.2d",
|
|
"orr v2.16b, v0.16b, v1.16b",
|
|
"mvn v2.16b, v2.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmppd ymm0, ymm1, ymm2, 0x03": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xC2 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmuo p0.d, p7/z, z2.d, z3.d",
|
|
"not z0.d, p0/m, z2.d",
|
|
"movprfx z2.d, p0/z, z2.d",
|
|
"orr z2.d, p0/m, z2.d, z0.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmppd xmm0, xmm1, xmm2, 0x04": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xC2 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmeq v2.2d, v2.2d, v3.2d",
|
|
"mvn v2.16b, v2.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmppd ymm0, ymm1, ymm2, 0x04": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xC2 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmne p0.d, p7/z, z2.d, z3.d",
|
|
"not z0.d, p0/m, z2.d",
|
|
"movprfx z2.d, p0/z, z2.d",
|
|
"orr z2.d, p0/m, z2.d, z0.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmppd xmm0, xmm1, xmm2, 0x05": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xC2 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmgt v2.2d, v3.2d, v2.2d",
|
|
"mvn v2.16b, v2.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmppd ymm0, ymm1, ymm2, 0x05": {
|
|
"ExpectedInstructionCount": 8,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xC2 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmgt p0.d, p7/z, z3.d, z2.d",
|
|
"not z0.d, p0/m, z3.d",
|
|
"movprfx z2.d, p0/z, z3.d",
|
|
"orr z2.d, p0/m, z2.d, z0.d",
|
|
"not z2.b, p7/m, z2.b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmppd xmm0, xmm1, xmm2, 0x06": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xC2 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmge v2.2d, v3.2d, v2.2d",
|
|
"mvn v2.16b, v2.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmppd ymm0, ymm1, ymm2, 0x06": {
|
|
"ExpectedInstructionCount": 8,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xC2 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmge p0.d, p7/z, z3.d, z2.d",
|
|
"not z0.d, p0/m, z3.d",
|
|
"movprfx z2.d, p0/z, z3.d",
|
|
"orr z2.d, p0/m, z2.d, z0.d",
|
|
"not z2.b, p7/m, z2.b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmppd xmm0, xmm1, xmm2, 0x07": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xC2 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmge v0.2d, v2.2d, v3.2d",
|
|
"fcmgt v1.2d, v3.2d, v2.2d",
|
|
"orr v2.16b, v0.16b, v1.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmppd ymm0, ymm1, ymm2, 0x07": {
|
|
"ExpectedInstructionCount": 8,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xC2 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmuo p0.d, p7/z, z2.d, z3.d",
|
|
"not p0.b, p7/z, p0.b",
|
|
"not z0.d, p0/m, z2.d",
|
|
"movprfx z2.d, p0/z, z2.d",
|
|
"orr z2.d, p0/m, z2.d, z0.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmpss xmm0, xmm1, xmm2, 0x00": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b10 0xC2 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmeq s3, s2, s3",
|
|
"mov v2.s[0], v3.s[0]",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmpss xmm0, xmm1, xmm2, 0x01": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b10 0xC2 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmgt s3, s3, s2",
|
|
"mov v2.s[0], v3.s[0]",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmpss xmm0, xmm1, xmm2, 0x02": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b10 0xC2 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmge s3, s3, s2",
|
|
"mov v2.s[0], v3.s[0]",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmpss xmm0, xmm1, xmm2, 0x03": {
|
|
"ExpectedInstructionCount": 9,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b10 0xC2 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmge s0, s2, s3",
|
|
"fcmgt s1, s3, s2",
|
|
"orr v3.8b, v0.8b, v1.8b",
|
|
"mvn v3.8b, v3.8b",
|
|
"mov v2.s[0], v3.s[0]",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmpss xmm0, xmm1, xmm2, 0x04": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b10 0xC2 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmeq s3, s2, s3",
|
|
"mvn v3.8b, v3.8b",
|
|
"mov v2.s[0], v3.s[0]",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmpss xmm0, xmm1, xmm2, 0x05": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b10 0xC2 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmgt s3, s3, s2",
|
|
"mvn v3.16b, v3.16b",
|
|
"mov v2.s[0], v3.s[0]",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmpss xmm0, xmm1, xmm2, 0x06": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b10 0xC2 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmge s3, s3, s2",
|
|
"mvn v3.16b, v3.16b",
|
|
"mov v2.s[0], v3.s[0]",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmpss xmm0, xmm1, xmm2, 0x07": {
|
|
"ExpectedInstructionCount": 8,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b10 0xC2 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmge s0, s2, s3",
|
|
"fcmgt s1, s3, s2",
|
|
"orr v3.8b, v0.8b, v1.8b",
|
|
"mov v2.s[0], v3.s[0]",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmpsd xmm0, xmm1, xmm2, 0x00": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b11 0xC2 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmeq d3, d2, d3",
|
|
"mov v2.d[0], v3.d[0]",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmpsd xmm0, xmm1, xmm2, 0x01": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b11 0xC2 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmgt d3, d3, d2",
|
|
"mov v2.d[0], v3.d[0]",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmpsd xmm0, xmm1, xmm2, 0x02": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b11 0xC2 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmge d3, d3, d2",
|
|
"mov v2.d[0], v3.d[0]",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmpsd xmm0, xmm1, xmm2, 0x03": {
|
|
"ExpectedInstructionCount": 9,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b11 0xC2 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmge d0, d2, d3",
|
|
"fcmgt d1, d3, d2",
|
|
"orr v3.8b, v0.8b, v1.8b",
|
|
"mvn v3.8b, v3.8b",
|
|
"mov v2.d[0], v3.d[0]",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmpsd xmm0, xmm1, xmm2, 0x04": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b11 0xC2 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmeq d3, d2, d3",
|
|
"mvn v3.8b, v3.8b",
|
|
"mov v2.d[0], v3.d[0]",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmpsd xmm0, xmm1, xmm2, 0x05": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b11 0xC2 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmgt d3, d3, d2",
|
|
"mvn v3.16b, v3.16b",
|
|
"mov v2.d[0], v3.d[0]",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmpsd xmm0, xmm1, xmm2, 0x06": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b11 0xC2 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmge d3, d3, d2",
|
|
"mvn v3.16b, v3.16b",
|
|
"mov v2.d[0], v3.d[0]",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcmpsd xmm0, xmm1, xmm2, 0x07": {
|
|
"ExpectedInstructionCount": 8,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b11 0xC2 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmge d0, d2, d3",
|
|
"fcmgt d1, d3, d2",
|
|
"orr v3.8b, v0.8b, v1.8b",
|
|
"mov v2.d[0], v3.d[0]",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpinsrw xmm0, xmm1, eax, 000b": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xC4 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"uxth w20, w4",
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov v2.h[0], w20",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpinsrw xmm0, xmm1, eax, 001b": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xC4 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"uxth w20, w4",
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov v2.h[1], w20",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpinsrw xmm0, xmm1, eax, 111b": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xC4 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"uxth w20, w4",
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov v2.h[7], w20",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpextrw eax, xmm0, 000b": {
|
|
"ExpectedInstructionCount": 3,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xC5 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"umov w20, v2.h[0]",
|
|
"uxth x4, w20"
|
|
]
|
|
},
|
|
"vpextrw eax, xmm0, 001b": {
|
|
"ExpectedInstructionCount": 3,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xC5 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"umov w20, v2.h[1]",
|
|
"uxth x4, w20"
|
|
]
|
|
},
|
|
"vpextrw eax, xmm0, 111b": {
|
|
"ExpectedInstructionCount": 3,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xC5 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"umov w20, v2.h[7]",
|
|
"uxth x4, w20"
|
|
]
|
|
},
|
|
"vshufps xmm0, xmm1, xmm2, 00b": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0xC6 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"dup v2.4s, v2.s[0]",
|
|
"dup v3.4s, v3.s[0]",
|
|
"zip1 v2.2d, v2.2d, v3.2d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vshufps ymm0, ymm1, ymm2, 00b": {
|
|
"ExpectedInstructionCount": 37,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0xC6 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"mov z1.s, s2",
|
|
"mov z4.d, z2.d",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #-4",
|
|
"mov z4.s, p0/m, z1.s",
|
|
"mov z1.s, z2.s[4]",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #0",
|
|
"mov z4.s, p0/m, z1.s",
|
|
"mov z1.s, s2",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #-3",
|
|
"mov z4.s, p0/m, z1.s",
|
|
"mov z1.s, z2.s[4]",
|
|
"mov z2.d, z4.d",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #1",
|
|
"mov z2.s, p0/m, z1.s",
|
|
"mov z1.s, s3",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #-2",
|
|
"mov z2.s, p0/m, z1.s",
|
|
"mov z1.s, z3.s[4]",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #2",
|
|
"mov z2.s, p0/m, z1.s",
|
|
"mov z1.s, s3",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #-1",
|
|
"mov z2.s, p0/m, z1.s",
|
|
"mov z1.s, z3.s[4]",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #3",
|
|
"mov z2.s, p0/m, z1.s",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vshufps xmm0, xmm1, xmm2, 01b": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0xC6 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"ldr x0, [x28, #1640]",
|
|
"ldr q4, [x0, #16]",
|
|
"tbl v2.16b, {v2.16b, v3.16b}, v4.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vshufps ymm0, ymm1, ymm2, 01b": {
|
|
"ExpectedInstructionCount": 37,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0xC6 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"mov z1.s, z2.s[1]",
|
|
"mov z4.d, z2.d",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #-4",
|
|
"mov z4.s, p0/m, z1.s",
|
|
"mov z1.s, z2.s[5]",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #0",
|
|
"mov z4.s, p0/m, z1.s",
|
|
"mov z1.s, s2",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #-3",
|
|
"mov z4.s, p0/m, z1.s",
|
|
"mov z1.s, z2.s[4]",
|
|
"mov z2.d, z4.d",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #1",
|
|
"mov z2.s, p0/m, z1.s",
|
|
"mov z1.s, s3",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #-2",
|
|
"mov z2.s, p0/m, z1.s",
|
|
"mov z1.s, z3.s[4]",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #2",
|
|
"mov z2.s, p0/m, z1.s",
|
|
"mov z1.s, s3",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #-1",
|
|
"mov z2.s, p0/m, z1.s",
|
|
"mov z1.s, z3.s[4]",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #3",
|
|
"mov z2.s, p0/m, z1.s",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vshufps xmm0, xmm1, xmm2, 10b": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0xC6 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"ldr x0, [x28, #1640]",
|
|
"ldr q4, [x0, #32]",
|
|
"tbl v2.16b, {v2.16b, v3.16b}, v4.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vshufps ymm0, ymm1, ymm2, 10b": {
|
|
"ExpectedInstructionCount": 37,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0xC6 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"mov z1.s, z2.s[2]",
|
|
"mov z4.d, z2.d",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #-4",
|
|
"mov z4.s, p0/m, z1.s",
|
|
"mov z1.s, z2.s[6]",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #0",
|
|
"mov z4.s, p0/m, z1.s",
|
|
"mov z1.s, s2",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #-3",
|
|
"mov z4.s, p0/m, z1.s",
|
|
"mov z1.s, z2.s[4]",
|
|
"mov z2.d, z4.d",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #1",
|
|
"mov z2.s, p0/m, z1.s",
|
|
"mov z1.s, s3",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #-2",
|
|
"mov z2.s, p0/m, z1.s",
|
|
"mov z1.s, z3.s[4]",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #2",
|
|
"mov z2.s, p0/m, z1.s",
|
|
"mov z1.s, s3",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #-1",
|
|
"mov z2.s, p0/m, z1.s",
|
|
"mov z1.s, z3.s[4]",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #3",
|
|
"mov z2.s, p0/m, z1.s",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vshufps xmm0, xmm1, xmm2, 11b": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0xC6 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"ldr x0, [x28, #1640]",
|
|
"ldr q4, [x0, #48]",
|
|
"tbl v2.16b, {v2.16b, v3.16b}, v4.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vshufps ymm0, ymm1, ymm2, 11b": {
|
|
"ExpectedInstructionCount": 37,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0xC6 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"mov z1.s, z2.s[3]",
|
|
"mov z4.d, z2.d",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #-4",
|
|
"mov z4.s, p0/m, z1.s",
|
|
"mov z1.s, z2.s[7]",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #0",
|
|
"mov z4.s, p0/m, z1.s",
|
|
"mov z1.s, s2",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #-3",
|
|
"mov z4.s, p0/m, z1.s",
|
|
"mov z1.s, z2.s[4]",
|
|
"mov z2.d, z4.d",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #1",
|
|
"mov z2.s, p0/m, z1.s",
|
|
"mov z1.s, s3",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #-2",
|
|
"mov z2.s, p0/m, z1.s",
|
|
"mov z1.s, z3.s[4]",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #2",
|
|
"mov z2.s, p0/m, z1.s",
|
|
"mov z1.s, s3",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #-1",
|
|
"mov z2.s, p0/m, z1.s",
|
|
"mov z1.s, z3.s[4]",
|
|
"index z0.s, #-4, #1",
|
|
"cmpeq p0.s, p7/z, z0.s, #3",
|
|
"mov z2.s, p0/m, z1.s",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vshufpd xmm0, xmm1, xmm2, 0b": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xC6 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"mov v2.d[0], v2.d[0]",
|
|
"mov v2.d[1], v3.d[0]",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vshufpd ymm0, ymm1, ymm2, 0b": {
|
|
"ExpectedInstructionCount": 21,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xC6 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"mov z1.d, d2",
|
|
"mov z4.d, z2.d",
|
|
"index z0.d, #-2, #1",
|
|
"cmpeq p0.d, p7/z, z0.d, #-2",
|
|
"mov z4.d, p0/m, z1.d",
|
|
"mov z1.d, z2.d[2]",
|
|
"mov z2.d, z4.d",
|
|
"index z0.d, #-2, #1",
|
|
"cmpeq p0.d, p7/z, z0.d, #0",
|
|
"mov z2.d, p0/m, z1.d",
|
|
"mov z1.d, d3",
|
|
"index z0.d, #-2, #1",
|
|
"cmpeq p0.d, p7/z, z0.d, #-1",
|
|
"mov z2.d, p0/m, z1.d",
|
|
"mov z1.d, z3.d[2]",
|
|
"index z0.d, #-2, #1",
|
|
"cmpeq p0.d, p7/z, z0.d, #1",
|
|
"mov z2.d, p0/m, z1.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vshufpd xmm0, xmm1, xmm2, 1b": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xC6 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"mov v2.d[0], v2.d[1]",
|
|
"mov v2.d[1], v3.d[0]",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vshufpd ymm0, ymm1, ymm2, 1b": {
|
|
"ExpectedInstructionCount": 21,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xC6 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"mov z1.d, z2.d[1]",
|
|
"mov z4.d, z2.d",
|
|
"index z0.d, #-2, #1",
|
|
"cmpeq p0.d, p7/z, z0.d, #-2",
|
|
"mov z4.d, p0/m, z1.d",
|
|
"mov z1.d, z2.d[2]",
|
|
"mov z2.d, z4.d",
|
|
"index z0.d, #-2, #1",
|
|
"cmpeq p0.d, p7/z, z0.d, #0",
|
|
"mov z2.d, p0/m, z1.d",
|
|
"mov z1.d, d3",
|
|
"index z0.d, #-2, #1",
|
|
"cmpeq p0.d, p7/z, z0.d, #-1",
|
|
"mov z2.d, p0/m, z1.d",
|
|
"mov z1.d, z3.d[2]",
|
|
"index z0.d, #-2, #1",
|
|
"cmpeq p0.d, p7/z, z0.d, #1",
|
|
"mov z2.d, p0/m, z1.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmovaps xmm0, [rax]": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0x28 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"ldr q2, [x4]",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmovaps ymm0, [rax]": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0x28 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"ld1b {z2.b}, p7/z, [x4]",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmovaps xmm0, xmm1": {
|
|
"ExpectedInstructionCount": 3,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0x29 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmovaps ymm0, ymm1": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0x29 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmovapd xmm0, [rax]": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x28 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"ldr q2, [x4]",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmovapd ymm0, [rax]": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x28 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"ld1b {z2.b}, p7/z, [x4]",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmovapd xmm0, xmm1": {
|
|
"ExpectedInstructionCount": 3,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x29 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmovapd ymm0, ymm1": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x29 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmovaps [rax], xmm0": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0x29 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"str q2, [x4]"
|
|
]
|
|
},
|
|
"vmovaps [rax], ymm0": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0x29 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"st1b {z2.b}, p7, [x4]"
|
|
]
|
|
},
|
|
"vmovapd [rax], xmm0": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x29 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"str q2, [x4]"
|
|
]
|
|
},
|
|
"vmovapd [rax], ymm0": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x29 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"st1b {z2.b}, p7, [x4]"
|
|
]
|
|
},
|
|
"vcvtsi2ss xmm0, xmm1, eax": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b10 0x2A 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"scvtf s3, w4",
|
|
"mov v2.s[0], v3.s[0]",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcvtsi2ss xmm0, xmm1, rax": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b10 0x2A 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"scvtf s3, x4",
|
|
"mov v2.s[0], v3.s[0]",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcvtsi2sd xmm0, xmm1, eax": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b11 0x2A 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"scvtf d3, w4",
|
|
"mov v2.d[0], v3.d[0]",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcvtsi2sd xmm0, xmm1, rax": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b11 0x2A 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"scvtf d3, x4",
|
|
"mov v2.d[0], v3.d[0]",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmovntps [rax], xmm0": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0x2B 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"str q2, [x4]"
|
|
]
|
|
},
|
|
"vmovntps [rax], ymm0": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0x2B 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"st1b {z2.b}, p7, [x4]"
|
|
]
|
|
},
|
|
"vmovntpd [rax], xmm0": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x2B 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"str q2, [x4]"
|
|
]
|
|
},
|
|
"vmovntpd [rax], ymm0": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x2B 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"st1b {z2.b}, p7, [x4]"
|
|
]
|
|
},
|
|
"vcvttss2si eax, xmm0": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b10 0x2c 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"fcvtzs w4, s2"
|
|
]
|
|
},
|
|
"vcvttss2si rax, xmm0": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b10 0x2c 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"fcvtzs x4, s2"
|
|
]
|
|
},
|
|
"vcvttsd2si eax, xmm0": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b11 0x2c 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"fcvtzs w4, d2"
|
|
]
|
|
},
|
|
"vcvttsd2si rax, xmm0": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b11 0x2c 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"fcvtzs x4, d2"
|
|
]
|
|
},
|
|
"vcvtss2si eax, xmm0": {
|
|
"ExpectedInstructionCount": 3,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b10 0x2d 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"frinti s0, s2",
|
|
"fcvtzs w4, s0"
|
|
]
|
|
},
|
|
"vcvtss2si rax, xmm0": {
|
|
"ExpectedInstructionCount": 3,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b10 0x2d 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"frinti s0, s2",
|
|
"fcvtzs x4, s0"
|
|
]
|
|
},
|
|
"vcvtsd2si eax, xmm0": {
|
|
"ExpectedInstructionCount": 3,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b11 0x2d 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"frinti d0, d2",
|
|
"fcvtzs x4, d0"
|
|
]
|
|
},
|
|
"vcvtsd2si rax, xmm0": {
|
|
"ExpectedInstructionCount": 3,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b11 0x2d 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"frinti d0, d2",
|
|
"fcvtzs x4, d0"
|
|
]
|
|
},
|
|
"vucomiss xmm0, xmm1": {
|
|
"ExpectedInstructionCount": 21,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0x2e 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"mov z3.d, p7/m, z17.d",
|
|
"fcmp s2, s3",
|
|
"cset x20, eq",
|
|
"csinc x20, x20, xzr, vc",
|
|
"cset x1, lt",
|
|
"bfi x20, x1, #1, #1",
|
|
"cset x1, vs",
|
|
"bfi x20, x1, #2, #1",
|
|
"ubfx x21, x20, #1, #1",
|
|
"ubfx x22, x20, #0, #1",
|
|
"ubfx x20, x20, #2, #1",
|
|
"lsl x21, x21, #29",
|
|
"orr w21, w21, w22, lsl #30",
|
|
"eor w20, w20, #0x1",
|
|
"strb w20, [x28, #706]",
|
|
"mov w20, #0x0",
|
|
"mov w22, #0x90000000",
|
|
"bic x21, x21, x22",
|
|
"strb w20, [x28, #708]",
|
|
"str w21, [x28, #728]"
|
|
]
|
|
},
|
|
"vucomisd xmm0, xmm1": {
|
|
"ExpectedInstructionCount": 24,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x2e 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"mov z3.d, p7/m, z17.d",
|
|
"fcmp d2, d3",
|
|
"cset x20, eq",
|
|
"csinc x20, x20, xzr, vc",
|
|
"cset x1, lt",
|
|
"bfi x20, x1, #1, #1",
|
|
"cset x1, vs",
|
|
"bfi x20, x1, #2, #1",
|
|
"ubfx x21, x20, #1, #1",
|
|
"ubfx x22, x20, #0, #1",
|
|
"ubfx x20, x20, #2, #1",
|
|
"ldr w23, [x28, #728]",
|
|
"mov w0, w23",
|
|
"bfi w0, w21, #29, #1",
|
|
"mov w21, w0",
|
|
"bfi w21, w22, #30, #1",
|
|
"eor w20, w20, #0x1",
|
|
"strb w20, [x28, #706]",
|
|
"mov w20, #0x0",
|
|
"mov w22, #0x90000000",
|
|
"bic x21, x21, x22",
|
|
"strb w20, [x28, #708]",
|
|
"str w21, [x28, #728]"
|
|
]
|
|
},
|
|
"vcomiss xmm0, xmm1": {
|
|
"ExpectedInstructionCount": 24,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0x2f 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"mov z3.d, p7/m, z17.d",
|
|
"fcmp s2, s3",
|
|
"cset x20, eq",
|
|
"csinc x20, x20, xzr, vc",
|
|
"cset x1, lt",
|
|
"bfi x20, x1, #1, #1",
|
|
"cset x1, vs",
|
|
"bfi x20, x1, #2, #1",
|
|
"ubfx x21, x20, #1, #1",
|
|
"ubfx x22, x20, #0, #1",
|
|
"ubfx x20, x20, #2, #1",
|
|
"ldr w23, [x28, #728]",
|
|
"mov w0, w23",
|
|
"bfi w0, w21, #29, #1",
|
|
"mov w21, w0",
|
|
"bfi w21, w22, #30, #1",
|
|
"eor w20, w20, #0x1",
|
|
"strb w20, [x28, #706]",
|
|
"mov w20, #0x0",
|
|
"mov w22, #0x90000000",
|
|
"bic x21, x21, x22",
|
|
"strb w20, [x28, #708]",
|
|
"str w21, [x28, #728]"
|
|
]
|
|
},
|
|
"vcomisd xmm0, xmm1": {
|
|
"ExpectedInstructionCount": 24,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x2f 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"mov z3.d, p7/m, z17.d",
|
|
"fcmp d2, d3",
|
|
"cset x20, eq",
|
|
"csinc x20, x20, xzr, vc",
|
|
"cset x1, lt",
|
|
"bfi x20, x1, #1, #1",
|
|
"cset x1, vs",
|
|
"bfi x20, x1, #2, #1",
|
|
"ubfx x21, x20, #1, #1",
|
|
"ubfx x22, x20, #0, #1",
|
|
"ubfx x20, x20, #2, #1",
|
|
"ldr w23, [x28, #728]",
|
|
"mov w0, w23",
|
|
"bfi w0, w21, #29, #1",
|
|
"mov w21, w0",
|
|
"bfi w21, w22, #30, #1",
|
|
"eor w20, w20, #0x1",
|
|
"strb w20, [x28, #706]",
|
|
"mov w20, #0x0",
|
|
"mov w22, #0x90000000",
|
|
"bic x21, x21, x22",
|
|
"strb w20, [x28, #708]",
|
|
"str w21, [x28, #728]"
|
|
]
|
|
},
|
|
"vaddps xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0x58 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fadd v2.4s, v2.4s, v3.4s",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vaddps ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0x58 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fadd z2.s, z2.s, z3.s",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vaddpd xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x58 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fadd v2.2d, v2.2d, v3.2d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vaddpd ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x58 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fadd z2.d, z2.d, z3.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vaddss xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b10 0x58 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fadd s3, s2, s3",
|
|
"mov v2.s[0], v3.s[0]",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vaddsd xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b11 0x58 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fadd d3, d2, d3",
|
|
"mov v2.d[0], v3.d[0]",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmulps xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0x59 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fmul v2.4s, v2.4s, v3.4s",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmulps ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0x59 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fmul z2.s, z2.s, z3.s",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmulpd xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x59 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fmul v2.2d, v2.2d, v3.2d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmulpd ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x59 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fmul z2.d, z2.d, z3.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmulss xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b10 0x59 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fmul s3, s2, s3",
|
|
"mov v2.s[0], v3.s[0]",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmulsd xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b11 0x59 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fmul d3, d2, d3",
|
|
"mov v2.d[0], v3.d[0]",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcvtps2pd xmm0, xmm1": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0x5a 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"fcvtl v2.2d, v2.2s",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcvtpd2ps xmm0, xmm1": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x5a 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"fcvtn v2.2s, v2.2d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcvtss2sd xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b10 0x5a 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcvt d3, s3",
|
|
"mov v2.d[0], v3.d[0]",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcvtsd2ss xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b11 0x5a 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcvt s3, d3",
|
|
"mov v2.s[0], v3.s[0]",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcvtdq2ps xmm0, xmm1": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0x5b 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"scvtf v2.4s, v2.4s",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcvtdq2ps ymm0, ymm1": {
|
|
"ExpectedInstructionCount": 3,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0x5b 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"scvtf z2.s, p7/m, z2.s",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcvtps2dq xmm0, xmm1": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x5b 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"frinti v2.4s, v2.4s",
|
|
"fcvtzs v2.4s, v2.4s",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcvtps2dq ymm0, ymm1": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x5b 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"frinti z2.s, p7/m, z2.s",
|
|
"fcvtzs z2.s, p7/m, z2.s",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcvttps2dq xmm0, xmm1": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b10 0x5b 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"fcvtzs v2.4s, v2.4s",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcvttps2dq ymm0, ymm1": {
|
|
"ExpectedInstructionCount": 3,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b10 0x5b 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"fcvtzs z2.s, p7/m, z2.s",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vsubps xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0x5c 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fsub v2.4s, v2.4s, v3.4s",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vsubps ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0x5c 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fsub z2.s, z2.s, z3.s",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vsubpd xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x5c 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fsub v2.2d, v2.2d, v3.2d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vsubpd ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x5c 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fsub z2.d, z2.d, z3.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vsubss xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b10 0x5c 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fsub s3, s2, s3",
|
|
"mov v2.s[0], v3.s[0]",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vsubsd xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b11 0x5c 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fsub d3, d2, d3",
|
|
"mov v2.d[0], v3.d[0]",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vminps xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0x5d 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmgt v0.4s, v3.4s, v2.4s",
|
|
"bif v2.16b, v3.16b, v0.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vminps ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0x5d 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmgt p0.s, p7/z, z3.s, z2.s",
|
|
"not p0.b, p7/z, p0.b",
|
|
"mov z2.s, p0/m, z3.s",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vminpd xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x5d 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmgt v0.2d, v3.2d, v2.2d",
|
|
"bif v2.16b, v3.16b, v0.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vminpd ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x5d 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmgt p0.d, p7/z, z3.d, z2.d",
|
|
"not p0.b, p7/z, p0.b",
|
|
"mov z2.d, p0/m, z3.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vminss xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b10 0x5d 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmp s2, s3",
|
|
"fcsel s3, s2, s3, mi",
|
|
"mov v2.s[0], v3.s[0]",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vminsd xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b11 0x5d 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmp d2, d3",
|
|
"fcsel d3, d2, d3, mi",
|
|
"mov v2.d[0], v3.d[0]",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vdivps xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0x5e 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fdiv v2.4s, v2.4s, v3.4s",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vdivps ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0x5e 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fdiv z2.s, p7/m, z2.s, z3.s",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vdivpd xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x5e 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fdiv v2.2d, v2.2d, v3.2d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vdivpd ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x5e 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fdiv z2.d, p7/m, z2.d, z3.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vdivss xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b10 0x5e 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fdiv s3, s2, s3",
|
|
"mov v2.s[0], v3.s[0]",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vdivsd xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b11 0x5e 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fdiv d3, d2, d3",
|
|
"mov v2.d[0], v3.d[0]",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmaxps xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0x5f 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmgt v0.4s, v3.4s, v2.4s",
|
|
"bit v2.16b, v3.16b, v0.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmaxps ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b00 0x5f 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmgt p0.s, p7/z, z3.s, z2.s",
|
|
"mov z2.s, p0/m, z3.s",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmaxpd xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x5f 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmgt v0.2d, v3.2d, v2.2d",
|
|
"bit v2.16b, v3.16b, v0.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmaxpd ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x5f 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmgt p0.d, p7/z, z3.d, z2.d",
|
|
"mov z2.d, p0/m, z3.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmaxss xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b10 0x5f 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmp s2, s3",
|
|
"fcsel s3, s3, s2, mi",
|
|
"mov v2.s[0], v3.s[0]",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmaxsd xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b11 0x5f 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"fcmp d2, d3",
|
|
"fcsel d3, d3, d2, mi",
|
|
"mov v2.d[0], v3.d[0]",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpunpckhbw xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x68 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"zip2 v2.16b, v2.16b, v3.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpunpckhbw ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x68 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"zip1 z4.b, z2.b, z3.b",
|
|
"zip2 z2.b, z2.b, z3.b",
|
|
"mov z1.q, z4.q[1]",
|
|
"mov z2.b, p6/m, z1.b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpunpckhwd xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x69 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"zip2 v2.8h, v2.8h, v3.8h",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpunpckhwd ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x69 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"zip1 z4.h, z2.h, z3.h",
|
|
"zip2 z2.h, z2.h, z3.h",
|
|
"mov z1.q, z4.q[1]",
|
|
"mov z2.b, p6/m, z1.b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpunpckhdq xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x6a 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"zip2 v2.4s, v2.4s, v3.4s",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpunpckhdq ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x6a 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"zip1 z4.s, z2.s, z3.s",
|
|
"zip2 z2.s, z2.s, z3.s",
|
|
"mov z1.q, z4.q[1]",
|
|
"mov z2.b, p6/m, z1.b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpackssdw xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x6b 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"sqxtn v2.4h, v2.4s",
|
|
"sqxtn2 v2.8h, v3.4s",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpackssdw ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 18,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x6b 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"sqxtnb z1.h, z3.s",
|
|
"uzp1 z1.h, z1.h, z1.h",
|
|
"sqxtnb z2.h, z2.s",
|
|
"uzp1 z2.h, z2.h, z2.h",
|
|
"splice z2.h, p6, z2.h, z1.h",
|
|
"mov z1.d, z2.d[1]",
|
|
"mov z3.d, z2.d",
|
|
"index z0.d, #-2, #1",
|
|
"cmpeq p0.d, p7/z, z0.d, #0",
|
|
"mov z3.d, p0/m, z1.d",
|
|
"mov z1.d, z2.d[2]",
|
|
"mov z2.d, z3.d",
|
|
"index z0.d, #-2, #1",
|
|
"cmpeq p0.d, p7/z, z0.d, #-1",
|
|
"mov z2.d, p0/m, z1.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpunpcklqdq xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x6c 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"zip1 v2.2d, v2.2d, v3.2d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpunpcklqdq ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 9,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x6c 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"zip1 z4.d, z2.d, z3.d",
|
|
"zip2 z2.d, z2.d, z3.d",
|
|
"mov z1.q, q2",
|
|
"mov z2.d, z4.d",
|
|
"not p0.b, p7/z, p6.b",
|
|
"mov z2.b, p0/m, z1.b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpunpckhqdq xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x6d 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"zip2 v2.2d, v2.2d, v3.2d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpunpckhqdq ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x6d 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"zip1 z4.d, z2.d, z3.d",
|
|
"zip2 z2.d, z2.d, z3.d",
|
|
"mov z1.q, z4.q[1]",
|
|
"mov z2.b, p6/m, z1.b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmovd xmm0, dword [rax]": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x6e 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"ldr s2, [x4]",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmovq xmm0, qword [rax]": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x6e 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"ldr d2, [x4]",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmovdqa xmm0, [rax]": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x6f 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"ldr q2, [x4]",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmovdqa [rax], xmm0": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x6f 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"str q2, [x4]"
|
|
]
|
|
},
|
|
"vmovdqu xmm0, [rax]": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b10 0x6f 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"ldr q2, [x4]",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmovdqu [rax], xmm0": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b10 0x6f 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"str q2, [x4]"
|
|
]
|
|
},
|
|
"vhaddpd xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x7c 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"faddp v2.2d, v2.2d, v3.2d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vhaddpd ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 18,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x7c 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"movprfx z0, z2",
|
|
"faddp z0.d, p7/m, z0.d, z3.d",
|
|
"uzp1 z2.d, z0.d, z0.d",
|
|
"uzp2 z1.d, z0.d, z0.d",
|
|
"splice z2.d, p6, z2.d, z1.d",
|
|
"mov z1.d, z2.d[2]",
|
|
"mov z3.d, z2.d",
|
|
"index z0.d, #-2, #1",
|
|
"cmpeq p0.d, p7/z, z0.d, #-1",
|
|
"mov z3.d, p0/m, z1.d",
|
|
"mov z1.d, z2.d[1]",
|
|
"mov z2.d, z3.d",
|
|
"index z0.d, #-2, #1",
|
|
"cmpeq p0.d, p7/z, z0.d, #0",
|
|
"mov z2.d, p0/m, z1.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vhaddps xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b11 0x7c 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"faddp v2.4s, v2.4s, v3.4s",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vhaddps ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 18,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b11 0x7c 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"movprfx z0, z2",
|
|
"faddp z0.s, p7/m, z0.s, z3.s",
|
|
"uzp1 z2.s, z0.s, z0.s",
|
|
"uzp2 z1.s, z0.s, z0.s",
|
|
"splice z2.d, p6, z2.d, z1.d",
|
|
"mov z1.d, z2.d[2]",
|
|
"mov z3.d, z2.d",
|
|
"index z0.d, #-2, #1",
|
|
"cmpeq p0.d, p7/z, z0.d, #-1",
|
|
"mov z3.d, p0/m, z1.d",
|
|
"mov z1.d, z2.d[1]",
|
|
"mov z2.d, z3.d",
|
|
"index z0.d, #-2, #1",
|
|
"cmpeq p0.d, p7/z, z0.d, #0",
|
|
"mov z2.d, p0/m, z1.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vhsubpd xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x7d 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"uzp1 v4.2d, v2.2d, v3.2d",
|
|
"uzp2 v2.2d, v2.2d, v3.2d",
|
|
"fsub v2.2d, v4.2d, v2.2d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vhsubpd ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 16,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x7d 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"uzp1 z4.d, z2.d, z3.d",
|
|
"uzp2 z2.d, z2.d, z3.d",
|
|
"fsub z2.d, z4.d, z2.d",
|
|
"mov z1.d, z2.d[2]",
|
|
"mov z3.d, z2.d",
|
|
"index z0.d, #-2, #1",
|
|
"cmpeq p0.d, p7/z, z0.d, #-1",
|
|
"mov z3.d, p0/m, z1.d",
|
|
"mov z1.d, z2.d[1]",
|
|
"mov z2.d, z3.d",
|
|
"index z0.d, #-2, #1",
|
|
"cmpeq p0.d, p7/z, z0.d, #0",
|
|
"mov z2.d, p0/m, z1.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vhsubps xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b11 0x7d 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"uzp1 v4.4s, v2.4s, v3.4s",
|
|
"uzp2 v2.4s, v2.4s, v3.4s",
|
|
"fsub v2.4s, v4.4s, v2.4s",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vhsubps ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 16,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b11 0x7d 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"uzp1 z4.s, z2.s, z3.s",
|
|
"uzp2 z2.s, z2.s, z3.s",
|
|
"fsub z2.s, z4.s, z2.s",
|
|
"mov z1.d, z2.d[2]",
|
|
"mov z3.d, z2.d",
|
|
"index z0.d, #-2, #1",
|
|
"cmpeq p0.d, p7/z, z0.d, #-1",
|
|
"mov z3.d, p0/m, z1.d",
|
|
"mov z1.d, z2.d[1]",
|
|
"mov z2.d, z3.d",
|
|
"index z0.d, #-2, #1",
|
|
"cmpeq p0.d, p7/z, z0.d, #0",
|
|
"mov z2.d, p0/m, z1.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmovd dword [rax], xmm0": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x7e 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"movi v0.2d, #0x0",
|
|
"mov v0.s[0], v2.s[0]",
|
|
"mov v2.16b, v0.16b",
|
|
"str s2, [x4]"
|
|
]
|
|
},
|
|
"vmovq qword [rax], xmm0": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x7e 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"str d2, [x4]"
|
|
]
|
|
},
|
|
"vmovdqa ymm0, [rax]": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x7f 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"ld1b {z2.b}, p7/z, [x4]",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmovdqa [rax], ymm0": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0x7f 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"st1b {z2.b}, p7, [x4]"
|
|
]
|
|
},
|
|
"vmovdqu ymm0, [rax]": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b10 0x7f 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"ld1b {z2.b}, p7/z, [x4]",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmovdqu [rax], ymm0": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b10 0x7f 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"st1b {z2.b}, p7, [x4]"
|
|
]
|
|
},
|
|
"vaddsubpd xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 8,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xd0 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"ldr x0, [x28, #1584]",
|
|
"ldr q4, [x0]",
|
|
"eor v3.16b, v3.16b, v4.16b",
|
|
"fadd v2.2d, v2.2d, v3.2d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vaddsubpd ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xd0 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"ldr x0, [x28, #1584]",
|
|
"ld1b {z4.b}, p7/z, [x0]",
|
|
"eor z3.d, z3.d, z4.d",
|
|
"fadd z2.d, z2.d, z3.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vaddsubps xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 8,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b11 0xd0 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"ldr x0, [x28, #1568]",
|
|
"ldr q4, [x0]",
|
|
"eor v3.16b, v3.16b, v4.16b",
|
|
"fadd v2.4s, v2.4s, v3.4s",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vaddsubps ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b11 0xd0 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"ldr x0, [x28, #1568]",
|
|
"ld1b {z4.b}, p7/z, [x0]",
|
|
"eor z3.d, z3.d, z4.d",
|
|
"fadd z2.s, z2.s, z3.s",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpsrlw xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xd1 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"mov z0.d, d3",
|
|
"lsr z2.h, p6/m, z2.h, z0.d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpsrlw ymm0, ymm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xd1 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"mov z0.d, d3",
|
|
"lsr z2.h, p7/m, z2.h, z0.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpsrld xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xd2 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"mov z0.d, d3",
|
|
"lsr z2.s, p6/m, z2.s, z0.d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpsrld ymm0, ymm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xd2 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"mov z0.d, d3",
|
|
"lsr z2.s, p7/m, z2.s, z0.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpsrlq xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xd3 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"mov z0.d, d3",
|
|
"lsr z2.d, p6/m, z2.d, z0.d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpsrlq ymm0, ymm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xd3 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"mov z0.d, d3",
|
|
"lsr z2.d, p7/m, z2.d, z0.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpaddq xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xd4 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"add v2.2d, v2.2d, v3.2d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpaddq ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xd4 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"add z2.d, z2.d, z3.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpmullw xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xd5 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"mul v2.8h, v2.8h, v3.8h",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpmullw ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xd4 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"mul z2.h, z2.h, z3.h",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmovq [rax], xmm0": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xd6 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"str d2, [x4]"
|
|
]
|
|
},
|
|
"vpmovmskb rax, xmm0": {
|
|
"ExpectedInstructionCount": 12,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xd7 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"mov x20, #0x201",
|
|
"movk x20, #0x804, lsl #16",
|
|
"movk x20, #0x2010, lsl #32",
|
|
"movk x20, #0x8040, lsl #48",
|
|
"dup v3.2d, x20",
|
|
"cmlt v2.16b, v2.16b, #0",
|
|
"and v2.16b, v2.16b, v3.16b",
|
|
"addp v2.16b, v2.16b, v2.16b",
|
|
"addp v2.8b, v2.8b, v2.8b",
|
|
"addp v2.8b, v2.8b, v2.8b",
|
|
"umov w4, v2.h[0]"
|
|
]
|
|
},
|
|
"vpmovmskb rax, ymm0": {
|
|
"ExpectedInstructionCount": 20,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xd7 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"mov x20, #0x201",
|
|
"movk x20, #0x804, lsl #16",
|
|
"movk x20, #0x2010, lsl #32",
|
|
"movk x20, #0x8040, lsl #48",
|
|
"mov z3.d, x20",
|
|
"mov z0.d, #0",
|
|
"cmplt p0.b, p7/z, z2.b, #0",
|
|
"not z0.b, p0/m, z2.b",
|
|
"orr z0.b, p0/m, z0.b, z2.b",
|
|
"mov z2.d, z0.d",
|
|
"and z2.d, z2.d, z3.d",
|
|
"movprfx z0, z2",
|
|
"addp z0.b, p7/m, z0.b, z2.b",
|
|
"uzp1 z2.b, z0.b, z0.b",
|
|
"uzp2 z1.b, z0.b, z0.b",
|
|
"splice z2.d, p6, z2.d, z1.d",
|
|
"addp v2.16b, v2.16b, v2.16b",
|
|
"addp v2.8b, v2.8b, v2.8b",
|
|
"mov w4, v2.s[0]"
|
|
]
|
|
},
|
|
"vpsubusb xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xd8 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"uqsub v2.16b, v2.16b, v3.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpsubusb ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xd8 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"uqsub z2.b, z2.b, z3.b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpsubusw xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xd9 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"uqsub v2.8h, v2.8h, v3.8h",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpsubusw ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xd9 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"uqsub z2.h, z2.h, z3.h",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpminub xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xda 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"umin v2.16b, v2.16b, v3.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpminub ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xda 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"umin z2.b, p7/m, z2.b, z3.b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpand xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xdb 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"and v2.16b, v2.16b, v3.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpand ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xdb 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"and z2.d, z2.d, z3.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpaddusb xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xdc 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"uqadd v2.16b, v2.16b, v3.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpaddusb ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xdc 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"uqadd z2.b, z2.b, z3.b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpaddusw xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xdd 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"uqadd v2.8h, v2.8h, v3.8h",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpaddusw ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xdd 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"uqadd z2.h, z2.h, z3.h",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpmaxub xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xdd 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"umax v2.16b, v2.16b, v3.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpmaxub ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xde 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"umax z2.b, p7/m, z2.b, z3.b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpandn xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xdf 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"bic v2.16b, v3.16b, v2.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpandn ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xdf 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"bic z2.d, z3.d, z2.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpavgb xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xe0 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"urhadd v2.16b, v2.16b, v3.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpavgb ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xe0 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"urhadd z2.b, p7/m, z2.b, z3.b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpsraw xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xe1 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"mov z0.d, d3",
|
|
"asr z2.h, p6/m, z2.h, z0.d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpsraw ymm0, ymm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xe1 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"mov z0.d, d3",
|
|
"asr z2.h, p7/m, z2.h, z0.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpsrad xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xe2 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"mov z0.d, d3",
|
|
"asr z2.s, p6/m, z2.s, z0.d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpsrad ymm0, ymm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xe2 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"mov z0.d, d3",
|
|
"asr z2.s, p7/m, z2.s, z0.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpavgw xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xe3 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"urhadd v2.8h, v2.8h, v3.8h",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpavgw ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xe3 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"urhadd z2.h, p7/m, z2.h, z3.h",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpmulhuw xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xe4 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"umulh z2.h, p6/m, z2.h, z3.h",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpmulhuw ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xe4 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"umulh z2.h, z2.h, z3.h",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpmulhw xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xe5 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"smulh z2.h, p6/m, z2.h, z3.h",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpmulhw ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xe5 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"smulh z2.h, z2.h, z3.h",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcvttpd2dq xmm0, xmm1": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xe6 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"fcvtn v2.2s, v2.2d",
|
|
"fcvtzs v2.4s, v2.4s",
|
|
"mov v2.16b, v2.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcvttpd2dq xmm0, ymm1": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xe6 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"fcvtnt z2.s, p7/m, z2.d",
|
|
"uzp2 z2.s, z2.s, z2.s",
|
|
"fcvtzs z2.s, p7/m, z2.s",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcvtdq2pd xmm0, xmm1": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b10 0xe6 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"sxtl v2.2d, v2.2s",
|
|
"scvtf v2.2d, v2.2d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcvtdq2pd ymm0, xmm1": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b10 0xe6 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"sunpklo z2.d, z2.s",
|
|
"scvtf z2.d, p7/m, z2.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcvtpd2dq xmm0, xmm1": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b11 0xe6 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"fcvtn v2.2s, v2.2d",
|
|
"frinti v2.4s, v2.4s",
|
|
"fcvtzs v2.4s, v2.4s",
|
|
"mov v2.16b, v2.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vcvtpd2dq xmm0, ymm1": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b11 0xe6 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"fcvtnt z2.s, p7/m, z2.d",
|
|
"uzp2 z2.s, z2.s, z2.s",
|
|
"frinti z2.s, p7/m, z2.s",
|
|
"fcvtzs z2.s, p7/m, z2.s",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmovntdq [rax], xmm0": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xe7 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"str q2, [x4]"
|
|
]
|
|
},
|
|
"vmovntdq [rax], ymm0": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xe7 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z16.d",
|
|
"st1b {z2.b}, p7, [x4]"
|
|
]
|
|
},
|
|
"vpsubsb xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xe8 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"sqsub v2.16b, v2.16b, v3.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpsubsb ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xe8 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"sqsub z2.b, z2.b, z3.b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpsubsw xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xe9 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"sqsub v2.8h, v2.8h, v3.8h",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpsubsw ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xe9 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"sqsub z2.h, z2.h, z3.h",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpminsw xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xea 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"smin v2.8h, v2.8h, v3.8h",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpminsw ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xea 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"smin z2.h, p7/m, z2.h, z3.h",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpor xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xeb 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"orr v2.16b, v2.16b, v3.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpor ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xeb 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"orr z2.d, z2.d, z3.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpaddsb xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xec 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"sqadd v2.16b, v2.16b, v3.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpaddsb ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xec 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"sqadd z2.b, z2.b, z3.b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpaddsw xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xed 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"sqadd v2.8h, v2.8h, v3.8h",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpaddsw ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xed 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"sqadd z2.h, z2.h, z3.h",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpmaxsw xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xee 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"smax v2.8h, v2.8h, v3.8h",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpmaxsw ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xee 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"smax z2.h, p7/m, z2.h, z3.h",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpxor xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xef 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"eor v2.16b, v2.16b, v3.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpxor ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xef 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"eor z2.d, z2.d, z3.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vlddqu xmm0, [rax]": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b11 0xf0 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"ldr q2, [x4]",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vlddqu ymm0, [rax]": {
|
|
"ExpectedInstructionCount": 2,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b11 0xf0 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"ld1b {z2.b}, p7/z, [x4]",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpsllw xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xf1 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"mov z0.d, d3",
|
|
"lsl z2.h, p6/m, z2.h, z0.d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpsllw ymm0, ymm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xf1 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"mov z0.d, d3",
|
|
"lsl z2.h, p7/m, z2.h, z0.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpslld xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xf2 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"mov z0.d, d3",
|
|
"lsl z2.s, p6/m, z2.s, z0.d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpslld ymm0, ymm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xf2 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"mov z0.d, d3",
|
|
"lsl z2.s, p7/m, z2.s, z0.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpsllq xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xf3 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"mov z0.d, d3",
|
|
"lsl z2.d, p6/m, z2.d, z0.d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpsllq ymm0, ymm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xf3 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"mov z0.d, d3",
|
|
"lsl z2.d, p7/m, z2.d, z0.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpmuludq xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xf4 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"uzp1 v2.4s, v2.4s, v2.4s",
|
|
"uzp1 v3.4s, v3.4s, v3.4s",
|
|
"umull v2.2d, v2.2s, v3.2s",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpmuludq ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 8,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xf4 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"uzp1 z2.s, z2.s, z2.s",
|
|
"uzp1 z3.s, z3.s, z3.s",
|
|
"umullb z0.d, z2.s, z3.s",
|
|
"umullt z1.d, z2.s, z3.s",
|
|
"zip1 z2.d, z0.d, z1.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpmaddwd xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 7,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xf5 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"smull v4.4s, v2.4h, v3.4h",
|
|
"smull2 v2.4s, v2.8h, v3.8h",
|
|
"addp v2.4s, v4.4s, v2.4s",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpmaddwd ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 14,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xf5 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"smullb z0.s, z2.h, z3.h",
|
|
"smullt z1.s, z2.h, z3.h",
|
|
"zip1 z4.s, z0.s, z1.s",
|
|
"smullb z0.s, z2.h, z3.h",
|
|
"smullt z1.s, z2.h, z3.h",
|
|
"zip2 z2.s, z0.s, z1.s",
|
|
"movprfx z0, z4",
|
|
"addp z0.s, p7/m, z0.s, z2.s",
|
|
"uzp1 z2.s, z0.s, z0.s",
|
|
"uzp2 z1.s, z0.s, z0.s",
|
|
"splice z2.d, p6, z2.d, z1.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpsadbw xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 9,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xf6 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"uabdl v4.8h, v2.8b, v3.8b",
|
|
"uabdl2 v2.8h, v2.16b, v3.16b",
|
|
"addv h3, v4.8h",
|
|
"addv h2, v2.8h",
|
|
"zip1 v2.2d, v3.2d, v2.2d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpsadbw ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 35,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xf6 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"uabdlb z0.h, z2.b, z3.b",
|
|
"uabdlt z1.h, z2.b, z3.b",
|
|
"zip1 z4.h, z0.h, z1.h",
|
|
"uabdlb z0.h, z2.b, z3.b",
|
|
"uabdlt z1.h, z2.b, z3.b",
|
|
"zip2 z2.h, z0.h, z1.h",
|
|
"addv h3, v4.8h",
|
|
"addv h5, v2.8h",
|
|
"zip1 z3.d, z3.d, z5.d",
|
|
"mov z4.q, z4.q[1]",
|
|
"mov z2.q, z2.q[1]",
|
|
"addv h4, v4.8h",
|
|
"addv h2, v2.8h",
|
|
"mov z1.d, d2",
|
|
"mov z2.d, z4.d",
|
|
"index z0.d, #-2, #1",
|
|
"cmpeq p0.d, p7/z, z0.d, #-1",
|
|
"mov z2.d, p0/m, z1.d",
|
|
"mov z1.q, q2",
|
|
"mov z2.d, z3.d",
|
|
"not p0.b, p7/z, p6.b",
|
|
"mov z2.b, p0/m, z1.b",
|
|
"mov z1.d, z2.d[1]",
|
|
"mov z3.d, z2.d",
|
|
"index z0.d, #-2, #1",
|
|
"cmpeq p0.d, p7/z, z0.d, #0",
|
|
"mov z3.d, p0/m, z1.d",
|
|
"mov z1.d, z2.d[2]",
|
|
"mov z2.d, z3.d",
|
|
"index z0.d, #-2, #1",
|
|
"cmpeq p0.d, p7/z, z0.d, #-1",
|
|
"mov z2.d, p0/m, z1.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vmaskmovdqu xmm0, xmm1": {
|
|
"ExpectedInstructionCount": 6,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xf7 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"cmlt v2.16b, v2.16b, #0",
|
|
"mov z3.d, p7/m, z16.d",
|
|
"ldr q4, [x11]",
|
|
"bsl v2.16b, v3.16b, v4.16b",
|
|
"str q2, [x11]"
|
|
]
|
|
},
|
|
"vpsubb xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xf8 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"sub v2.16b, v2.16b, v3.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpsubb ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xf8 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"sub z2.b, z2.b, z3.b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpsubw xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xf9 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"sub v2.8h, v2.8h, v3.8h",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpsubw ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xf9 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"sub z2.h, z2.h, z3.h",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpsubd xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xfa 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"sub v2.4s, v2.4s, v3.4s",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpsubd ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xfa 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"sub z2.s, z2.s, z3.s",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpsubq xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xfb 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"sub v2.2d, v2.2d, v3.2d",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpsubq ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xfb 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"sub z2.d, z2.d, z3.d",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpaddb xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xfc 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"add v2.16b, v2.16b, v3.16b",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpaddb ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xfc 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"add z2.b, z2.b, z3.b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpaddw xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xfd 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"add v2.8h, v2.8h, v3.8h",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpaddw ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xfd 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"add z2.h, z2.h, z3.h",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpaddd xmm0, xmm1, xmm2": {
|
|
"ExpectedInstructionCount": 5,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xfe 128-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"add v2.4s, v2.4s, v3.4s",
|
|
"mov v2.16b, v2.16b",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
},
|
|
"vpaddd ymm0, ymm1, ymm2": {
|
|
"ExpectedInstructionCount": 4,
|
|
"Optimal": "No",
|
|
"Comment": [
|
|
"Map 1 0b01 0xfe 256-bit"
|
|
],
|
|
"ExpectedArm64ASM": [
|
|
"mov z2.d, p7/m, z17.d",
|
|
"mov z3.d, p7/m, z18.d",
|
|
"add z2.s, z2.s, z3.s",
|
|
"mov z16.d, p7/m, z2.d"
|
|
]
|
|
}
|
|
}
|
|
}
|