mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
[dev.simd] simd: make "best" instruction choice also depend on commutativity
the compare-based-on-immediate instructions are sometimes commutative, sometimes not. In this case, that means the instruction cannot be commutative. also improve the comments for comparisons. Change-Id: I83a55fa5ffbd6cbbaf5cb23b3e8a68a5da8aae2f Reviewed-on: https://go-review.googlesource.com/c/go/+/726440 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Junyang Shao <shaojunyang@google.com> Reviewed-by: Austin Clements <austin@google.com>
This commit is contained in:
parent
f3a306527c
commit
608dba4308
7 changed files with 642 additions and 728 deletions
|
|
@ -1231,18 +1231,18 @@ func simdAMD64Ops(v11, v21, v2k, vkv, v2kv, v2kk, v31, v3kv, vgpv, vgp, vfpv, vf
|
|||
{name: "VSUBPSMasked512", argLength: 3, reg: w2kw, asm: "VSUBPS", commutative: false, typ: "Vec512", resultInArg0: false},
|
||||
{name: "SHA1RNDS4128", argLength: 2, reg: v21, asm: "SHA1RNDS4", aux: "UInt8", commutative: false, typ: "Vec128", resultInArg0: true},
|
||||
{name: "VAESKEYGENASSIST128", argLength: 1, reg: v11, asm: "VAESKEYGENASSIST", aux: "UInt8", commutative: false, typ: "Vec128", resultInArg0: false},
|
||||
{name: "VCMPPD128", argLength: 2, reg: v21, asm: "VCMPPD", aux: "UInt8", commutative: true, typ: "Vec128", resultInArg0: false},
|
||||
{name: "VCMPPD256", argLength: 2, reg: v21, asm: "VCMPPD", aux: "UInt8", commutative: true, typ: "Vec256", resultInArg0: false},
|
||||
{name: "VCMPPD512", argLength: 2, reg: w2k, asm: "VCMPPD", aux: "UInt8", commutative: true, typ: "Mask", resultInArg0: false},
|
||||
{name: "VCMPPDMasked128", argLength: 3, reg: w2kk, asm: "VCMPPD", aux: "UInt8", commutative: true, typ: "Mask", resultInArg0: false},
|
||||
{name: "VCMPPDMasked256", argLength: 3, reg: w2kk, asm: "VCMPPD", aux: "UInt8", commutative: true, typ: "Mask", resultInArg0: false},
|
||||
{name: "VCMPPDMasked512", argLength: 3, reg: w2kk, asm: "VCMPPD", aux: "UInt8", commutative: true, typ: "Mask", resultInArg0: false},
|
||||
{name: "VCMPPS128", argLength: 2, reg: v21, asm: "VCMPPS", aux: "UInt8", commutative: true, typ: "Vec128", resultInArg0: false},
|
||||
{name: "VCMPPS256", argLength: 2, reg: v21, asm: "VCMPPS", aux: "UInt8", commutative: true, typ: "Vec256", resultInArg0: false},
|
||||
{name: "VCMPPS512", argLength: 2, reg: w2k, asm: "VCMPPS", aux: "UInt8", commutative: true, typ: "Mask", resultInArg0: false},
|
||||
{name: "VCMPPSMasked128", argLength: 3, reg: w2kk, asm: "VCMPPS", aux: "UInt8", commutative: true, typ: "Mask", resultInArg0: false},
|
||||
{name: "VCMPPSMasked256", argLength: 3, reg: w2kk, asm: "VCMPPS", aux: "UInt8", commutative: true, typ: "Mask", resultInArg0: false},
|
||||
{name: "VCMPPSMasked512", argLength: 3, reg: w2kk, asm: "VCMPPS", aux: "UInt8", commutative: true, typ: "Mask", resultInArg0: false},
|
||||
{name: "VCMPPD128", argLength: 2, reg: v21, asm: "VCMPPD", aux: "UInt8", commutative: false, typ: "Vec128", resultInArg0: false},
|
||||
{name: "VCMPPD256", argLength: 2, reg: v21, asm: "VCMPPD", aux: "UInt8", commutative: false, typ: "Vec256", resultInArg0: false},
|
||||
{name: "VCMPPD512", argLength: 2, reg: w2k, asm: "VCMPPD", aux: "UInt8", commutative: false, typ: "Mask", resultInArg0: false},
|
||||
{name: "VCMPPDMasked128", argLength: 3, reg: w2kk, asm: "VCMPPD", aux: "UInt8", commutative: false, typ: "Mask", resultInArg0: false},
|
||||
{name: "VCMPPDMasked256", argLength: 3, reg: w2kk, asm: "VCMPPD", aux: "UInt8", commutative: false, typ: "Mask", resultInArg0: false},
|
||||
{name: "VCMPPDMasked512", argLength: 3, reg: w2kk, asm: "VCMPPD", aux: "UInt8", commutative: false, typ: "Mask", resultInArg0: false},
|
||||
{name: "VCMPPS128", argLength: 2, reg: v21, asm: "VCMPPS", aux: "UInt8", commutative: false, typ: "Vec128", resultInArg0: false},
|
||||
{name: "VCMPPS256", argLength: 2, reg: v21, asm: "VCMPPS", aux: "UInt8", commutative: false, typ: "Vec256", resultInArg0: false},
|
||||
{name: "VCMPPS512", argLength: 2, reg: w2k, asm: "VCMPPS", aux: "UInt8", commutative: false, typ: "Mask", resultInArg0: false},
|
||||
{name: "VCMPPSMasked128", argLength: 3, reg: w2kk, asm: "VCMPPS", aux: "UInt8", commutative: false, typ: "Mask", resultInArg0: false},
|
||||
{name: "VCMPPSMasked256", argLength: 3, reg: w2kk, asm: "VCMPPS", aux: "UInt8", commutative: false, typ: "Mask", resultInArg0: false},
|
||||
{name: "VCMPPSMasked512", argLength: 3, reg: w2kk, asm: "VCMPPS", aux: "UInt8", commutative: false, typ: "Mask", resultInArg0: false},
|
||||
{name: "VEXTRACTF64X4256", argLength: 1, reg: w11, asm: "VEXTRACTF64X4", aux: "UInt8", commutative: false, typ: "Vec256", resultInArg0: false},
|
||||
{name: "VEXTRACTF128128", argLength: 1, reg: v11, asm: "VEXTRACTF128", aux: "UInt8", commutative: false, typ: "Vec128", resultInArg0: false},
|
||||
{name: "VEXTRACTI64X4256", argLength: 1, reg: w11, asm: "VEXTRACTI64X4", aux: "UInt8", commutative: false, typ: "Vec256", resultInArg0: false},
|
||||
|
|
@ -1270,37 +1270,37 @@ func simdAMD64Ops(v11, v21, v2k, vkv, v2kv, v2kk, v31, v3kv, vgpv, vgp, vfpv, vf
|
|||
{name: "VPALIGNRMasked256", argLength: 3, reg: w2kw, asm: "VPALIGNR", aux: "UInt8", commutative: false, typ: "Vec256", resultInArg0: false},
|
||||
{name: "VPALIGNRMasked512", argLength: 3, reg: w2kw, asm: "VPALIGNR", aux: "UInt8", commutative: false, typ: "Vec512", resultInArg0: false},
|
||||
{name: "VPCMPB512", argLength: 2, reg: w2k, asm: "VPCMPB", aux: "UInt8", commutative: false, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPBMasked128", argLength: 3, reg: w2kk, asm: "VPCMPB", aux: "UInt8", commutative: true, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPBMasked256", argLength: 3, reg: w2kk, asm: "VPCMPB", aux: "UInt8", commutative: true, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPBMasked512", argLength: 3, reg: w2kk, asm: "VPCMPB", aux: "UInt8", commutative: true, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPBMasked128", argLength: 3, reg: w2kk, asm: "VPCMPB", aux: "UInt8", commutative: false, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPBMasked256", argLength: 3, reg: w2kk, asm: "VPCMPB", aux: "UInt8", commutative: false, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPBMasked512", argLength: 3, reg: w2kk, asm: "VPCMPB", aux: "UInt8", commutative: false, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPD512", argLength: 2, reg: w2k, asm: "VPCMPD", aux: "UInt8", commutative: false, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPDMasked128", argLength: 3, reg: w2kk, asm: "VPCMPD", aux: "UInt8", commutative: true, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPDMasked256", argLength: 3, reg: w2kk, asm: "VPCMPD", aux: "UInt8", commutative: true, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPDMasked512", argLength: 3, reg: w2kk, asm: "VPCMPD", aux: "UInt8", commutative: true, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPDMasked128", argLength: 3, reg: w2kk, asm: "VPCMPD", aux: "UInt8", commutative: false, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPDMasked256", argLength: 3, reg: w2kk, asm: "VPCMPD", aux: "UInt8", commutative: false, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPDMasked512", argLength: 3, reg: w2kk, asm: "VPCMPD", aux: "UInt8", commutative: false, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPQ512", argLength: 2, reg: w2k, asm: "VPCMPQ", aux: "UInt8", commutative: false, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPQMasked128", argLength: 3, reg: w2kk, asm: "VPCMPQ", aux: "UInt8", commutative: true, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPQMasked256", argLength: 3, reg: w2kk, asm: "VPCMPQ", aux: "UInt8", commutative: true, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPQMasked512", argLength: 3, reg: w2kk, asm: "VPCMPQ", aux: "UInt8", commutative: true, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPQMasked128", argLength: 3, reg: w2kk, asm: "VPCMPQ", aux: "UInt8", commutative: false, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPQMasked256", argLength: 3, reg: w2kk, asm: "VPCMPQ", aux: "UInt8", commutative: false, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPQMasked512", argLength: 3, reg: w2kk, asm: "VPCMPQ", aux: "UInt8", commutative: false, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPUB512", argLength: 2, reg: w2k, asm: "VPCMPUB", aux: "UInt8", commutative: false, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPUBMasked128", argLength: 3, reg: w2kk, asm: "VPCMPUB", aux: "UInt8", commutative: true, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPUBMasked256", argLength: 3, reg: w2kk, asm: "VPCMPUB", aux: "UInt8", commutative: true, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPUBMasked512", argLength: 3, reg: w2kk, asm: "VPCMPUB", aux: "UInt8", commutative: true, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPUBMasked128", argLength: 3, reg: w2kk, asm: "VPCMPUB", aux: "UInt8", commutative: false, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPUBMasked256", argLength: 3, reg: w2kk, asm: "VPCMPUB", aux: "UInt8", commutative: false, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPUBMasked512", argLength: 3, reg: w2kk, asm: "VPCMPUB", aux: "UInt8", commutative: false, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPUD512", argLength: 2, reg: w2k, asm: "VPCMPUD", aux: "UInt8", commutative: false, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPUDMasked128", argLength: 3, reg: w2kk, asm: "VPCMPUD", aux: "UInt8", commutative: true, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPUDMasked256", argLength: 3, reg: w2kk, asm: "VPCMPUD", aux: "UInt8", commutative: true, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPUDMasked512", argLength: 3, reg: w2kk, asm: "VPCMPUD", aux: "UInt8", commutative: true, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPUDMasked128", argLength: 3, reg: w2kk, asm: "VPCMPUD", aux: "UInt8", commutative: false, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPUDMasked256", argLength: 3, reg: w2kk, asm: "VPCMPUD", aux: "UInt8", commutative: false, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPUDMasked512", argLength: 3, reg: w2kk, asm: "VPCMPUD", aux: "UInt8", commutative: false, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPUQ512", argLength: 2, reg: w2k, asm: "VPCMPUQ", aux: "UInt8", commutative: false, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPUQMasked128", argLength: 3, reg: w2kk, asm: "VPCMPUQ", aux: "UInt8", commutative: true, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPUQMasked256", argLength: 3, reg: w2kk, asm: "VPCMPUQ", aux: "UInt8", commutative: true, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPUQMasked512", argLength: 3, reg: w2kk, asm: "VPCMPUQ", aux: "UInt8", commutative: true, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPUQMasked128", argLength: 3, reg: w2kk, asm: "VPCMPUQ", aux: "UInt8", commutative: false, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPUQMasked256", argLength: 3, reg: w2kk, asm: "VPCMPUQ", aux: "UInt8", commutative: false, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPUQMasked512", argLength: 3, reg: w2kk, asm: "VPCMPUQ", aux: "UInt8", commutative: false, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPUW512", argLength: 2, reg: w2k, asm: "VPCMPUW", aux: "UInt8", commutative: false, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPUWMasked128", argLength: 3, reg: w2kk, asm: "VPCMPUW", aux: "UInt8", commutative: true, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPUWMasked256", argLength: 3, reg: w2kk, asm: "VPCMPUW", aux: "UInt8", commutative: true, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPUWMasked512", argLength: 3, reg: w2kk, asm: "VPCMPUW", aux: "UInt8", commutative: true, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPUWMasked128", argLength: 3, reg: w2kk, asm: "VPCMPUW", aux: "UInt8", commutative: false, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPUWMasked256", argLength: 3, reg: w2kk, asm: "VPCMPUW", aux: "UInt8", commutative: false, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPUWMasked512", argLength: 3, reg: w2kk, asm: "VPCMPUW", aux: "UInt8", commutative: false, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPW512", argLength: 2, reg: w2k, asm: "VPCMPW", aux: "UInt8", commutative: false, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPWMasked128", argLength: 3, reg: w2kk, asm: "VPCMPW", aux: "UInt8", commutative: true, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPWMasked256", argLength: 3, reg: w2kk, asm: "VPCMPW", aux: "UInt8", commutative: true, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPWMasked512", argLength: 3, reg: w2kk, asm: "VPCMPW", aux: "UInt8", commutative: true, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPWMasked128", argLength: 3, reg: w2kk, asm: "VPCMPW", aux: "UInt8", commutative: false, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPWMasked256", argLength: 3, reg: w2kk, asm: "VPCMPW", aux: "UInt8", commutative: false, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPCMPWMasked512", argLength: 3, reg: w2kk, asm: "VPCMPW", aux: "UInt8", commutative: false, typ: "Mask", resultInArg0: false},
|
||||
{name: "VPERM2F128256", argLength: 2, reg: v21, asm: "VPERM2F128", aux: "UInt8", commutative: false, typ: "Vec256", resultInArg0: false},
|
||||
{name: "VPERM2I128256", argLength: 2, reg: v21, asm: "VPERM2I128", aux: "UInt8", commutative: false, typ: "Vec256", resultInArg0: false},
|
||||
{name: "VPEXTRB128", argLength: 1, reg: wgp, asm: "VPEXTRB", aux: "UInt8", commutative: false, typ: "int8", resultInArg0: false},
|
||||
|
|
|
|||
|
|
@ -38632,7 +38632,6 @@ var opcodeTable = [...]opInfo{
|
|||
name: "VCMPPD128",
|
||||
auxType: auxUInt8,
|
||||
argLen: 2,
|
||||
commutative: true,
|
||||
asm: x86.AVCMPPD,
|
||||
reg: regInfo{
|
||||
inputs: []inputInfo{
|
||||
|
|
@ -38648,7 +38647,6 @@ var opcodeTable = [...]opInfo{
|
|||
name: "VCMPPD256",
|
||||
auxType: auxUInt8,
|
||||
argLen: 2,
|
||||
commutative: true,
|
||||
asm: x86.AVCMPPD,
|
||||
reg: regInfo{
|
||||
inputs: []inputInfo{
|
||||
|
|
@ -38664,7 +38662,6 @@ var opcodeTable = [...]opInfo{
|
|||
name: "VCMPPD512",
|
||||
auxType: auxUInt8,
|
||||
argLen: 2,
|
||||
commutative: true,
|
||||
asm: x86.AVCMPPD,
|
||||
reg: regInfo{
|
||||
inputs: []inputInfo{
|
||||
|
|
@ -38680,7 +38677,6 @@ var opcodeTable = [...]opInfo{
|
|||
name: "VCMPPDMasked128",
|
||||
auxType: auxUInt8,
|
||||
argLen: 3,
|
||||
commutative: true,
|
||||
asm: x86.AVCMPPD,
|
||||
reg: regInfo{
|
||||
inputs: []inputInfo{
|
||||
|
|
@ -38697,7 +38693,6 @@ var opcodeTable = [...]opInfo{
|
|||
name: "VCMPPDMasked256",
|
||||
auxType: auxUInt8,
|
||||
argLen: 3,
|
||||
commutative: true,
|
||||
asm: x86.AVCMPPD,
|
||||
reg: regInfo{
|
||||
inputs: []inputInfo{
|
||||
|
|
@ -38714,7 +38709,6 @@ var opcodeTable = [...]opInfo{
|
|||
name: "VCMPPDMasked512",
|
||||
auxType: auxUInt8,
|
||||
argLen: 3,
|
||||
commutative: true,
|
||||
asm: x86.AVCMPPD,
|
||||
reg: regInfo{
|
||||
inputs: []inputInfo{
|
||||
|
|
@ -38731,7 +38725,6 @@ var opcodeTable = [...]opInfo{
|
|||
name: "VCMPPS128",
|
||||
auxType: auxUInt8,
|
||||
argLen: 2,
|
||||
commutative: true,
|
||||
asm: x86.AVCMPPS,
|
||||
reg: regInfo{
|
||||
inputs: []inputInfo{
|
||||
|
|
@ -38747,7 +38740,6 @@ var opcodeTable = [...]opInfo{
|
|||
name: "VCMPPS256",
|
||||
auxType: auxUInt8,
|
||||
argLen: 2,
|
||||
commutative: true,
|
||||
asm: x86.AVCMPPS,
|
||||
reg: regInfo{
|
||||
inputs: []inputInfo{
|
||||
|
|
@ -38763,7 +38755,6 @@ var opcodeTable = [...]opInfo{
|
|||
name: "VCMPPS512",
|
||||
auxType: auxUInt8,
|
||||
argLen: 2,
|
||||
commutative: true,
|
||||
asm: x86.AVCMPPS,
|
||||
reg: regInfo{
|
||||
inputs: []inputInfo{
|
||||
|
|
@ -38779,7 +38770,6 @@ var opcodeTable = [...]opInfo{
|
|||
name: "VCMPPSMasked128",
|
||||
auxType: auxUInt8,
|
||||
argLen: 3,
|
||||
commutative: true,
|
||||
asm: x86.AVCMPPS,
|
||||
reg: regInfo{
|
||||
inputs: []inputInfo{
|
||||
|
|
@ -38796,7 +38786,6 @@ var opcodeTable = [...]opInfo{
|
|||
name: "VCMPPSMasked256",
|
||||
auxType: auxUInt8,
|
||||
argLen: 3,
|
||||
commutative: true,
|
||||
asm: x86.AVCMPPS,
|
||||
reg: regInfo{
|
||||
inputs: []inputInfo{
|
||||
|
|
@ -38813,7 +38802,6 @@ var opcodeTable = [...]opInfo{
|
|||
name: "VCMPPSMasked512",
|
||||
auxType: auxUInt8,
|
||||
argLen: 3,
|
||||
commutative: true,
|
||||
asm: x86.AVCMPPS,
|
||||
reg: regInfo{
|
||||
inputs: []inputInfo{
|
||||
|
|
@ -39240,7 +39228,6 @@ var opcodeTable = [...]opInfo{
|
|||
name: "VPCMPBMasked128",
|
||||
auxType: auxUInt8,
|
||||
argLen: 3,
|
||||
commutative: true,
|
||||
asm: x86.AVPCMPB,
|
||||
reg: regInfo{
|
||||
inputs: []inputInfo{
|
||||
|
|
@ -39257,7 +39244,6 @@ var opcodeTable = [...]opInfo{
|
|||
name: "VPCMPBMasked256",
|
||||
auxType: auxUInt8,
|
||||
argLen: 3,
|
||||
commutative: true,
|
||||
asm: x86.AVPCMPB,
|
||||
reg: regInfo{
|
||||
inputs: []inputInfo{
|
||||
|
|
@ -39274,7 +39260,6 @@ var opcodeTable = [...]opInfo{
|
|||
name: "VPCMPBMasked512",
|
||||
auxType: auxUInt8,
|
||||
argLen: 3,
|
||||
commutative: true,
|
||||
asm: x86.AVPCMPB,
|
||||
reg: regInfo{
|
||||
inputs: []inputInfo{
|
||||
|
|
@ -39306,7 +39291,6 @@ var opcodeTable = [...]opInfo{
|
|||
name: "VPCMPDMasked128",
|
||||
auxType: auxUInt8,
|
||||
argLen: 3,
|
||||
commutative: true,
|
||||
asm: x86.AVPCMPD,
|
||||
reg: regInfo{
|
||||
inputs: []inputInfo{
|
||||
|
|
@ -39323,7 +39307,6 @@ var opcodeTable = [...]opInfo{
|
|||
name: "VPCMPDMasked256",
|
||||
auxType: auxUInt8,
|
||||
argLen: 3,
|
||||
commutative: true,
|
||||
asm: x86.AVPCMPD,
|
||||
reg: regInfo{
|
||||
inputs: []inputInfo{
|
||||
|
|
@ -39340,7 +39323,6 @@ var opcodeTable = [...]opInfo{
|
|||
name: "VPCMPDMasked512",
|
||||
auxType: auxUInt8,
|
||||
argLen: 3,
|
||||
commutative: true,
|
||||
asm: x86.AVPCMPD,
|
||||
reg: regInfo{
|
||||
inputs: []inputInfo{
|
||||
|
|
@ -39372,7 +39354,6 @@ var opcodeTable = [...]opInfo{
|
|||
name: "VPCMPQMasked128",
|
||||
auxType: auxUInt8,
|
||||
argLen: 3,
|
||||
commutative: true,
|
||||
asm: x86.AVPCMPQ,
|
||||
reg: regInfo{
|
||||
inputs: []inputInfo{
|
||||
|
|
@ -39389,7 +39370,6 @@ var opcodeTable = [...]opInfo{
|
|||
name: "VPCMPQMasked256",
|
||||
auxType: auxUInt8,
|
||||
argLen: 3,
|
||||
commutative: true,
|
||||
asm: x86.AVPCMPQ,
|
||||
reg: regInfo{
|
||||
inputs: []inputInfo{
|
||||
|
|
@ -39406,7 +39386,6 @@ var opcodeTable = [...]opInfo{
|
|||
name: "VPCMPQMasked512",
|
||||
auxType: auxUInt8,
|
||||
argLen: 3,
|
||||
commutative: true,
|
||||
asm: x86.AVPCMPQ,
|
||||
reg: regInfo{
|
||||
inputs: []inputInfo{
|
||||
|
|
@ -39438,7 +39417,6 @@ var opcodeTable = [...]opInfo{
|
|||
name: "VPCMPUBMasked128",
|
||||
auxType: auxUInt8,
|
||||
argLen: 3,
|
||||
commutative: true,
|
||||
asm: x86.AVPCMPUB,
|
||||
reg: regInfo{
|
||||
inputs: []inputInfo{
|
||||
|
|
@ -39455,7 +39433,6 @@ var opcodeTable = [...]opInfo{
|
|||
name: "VPCMPUBMasked256",
|
||||
auxType: auxUInt8,
|
||||
argLen: 3,
|
||||
commutative: true,
|
||||
asm: x86.AVPCMPUB,
|
||||
reg: regInfo{
|
||||
inputs: []inputInfo{
|
||||
|
|
@ -39472,7 +39449,6 @@ var opcodeTable = [...]opInfo{
|
|||
name: "VPCMPUBMasked512",
|
||||
auxType: auxUInt8,
|
||||
argLen: 3,
|
||||
commutative: true,
|
||||
asm: x86.AVPCMPUB,
|
||||
reg: regInfo{
|
||||
inputs: []inputInfo{
|
||||
|
|
@ -39504,7 +39480,6 @@ var opcodeTable = [...]opInfo{
|
|||
name: "VPCMPUDMasked128",
|
||||
auxType: auxUInt8,
|
||||
argLen: 3,
|
||||
commutative: true,
|
||||
asm: x86.AVPCMPUD,
|
||||
reg: regInfo{
|
||||
inputs: []inputInfo{
|
||||
|
|
@ -39521,7 +39496,6 @@ var opcodeTable = [...]opInfo{
|
|||
name: "VPCMPUDMasked256",
|
||||
auxType: auxUInt8,
|
||||
argLen: 3,
|
||||
commutative: true,
|
||||
asm: x86.AVPCMPUD,
|
||||
reg: regInfo{
|
||||
inputs: []inputInfo{
|
||||
|
|
@ -39538,7 +39512,6 @@ var opcodeTable = [...]opInfo{
|
|||
name: "VPCMPUDMasked512",
|
||||
auxType: auxUInt8,
|
||||
argLen: 3,
|
||||
commutative: true,
|
||||
asm: x86.AVPCMPUD,
|
||||
reg: regInfo{
|
||||
inputs: []inputInfo{
|
||||
|
|
@ -39570,7 +39543,6 @@ var opcodeTable = [...]opInfo{
|
|||
name: "VPCMPUQMasked128",
|
||||
auxType: auxUInt8,
|
||||
argLen: 3,
|
||||
commutative: true,
|
||||
asm: x86.AVPCMPUQ,
|
||||
reg: regInfo{
|
||||
inputs: []inputInfo{
|
||||
|
|
@ -39587,7 +39559,6 @@ var opcodeTable = [...]opInfo{
|
|||
name: "VPCMPUQMasked256",
|
||||
auxType: auxUInt8,
|
||||
argLen: 3,
|
||||
commutative: true,
|
||||
asm: x86.AVPCMPUQ,
|
||||
reg: regInfo{
|
||||
inputs: []inputInfo{
|
||||
|
|
@ -39604,7 +39575,6 @@ var opcodeTable = [...]opInfo{
|
|||
name: "VPCMPUQMasked512",
|
||||
auxType: auxUInt8,
|
||||
argLen: 3,
|
||||
commutative: true,
|
||||
asm: x86.AVPCMPUQ,
|
||||
reg: regInfo{
|
||||
inputs: []inputInfo{
|
||||
|
|
@ -39636,7 +39606,6 @@ var opcodeTable = [...]opInfo{
|
|||
name: "VPCMPUWMasked128",
|
||||
auxType: auxUInt8,
|
||||
argLen: 3,
|
||||
commutative: true,
|
||||
asm: x86.AVPCMPUW,
|
||||
reg: regInfo{
|
||||
inputs: []inputInfo{
|
||||
|
|
@ -39653,7 +39622,6 @@ var opcodeTable = [...]opInfo{
|
|||
name: "VPCMPUWMasked256",
|
||||
auxType: auxUInt8,
|
||||
argLen: 3,
|
||||
commutative: true,
|
||||
asm: x86.AVPCMPUW,
|
||||
reg: regInfo{
|
||||
inputs: []inputInfo{
|
||||
|
|
@ -39670,7 +39638,6 @@ var opcodeTable = [...]opInfo{
|
|||
name: "VPCMPUWMasked512",
|
||||
auxType: auxUInt8,
|
||||
argLen: 3,
|
||||
commutative: true,
|
||||
asm: x86.AVPCMPUW,
|
||||
reg: regInfo{
|
||||
inputs: []inputInfo{
|
||||
|
|
@ -39702,7 +39669,6 @@ var opcodeTable = [...]opInfo{
|
|||
name: "VPCMPWMasked128",
|
||||
auxType: auxUInt8,
|
||||
argLen: 3,
|
||||
commutative: true,
|
||||
asm: x86.AVPCMPW,
|
||||
reg: regInfo{
|
||||
inputs: []inputInfo{
|
||||
|
|
@ -39719,7 +39685,6 @@ var opcodeTable = [...]opInfo{
|
|||
name: "VPCMPWMasked256",
|
||||
auxType: auxUInt8,
|
||||
argLen: 3,
|
||||
commutative: true,
|
||||
asm: x86.AVPCMPW,
|
||||
reg: regInfo{
|
||||
inputs: []inputInfo{
|
||||
|
|
@ -39736,7 +39701,6 @@ var opcodeTable = [...]opInfo{
|
|||
name: "VPCMPWMasked512",
|
||||
auxType: auxUInt8,
|
||||
argLen: 3,
|
||||
commutative: true,
|
||||
asm: x86.AVPCMPW,
|
||||
reg: regInfo{
|
||||
inputs: []inputInfo{
|
||||
|
|
|
|||
|
|
@ -28757,18 +28757,17 @@ func rewriteValueAMD64_OpAMD64VCMPPD512(v *Value) bool {
|
|||
// result: (VCMPPD512load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mem)
|
||||
for {
|
||||
c := auxIntToUint8(v.AuxInt)
|
||||
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
|
||||
x := v_0
|
||||
l := v_1
|
||||
if l.Op != OpAMD64VMOVDQUload512 {
|
||||
continue
|
||||
break
|
||||
}
|
||||
off := auxIntToInt32(l.AuxInt)
|
||||
sym := auxToSym(l.Aux)
|
||||
mem := l.Args[1]
|
||||
ptr := l.Args[0]
|
||||
if !(canMergeLoad(v, l) && clobber(l)) {
|
||||
continue
|
||||
break
|
||||
}
|
||||
v.reset(OpAMD64VCMPPD512load)
|
||||
v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
|
||||
|
|
@ -28776,8 +28775,6 @@ func rewriteValueAMD64_OpAMD64VCMPPD512(v *Value) bool {
|
|||
v.AddArg3(x, ptr, mem)
|
||||
return true
|
||||
}
|
||||
break
|
||||
}
|
||||
return false
|
||||
}
|
||||
func rewriteValueAMD64_OpAMD64VCMPPDMasked128(v *Value) bool {
|
||||
|
|
@ -28789,11 +28786,10 @@ func rewriteValueAMD64_OpAMD64VCMPPDMasked128(v *Value) bool {
|
|||
// result: (VCMPPDMasked128load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
|
||||
for {
|
||||
c := auxIntToUint8(v.AuxInt)
|
||||
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
|
||||
x := v_0
|
||||
l := v_1
|
||||
if l.Op != OpAMD64VMOVDQUload128 {
|
||||
continue
|
||||
break
|
||||
}
|
||||
off := auxIntToInt32(l.AuxInt)
|
||||
sym := auxToSym(l.Aux)
|
||||
|
|
@ -28801,7 +28797,7 @@ func rewriteValueAMD64_OpAMD64VCMPPDMasked128(v *Value) bool {
|
|||
ptr := l.Args[0]
|
||||
mask := v_2
|
||||
if !(canMergeLoad(v, l) && clobber(l)) {
|
||||
continue
|
||||
break
|
||||
}
|
||||
v.reset(OpAMD64VCMPPDMasked128load)
|
||||
v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
|
||||
|
|
@ -28809,8 +28805,6 @@ func rewriteValueAMD64_OpAMD64VCMPPDMasked128(v *Value) bool {
|
|||
v.AddArg4(x, ptr, mask, mem)
|
||||
return true
|
||||
}
|
||||
break
|
||||
}
|
||||
return false
|
||||
}
|
||||
func rewriteValueAMD64_OpAMD64VCMPPDMasked256(v *Value) bool {
|
||||
|
|
@ -28822,11 +28816,10 @@ func rewriteValueAMD64_OpAMD64VCMPPDMasked256(v *Value) bool {
|
|||
// result: (VCMPPDMasked256load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
|
||||
for {
|
||||
c := auxIntToUint8(v.AuxInt)
|
||||
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
|
||||
x := v_0
|
||||
l := v_1
|
||||
if l.Op != OpAMD64VMOVDQUload256 {
|
||||
continue
|
||||
break
|
||||
}
|
||||
off := auxIntToInt32(l.AuxInt)
|
||||
sym := auxToSym(l.Aux)
|
||||
|
|
@ -28834,7 +28827,7 @@ func rewriteValueAMD64_OpAMD64VCMPPDMasked256(v *Value) bool {
|
|||
ptr := l.Args[0]
|
||||
mask := v_2
|
||||
if !(canMergeLoad(v, l) && clobber(l)) {
|
||||
continue
|
||||
break
|
||||
}
|
||||
v.reset(OpAMD64VCMPPDMasked256load)
|
||||
v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
|
||||
|
|
@ -28842,8 +28835,6 @@ func rewriteValueAMD64_OpAMD64VCMPPDMasked256(v *Value) bool {
|
|||
v.AddArg4(x, ptr, mask, mem)
|
||||
return true
|
||||
}
|
||||
break
|
||||
}
|
||||
return false
|
||||
}
|
||||
func rewriteValueAMD64_OpAMD64VCMPPDMasked512(v *Value) bool {
|
||||
|
|
@ -28855,11 +28846,10 @@ func rewriteValueAMD64_OpAMD64VCMPPDMasked512(v *Value) bool {
|
|||
// result: (VCMPPDMasked512load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
|
||||
for {
|
||||
c := auxIntToUint8(v.AuxInt)
|
||||
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
|
||||
x := v_0
|
||||
l := v_1
|
||||
if l.Op != OpAMD64VMOVDQUload512 {
|
||||
continue
|
||||
break
|
||||
}
|
||||
off := auxIntToInt32(l.AuxInt)
|
||||
sym := auxToSym(l.Aux)
|
||||
|
|
@ -28867,7 +28857,7 @@ func rewriteValueAMD64_OpAMD64VCMPPDMasked512(v *Value) bool {
|
|||
ptr := l.Args[0]
|
||||
mask := v_2
|
||||
if !(canMergeLoad(v, l) && clobber(l)) {
|
||||
continue
|
||||
break
|
||||
}
|
||||
v.reset(OpAMD64VCMPPDMasked512load)
|
||||
v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
|
||||
|
|
@ -28875,8 +28865,6 @@ func rewriteValueAMD64_OpAMD64VCMPPDMasked512(v *Value) bool {
|
|||
v.AddArg4(x, ptr, mask, mem)
|
||||
return true
|
||||
}
|
||||
break
|
||||
}
|
||||
return false
|
||||
}
|
||||
func rewriteValueAMD64_OpAMD64VCMPPS512(v *Value) bool {
|
||||
|
|
@ -28887,18 +28875,17 @@ func rewriteValueAMD64_OpAMD64VCMPPS512(v *Value) bool {
|
|||
// result: (VCMPPS512load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mem)
|
||||
for {
|
||||
c := auxIntToUint8(v.AuxInt)
|
||||
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
|
||||
x := v_0
|
||||
l := v_1
|
||||
if l.Op != OpAMD64VMOVDQUload512 {
|
||||
continue
|
||||
break
|
||||
}
|
||||
off := auxIntToInt32(l.AuxInt)
|
||||
sym := auxToSym(l.Aux)
|
||||
mem := l.Args[1]
|
||||
ptr := l.Args[0]
|
||||
if !(canMergeLoad(v, l) && clobber(l)) {
|
||||
continue
|
||||
break
|
||||
}
|
||||
v.reset(OpAMD64VCMPPS512load)
|
||||
v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
|
||||
|
|
@ -28906,8 +28893,6 @@ func rewriteValueAMD64_OpAMD64VCMPPS512(v *Value) bool {
|
|||
v.AddArg3(x, ptr, mem)
|
||||
return true
|
||||
}
|
||||
break
|
||||
}
|
||||
return false
|
||||
}
|
||||
func rewriteValueAMD64_OpAMD64VCMPPSMasked128(v *Value) bool {
|
||||
|
|
@ -28919,11 +28904,10 @@ func rewriteValueAMD64_OpAMD64VCMPPSMasked128(v *Value) bool {
|
|||
// result: (VCMPPSMasked128load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
|
||||
for {
|
||||
c := auxIntToUint8(v.AuxInt)
|
||||
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
|
||||
x := v_0
|
||||
l := v_1
|
||||
if l.Op != OpAMD64VMOVDQUload128 {
|
||||
continue
|
||||
break
|
||||
}
|
||||
off := auxIntToInt32(l.AuxInt)
|
||||
sym := auxToSym(l.Aux)
|
||||
|
|
@ -28931,7 +28915,7 @@ func rewriteValueAMD64_OpAMD64VCMPPSMasked128(v *Value) bool {
|
|||
ptr := l.Args[0]
|
||||
mask := v_2
|
||||
if !(canMergeLoad(v, l) && clobber(l)) {
|
||||
continue
|
||||
break
|
||||
}
|
||||
v.reset(OpAMD64VCMPPSMasked128load)
|
||||
v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
|
||||
|
|
@ -28939,8 +28923,6 @@ func rewriteValueAMD64_OpAMD64VCMPPSMasked128(v *Value) bool {
|
|||
v.AddArg4(x, ptr, mask, mem)
|
||||
return true
|
||||
}
|
||||
break
|
||||
}
|
||||
return false
|
||||
}
|
||||
func rewriteValueAMD64_OpAMD64VCMPPSMasked256(v *Value) bool {
|
||||
|
|
@ -28952,11 +28934,10 @@ func rewriteValueAMD64_OpAMD64VCMPPSMasked256(v *Value) bool {
|
|||
// result: (VCMPPSMasked256load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
|
||||
for {
|
||||
c := auxIntToUint8(v.AuxInt)
|
||||
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
|
||||
x := v_0
|
||||
l := v_1
|
||||
if l.Op != OpAMD64VMOVDQUload256 {
|
||||
continue
|
||||
break
|
||||
}
|
||||
off := auxIntToInt32(l.AuxInt)
|
||||
sym := auxToSym(l.Aux)
|
||||
|
|
@ -28964,7 +28945,7 @@ func rewriteValueAMD64_OpAMD64VCMPPSMasked256(v *Value) bool {
|
|||
ptr := l.Args[0]
|
||||
mask := v_2
|
||||
if !(canMergeLoad(v, l) && clobber(l)) {
|
||||
continue
|
||||
break
|
||||
}
|
||||
v.reset(OpAMD64VCMPPSMasked256load)
|
||||
v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
|
||||
|
|
@ -28972,8 +28953,6 @@ func rewriteValueAMD64_OpAMD64VCMPPSMasked256(v *Value) bool {
|
|||
v.AddArg4(x, ptr, mask, mem)
|
||||
return true
|
||||
}
|
||||
break
|
||||
}
|
||||
return false
|
||||
}
|
||||
func rewriteValueAMD64_OpAMD64VCMPPSMasked512(v *Value) bool {
|
||||
|
|
@ -28985,11 +28964,10 @@ func rewriteValueAMD64_OpAMD64VCMPPSMasked512(v *Value) bool {
|
|||
// result: (VCMPPSMasked512load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
|
||||
for {
|
||||
c := auxIntToUint8(v.AuxInt)
|
||||
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
|
||||
x := v_0
|
||||
l := v_1
|
||||
if l.Op != OpAMD64VMOVDQUload512 {
|
||||
continue
|
||||
break
|
||||
}
|
||||
off := auxIntToInt32(l.AuxInt)
|
||||
sym := auxToSym(l.Aux)
|
||||
|
|
@ -28997,7 +28975,7 @@ func rewriteValueAMD64_OpAMD64VCMPPSMasked512(v *Value) bool {
|
|||
ptr := l.Args[0]
|
||||
mask := v_2
|
||||
if !(canMergeLoad(v, l) && clobber(l)) {
|
||||
continue
|
||||
break
|
||||
}
|
||||
v.reset(OpAMD64VCMPPSMasked512load)
|
||||
v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
|
||||
|
|
@ -29005,8 +28983,6 @@ func rewriteValueAMD64_OpAMD64VCMPPSMasked512(v *Value) bool {
|
|||
v.AddArg4(x, ptr, mask, mem)
|
||||
return true
|
||||
}
|
||||
break
|
||||
}
|
||||
return false
|
||||
}
|
||||
func rewriteValueAMD64_OpAMD64VCVTDQ2PD512(v *Value) bool {
|
||||
|
|
@ -52600,11 +52576,10 @@ func rewriteValueAMD64_OpAMD64VPCMPDMasked128(v *Value) bool {
|
|||
// result: (VPCMPDMasked128load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
|
||||
for {
|
||||
c := auxIntToUint8(v.AuxInt)
|
||||
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
|
||||
x := v_0
|
||||
l := v_1
|
||||
if l.Op != OpAMD64VMOVDQUload128 {
|
||||
continue
|
||||
break
|
||||
}
|
||||
off := auxIntToInt32(l.AuxInt)
|
||||
sym := auxToSym(l.Aux)
|
||||
|
|
@ -52612,7 +52587,7 @@ func rewriteValueAMD64_OpAMD64VPCMPDMasked128(v *Value) bool {
|
|||
ptr := l.Args[0]
|
||||
mask := v_2
|
||||
if !(canMergeLoad(v, l) && clobber(l)) {
|
||||
continue
|
||||
break
|
||||
}
|
||||
v.reset(OpAMD64VPCMPDMasked128load)
|
||||
v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
|
||||
|
|
@ -52620,8 +52595,6 @@ func rewriteValueAMD64_OpAMD64VPCMPDMasked128(v *Value) bool {
|
|||
v.AddArg4(x, ptr, mask, mem)
|
||||
return true
|
||||
}
|
||||
break
|
||||
}
|
||||
return false
|
||||
}
|
||||
func rewriteValueAMD64_OpAMD64VPCMPDMasked256(v *Value) bool {
|
||||
|
|
@ -52633,11 +52606,10 @@ func rewriteValueAMD64_OpAMD64VPCMPDMasked256(v *Value) bool {
|
|||
// result: (VPCMPDMasked256load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
|
||||
for {
|
||||
c := auxIntToUint8(v.AuxInt)
|
||||
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
|
||||
x := v_0
|
||||
l := v_1
|
||||
if l.Op != OpAMD64VMOVDQUload256 {
|
||||
continue
|
||||
break
|
||||
}
|
||||
off := auxIntToInt32(l.AuxInt)
|
||||
sym := auxToSym(l.Aux)
|
||||
|
|
@ -52645,7 +52617,7 @@ func rewriteValueAMD64_OpAMD64VPCMPDMasked256(v *Value) bool {
|
|||
ptr := l.Args[0]
|
||||
mask := v_2
|
||||
if !(canMergeLoad(v, l) && clobber(l)) {
|
||||
continue
|
||||
break
|
||||
}
|
||||
v.reset(OpAMD64VPCMPDMasked256load)
|
||||
v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
|
||||
|
|
@ -52653,8 +52625,6 @@ func rewriteValueAMD64_OpAMD64VPCMPDMasked256(v *Value) bool {
|
|||
v.AddArg4(x, ptr, mask, mem)
|
||||
return true
|
||||
}
|
||||
break
|
||||
}
|
||||
return false
|
||||
}
|
||||
func rewriteValueAMD64_OpAMD64VPCMPDMasked512(v *Value) bool {
|
||||
|
|
@ -52666,11 +52636,10 @@ func rewriteValueAMD64_OpAMD64VPCMPDMasked512(v *Value) bool {
|
|||
// result: (VPCMPDMasked512load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
|
||||
for {
|
||||
c := auxIntToUint8(v.AuxInt)
|
||||
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
|
||||
x := v_0
|
||||
l := v_1
|
||||
if l.Op != OpAMD64VMOVDQUload512 {
|
||||
continue
|
||||
break
|
||||
}
|
||||
off := auxIntToInt32(l.AuxInt)
|
||||
sym := auxToSym(l.Aux)
|
||||
|
|
@ -52678,7 +52647,7 @@ func rewriteValueAMD64_OpAMD64VPCMPDMasked512(v *Value) bool {
|
|||
ptr := l.Args[0]
|
||||
mask := v_2
|
||||
if !(canMergeLoad(v, l) && clobber(l)) {
|
||||
continue
|
||||
break
|
||||
}
|
||||
v.reset(OpAMD64VPCMPDMasked512load)
|
||||
v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
|
||||
|
|
@ -52686,8 +52655,6 @@ func rewriteValueAMD64_OpAMD64VPCMPDMasked512(v *Value) bool {
|
|||
v.AddArg4(x, ptr, mask, mem)
|
||||
return true
|
||||
}
|
||||
break
|
||||
}
|
||||
return false
|
||||
}
|
||||
func rewriteValueAMD64_OpAMD64VPCMPEQD512(v *Value) bool {
|
||||
|
|
@ -52841,11 +52808,10 @@ func rewriteValueAMD64_OpAMD64VPCMPQMasked128(v *Value) bool {
|
|||
// result: (VPCMPQMasked128load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
|
||||
for {
|
||||
c := auxIntToUint8(v.AuxInt)
|
||||
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
|
||||
x := v_0
|
||||
l := v_1
|
||||
if l.Op != OpAMD64VMOVDQUload128 {
|
||||
continue
|
||||
break
|
||||
}
|
||||
off := auxIntToInt32(l.AuxInt)
|
||||
sym := auxToSym(l.Aux)
|
||||
|
|
@ -52853,7 +52819,7 @@ func rewriteValueAMD64_OpAMD64VPCMPQMasked128(v *Value) bool {
|
|||
ptr := l.Args[0]
|
||||
mask := v_2
|
||||
if !(canMergeLoad(v, l) && clobber(l)) {
|
||||
continue
|
||||
break
|
||||
}
|
||||
v.reset(OpAMD64VPCMPQMasked128load)
|
||||
v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
|
||||
|
|
@ -52861,8 +52827,6 @@ func rewriteValueAMD64_OpAMD64VPCMPQMasked128(v *Value) bool {
|
|||
v.AddArg4(x, ptr, mask, mem)
|
||||
return true
|
||||
}
|
||||
break
|
||||
}
|
||||
return false
|
||||
}
|
||||
func rewriteValueAMD64_OpAMD64VPCMPQMasked256(v *Value) bool {
|
||||
|
|
@ -52874,11 +52838,10 @@ func rewriteValueAMD64_OpAMD64VPCMPQMasked256(v *Value) bool {
|
|||
// result: (VPCMPQMasked256load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
|
||||
for {
|
||||
c := auxIntToUint8(v.AuxInt)
|
||||
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
|
||||
x := v_0
|
||||
l := v_1
|
||||
if l.Op != OpAMD64VMOVDQUload256 {
|
||||
continue
|
||||
break
|
||||
}
|
||||
off := auxIntToInt32(l.AuxInt)
|
||||
sym := auxToSym(l.Aux)
|
||||
|
|
@ -52886,7 +52849,7 @@ func rewriteValueAMD64_OpAMD64VPCMPQMasked256(v *Value) bool {
|
|||
ptr := l.Args[0]
|
||||
mask := v_2
|
||||
if !(canMergeLoad(v, l) && clobber(l)) {
|
||||
continue
|
||||
break
|
||||
}
|
||||
v.reset(OpAMD64VPCMPQMasked256load)
|
||||
v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
|
||||
|
|
@ -52894,8 +52857,6 @@ func rewriteValueAMD64_OpAMD64VPCMPQMasked256(v *Value) bool {
|
|||
v.AddArg4(x, ptr, mask, mem)
|
||||
return true
|
||||
}
|
||||
break
|
||||
}
|
||||
return false
|
||||
}
|
||||
func rewriteValueAMD64_OpAMD64VPCMPQMasked512(v *Value) bool {
|
||||
|
|
@ -52907,11 +52868,10 @@ func rewriteValueAMD64_OpAMD64VPCMPQMasked512(v *Value) bool {
|
|||
// result: (VPCMPQMasked512load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
|
||||
for {
|
||||
c := auxIntToUint8(v.AuxInt)
|
||||
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
|
||||
x := v_0
|
||||
l := v_1
|
||||
if l.Op != OpAMD64VMOVDQUload512 {
|
||||
continue
|
||||
break
|
||||
}
|
||||
off := auxIntToInt32(l.AuxInt)
|
||||
sym := auxToSym(l.Aux)
|
||||
|
|
@ -52919,7 +52879,7 @@ func rewriteValueAMD64_OpAMD64VPCMPQMasked512(v *Value) bool {
|
|||
ptr := l.Args[0]
|
||||
mask := v_2
|
||||
if !(canMergeLoad(v, l) && clobber(l)) {
|
||||
continue
|
||||
break
|
||||
}
|
||||
v.reset(OpAMD64VPCMPQMasked512load)
|
||||
v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
|
||||
|
|
@ -52927,8 +52887,6 @@ func rewriteValueAMD64_OpAMD64VPCMPQMasked512(v *Value) bool {
|
|||
v.AddArg4(x, ptr, mask, mem)
|
||||
return true
|
||||
}
|
||||
break
|
||||
}
|
||||
return false
|
||||
}
|
||||
func rewriteValueAMD64_OpAMD64VPCMPUD512(v *Value) bool {
|
||||
|
|
@ -52968,11 +52926,10 @@ func rewriteValueAMD64_OpAMD64VPCMPUDMasked128(v *Value) bool {
|
|||
// result: (VPCMPUDMasked128load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
|
||||
for {
|
||||
c := auxIntToUint8(v.AuxInt)
|
||||
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
|
||||
x := v_0
|
||||
l := v_1
|
||||
if l.Op != OpAMD64VMOVDQUload128 {
|
||||
continue
|
||||
break
|
||||
}
|
||||
off := auxIntToInt32(l.AuxInt)
|
||||
sym := auxToSym(l.Aux)
|
||||
|
|
@ -52980,7 +52937,7 @@ func rewriteValueAMD64_OpAMD64VPCMPUDMasked128(v *Value) bool {
|
|||
ptr := l.Args[0]
|
||||
mask := v_2
|
||||
if !(canMergeLoad(v, l) && clobber(l)) {
|
||||
continue
|
||||
break
|
||||
}
|
||||
v.reset(OpAMD64VPCMPUDMasked128load)
|
||||
v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
|
||||
|
|
@ -52988,8 +52945,6 @@ func rewriteValueAMD64_OpAMD64VPCMPUDMasked128(v *Value) bool {
|
|||
v.AddArg4(x, ptr, mask, mem)
|
||||
return true
|
||||
}
|
||||
break
|
||||
}
|
||||
return false
|
||||
}
|
||||
func rewriteValueAMD64_OpAMD64VPCMPUDMasked256(v *Value) bool {
|
||||
|
|
@ -53001,11 +52956,10 @@ func rewriteValueAMD64_OpAMD64VPCMPUDMasked256(v *Value) bool {
|
|||
// result: (VPCMPUDMasked256load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
|
||||
for {
|
||||
c := auxIntToUint8(v.AuxInt)
|
||||
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
|
||||
x := v_0
|
||||
l := v_1
|
||||
if l.Op != OpAMD64VMOVDQUload256 {
|
||||
continue
|
||||
break
|
||||
}
|
||||
off := auxIntToInt32(l.AuxInt)
|
||||
sym := auxToSym(l.Aux)
|
||||
|
|
@ -53013,7 +52967,7 @@ func rewriteValueAMD64_OpAMD64VPCMPUDMasked256(v *Value) bool {
|
|||
ptr := l.Args[0]
|
||||
mask := v_2
|
||||
if !(canMergeLoad(v, l) && clobber(l)) {
|
||||
continue
|
||||
break
|
||||
}
|
||||
v.reset(OpAMD64VPCMPUDMasked256load)
|
||||
v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
|
||||
|
|
@ -53021,8 +52975,6 @@ func rewriteValueAMD64_OpAMD64VPCMPUDMasked256(v *Value) bool {
|
|||
v.AddArg4(x, ptr, mask, mem)
|
||||
return true
|
||||
}
|
||||
break
|
||||
}
|
||||
return false
|
||||
}
|
||||
func rewriteValueAMD64_OpAMD64VPCMPUDMasked512(v *Value) bool {
|
||||
|
|
@ -53034,11 +52986,10 @@ func rewriteValueAMD64_OpAMD64VPCMPUDMasked512(v *Value) bool {
|
|||
// result: (VPCMPUDMasked512load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
|
||||
for {
|
||||
c := auxIntToUint8(v.AuxInt)
|
||||
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
|
||||
x := v_0
|
||||
l := v_1
|
||||
if l.Op != OpAMD64VMOVDQUload512 {
|
||||
continue
|
||||
break
|
||||
}
|
||||
off := auxIntToInt32(l.AuxInt)
|
||||
sym := auxToSym(l.Aux)
|
||||
|
|
@ -53046,7 +52997,7 @@ func rewriteValueAMD64_OpAMD64VPCMPUDMasked512(v *Value) bool {
|
|||
ptr := l.Args[0]
|
||||
mask := v_2
|
||||
if !(canMergeLoad(v, l) && clobber(l)) {
|
||||
continue
|
||||
break
|
||||
}
|
||||
v.reset(OpAMD64VPCMPUDMasked512load)
|
||||
v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
|
||||
|
|
@ -53054,8 +53005,6 @@ func rewriteValueAMD64_OpAMD64VPCMPUDMasked512(v *Value) bool {
|
|||
v.AddArg4(x, ptr, mask, mem)
|
||||
return true
|
||||
}
|
||||
break
|
||||
}
|
||||
return false
|
||||
}
|
||||
func rewriteValueAMD64_OpAMD64VPCMPUQ512(v *Value) bool {
|
||||
|
|
@ -53095,11 +53044,10 @@ func rewriteValueAMD64_OpAMD64VPCMPUQMasked128(v *Value) bool {
|
|||
// result: (VPCMPUQMasked128load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
|
||||
for {
|
||||
c := auxIntToUint8(v.AuxInt)
|
||||
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
|
||||
x := v_0
|
||||
l := v_1
|
||||
if l.Op != OpAMD64VMOVDQUload128 {
|
||||
continue
|
||||
break
|
||||
}
|
||||
off := auxIntToInt32(l.AuxInt)
|
||||
sym := auxToSym(l.Aux)
|
||||
|
|
@ -53107,7 +53055,7 @@ func rewriteValueAMD64_OpAMD64VPCMPUQMasked128(v *Value) bool {
|
|||
ptr := l.Args[0]
|
||||
mask := v_2
|
||||
if !(canMergeLoad(v, l) && clobber(l)) {
|
||||
continue
|
||||
break
|
||||
}
|
||||
v.reset(OpAMD64VPCMPUQMasked128load)
|
||||
v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
|
||||
|
|
@ -53115,8 +53063,6 @@ func rewriteValueAMD64_OpAMD64VPCMPUQMasked128(v *Value) bool {
|
|||
v.AddArg4(x, ptr, mask, mem)
|
||||
return true
|
||||
}
|
||||
break
|
||||
}
|
||||
return false
|
||||
}
|
||||
func rewriteValueAMD64_OpAMD64VPCMPUQMasked256(v *Value) bool {
|
||||
|
|
@ -53128,11 +53074,10 @@ func rewriteValueAMD64_OpAMD64VPCMPUQMasked256(v *Value) bool {
|
|||
// result: (VPCMPUQMasked256load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
|
||||
for {
|
||||
c := auxIntToUint8(v.AuxInt)
|
||||
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
|
||||
x := v_0
|
||||
l := v_1
|
||||
if l.Op != OpAMD64VMOVDQUload256 {
|
||||
continue
|
||||
break
|
||||
}
|
||||
off := auxIntToInt32(l.AuxInt)
|
||||
sym := auxToSym(l.Aux)
|
||||
|
|
@ -53140,7 +53085,7 @@ func rewriteValueAMD64_OpAMD64VPCMPUQMasked256(v *Value) bool {
|
|||
ptr := l.Args[0]
|
||||
mask := v_2
|
||||
if !(canMergeLoad(v, l) && clobber(l)) {
|
||||
continue
|
||||
break
|
||||
}
|
||||
v.reset(OpAMD64VPCMPUQMasked256load)
|
||||
v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
|
||||
|
|
@ -53148,8 +53093,6 @@ func rewriteValueAMD64_OpAMD64VPCMPUQMasked256(v *Value) bool {
|
|||
v.AddArg4(x, ptr, mask, mem)
|
||||
return true
|
||||
}
|
||||
break
|
||||
}
|
||||
return false
|
||||
}
|
||||
func rewriteValueAMD64_OpAMD64VPCMPUQMasked512(v *Value) bool {
|
||||
|
|
@ -53161,11 +53104,10 @@ func rewriteValueAMD64_OpAMD64VPCMPUQMasked512(v *Value) bool {
|
|||
// result: (VPCMPUQMasked512load {sym} [makeValAndOff(int32(int8(c)),off)] x ptr mask mem)
|
||||
for {
|
||||
c := auxIntToUint8(v.AuxInt)
|
||||
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
|
||||
x := v_0
|
||||
l := v_1
|
||||
if l.Op != OpAMD64VMOVDQUload512 {
|
||||
continue
|
||||
break
|
||||
}
|
||||
off := auxIntToInt32(l.AuxInt)
|
||||
sym := auxToSym(l.Aux)
|
||||
|
|
@ -53173,7 +53115,7 @@ func rewriteValueAMD64_OpAMD64VPCMPUQMasked512(v *Value) bool {
|
|||
ptr := l.Args[0]
|
||||
mask := v_2
|
||||
if !(canMergeLoad(v, l) && clobber(l)) {
|
||||
continue
|
||||
break
|
||||
}
|
||||
v.reset(OpAMD64VPCMPUQMasked512load)
|
||||
v.AuxInt = valAndOffToAuxInt(makeValAndOff(int32(int8(c)), off))
|
||||
|
|
@ -53181,8 +53123,6 @@ func rewriteValueAMD64_OpAMD64VPCMPUQMasked512(v *Value) bool {
|
|||
v.AddArg4(x, ptr, mask, mem)
|
||||
return true
|
||||
}
|
||||
break
|
||||
}
|
||||
return false
|
||||
}
|
||||
func rewriteValueAMD64_OpAMD64VPDPBUSD512(v *Value) bool {
|
||||
|
|
|
|||
|
|
@ -98,6 +98,10 @@ func writeSIMDMachineOps(ops []Operation) *bytes.Buffer {
|
|||
mOpOrder = append(mOpOrder, asm)
|
||||
continue
|
||||
}
|
||||
if !op.Commutative && other.Commutative { // if there's a non-commutative version of the op, it wins.
|
||||
best[asm] = op
|
||||
continue
|
||||
}
|
||||
// see if "op" is better than "other"
|
||||
if countOverrides(op.In)+countOverrides(op.Out) < countOverrides(other.In)+countOverrides(other.Out) {
|
||||
best[asm] = op
|
||||
|
|
|
|||
|
|
@ -666,6 +666,12 @@ func dedupGodef(ops []Operation) ([]Operation, error) {
|
|||
if i.MemFeatures == nil && j.MemFeatures != nil {
|
||||
return 1
|
||||
}
|
||||
if i.Commutative != j.Commutative {
|
||||
if j.Commutative {
|
||||
return -1
|
||||
}
|
||||
return 1
|
||||
}
|
||||
// Their order does not matter anymore, at least for now.
|
||||
return 0
|
||||
})
|
||||
|
|
|
|||
|
|
@ -10,17 +10,17 @@
|
|||
constImm: 0
|
||||
commutative: true
|
||||
documentation: !string |-
|
||||
// NAME compares for equality.
|
||||
// NAME returns x equals y, elementwise.
|
||||
- go: Less
|
||||
constImm: 1
|
||||
commutative: false
|
||||
documentation: !string |-
|
||||
// NAME compares for less than.
|
||||
// NAME returns x less-than y, elementwise.
|
||||
- go: LessEqual
|
||||
constImm: 2
|
||||
commutative: false
|
||||
documentation: !string |-
|
||||
// NAME compares for less than or equal.
|
||||
// NAME returns x less-than-or-equals y, elementwise.
|
||||
- go: IsNan # For float only.
|
||||
constImm: 3
|
||||
commutative: true
|
||||
|
|
@ -30,14 +30,14 @@
|
|||
constImm: 4
|
||||
commutative: true
|
||||
documentation: !string |-
|
||||
// NAME compares for inequality.
|
||||
// NAME returns x not-equals y, elementwise.
|
||||
- go: GreaterEqual
|
||||
constImm: 13
|
||||
commutative: false
|
||||
documentation: !string |-
|
||||
// NAME compares for greater than or equal.
|
||||
// NAME returns x greater-than-or-equals y, elementwise.
|
||||
- go: Greater
|
||||
constImm: 14
|
||||
commutative: false
|
||||
documentation: !string |-
|
||||
// NAME compares for greater than.
|
||||
// NAME returns x greater-than y, elementwise.
|
||||
|
|
|
|||
|
|
@ -2022,152 +2022,152 @@ func (x Int8x64) DotProductQuadrupleSaturated(y Uint8x64) Int32x16
|
|||
|
||||
/* Equal */
|
||||
|
||||
// Equal compares for equality.
|
||||
// Equal returns x equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPEQB, CPU Feature: AVX
|
||||
func (x Int8x16) Equal(y Int8x16) Mask8x16
|
||||
|
||||
// Equal compares for equality.
|
||||
// Equal returns x equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPEQB, CPU Feature: AVX2
|
||||
func (x Int8x32) Equal(y Int8x32) Mask8x32
|
||||
|
||||
// Equal compares for equality.
|
||||
// Equal returns x equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPEQB, CPU Feature: AVX512
|
||||
func (x Int8x64) Equal(y Int8x64) Mask8x64
|
||||
|
||||
// Equal compares for equality.
|
||||
// Equal returns x equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPEQW, CPU Feature: AVX
|
||||
func (x Int16x8) Equal(y Int16x8) Mask16x8
|
||||
|
||||
// Equal compares for equality.
|
||||
// Equal returns x equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPEQW, CPU Feature: AVX2
|
||||
func (x Int16x16) Equal(y Int16x16) Mask16x16
|
||||
|
||||
// Equal compares for equality.
|
||||
// Equal returns x equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPEQW, CPU Feature: AVX512
|
||||
func (x Int16x32) Equal(y Int16x32) Mask16x32
|
||||
|
||||
// Equal compares for equality.
|
||||
// Equal returns x equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPEQD, CPU Feature: AVX
|
||||
func (x Int32x4) Equal(y Int32x4) Mask32x4
|
||||
|
||||
// Equal compares for equality.
|
||||
// Equal returns x equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPEQD, CPU Feature: AVX2
|
||||
func (x Int32x8) Equal(y Int32x8) Mask32x8
|
||||
|
||||
// Equal compares for equality.
|
||||
// Equal returns x equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPEQD, CPU Feature: AVX512
|
||||
func (x Int32x16) Equal(y Int32x16) Mask32x16
|
||||
|
||||
// Equal compares for equality.
|
||||
// Equal returns x equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPEQQ, CPU Feature: AVX
|
||||
func (x Int64x2) Equal(y Int64x2) Mask64x2
|
||||
|
||||
// Equal compares for equality.
|
||||
// Equal returns x equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPEQQ, CPU Feature: AVX2
|
||||
func (x Int64x4) Equal(y Int64x4) Mask64x4
|
||||
|
||||
// Equal compares for equality.
|
||||
// Equal returns x equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPEQQ, CPU Feature: AVX512
|
||||
func (x Int64x8) Equal(y Int64x8) Mask64x8
|
||||
|
||||
// Equal compares for equality.
|
||||
// Equal returns x equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPEQB, CPU Feature: AVX
|
||||
func (x Uint8x16) Equal(y Uint8x16) Mask8x16
|
||||
|
||||
// Equal compares for equality.
|
||||
// Equal returns x equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPEQB, CPU Feature: AVX2
|
||||
func (x Uint8x32) Equal(y Uint8x32) Mask8x32
|
||||
|
||||
// Equal compares for equality.
|
||||
// Equal returns x equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPEQB, CPU Feature: AVX512
|
||||
func (x Uint8x64) Equal(y Uint8x64) Mask8x64
|
||||
|
||||
// Equal compares for equality.
|
||||
// Equal returns x equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPEQW, CPU Feature: AVX
|
||||
func (x Uint16x8) Equal(y Uint16x8) Mask16x8
|
||||
|
||||
// Equal compares for equality.
|
||||
// Equal returns x equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPEQW, CPU Feature: AVX2
|
||||
func (x Uint16x16) Equal(y Uint16x16) Mask16x16
|
||||
|
||||
// Equal compares for equality.
|
||||
// Equal returns x equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPEQW, CPU Feature: AVX512
|
||||
func (x Uint16x32) Equal(y Uint16x32) Mask16x32
|
||||
|
||||
// Equal compares for equality.
|
||||
// Equal returns x equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPEQD, CPU Feature: AVX
|
||||
func (x Uint32x4) Equal(y Uint32x4) Mask32x4
|
||||
|
||||
// Equal compares for equality.
|
||||
// Equal returns x equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPEQD, CPU Feature: AVX2
|
||||
func (x Uint32x8) Equal(y Uint32x8) Mask32x8
|
||||
|
||||
// Equal compares for equality.
|
||||
// Equal returns x equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPEQD, CPU Feature: AVX512
|
||||
func (x Uint32x16) Equal(y Uint32x16) Mask32x16
|
||||
|
||||
// Equal compares for equality.
|
||||
// Equal returns x equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPEQQ, CPU Feature: AVX
|
||||
func (x Uint64x2) Equal(y Uint64x2) Mask64x2
|
||||
|
||||
// Equal compares for equality.
|
||||
// Equal returns x equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPEQQ, CPU Feature: AVX2
|
||||
func (x Uint64x4) Equal(y Uint64x4) Mask64x4
|
||||
|
||||
// Equal compares for equality.
|
||||
// Equal returns x equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPEQQ, CPU Feature: AVX512
|
||||
func (x Uint64x8) Equal(y Uint64x8) Mask64x8
|
||||
|
||||
// Equal compares for equality.
|
||||
// Equal returns x equals y, elementwise.
|
||||
//
|
||||
// Asm: VCMPPS, CPU Feature: AVX
|
||||
func (x Float32x4) Equal(y Float32x4) Mask32x4
|
||||
|
||||
// Equal compares for equality.
|
||||
// Equal returns x equals y, elementwise.
|
||||
//
|
||||
// Asm: VCMPPS, CPU Feature: AVX
|
||||
func (x Float32x8) Equal(y Float32x8) Mask32x8
|
||||
|
||||
// Equal compares for equality.
|
||||
// Equal returns x equals y, elementwise.
|
||||
//
|
||||
// Asm: VCMPPS, CPU Feature: AVX512
|
||||
func (x Float32x16) Equal(y Float32x16) Mask32x16
|
||||
|
||||
// Equal compares for equality.
|
||||
// Equal returns x equals y, elementwise.
|
||||
//
|
||||
// Asm: VCMPPD, CPU Feature: AVX
|
||||
func (x Float64x2) Equal(y Float64x2) Mask64x2
|
||||
|
||||
// Equal compares for equality.
|
||||
// Equal returns x equals y, elementwise.
|
||||
//
|
||||
// Asm: VCMPPD, CPU Feature: AVX
|
||||
func (x Float64x4) Equal(y Float64x4) Mask64x4
|
||||
|
||||
// Equal compares for equality.
|
||||
// Equal returns x equals y, elementwise.
|
||||
//
|
||||
// Asm: VCMPPD, CPU Feature: AVX512
|
||||
func (x Float64x8) Equal(y Float64x8) Mask64x8
|
||||
|
|
@ -3081,184 +3081,184 @@ func (x Uint64x8) GetLo() Uint64x4
|
|||
|
||||
/* Greater */
|
||||
|
||||
// Greater compares for greater than.
|
||||
// Greater returns x greater-than y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPGTB, CPU Feature: AVX
|
||||
func (x Int8x16) Greater(y Int8x16) Mask8x16
|
||||
|
||||
// Greater compares for greater than.
|
||||
// Greater returns x greater-than y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPGTB, CPU Feature: AVX2
|
||||
func (x Int8x32) Greater(y Int8x32) Mask8x32
|
||||
|
||||
// Greater compares for greater than.
|
||||
// Greater returns x greater-than y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPGTB, CPU Feature: AVX512
|
||||
func (x Int8x64) Greater(y Int8x64) Mask8x64
|
||||
|
||||
// Greater compares for greater than.
|
||||
// Greater returns x greater-than y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPGTW, CPU Feature: AVX
|
||||
func (x Int16x8) Greater(y Int16x8) Mask16x8
|
||||
|
||||
// Greater compares for greater than.
|
||||
// Greater returns x greater-than y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPGTW, CPU Feature: AVX2
|
||||
func (x Int16x16) Greater(y Int16x16) Mask16x16
|
||||
|
||||
// Greater compares for greater than.
|
||||
// Greater returns x greater-than y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPGTW, CPU Feature: AVX512
|
||||
func (x Int16x32) Greater(y Int16x32) Mask16x32
|
||||
|
||||
// Greater compares for greater than.
|
||||
// Greater returns x greater-than y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPGTD, CPU Feature: AVX
|
||||
func (x Int32x4) Greater(y Int32x4) Mask32x4
|
||||
|
||||
// Greater compares for greater than.
|
||||
// Greater returns x greater-than y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPGTD, CPU Feature: AVX2
|
||||
func (x Int32x8) Greater(y Int32x8) Mask32x8
|
||||
|
||||
// Greater compares for greater than.
|
||||
// Greater returns x greater-than y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPGTD, CPU Feature: AVX512
|
||||
func (x Int32x16) Greater(y Int32x16) Mask32x16
|
||||
|
||||
// Greater compares for greater than.
|
||||
// Greater returns x greater-than y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPGTQ, CPU Feature: AVX
|
||||
func (x Int64x2) Greater(y Int64x2) Mask64x2
|
||||
|
||||
// Greater compares for greater than.
|
||||
// Greater returns x greater-than y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPGTQ, CPU Feature: AVX2
|
||||
func (x Int64x4) Greater(y Int64x4) Mask64x4
|
||||
|
||||
// Greater compares for greater than.
|
||||
// Greater returns x greater-than y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPGTQ, CPU Feature: AVX512
|
||||
func (x Int64x8) Greater(y Int64x8) Mask64x8
|
||||
|
||||
// Greater compares for greater than.
|
||||
// Greater returns x greater-than y, elementwise.
|
||||
//
|
||||
// Asm: VCMPPS, CPU Feature: AVX
|
||||
func (x Float32x4) Greater(y Float32x4) Mask32x4
|
||||
|
||||
// Greater compares for greater than.
|
||||
// Greater returns x greater-than y, elementwise.
|
||||
//
|
||||
// Asm: VCMPPS, CPU Feature: AVX
|
||||
func (x Float32x8) Greater(y Float32x8) Mask32x8
|
||||
|
||||
// Greater compares for greater than.
|
||||
// Greater returns x greater-than y, elementwise.
|
||||
//
|
||||
// Asm: VCMPPS, CPU Feature: AVX512
|
||||
func (x Float32x16) Greater(y Float32x16) Mask32x16
|
||||
|
||||
// Greater compares for greater than.
|
||||
// Greater returns x greater-than y, elementwise.
|
||||
//
|
||||
// Asm: VCMPPD, CPU Feature: AVX
|
||||
func (x Float64x2) Greater(y Float64x2) Mask64x2
|
||||
|
||||
// Greater compares for greater than.
|
||||
// Greater returns x greater-than y, elementwise.
|
||||
//
|
||||
// Asm: VCMPPD, CPU Feature: AVX
|
||||
func (x Float64x4) Greater(y Float64x4) Mask64x4
|
||||
|
||||
// Greater compares for greater than.
|
||||
// Greater returns x greater-than y, elementwise.
|
||||
//
|
||||
// Asm: VCMPPD, CPU Feature: AVX512
|
||||
func (x Float64x8) Greater(y Float64x8) Mask64x8
|
||||
|
||||
// Greater compares for greater than.
|
||||
// Greater returns x greater-than y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPUB, CPU Feature: AVX512
|
||||
func (x Uint8x64) Greater(y Uint8x64) Mask8x64
|
||||
|
||||
// Greater compares for greater than.
|
||||
// Greater returns x greater-than y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPUW, CPU Feature: AVX512
|
||||
func (x Uint16x32) Greater(y Uint16x32) Mask16x32
|
||||
|
||||
// Greater compares for greater than.
|
||||
// Greater returns x greater-than y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPUD, CPU Feature: AVX512
|
||||
func (x Uint32x16) Greater(y Uint32x16) Mask32x16
|
||||
|
||||
// Greater compares for greater than.
|
||||
// Greater returns x greater-than y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPUQ, CPU Feature: AVX512
|
||||
func (x Uint64x8) Greater(y Uint64x8) Mask64x8
|
||||
|
||||
/* GreaterEqual */
|
||||
|
||||
// GreaterEqual compares for greater than or equal.
|
||||
// GreaterEqual returns x greater-than-or-equals y, elementwise.
|
||||
//
|
||||
// Asm: VCMPPS, CPU Feature: AVX
|
||||
func (x Float32x4) GreaterEqual(y Float32x4) Mask32x4
|
||||
|
||||
// GreaterEqual compares for greater than or equal.
|
||||
// GreaterEqual returns x greater-than-or-equals y, elementwise.
|
||||
//
|
||||
// Asm: VCMPPS, CPU Feature: AVX
|
||||
func (x Float32x8) GreaterEqual(y Float32x8) Mask32x8
|
||||
|
||||
// GreaterEqual compares for greater than or equal.
|
||||
// GreaterEqual returns x greater-than-or-equals y, elementwise.
|
||||
//
|
||||
// Asm: VCMPPS, CPU Feature: AVX512
|
||||
func (x Float32x16) GreaterEqual(y Float32x16) Mask32x16
|
||||
|
||||
// GreaterEqual compares for greater than or equal.
|
||||
// GreaterEqual returns x greater-than-or-equals y, elementwise.
|
||||
//
|
||||
// Asm: VCMPPD, CPU Feature: AVX
|
||||
func (x Float64x2) GreaterEqual(y Float64x2) Mask64x2
|
||||
|
||||
// GreaterEqual compares for greater than or equal.
|
||||
// GreaterEqual returns x greater-than-or-equals y, elementwise.
|
||||
//
|
||||
// Asm: VCMPPD, CPU Feature: AVX
|
||||
func (x Float64x4) GreaterEqual(y Float64x4) Mask64x4
|
||||
|
||||
// GreaterEqual compares for greater than or equal.
|
||||
// GreaterEqual returns x greater-than-or-equals y, elementwise.
|
||||
//
|
||||
// Asm: VCMPPD, CPU Feature: AVX512
|
||||
func (x Float64x8) GreaterEqual(y Float64x8) Mask64x8
|
||||
|
||||
// GreaterEqual compares for greater than or equal.
|
||||
// GreaterEqual returns x greater-than-or-equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPB, CPU Feature: AVX512
|
||||
func (x Int8x64) GreaterEqual(y Int8x64) Mask8x64
|
||||
|
||||
// GreaterEqual compares for greater than or equal.
|
||||
// GreaterEqual returns x greater-than-or-equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPW, CPU Feature: AVX512
|
||||
func (x Int16x32) GreaterEqual(y Int16x32) Mask16x32
|
||||
|
||||
// GreaterEqual compares for greater than or equal.
|
||||
// GreaterEqual returns x greater-than-or-equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPD, CPU Feature: AVX512
|
||||
func (x Int32x16) GreaterEqual(y Int32x16) Mask32x16
|
||||
|
||||
// GreaterEqual compares for greater than or equal.
|
||||
// GreaterEqual returns x greater-than-or-equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPQ, CPU Feature: AVX512
|
||||
func (x Int64x8) GreaterEqual(y Int64x8) Mask64x8
|
||||
|
||||
// GreaterEqual compares for greater than or equal.
|
||||
// GreaterEqual returns x greater-than-or-equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPUB, CPU Feature: AVX512
|
||||
func (x Uint8x64) GreaterEqual(y Uint8x64) Mask8x64
|
||||
|
||||
// GreaterEqual compares for greater than or equal.
|
||||
// GreaterEqual returns x greater-than-or-equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPUW, CPU Feature: AVX512
|
||||
func (x Uint16x32) GreaterEqual(y Uint16x32) Mask16x32
|
||||
|
||||
// GreaterEqual compares for greater than or equal.
|
||||
// GreaterEqual returns x greater-than-or-equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPUD, CPU Feature: AVX512
|
||||
func (x Uint32x16) GreaterEqual(y Uint32x16) Mask32x16
|
||||
|
||||
// GreaterEqual compares for greater than or equal.
|
||||
// GreaterEqual returns x greater-than-or-equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPUQ, CPU Feature: AVX512
|
||||
func (x Uint64x8) GreaterEqual(y Uint64x8) Mask64x8
|
||||
|
|
@ -3547,144 +3547,144 @@ func (x Uint64x8) LeadingZeros() Uint64x8
|
|||
|
||||
/* Less */
|
||||
|
||||
// Less compares for less than.
|
||||
// Less returns x less-than y, elementwise.
|
||||
//
|
||||
// Asm: VCMPPS, CPU Feature: AVX
|
||||
func (x Float32x4) Less(y Float32x4) Mask32x4
|
||||
|
||||
// Less compares for less than.
|
||||
// Less returns x less-than y, elementwise.
|
||||
//
|
||||
// Asm: VCMPPS, CPU Feature: AVX
|
||||
func (x Float32x8) Less(y Float32x8) Mask32x8
|
||||
|
||||
// Less compares for less than.
|
||||
// Less returns x less-than y, elementwise.
|
||||
//
|
||||
// Asm: VCMPPS, CPU Feature: AVX512
|
||||
func (x Float32x16) Less(y Float32x16) Mask32x16
|
||||
|
||||
// Less compares for less than.
|
||||
// Less returns x less-than y, elementwise.
|
||||
//
|
||||
// Asm: VCMPPD, CPU Feature: AVX
|
||||
func (x Float64x2) Less(y Float64x2) Mask64x2
|
||||
|
||||
// Less compares for less than.
|
||||
// Less returns x less-than y, elementwise.
|
||||
//
|
||||
// Asm: VCMPPD, CPU Feature: AVX
|
||||
func (x Float64x4) Less(y Float64x4) Mask64x4
|
||||
|
||||
// Less compares for less than.
|
||||
// Less returns x less-than y, elementwise.
|
||||
//
|
||||
// Asm: VCMPPD, CPU Feature: AVX512
|
||||
func (x Float64x8) Less(y Float64x8) Mask64x8
|
||||
|
||||
// Less compares for less than.
|
||||
// Less returns x less-than y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPB, CPU Feature: AVX512
|
||||
func (x Int8x64) Less(y Int8x64) Mask8x64
|
||||
|
||||
// Less compares for less than.
|
||||
// Less returns x less-than y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPW, CPU Feature: AVX512
|
||||
func (x Int16x32) Less(y Int16x32) Mask16x32
|
||||
|
||||
// Less compares for less than.
|
||||
// Less returns x less-than y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPD, CPU Feature: AVX512
|
||||
func (x Int32x16) Less(y Int32x16) Mask32x16
|
||||
|
||||
// Less compares for less than.
|
||||
// Less returns x less-than y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPQ, CPU Feature: AVX512
|
||||
func (x Int64x8) Less(y Int64x8) Mask64x8
|
||||
|
||||
// Less compares for less than.
|
||||
// Less returns x less-than y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPUB, CPU Feature: AVX512
|
||||
func (x Uint8x64) Less(y Uint8x64) Mask8x64
|
||||
|
||||
// Less compares for less than.
|
||||
// Less returns x less-than y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPUW, CPU Feature: AVX512
|
||||
func (x Uint16x32) Less(y Uint16x32) Mask16x32
|
||||
|
||||
// Less compares for less than.
|
||||
// Less returns x less-than y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPUD, CPU Feature: AVX512
|
||||
func (x Uint32x16) Less(y Uint32x16) Mask32x16
|
||||
|
||||
// Less compares for less than.
|
||||
// Less returns x less-than y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPUQ, CPU Feature: AVX512
|
||||
func (x Uint64x8) Less(y Uint64x8) Mask64x8
|
||||
|
||||
/* LessEqual */
|
||||
|
||||
// LessEqual compares for less than or equal.
|
||||
// LessEqual returns x less-than-or-equals y, elementwise.
|
||||
//
|
||||
// Asm: VCMPPS, CPU Feature: AVX
|
||||
func (x Float32x4) LessEqual(y Float32x4) Mask32x4
|
||||
|
||||
// LessEqual compares for less than or equal.
|
||||
// LessEqual returns x less-than-or-equals y, elementwise.
|
||||
//
|
||||
// Asm: VCMPPS, CPU Feature: AVX
|
||||
func (x Float32x8) LessEqual(y Float32x8) Mask32x8
|
||||
|
||||
// LessEqual compares for less than or equal.
|
||||
// LessEqual returns x less-than-or-equals y, elementwise.
|
||||
//
|
||||
// Asm: VCMPPS, CPU Feature: AVX512
|
||||
func (x Float32x16) LessEqual(y Float32x16) Mask32x16
|
||||
|
||||
// LessEqual compares for less than or equal.
|
||||
// LessEqual returns x less-than-or-equals y, elementwise.
|
||||
//
|
||||
// Asm: VCMPPD, CPU Feature: AVX
|
||||
func (x Float64x2) LessEqual(y Float64x2) Mask64x2
|
||||
|
||||
// LessEqual compares for less than or equal.
|
||||
// LessEqual returns x less-than-or-equals y, elementwise.
|
||||
//
|
||||
// Asm: VCMPPD, CPU Feature: AVX
|
||||
func (x Float64x4) LessEqual(y Float64x4) Mask64x4
|
||||
|
||||
// LessEqual compares for less than or equal.
|
||||
// LessEqual returns x less-than-or-equals y, elementwise.
|
||||
//
|
||||
// Asm: VCMPPD, CPU Feature: AVX512
|
||||
func (x Float64x8) LessEqual(y Float64x8) Mask64x8
|
||||
|
||||
// LessEqual compares for less than or equal.
|
||||
// LessEqual returns x less-than-or-equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPB, CPU Feature: AVX512
|
||||
func (x Int8x64) LessEqual(y Int8x64) Mask8x64
|
||||
|
||||
// LessEqual compares for less than or equal.
|
||||
// LessEqual returns x less-than-or-equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPW, CPU Feature: AVX512
|
||||
func (x Int16x32) LessEqual(y Int16x32) Mask16x32
|
||||
|
||||
// LessEqual compares for less than or equal.
|
||||
// LessEqual returns x less-than-or-equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPD, CPU Feature: AVX512
|
||||
func (x Int32x16) LessEqual(y Int32x16) Mask32x16
|
||||
|
||||
// LessEqual compares for less than or equal.
|
||||
// LessEqual returns x less-than-or-equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPQ, CPU Feature: AVX512
|
||||
func (x Int64x8) LessEqual(y Int64x8) Mask64x8
|
||||
|
||||
// LessEqual compares for less than or equal.
|
||||
// LessEqual returns x less-than-or-equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPUB, CPU Feature: AVX512
|
||||
func (x Uint8x64) LessEqual(y Uint8x64) Mask8x64
|
||||
|
||||
// LessEqual compares for less than or equal.
|
||||
// LessEqual returns x less-than-or-equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPUW, CPU Feature: AVX512
|
||||
func (x Uint16x32) LessEqual(y Uint16x32) Mask16x32
|
||||
|
||||
// LessEqual compares for less than or equal.
|
||||
// LessEqual returns x less-than-or-equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPUD, CPU Feature: AVX512
|
||||
func (x Uint32x16) LessEqual(y Uint32x16) Mask32x16
|
||||
|
||||
// LessEqual compares for less than or equal.
|
||||
// LessEqual returns x less-than-or-equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPUQ, CPU Feature: AVX512
|
||||
func (x Uint64x8) LessEqual(y Uint64x8) Mask64x8
|
||||
|
|
@ -4271,72 +4271,72 @@ func (x Float64x8) MulSubAdd(y Float64x8, z Float64x8) Float64x8
|
|||
|
||||
/* NotEqual */
|
||||
|
||||
// NotEqual compares for inequality.
|
||||
// NotEqual returns x not-equals y, elementwise.
|
||||
//
|
||||
// Asm: VCMPPS, CPU Feature: AVX
|
||||
func (x Float32x4) NotEqual(y Float32x4) Mask32x4
|
||||
|
||||
// NotEqual compares for inequality.
|
||||
// NotEqual returns x not-equals y, elementwise.
|
||||
//
|
||||
// Asm: VCMPPS, CPU Feature: AVX
|
||||
func (x Float32x8) NotEqual(y Float32x8) Mask32x8
|
||||
|
||||
// NotEqual compares for inequality.
|
||||
// NotEqual returns x not-equals y, elementwise.
|
||||
//
|
||||
// Asm: VCMPPS, CPU Feature: AVX512
|
||||
func (x Float32x16) NotEqual(y Float32x16) Mask32x16
|
||||
|
||||
// NotEqual compares for inequality.
|
||||
// NotEqual returns x not-equals y, elementwise.
|
||||
//
|
||||
// Asm: VCMPPD, CPU Feature: AVX
|
||||
func (x Float64x2) NotEqual(y Float64x2) Mask64x2
|
||||
|
||||
// NotEqual compares for inequality.
|
||||
// NotEqual returns x not-equals y, elementwise.
|
||||
//
|
||||
// Asm: VCMPPD, CPU Feature: AVX
|
||||
func (x Float64x4) NotEqual(y Float64x4) Mask64x4
|
||||
|
||||
// NotEqual compares for inequality.
|
||||
// NotEqual returns x not-equals y, elementwise.
|
||||
//
|
||||
// Asm: VCMPPD, CPU Feature: AVX512
|
||||
func (x Float64x8) NotEqual(y Float64x8) Mask64x8
|
||||
|
||||
// NotEqual compares for inequality.
|
||||
// NotEqual returns x not-equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPB, CPU Feature: AVX512
|
||||
func (x Int8x64) NotEqual(y Int8x64) Mask8x64
|
||||
|
||||
// NotEqual compares for inequality.
|
||||
// NotEqual returns x not-equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPW, CPU Feature: AVX512
|
||||
func (x Int16x32) NotEqual(y Int16x32) Mask16x32
|
||||
|
||||
// NotEqual compares for inequality.
|
||||
// NotEqual returns x not-equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPD, CPU Feature: AVX512
|
||||
func (x Int32x16) NotEqual(y Int32x16) Mask32x16
|
||||
|
||||
// NotEqual compares for inequality.
|
||||
// NotEqual returns x not-equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPQ, CPU Feature: AVX512
|
||||
func (x Int64x8) NotEqual(y Int64x8) Mask64x8
|
||||
|
||||
// NotEqual compares for inequality.
|
||||
// NotEqual returns x not-equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPUB, CPU Feature: AVX512
|
||||
func (x Uint8x64) NotEqual(y Uint8x64) Mask8x64
|
||||
|
||||
// NotEqual compares for inequality.
|
||||
// NotEqual returns x not-equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPUW, CPU Feature: AVX512
|
||||
func (x Uint16x32) NotEqual(y Uint16x32) Mask16x32
|
||||
|
||||
// NotEqual compares for inequality.
|
||||
// NotEqual returns x not-equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPUD, CPU Feature: AVX512
|
||||
func (x Uint32x16) NotEqual(y Uint32x16) Mask32x16
|
||||
|
||||
// NotEqual compares for inequality.
|
||||
// NotEqual returns x not-equals y, elementwise.
|
||||
//
|
||||
// Asm: VPCMPUQ, CPU Feature: AVX512
|
||||
func (x Uint64x8) NotEqual(y Uint64x8) Mask64x8
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue