Coverage Report

Created: 2026-07-23 18:52

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
be/src/util/pdep_unpack.h
Line
Count
Source
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,
12
// software distributed under the License is distributed on an
13
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
// KIND, either express or implied.  See the License for the
15
// specific language governing permissions and limitations
16
// under the License.
17
18
#pragma once
19
20
#if defined(__x86_64__) && (defined(__GNUC__) || defined(__clang__))
21
22
#include <immintrin.h>
23
24
#include <cstddef>
25
#include <cstdint>
26
#include <cstring>
27
#include <limits>
28
#include <type_traits>
29
#include <utility>
30
31
#include "common/config.h"
32
33
namespace doris {
34
35
class PdepUnpack {
36
public:
37
1.16M
    static bool is_supported() {
38
1.16M
        return config::enable_bmi2_optimizations && __builtin_cpu_supports("bmi2") &&
39
1.16M
               __builtin_cpu_supports("avx2");
40
1.16M
    }
41
42
    template <typename T, int BIT_WIDTH>
43
0
    static constexpr bool is_supported_type() {
44
0
        return BIT_WIDTH > 0 && BIT_WIDTH <= std::numeric_limits<T>::digits &&
45
0
               (std::is_same_v<T, uint8_t> || std::is_same_v<T, uint16_t> ||
46
0
                std::is_same_v<T, uint32_t>);
47
0
    }
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi0EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi1EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi2EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi3EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi4EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi5EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi6EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi7EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi8EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi9EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi10EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi11EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi12EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi13EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi14EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi15EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi16EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi17EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi18EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi19EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi20EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi21EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi22EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi23EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi24EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi25EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi26EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi27EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi28EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi29EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi30EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi31EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi32EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi33EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi34EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi35EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi36EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi37EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi38EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi39EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi40EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi41EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi42EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi43EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi44EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi45EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi46EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi47EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi48EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi49EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi50EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi51EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi52EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi53EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi54EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi55EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi56EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi57EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi58EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi59EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi60EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi61EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi62EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi63EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIjLi64EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi0EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi1EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi2EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi3EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi4EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi5EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi6EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi7EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi8EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi9EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi10EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi11EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi12EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi13EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi14EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi15EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi16EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi17EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi18EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi19EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi20EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi21EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi22EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi23EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi24EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi25EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi26EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi27EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi28EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi29EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi30EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi31EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi32EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi33EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi34EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi35EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi36EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi37EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi38EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi39EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi40EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi41EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi42EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi43EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi44EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi45EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi46EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi47EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi48EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi49EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi50EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi51EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi52EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi53EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi54EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi55EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi56EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi57EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi58EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi59EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi60EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi61EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi62EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi63EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeItLi64EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi0EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi1EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi2EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi3EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi4EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi5EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi6EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi7EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi8EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi9EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi10EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi11EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi12EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi13EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi14EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi15EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi16EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi17EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi18EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi19EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi20EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi21EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi22EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi23EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi24EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi25EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi26EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi27EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi28EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi29EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi30EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi31EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi32EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi33EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi34EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi35EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi36EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi37EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi38EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi39EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi40EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi41EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi42EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi43EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi44EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi45EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi46EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi47EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi48EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi49EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi50EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi51EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi52EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi53EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi54EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi55EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi56EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi57EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi58EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi59EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi60EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi61EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi62EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi63EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack17is_supported_typeIhLi64EEEbv
48
49
    template <typename T, int BIT_WIDTH>
50
0
    static constexpr bool should_use() {
51
0
        // Keep the generic implementation available for benchmarking all supported widths, but
52
0
        // only select PDEP in the production path for widths below 16. These widths can use the
53
0
        // byte/word deposit layouts and the AVX2 widening specializations below. At 16 bits and
54
0
        // above, unpack32() falls back to multiple generic 64-bit PDEP groups per batch and
55
0
        // competes with efficient scalar specializations, including copy-like 16- and 32-bit
56
0
        // cases. Benchmarks with L1-, L2-, and larger working sets show non-monotonic results and
57
0
        // repeatable regressions for multiple high widths. Because the profitable high widths are
58
0
        // CPU- and working-set-dependent, an irregular per-width allowlist would not be portable;
59
0
        // use the scalar implementation conservatively instead.
60
0
        return is_supported_type<T, BIT_WIDTH>() && BIT_WIDTH < 16;
61
0
    }
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi0EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi1EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi2EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi3EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi4EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi5EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi6EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi7EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi8EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi9EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi10EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi11EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi12EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi13EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi14EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi15EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi16EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi17EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi18EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi19EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi20EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi21EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi22EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi23EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi24EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi25EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi26EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi27EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi28EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi29EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi30EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi31EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi32EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi33EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi34EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi35EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi36EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi37EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi38EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi39EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi40EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi41EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi42EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi43EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi44EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi45EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi46EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi47EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi48EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi49EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi50EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi51EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi52EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi53EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi54EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi55EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi56EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi57EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi58EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi59EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi60EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi61EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi62EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi63EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIjLi64EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi0EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi1EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi2EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi3EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi4EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi5EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi6EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi7EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi8EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi9EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi10EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi11EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi12EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi13EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi14EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi15EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi16EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi17EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi18EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi19EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi20EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi21EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi22EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi23EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi24EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi25EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi26EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi27EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi28EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi29EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi30EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi31EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi32EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi33EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi34EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi35EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi36EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi37EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi38EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi39EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi40EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi41EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi42EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi43EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi44EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi45EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi46EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi47EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi48EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi49EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi50EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi51EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi52EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi53EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi54EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi55EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi56EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi57EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi58EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi59EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi60EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi61EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi62EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi63EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useItLi64EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi0EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi1EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi2EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi3EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi4EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi5EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi6EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi7EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi8EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi9EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi10EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi11EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi12EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi13EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi14EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi15EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi16EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi17EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi18EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi19EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi20EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi21EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi22EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi23EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi24EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi25EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi26EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi27EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi28EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi29EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi30EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi31EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi32EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi33EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi34EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi35EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi36EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi37EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi38EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi39EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi40EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi41EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi42EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi43EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi44EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi45EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi46EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi47EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi48EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi49EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi50EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi51EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi52EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi53EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi54EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi55EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi56EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi57EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi58EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi59EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi60EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi61EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi62EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi63EEEbv
Unexecuted instantiation: _ZN5doris10PdepUnpack10should_useIhLi64EEEbv
62
63
    template <typename T, int BIT_WIDTH>
64
13.8M
    __attribute__((target("bmi2,avx2"))) static void unpack32(const uint8_t* input, T* output) {
65
13.8M
        static_assert(is_supported_type<T, BIT_WIDTH>());
66
13.8M
        if constexpr (std::is_same_v<T, uint8_t>) {
67
2.39k
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
68
3.10k
        } else if constexpr (std::is_same_v<T, uint16_t> && BIT_WIDTH <= 8) {
69
9.31k
            for (int group = 0; group < 2; ++group) {
70
6.20k
                const int first_value = group * 16;
71
6.20k
                const uint8_t* group_input = input + group * 2 * BIT_WIDTH;
72
6.20k
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(group_input),
73
6.20k
                                               pdep_mask<uint8_t, BIT_WIDTH>());
74
6.20k
                uint64_t expanded1 =
75
6.20k
                        _pdep_u64(load_packed_group<8 * BIT_WIDTH, 8 * BIT_WIDTH>(group_input),
76
6.20k
                                  pdep_mask<uint8_t, BIT_WIDTH>());
77
6.20k
                __m128i packed8 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
78
6.20k
                                                 static_cast<int64_t>(expanded0));
79
6.20k
                __m256i unpacked16 = _mm256_cvtepu8_epi16(packed8);
80
6.20k
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked16);
81
6.20k
            }
82
7.71M
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 8) {
83
38.5M
            for (int group = 0; group < 4; ++group) {
84
30.8M
                uint64_t expanded =
85
30.8M
                        _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(input + group * BIT_WIDTH),
86
30.8M
                                  pdep_mask<uint8_t, BIT_WIDTH>());
87
30.8M
                __m256i unpacked32 = _mm256_cvtepu8_epi32(_mm_cvtsi64_si128(expanded));
88
30.8M
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + group * 8), unpacked32);
89
30.8M
            }
90
7.71M
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 15) {
91
30.5M
            for (int group = 0; group < 4; ++group) {
92
24.4M
                const int first_value = group * 8;
93
24.4M
                const uint8_t* group_input = input + group * BIT_WIDTH;
94
24.4M
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 4 * BIT_WIDTH>(group_input),
95
24.4M
                                               pdep_mask<uint16_t, BIT_WIDTH>());
96
24.4M
                uint64_t expanded1 =
97
24.4M
                        _pdep_u64(load_packed_group<4 * BIT_WIDTH, 4 * BIT_WIDTH>(group_input),
98
24.4M
                                  pdep_mask<uint16_t, BIT_WIDTH>());
99
24.4M
                __m128i packed16 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
100
24.4M
                                                  static_cast<int64_t>(expanded0));
101
24.4M
                __m256i unpacked32 = _mm256_cvtepu16_epi32(packed16);
102
24.4M
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked32);
103
24.4M
            }
104
6.10M
        } else {
105
84
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
106
84
        }
107
13.8M
    }
_ZN5doris10PdepUnpack8unpack32IjLi1EEEvPKhPT_
Line
Count
Source
64
11.3k
    __attribute__((target("bmi2,avx2"))) static void unpack32(const uint8_t* input, T* output) {
65
11.3k
        static_assert(is_supported_type<T, BIT_WIDTH>());
66
        if constexpr (std::is_same_v<T, uint8_t>) {
67
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
68
        } else if constexpr (std::is_same_v<T, uint16_t> && BIT_WIDTH <= 8) {
69
            for (int group = 0; group < 2; ++group) {
70
                const int first_value = group * 16;
71
                const uint8_t* group_input = input + group * 2 * BIT_WIDTH;
72
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(group_input),
73
                                               pdep_mask<uint8_t, BIT_WIDTH>());
74
                uint64_t expanded1 =
75
                        _pdep_u64(load_packed_group<8 * BIT_WIDTH, 8 * BIT_WIDTH>(group_input),
76
                                  pdep_mask<uint8_t, BIT_WIDTH>());
77
                __m128i packed8 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
78
                                                 static_cast<int64_t>(expanded0));
79
                __m256i unpacked16 = _mm256_cvtepu8_epi16(packed8);
80
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked16);
81
            }
82
11.3k
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 8) {
83
56.6k
            for (int group = 0; group < 4; ++group) {
84
45.3k
                uint64_t expanded =
85
45.3k
                        _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(input + group * BIT_WIDTH),
86
45.3k
                                  pdep_mask<uint8_t, BIT_WIDTH>());
87
45.3k
                __m256i unpacked32 = _mm256_cvtepu8_epi32(_mm_cvtsi64_si128(expanded));
88
45.3k
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + group * 8), unpacked32);
89
45.3k
            }
90
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 15) {
91
            for (int group = 0; group < 4; ++group) {
92
                const int first_value = group * 8;
93
                const uint8_t* group_input = input + group * BIT_WIDTH;
94
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 4 * BIT_WIDTH>(group_input),
95
                                               pdep_mask<uint16_t, BIT_WIDTH>());
96
                uint64_t expanded1 =
97
                        _pdep_u64(load_packed_group<4 * BIT_WIDTH, 4 * BIT_WIDTH>(group_input),
98
                                  pdep_mask<uint16_t, BIT_WIDTH>());
99
                __m128i packed16 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
100
                                                  static_cast<int64_t>(expanded0));
101
                __m256i unpacked32 = _mm256_cvtepu16_epi32(packed16);
102
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked32);
103
            }
104
        } else {
105
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
106
        }
107
11.3k
    }
_ZN5doris10PdepUnpack8unpack32IjLi2EEEvPKhPT_
Line
Count
Source
64
1.06M
    __attribute__((target("bmi2,avx2"))) static void unpack32(const uint8_t* input, T* output) {
65
1.06M
        static_assert(is_supported_type<T, BIT_WIDTH>());
66
        if constexpr (std::is_same_v<T, uint8_t>) {
67
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
68
        } else if constexpr (std::is_same_v<T, uint16_t> && BIT_WIDTH <= 8) {
69
            for (int group = 0; group < 2; ++group) {
70
                const int first_value = group * 16;
71
                const uint8_t* group_input = input + group * 2 * BIT_WIDTH;
72
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(group_input),
73
                                               pdep_mask<uint8_t, BIT_WIDTH>());
74
                uint64_t expanded1 =
75
                        _pdep_u64(load_packed_group<8 * BIT_WIDTH, 8 * BIT_WIDTH>(group_input),
76
                                  pdep_mask<uint8_t, BIT_WIDTH>());
77
                __m128i packed8 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
78
                                                 static_cast<int64_t>(expanded0));
79
                __m256i unpacked16 = _mm256_cvtepu8_epi16(packed8);
80
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked16);
81
            }
82
1.06M
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 8) {
83
5.30M
            for (int group = 0; group < 4; ++group) {
84
4.24M
                uint64_t expanded =
85
4.24M
                        _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(input + group * BIT_WIDTH),
86
4.24M
                                  pdep_mask<uint8_t, BIT_WIDTH>());
87
4.24M
                __m256i unpacked32 = _mm256_cvtepu8_epi32(_mm_cvtsi64_si128(expanded));
88
4.24M
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + group * 8), unpacked32);
89
4.24M
            }
90
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 15) {
91
            for (int group = 0; group < 4; ++group) {
92
                const int first_value = group * 8;
93
                const uint8_t* group_input = input + group * BIT_WIDTH;
94
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 4 * BIT_WIDTH>(group_input),
95
                                               pdep_mask<uint16_t, BIT_WIDTH>());
96
                uint64_t expanded1 =
97
                        _pdep_u64(load_packed_group<4 * BIT_WIDTH, 4 * BIT_WIDTH>(group_input),
98
                                  pdep_mask<uint16_t, BIT_WIDTH>());
99
                __m128i packed16 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
100
                                                  static_cast<int64_t>(expanded0));
101
                __m256i unpacked32 = _mm256_cvtepu16_epi32(packed16);
102
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked32);
103
            }
104
        } else {
105
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
106
        }
107
1.06M
    }
_ZN5doris10PdepUnpack8unpack32IjLi3EEEvPKhPT_
Line
Count
Source
64
1.43M
    __attribute__((target("bmi2,avx2"))) static void unpack32(const uint8_t* input, T* output) {
65
1.43M
        static_assert(is_supported_type<T, BIT_WIDTH>());
66
        if constexpr (std::is_same_v<T, uint8_t>) {
67
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
68
        } else if constexpr (std::is_same_v<T, uint16_t> && BIT_WIDTH <= 8) {
69
            for (int group = 0; group < 2; ++group) {
70
                const int first_value = group * 16;
71
                const uint8_t* group_input = input + group * 2 * BIT_WIDTH;
72
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(group_input),
73
                                               pdep_mask<uint8_t, BIT_WIDTH>());
74
                uint64_t expanded1 =
75
                        _pdep_u64(load_packed_group<8 * BIT_WIDTH, 8 * BIT_WIDTH>(group_input),
76
                                  pdep_mask<uint8_t, BIT_WIDTH>());
77
                __m128i packed8 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
78
                                                 static_cast<int64_t>(expanded0));
79
                __m256i unpacked16 = _mm256_cvtepu8_epi16(packed8);
80
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked16);
81
            }
82
1.43M
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 8) {
83
7.17M
            for (int group = 0; group < 4; ++group) {
84
5.73M
                uint64_t expanded =
85
5.73M
                        _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(input + group * BIT_WIDTH),
86
5.73M
                                  pdep_mask<uint8_t, BIT_WIDTH>());
87
5.73M
                __m256i unpacked32 = _mm256_cvtepu8_epi32(_mm_cvtsi64_si128(expanded));
88
5.73M
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + group * 8), unpacked32);
89
5.73M
            }
90
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 15) {
91
            for (int group = 0; group < 4; ++group) {
92
                const int first_value = group * 8;
93
                const uint8_t* group_input = input + group * BIT_WIDTH;
94
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 4 * BIT_WIDTH>(group_input),
95
                                               pdep_mask<uint16_t, BIT_WIDTH>());
96
                uint64_t expanded1 =
97
                        _pdep_u64(load_packed_group<4 * BIT_WIDTH, 4 * BIT_WIDTH>(group_input),
98
                                  pdep_mask<uint16_t, BIT_WIDTH>());
99
                __m128i packed16 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
100
                                                  static_cast<int64_t>(expanded0));
101
                __m256i unpacked32 = _mm256_cvtepu16_epi32(packed16);
102
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked32);
103
            }
104
        } else {
105
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
106
        }
107
1.43M
    }
_ZN5doris10PdepUnpack8unpack32IjLi4EEEvPKhPT_
Line
Count
Source
64
3.06M
    __attribute__((target("bmi2,avx2"))) static void unpack32(const uint8_t* input, T* output) {
65
3.06M
        static_assert(is_supported_type<T, BIT_WIDTH>());
66
        if constexpr (std::is_same_v<T, uint8_t>) {
67
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
68
        } else if constexpr (std::is_same_v<T, uint16_t> && BIT_WIDTH <= 8) {
69
            for (int group = 0; group < 2; ++group) {
70
                const int first_value = group * 16;
71
                const uint8_t* group_input = input + group * 2 * BIT_WIDTH;
72
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(group_input),
73
                                               pdep_mask<uint8_t, BIT_WIDTH>());
74
                uint64_t expanded1 =
75
                        _pdep_u64(load_packed_group<8 * BIT_WIDTH, 8 * BIT_WIDTH>(group_input),
76
                                  pdep_mask<uint8_t, BIT_WIDTH>());
77
                __m128i packed8 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
78
                                                 static_cast<int64_t>(expanded0));
79
                __m256i unpacked16 = _mm256_cvtepu8_epi16(packed8);
80
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked16);
81
            }
82
3.06M
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 8) {
83
15.3M
            for (int group = 0; group < 4; ++group) {
84
12.2M
                uint64_t expanded =
85
12.2M
                        _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(input + group * BIT_WIDTH),
86
12.2M
                                  pdep_mask<uint8_t, BIT_WIDTH>());
87
12.2M
                __m256i unpacked32 = _mm256_cvtepu8_epi32(_mm_cvtsi64_si128(expanded));
88
12.2M
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + group * 8), unpacked32);
89
12.2M
            }
90
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 15) {
91
            for (int group = 0; group < 4; ++group) {
92
                const int first_value = group * 8;
93
                const uint8_t* group_input = input + group * BIT_WIDTH;
94
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 4 * BIT_WIDTH>(group_input),
95
                                               pdep_mask<uint16_t, BIT_WIDTH>());
96
                uint64_t expanded1 =
97
                        _pdep_u64(load_packed_group<4 * BIT_WIDTH, 4 * BIT_WIDTH>(group_input),
98
                                  pdep_mask<uint16_t, BIT_WIDTH>());
99
                __m128i packed16 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
100
                                                  static_cast<int64_t>(expanded0));
101
                __m256i unpacked32 = _mm256_cvtepu16_epi32(packed16);
102
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked32);
103
            }
104
        } else {
105
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
106
        }
107
3.06M
    }
_ZN5doris10PdepUnpack8unpack32IjLi5EEEvPKhPT_
Line
Count
Source
64
10.6k
    __attribute__((target("bmi2,avx2"))) static void unpack32(const uint8_t* input, T* output) {
65
10.6k
        static_assert(is_supported_type<T, BIT_WIDTH>());
66
        if constexpr (std::is_same_v<T, uint8_t>) {
67
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
68
        } else if constexpr (std::is_same_v<T, uint16_t> && BIT_WIDTH <= 8) {
69
            for (int group = 0; group < 2; ++group) {
70
                const int first_value = group * 16;
71
                const uint8_t* group_input = input + group * 2 * BIT_WIDTH;
72
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(group_input),
73
                                               pdep_mask<uint8_t, BIT_WIDTH>());
74
                uint64_t expanded1 =
75
                        _pdep_u64(load_packed_group<8 * BIT_WIDTH, 8 * BIT_WIDTH>(group_input),
76
                                  pdep_mask<uint8_t, BIT_WIDTH>());
77
                __m128i packed8 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
78
                                                 static_cast<int64_t>(expanded0));
79
                __m256i unpacked16 = _mm256_cvtepu8_epi16(packed8);
80
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked16);
81
            }
82
10.6k
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 8) {
83
53.1k
            for (int group = 0; group < 4; ++group) {
84
42.5k
                uint64_t expanded =
85
42.5k
                        _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(input + group * BIT_WIDTH),
86
42.5k
                                  pdep_mask<uint8_t, BIT_WIDTH>());
87
42.5k
                __m256i unpacked32 = _mm256_cvtepu8_epi32(_mm_cvtsi64_si128(expanded));
88
42.5k
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + group * 8), unpacked32);
89
42.5k
            }
90
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 15) {
91
            for (int group = 0; group < 4; ++group) {
92
                const int first_value = group * 8;
93
                const uint8_t* group_input = input + group * BIT_WIDTH;
94
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 4 * BIT_WIDTH>(group_input),
95
                                               pdep_mask<uint16_t, BIT_WIDTH>());
96
                uint64_t expanded1 =
97
                        _pdep_u64(load_packed_group<4 * BIT_WIDTH, 4 * BIT_WIDTH>(group_input),
98
                                  pdep_mask<uint16_t, BIT_WIDTH>());
99
                __m128i packed16 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
100
                                                  static_cast<int64_t>(expanded0));
101
                __m256i unpacked32 = _mm256_cvtepu16_epi32(packed16);
102
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked32);
103
            }
104
        } else {
105
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
106
        }
107
10.6k
    }
_ZN5doris10PdepUnpack8unpack32IjLi6EEEvPKhPT_
Line
Count
Source
64
2.09M
    __attribute__((target("bmi2,avx2"))) static void unpack32(const uint8_t* input, T* output) {
65
2.09M
        static_assert(is_supported_type<T, BIT_WIDTH>());
66
        if constexpr (std::is_same_v<T, uint8_t>) {
67
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
68
        } else if constexpr (std::is_same_v<T, uint16_t> && BIT_WIDTH <= 8) {
69
            for (int group = 0; group < 2; ++group) {
70
                const int first_value = group * 16;
71
                const uint8_t* group_input = input + group * 2 * BIT_WIDTH;
72
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(group_input),
73
                                               pdep_mask<uint8_t, BIT_WIDTH>());
74
                uint64_t expanded1 =
75
                        _pdep_u64(load_packed_group<8 * BIT_WIDTH, 8 * BIT_WIDTH>(group_input),
76
                                  pdep_mask<uint8_t, BIT_WIDTH>());
77
                __m128i packed8 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
78
                                                 static_cast<int64_t>(expanded0));
79
                __m256i unpacked16 = _mm256_cvtepu8_epi16(packed8);
80
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked16);
81
            }
82
2.09M
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 8) {
83
10.4M
            for (int group = 0; group < 4; ++group) {
84
8.38M
                uint64_t expanded =
85
8.38M
                        _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(input + group * BIT_WIDTH),
86
8.38M
                                  pdep_mask<uint8_t, BIT_WIDTH>());
87
8.38M
                __m256i unpacked32 = _mm256_cvtepu8_epi32(_mm_cvtsi64_si128(expanded));
88
8.38M
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + group * 8), unpacked32);
89
8.38M
            }
90
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 15) {
91
            for (int group = 0; group < 4; ++group) {
92
                const int first_value = group * 8;
93
                const uint8_t* group_input = input + group * BIT_WIDTH;
94
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 4 * BIT_WIDTH>(group_input),
95
                                               pdep_mask<uint16_t, BIT_WIDTH>());
96
                uint64_t expanded1 =
97
                        _pdep_u64(load_packed_group<4 * BIT_WIDTH, 4 * BIT_WIDTH>(group_input),
98
                                  pdep_mask<uint16_t, BIT_WIDTH>());
99
                __m128i packed16 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
100
                                                  static_cast<int64_t>(expanded0));
101
                __m256i unpacked32 = _mm256_cvtepu16_epi32(packed16);
102
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked32);
103
            }
104
        } else {
105
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
106
        }
107
2.09M
    }
_ZN5doris10PdepUnpack8unpack32IjLi7EEEvPKhPT_
Line
Count
Source
64
21.3k
    __attribute__((target("bmi2,avx2"))) static void unpack32(const uint8_t* input, T* output) {
65
21.3k
        static_assert(is_supported_type<T, BIT_WIDTH>());
66
        if constexpr (std::is_same_v<T, uint8_t>) {
67
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
68
        } else if constexpr (std::is_same_v<T, uint16_t> && BIT_WIDTH <= 8) {
69
            for (int group = 0; group < 2; ++group) {
70
                const int first_value = group * 16;
71
                const uint8_t* group_input = input + group * 2 * BIT_WIDTH;
72
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(group_input),
73
                                               pdep_mask<uint8_t, BIT_WIDTH>());
74
                uint64_t expanded1 =
75
                        _pdep_u64(load_packed_group<8 * BIT_WIDTH, 8 * BIT_WIDTH>(group_input),
76
                                  pdep_mask<uint8_t, BIT_WIDTH>());
77
                __m128i packed8 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
78
                                                 static_cast<int64_t>(expanded0));
79
                __m256i unpacked16 = _mm256_cvtepu8_epi16(packed8);
80
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked16);
81
            }
82
21.3k
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 8) {
83
106k
            for (int group = 0; group < 4; ++group) {
84
85.3k
                uint64_t expanded =
85
85.3k
                        _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(input + group * BIT_WIDTH),
86
85.3k
                                  pdep_mask<uint8_t, BIT_WIDTH>());
87
85.3k
                __m256i unpacked32 = _mm256_cvtepu8_epi32(_mm_cvtsi64_si128(expanded));
88
85.3k
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + group * 8), unpacked32);
89
85.3k
            }
90
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 15) {
91
            for (int group = 0; group < 4; ++group) {
92
                const int first_value = group * 8;
93
                const uint8_t* group_input = input + group * BIT_WIDTH;
94
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 4 * BIT_WIDTH>(group_input),
95
                                               pdep_mask<uint16_t, BIT_WIDTH>());
96
                uint64_t expanded1 =
97
                        _pdep_u64(load_packed_group<4 * BIT_WIDTH, 4 * BIT_WIDTH>(group_input),
98
                                  pdep_mask<uint16_t, BIT_WIDTH>());
99
                __m128i packed16 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
100
                                                  static_cast<int64_t>(expanded0));
101
                __m256i unpacked32 = _mm256_cvtepu16_epi32(packed16);
102
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked32);
103
            }
104
        } else {
105
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
106
        }
107
21.3k
    }
_ZN5doris10PdepUnpack8unpack32IjLi8EEEvPKhPT_
Line
Count
Source
64
21.1k
    __attribute__((target("bmi2,avx2"))) static void unpack32(const uint8_t* input, T* output) {
65
21.1k
        static_assert(is_supported_type<T, BIT_WIDTH>());
66
        if constexpr (std::is_same_v<T, uint8_t>) {
67
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
68
        } else if constexpr (std::is_same_v<T, uint16_t> && BIT_WIDTH <= 8) {
69
            for (int group = 0; group < 2; ++group) {
70
                const int first_value = group * 16;
71
                const uint8_t* group_input = input + group * 2 * BIT_WIDTH;
72
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(group_input),
73
                                               pdep_mask<uint8_t, BIT_WIDTH>());
74
                uint64_t expanded1 =
75
                        _pdep_u64(load_packed_group<8 * BIT_WIDTH, 8 * BIT_WIDTH>(group_input),
76
                                  pdep_mask<uint8_t, BIT_WIDTH>());
77
                __m128i packed8 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
78
                                                 static_cast<int64_t>(expanded0));
79
                __m256i unpacked16 = _mm256_cvtepu8_epi16(packed8);
80
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked16);
81
            }
82
21.1k
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 8) {
83
105k
            for (int group = 0; group < 4; ++group) {
84
84.5k
                uint64_t expanded =
85
84.5k
                        _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(input + group * BIT_WIDTH),
86
84.5k
                                  pdep_mask<uint8_t, BIT_WIDTH>());
87
84.5k
                __m256i unpacked32 = _mm256_cvtepu8_epi32(_mm_cvtsi64_si128(expanded));
88
84.5k
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + group * 8), unpacked32);
89
84.5k
            }
90
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 15) {
91
            for (int group = 0; group < 4; ++group) {
92
                const int first_value = group * 8;
93
                const uint8_t* group_input = input + group * BIT_WIDTH;
94
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 4 * BIT_WIDTH>(group_input),
95
                                               pdep_mask<uint16_t, BIT_WIDTH>());
96
                uint64_t expanded1 =
97
                        _pdep_u64(load_packed_group<4 * BIT_WIDTH, 4 * BIT_WIDTH>(group_input),
98
                                  pdep_mask<uint16_t, BIT_WIDTH>());
99
                __m128i packed16 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
100
                                                  static_cast<int64_t>(expanded0));
101
                __m256i unpacked32 = _mm256_cvtepu16_epi32(packed16);
102
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked32);
103
            }
104
        } else {
105
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
106
        }
107
21.1k
    }
_ZN5doris10PdepUnpack8unpack32IjLi9EEEvPKhPT_
Line
Count
Source
64
38.1k
    __attribute__((target("bmi2,avx2"))) static void unpack32(const uint8_t* input, T* output) {
65
38.1k
        static_assert(is_supported_type<T, BIT_WIDTH>());
66
        if constexpr (std::is_same_v<T, uint8_t>) {
67
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
68
        } else if constexpr (std::is_same_v<T, uint16_t> && BIT_WIDTH <= 8) {
69
            for (int group = 0; group < 2; ++group) {
70
                const int first_value = group * 16;
71
                const uint8_t* group_input = input + group * 2 * BIT_WIDTH;
72
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(group_input),
73
                                               pdep_mask<uint8_t, BIT_WIDTH>());
74
                uint64_t expanded1 =
75
                        _pdep_u64(load_packed_group<8 * BIT_WIDTH, 8 * BIT_WIDTH>(group_input),
76
                                  pdep_mask<uint8_t, BIT_WIDTH>());
77
                __m128i packed8 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
78
                                                 static_cast<int64_t>(expanded0));
79
                __m256i unpacked16 = _mm256_cvtepu8_epi16(packed8);
80
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked16);
81
            }
82
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 8) {
83
            for (int group = 0; group < 4; ++group) {
84
                uint64_t expanded =
85
                        _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(input + group * BIT_WIDTH),
86
                                  pdep_mask<uint8_t, BIT_WIDTH>());
87
                __m256i unpacked32 = _mm256_cvtepu8_epi32(_mm_cvtsi64_si128(expanded));
88
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + group * 8), unpacked32);
89
            }
90
38.1k
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 15) {
91
190k
            for (int group = 0; group < 4; ++group) {
92
152k
                const int first_value = group * 8;
93
152k
                const uint8_t* group_input = input + group * BIT_WIDTH;
94
152k
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 4 * BIT_WIDTH>(group_input),
95
152k
                                               pdep_mask<uint16_t, BIT_WIDTH>());
96
152k
                uint64_t expanded1 =
97
152k
                        _pdep_u64(load_packed_group<4 * BIT_WIDTH, 4 * BIT_WIDTH>(group_input),
98
152k
                                  pdep_mask<uint16_t, BIT_WIDTH>());
99
152k
                __m128i packed16 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
100
152k
                                                  static_cast<int64_t>(expanded0));
101
152k
                __m256i unpacked32 = _mm256_cvtepu16_epi32(packed16);
102
152k
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked32);
103
152k
            }
104
        } else {
105
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
106
        }
107
38.1k
    }
_ZN5doris10PdepUnpack8unpack32IjLi10EEEvPKhPT_
Line
Count
Source
64
33.6k
    __attribute__((target("bmi2,avx2"))) static void unpack32(const uint8_t* input, T* output) {
65
33.6k
        static_assert(is_supported_type<T, BIT_WIDTH>());
66
        if constexpr (std::is_same_v<T, uint8_t>) {
67
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
68
        } else if constexpr (std::is_same_v<T, uint16_t> && BIT_WIDTH <= 8) {
69
            for (int group = 0; group < 2; ++group) {
70
                const int first_value = group * 16;
71
                const uint8_t* group_input = input + group * 2 * BIT_WIDTH;
72
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(group_input),
73
                                               pdep_mask<uint8_t, BIT_WIDTH>());
74
                uint64_t expanded1 =
75
                        _pdep_u64(load_packed_group<8 * BIT_WIDTH, 8 * BIT_WIDTH>(group_input),
76
                                  pdep_mask<uint8_t, BIT_WIDTH>());
77
                __m128i packed8 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
78
                                                 static_cast<int64_t>(expanded0));
79
                __m256i unpacked16 = _mm256_cvtepu8_epi16(packed8);
80
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked16);
81
            }
82
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 8) {
83
            for (int group = 0; group < 4; ++group) {
84
                uint64_t expanded =
85
                        _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(input + group * BIT_WIDTH),
86
                                  pdep_mask<uint8_t, BIT_WIDTH>());
87
                __m256i unpacked32 = _mm256_cvtepu8_epi32(_mm_cvtsi64_si128(expanded));
88
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + group * 8), unpacked32);
89
            }
90
33.6k
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 15) {
91
168k
            for (int group = 0; group < 4; ++group) {
92
134k
                const int first_value = group * 8;
93
134k
                const uint8_t* group_input = input + group * BIT_WIDTH;
94
134k
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 4 * BIT_WIDTH>(group_input),
95
134k
                                               pdep_mask<uint16_t, BIT_WIDTH>());
96
134k
                uint64_t expanded1 =
97
134k
                        _pdep_u64(load_packed_group<4 * BIT_WIDTH, 4 * BIT_WIDTH>(group_input),
98
134k
                                  pdep_mask<uint16_t, BIT_WIDTH>());
99
134k
                __m128i packed16 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
100
134k
                                                  static_cast<int64_t>(expanded0));
101
134k
                __m256i unpacked32 = _mm256_cvtepu16_epi32(packed16);
102
134k
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked32);
103
134k
            }
104
        } else {
105
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
106
        }
107
33.6k
    }
_ZN5doris10PdepUnpack8unpack32IjLi11EEEvPKhPT_
Line
Count
Source
64
524k
    __attribute__((target("bmi2,avx2"))) static void unpack32(const uint8_t* input, T* output) {
65
524k
        static_assert(is_supported_type<T, BIT_WIDTH>());
66
        if constexpr (std::is_same_v<T, uint8_t>) {
67
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
68
        } else if constexpr (std::is_same_v<T, uint16_t> && BIT_WIDTH <= 8) {
69
            for (int group = 0; group < 2; ++group) {
70
                const int first_value = group * 16;
71
                const uint8_t* group_input = input + group * 2 * BIT_WIDTH;
72
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(group_input),
73
                                               pdep_mask<uint8_t, BIT_WIDTH>());
74
                uint64_t expanded1 =
75
                        _pdep_u64(load_packed_group<8 * BIT_WIDTH, 8 * BIT_WIDTH>(group_input),
76
                                  pdep_mask<uint8_t, BIT_WIDTH>());
77
                __m128i packed8 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
78
                                                 static_cast<int64_t>(expanded0));
79
                __m256i unpacked16 = _mm256_cvtepu8_epi16(packed8);
80
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked16);
81
            }
82
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 8) {
83
            for (int group = 0; group < 4; ++group) {
84
                uint64_t expanded =
85
                        _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(input + group * BIT_WIDTH),
86
                                  pdep_mask<uint8_t, BIT_WIDTH>());
87
                __m256i unpacked32 = _mm256_cvtepu8_epi32(_mm_cvtsi64_si128(expanded));
88
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + group * 8), unpacked32);
89
            }
90
524k
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 15) {
91
2.62M
            for (int group = 0; group < 4; ++group) {
92
2.09M
                const int first_value = group * 8;
93
2.09M
                const uint8_t* group_input = input + group * BIT_WIDTH;
94
2.09M
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 4 * BIT_WIDTH>(group_input),
95
2.09M
                                               pdep_mask<uint16_t, BIT_WIDTH>());
96
2.09M
                uint64_t expanded1 =
97
2.09M
                        _pdep_u64(load_packed_group<4 * BIT_WIDTH, 4 * BIT_WIDTH>(group_input),
98
2.09M
                                  pdep_mask<uint16_t, BIT_WIDTH>());
99
2.09M
                __m128i packed16 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
100
2.09M
                                                  static_cast<int64_t>(expanded0));
101
2.09M
                __m256i unpacked32 = _mm256_cvtepu16_epi32(packed16);
102
2.09M
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked32);
103
2.09M
            }
104
        } else {
105
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
106
        }
107
524k
    }
_ZN5doris10PdepUnpack8unpack32IjLi12EEEvPKhPT_
Line
Count
Source
64
4.10M
    __attribute__((target("bmi2,avx2"))) static void unpack32(const uint8_t* input, T* output) {
65
4.10M
        static_assert(is_supported_type<T, BIT_WIDTH>());
66
        if constexpr (std::is_same_v<T, uint8_t>) {
67
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
68
        } else if constexpr (std::is_same_v<T, uint16_t> && BIT_WIDTH <= 8) {
69
            for (int group = 0; group < 2; ++group) {
70
                const int first_value = group * 16;
71
                const uint8_t* group_input = input + group * 2 * BIT_WIDTH;
72
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(group_input),
73
                                               pdep_mask<uint8_t, BIT_WIDTH>());
74
                uint64_t expanded1 =
75
                        _pdep_u64(load_packed_group<8 * BIT_WIDTH, 8 * BIT_WIDTH>(group_input),
76
                                  pdep_mask<uint8_t, BIT_WIDTH>());
77
                __m128i packed8 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
78
                                                 static_cast<int64_t>(expanded0));
79
                __m256i unpacked16 = _mm256_cvtepu8_epi16(packed8);
80
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked16);
81
            }
82
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 8) {
83
            for (int group = 0; group < 4; ++group) {
84
                uint64_t expanded =
85
                        _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(input + group * BIT_WIDTH),
86
                                  pdep_mask<uint8_t, BIT_WIDTH>());
87
                __m256i unpacked32 = _mm256_cvtepu8_epi32(_mm_cvtsi64_si128(expanded));
88
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + group * 8), unpacked32);
89
            }
90
4.10M
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 15) {
91
20.5M
            for (int group = 0; group < 4; ++group) {
92
16.4M
                const int first_value = group * 8;
93
16.4M
                const uint8_t* group_input = input + group * BIT_WIDTH;
94
16.4M
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 4 * BIT_WIDTH>(group_input),
95
16.4M
                                               pdep_mask<uint16_t, BIT_WIDTH>());
96
16.4M
                uint64_t expanded1 =
97
16.4M
                        _pdep_u64(load_packed_group<4 * BIT_WIDTH, 4 * BIT_WIDTH>(group_input),
98
16.4M
                                  pdep_mask<uint16_t, BIT_WIDTH>());
99
16.4M
                __m128i packed16 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
100
16.4M
                                                  static_cast<int64_t>(expanded0));
101
16.4M
                __m256i unpacked32 = _mm256_cvtepu16_epi32(packed16);
102
16.4M
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked32);
103
16.4M
            }
104
        } else {
105
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
106
        }
107
4.10M
    }
_ZN5doris10PdepUnpack8unpack32IjLi13EEEvPKhPT_
Line
Count
Source
64
272k
    __attribute__((target("bmi2,avx2"))) static void unpack32(const uint8_t* input, T* output) {
65
272k
        static_assert(is_supported_type<T, BIT_WIDTH>());
66
        if constexpr (std::is_same_v<T, uint8_t>) {
67
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
68
        } else if constexpr (std::is_same_v<T, uint16_t> && BIT_WIDTH <= 8) {
69
            for (int group = 0; group < 2; ++group) {
70
                const int first_value = group * 16;
71
                const uint8_t* group_input = input + group * 2 * BIT_WIDTH;
72
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(group_input),
73
                                               pdep_mask<uint8_t, BIT_WIDTH>());
74
                uint64_t expanded1 =
75
                        _pdep_u64(load_packed_group<8 * BIT_WIDTH, 8 * BIT_WIDTH>(group_input),
76
                                  pdep_mask<uint8_t, BIT_WIDTH>());
77
                __m128i packed8 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
78
                                                 static_cast<int64_t>(expanded0));
79
                __m256i unpacked16 = _mm256_cvtepu8_epi16(packed8);
80
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked16);
81
            }
82
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 8) {
83
            for (int group = 0; group < 4; ++group) {
84
                uint64_t expanded =
85
                        _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(input + group * BIT_WIDTH),
86
                                  pdep_mask<uint8_t, BIT_WIDTH>());
87
                __m256i unpacked32 = _mm256_cvtepu8_epi32(_mm_cvtsi64_si128(expanded));
88
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + group * 8), unpacked32);
89
            }
90
272k
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 15) {
91
1.36M
            for (int group = 0; group < 4; ++group) {
92
1.09M
                const int first_value = group * 8;
93
1.09M
                const uint8_t* group_input = input + group * BIT_WIDTH;
94
1.09M
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 4 * BIT_WIDTH>(group_input),
95
1.09M
                                               pdep_mask<uint16_t, BIT_WIDTH>());
96
1.09M
                uint64_t expanded1 =
97
1.09M
                        _pdep_u64(load_packed_group<4 * BIT_WIDTH, 4 * BIT_WIDTH>(group_input),
98
1.09M
                                  pdep_mask<uint16_t, BIT_WIDTH>());
99
1.09M
                __m128i packed16 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
100
1.09M
                                                  static_cast<int64_t>(expanded0));
101
1.09M
                __m256i unpacked32 = _mm256_cvtepu16_epi32(packed16);
102
1.09M
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked32);
103
1.09M
            }
104
        } else {
105
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
106
        }
107
272k
    }
_ZN5doris10PdepUnpack8unpack32IjLi14EEEvPKhPT_
Line
Count
Source
64
958k
    __attribute__((target("bmi2,avx2"))) static void unpack32(const uint8_t* input, T* output) {
65
958k
        static_assert(is_supported_type<T, BIT_WIDTH>());
66
        if constexpr (std::is_same_v<T, uint8_t>) {
67
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
68
        } else if constexpr (std::is_same_v<T, uint16_t> && BIT_WIDTH <= 8) {
69
            for (int group = 0; group < 2; ++group) {
70
                const int first_value = group * 16;
71
                const uint8_t* group_input = input + group * 2 * BIT_WIDTH;
72
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(group_input),
73
                                               pdep_mask<uint8_t, BIT_WIDTH>());
74
                uint64_t expanded1 =
75
                        _pdep_u64(load_packed_group<8 * BIT_WIDTH, 8 * BIT_WIDTH>(group_input),
76
                                  pdep_mask<uint8_t, BIT_WIDTH>());
77
                __m128i packed8 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
78
                                                 static_cast<int64_t>(expanded0));
79
                __m256i unpacked16 = _mm256_cvtepu8_epi16(packed8);
80
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked16);
81
            }
82
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 8) {
83
            for (int group = 0; group < 4; ++group) {
84
                uint64_t expanded =
85
                        _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(input + group * BIT_WIDTH),
86
                                  pdep_mask<uint8_t, BIT_WIDTH>());
87
                __m256i unpacked32 = _mm256_cvtepu8_epi32(_mm_cvtsi64_si128(expanded));
88
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + group * 8), unpacked32);
89
            }
90
958k
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 15) {
91
4.79M
            for (int group = 0; group < 4; ++group) {
92
3.83M
                const int first_value = group * 8;
93
3.83M
                const uint8_t* group_input = input + group * BIT_WIDTH;
94
3.83M
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 4 * BIT_WIDTH>(group_input),
95
3.83M
                                               pdep_mask<uint16_t, BIT_WIDTH>());
96
3.83M
                uint64_t expanded1 =
97
3.83M
                        _pdep_u64(load_packed_group<4 * BIT_WIDTH, 4 * BIT_WIDTH>(group_input),
98
3.83M
                                  pdep_mask<uint16_t, BIT_WIDTH>());
99
3.83M
                __m128i packed16 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
100
3.83M
                                                  static_cast<int64_t>(expanded0));
101
3.83M
                __m256i unpacked32 = _mm256_cvtepu16_epi32(packed16);
102
3.83M
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked32);
103
3.83M
            }
104
        } else {
105
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
106
        }
107
958k
    }
_ZN5doris10PdepUnpack8unpack32IjLi15EEEvPKhPT_
Line
Count
Source
64
178k
    __attribute__((target("bmi2,avx2"))) static void unpack32(const uint8_t* input, T* output) {
65
178k
        static_assert(is_supported_type<T, BIT_WIDTH>());
66
        if constexpr (std::is_same_v<T, uint8_t>) {
67
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
68
        } else if constexpr (std::is_same_v<T, uint16_t> && BIT_WIDTH <= 8) {
69
            for (int group = 0; group < 2; ++group) {
70
                const int first_value = group * 16;
71
                const uint8_t* group_input = input + group * 2 * BIT_WIDTH;
72
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(group_input),
73
                                               pdep_mask<uint8_t, BIT_WIDTH>());
74
                uint64_t expanded1 =
75
                        _pdep_u64(load_packed_group<8 * BIT_WIDTH, 8 * BIT_WIDTH>(group_input),
76
                                  pdep_mask<uint8_t, BIT_WIDTH>());
77
                __m128i packed8 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
78
                                                 static_cast<int64_t>(expanded0));
79
                __m256i unpacked16 = _mm256_cvtepu8_epi16(packed8);
80
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked16);
81
            }
82
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 8) {
83
            for (int group = 0; group < 4; ++group) {
84
                uint64_t expanded =
85
                        _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(input + group * BIT_WIDTH),
86
                                  pdep_mask<uint8_t, BIT_WIDTH>());
87
                __m256i unpacked32 = _mm256_cvtepu8_epi32(_mm_cvtsi64_si128(expanded));
88
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + group * 8), unpacked32);
89
            }
90
178k
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 15) {
91
891k
            for (int group = 0; group < 4; ++group) {
92
713k
                const int first_value = group * 8;
93
713k
                const uint8_t* group_input = input + group * BIT_WIDTH;
94
713k
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 4 * BIT_WIDTH>(group_input),
95
713k
                                               pdep_mask<uint16_t, BIT_WIDTH>());
96
713k
                uint64_t expanded1 =
97
713k
                        _pdep_u64(load_packed_group<4 * BIT_WIDTH, 4 * BIT_WIDTH>(group_input),
98
713k
                                  pdep_mask<uint16_t, BIT_WIDTH>());
99
713k
                __m128i packed16 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
100
713k
                                                  static_cast<int64_t>(expanded0));
101
713k
                __m256i unpacked32 = _mm256_cvtepu16_epi32(packed16);
102
713k
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked32);
103
713k
            }
104
        } else {
105
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
106
        }
107
178k
    }
_ZN5doris10PdepUnpack8unpack32ItLi1EEEvPKhPT_
Line
Count
Source
64
12
    __attribute__((target("bmi2,avx2"))) static void unpack32(const uint8_t* input, T* output) {
65
12
        static_assert(is_supported_type<T, BIT_WIDTH>());
66
        if constexpr (std::is_same_v<T, uint8_t>) {
67
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
68
12
        } else if constexpr (std::is_same_v<T, uint16_t> && BIT_WIDTH <= 8) {
69
36
            for (int group = 0; group < 2; ++group) {
70
24
                const int first_value = group * 16;
71
24
                const uint8_t* group_input = input + group * 2 * BIT_WIDTH;
72
24
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(group_input),
73
24
                                               pdep_mask<uint8_t, BIT_WIDTH>());
74
24
                uint64_t expanded1 =
75
24
                        _pdep_u64(load_packed_group<8 * BIT_WIDTH, 8 * BIT_WIDTH>(group_input),
76
24
                                  pdep_mask<uint8_t, BIT_WIDTH>());
77
24
                __m128i packed8 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
78
24
                                                 static_cast<int64_t>(expanded0));
79
24
                __m256i unpacked16 = _mm256_cvtepu8_epi16(packed8);
80
24
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked16);
81
24
            }
82
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 8) {
83
            for (int group = 0; group < 4; ++group) {
84
                uint64_t expanded =
85
                        _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(input + group * BIT_WIDTH),
86
                                  pdep_mask<uint8_t, BIT_WIDTH>());
87
                __m256i unpacked32 = _mm256_cvtepu8_epi32(_mm_cvtsi64_si128(expanded));
88
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + group * 8), unpacked32);
89
            }
90
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 15) {
91
            for (int group = 0; group < 4; ++group) {
92
                const int first_value = group * 8;
93
                const uint8_t* group_input = input + group * BIT_WIDTH;
94
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 4 * BIT_WIDTH>(group_input),
95
                                               pdep_mask<uint16_t, BIT_WIDTH>());
96
                uint64_t expanded1 =
97
                        _pdep_u64(load_packed_group<4 * BIT_WIDTH, 4 * BIT_WIDTH>(group_input),
98
                                  pdep_mask<uint16_t, BIT_WIDTH>());
99
                __m128i packed16 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
100
                                                  static_cast<int64_t>(expanded0));
101
                __m256i unpacked32 = _mm256_cvtepu16_epi32(packed16);
102
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked32);
103
            }
104
        } else {
105
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
106
        }
107
12
    }
_ZN5doris10PdepUnpack8unpack32ItLi2EEEvPKhPT_
Line
Count
Source
64
694
    __attribute__((target("bmi2,avx2"))) static void unpack32(const uint8_t* input, T* output) {
65
694
        static_assert(is_supported_type<T, BIT_WIDTH>());
66
        if constexpr (std::is_same_v<T, uint8_t>) {
67
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
68
694
        } else if constexpr (std::is_same_v<T, uint16_t> && BIT_WIDTH <= 8) {
69
2.08k
            for (int group = 0; group < 2; ++group) {
70
1.38k
                const int first_value = group * 16;
71
1.38k
                const uint8_t* group_input = input + group * 2 * BIT_WIDTH;
72
1.38k
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(group_input),
73
1.38k
                                               pdep_mask<uint8_t, BIT_WIDTH>());
74
1.38k
                uint64_t expanded1 =
75
1.38k
                        _pdep_u64(load_packed_group<8 * BIT_WIDTH, 8 * BIT_WIDTH>(group_input),
76
1.38k
                                  pdep_mask<uint8_t, BIT_WIDTH>());
77
1.38k
                __m128i packed8 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
78
1.38k
                                                 static_cast<int64_t>(expanded0));
79
1.38k
                __m256i unpacked16 = _mm256_cvtepu8_epi16(packed8);
80
1.38k
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked16);
81
1.38k
            }
82
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 8) {
83
            for (int group = 0; group < 4; ++group) {
84
                uint64_t expanded =
85
                        _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(input + group * BIT_WIDTH),
86
                                  pdep_mask<uint8_t, BIT_WIDTH>());
87
                __m256i unpacked32 = _mm256_cvtepu8_epi32(_mm_cvtsi64_si128(expanded));
88
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + group * 8), unpacked32);
89
            }
90
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 15) {
91
            for (int group = 0; group < 4; ++group) {
92
                const int first_value = group * 8;
93
                const uint8_t* group_input = input + group * BIT_WIDTH;
94
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 4 * BIT_WIDTH>(group_input),
95
                                               pdep_mask<uint16_t, BIT_WIDTH>());
96
                uint64_t expanded1 =
97
                        _pdep_u64(load_packed_group<4 * BIT_WIDTH, 4 * BIT_WIDTH>(group_input),
98
                                  pdep_mask<uint16_t, BIT_WIDTH>());
99
                __m128i packed16 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
100
                                                  static_cast<int64_t>(expanded0));
101
                __m256i unpacked32 = _mm256_cvtepu16_epi32(packed16);
102
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked32);
103
            }
104
        } else {
105
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
106
        }
107
694
    }
_ZN5doris10PdepUnpack8unpack32ItLi3EEEvPKhPT_
Line
Count
Source
64
2.33k
    __attribute__((target("bmi2,avx2"))) static void unpack32(const uint8_t* input, T* output) {
65
2.33k
        static_assert(is_supported_type<T, BIT_WIDTH>());
66
        if constexpr (std::is_same_v<T, uint8_t>) {
67
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
68
2.33k
        } else if constexpr (std::is_same_v<T, uint16_t> && BIT_WIDTH <= 8) {
69
7.01k
            for (int group = 0; group < 2; ++group) {
70
4.67k
                const int first_value = group * 16;
71
4.67k
                const uint8_t* group_input = input + group * 2 * BIT_WIDTH;
72
4.67k
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(group_input),
73
4.67k
                                               pdep_mask<uint8_t, BIT_WIDTH>());
74
4.67k
                uint64_t expanded1 =
75
4.67k
                        _pdep_u64(load_packed_group<8 * BIT_WIDTH, 8 * BIT_WIDTH>(group_input),
76
4.67k
                                  pdep_mask<uint8_t, BIT_WIDTH>());
77
4.67k
                __m128i packed8 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
78
4.67k
                                                 static_cast<int64_t>(expanded0));
79
4.67k
                __m256i unpacked16 = _mm256_cvtepu8_epi16(packed8);
80
4.67k
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked16);
81
4.67k
            }
82
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 8) {
83
            for (int group = 0; group < 4; ++group) {
84
                uint64_t expanded =
85
                        _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(input + group * BIT_WIDTH),
86
                                  pdep_mask<uint8_t, BIT_WIDTH>());
87
                __m256i unpacked32 = _mm256_cvtepu8_epi32(_mm_cvtsi64_si128(expanded));
88
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + group * 8), unpacked32);
89
            }
90
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 15) {
91
            for (int group = 0; group < 4; ++group) {
92
                const int first_value = group * 8;
93
                const uint8_t* group_input = input + group * BIT_WIDTH;
94
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 4 * BIT_WIDTH>(group_input),
95
                                               pdep_mask<uint16_t, BIT_WIDTH>());
96
                uint64_t expanded1 =
97
                        _pdep_u64(load_packed_group<4 * BIT_WIDTH, 4 * BIT_WIDTH>(group_input),
98
                                  pdep_mask<uint16_t, BIT_WIDTH>());
99
                __m128i packed16 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
100
                                                  static_cast<int64_t>(expanded0));
101
                __m256i unpacked32 = _mm256_cvtepu16_epi32(packed16);
102
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked32);
103
            }
104
        } else {
105
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
106
        }
107
2.33k
    }
_ZN5doris10PdepUnpack8unpack32ItLi4EEEvPKhPT_
Line
Count
Source
64
12
    __attribute__((target("bmi2,avx2"))) static void unpack32(const uint8_t* input, T* output) {
65
12
        static_assert(is_supported_type<T, BIT_WIDTH>());
66
        if constexpr (std::is_same_v<T, uint8_t>) {
67
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
68
12
        } else if constexpr (std::is_same_v<T, uint16_t> && BIT_WIDTH <= 8) {
69
36
            for (int group = 0; group < 2; ++group) {
70
24
                const int first_value = group * 16;
71
24
                const uint8_t* group_input = input + group * 2 * BIT_WIDTH;
72
24
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(group_input),
73
24
                                               pdep_mask<uint8_t, BIT_WIDTH>());
74
24
                uint64_t expanded1 =
75
24
                        _pdep_u64(load_packed_group<8 * BIT_WIDTH, 8 * BIT_WIDTH>(group_input),
76
24
                                  pdep_mask<uint8_t, BIT_WIDTH>());
77
24
                __m128i packed8 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
78
24
                                                 static_cast<int64_t>(expanded0));
79
24
                __m256i unpacked16 = _mm256_cvtepu8_epi16(packed8);
80
24
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked16);
81
24
            }
82
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 8) {
83
            for (int group = 0; group < 4; ++group) {
84
                uint64_t expanded =
85
                        _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(input + group * BIT_WIDTH),
86
                                  pdep_mask<uint8_t, BIT_WIDTH>());
87
                __m256i unpacked32 = _mm256_cvtepu8_epi32(_mm_cvtsi64_si128(expanded));
88
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + group * 8), unpacked32);
89
            }
90
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 15) {
91
            for (int group = 0; group < 4; ++group) {
92
                const int first_value = group * 8;
93
                const uint8_t* group_input = input + group * BIT_WIDTH;
94
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 4 * BIT_WIDTH>(group_input),
95
                                               pdep_mask<uint16_t, BIT_WIDTH>());
96
                uint64_t expanded1 =
97
                        _pdep_u64(load_packed_group<4 * BIT_WIDTH, 4 * BIT_WIDTH>(group_input),
98
                                  pdep_mask<uint16_t, BIT_WIDTH>());
99
                __m128i packed16 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
100
                                                  static_cast<int64_t>(expanded0));
101
                __m256i unpacked32 = _mm256_cvtepu16_epi32(packed16);
102
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked32);
103
            }
104
        } else {
105
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
106
        }
107
12
    }
_ZN5doris10PdepUnpack8unpack32ItLi5EEEvPKhPT_
Line
Count
Source
64
12
    __attribute__((target("bmi2,avx2"))) static void unpack32(const uint8_t* input, T* output) {
65
12
        static_assert(is_supported_type<T, BIT_WIDTH>());
66
        if constexpr (std::is_same_v<T, uint8_t>) {
67
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
68
12
        } else if constexpr (std::is_same_v<T, uint16_t> && BIT_WIDTH <= 8) {
69
36
            for (int group = 0; group < 2; ++group) {
70
24
                const int first_value = group * 16;
71
24
                const uint8_t* group_input = input + group * 2 * BIT_WIDTH;
72
24
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(group_input),
73
24
                                               pdep_mask<uint8_t, BIT_WIDTH>());
74
24
                uint64_t expanded1 =
75
24
                        _pdep_u64(load_packed_group<8 * BIT_WIDTH, 8 * BIT_WIDTH>(group_input),
76
24
                                  pdep_mask<uint8_t, BIT_WIDTH>());
77
24
                __m128i packed8 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
78
24
                                                 static_cast<int64_t>(expanded0));
79
24
                __m256i unpacked16 = _mm256_cvtepu8_epi16(packed8);
80
24
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked16);
81
24
            }
82
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 8) {
83
            for (int group = 0; group < 4; ++group) {
84
                uint64_t expanded =
85
                        _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(input + group * BIT_WIDTH),
86
                                  pdep_mask<uint8_t, BIT_WIDTH>());
87
                __m256i unpacked32 = _mm256_cvtepu8_epi32(_mm_cvtsi64_si128(expanded));
88
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + group * 8), unpacked32);
89
            }
90
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 15) {
91
            for (int group = 0; group < 4; ++group) {
92
                const int first_value = group * 8;
93
                const uint8_t* group_input = input + group * BIT_WIDTH;
94
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 4 * BIT_WIDTH>(group_input),
95
                                               pdep_mask<uint16_t, BIT_WIDTH>());
96
                uint64_t expanded1 =
97
                        _pdep_u64(load_packed_group<4 * BIT_WIDTH, 4 * BIT_WIDTH>(group_input),
98
                                  pdep_mask<uint16_t, BIT_WIDTH>());
99
                __m128i packed16 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
100
                                                  static_cast<int64_t>(expanded0));
101
                __m256i unpacked32 = _mm256_cvtepu16_epi32(packed16);
102
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked32);
103
            }
104
        } else {
105
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
106
        }
107
12
    }
_ZN5doris10PdepUnpack8unpack32ItLi6EEEvPKhPT_
Line
Count
Source
64
12
    __attribute__((target("bmi2,avx2"))) static void unpack32(const uint8_t* input, T* output) {
65
12
        static_assert(is_supported_type<T, BIT_WIDTH>());
66
        if constexpr (std::is_same_v<T, uint8_t>) {
67
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
68
12
        } else if constexpr (std::is_same_v<T, uint16_t> && BIT_WIDTH <= 8) {
69
36
            for (int group = 0; group < 2; ++group) {
70
24
                const int first_value = group * 16;
71
24
                const uint8_t* group_input = input + group * 2 * BIT_WIDTH;
72
24
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(group_input),
73
24
                                               pdep_mask<uint8_t, BIT_WIDTH>());
74
24
                uint64_t expanded1 =
75
24
                        _pdep_u64(load_packed_group<8 * BIT_WIDTH, 8 * BIT_WIDTH>(group_input),
76
24
                                  pdep_mask<uint8_t, BIT_WIDTH>());
77
24
                __m128i packed8 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
78
24
                                                 static_cast<int64_t>(expanded0));
79
24
                __m256i unpacked16 = _mm256_cvtepu8_epi16(packed8);
80
24
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked16);
81
24
            }
82
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 8) {
83
            for (int group = 0; group < 4; ++group) {
84
                uint64_t expanded =
85
                        _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(input + group * BIT_WIDTH),
86
                                  pdep_mask<uint8_t, BIT_WIDTH>());
87
                __m256i unpacked32 = _mm256_cvtepu8_epi32(_mm_cvtsi64_si128(expanded));
88
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + group * 8), unpacked32);
89
            }
90
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 15) {
91
            for (int group = 0; group < 4; ++group) {
92
                const int first_value = group * 8;
93
                const uint8_t* group_input = input + group * BIT_WIDTH;
94
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 4 * BIT_WIDTH>(group_input),
95
                                               pdep_mask<uint16_t, BIT_WIDTH>());
96
                uint64_t expanded1 =
97
                        _pdep_u64(load_packed_group<4 * BIT_WIDTH, 4 * BIT_WIDTH>(group_input),
98
                                  pdep_mask<uint16_t, BIT_WIDTH>());
99
                __m128i packed16 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
100
                                                  static_cast<int64_t>(expanded0));
101
                __m256i unpacked32 = _mm256_cvtepu16_epi32(packed16);
102
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked32);
103
            }
104
        } else {
105
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
106
        }
107
12
    }
_ZN5doris10PdepUnpack8unpack32ItLi7EEEvPKhPT_
Line
Count
Source
64
12
    __attribute__((target("bmi2,avx2"))) static void unpack32(const uint8_t* input, T* output) {
65
12
        static_assert(is_supported_type<T, BIT_WIDTH>());
66
        if constexpr (std::is_same_v<T, uint8_t>) {
67
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
68
12
        } else if constexpr (std::is_same_v<T, uint16_t> && BIT_WIDTH <= 8) {
69
36
            for (int group = 0; group < 2; ++group) {
70
24
                const int first_value = group * 16;
71
24
                const uint8_t* group_input = input + group * 2 * BIT_WIDTH;
72
24
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(group_input),
73
24
                                               pdep_mask<uint8_t, BIT_WIDTH>());
74
24
                uint64_t expanded1 =
75
24
                        _pdep_u64(load_packed_group<8 * BIT_WIDTH, 8 * BIT_WIDTH>(group_input),
76
24
                                  pdep_mask<uint8_t, BIT_WIDTH>());
77
24
                __m128i packed8 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
78
24
                                                 static_cast<int64_t>(expanded0));
79
24
                __m256i unpacked16 = _mm256_cvtepu8_epi16(packed8);
80
24
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked16);
81
24
            }
82
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 8) {
83
            for (int group = 0; group < 4; ++group) {
84
                uint64_t expanded =
85
                        _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(input + group * BIT_WIDTH),
86
                                  pdep_mask<uint8_t, BIT_WIDTH>());
87
                __m256i unpacked32 = _mm256_cvtepu8_epi32(_mm_cvtsi64_si128(expanded));
88
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + group * 8), unpacked32);
89
            }
90
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 15) {
91
            for (int group = 0; group < 4; ++group) {
92
                const int first_value = group * 8;
93
                const uint8_t* group_input = input + group * BIT_WIDTH;
94
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 4 * BIT_WIDTH>(group_input),
95
                                               pdep_mask<uint16_t, BIT_WIDTH>());
96
                uint64_t expanded1 =
97
                        _pdep_u64(load_packed_group<4 * BIT_WIDTH, 4 * BIT_WIDTH>(group_input),
98
                                  pdep_mask<uint16_t, BIT_WIDTH>());
99
                __m128i packed16 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
100
                                                  static_cast<int64_t>(expanded0));
101
                __m256i unpacked32 = _mm256_cvtepu16_epi32(packed16);
102
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked32);
103
            }
104
        } else {
105
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
106
        }
107
12
    }
_ZN5doris10PdepUnpack8unpack32ItLi8EEEvPKhPT_
Line
Count
Source
64
12
    __attribute__((target("bmi2,avx2"))) static void unpack32(const uint8_t* input, T* output) {
65
12
        static_assert(is_supported_type<T, BIT_WIDTH>());
66
        if constexpr (std::is_same_v<T, uint8_t>) {
67
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
68
12
        } else if constexpr (std::is_same_v<T, uint16_t> && BIT_WIDTH <= 8) {
69
36
            for (int group = 0; group < 2; ++group) {
70
24
                const int first_value = group * 16;
71
24
                const uint8_t* group_input = input + group * 2 * BIT_WIDTH;
72
24
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(group_input),
73
24
                                               pdep_mask<uint8_t, BIT_WIDTH>());
74
24
                uint64_t expanded1 =
75
24
                        _pdep_u64(load_packed_group<8 * BIT_WIDTH, 8 * BIT_WIDTH>(group_input),
76
24
                                  pdep_mask<uint8_t, BIT_WIDTH>());
77
24
                __m128i packed8 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
78
24
                                                 static_cast<int64_t>(expanded0));
79
24
                __m256i unpacked16 = _mm256_cvtepu8_epi16(packed8);
80
24
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked16);
81
24
            }
82
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 8) {
83
            for (int group = 0; group < 4; ++group) {
84
                uint64_t expanded =
85
                        _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(input + group * BIT_WIDTH),
86
                                  pdep_mask<uint8_t, BIT_WIDTH>());
87
                __m256i unpacked32 = _mm256_cvtepu8_epi32(_mm_cvtsi64_si128(expanded));
88
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + group * 8), unpacked32);
89
            }
90
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 15) {
91
            for (int group = 0; group < 4; ++group) {
92
                const int first_value = group * 8;
93
                const uint8_t* group_input = input + group * BIT_WIDTH;
94
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 4 * BIT_WIDTH>(group_input),
95
                                               pdep_mask<uint16_t, BIT_WIDTH>());
96
                uint64_t expanded1 =
97
                        _pdep_u64(load_packed_group<4 * BIT_WIDTH, 4 * BIT_WIDTH>(group_input),
98
                                  pdep_mask<uint16_t, BIT_WIDTH>());
99
                __m128i packed16 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
100
                                                  static_cast<int64_t>(expanded0));
101
                __m256i unpacked32 = _mm256_cvtepu16_epi32(packed16);
102
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked32);
103
            }
