internal/opcodesextra: _yvblendmpd forms helper (#365)

Use helper function for instructions sharing the `_yvblendmpd` family of forms.
This commit is contained in:
Michael McLoughlin
2023-01-14 13:55:36 -08:00
committed by GitHub
parent e2c0a40f50
commit 9e56971ed6
5 changed files with 227 additions and 279 deletions

View File

@@ -67,71 +67,4 @@ var vnni = []*inst.Instruction{
// {zcase: Zevex_rm_v_r, zoffset: 0, args: argList{Yzm, Yzr, Yzr}},
// {zcase: Zevex_rm_v_k_r, zoffset: 3, args: argList{Yzm, Yzr, Yknot0, Yzr}},
// }
var vnniforms = inst.Forms{
// EVEX.128.66.0F38.W0 50 /r VPDPBUSD xmm1{k1}{z}, xmm2, xmm3/m128/m32bcst AVX512VNNI AVX512VL
// EVEX.128.66.0F38.W0 51 /r VPDPBUSDS xmm1{k1}{z}, xmm2, xmm3/m128/m32bcst AVX512VNNI AVX512VL
// EVEX.128.66.0F38.W0 52 /r VPDPWSSD xmm1{k1}{z}, xmm2, xmm3/m128/m32bcst AVX512VNNI AVX512VL
// EVEX.128.66.0F38.W0 53 /r VPDPWSSDS xmm1{k1}{z}, xmm2, xmm3/m128/m32bcst AVX512VNNI AVX512VL
{
Operands: []inst.Operand{
{Type: "xmm", Action: inst.R},
{Type: "xmm", Action: inst.R},
{Type: "xmm{k}{z}", Action: inst.RW},
},
EncodingType: inst.EncodingTypeEVEX,
ISA: []string{"AVX512VL", "AVX512VNNI"},
},
{
Operands: []inst.Operand{
{Type: "m128/m32bcst", Action: inst.R},
{Type: "xmm", Action: inst.R},
{Type: "xmm{k}{z}", Action: inst.RW},
},
EncodingType: inst.EncodingTypeEVEX,
ISA: []string{"AVX512VL", "AVX512VNNI"},
},
// EVEX.256.66.0F38.W0 50 /r VPDPBUSD ymm1{k1}{z}, ymm2, ymm3/m256/m32bcst AVX512VNNI AVX512VL
// EVEX.256.66.0F38.W0 51 /r VPDPBUSDS ymm1{k1}{z}, ymm2, ymm3/m256/m32bcst AVX512VNNI AVX512VL
// EVEX.256.66.0F38.W0 52 /r VPDPWSSD ymm1{k1}{z}, ymm2, ymm3/m256/m32bcst AVX512VNNI AVX512VL
// EVEX.256.66.0F38.W0 53 /r VPDPWSSDS ymm1{k1}{z}, ymm2, ymm3/m256/m32bcst AVX512VNNI AVX512VL
{
Operands: []inst.Operand{
{Type: "ymm", Action: inst.R},
{Type: "ymm", Action: inst.R},
{Type: "ymm{k}{z}", Action: inst.RW},
},
EncodingType: inst.EncodingTypeEVEX,
ISA: []string{"AVX512VL", "AVX512VNNI"},
},
{
Operands: []inst.Operand{
{Type: "m256/m32bcst", Action: inst.R},
{Type: "ymm", Action: inst.R},
{Type: "ymm{k}{z}", Action: inst.RW},
},
EncodingType: inst.EncodingTypeEVEX,
ISA: []string{"AVX512VL", "AVX512VNNI"},
},
// EVEX.512.66.0F38.W0 50 /r VPDPBUSD zmm1{k1}{z}, zmm2, zmm3/m512/m32bcst AVX512VNNI
// EVEX.512.66.0F38.W0 51 /r VPDPBUSDS zmm1{k1}{z}, zmm2, zmm3/m512/m32bcst AVX512VNNI
// EVEX.512.66.0F38.W0 52 /r VPDPWSSD zmm1{k1}{z}, zmm2, zmm3/m512/m32bcst AVX512VNNI
// EVEX.512.66.0F38.W0 53 /r VPDPWSSDS zmm1{k1}{z}, zmm2, zmm3/m512/m32bcst AVX512VNNI
{
Operands: []inst.Operand{
{Type: "zmm", Action: inst.R},
{Type: "zmm", Action: inst.R},
{Type: "zmm{k}{z}", Action: inst.RW},
},
EncodingType: inst.EncodingTypeEVEX,
ISA: []string{"AVX512VNNI"},
},
{
Operands: []inst.Operand{
{Type: "m512/m32bcst", Action: inst.R},
{Type: "zmm", Action: inst.R},
{Type: "zmm{k}{z}", Action: inst.RW},
},
EncodingType: inst.EncodingTypeEVEX,
ISA: []string{"AVX512VNNI"},
},
}
var vnniforms = _yvblendmpd("AVX512VNNI", "/m32bcst")