]> git.proxmox.com Git - ceph.git/blame - ceph/src/arrow/go/arrow/memory/memory_avx2_amd64.go
import quincy 17.2.0
[ceph.git] / ceph / src / arrow / go / arrow / memory / memory_avx2_amd64.go
CommitLineData
1d09f67e
TL
1// Licensed to the Apache Software Foundation (ASF) under one
2// or more contributor license agreements. See the NOTICE file
3// distributed with this work for additional information
4// regarding copyright ownership. The ASF licenses this file
5// to you under the Apache License, Version 2.0 (the
6// "License"); you may not use this file except in compliance
7// with the License. You may obtain a copy of the License at
8//
9// http://www.apache.org/licenses/LICENSE-2.0
10//
11// Unless required by applicable law or agreed to in writing, software
12// distributed under the License is distributed on an "AS IS" BASIS,
13// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14// See the License for the specific language governing permissions and
15// limitations under the License.
16
17// +build !noasm
18
19package memory
20
21import "unsafe"
22
23//go:noescape
24func _memset_avx2(buf unsafe.Pointer, len, c uintptr)
25
26func memory_memset_avx2(buf []byte, c byte) {
27 if len(buf) == 0 {
28 return
29 }
30
31 var (
32 p1 = unsafe.Pointer(&buf[0])
33 p2 = uintptr(len(buf))
34 p3 = uintptr(c)
35 )
36 if len(buf) > 2000 || isMultipleOfPowerOf2(len(buf), 256) {
37 _memset_avx2(p1, p2, p3)
38 } else {
39 _memset_sse4(p1, p2, p3)
40 }
41}