xref: /aosp_15_r20/external/pytorch/c10/util/quint2x4.h (revision da0073e96a02ea20f0ac840b70461e3646d07c45)
1*da0073e9SAndroid Build Coastguard Worker #pragma once
2*da0073e9SAndroid Build Coastguard Worker #include <cstdint>
3*da0073e9SAndroid Build Coastguard Worker 
4*da0073e9SAndroid Build Coastguard Worker #include <c10/macros/Macros.h>
5*da0073e9SAndroid Build Coastguard Worker 
6*da0073e9SAndroid Build Coastguard Worker namespace c10 {
7*da0073e9SAndroid Build Coastguard Worker 
8*da0073e9SAndroid Build Coastguard Worker /**
9*da0073e9SAndroid Build Coastguard Worker  * quint2x4 is for un-signed 2 bit quantized Tensors that are packed to byte
10*da0073e9SAndroid Build Coastguard Worker  * boundary.
11*da0073e9SAndroid Build Coastguard Worker  */
12*da0073e9SAndroid Build Coastguard Worker struct alignas(1) quint2x4 {
13*da0073e9SAndroid Build Coastguard Worker   using underlying = uint8_t;
14*da0073e9SAndroid Build Coastguard Worker   uint8_t val_;
15*da0073e9SAndroid Build Coastguard Worker   quint2x4() = default;
quint2x4quint2x416*da0073e9SAndroid Build Coastguard Worker   C10_HOST_DEVICE explicit quint2x4(uint8_t val) : val_(val) {}
17*da0073e9SAndroid Build Coastguard Worker };
18*da0073e9SAndroid Build Coastguard Worker 
19*da0073e9SAndroid Build Coastguard Worker } // namespace c10
20