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 * bits1x8 is an uninterpreted dtype of a tensor with 1 bit (packed to byte 10*da0073e9SAndroid Build Coastguard Worker * boundary), without any semantics defined. 11*da0073e9SAndroid Build Coastguard Worker */ 12*da0073e9SAndroid Build Coastguard Worker struct alignas(1) bits1x8 { 13*da0073e9SAndroid Build Coastguard Worker using underlying = uint8_t; 14*da0073e9SAndroid Build Coastguard Worker uint8_t val_; 15*da0073e9SAndroid Build Coastguard Worker bits1x8() = default; bits1x8bits1x816*da0073e9SAndroid Build Coastguard Worker C10_HOST_DEVICE explicit bits1x8(uint8_t val) : val_(val) {} 17*da0073e9SAndroid Build Coastguard Worker }; 18*da0073e9SAndroid Build Coastguard Worker 19*da0073e9SAndroid Build Coastguard Worker /** 20*da0073e9SAndroid Build Coastguard Worker * bits2x4 is an uninterpreted dtype of a tensor with 2 bits (packed to byte 21*da0073e9SAndroid Build Coastguard Worker * boundary), without any semantics defined. 22*da0073e9SAndroid Build Coastguard Worker */ 23*da0073e9SAndroid Build Coastguard Worker struct alignas(1) bits2x4 { 24*da0073e9SAndroid Build Coastguard Worker using underlying = uint8_t; 25*da0073e9SAndroid Build Coastguard Worker uint8_t val_; 26*da0073e9SAndroid Build Coastguard Worker bits2x4() = default; bits2x4bits2x427*da0073e9SAndroid Build Coastguard Worker C10_HOST_DEVICE explicit bits2x4(uint8_t val) : val_(val) {} 28*da0073e9SAndroid Build Coastguard Worker }; 29*da0073e9SAndroid Build Coastguard Worker 30*da0073e9SAndroid Build Coastguard Worker /** 31*da0073e9SAndroid Build Coastguard Worker * bits4x2 is an uninterpreted dtype of a tensor with 4 bits (packed to byte 32*da0073e9SAndroid Build Coastguard Worker * boundary), without any semantics defined. 33*da0073e9SAndroid Build Coastguard Worker */ 34*da0073e9SAndroid Build Coastguard Worker struct alignas(1) bits4x2 { 35*da0073e9SAndroid Build Coastguard Worker using underlying = uint8_t; 36*da0073e9SAndroid Build Coastguard Worker uint8_t val_; 37*da0073e9SAndroid Build Coastguard Worker bits4x2() = default; bits4x2bits4x238*da0073e9SAndroid Build Coastguard Worker C10_HOST_DEVICE explicit bits4x2(uint8_t val) : val_(val) {} 39*da0073e9SAndroid Build Coastguard Worker }; 40*da0073e9SAndroid Build Coastguard Worker 41*da0073e9SAndroid Build Coastguard Worker /** 42*da0073e9SAndroid Build Coastguard Worker * bits8 is an uninterpreted dtype of a tensor with 8 bits, without any 43*da0073e9SAndroid Build Coastguard Worker * semantics defined. 44*da0073e9SAndroid Build Coastguard Worker */ 45*da0073e9SAndroid Build Coastguard Worker struct alignas(1) bits8 { 46*da0073e9SAndroid Build Coastguard Worker uint8_t val_; 47*da0073e9SAndroid Build Coastguard Worker bits8() = default; bits8bits848*da0073e9SAndroid Build Coastguard Worker C10_HOST_DEVICE explicit bits8(uint8_t val) : val_(val) {} 49*da0073e9SAndroid Build Coastguard Worker }; 50*da0073e9SAndroid Build Coastguard Worker 51*da0073e9SAndroid Build Coastguard Worker /** 52*da0073e9SAndroid Build Coastguard Worker * bits16 is an uninterpreted dtype of a tensor with 16 bits, without any 53*da0073e9SAndroid Build Coastguard Worker * semantics defined. 54*da0073e9SAndroid Build Coastguard Worker */ 55*da0073e9SAndroid Build Coastguard Worker struct alignas(2) bits16 { 56*da0073e9SAndroid Build Coastguard Worker uint16_t val_; 57*da0073e9SAndroid Build Coastguard Worker bits16() = default; bits16bits1658*da0073e9SAndroid Build Coastguard Worker C10_HOST_DEVICE explicit bits16(uint16_t val) : val_(val) {} 59*da0073e9SAndroid Build Coastguard Worker }; 60*da0073e9SAndroid Build Coastguard Worker 61*da0073e9SAndroid Build Coastguard Worker } // namespace c10 62