xref: /aosp_15_r20/external/pytorch/c10/util/quint4x2.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  * quint4x2 is for un-signed 4 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) quint4x2 {
13*da0073e9SAndroid Build Coastguard Worker   using underlying = uint8_t;
14*da0073e9SAndroid Build Coastguard Worker   uint8_t val_;
15*da0073e9SAndroid Build Coastguard Worker   quint4x2() = default;
quint4x2quint4x216*da0073e9SAndroid Build Coastguard Worker   C10_HOST_DEVICE explicit quint4x2(uint8_t val) : val_(val) {}
17*da0073e9SAndroid Build Coastguard Worker };
18*da0073e9SAndroid Build Coastguard Worker 
19*da0073e9SAndroid Build Coastguard Worker } // namespace c10
20