104
        } else {
105
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
106
        }
107
12
    }
_ZN5doris10PdepUnpack8unpack32ItLi9EEEvPKhPT_
Line
Count
Source
64
12
    __attribute__((target("bmi2,avx2"))) static void unpack32(const uint8_t* input, T* output) {
65
12
        static_assert(is_supported_type<T, BIT_WIDTH>());
66
        if constexpr (std::is_same_v<T, uint8_t>) {
67
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
68
        } else if constexpr (std::is_same_v<T, uint16_t> && BIT_WIDTH <= 8) {
69
            for (int group = 0; group < 2; ++group) {
70
                const int first_value = group * 16;
71
                const uint8_t* group_input = input + group * 2 * BIT_WIDTH;
72
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(group_input),
73
                                               pdep_mask<uint8_t, BIT_WIDTH>());
74
                uint64_t expanded1 =
75
                        _pdep_u64(load_packed_group<8 * BIT_WIDTH, 8 * BIT_WIDTH>(group_input),
76
                                  pdep_mask<uint8_t, BIT_WIDTH>());
77
                __m128i packed8 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
78
                                                 static_cast<int64_t>(expanded0));
79
                __m256i unpacked16 = _mm256_cvtepu8_epi16(packed8);
80
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked16);
81
            }
82
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 8) {
83
            for (int group = 0; group < 4; ++group) {
84
                uint64_t expanded =
85
                        _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(input + group * BIT_WIDTH),
86
                                  pdep_mask<uint8_t, BIT_WIDTH>());
87
                __m256i unpacked32 = _mm256_cvtepu8_epi32(_mm_cvtsi64_si128(expanded));
88
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + group * 8), unpacked32);
89
            }
90
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 15) {
91
            for (int group = 0; group < 4; ++group) {
92
                const int first_value = group * 8;
93
                const uint8_t* group_input = input + group * BIT_WIDTH;
94
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 4 * BIT_WIDTH>(group_input),
95
                                               pdep_mask<uint16_t, BIT_WIDTH>());
96
                uint64_t expanded1 =
97
                        _pdep_u64(load_packed_group<4 * BIT_WIDTH, 4 * BIT_WIDTH>(group_input),
98
                                  pdep_mask<uint16_t, BIT_WIDTH>());
99
                __m128i packed16 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
100
                                                  static_cast<int64_t>(expanded0));
101
                __m256i unpacked32 = _mm256_cvtepu16_epi32(packed16);
102
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked32);
103
            }
104
12
        } else {
105
12
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
106
12
        }
107
12
    }
_ZN5doris10PdepUnpack8unpack32ItLi10EEEvPKhPT_
Line
Count
Source
64
12
    __attribute__((target("bmi2,avx2"))) static void unpack32(const uint8_t* input, T* output) {
65
12
        static_assert(is_supported_type<T, BIT_WIDTH>());
66
        if constexpr (std::is_same_v<T, uint8_t>) {
67
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
68
        } else if constexpr (std::is_same_v<T, uint16_t> && BIT_WIDTH <= 8) {
69
            for (int group = 0; group < 2; ++group) {
70
                const int first_value = group * 16;
71
                const uint8_t* group_input = input + group * 2 * BIT_WIDTH;
72
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(group_input),
73
                                               pdep_mask<uint8_t, BIT_WIDTH>());
74
                uint64_t expanded1 =
75
                        _pdep_u64(load_packed_group<8 * BIT_WIDTH, 8 * BIT_WIDTH>(group_input),
76
                                  pdep_mask<uint8_t, BIT_WIDTH>());
77
                __m128i packed8 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
78
                                                 static_cast<int64_t>(expanded0));
79
                __m256i unpacked16 = _mm256_cvtepu8_epi16(packed8);
80
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked16);
81
            }
82
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 8) {
83
            for (int group = 0; group < 4; ++group) {
84
                uint64_t expanded =
85
                        _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(input + group * BIT_WIDTH),
86
                                  pdep_mask<uint8_t, BIT_WIDTH>());
87
                __m256i unpacked32 = _mm256_cvtepu8_epi32(_mm_cvtsi64_si128(expanded));
88
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + group * 8), unpacked32);
89
            }
90
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 15) {
91
            for (int group = 0; group < 4; ++group) {
92
                const int first_value = group * 8;
93
                const uint8_t* group_input = input + group * BIT_WIDTH;
94
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 4 * BIT_WIDTH>(group_input),
95
                                               pdep_mask<uint16_t, BIT_WIDTH>());
96
                uint64_t expanded1 =
97
                        _pdep_u64(load_packed_group<4 * BIT_WIDTH, 4 * BIT_WIDTH>(group_input),
98
                                  pdep_mask<uint16_t, BIT_WIDTH>());
99
                __m128i packed16 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
100
                                                  static_cast<int64_t>(expanded0));
101
                __m256i unpacked32 = _mm256_cvtepu16_epi32(packed16);
102
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked32);
103
            }
104
12
        } else {
105
12
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
106
12
        }
107
12
    }
_ZN5doris10PdepUnpack8unpack32ItLi11EEEvPKhPT_
Line
Count
Source
64
12
    __attribute__((target("bmi2,avx2"))) static void unpack32(const uint8_t* input, T* output) {
65
12
        static_assert(is_supported_type<T, BIT_WIDTH>());
66
        if constexpr (std::is_same_v<T, uint8_t>) {
67
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
68
        } else if constexpr (std::is_same_v<T, uint16_t> && BIT_WIDTH <= 8) {
69
            for (int group = 0; group < 2; ++group) {
70
                const int first_value = group * 16;
71
                const uint8_t* group_input = input + group * 2 * BIT_WIDTH;
72
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(group_input),
73
                                               pdep_mask<uint8_t, BIT_WIDTH>());
74
                uint64_t expanded1 =
75
                        _pdep_u64(load_packed_group<8 * BIT_WIDTH, 8 * BIT_WIDTH>(group_input),
76
                                  pdep_mask<uint8_t, BIT_WIDTH>());
77
                __m128i packed8 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
78
                                                 static_cast<int64_t>(expanded0));
79
                __m256i unpacked16 = _mm256_cvtepu8_epi16(packed8);
80
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked16);
81
            }
82
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 8) {
83
            for (int group = 0; group < 4; ++group) {
84
                uint64_t expanded =
85
                        _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(input + group * BIT_WIDTH),
86
                                  pdep_mask<uint8_t, BIT_WIDTH>());
87
                __m256i unpacked32 = _mm256_cvtepu8_epi32(_mm_cvtsi64_si128(expanded));
88
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + group * 8), unpacked32);
89
            }
90
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 15) {
91
            for (int group = 0; group < 4; ++group) {
92
                const int first_value = group * 8;
93
                const uint8_t* group_input = input + group * BIT_WIDTH;
94
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 4 * BIT_WIDTH>(group_input),
95
                                               pdep_mask<uint16_t, BIT_WIDTH>());
96
                uint64_t expanded1 =
97
                        _pdep_u64(load_packed_group<4 * BIT_WIDTH, 4 * BIT_WIDTH>(group_input),
98
                                  pdep_mask<uint16_t, BIT_WIDTH>());
99
                __m128i packed16 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
100
                                                  static_cast<int64_t>(expanded0));
101
                __m256i unpacked32 = _mm256_cvtepu16_epi32(packed16);
102
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked32);
103
            }
104
12
        } else {
105
12
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
106
12
        }
107
12
    }
_ZN5doris10PdepUnpack8unpack32ItLi12EEEvPKhPT_
Line
Count
Source
64
12
    __attribute__((target("bmi2,avx2"))) static void unpack32(const uint8_t* input, T* output) {
65
12
        static_assert(is_supported_type<T, BIT_WIDTH>());
66
        if constexpr (std::is_same_v<T, uint8_t>) {
67
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
68
        } else if constexpr (std::is_same_v<T, uint16_t> && BIT_WIDTH <= 8) {
69
            for (int group = 0; group < 2; ++group) {
70
                const int first_value = group * 16;
71
                const uint8_t* group_input = input + group * 2 * BIT_WIDTH;
72
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(group_input),
73
                                               pdep_mask<uint8_t, BIT_WIDTH>());
74
                uint64_t expanded1 =
75
                        _pdep_u64(load_packed_group<8 * BIT_WIDTH, 8 * BIT_WIDTH>(group_input),
76
                                  pdep_mask<uint8_t, BIT_WIDTH>());
77
                __m128i packed8 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
78
                                                 static_cast<int64_t>(expanded0));
79
                __m256i unpacked16 = _mm256_cvtepu8_epi16(packed8);
80
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked16);
81
            }
82
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 8) {
83
            for (int group = 0; group < 4; ++group) {
84
                uint64_t expanded =
85
                        _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(input + group * BIT_WIDTH),
86
                                  pdep_mask<uint8_t, BIT_WIDTH>());
87
                __m256i unpacked32 = _mm256_cvtepu8_epi32(_mm_cvtsi64_si128(expanded));
88
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + group * 8), unpacked32);
89
            }
90
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 15) {
91
            for (int group = 0; group < 4; ++group) {
92
                const int first_value = group * 8;
93
                const uint8_t* group_input = input + group * BIT_WIDTH;
94
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 4 * BIT_WIDTH>(group_input),
95
                                               pdep_mask<uint16_t, BIT_WIDTH>());
96
                uint64_t expanded1 =
97
                        _pdep_u64(load_packed_group<4 * BIT_WIDTH, 4 * BIT_WIDTH>(group_input),
98
                                  pdep_mask<uint16_t, BIT_WIDTH>());
99
                __m128i packed16 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
100
                                                  static_cast<int64_t>(expanded0));
101
                __m256i unpacked32 = _mm256_cvtepu16_epi32(packed16);
102
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked32);
103
            }
104
12
        } else {
105
12
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
106
12
        }
107
12
    }
_ZN5doris10PdepUnpack8unpack32ItLi13EEEvPKhPT_
Line
Count
Source
64
12
    __attribute__((target("bmi2,avx2"))) static void unpack32(const uint8_t* input, T* output) {
65
12
        static_assert(is_supported_type<T, BIT_WIDTH>());
66
        if constexpr (std::is_same_v<T, uint8_t>) {
67
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
68
        } else if constexpr (std::is_same_v<T, uint16_t> && BIT_WIDTH <= 8) {
69
            for (int group = 0; group < 2; ++group) {
70
                const int first_value = group * 16;
71
                const uint8_t* group_input = input + group * 2 * BIT_WIDTH;
72
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(group_input),
73
                                               pdep_mask<uint8_t, BIT_WIDTH>());
74
                uint64_t expanded1 =
75
                        _pdep_u64(load_packed_group<8 * BIT_WIDTH, 8 * BIT_WIDTH>(group_input),
76
                                  pdep_mask<uint8_t, BIT_WIDTH>());
77
                __m128i packed8 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
78
                                                 static_cast<int64_t>(expanded0));
79
                __m256i unpacked16 = _mm256_cvtepu8_epi16(packed8);
80
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked16);
81
            }
82
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 8) {
83
            for (int group = 0; group < 4; ++group) {
84
                uint64_t expanded =
85
                        _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(input + group * BIT_WIDTH),
86
                                  pdep_mask<uint8_t, BIT_WIDTH>());
87
                __m256i unpacked32 = _mm256_cvtepu8_epi32(_mm_cvtsi64_si128(expanded));
88
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + group * 8), unpacked32);
89
            }
90
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 15) {
91
            for (int group = 0; group < 4; ++group) {
92
                const int first_value = group * 8;
93
                const uint8_t* group_input = input + group * BIT_WIDTH;
94
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 4 * BIT_WIDTH>(group_input),
95
                                               pdep_mask<uint16_t, BIT_WIDTH>());
96
                uint64_t expanded1 =
97
                        _pdep_u64(load_packed_group<4 * BIT_WIDTH, 4 * BIT_WIDTH>(group_input),
98
                                  pdep_mask<uint16_t, BIT_WIDTH>());
99
                __m128i packed16 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
100
                                                  static_cast<int64_t>(expanded0));
101
                __m256i unpacked32 = _mm256_cvtepu16_epi32(packed16);
102
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked32);
103
            }
104
12
        } else {
105
12
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
106
12
        }
107
12
    }
_ZN5doris10PdepUnpack8unpack32ItLi14EEEvPKhPT_
Line
Count
Source
64
12
    __attribute__((target("bmi2,avx2"))) static void unpack32(const uint8_t* input, T* output) {
65
12
        static_assert(is_supported_type<T, BIT_WIDTH>());
66
        if constexpr (std::is_same_v<T, uint8_t>) {
67
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
68
        } else if constexpr (std::is_same_v<T, uint16_t> && BIT_WIDTH <= 8) {
69
            for (int group = 0; group < 2; ++group) {
70
                const int first_value = group * 16;
71
                const uint8_t* group_input = input + group * 2 * BIT_WIDTH;
72
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(group_input),
73
                                               pdep_mask<uint8_t, BIT_WIDTH>());
74
                uint64_t expanded1 =
75
                        _pdep_u64(load_packed_group<8 * BIT_WIDTH, 8 * BIT_WIDTH>(group_input),
76
                                  pdep_mask<uint8_t, BIT_WIDTH>());
77
                __m128i packed8 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
78
                                                 static_cast<int64_t>(expanded0));
79
                __m256i unpacked16 = _mm256_cvtepu8_epi16(packed8);
80
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked16);
81
            }
82
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 8) {
83
            for (int group = 0; group < 4; ++group) {
84
                uint64_t expanded =
85
                        _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(input + group * BIT_WIDTH),
86
                                  pdep_mask<uint8_t, BIT_WIDTH>());
87
                __m256i unpacked32 = _mm256_cvtepu8_epi32(_mm_cvtsi64_si128(expanded));
88
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + group * 8), unpacked32);
89
            }
90
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 15) {
91
            for (int group = 0; group < 4; ++group) {
92
                const int first_value = group * 8;
93
                const uint8_t* group_input = input + group * BIT_WIDTH;
94
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 4 * BIT_WIDTH>(group_input),
95
                                               pdep_mask<uint16_t, BIT_WIDTH>());
96
                uint64_t expanded1 =
97
                        _pdep_u64(load_packed_group<4 * BIT_WIDTH, 4 * BIT_WIDTH>(group_input),
98
                                  pdep_mask<uint16_t, BIT_WIDTH>());
99
                __m128i packed16 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
100
                                                  static_cast<int64_t>(expanded0));
101
                __m256i unpacked32 = _mm256_cvtepu16_epi32(packed16);
102
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked32);
103
            }
104
12
        } else {
105
12
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
106
12
        }
107
12
    }
_ZN5doris10PdepUnpack8unpack32ItLi15EEEvPKhPT_
Line
Count
Source
64
12
    __attribute__((target("bmi2,avx2"))) static void unpack32(const uint8_t* input, T* output) {
65
12
        static_assert(is_supported_type<T, BIT_WIDTH>());
66
        if constexpr (std::is_same_v<T, uint8_t>) {
67
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
68
        } else if constexpr (std::is_same_v<T, uint16_t> && BIT_WIDTH <= 8) {
69
            for (int group = 0; group < 2; ++group) {
70
                const int first_value = group * 16;
71
                const uint8_t* group_input = input + group * 2 * BIT_WIDTH;
72
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(group_input),
73
                                               pdep_mask<uint8_t, BIT_WIDTH>());
74
                uint64_t expanded1 =
75
                        _pdep_u64(load_packed_group<8 * BIT_WIDTH, 8 * BIT_WIDTH>(group_input),
76
                                  pdep_mask<uint8_t, BIT_WIDTH>());
77
                __m128i packed8 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
78
                                                 static_cast<int64_t>(expanded0));
79
                __m256i unpacked16 = _mm256_cvtepu8_epi16(packed8);
80
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked16);
81
            }
82
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 8) {
83
            for (int group = 0; group < 4; ++group) {
84
                uint64_t expanded =
85
                        _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(input + group * BIT_WIDTH),
86
                                  pdep_mask<uint8_t, BIT_WIDTH>());
87
                __m256i unpacked32 = _mm256_cvtepu8_epi32(_mm_cvtsi64_si128(expanded));
88
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + group * 8), unpacked32);
89
            }
90
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 15) {
91
            for (int group = 0; group < 4; ++group) {
92
                const int first_value = group * 8;
93
                const uint8_t* group_input = input + group * BIT_WIDTH;
94
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 4 * BIT_WIDTH>(group_input),
95
                                               pdep_mask<uint16_t, BIT_WIDTH>());
96
                uint64_t expanded1 =
97
                        _pdep_u64(load_packed_group<4 * BIT_WIDTH, 4 * BIT_WIDTH>(group_input),
98
                                  pdep_mask<uint16_t, BIT_WIDTH>());
99
                __m128i packed16 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
100
                                                  static_cast<int64_t>(expanded0));
101
                __m256i unpacked32 = _mm256_cvtepu16_epi32(packed16);
102
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked32);
103
            }
104
12
        } else {
105
12
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
106
12
        }
107
12
    }
_ZN5doris10PdepUnpack8unpack32IhLi1EEEvPKhPT_
Line
Count
Source
64
2.30k
    __attribute__((target("bmi2,avx2"))) static void unpack32(const uint8_t* input, T* output) {
65
2.30k
        static_assert(is_supported_type<T, BIT_WIDTH>());
66
2.30k
        if constexpr (std::is_same_v<T, uint8_t>) {
67
2.30k
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
68
        } else if constexpr (std::is_same_v<T, uint16_t> && BIT_WIDTH <= 8) {
69
            for (int group = 0; group < 2; ++group) {
70
                const int first_value = group * 16;
71
                const uint8_t* group_input = input + group * 2 * BIT_WIDTH;
72
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(group_input),
73
                                               pdep_mask<uint8_t, BIT_WIDTH>());
74
                uint64_t expanded1 =
75
                        _pdep_u64(load_packed_group<8 * BIT_WIDTH, 8 * BIT_WIDTH>(group_input),
76
                                  pdep_mask<uint8_t, BIT_WIDTH>());
77
                __m128i packed8 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
78
                                                 static_cast<int64_t>(expanded0));
79
                __m256i unpacked16 = _mm256_cvtepu8_epi16(packed8);
80
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked16);
81
            }
82
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 8) {
83
            for (int group = 0; group < 4; ++group) {
84
                uint64_t expanded =
85
                        _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(input + group * BIT_WIDTH),
86
                                  pdep_mask<uint8_t, BIT_WIDTH>());
87
                __m256i unpacked32 = _mm256_cvtepu8_epi32(_mm_cvtsi64_si128(expanded));
88
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + group * 8), unpacked32);
89
            }
90
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 15) {
91
            for (int group = 0; group < 4; ++group) {
92
                const int first_value = group * 8;
93
                const uint8_t* group_input = input + group * BIT_WIDTH;
94
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 4 * BIT_WIDTH>(group_input),
95
                                               pdep_mask<uint16_t, BIT_WIDTH>());
96
                uint64_t expanded1 =
97
                        _pdep_u64(load_packed_group<4 * BIT_WIDTH, 4 * BIT_WIDTH>(group_input),
98
                                  pdep_mask<uint16_t, BIT_WIDTH>());
99
                __m128i packed16 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
100
                                                  static_cast<int64_t>(expanded0));
101
                __m256i unpacked32 = _mm256_cvtepu16_epi32(packed16);
102
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked32);
103
            }
104
        } else {
105
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
106
        }
107
2.30k
    }
_ZN5doris10PdepUnpack8unpack32IhLi2EEEvPKhPT_
Line
Count
Source
64
12
    __attribute__((target("bmi2,avx2"))) static void unpack32(const uint8_t* input, T* output) {
65
12
        static_assert(is_supported_type<T, BIT_WIDTH>());
66
12
        if constexpr (std::is_same_v<T, uint8_t>) {
67
12
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
68
        } else if constexpr (std::is_same_v<T, uint16_t> && BIT_WIDTH <= 8) {
69
            for (int group = 0; group < 2; ++group) {
70
                const int first_value = group * 16;
71
                const uint8_t* group_input = input + group * 2 * BIT_WIDTH;
72
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(group_input),
73
                                               pdep_mask<uint8_t, BIT_WIDTH>());
74
                uint64_t expanded1 =
75
                        _pdep_u64(load_packed_group<8 * BIT_WIDTH, 8 * BIT_WIDTH>(group_input),
76
                                  pdep_mask<uint8_t, BIT_WIDTH>());
77
                __m128i packed8 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
78
                                                 static_cast<int64_t>(expanded0));
79
                __m256i unpacked16 = _mm256_cvtepu8_epi16(packed8);
80
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked16);
81
            }
82
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 8) {
83
            for (int group = 0; group < 4; ++group) {
84
                uint64_t expanded =
85
                        _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(input + group * BIT_WIDTH),
86
                                  pdep_mask<uint8_t, BIT_WIDTH>());
87
                __m256i unpacked32 = _mm256_cvtepu8_epi32(_mm_cvtsi64_si128(expanded));
88
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + group * 8), unpacked32);
89
            }
90
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 15) {
91
            for (int group = 0; group < 4; ++group) {
92
                const int first_value = group * 8;
93
                const uint8_t* group_input = input + group * BIT_WIDTH;
94
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 4 * BIT_WIDTH>(group_input),
95
                                               pdep_mask<uint16_t, BIT_WIDTH>());
96
                uint64_t expanded1 =
97
                        _pdep_u64(load_packed_group<4 * BIT_WIDTH, 4 * BIT_WIDTH>(group_input),
98
                                  pdep_mask<uint16_t, BIT_WIDTH>());
99
                __m128i packed16 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
100
                                                  static_cast<int64_t>(expanded0));
101
                __m256i unpacked32 = _mm256_cvtepu16_epi32(packed16);
102
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked32);
103
            }
104
        } else {
105
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
106
        }
107
12
    }
