mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
[dev.simd] cmd/compile: add masked merging ops and optimizations
This CL generates optimizations for masked variant of AVX512 instructions for patterns: x.Op(y).Merge(z, mask) => OpMasked(z, x, y mask), where OpMasked is resultInArg0. Change-Id: Ife7ccc9ddbf76ae921a085bd6a42b965da9bc179 Reviewed-on: https://go-review.googlesource.com/c/go/+/718160 Reviewed-by: David Chase <drchase@google.com> TryBot-Bypass: Junyang Shao <shaojunyang@google.com>
This commit is contained in:
parent
771a1dc216
commit
86b4fe31d9
15 changed files with 17367 additions and 627 deletions
|
|
@ -67,3 +67,13 @@ func simdFeatureGuardedMaskOpt() simd.Int16x16 {
|
|||
mask := simd.Mask16x16FromBits(5)
|
||||
return x.Add(y).Masked(mask) // amd64:`VPAND\s.*$`
|
||||
}
|
||||
|
||||
func simdMaskedMerge() simd.Int16x16 {
|
||||
var x, y simd.Int16x16
|
||||
if simd.HasAVX512() {
|
||||
mask := simd.Mask16x16FromBits(5)
|
||||
return x.Add(y).Merge(x, mask) // amd64:-`VPBLENDVB\s.*$`
|
||||
}
|
||||
mask := simd.Mask16x16FromBits(5)
|
||||
return x.Add(y).Merge(x, mask) // amd64:`VPBLENDVB\s.*$`
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue