// Licensed to the Apache Software Foundation (ASF) under one // or more contributor license agreements. See the NOTICE file // distributed with this work for additional information // regarding copyright ownership. The ASF licenses this file // to you under the Apache License, Version 2.0 (the // "License"); you may not use this file except in compliance // with the License. You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. //go:build !noasm // +build !noasm package utils import ( "golang.org/x/sys/cpu" ) var ( {{ $typelist := .In }} {{range .In}} {{ $src := .Type -}} {{ $srcName := .Name -}} {{ range $typelist -}} {{ $dest := .Type -}} {{ $destName := .Name -}} Transpose{{$srcName}}{{$destName}} func([]{{$src}}, []{{$dest}}, []int32) {{end}} {{end}} ) func init() { if cpu.X86.HasAVX2 { {{ $typelist := .In }} {{range .In}} {{ $src := .Type -}} {{ $srcName := .Name -}} {{ range $typelist -}} {{ $dest := .Type -}} {{ $destName := .Name -}} Transpose{{$srcName}}{{$destName}} = transpose{{ $srcName }}{{ $destName }}avx2 {{end}} {{end}} } else if cpu.X86.HasSSE42 { {{ $typelist := .In }} {{range .In}} {{ $src := .Type -}} {{ $srcName := .Name -}} {{ range $typelist -}} {{ $dest := .Type -}} {{ $destName := .Name -}} Transpose{{$srcName}}{{$destName}} = transpose{{ $srcName }}{{ $destName }}sse4 {{end}} {{end}} } else { {{ $typelist := .In }} {{range .In}} {{ $src := .Type -}} {{ $srcName := .Name -}} {{ range $typelist -}} {{ $dest := .Type -}} {{ $destName := .Name -}} Transpose{{$srcName}}{{$destName}} = transpose{{ $srcName }}{{ $destName }} {{end}} {{end}} } }