_ZN5doris10PdepUnpack8unpack32IhLi3EEEvPKhPT_
Line
Count
Source
64
12
    __attribute__((target("bmi2,avx2"))) static void unpack32(const uint8_t* input, T* output) {
65
12
        static_assert(is_supported_type<T, BIT_WIDTH>());
66
12
        if constexpr (std::is_same_v<T, uint8_t>) {
67
12
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
68
        } else if constexpr (std::is_same_v<T, uint16_t> && BIT_WIDTH <= 8) {
69
            for (int group = 0; group < 2; ++group) {
70
                const int first_value = group * 16;
71
                const uint8_t* group_input = input + group * 2 * BIT_WIDTH;
72
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(group_input),
73
                                               pdep_mask<uint8_t, BIT_WIDTH>());
74
                uint64_t expanded1 =
75
                        _pdep_u64(load_packed_group<8 * BIT_WIDTH, 8 * BIT_WIDTH>(group_input),
76
                                  pdep_mask<uint8_t, BIT_WIDTH>());
77
                __m128i packed8 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
78
                                                 static_cast<int64_t>(expanded0));
79
                __m256i unpacked16 = _mm256_cvtepu8_epi16(packed8);
80
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked16);
81
            }
82
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 8) {
83
            for (int group = 0; group < 4; ++group) {
84
                uint64_t expanded =
85
                        _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(input + group * BIT_WIDTH),
86
                                  pdep_mask<uint8_t, BIT_WIDTH>());
87
                __m256i unpacked32 = _mm256_cvtepu8_epi32(_mm_cvtsi64_si128(expanded));
88
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + group * 8), unpacked32);
89
            }
90
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 15) {
91
            for (int group = 0; group < 4; ++group) {
92
                const int first_value = group * 8;
93
                const uint8_t* group_input = input + group * BIT_WIDTH;
94
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 4 * BIT_WIDTH>(group_input),
95
                                               pdep_mask<uint16_t, BIT_WIDTH>());
96
                uint64_t expanded1 =
97
                        _pdep_u64(load_packed_group<4 * BIT_WIDTH, 4 * BIT_WIDTH>(group_input),
98
                                  pdep_mask<uint16_t, BIT_WIDTH>());
99
                __m128i packed16 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
100
                                                  static_cast<int64_t>(expanded0));
101
                __m256i unpacked32 = _mm256_cvtepu16_epi32(packed16);
102
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked32);
103
            }
104
        } else {
105
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
106
        }
107
12
    }
_ZN5doris10PdepUnpack8unpack32IhLi4EEEvPKhPT_
Line
Count
Source
64
12
    __attribute__((target("bmi2,avx2"))) static void unpack32(const uint8_t* input, T* output) {
65
12
        static_assert(is_supported_type<T, BIT_WIDTH>());
66
12
        if constexpr (std::is_same_v<T, uint8_t>) {
67
12
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
68
        } else if constexpr (std::is_same_v<T, uint16_t> && BIT_WIDTH <= 8) {
69
            for (int group = 0; group < 2; ++group) {
70
                const int first_value = group * 16;
71
                const uint8_t* group_input = input + group * 2 * BIT_WIDTH;
72
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(group_input),
73
                                               pdep_mask<uint8_t, BIT_WIDTH>());
74
                uint64_t expanded1 =
75
                        _pdep_u64(load_packed_group<8 * BIT_WIDTH, 8 * BIT_WIDTH>(group_input),
76
                                  pdep_mask<uint8_t, BIT_WIDTH>());
77
                __m128i packed8 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
78
                                                 static_cast<int64_t>(expanded0));
79
                __m256i unpacked16 = _mm256_cvtepu8_epi16(packed8);
80
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked16);
81
            }
82
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 8) {
83
            for (int group = 0; group < 4; ++group) {
84
                uint64_t expanded =
85
                        _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(input + group * BIT_WIDTH),
86
                                  pdep_mask<uint8_t, BIT_WIDTH>());
87
                __m256i unpacked32 = _mm256_cvtepu8_epi32(_mm_cvtsi64_si128(expanded));
88
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + group * 8), unpacked32);
89
            }
90
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 15) {
91
            for (int group = 0; group < 4; ++group) {
92
                const int first_value = group * 8;
93
                const uint8_t* group_input = input + group * BIT_WIDTH;
94
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 4 * BIT_WIDTH>(group_input),
95
                                               pdep_mask<uint16_t, BIT_WIDTH>());
96
                uint64_t expanded1 =
97
                        _pdep_u64(load_packed_group<4 * BIT_WIDTH, 4 * BIT_WIDTH>(group_input),
98
                                  pdep_mask<uint16_t, BIT_WIDTH>());
99
                __m128i packed16 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
100
                                                  static_cast<int64_t>(expanded0));
101
                __m256i unpacked32 = _mm256_cvtepu16_epi32(packed16);
102
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked32);
103
            }
104
        } else {
105
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
106
        }
107
12
    }
_ZN5doris10PdepUnpack8unpack32IhLi5EEEvPKhPT_
Line
Count
Source
64
12
    __attribute__((target("bmi2,avx2"))) static void unpack32(const uint8_t* input, T* output) {
65
12
        static_assert(is_supported_type<T, BIT_WIDTH>());
66
12
        if constexpr (std::is_same_v<T, uint8_t>) {
67
12
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
68
        } else if constexpr (std::is_same_v<T, uint16_t> && BIT_WIDTH <= 8) {
69
            for (int group = 0; group < 2; ++group) {
70
                const int first_value = group * 16;
71
                const uint8_t* group_input = input + group * 2 * BIT_WIDTH;
72
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(group_input),
73
                                               pdep_mask<uint8_t, BIT_WIDTH>());
74
                uint64_t expanded1 =
75
                        _pdep_u64(load_packed_group<8 * BIT_WIDTH, 8 * BIT_WIDTH>(group_input),
76
                                  pdep_mask<uint8_t, BIT_WIDTH>());
77
                __m128i packed8 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
78
                                                 static_cast<int64_t>(expanded0));
79
                __m256i unpacked16 = _mm256_cvtepu8_epi16(packed8);
80
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked16);
81
            }
82
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 8) {
83
            for (int group = 0; group < 4; ++group) {
84
                uint64_t expanded =
85
                        _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(input + group * BIT_WIDTH),
86
                                  pdep_mask<uint8_t, BIT_WIDTH>());
87
                __m256i unpacked32 = _mm256_cvtepu8_epi32(_mm_cvtsi64_si128(expanded));
88
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + group * 8), unpacked32);
89
            }
90
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 15) {
91
            for (int group = 0; group < 4; ++group) {
92
                const int first_value = group * 8;
93
                const uint8_t* group_input = input + group * BIT_WIDTH;
94
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 4 * BIT_WIDTH>(group_input),
95
                                               pdep_mask<uint16_t, BIT_WIDTH>());
96
                uint64_t expanded1 =
97
                        _pdep_u64(load_packed_group<4 * BIT_WIDTH, 4 * BIT_WIDTH>(group_input),
98
                                  pdep_mask<uint16_t, BIT_WIDTH>());
99
                __m128i packed16 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
100
                                                  static_cast<int64_t>(expanded0));
101
                __m256i unpacked32 = _mm256_cvtepu16_epi32(packed16);
102
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked32);
103
            }
104
        } else {
105
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
106
        }
107
12
    }
_ZN5doris10PdepUnpack8unpack32IhLi6EEEvPKhPT_
Line
Count
Source
64
12
    __attribute__((target("bmi2,avx2"))) static void unpack32(const uint8_t* input, T* output) {
65
12
        static_assert(is_supported_type<T, BIT_WIDTH>());
66
12
        if constexpr (std::is_same_v<T, uint8_t>) {
67
12
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
68
        } else if constexpr (std::is_same_v<T, uint16_t> && BIT_WIDTH <= 8) {
69
            for (int group = 0; group < 2; ++group) {
70
                const int first_value = group * 16;
71
                const uint8_t* group_input = input + group * 2 * BIT_WIDTH;
72
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(group_input),
73
                                               pdep_mask<uint8_t, BIT_WIDTH>());
74
                uint64_t expanded1 =
75
                        _pdep_u64(load_packed_group<8 * BIT_WIDTH, 8 * BIT_WIDTH>(group_input),
76
                                  pdep_mask<uint8_t, BIT_WIDTH>());
77
                __m128i packed8 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
78
                                                 static_cast<int64_t>(expanded0));
79
                __m256i unpacked16 = _mm256_cvtepu8_epi16(packed8);
80
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked16);
81
            }
82
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 8) {
83
            for (int group = 0; group < 4; ++group) {
84
                uint64_t expanded =
85
                        _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(input + group * BIT_WIDTH),
86
                                  pdep_mask<uint8_t, BIT_WIDTH>());
87
                __m256i unpacked32 = _mm256_cvtepu8_epi32(_mm_cvtsi64_si128(expanded));
88
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + group * 8), unpacked32);
89
            }
90
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 15) {
91
            for (int group = 0; group < 4; ++group) {
92
                const int first_value = group * 8;
93
                const uint8_t* group_input = input + group * BIT_WIDTH;
94
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 4 * BIT_WIDTH>(group_input),
95
                                               pdep_mask<uint16_t, BIT_WIDTH>());
96
                uint64_t expanded1 =
97
                        _pdep_u64(load_packed_group<4 * BIT_WIDTH, 4 * BIT_WIDTH>(group_input),
98
                                  pdep_mask<uint16_t, BIT_WIDTH>());
99
                __m128i packed16 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
100
                                                  static_cast<int64_t>(expanded0));
101
                __m256i unpacked32 = _mm256_cvtepu16_epi32(packed16);
102
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked32);
103
            }
104
        } else {
105
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
106
        }
107
12
    }
_ZN5doris10PdepUnpack8unpack32IhLi7EEEvPKhPT_
Line
Count
Source
64
12
    __attribute__((target("bmi2,avx2"))) static void unpack32(const uint8_t* input, T* output) {
65
12
        static_assert(is_supported_type<T, BIT_WIDTH>());
66
12
        if constexpr (std::is_same_v<T, uint8_t>) {
67
12
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
68
        } else if constexpr (std::is_same_v<T, uint16_t> && BIT_WIDTH <= 8) {
69
            for (int group = 0; group < 2; ++group) {
70
                const int first_value = group * 16;
71
                const uint8_t* group_input = input + group * 2 * BIT_WIDTH;
72
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(group_input),
73
                                               pdep_mask<uint8_t, BIT_WIDTH>());
74
                uint64_t expanded1 =
75
                        _pdep_u64(load_packed_group<8 * BIT_WIDTH, 8 * BIT_WIDTH>(group_input),
76
                                  pdep_mask<uint8_t, BIT_WIDTH>());
77
                __m128i packed8 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
78
                                                 static_cast<int64_t>(expanded0));
79
                __m256i unpacked16 = _mm256_cvtepu8_epi16(packed8);
80
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked16);
81
            }
82
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 8) {
83
            for (int group = 0; group < 4; ++group) {
84
                uint64_t expanded =
85
                        _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(input + group * BIT_WIDTH),
86
                                  pdep_mask<uint8_t, BIT_WIDTH>());
87
                __m256i unpacked32 = _mm256_cvtepu8_epi32(_mm_cvtsi64_si128(expanded));
88
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + group * 8), unpacked32);
89
            }
90
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 15) {
91
            for (int group = 0; group < 4; ++group) {
92
                const int first_value = group * 8;
93
                const uint8_t* group_input = input + group * BIT_WIDTH;
94
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 4 * BIT_WIDTH>(group_input),
95
                                               pdep_mask<uint16_t, BIT_WIDTH>());
96
                uint64_t expanded1 =
97
                        _pdep_u64(load_packed_group<4 * BIT_WIDTH, 4 * BIT_WIDTH>(group_input),
98
                                  pdep_mask<uint16_t, BIT_WIDTH>());
99
                __m128i packed16 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
100
                                                  static_cast<int64_t>(expanded0));
101
                __m256i unpacked32 = _mm256_cvtepu16_epi32(packed16);
102
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked32);
103
            }
104
        } else {
105
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
106
        }
107
12
    }
_ZN5doris10PdepUnpack8unpack32IhLi8EEEvPKhPT_
Line
Count
Source
64
12
    __attribute__((target("bmi2,avx2"))) static void unpack32(const uint8_t* input, T* output) {
65
12
        static_assert(is_supported_type<T, BIT_WIDTH>());
66
12
        if constexpr (std::is_same_v<T, uint8_t>) {
67
12
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
68
        } else if constexpr (std::is_same_v<T, uint16_t> && BIT_WIDTH <= 8) {
69
            for (int group = 0; group < 2; ++group) {
70
                const int first_value = group * 16;
71
                const uint8_t* group_input = input + group * 2 * BIT_WIDTH;
72
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(group_input),
73
                                               pdep_mask<uint8_t, BIT_WIDTH>());
74
                uint64_t expanded1 =
75
                        _pdep_u64(load_packed_group<8 * BIT_WIDTH, 8 * BIT_WIDTH>(group_input),
76
                                  pdep_mask<uint8_t, BIT_WIDTH>());
77
                __m128i packed8 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
78
                                                 static_cast<int64_t>(expanded0));
79
                __m256i unpacked16 = _mm256_cvtepu8_epi16(packed8);
80
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked16);
81
            }
82
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 8) {
83
            for (int group = 0; group < 4; ++group) {
84
                uint64_t expanded =
85
                        _pdep_u64(load_packed_group<0, 8 * BIT_WIDTH>(input + group * BIT_WIDTH),
86
                                  pdep_mask<uint8_t, BIT_WIDTH>());
87
                __m256i unpacked32 = _mm256_cvtepu8_epi32(_mm_cvtsi64_si128(expanded));
88
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + group * 8), unpacked32);
89
            }
90
        } else if constexpr (std::is_same_v<T, uint32_t> && BIT_WIDTH <= 15) {
91
            for (int group = 0; group < 4; ++group) {
92
                const int first_value = group * 8;
93
                const uint8_t* group_input = input + group * BIT_WIDTH;
94
                uint64_t expanded0 = _pdep_u64(load_packed_group<0, 4 * BIT_WIDTH>(group_input),
95
                                               pdep_mask<uint16_t, BIT_WIDTH>());
96
                uint64_t expanded1 =
97
                        _pdep_u64(load_packed_group<4 * BIT_WIDTH, 4 * BIT_WIDTH>(group_input),
98
                                  pdep_mask<uint16_t, BIT_WIDTH>());
99
                __m128i packed16 = _mm_set_epi64x(static_cast<int64_t>(expanded1),
100
                                                  static_cast<int64_t>(expanded0));
101
                __m256i unpacked32 = _mm256_cvtepu16_epi32(packed16);
102
                _mm256_storeu_si256(reinterpret_cast<__m256i*>(output + first_value), unpacked32);
103
            }
104
        } else {
105
            unpack32_with_pdep<T, BIT_WIDTH>(input, output);
106
        }
107
12
    }
108
109
private:
110
    template <typename T, int BIT_WIDTH>
111
79.7M
    static constexpr uint64_t pdep_mask() {
112
79.7M
        constexpr int lane_bits = sizeof(T) * 8;
113
79.7M
        constexpr int lanes = 64 / lane_bits;
114
79.7M
        constexpr uint64_t value_mask = (1ULL << BIT_WIDTH) - 1;
115
79.7M
        uint64_t mask = 0;
116
522M
        for (int lane = 0; lane < lanes; ++lane) {
117
442M
            mask |= value_mask << (lane * lane_bits);
118
442M
        }
119
79.7M
        return mask;
120
79.7M
    }
_ZN5doris10PdepUnpack9pdep_maskIhLi1EEEmv
Line
Count
Source
111
54.6k
    static constexpr uint64_t pdep_mask() {
112
54.6k
        constexpr int lane_bits = sizeof(T) * 8;
113
54.6k
        constexpr int lanes = 64 / lane_bits;
114
54.6k
        constexpr uint64_t value_mask = (1ULL << BIT_WIDTH) - 1;
115
54.6k
        uint64_t mask = 0;
116
491k
        for (int lane = 0; lane < lanes; ++lane) {
117
436k
            mask |= value_mask << (lane * lane_bits);
118
436k
        }
119
54.6k
        return mask;
120
54.6k
    }
_ZN5doris10PdepUnpack9pdep_maskIhLi2EEEmv
Line
Count
Source
111
4.24M
    static constexpr uint64_t pdep_mask() {
112
4.24M
        constexpr int lane_bits = sizeof(T) * 8;
113
4.24M
        constexpr int lanes = 64 / lane_bits;
114
4.24M
        constexpr uint64_t value_mask = (1ULL << BIT_WIDTH) - 1;
115
4.24M
        uint64_t mask = 0;
116
38.2M
        for (int lane = 0; lane < lanes; ++lane) {
117
33.9M
            mask |= value_mask << (lane * lane_bits);
118
33.9M
        }
119
4.24M
        return mask;
120
4.24M
    }
_ZN5doris10PdepUnpack9pdep_maskIhLi3EEEmv
Line
Count
Source
111
5.74M
    static constexpr uint64_t pdep_mask() {
112
5.74M
        constexpr int lane_bits = sizeof(T) * 8;
113
5.74M
        constexpr int lanes = 64 / lane_bits;
114
5.74M
        constexpr uint64_t value_mask = (1ULL << BIT_WIDTH) - 1;
115
5.74M
        uint64_t mask = 0;
116
51.7M
        for (int lane = 0; lane < lanes; ++lane) {
117
45.9M
            mask |= value_mask << (lane * lane_bits);
118
45.9M
        }
119
5.74M
        return mask;
120
5.74M
    }
_ZN5doris10PdepUnpack9pdep_maskIhLi4EEEmv
Line
Count
Source
111
12.2M
    static constexpr uint64_t pdep_mask() {
112
12.2M
        constexpr int lane_bits = sizeof(T) * 8;
113
12.2M
        constexpr int lanes = 64 / lane_bits;
114
12.2M
        constexpr uint64_t value_mask = (1ULL << BIT_WIDTH) - 1;
115
12.2M
        uint64_t mask = 0;
116
110M
        for (int lane = 0; lane < lanes; ++lane) {
117
97.9M
            mask |= value_mask << (lane * lane_bits);
118
97.9M
        }
119
12.2M
        return mask;
120
12.2M
    }
_ZN5doris10PdepUnpack9pdep_maskIhLi5EEEmv
Line
Count
Source
111
42.6k
    static constexpr uint64_t pdep_mask() {
112
42.6k
        constexpr int lane_bits = sizeof(T) * 8;
113
42.6k
        constexpr int lanes = 64 / lane_bits;
114
42.6k
        constexpr uint64_t value_mask = (1ULL << BIT_WIDTH) - 1;
115
42.6k
        uint64_t mask = 0;
116
383k
        for (int lane = 0; lane < lanes; ++lane) {
117
341k
            mask |= value_mask << (lane * lane_bits);
118
341k
        }
119
42.6k
        return mask;
120
42.6k
    }
_ZN5doris10PdepUnpack9pdep_maskIhLi6EEEmv
Line
Count
Source
111
8.38M
    static constexpr uint64_t pdep_mask() {
112
8.38M
        constexpr int lane_bits = sizeof(T) * 8;
113
8.38M
        constexpr int lanes = 64 / lane_bits;
114
8.38M
        constexpr uint64_t value_mask = (1ULL << BIT_WIDTH) - 1;
115
8.38M
        uint64_t mask = 0;
116
75.4M
        for (int lane = 0; lane < lanes; ++lane) {
117
67.0M
            mask |= value_mask << (lane * lane_bits);
118
67.0M
        }
119
8.38M
        return mask;
120
8.38M
    }
_ZN5doris10PdepUnpack9pdep_maskIhLi7EEEmv
Line
Count
Source
111
85.4k
    static constexpr uint64_t pdep_mask() {
112
85.4k
        constexpr int lane_bits = sizeof(T) * 8;
113
85.4k
        constexpr int lanes = 64 / lane_bits;
114
85.4k
        constexpr uint64_t value_mask = (1ULL << BIT_WIDTH) - 1;
115
85.4k
        uint64_t mask = 0;
116
768k
        for (int lane = 0; lane < lanes; ++lane) {
117
683k
            mask |= value_mask << (lane * lane_bits);
118
683k
        }
119
85.4k
        return mask;
120
85.4k
    }
_ZN5doris10PdepUnpack9pdep_maskIhLi8EEEmv
Line
Count
Source
111
84.6k
    static constexpr uint64_t pdep_mask() {
112
84.6k
        constexpr int lane_bits = sizeof(T) * 8;
113
84.6k
        constexpr int lanes = 64 / lane_bits;
114
84.6k
        constexpr uint64_t value_mask = (1ULL << BIT_WIDTH) - 1;
115
84.6k
        uint64_t mask = 0;
116
761k
        for (int lane = 0; lane < lanes; ++lane) {
117
676k
            mask |= value_mask << (lane * lane_bits);
118
676k
        }
119
84.6k
        return mask;
120
84.6k
    }
_ZN5doris10PdepUnpack9pdep_maskItLi9EEEmv
Line
Count
Source
111
305k
    static constexpr uint64_t pdep_mask() {
112
305k
        constexpr int lane_bits = sizeof(T) * 8;
113
305k
        constexpr int lanes = 64 / lane_bits;
114
305k
        constexpr uint64_t value_mask = (1ULL << BIT_WIDTH) - 1;
115
305k
        uint64_t mask = 0;
116
1.52M
        for (int lane = 0; lane < lanes; ++lane) {
117
1.22M
            mask |= value_mask << (lane * lane_bits);
118
1.22M
        }
119
305k
        return mask;
120
305k
    }
_ZN5doris10PdepUnpack9pdep_maskItLi10EEEmv
Line
Count
Source
111
269k
    static constexpr uint64_t pdep_mask() {
112
269k
        constexpr int lane_bits = sizeof(T) * 8;
113
269k
        constexpr int lanes = 64 / lane_bits;
114
269k
        constexpr uint64_t value_mask = (1ULL << BIT_WIDTH) - 1;
115
269k
        uint64_t mask = 0;
116
1.34M
        for (int lane = 0; lane < lanes; ++lane) {
117
1.07M
            mask |= value_mask << (lane * lane_bits);
118
1.07M
        }
119
269k
        return mask;
120
269k
    }
_ZN5doris10PdepUnpack9pdep_maskItLi11EEEmv
Line
Count
Source
111
4.19M
    static constexpr uint64_t pdep_mask() {
112
4.19M
        constexpr int lane_bits = sizeof(T) * 8;
113
4.19M
        constexpr int lanes = 64 / lane_bits;
114
4.19M
        constexpr uint64_t value_mask = (1ULL << BIT_WIDTH) - 1;
115
4.19M
        uint64_t mask = 0;
116
20.9M
        for (int lane = 0; lane < lanes; ++lane) {
117
16.7M
            mask |= value_mask << (lane * lane_bits);
118
16.7M
        }
119
4.19M
        return mask;
120
4.19M
    }
_ZN5doris10PdepUnpack9pdep_maskItLi12EEEmv
Line
Count
Source
111
32.8M
    static constexpr uint64_t pdep_mask() {
112
32.8M
        constexpr int lane_bits = sizeof(T) * 8;
113
32.8M
        constexpr int lanes = 64 / lane_bits;
114
32.8M
        constexpr uint64_t value_mask = (1ULL << BIT_WIDTH) - 1;
115
32.8M
        uint64_t mask = 0;
116
164M
        for (int lane = 0; lane < lanes; ++lane) {
117
131M
            mask |= value_mask << (lane * lane_bits);
118
131M
        }
119
32.8M
        return mask;
120
32.8M
    }
_ZN5doris10PdepUnpack9pdep_maskItLi13EEEmv
Line
Count
Source
111
2.18M
    static constexpr uint64_t pdep_mask() {
112
2.18M
        constexpr int lane_bits = sizeof(T) * 8;
113
2.18M
        constexpr int lanes = 64 / lane_bits;
114
2.18M
        constexpr uint64_t value_mask = (1ULL << BIT_WIDTH) - 1;
115
2.18M
        uint64_t mask = 0;
116
10.9M
        for (int lane = 0; lane < lanes; ++lane) {
117
8.72M
            mask |= value_mask << (lane * lane_bits);
118
8.72M
        }
119
2.18M
        return mask;
120
2.18M
    }
_ZN5doris10PdepUnpack9pdep_maskItLi14EEEmv
Line
Count
Source
111
7.66M
    static constexpr uint64_t pdep_mask() {
112
7.66M
        constexpr int lane_bits = sizeof(T) * 8;
113
7.66M
        constexpr int lanes = 64 / lane_bits;
114
7.66M
        constexpr uint64_t value_mask = (1ULL << BIT_WIDTH) - 1;
115
7.66M
        uint64_t mask = 0;
116
38.3M
        for (int lane = 0; lane < lanes; ++lane) {
117
30.6M
            mask |= value_mask << (lane * lane_bits);
118
30.6M
        }
119
7.66M
        return mask;
120
7.66M
    }
_ZN5doris10PdepUnpack9pdep_maskItLi15EEEmv
Line
Count
Source
111
1.42M
    static constexpr uint64_t pdep_mask() {
112
1.42M
        constexpr int lane_bits = sizeof(T) * 8;
113
1.42M
        constexpr int lanes = 64 / lane_bits;
114
1.42M
        constexpr uint64_t value_mask = (1ULL << BIT_WIDTH) - 1;
115
1.42M
        uint64_t mask = 0;
116
7.13M
        for (int lane = 0; lane < lanes; ++lane) {
117
5.70M
            mask |= value_mask << (lane * lane_bits);
118
5.70M
        }
119
1.42M
        return mask;
120
1.42M
    }
121
122
    template <int BIT_OFFSET, int PACKED_BITS>
123
79.7M
    static uint64_t load_packed_group(const uint8_t* input) {
124
79.7M
        constexpr int byte_offset = BIT_OFFSET / 8;
125
79.7M
        constexpr int shift = BIT_OFFSET % 8;
126
79.7M
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
79.7M
        static_assert(PACKED_BITS <= 64);
128
79.7M
        static_assert(bytes_needed <= 9);
129
130
79.7M
        uint64_t low = 0;
131
79.7M
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
79.7M
        if constexpr (bytes_needed <= 8) {
133
79.7M
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
79.7M
    }
_ZN5doris10PdepUnpack17load_packed_groupILi0ELi8EEEmPKh
Line
Count
Source
123
47.6k
    static uint64_t load_packed_group(const uint8_t* input) {
124
47.6k
        constexpr int byte_offset = BIT_OFFSET / 8;
125
47.6k
        constexpr int shift = BIT_OFFSET % 8;
126
47.6k
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
47.6k
        static_assert(PACKED_BITS <= 64);
128
47.6k
        static_assert(bytes_needed <= 9);
129
130
47.6k
        uint64_t low = 0;
131
47.6k
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
47.6k
        if constexpr (bytes_needed <= 8) {
133
47.6k
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
47.6k
    }
_ZN5doris10PdepUnpack17load_packed_groupILi0ELi16EEEmPKh
Line
Count
Source
123
4.24M
    static uint64_t load_packed_group(const uint8_t* input) {
124
4.24M
        constexpr int byte_offset = BIT_OFFSET / 8;
125
4.24M
        constexpr int shift = BIT_OFFSET % 8;
126
4.24M
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
4.24M
        static_assert(PACKED_BITS <= 64);
128
4.24M
        static_assert(bytes_needed <= 9);
129
130
4.24M
        uint64_t low = 0;
131
4.24M
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
4.24M
        if constexpr (bytes_needed <= 8) {
133
4.24M
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
4.24M
    }
_ZN5doris10PdepUnpack17load_packed_groupILi0ELi24EEEmPKh
Line
Count
Source
123
5.74M
    static uint64_t load_packed_group(const uint8_t* input) {
124
5.74M
        constexpr int byte_offset = BIT_OFFSET / 8;
125
5.74M
        constexpr int shift = BIT_OFFSET % 8;
126
5.74M
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
5.74M
        static_assert(PACKED_BITS <= 64);
128
5.74M
        static_assert(bytes_needed <= 9);
129
130
5.74M
        uint64_t low = 0;
131
5.74M
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
5.74M
        if constexpr (bytes_needed <= 8) {
133
5.74M
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
5.74M
    }
_ZN5doris10PdepUnpack17load_packed_groupILi0ELi32EEEmPKh
Line
Count
Source
123
12.2M
    static uint64_t load_packed_group(const uint8_t* input) {
124
12.2M
        constexpr int byte_offset = BIT_OFFSET / 8;
125
12.2M
        constexpr int shift = BIT_OFFSET % 8;
126
12.2M
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
12.2M
        static_assert(PACKED_BITS <= 64);
128
12.2M
        static_assert(bytes_needed <= 9);
129
130
12.2M
        uint64_t low = 0;
131
12.2M
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
12.2M
        if constexpr (bytes_needed <= 8) {
133
12.2M
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
12.2M
    }
_ZN5doris10PdepUnpack17load_packed_groupILi0ELi40EEEmPKh
Line
Count
Source
123
177k
    static uint64_t load_packed_group(const uint8_t* input) {
124
177k
        constexpr int byte_offset = BIT_OFFSET / 8;
125
177k
        constexpr int shift = BIT_OFFSET % 8;
126
177k
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
177k
        static_assert(PACKED_BITS <= 64);
128
177k
        static_assert(bytes_needed <= 9);
129
130
177k
        uint64_t low = 0;
131
177k
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
177k
        if constexpr (bytes_needed <= 8) {
133
177k
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
177k
    }
_ZN5doris10PdepUnpack17load_packed_groupILi0ELi48EEEmPKh
Line
Count
Source
123
24.7M
    static uint64_t load_packed_group(const uint8_t* input) {
124
24.7M
        constexpr int byte_offset = BIT_OFFSET / 8;
125
24.7M
        constexpr int shift = BIT_OFFSET % 8;
126
24.7M
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
24.7M
        static_assert(PACKED_BITS <= 64);
128
24.7M
        static_assert(bytes_needed <= 9);
129
130
24.7M
        uint64_t low = 0;
131
18.4E
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
24.7M
        if constexpr (bytes_needed <= 8) {
133
24.7M
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
24.7M
    }
_ZN5doris10PdepUnpack17load_packed_groupILi0ELi56EEEmPKh
Line
Count
Source
123
3.91M
    static uint64_t load_packed_group(const uint8_t* input) {
124
3.91M
        constexpr int byte_offset = BIT_OFFSET / 8;
125
3.91M
        constexpr int shift = BIT_OFFSET % 8;
126
3.91M
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
3.91M
        static_assert(PACKED_BITS <= 64);
128
3.91M
        static_assert(bytes_needed <= 9);
129
130
3.91M
        uint64_t low = 0;
131
3.91M
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
3.91M
        if constexpr (bytes_needed <= 8) {
133
3.91M
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
3.91M
    }
_ZN5doris10PdepUnpack17load_packed_groupILi0ELi64EEEmPKh
Line
Count
Source
123
84.5k
    static uint64_t load_packed_group(const uint8_t* input) {
124
84.5k
        constexpr int byte_offset = BIT_OFFSET / 8;
125
84.5k
        constexpr int shift = BIT_OFFSET % 8;
126
84.5k
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
84.5k
        static_assert(PACKED_BITS <= 64);
128
84.5k
        static_assert(bytes_needed <= 9);
129
130
84.5k
        uint64_t low = 0;
131
84.5k
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
84.5k
        if constexpr (bytes_needed <= 8) {
133
84.5k
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
84.5k
    }
_ZN5doris10PdepUnpack17load_packed_groupILi0ELi36EEEmPKh
Line
Count
Source
123
152k
    static uint64_t load_packed_group(const uint8_t* input) {
124
152k
        constexpr int byte_offset = BIT_OFFSET / 8;
125
152k
        constexpr int shift = BIT_OFFSET % 8;
126
152k
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
152k
        static_assert(PACKED_BITS <= 64);
128
152k
        static_assert(bytes_needed <= 9);
129
130
152k
        uint64_t low = 0;
131
152k
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
152k
        if constexpr (bytes_needed <= 8) {
133
152k
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
152k
    }
_ZN5doris10PdepUnpack17load_packed_groupILi36ELi36EEEmPKh
Line
Count
Source
123
152k
    static uint64_t load_packed_group(const uint8_t* input) {
124
152k
        constexpr int byte_offset = BIT_OFFSET / 8;
125
152k
        constexpr int shift = BIT_OFFSET % 8;
126
152k
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
152k
        static_assert(PACKED_BITS <= 64);
128
152k
        static_assert(bytes_needed <= 9);
129
130
152k
        uint64_t low = 0;
131
152k
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
152k
        if constexpr (bytes_needed <= 8) {
133
152k
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
152k
    }
_ZN5doris10PdepUnpack17load_packed_groupILi40ELi40EEEmPKh
Line
Count
Source
123
134k
    static uint64_t load_packed_group(const uint8_t* input) {
124
134k
        constexpr int byte_offset = BIT_OFFSET / 8;
125
134k
        constexpr int shift = BIT_OFFSET % 8;
126
134k
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
134k
        static_assert(PACKED_BITS <= 64);
128
134k
        static_assert(bytes_needed <= 9);
129
130
134k
        uint64_t low = 0;
131
134k
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
134k
        if constexpr (bytes_needed <= 8) {
133
134k
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
134k
    }
_ZN5doris10PdepUnpack17load_packed_groupILi0ELi44EEEmPKh
Line
Count
Source
123
2.09M
    static uint64_t load_packed_group(const uint8_t* input) {
124
2.09M
        constexpr int byte_offset = BIT_OFFSET / 8;
125
2.09M
        constexpr int shift = BIT_OFFSET % 8;
126
2.09M
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
2.09M
        static_assert(PACKED_BITS <= 64);
128
2.09M
        static_assert(bytes_needed <= 9);
129
130
2.09M
        uint64_t low = 0;
131
2.09M
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
2.09M
        if constexpr (bytes_needed <= 8) {
133
2.09M
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
2.09M
    }
_ZN5doris10PdepUnpack17load_packed_groupILi44ELi44EEEmPKh
Line
Count
Source
123
2.09M
    static uint64_t load_packed_group(const uint8_t* input) {
124
2.09M
        constexpr int byte_offset = BIT_OFFSET / 8;
125
2.09M
        constexpr int shift = BIT_OFFSET % 8;
126
2.09M
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
2.09M
        static_assert(PACKED_BITS <= 64);
128
2.09M
        static_assert(bytes_needed <= 9);
129
130
2.09M
        uint64_t low = 0;
131
2.09M
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
2.09M
        if constexpr (bytes_needed <= 8) {
133
2.09M
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
2.09M
    }
_ZN5doris10PdepUnpack17load_packed_groupILi48ELi48EEEmPKh
Line
Count
Source
123
16.4M
    static uint64_t load_packed_group(const uint8_t* input) {
124
16.4M
        constexpr int byte_offset = BIT_OFFSET / 8;
125
16.4M
        constexpr int shift = BIT_OFFSET % 8;
126
16.4M
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
16.4M
        static_assert(PACKED_BITS <= 64);
128
16.4M
        static_assert(bytes_needed <= 9);
129
130
16.4M
        uint64_t low = 0;
131
18.4E
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
16.4M
        if constexpr (bytes_needed <= 8) {
133
16.4M
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
16.4M
    }
_ZN5doris10PdepUnpack17load_packed_groupILi0ELi52EEEmPKh
Line
Count
Source
123
1.09M
    static uint64_t load_packed_group(const uint8_t* input) {
124
1.09M
        constexpr int byte_offset = BIT_OFFSET / 8;
125
1.09M
        constexpr int shift = BIT_OFFSET % 8;
126
1.09M
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
1.09M
        static_assert(PACKED_BITS <= 64);
128
1.09M
        static_assert(bytes_needed <= 9);
129
130
1.09M
        uint64_t low = 0;
131
1.09M
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
1.09M
        if constexpr (bytes_needed <= 8) {
133
1.09M
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
1.09M
    }
_ZN5doris10PdepUnpack17load_packed_groupILi52ELi52EEEmPKh
Line
Count
Source
123
1.09M
    static uint64_t load_packed_group(const uint8_t* input) {
124
1.09M
        constexpr int byte_offset = BIT_OFFSET / 8;
125
1.09M
        constexpr int shift = BIT_OFFSET % 8;
126
1.09M
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
1.09M
        static_assert(PACKED_BITS <= 64);
128
1.09M
        static_assert(bytes_needed <= 9);
129
130
1.09M
        uint64_t low = 0;
131
1.09M
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
1.09M
        if constexpr (bytes_needed <= 8) {
133
1.09M
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
1.09M
    }
_ZN5doris10PdepUnpack17load_packed_groupILi56ELi56EEEmPKh
Line
Count
Source
123
3.83M
    static uint64_t load_packed_group(const uint8_t* input) {
124
3.83M
        constexpr int byte_offset = BIT_OFFSET / 8;
125
3.83M
        constexpr int shift = BIT_OFFSET % 8;
126
3.83M
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
3.83M
        static_assert(PACKED_BITS <= 64);
128
3.83M
        static_assert(bytes_needed <= 9);
129
130
3.83M
        uint64_t low = 0;
131
18.4E
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
3.83M
        if constexpr (bytes_needed <= 8) {
133
3.83M
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
3.83M
    }
_ZN5doris10PdepUnpack17load_packed_groupILi0ELi60EEEmPKh
Line
Count
Source
123
713k
    static uint64_t load_packed_group(const uint8_t* input) {
124
713k
        constexpr int byte_offset = BIT_OFFSET / 8;
125
713k
        constexpr int shift = BIT_OFFSET % 8;
126
713k
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
713k
        static_assert(PACKED_BITS <= 64);
128
713k
        static_assert(bytes_needed <= 9);
129
130
713k
        uint64_t low = 0;
131
713k
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
713k
        if constexpr (bytes_needed <= 8) {
133
713k
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
713k
    }
_ZN5doris10PdepUnpack17load_packed_groupILi60ELi60EEEmPKh
Line
Count
Source
123
713k
    static uint64_t load_packed_group(const uint8_t* input) {
124
713k
        constexpr int byte_offset = BIT_OFFSET / 8;
125
713k
        constexpr int shift = BIT_OFFSET % 8;
126
713k
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
713k
        static_assert(PACKED_BITS <= 64);
128
713k
        static_assert(bytes_needed <= 9);
129
130
713k
        uint64_t low = 0;
131
713k
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
713k
        if constexpr (bytes_needed <= 8) {
133
713k
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
713k
    }
_ZN5doris10PdepUnpack17load_packed_groupILi8ELi8EEEmPKh
Line
Count
Source
123
2.33k
    static uint64_t load_packed_group(const uint8_t* input) {
124
2.33k
        constexpr int byte_offset = BIT_OFFSET / 8;
125
2.33k
        constexpr int shift = BIT_OFFSET % 8;
126
2.33k
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
2.33k
        static_assert(PACKED_BITS <= 64);
128
2.33k
        static_assert(bytes_needed <= 9);
129
130
2.33k
        uint64_t low = 0;
131
2.33k
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
2.33k
        if constexpr (bytes_needed <= 8) {
133
2.33k
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
2.33k
    }
_ZN5doris10PdepUnpack17load_packed_groupILi16ELi16EEEmPKh
Line
Count
Source
123
1.40k
    static uint64_t load_packed_group(const uint8_t* input) {
124
1.40k
        constexpr int byte_offset = BIT_OFFSET / 8;
125
1.40k
        constexpr int shift = BIT_OFFSET % 8;
126
1.40k
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
1.40k
        static_assert(PACKED_BITS <= 64);
128
1.40k
        static_assert(bytes_needed <= 9);
129
130
1.40k
        uint64_t low = 0;
131
1.40k
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
1.40k
        if constexpr (bytes_needed <= 8) {
133
1.40k
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
1.40k
    }
_ZN5doris10PdepUnpack17load_packed_groupILi24ELi24EEEmPKh
Line
Count
Source
123
4.68k
    static uint64_t load_packed_group(const uint8_t* input) {
124
4.68k
        constexpr int byte_offset = BIT_OFFSET / 8;
125
4.68k
        constexpr int shift = BIT_OFFSET % 8;
126
4.68k
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
4.68k
        static_assert(PACKED_BITS <= 64);
128
4.68k
        static_assert(bytes_needed <= 9);
129
130
4.68k
        uint64_t low = 0;
131
4.68k
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
4.68k
        if constexpr (bytes_needed <= 8) {
133
4.68k
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
4.68k
    }
_ZN5doris10PdepUnpack17load_packed_groupILi32ELi32EEEmPKh
Line
Count
Source
123
36
    static uint64_t load_packed_group(const uint8_t* input) {
124
36
        constexpr int byte_offset = BIT_OFFSET / 8;
125
36
        constexpr int shift = BIT_OFFSET % 8;
126
36
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
36
        static_assert(PACKED_BITS <= 64);
128
36
        static_assert(bytes_needed <= 9);
129
130
36
        uint64_t low = 0;
131
36
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
36
        if constexpr (bytes_needed <= 8) {
133
36
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
36
    }
_ZN5doris10PdepUnpack17load_packed_groupILi64ELi64EEEmPKh
Line
Count
Source
123
36
    static uint64_t load_packed_group(const uint8_t* input) {
124
36
        constexpr int byte_offset = BIT_OFFSET / 8;
125
36
        constexpr int shift = BIT_OFFSET % 8;
126
36
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
36
        static_assert(PACKED_BITS <= 64);
128
36
        static_assert(bytes_needed <= 9);
129
130
36
        uint64_t low = 0;
131
36
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
36
        if constexpr (bytes_needed <= 8) {
133
36
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
36
    }
_ZN5doris10PdepUnpack17load_packed_groupILi72ELi36EEEmPKh
Line
Count
Source
123
12
    static uint64_t load_packed_group(const uint8_t* input) {
124
12
        constexpr int byte_offset = BIT_OFFSET / 8;
125
12
        constexpr int shift = BIT_OFFSET % 8;
126
12
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
12
        static_assert(PACKED_BITS <= 64);
128
12
        static_assert(bytes_needed <= 9);
129
130
12
        uint64_t low = 0;
131
12
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
12
        if constexpr (bytes_needed <= 8) {
133
12
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
12
    }
_ZN5doris10PdepUnpack17load_packed_groupILi108ELi36EEEmPKh
Line
Count
Source
123
12
    static uint64_t load_packed_group(const uint8_t* input) {
124
12
        constexpr int byte_offset = BIT_OFFSET / 8;
125
12
        constexpr int shift = BIT_OFFSET % 8;
126
12
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
12
        static_assert(PACKED_BITS <= 64);
128
12
        static_assert(bytes_needed <= 9);
129
130
12
        uint64_t low = 0;
131
12
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
12
        if constexpr (bytes_needed <= 8) {
133
12
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
12
    }
_ZN5doris10PdepUnpack17load_packed_groupILi144ELi36EEEmPKh
Line
Count
Source
123
12
    static uint64_t load_packed_group(const uint8_t* input) {
124
12
        constexpr int byte_offset = BIT_OFFSET / 8;
125
12
        constexpr int shift = BIT_OFFSET % 8;
126
12
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
12
        static_assert(PACKED_BITS <= 64);
128
12
        static_assert(bytes_needed <= 9);
129
130
12
        uint64_t low = 0;
131
12
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
12
        if constexpr (bytes_needed <= 8) {
133
12
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
12
    }
_ZN5doris10PdepUnpack17load_packed_groupILi180ELi36EEEmPKh
Line
Count
Source
123
12
    static uint64_t load_packed_group(const uint8_t* input) {
124
12
        constexpr int byte_offset = BIT_OFFSET / 8;
125
12
        constexpr int shift = BIT_OFFSET % 8;
126
12
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
12
        static_assert(PACKED_BITS <= 64);
128
12
        static_assert(bytes_needed <= 9);
129
130
12
        uint64_t low = 0;
131
12
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
12
        if constexpr (bytes_needed <= 8) {
133
12
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
12
    }
_ZN5doris10PdepUnpack17load_packed_groupILi216ELi36EEEmPKh
Line
Count
Source
123
12
    static uint64_t load_packed_group(const uint8_t* input) {
124
12
        constexpr int byte_offset = BIT_OFFSET / 8;
125
12
        constexpr int shift = BIT_OFFSET % 8;
126
12
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
12
        static_assert(PACKED_BITS <= 64);
128
12
        static_assert(bytes_needed <= 9);
129
130
12
        uint64_t low = 0;
131
12
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
12
        if constexpr (bytes_needed <= 8) {
133
12
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
12
    }
_ZN5doris10PdepUnpack17load_packed_groupILi252ELi36EEEmPKh
Line
Count
Source
123
12
    static uint64_t load_packed_group(const uint8_t* input) {
124
12
        constexpr int byte_offset = BIT_OFFSET / 8;
125
12
        constexpr int shift = BIT_OFFSET % 8;
126
12
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
12
        static_assert(PACKED_BITS <= 64);
128
12
        static_assert(bytes_needed <= 9);
129
130
12
        uint64_t low = 0;
131
12
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
12
        if constexpr (bytes_needed <= 8) {
133
12
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
12
    }
_ZN5doris10PdepUnpack17load_packed_groupILi80ELi40EEEmPKh
Line
Count
Source
123
24
    static uint64_t load_packed_group(const uint8_t* input) {
124
24
        constexpr int byte_offset = BIT_OFFSET / 8;
125
24
        constexpr int shift = BIT_OFFSET % 8;
126
24
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
24
        static_assert(PACKED_BITS <= 64);
128
24
        static_assert(bytes_needed <= 9);
129
130
24
        uint64_t low = 0;
131
24
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
24
        if constexpr (bytes_needed <= 8) {
133
24
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
24
    }
_ZN5doris10PdepUnpack17load_packed_groupILi120ELi40EEEmPKh
Line
Count
Source
123
24
    static uint64_t load_packed_group(const uint8_t* input) {
124
24
        constexpr int byte_offset = BIT_OFFSET / 8;
125
24
        constexpr int shift = BIT_OFFSET % 8;
126
24
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
24
        static_assert(PACKED_BITS <= 64);
128
24
        static_assert(bytes_needed <= 9);
129
130
24
        uint64_t low = 0;
131
24
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
24
        if constexpr (bytes_needed <= 8) {
133
24
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
24
    }
_ZN5doris10PdepUnpack17load_packed_groupILi160ELi40EEEmPKh
Line
Count
Source
123
12
    static uint64_t load_packed_group(const uint8_t* input) {
124
12
        constexpr int byte_offset = BIT_OFFSET / 8;
125
12
        constexpr int shift = BIT_OFFSET % 8;
126
12
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
12
        static_assert(PACKED_BITS <= 64);
128
12
        static_assert(bytes_needed <= 9);
129
130
12
        uint64_t low = 0;
131
12
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
12
        if constexpr (bytes_needed <= 8) {
133
12
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
12
    }
_ZN5doris10PdepUnpack17load_packed_groupILi200ELi40EEEmPKh
Line
Count
Source
123
12
    static uint64_t load_packed_group(const uint8_t* input) {
124
12
        constexpr int byte_offset = BIT_OFFSET / 8;
125
12
        constexpr int shift = BIT_OFFSET % 8;
126
12
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
12
        static_assert(PACKED_BITS <= 64);
128
12
        static_assert(bytes_needed <= 9);
129
130
12
        uint64_t low = 0;
131
12
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
12
        if constexpr (bytes_needed <= 8) {
133
12
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
12
    }
_ZN5doris10PdepUnpack17load_packed_groupILi240ELi40EEEmPKh
Line
Count
Source
123
12
    static uint64_t load_packed_group(const uint8_t* input) {
124
12
        constexpr int byte_offset = BIT_OFFSET / 8;
125
12
        constexpr int shift = BIT_OFFSET % 8;
126
12
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
12
        static_assert(PACKED_BITS <= 64);
128
12
        static_assert(bytes_needed <= 9);
129
130
12
        uint64_t low = 0;
131
12
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
12
        if constexpr (bytes_needed <= 8) {
133
12
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
12
    }
_ZN5doris10PdepUnpack17load_packed_groupILi280ELi40EEEmPKh
Line
Count
Source
123
12
    static uint64_t load_packed_group(const uint8_t* input) {
124
12
        constexpr int byte_offset = BIT_OFFSET / 8;
125
12
        constexpr int shift = BIT_OFFSET % 8;
126
12
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
12
        static_assert(PACKED_BITS <= 64);
128
12
        static_assert(bytes_needed <= 9);
129
130
12
        uint64_t low = 0;
131
12
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
12
        if constexpr (bytes_needed <= 8) {
133
12
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
12
    }
_ZN5doris10PdepUnpack17load_packed_groupILi88ELi44EEEmPKh
Line
Count
Source
123
12
    static uint64_t load_packed_group(const uint8_t* input) {
124
12
        constexpr int byte_offset = BIT_OFFSET / 8;
125
12
        constexpr int shift = BIT_OFFSET % 8;
126
12
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
12
        static_assert(PACKED_BITS <= 64);
128
12
        static_assert(bytes_needed <= 9);
129
130
12
        uint64_t low = 0;
131
12
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
12
        if constexpr (bytes_needed <= 8) {
133
12
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
12
    }
_ZN5doris10PdepUnpack17load_packed_groupILi132ELi44EEEmPKh
Line
Count
Source
123
12
    static uint64_t load_packed_group(const uint8_t* input) {
124
12
        constexpr int byte_offset = BIT_OFFSET / 8;
125
12
        constexpr int shift = BIT_OFFSET % 8;
126
12
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
12
        static_assert(PACKED_BITS <= 64);
128
12
        static_assert(bytes_needed <= 9);
129
130
12
        uint64_t low = 0;
131
12
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
12
        if constexpr (bytes_needed <= 8) {
133
12
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
12
    }
_ZN5doris10PdepUnpack17load_packed_groupILi176ELi44EEEmPKh
Line
Count
Source
123
12
    static uint64_t load_packed_group(const uint8_t* input) {
124
12
        constexpr int byte_offset = BIT_OFFSET / 8;
125
12
        constexpr int shift = BIT_OFFSET % 8;
126
12
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
12
        static_assert(PACKED_BITS <= 64);
128
12
        static_assert(bytes_needed <= 9);
129
130
12
        uint64_t low = 0;
131
12
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
12
        if constexpr (bytes_needed <= 8) {
133
12
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
12
    }
_ZN5doris10PdepUnpack17load_packed_groupILi220ELi44EEEmPKh
Line
Count
Source
123
12
    static uint64_t load_packed_group(const uint8_t* input) {
124
12
        constexpr int byte_offset = BIT_OFFSET / 8;
125
12
        constexpr int shift = BIT_OFFSET % 8;
126
12
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
12
        static_assert(PACKED_BITS <= 64);
128
12
        static_assert(bytes_needed <= 9);
129
130
12
        uint64_t low = 0;
131
12
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
12
        if constexpr (bytes_needed <= 8) {
133
12
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
12
    }
_ZN5doris10PdepUnpack17load_packed_groupILi264ELi44EEEmPKh
Line
Count
Source
123
12
    static uint64_t load_packed_group(const uint8_t* input) {
124
12
        constexpr int byte_offset = BIT_OFFSET / 8;
125
12
        constexpr int shift = BIT_OFFSET % 8;
126
12
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
12
        static_assert(PACKED_BITS <= 64);
128
12
        static_assert(bytes_needed <= 9);
129
130
12
        uint64_t low = 0;
131
12
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
12
        if constexpr (bytes_needed <= 8) {
133
12
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
12
    }
_ZN5doris10PdepUnpack17load_packed_groupILi308ELi44EEEmPKh
Line
Count
Source
123
12
    static uint64_t load_packed_group(const uint8_t* input) {
124
12
        constexpr int byte_offset = BIT_OFFSET / 8;
125
12
        constexpr int shift = BIT_OFFSET % 8;
126
12
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
12
        static_assert(PACKED_BITS <= 64);
128
12
        static_assert(bytes_needed <= 9);
129
130
12
        uint64_t low = 0;
131
12
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
12
        if constexpr (bytes_needed <= 8) {
133
12
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
12
    }
_ZN5doris10PdepUnpack17load_packed_groupILi96ELi48EEEmPKh
Line
Count
Source
123
24
    static uint64_t load_packed_group(const uint8_t* input) {
124
24
        constexpr int byte_offset = BIT_OFFSET / 8;
125
24
        constexpr int shift = BIT_OFFSET % 8;
126
24
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
24
        static_assert(PACKED_BITS <= 64);
128
24
        static_assert(bytes_needed <= 9);
129
130
24
        uint64_t low = 0;
131
24
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
24
        if constexpr (bytes_needed <= 8) {
133
24
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
24
    }
_ZN5doris10PdepUnpack17load_packed_groupILi144ELi48EEEmPKh
Line
Count
Source
123
24
    static uint64_t load_packed_group(const uint8_t* input) {
124
24
        constexpr int byte_offset = BIT_OFFSET / 8;
125
24
        constexpr int shift = BIT_OFFSET % 8;
126
24
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
24
        static_assert(PACKED_BITS <= 64);
128
24
        static_assert(bytes_needed <= 9);
129
130
24
        uint64_t low = 0;
131
24
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
24
        if constexpr (bytes_needed <= 8) {
133
24
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
24
    }
_ZN5doris10PdepUnpack17load_packed_groupILi192ELi48EEEmPKh
Line
Count
Source
123
12
    static uint64_t load_packed_group(const uint8_t* input) {
124
12
        constexpr int byte_offset = BIT_OFFSET / 8;
125
12
        constexpr int shift = BIT_OFFSET % 8;
126
12
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
12
        static_assert(PACKED_BITS <= 64);
128
12
        static_assert(bytes_needed <= 9);
129
130
12
        uint64_t low = 0;
131
12
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
12
        if constexpr (bytes_needed <= 8) {
133
12
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
12
    }
_ZN5doris10PdepUnpack17load_packed_groupILi240ELi48EEEmPKh
Line
Count
Source
123
12
    static uint64_t load_packed_group(const uint8_t* input) {
124
12
        constexpr int byte_offset = BIT_OFFSET / 8;
125
12
        constexpr int shift = BIT_OFFSET % 8;
126
12
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
12
        static_assert(PACKED_BITS <= 64);
128
12
        static_assert(bytes_needed <= 9);
129
130
12
        uint64_t low = 0;
131
12
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
12
        if constexpr (bytes_needed <= 8) {
133
12
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
12
    }
_ZN5doris10PdepUnpack17load_packed_groupILi288ELi48EEEmPKh
Line
Count
Source
123
12
    static uint64_t load_packed_group(const uint8_t* input) {
124
12
        constexpr int byte_offset = BIT_OFFSET / 8;
125
12
        constexpr int shift = BIT_OFFSET % 8;
126
12
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
12
        static_assert(PACKED_BITS <= 64);
128
12
        static_assert(bytes_needed <= 9);
129
130
12
        uint64_t low = 0;
131
12
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
12
        if constexpr (bytes_needed <= 8) {
133
12
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
12
    }
_ZN5doris10PdepUnpack17load_packed_groupILi336ELi48EEEmPKh
Line
Count
Source
123
12
    static uint64_t load_packed_group(const uint8_t* input) {
124
12
        constexpr int byte_offset = BIT_OFFSET / 8;
125
12
        constexpr int shift = BIT_OFFSET % 8;
126
12
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
12
        static_assert(PACKED_BITS <= 64);
128
12
        static_assert(bytes_needed <= 9);
129
130
12
        uint64_t low = 0;
131
12
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
12
        if constexpr (bytes_needed <= 8) {
133
12
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
12
    }
_ZN5doris10PdepUnpack17load_packed_groupILi104ELi52EEEmPKh
Line
Count
Source
123
12
    static uint64_t load_packed_group(const uint8_t* input) {
124
12
        constexpr int byte_offset = BIT_OFFSET / 8;
125
12
        constexpr int shift = BIT_OFFSET % 8;
126
12
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
12
        static_assert(PACKED_BITS <= 64);
128
12
        static_assert(bytes_needed <= 9);
129
130
12
        uint64_t low = 0;
131
12
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
12
        if constexpr (bytes_needed <= 8) {
133
12
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
12
    }
_ZN5doris10PdepUnpack17load_packed_groupILi156ELi52EEEmPKh
Line
Count
Source
123
12
    static uint64_t load_packed_group(const uint8_t* input) {
124
12
        constexpr int byte_offset = BIT_OFFSET / 8;
125
12
        constexpr int shift = BIT_OFFSET % 8;
126
12
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
12
        static_assert(PACKED_BITS <= 64);
128
12
        static_assert(bytes_needed <= 9);
129
130
12
        uint64_t low = 0;
131
12
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
12
        if constexpr (bytes_needed <= 8) {
133
12
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
12
    }
_ZN5doris10PdepUnpack17load_packed_groupILi208ELi52EEEmPKh
Line
Count
Source
123
12
    static uint64_t load_packed_group(const uint8_t* input) {
124
12
        constexpr int byte_offset = BIT_OFFSET / 8;
125
12
        constexpr int shift = BIT_OFFSET % 8;
126
12
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
12
        static_assert(PACKED_BITS <= 64);
128
12
        static_assert(bytes_needed <= 9);
129
130
12
        uint64_t low = 0;
131
12
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
12
        if constexpr (bytes_needed <= 8) {
133
12
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
12
    }
_ZN5doris10PdepUnpack17load_packed_groupILi260ELi52EEEmPKh
Line
Count
Source
123
12
    static uint64_t load_packed_group(const uint8_t* input) {
124
12
        constexpr int byte_offset = BIT_OFFSET / 8;
125
12
        constexpr int shift = BIT_OFFSET % 8;
126
12
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
12
        static_assert(PACKED_BITS <= 64);
128
12
        static_assert(bytes_needed <= 9);
129
130
12
        uint64_t low = 0;
131
12
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
12
        if constexpr (bytes_needed <= 8) {
133
12
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
12
    }
_ZN5doris10PdepUnpack17load_packed_groupILi312ELi52EEEmPKh
Line
Count
Source
123
12
    static uint64_t load_packed_group(const uint8_t* input) {
124
12
        constexpr int byte_offset = BIT_OFFSET / 8;
125
12
        constexpr int shift = BIT_OFFSET % 8;
126
12
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
12
        static_assert(PACKED_BITS <= 64);
128
12
        static_assert(bytes_needed <= 9);
129
130
12
        uint64_t low = 0;
131
12
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
12
        if constexpr (bytes_needed <= 8) {
133
12
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
12
    }
_ZN5doris10PdepUnpack17load_packed_groupILi364ELi52EEEmPKh
Line
Count
Source
123
12
    static uint64_t load_packed_group(const uint8_t* input) {
124
12
        constexpr int byte_offset = BIT_OFFSET / 8;
125
12
        constexpr int shift = BIT_OFFSET % 8;
126
12
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
12
        static_assert(PACKED_BITS <= 64);
128
12
        static_assert(bytes_needed <= 9);
129
130
12
        uint64_t low = 0;
131
12
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
12
        if constexpr (bytes_needed <= 8) {
133
12
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
12
    }
_ZN5doris10PdepUnpack17load_packed_groupILi112ELi56EEEmPKh
Line
Count
Source
123
24
    static uint64_t load_packed_group(const uint8_t* input) {
124
24
        constexpr int byte_offset = BIT_OFFSET / 8;
125
24
        constexpr int shift = BIT_OFFSET % 8;
126
24
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
24
        static_assert(PACKED_BITS <= 64);
128
24
        static_assert(bytes_needed <= 9);
129
130
24
        uint64_t low = 0;
131
24
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
24
        if constexpr (bytes_needed <= 8) {
133
24
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
24
    }
_ZN5doris10PdepUnpack17load_packed_groupILi168ELi56EEEmPKh
Line
Count
Source
123
24
    static uint64_t load_packed_group(const uint8_t* input) {
124
24
        constexpr int byte_offset = BIT_OFFSET / 8;
125
24
        constexpr int shift = BIT_OFFSET % 8;
126
24
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
24
        static_assert(PACKED_BITS <= 64);
128
24
        static_assert(bytes_needed <= 9);
129
130
24
        uint64_t low = 0;
131
24
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
24
        if constexpr (bytes_needed <= 8) {
133
24
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
24
    }
_ZN5doris10PdepUnpack17load_packed_groupILi224ELi56EEEmPKh
Line
Count
Source
123
12
    static uint64_t load_packed_group(const uint8_t* input) {
124
12
        constexpr int byte_offset = BIT_OFFSET / 8;
125
12
        constexpr int shift = BIT_OFFSET % 8;
126
12
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
12
        static_assert(PACKED_BITS <= 64);
128
12
        static_assert(bytes_needed <= 9);
129
130
12
        uint64_t low = 0;
131
12
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
12
        if constexpr (bytes_needed <= 8) {
133
12
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
12
    }
_ZN5doris10PdepUnpack17load_packed_groupILi280ELi56EEEmPKh
Line
Count
Source
123
12
    static uint64_t load_packed_group(const uint8_t* input) {
124
12
        constexpr int byte_offset = BIT_OFFSET / 8;
125
12
        constexpr int shift = BIT_OFFSET % 8;
126
12
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
12
        static_assert(PACKED_BITS <= 64);
128
12
        static_assert(bytes_needed <= 9);
129
130
12
        uint64_t low = 0;
131
12
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
12
        if constexpr (bytes_needed <= 8) {
133
12
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
12
    }
_ZN5doris10PdepUnpack17load_packed_groupILi336ELi56EEEmPKh
Line
Count
Source
123
12
    static uint64_t load_packed_group(const uint8_t* input) {
124
12
        constexpr int byte_offset = BIT_OFFSET / 8;
125
12
        constexpr int shift = BIT_OFFSET % 8;
126
12
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
12
        static_assert(PACKED_BITS <= 64);
128
12
        static_assert(bytes_needed <= 9);
129
130
12
        uint64_t low = 0;
131
12
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
12
        if constexpr (bytes_needed <= 8) {
133
12
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
12
    }
_ZN5doris10PdepUnpack17load_packed_groupILi392ELi56EEEmPKh
Line
Count
Source
123
12
    static uint64_t load_packed_group(const uint8_t* input) {
124
12
        constexpr int byte_offset = BIT_OFFSET / 8;
125
12
        constexpr int shift = BIT_OFFSET % 8;
126
12
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
12
        static_assert(PACKED_BITS <= 64);
128
12
        static_assert(bytes_needed <= 9);
129
130
12
        uint64_t low = 0;
131
12
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
12
        if constexpr (bytes_needed <= 8) {
133
12
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
12
    }
_ZN5doris10PdepUnpack17load_packed_groupILi120ELi60EEEmPKh
Line
Count
Source
123
12
    static uint64_t load_packed_group(const uint8_t* input) {
124
12
        constexpr int byte_offset = BIT_OFFSET / 8;
125
12
        constexpr int shift = BIT_OFFSET % 8;
126
12
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
12
        static_assert(PACKED_BITS <= 64);
128
12
        static_assert(bytes_needed <= 9);
129
130
12
        uint64_t low = 0;
131
12
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
12
        if constexpr (bytes_needed <= 8) {
133
12
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
12
    }
_ZN5doris10PdepUnpack17load_packed_groupILi180ELi60EEEmPKh
Line
Count
Source
123
12
    static uint64_t load_packed_group(const uint8_t* input) {
124
12
        constexpr int byte_offset = BIT_OFFSET / 8;
125
12
        constexpr int shift = BIT_OFFSET % 8;
126
12
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
12
        static_assert(PACKED_BITS <= 64);
128
12
        static_assert(bytes_needed <= 9);
129
130
12
        uint64_t low = 0;
131
12
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
12
        if constexpr (bytes_needed <= 8) {
133
12
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
12
    }
_ZN5doris10PdepUnpack17load_packed_groupILi240ELi60EEEmPKh
Line
Count
Source
123
12
    static uint64_t load_packed_group(const uint8_t* input) {
124
12
        constexpr int byte_offset = BIT_OFFSET / 8;
125
12
        constexpr int shift = BIT_OFFSET % 8;
126
12
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
12
        static_assert(PACKED_BITS <= 64);
128
12
        static_assert(bytes_needed <= 9);
129
130
12
        uint64_t low = 0;
131
12
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
12
        if constexpr (bytes_needed <= 8) {
133
12
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
12
    }
_ZN5doris10PdepUnpack17load_packed_groupILi300ELi60EEEmPKh
Line
Count
Source
123
12
    static uint64_t load_packed_group(const uint8_t* input) {
124
12
        constexpr int byte_offset = BIT_OFFSET / 8;
125
12
        constexpr int shift = BIT_OFFSET % 8;
126
12
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
12
        static_assert(PACKED_BITS <= 64);
128
12
        static_assert(bytes_needed <= 9);
129
130
12
        uint64_t low = 0;
131
12
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
12
        if constexpr (bytes_needed <= 8) {
133
12
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
12
    }
_ZN5doris10PdepUnpack17load_packed_groupILi360ELi60EEEmPKh
Line
Count
Source
123
12
    static uint64_t load_packed_group(const uint8_t* input) {
124
12
        constexpr int byte_offset = BIT_OFFSET / 8;
125
12
        constexpr int shift = BIT_OFFSET % 8;
126
12
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
12
        static_assert(PACKED_BITS <= 64);
128
12
        static_assert(bytes_needed <= 9);
129
130
12
        uint64_t low = 0;
131
12
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
12
        if constexpr (bytes_needed <= 8) {
133
12
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
12
    }
_ZN5doris10PdepUnpack17load_packed_groupILi420ELi60EEEmPKh
Line
Count
Source
123
12
    static uint64_t load_packed_group(const uint8_t* input) {
124
12
        constexpr int byte_offset = BIT_OFFSET / 8;
125
12
        constexpr int shift = BIT_OFFSET % 8;
126
12
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
12
        static_assert(PACKED_BITS <= 64);
128
12
        static_assert(bytes_needed <= 9);
129
130
12
        uint64_t low = 0;
131
12
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
12
        if constexpr (bytes_needed <= 8) {
133
12
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
12
    }
_ZN5doris10PdepUnpack17load_packed_groupILi24ELi8EEEmPKh
Line
Count
Source
123
2.30k
    static uint64_t load_packed_group(const uint8_t* input) {
124
2.30k
        constexpr int byte_offset = BIT_OFFSET / 8;
125
2.30k
        constexpr int shift = BIT_OFFSET % 8;
126
2.30k
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
2.30k
        static_assert(PACKED_BITS <= 64);
128
2.30k
        static_assert(bytes_needed <= 9);
129
130
2.30k
        uint64_t low = 0;
131
2.30k
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
2.30k
        if constexpr (bytes_needed <= 8) {
133
2.30k
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
2.30k
    }
_ZN5doris10PdepUnpack17load_packed_groupILi16ELi8EEEmPKh
Line
Count
Source
123
2.30k
    static uint64_t load_packed_group(const uint8_t* input) {
124
2.30k
        constexpr int byte_offset = BIT_OFFSET / 8;
125
2.30k
        constexpr int shift = BIT_OFFSET % 8;
126
2.30k
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
2.30k
        static_assert(PACKED_BITS <= 64);
128
2.30k
        static_assert(bytes_needed <= 9);
129
130
2.30k
        uint64_t low = 0;
131
2.30k
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
2.30k
        if constexpr (bytes_needed <= 8) {
133
2.30k
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
2.30k
    }
_ZN5doris10PdepUnpack17load_packed_groupILi48ELi16EEEmPKh
Line
Count
Source
123
12
    static uint64_t load_packed_group(const uint8_t* input) {
124
12
        constexpr int byte_offset = BIT_OFFSET / 8;
125
12
        constexpr int shift = BIT_OFFSET % 8;
126
12
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
12
        static_assert(PACKED_BITS <= 64);
128
12
        static_assert(bytes_needed <= 9);
129
130
12
        uint64_t low = 0;
131
12
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
12
        if constexpr (bytes_needed <= 8) {
133
12
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
12
    }
_ZN5doris10PdepUnpack17load_packed_groupILi32ELi16EEEmPKh
Line
Count
Source
123
12
    static uint64_t load_packed_group(const uint8_t* input) {
124
12
        constexpr int byte_offset = BIT_OFFSET / 8;
125
12
        constexpr int shift = BIT_OFFSET % 8;
126
12
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
12
        static_assert(PACKED_BITS <= 64);
128
12
        static_assert(bytes_needed <= 9);
129
130
12
        uint64_t low = 0;
131
12
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
12
        if constexpr (bytes_needed <= 8) {
133
12
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
12
    }
_ZN5doris10PdepUnpack17load_packed_groupILi72ELi24EEEmPKh
Line
Count
Source
123
12
    static uint64_t load_packed_group(const uint8_t* input) {
124
12
        constexpr int byte_offset = BIT_OFFSET / 8;
125
12
        constexpr int shift = BIT_OFFSET % 8;
126
12
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
12
        static_assert(PACKED_BITS <= 64);
128
12
        static_assert(bytes_needed <= 9);
129
130
12
        uint64_t low = 0;
131
12
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
12
        if constexpr (bytes_needed <= 8) {
133
12
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
12
    }
_ZN5doris10PdepUnpack17load_packed_groupILi48ELi24EEEmPKh
Line
Count
Source
123
12
    static uint64_t load_packed_group(const uint8_t* input) {
124
12
        constexpr int byte_offset = BIT_OFFSET / 8;
125
12
        constexpr int shift = BIT_OFFSET % 8;
126
12
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
12
        static_assert(PACKED_BITS <= 64);
128
12
        static_assert(bytes_needed <= 9);
129
130
12
        uint64_t low = 0;
131
12
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
12
        if constexpr (bytes_needed <= 8) {
133
12
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
12
    }
_ZN5doris10PdepUnpack17load_packed_groupILi96ELi32EEEmPKh
Line
Count
Source
123
12
    static uint64_t load_packed_group(const uint8_t* input) {
124
12
        constexpr int byte_offset = BIT_OFFSET / 8;
125
12
        constexpr int shift = BIT_OFFSET % 8;
126
12
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
12
        static_assert(PACKED_BITS <= 64);
128
12
        static_assert(bytes_needed <= 9);
129
130
12
        uint64_t low = 0;
131
12
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
12
        if constexpr (bytes_needed <= 8) {
133
12
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
12
    }
_ZN5doris10PdepUnpack17load_packed_groupILi64ELi32EEEmPKh
Line
Count
Source
123
12
    static uint64_t load_packed_group(const uint8_t* input) {
124
12
        constexpr int byte_offset = BIT_OFFSET / 8;
125
12
        constexpr int shift = BIT_OFFSET % 8;
126
12
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
12
        static_assert(PACKED_BITS <= 64);
128
12
        static_assert(bytes_needed <= 9);
129
130
12
        uint64_t low = 0;
131
12
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
12
        if constexpr (bytes_needed <= 8) {
133
12
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
12
    }
_ZN5doris10PdepUnpack17load_packed_groupILi192ELi64EEEmPKh
Line
Count
Source
123
12
    static uint64_t load_packed_group(const uint8_t* input) {
124
12
        constexpr int byte_offset = BIT_OFFSET / 8;
125
12
        constexpr int shift = BIT_OFFSET % 8;
126
12
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
12
        static_assert(PACKED_BITS <= 64);
128
12
        static_assert(bytes_needed <= 9);
129
130
12
        uint64_t low = 0;
131
12
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
12
        if constexpr (bytes_needed <= 8) {
133
12
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
12
    }
_ZN5doris10PdepUnpack17load_packed_groupILi128ELi64EEEmPKh
Line
Count
Source
123
12
    static uint64_t load_packed_group(const uint8_t* input) {
124
12
        constexpr int byte_offset = BIT_OFFSET / 8;
125
12
        constexpr int shift = BIT_OFFSET % 8;
126
12
        constexpr int bytes_needed = (shift + PACKED_BITS + 7) / 8;
127
12
        static_assert(PACKED_BITS <= 64);
128
12
        static_assert(bytes_needed <= 9);
129
130
12
        uint64_t low = 0;
131
12
        std::memcpy(&low, input + byte_offset, bytes_needed < 8 ? bytes_needed : 8);
132
12
        if constexpr (bytes_needed <= 8) {
133
12
            return low >> shift;
134
        } else {
135
            uint8_t high = input[byte_offset + 8];
136
            return static_cast<uint64_t>((static_cast<unsigned __int128>(high) << 64 | low) >>
137
                                         shift);
138
        }
139
12
    }
140
141
    template <typename T, int BIT_WIDTH, std::size_t GROUP>
142
10.2k
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
10.2k
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
10.2k
        constexpr int first_value = GROUP * lanes;
145
10.2k
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
10.2k
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
10.2k
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
10.2k
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
10.2k
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
10.2k
    }
_ZN5doris10PdepUnpack12unpack_groupItLi9ELm0EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi9ELm1EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi9ELm2EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi9ELm3EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi9ELm4EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi9ELm5EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi9ELm6EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi9ELm7EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi10ELm0EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi10ELm1EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi10ELm2EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi10ELm3EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi10ELm4EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi10ELm5EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi10ELm6EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi10ELm7EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi11ELm0EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi11ELm1EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi11ELm2EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi11ELm3EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi11ELm4EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi11ELm5EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi11ELm6EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi11ELm7EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi12ELm0EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi12ELm1EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi12ELm2EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi12ELm3EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi12ELm4EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi12ELm5EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi12ELm6EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi12ELm7EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi13ELm0EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi13ELm1EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi13ELm2EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi13ELm3EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi13ELm4EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi13ELm5EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi13ELm6EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi13ELm7EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi14ELm0EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi14ELm1EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi14ELm2EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi14ELm3EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi14ELm4EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi14ELm5EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi14ELm6EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi14ELm7EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi15ELm0EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi15ELm1EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi15ELm2EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi15ELm3EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi15ELm4EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi15ELm5EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi15ELm6EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupItLi15ELm7EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupIhLi1ELm3EEEvPKhPT_
Line
Count
Source
142
2.30k
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
2.30k
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
2.30k
        constexpr int first_value = GROUP * lanes;
145
2.30k
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
2.30k
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
2.30k
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
2.30k
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
2.30k
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
2.30k
    }
_ZN5doris10PdepUnpack12unpack_groupIhLi1ELm2EEEvPKhPT_
Line
Count
Source
142
2.30k
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
2.30k
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
2.30k
        constexpr int first_value = GROUP * lanes;
145
2.30k
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
2.30k
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
2.30k
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
2.30k
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
2.30k
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
2.30k
    }
_ZN5doris10PdepUnpack12unpack_groupIhLi1ELm1EEEvPKhPT_
Line
Count
Source
142
2.30k
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
2.30k
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
2.30k
        constexpr int first_value = GROUP * lanes;
145
2.30k
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
2.30k
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
2.30k
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
2.30k
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
2.30k
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
2.30k
    }
_ZN5doris10PdepUnpack12unpack_groupIhLi1ELm0EEEvPKhPT_
Line
Count
Source
142
2.30k
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
2.30k
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
2.30k
        constexpr int first_value = GROUP * lanes;
145
2.30k
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
2.30k
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
2.30k
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
2.30k
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
2.30k
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
2.30k
    }
_ZN5doris10PdepUnpack12unpack_groupIhLi2ELm3EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupIhLi2ELm2EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupIhLi2ELm1EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupIhLi2ELm0EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupIhLi3ELm3EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupIhLi3ELm2EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupIhLi3ELm1EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupIhLi3ELm0EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupIhLi4ELm3EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupIhLi4ELm2EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupIhLi4ELm1EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupIhLi4ELm0EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupIhLi5ELm3EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupIhLi5ELm2EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupIhLi5ELm1EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupIhLi5ELm0EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupIhLi6ELm3EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupIhLi6ELm2EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupIhLi6ELm1EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupIhLi6ELm0EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupIhLi7ELm3EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupIhLi7ELm2EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupIhLi7ELm1EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupIhLi7ELm0EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupIhLi8ELm3EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupIhLi8ELm2EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupIhLi8ELm1EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
_ZN5doris10PdepUnpack12unpack_groupIhLi8ELm0EEEvPKhPT_
Line
Count
Source
142
12
    __attribute__((target("bmi2"))) static void unpack_group(const uint8_t* input, T* output) {
143
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
144
12
        constexpr int first_value = GROUP * lanes;
145
12
        constexpr int bit_offset = first_value * BIT_WIDTH;
146
12
        constexpr int packed_bits = lanes * BIT_WIDTH;
147
12
        uint64_t packed = load_packed_group<bit_offset, packed_bits>(input);
148
12
        uint64_t expanded = _pdep_u64(packed, pdep_mask<T, BIT_WIDTH>());
149
12
        std::memcpy(output + first_value, &expanded, sizeof(expanded));
150
12
    }
151
152
    template <typename T, int BIT_WIDTH, std::size_t... GROUPS>
153
    __attribute__((target("bmi2"))) static void unpack32_with_pdep_impl(
154
2.47k
            const uint8_t* input, T* output, std::index_sequence<GROUPS...>) {
155
2.47k
        (unpack_group<T, BIT_WIDTH, GROUPS>(input, output), ...);
156
2.47k
    }
_ZN5doris10PdepUnpack23unpack32_with_pdep_implItLi9EJLm0ELm1ELm2ELm3ELm4ELm5ELm6ELm7EEEEvPKhPT_St16integer_sequenceImJXspT1_EEE
Line
Count
Source
154
12
            const uint8_t* input, T* output, std::index_sequence<GROUPS...>) {
155
12
        (unpack_group<T, BIT_WIDTH, GROUPS>(input, output), ...);
156
12
    }
_ZN5doris10PdepUnpack23unpack32_with_pdep_implItLi10EJLm0ELm1ELm2ELm3ELm4ELm5ELm6ELm7EEEEvPKhPT_St16integer_sequenceImJXspT1_EEE
Line
Count
Source
154
12
            const uint8_t* input, T* output, std::index_sequence<GROUPS...>) {
155
12
        (unpack_group<T, BIT_WIDTH, GROUPS>(input, output), ...);
156
12
    }
_ZN5doris10PdepUnpack23unpack32_with_pdep_implItLi11EJLm0ELm1ELm2ELm3ELm4ELm5ELm6ELm7EEEEvPKhPT_St16integer_sequenceImJXspT1_EEE
Line
Count
Source
154
12
            const uint8_t* input, T* output, std::index_sequence<GROUPS...>) {
155
12
        (unpack_group<T, BIT_WIDTH, GROUPS>(input, output), ...);
156
12
    }
_ZN5doris10PdepUnpack23unpack32_with_pdep_implItLi12EJLm0ELm1ELm2ELm3ELm4ELm5ELm6ELm7EEEEvPKhPT_St16integer_sequenceImJXspT1_EEE
Line
Count
Source
154
12
            const uint8_t* input, T* output, std::index_sequence<GROUPS...>) {
155
12
        (unpack_group<T, BIT_WIDTH, GROUPS>(input, output), ...);
156
12
    }
_ZN5doris10PdepUnpack23unpack32_with_pdep_implItLi13EJLm0ELm1ELm2ELm3ELm4ELm5ELm6ELm7EEEEvPKhPT_St16integer_sequenceImJXspT1_EEE
Line
Count
Source
154
12
            const uint8_t* input, T* output, std::index_sequence<GROUPS...>) {
155
12
        (unpack_group<T, BIT_WIDTH, GROUPS>(input, output), ...);
156
12
    }
_ZN5doris10PdepUnpack23unpack32_with_pdep_implItLi14EJLm0ELm1ELm2ELm3ELm4ELm5ELm6ELm7EEEEvPKhPT_St16integer_sequenceImJXspT1_EEE
Line
Count
Source
154
12
            const uint8_t* input, T* output, std::index_sequence<GROUPS...>) {
155
12
        (unpack_group<T, BIT_WIDTH, GROUPS>(input, output), ...);
156
12
    }
_ZN5doris10PdepUnpack23unpack32_with_pdep_implItLi15EJLm0ELm1ELm2ELm3ELm4ELm5ELm6ELm7EEEEvPKhPT_St16integer_sequenceImJXspT1_EEE
Line
Count
Source
154
12
            const uint8_t* input, T* output, std::index_sequence<GROUPS...>) {
155
12
        (unpack_group<T, BIT_WIDTH, GROUPS>(input, output), ...);
156
12
    }
_ZN5doris10PdepUnpack23unpack32_with_pdep_implIhLi1EJLm0ELm1ELm2ELm3EEEEvPKhPT_St16integer_sequenceImJXspT1_EEE
Line
Count
Source
154
2.30k
            const uint8_t* input, T* output, std::index_sequence<GROUPS...>) {
155
2.30k
        (unpack_group<T, BIT_WIDTH, GROUPS>(input, output), ...);
156
2.30k
    }
_ZN5doris10PdepUnpack23unpack32_with_pdep_implIhLi2EJLm0ELm1ELm2ELm3EEEEvPKhPT_St16integer_sequenceImJXspT1_EEE
Line
Count
Source
154
12
            const uint8_t* input, T* output, std::index_sequence<GROUPS...>) {
155
12
        (unpack_group<T, BIT_WIDTH, GROUPS>(input, output), ...);
156
12
    }
_ZN5doris10PdepUnpack23unpack32_with_pdep_implIhLi3EJLm0ELm1ELm2ELm3EEEEvPKhPT_St16integer_sequenceImJXspT1_EEE
Line
Count
Source
154
12
            const uint8_t* input, T* output, std::index_sequence<GROUPS...>) {
155
12
        (unpack_group<T, BIT_WIDTH, GROUPS>(input, output), ...);
156
12
    }
_ZN5doris10PdepUnpack23unpack32_with_pdep_implIhLi4EJLm0ELm1ELm2ELm3EEEEvPKhPT_St16integer_sequenceImJXspT1_EEE
Line
Count
Source
154
12
            const uint8_t* input, T* output, std::index_sequence<GROUPS...>) {
155
12
        (unpack_group<T, BIT_WIDTH, GROUPS>(input, output), ...);
156
12
    }
_ZN5doris10PdepUnpack23unpack32_with_pdep_implIhLi5EJLm0ELm1ELm2ELm3EEEEvPKhPT_St16integer_sequenceImJXspT1_EEE
Line
Count
Source
154
12
            const uint8_t* input, T* output, std::index_sequence<GROUPS...>) {
155
12
        (unpack_group<T, BIT_WIDTH, GROUPS>(input, output), ...);
156
12
    }
_ZN5doris10PdepUnpack23unpack32_with_pdep_implIhLi6EJLm0ELm1ELm2ELm3EEEEvPKhPT_St16integer_sequenceImJXspT1_EEE
Line
Count
Source
154
12
            const uint8_t* input, T* output, std::index_sequence<GROUPS...>) {
155
12
        (unpack_group<T, BIT_WIDTH, GROUPS>(input, output), ...);
156
12
    }
_ZN5doris10PdepUnpack23unpack32_with_pdep_implIhLi7EJLm0ELm1ELm2ELm3EEEEvPKhPT_St16integer_sequenceImJXspT1_EEE
Line
Count
Source
154
12
            const uint8_t* input, T* output, std::index_sequence<GROUPS...>) {
155
12
        (unpack_group<T, BIT_WIDTH, GROUPS>(input, output), ...);
156
12
    }
_ZN5doris10PdepUnpack23unpack32_with_pdep_implIhLi8EJLm0ELm1ELm2ELm3EEEEvPKhPT_St16integer_sequenceImJXspT1_EEE
Line
Count
Source
154
12
            const uint8_t* input, T* output, std::index_sequence<GROUPS...>) {
155
12
        (unpack_group<T, BIT_WIDTH, GROUPS>(input, output), ...);
156
12
    }
157
158
    template <typename T, int BIT_WIDTH>
159
    __attribute__((target("bmi2"))) static void unpack32_with_pdep(const uint8_t* input,
160
2.47k
                                                                   T* output) {
161
2.47k
        constexpr int lanes = 64 / (sizeof(T) * 8);
162
2.47k
        unpack32_with_pdep_impl<T, BIT_WIDTH>(input, output,
163
2.47k
                                              std::make_index_sequence<32 / lanes> {});
164
2.47k
    }
_ZN5doris10PdepUnpack18unpack32_with_pdepItLi9EEEvPKhPT_
Line
Count
Source
160
12
                                                                   T* output) {
161
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
162
12
        unpack32_with_pdep_impl<T, BIT_WIDTH>(input, output,
163
12
                                              std::make_index_sequence<32 / lanes> {});
164
12
    }
_ZN5doris10PdepUnpack18unpack32_with_pdepItLi10EEEvPKhPT_
Line
Count
Source
160
12
                                                                   T* output) {
161
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
162
12
        unpack32_with_pdep_impl<T, BIT_WIDTH>(input, output,
163
12
                                              std::make_index_sequence<32 / lanes> {});
164
12
    }
_ZN5doris10PdepUnpack18unpack32_with_pdepItLi11EEEvPKhPT_
Line
Count
Source
160
12
                                                                   T* output) {
161
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
162
12
        unpack32_with_pdep_impl<T, BIT_WIDTH>(input, output,
163
12
                                              std::make_index_sequence<32 / lanes> {});
164
12
    }
_ZN5doris10PdepUnpack18unpack32_with_pdepItLi12EEEvPKhPT_
Line
Count
Source
160
12
                                                                   T* output) {
161
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
162
12
        unpack32_with_pdep_impl<T, BIT_WIDTH>(input, output,
163
12
                                              std::make_index_sequence<32 / lanes> {});
164
12
    }
_ZN5doris10PdepUnpack18unpack32_with_pdepItLi13EEEvPKhPT_
Line
Count
Source
160
12
                                                                   T* output) {
161
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
162
12
        unpack32_with_pdep_impl<T, BIT_WIDTH>(input, output,
163
12
                                              std::make_index_sequence<32 / lanes> {});
164
12
    }
_ZN5doris10PdepUnpack18unpack32_with_pdepItLi14EEEvPKhPT_
Line
Count
Source
160
12
                                                                   T* output) {
161
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
162
12
        unpack32_with_pdep_impl<T, BIT_WIDTH>(input, output,
163
12
                                              std::make_index_sequence<32 / lanes> {});
164
12
    }
_ZN5doris10PdepUnpack18unpack32_with_pdepItLi15EEEvPKhPT_
Line
Count
Source
160
12
                                                                   T* output) {
161
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
162
12
        unpack32_with_pdep_impl<T, BIT_WIDTH>(input, output,
163
12
                                              std::make_index_sequence<32 / lanes> {});
164
12
    }
_ZN5doris10PdepUnpack18unpack32_with_pdepIhLi1EEEvPKhPT_
Line
Count
Source
160
2.30k
                                                                   T* output) {
161
2.30k
        constexpr int lanes = 64 / (sizeof(T) * 8);
162
2.30k
        unpack32_with_pdep_impl<T, BIT_WIDTH>(input, output,
163
2.30k
                                              std::make_index_sequence<32 / lanes> {});
164
2.30k
    }
_ZN5doris10PdepUnpack18unpack32_with_pdepIhLi2EEEvPKhPT_
Line
Count
Source
160
12
                                                                   T* output) {
161
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
162
12
        unpack32_with_pdep_impl<T, BIT_WIDTH>(input, output,
163
12
                                              std::make_index_sequence<32 / lanes> {});
164
12
    }
_ZN5doris10PdepUnpack18unpack32_with_pdepIhLi3EEEvPKhPT_
Line
Count
Source
160
12
                                                                   T* output) {
161
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
162
12
        unpack32_with_pdep_impl<T, BIT_WIDTH>(input, output,
163
12
                                              std::make_index_sequence<32 / lanes> {});
164
12
    }
_ZN5doris10PdepUnpack18unpack32_with_pdepIhLi4EEEvPKhPT_
Line
Count
Source
160
12
                                                                   T* output) {
161
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
162
12
        unpack32_with_pdep_impl<T, BIT_WIDTH>(input, output,
163
12
                                              std::make_index_sequence<32 / lanes> {});
164
12
    }
_ZN5doris10PdepUnpack18unpack32_with_pdepIhLi5EEEvPKhPT_
Line
Count
Source
160
12
                                                                   T* output) {
161
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
162
12
        unpack32_with_pdep_impl<T, BIT_WIDTH>(input, output,
163
12
                                              std::make_index_sequence<32 / lanes> {});
164
12
    }
_ZN5doris10PdepUnpack18unpack32_with_pdepIhLi6EEEvPKhPT_
Line
Count
Source
160
12
                                                                   T* output) {
161
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
162
12
        unpack32_with_pdep_impl<T, BIT_WIDTH>(input, output,
163
12
                                              std::make_index_sequence<32 / lanes> {});
164
12
    }
_ZN5doris10PdepUnpack18unpack32_with_pdepIhLi7EEEvPKhPT_
Line
Count
Source
160
12
                                                                   T* output) {
161
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
162
12
        unpack32_with_pdep_impl<T, BIT_WIDTH>(input, output,
163
12
                                              std::make_index_sequence<32 / lanes> {});
164
12
    }
_ZN5doris10PdepUnpack18unpack32_with_pdepIhLi8EEEvPKhPT_
Line
Count
Source
160
12
                                                                   T* output) {
161
12
        constexpr int lanes = 64 / (sizeof(T) * 8);
162
12
        unpack32_with_pdep_impl<T, BIT_WIDTH>(input, output,
163
12
                                              std::make_index_sequence<32 / lanes> {});
164
12
    }
165
};
166
167
} // namespace doris
168
169
#endif