/* automatically generated by rust-bindgen 0.70.1 */

// Copyright (C) 2024 Advanced Micro Devices. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
// the Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

#![allow(non_upper_case_globals)]

#[repr(C)]
#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
pub struct __BindgenBitfieldUnit<Storage> {
    storage: Storage,
}
impl<Storage> __BindgenBitfieldUnit<Storage> {
    #[inline]
    pub const fn new(storage: Storage) -> Self {
        Self { storage }
    }
}
impl<Storage> __BindgenBitfieldUnit<Storage>
where
    Storage: AsRef<[u8]> + AsMut<[u8]>,
{
    #[inline]
    pub fn get_bit(&self, index: usize) -> bool {
        debug_assert!(index / 8 < self.storage.as_ref().len());
        let byte_index = index / 8;
        let byte = self.storage.as_ref()[byte_index];
        let bit_index = if cfg!(target_endian = "big") {
            7 - (index % 8)
        } else {
            index % 8
        };
        let mask = 1 << bit_index;
        byte & mask == mask
    }
    #[inline]
    pub fn set_bit(&mut self, index: usize, val: bool) {
        debug_assert!(index / 8 < self.storage.as_ref().len());
        let byte_index = index / 8;
        let byte = &mut self.storage.as_mut()[byte_index];
        let bit_index = if cfg!(target_endian = "big") {
            7 - (index % 8)
        } else {
            index % 8
        };
        let mask = 1 << bit_index;
        if val {
            *byte |= mask;
        } else {
            *byte &= !mask;
        }
    }
    #[inline]
    pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 {
        debug_assert!(bit_width <= 64);
        debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
        debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
        let mut val = 0;
        for i in 0..(bit_width as usize) {
            if self.get_bit(i + bit_offset) {
                let index = if cfg!(target_endian = "big") {
                    bit_width as usize - 1 - i
                } else {
                    i
                };
                val |= 1 << index;
            }
        }
        val
    }
    #[inline]
    pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) {
        debug_assert!(bit_width <= 64);
        debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
        debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
        for i in 0..(bit_width as usize) {
            let mask = 1 << i;
            let val_bit_is_set = val & mask == mask;
            let index = if cfg!(target_endian = "big") {
                bit_width as usize - 1 - i
            } else {
                i
            };
            self.set_bit(index + bit_offset, val_bit_is_set);
        }
    }
}
pub const AMDSMI_MAX_MM_IP_COUNT: u32 = 8;
pub const AMDSMI_MAX_STRING_LENGTH: u32 = 256;
pub const AMDSMI_MAX_DEVICES: u32 = 32;
pub const AMDSMI_MAX_CACHE_TYPES: u32 = 10;
pub const AMDSMI_MAX_ACCELERATOR_PROFILE: u32 = 32;
pub const AMDSMI_MAX_CP_PROFILE_RESOURCES: u32 = 32;
pub const AMDSMI_MAX_ACCELERATOR_PARTITIONS: u32 = 8;
pub const AMDSMI_MAX_NUM_NUMA_NODES: u32 = 32;
pub const AMDSMI_GPU_UUID_SIZE: u32 = 38;
pub const AMDSMI_MAX_NUM_XGMI_PHYSICAL_LINK: u32 = 64;
pub const AMDSMI_MAX_CONTAINER_TYPE: u32 = 2;
pub const AMDSMI_NUM_HBM_INSTANCES: u32 = 4;
pub const AMDSMI_MAX_NUM_VCN: u32 = 4;
pub const AMDSMI_MAX_NUM_CLKS: u32 = 4;
pub const AMDSMI_MAX_NUM_XGMI_LINKS: u32 = 8;
pub const AMDSMI_MAX_NUM_GFX_CLKS: u32 = 8;
pub const AMDSMI_MAX_AID: u32 = 4;
pub const AMDSMI_MAX_ENGINES: u32 = 8;
pub const AMDSMI_MAX_NUM_JPEG: u32 = 32;
pub const AMDSMI_MAX_NUM_JPEG_ENG_V1: u32 = 40;
pub const AMDSMI_MAX_NUM_XCC: u32 = 8;
pub const AMDSMI_MAX_NUM_XCP: u32 = 8;
pub const AMDSMI_APU_MAX_CORES: u32 = 16;
pub const AMDSMI_APU_V24_CORES: u32 = 8;
pub const AMDSMI_APU_MAX_L3: u32 = 2;
pub const AMDSMI_APU_MAX_IPU: u32 = 8;
pub const AMDSMI_MAX_NUM_HBM_STACKS: u32 = 12;
pub const AMDSMI_MAX_NUM_AID: u32 = 2;
pub const AMDSMI_MAX_NUM_MID: u32 = 2;
pub const AMDSMI_MAX_NUM_CLKS_PER_AID: u32 = 2;
pub const AMDSMI_MAX_NUM_CLKS_PER_MID: u32 = 2;
pub const AMDSMI_TIME_FORMAT: &[u8; 20] = b"%02d:%02d:%02d.%03d\0";
pub const AMDSMI_DATE_FORMAT: &[u8; 35] = b"%04d-%02d-%02d:%02d:%02d:%02d.%03d\0";
pub const AMDSMI_LIB_VERSION_MAJOR: u32 = 26;
pub const AMDSMI_LIB_VERSION_MINOR: u32 = 5;
pub const AMDSMI_LIB_VERSION_RELEASE: u32 = 0;
pub const AMDSMI_MAX_DRIVER_INFO_RSVD: u32 = 64;
pub const AMDSMI_MAX_UUID_ELEMENTS: u32 = 16;
pub const AMDSMI_MAX_NUM_FREQUENCIES: u32 = 33;
pub const AMDSMI_MAX_FAN_SPEED: u32 = 255;
pub const AMDSMI_NUM_VOLTAGE_CURVE_POINTS: u32 = 3;
pub const AMDSMI_MAX_UTILIZATION_VALUES: u32 = 4;
pub const AMDSMI_MAX_NUM_PM_POLICIES: u32 = 32;
pub const AMDSMI_MAX_NIC_PORTS: u32 = 32;
pub const AMDSMI_MAX_NIC_RDMA_DEV: u32 = 32;
pub const AMDSMI_MAX_NIC_FW: u32 = 16;
pub const AMDSMI_FABRIC_LABEL_MAX_LENGTH: u32 = 32;
pub const AMDSMI_FABRIC_PPOD_ID_SIZE: u32 = 16;
pub const AMDSMI_MAX_CARVEOUT_OPTIONS: u32 = 16;
pub type __time_t = ::std::os::raw::c_long;
pub type __syscall_slong_t = ::std::os::raw::c_long;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct timespec {
    pub tv_sec: __time_t,
    pub tv_nsec: __syscall_slong_t,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of timespec"][::std::mem::size_of::<timespec>() - 16usize];
    ["Alignment of timespec"][::std::mem::align_of::<timespec>() - 8usize];
    ["Offset of field: timespec::tv_sec"][::std::mem::offset_of!(timespec, tv_sec) - 0usize];
    ["Offset of field: timespec::tv_nsec"][::std::mem::offset_of!(timespec, tv_nsec) - 8usize];
};
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiInitFlagsT {
    AmdsmiInitAllProcessors = 4294967295,
    AmdsmiInitAmdCpus = 1,
    AmdsmiInitAmdGpus = 2,
    AmdsmiInitNonAmdCpus = 4,
    AmdsmiInitNonAmdGpus = 8,
    AmdsmiInitAmdApus = 3,
    AmdsmiInitAmdNics = 16,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiMmIpT {
    AmdsmiMmUvd = 0,
    AmdsmiMmVce = 1,
    AmdsmiMmVcn = 2,
    AmdsmiMmMax = 3,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiContainerTypesT {
    AmdsmiContainerLxc = 0,
    AmdsmiContainerDocker = 1,
}
pub type AmdsmiProcessorHandle = *mut ::std::os::raw::c_void;
pub type AmdsmiSocketHandle = *mut ::std::os::raw::c_void;
pub type AmdsmiNodeHandle = *mut ::std::os::raw::c_void;
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiProcessorTypeT {
    AmdsmiProcessorTypeUnknown = 0,
    AmdsmiProcessorTypeAmdGpu = 1,
    AmdsmiProcessorTypeAmdCpu = 2,
    AmdsmiProcessorTypeNonAmdGpu = 3,
    AmdsmiProcessorTypeNonAmdCpu = 4,
    AmdsmiProcessorTypeAmdCpuCore = 5,
    AmdsmiProcessorTypeAmdApu = 6,
    AmdsmiProcessorTypeAmdNic = 7,
    AmdsmiProcessorTypeBrcmNic = 8,
    AmdsmiProcessorTypeBrcmSwitch = 9,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiStatusT {
    AmdsmiStatusSuccess = 0,
    AmdsmiStatusInval = 1,
    AmdsmiStatusNotSupported = 2,
    AmdsmiStatusNotYetImplemented = 3,
    AmdsmiStatusFailLoadModule = 4,
    AmdsmiStatusFailLoadSymbol = 5,
    AmdsmiStatusDrmError = 6,
    AmdsmiStatusApiFailed = 7,
    AmdsmiStatusTimeout = 8,
    AmdsmiStatusRetry = 9,
    AmdsmiStatusNoPerm = 10,
    AmdsmiStatusInterrupt = 11,
    AmdsmiStatusIo = 12,
    AmdsmiStatusAddressFault = 13,
    AmdsmiStatusFileError = 14,
    AmdsmiStatusOutOfResources = 15,
    AmdsmiStatusInternalException = 16,
    AmdsmiStatusInputOutOfBounds = 17,
    AmdsmiStatusInitError = 18,
    AmdsmiStatusRefcountOverflow = 19,
    AmdsmiStatusDirectoryNotFound = 20,
    AmdsmiStatusIpcError = 21,
    AmdsmiStatusBusy = 30,
    AmdsmiStatusNotFound = 31,
    AmdsmiStatusNotInit = 32,
    AmdsmiStatusNoSlot = 33,
    AmdsmiStatusDriverNotLoaded = 34,
    AmdsmiStatusMoreData = 39,
    AmdsmiStatusNoData = 40,
    AmdsmiStatusInsufficientSize = 41,
    AmdsmiStatusUnexpectedSize = 42,
    AmdsmiStatusUnexpectedData = 43,
    AmdsmiStatusNonAmdCpu = 44,
    AmdsmiStatusNoEnergyDrv = 45,
    AmdsmiStatusNoMsrDrv = 46,
    AmdsmiStatusNoHsmpDrv = 47,
    AmdsmiStatusNoHsmpSup = 48,
    AmdsmiStatusNoHsmpMsgSup = 49,
    AmdsmiStatusHsmpTimeout = 50,
    AmdsmiStatusNoDrv = 51,
    AmdsmiStatusFileNotFound = 52,
    AmdsmiStatusArgPtrNull = 53,
    AmdsmiStatusAmdgpuRestartErr = 54,
    AmdsmiStatusSettingUnavailable = 55,
    AmdsmiStatusCorruptedEeprom = 56,
    AmdsmiStatusMapError = 4294967294,
    AmdsmiStatusUnknownError = 4294967295,
}
impl AmdsmiClkTypeT {
    pub const AmdsmiClkTypeFirst: AmdsmiClkTypeT = AmdsmiClkTypeT::AmdsmiClkTypeSys;
}
impl AmdsmiClkTypeT {
    pub const AmdsmiClkTypeGfx: AmdsmiClkTypeT = AmdsmiClkTypeT::AmdsmiClkTypeSys;
}
impl AmdsmiClkTypeT {
    pub const AmdsmiClkTypeMax: AmdsmiClkTypeT = AmdsmiClkTypeT::AmdsmiClkTypeDclk1;
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiClkTypeT {
    AmdsmiClkTypeSys = 0,
    AmdsmiClkTypeDf = 1,
    AmdsmiClkTypeDcef = 2,
    AmdsmiClkTypeSoc = 3,
    AmdsmiClkTypeMem = 4,
    AmdsmiClkTypePcie = 5,
    AmdsmiClkTypeVclk0 = 6,
    AmdsmiClkTypeVclk1 = 7,
    AmdsmiClkTypeDclk0 = 8,
    AmdsmiClkTypeDclk1 = 9,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiAcceleratorPartitionTypeT {
    AmdsmiAcceleratorPartitionInvalid = 0,
    AmdsmiAcceleratorPartitionSpx = 1,
    AmdsmiAcceleratorPartitionDpx = 2,
    AmdsmiAcceleratorPartitionTpx = 3,
    AmdsmiAcceleratorPartitionQpx = 4,
    AmdsmiAcceleratorPartitionCpx = 5,
    AmdsmiAcceleratorPartitionMax = 6,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiAcceleratorPartitionResourceTypeT {
    AmdsmiAcceleratorXcc = 0,
    AmdsmiAcceleratorEncoder = 1,
    AmdsmiAcceleratorDecoder = 2,
    AmdsmiAcceleratorDma = 3,
    AmdsmiAcceleratorJpeg = 4,
    AmdsmiAcceleratorMax = 5,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiComputePartitionTypeT {
    AmdsmiComputePartitionInvalid = 0,
    AmdsmiComputePartitionSpx = 1,
    AmdsmiComputePartitionDpx = 2,
    AmdsmiComputePartitionTpx = 3,
    AmdsmiComputePartitionQpx = 4,
    AmdsmiComputePartitionCpx = 5,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiComputePartitionMemAllocModeT {
    AmdsmiComputePartitionMemAllocInvalid = 0,
    AmdsmiComputePartitionMemAllocCapping = 1,
    AmdsmiComputePartitionMemAllocAll = 2,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiMemoryPartitionTypeT {
    AmdsmiMemoryPartitionUnknown = 0,
    AmdsmiMemoryPartitionNps1 = 1,
    AmdsmiMemoryPartitionNps2 = 2,
    AmdsmiMemoryPartitionNps4 = 4,
    AmdsmiMemoryPartitionNps8 = 8,
}
impl AmdsmiTemperatureTypeT {
    pub const AmdsmiTemperatureTypeFirst: AmdsmiTemperatureTypeT =
        AmdsmiTemperatureTypeT::AmdsmiTemperatureTypeEdge;
}
impl AmdsmiTemperatureTypeT {
    pub const AmdsmiTemperatureTypeJunction: AmdsmiTemperatureTypeT =
        AmdsmiTemperatureTypeT::AmdsmiTemperatureTypeHotspot;
}
impl AmdsmiTemperatureTypeT {
    pub const AmdsmiTemperatureTypeGpuboardNodeRetimerX: AmdsmiTemperatureTypeT =
        AmdsmiTemperatureTypeT::AmdsmiTemperatureTypeGpuboardNodeFirst;
}
impl AmdsmiTemperatureTypeT {
    pub const AmdsmiTemperatureTypeGpuboardVddcrVdd0: AmdsmiTemperatureTypeT =
        AmdsmiTemperatureTypeT::AmdsmiTemperatureTypeGpuboardVrFirst;
}
impl AmdsmiTemperatureTypeT {
    pub const AmdsmiTemperatureTypeGpuboardLast: AmdsmiTemperatureTypeT =
        AmdsmiTemperatureTypeT::AmdsmiTemperatureTypeGpuboardVddan075;
}
impl AmdsmiTemperatureTypeT {
    pub const AmdsmiTemperatureTypeBaseboardUbbFpga: AmdsmiTemperatureTypeT =
        AmdsmiTemperatureTypeT::AmdsmiTemperatureTypeBaseboardFirst;
}
impl AmdsmiTemperatureTypeT {
    pub const AmdsmiTemperatureTypeMax: AmdsmiTemperatureTypeT =
        AmdsmiTemperatureTypeT::AmdsmiTemperatureTypeBaseboardLast;
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiTemperatureTypeT {
    AmdsmiTemperatureTypeEdge = 0,
    AmdsmiTemperatureTypeHotspot = 1,
    AmdsmiTemperatureTypeVram = 2,
    AmdsmiTemperatureTypeHbm0 = 3,
    AmdsmiTemperatureTypeHbm1 = 4,
    AmdsmiTemperatureTypeHbm2 = 5,
    AmdsmiTemperatureTypeHbm3 = 6,
    AmdsmiTemperatureTypePlx = 7,
    AmdsmiTemperatureTypeGpuboardNodeFirst = 100,
    AmdsmiTemperatureTypeGpuboardNodeOamXIbc = 101,
    AmdsmiTemperatureTypeGpuboardNodeOamXIbc2 = 102,
    AmdsmiTemperatureTypeGpuboardNodeOamXVdd18Vr = 103,
    AmdsmiTemperatureTypeGpuboardNodeOamX04HbmBVr = 104,
    AmdsmiTemperatureTypeGpuboardNodeOamX04HbmDVr = 105,
    AmdsmiTemperatureTypeGpuboardNodeLast = 149,
    AmdsmiTemperatureTypeGpuboardVrFirst = 150,
    AmdsmiTemperatureTypeGpuboardVddcrVdd1 = 151,
    AmdsmiTemperatureTypeGpuboardVddcrVdd2 = 152,
    AmdsmiTemperatureTypeGpuboardVddcrVdd3 = 153,
    AmdsmiTemperatureTypeGpuboardVddcrSocA = 154,
    AmdsmiTemperatureTypeGpuboardVddcrSocC = 155,
    AmdsmiTemperatureTypeGpuboardVddcrSocioA = 156,
    AmdsmiTemperatureTypeGpuboardVddcrSocioC = 157,
    AmdsmiTemperatureTypeGpuboardVdd085Hbm = 158,
    AmdsmiTemperatureTypeGpuboardVddcr11HbmB = 159,
    AmdsmiTemperatureTypeGpuboardVddcr11HbmD = 160,
    AmdsmiTemperatureTypeGpuboardVddUsr = 161,
    AmdsmiTemperatureTypeGpuboardVddio11E32 = 162,
    AmdsmiTemperatureTypeGpuboardVddio04HbmB = 163,
    AmdsmiTemperatureTypeGpuboardVddio04HbmD = 164,
    AmdsmiTemperatureTypeGpuboardVddcr075HbmB = 165,
    AmdsmiTemperatureTypeGpuboardVddcr075HbmD = 166,
    AmdsmiTemperatureTypeGpuboardVddio11GtaA = 167,
    AmdsmiTemperatureTypeGpuboardVddio11GtaC = 168,
    AmdsmiTemperatureTypeGpuboardVddan075GtaA = 169,
    AmdsmiTemperatureTypeGpuboardVddan075GtaC = 170,
    AmdsmiTemperatureTypeGpuboardVddcr075Ucie = 171,
    AmdsmiTemperatureTypeGpuboardVddio065Ucieaa = 172,
    AmdsmiTemperatureTypeGpuboardVddio065UcieamA = 173,
    AmdsmiTemperatureTypeGpuboardVddio065UcieamC = 174,
    AmdsmiTemperatureTypeGpuboardVddan075 = 175,
    AmdsmiTemperatureTypeGpuboardVrLast = 199,
    AmdsmiTemperatureTypeBaseboardFirst = 200,
    AmdsmiTemperatureTypeBaseboardUbbFront = 201,
    AmdsmiTemperatureTypeBaseboardUbbBack = 202,
    AmdsmiTemperatureTypeBaseboardUbbOam7 = 203,
    AmdsmiTemperatureTypeBaseboardUbbIbc = 204,
    AmdsmiTemperatureTypeBaseboardUbbUfpga = 205,
    AmdsmiTemperatureTypeBaseboardUbbOam1 = 206,
    AmdsmiTemperatureTypeBaseboardOam01Hsc = 207,
    AmdsmiTemperatureTypeBaseboardOam23Hsc = 208,
    AmdsmiTemperatureTypeBaseboardOam45Hsc = 209,
    AmdsmiTemperatureTypeBaseboardOam67Hsc = 210,
    AmdsmiTemperatureTypeBaseboardUbbFpga0v72Vr = 211,
    AmdsmiTemperatureTypeBaseboardUbbFpga3v3Vr = 212,
    AmdsmiTemperatureTypeBaseboardRetimer01231v2Vr = 213,
    AmdsmiTemperatureTypeBaseboardRetimer45671v2Vr = 214,
    AmdsmiTemperatureTypeBaseboardRetimer010v9Vr = 215,
    AmdsmiTemperatureTypeBaseboardRetimer450v9Vr = 216,
    AmdsmiTemperatureTypeBaseboardRetimer230v9Vr = 217,
    AmdsmiTemperatureTypeBaseboardRetimer670v9Vr = 218,
    AmdsmiTemperatureTypeBaseboardOam01233v3Vr = 219,
    AmdsmiTemperatureTypeBaseboardOam45673v3Vr = 220,
    AmdsmiTemperatureTypeBaseboardIbcHsc = 221,
    AmdsmiTemperatureTypeBaseboardIbc = 222,
    AmdsmiTemperatureTypeBaseboardLast = 249,
}
impl AmdsmiFwBlockT {
    pub const AmdsmiFwIdFirst: AmdsmiFwBlockT = AmdsmiFwBlockT::AmdsmiFwIdSmu;
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiFwBlockT {
    AmdsmiFwIdSmu = 1,
    AmdsmiFwIdCpCe = 2,
    AmdsmiFwIdCpPfp = 3,
    AmdsmiFwIdCpMe = 4,
    AmdsmiFwIdCpMecJt1 = 5,
    AmdsmiFwIdCpMecJt2 = 6,
    AmdsmiFwIdCpMec1 = 7,
    AmdsmiFwIdCpMec2 = 8,
    AmdsmiFwIdRlc = 9,
    AmdsmiFwIdSdma0 = 10,
    AmdsmiFwIdSdma1 = 11,
    AmdsmiFwIdSdma2 = 12,
    AmdsmiFwIdSdma3 = 13,
    AmdsmiFwIdSdma4 = 14,
    AmdsmiFwIdSdma5 = 15,
    AmdsmiFwIdSdma6 = 16,
    AmdsmiFwIdSdma7 = 17,
    AmdsmiFwIdVcn = 18,
    AmdsmiFwIdUvd = 19,
    AmdsmiFwIdVce = 20,
    AmdsmiFwIdIsp = 21,
    AmdsmiFwIdDmcuEram = 22,
    AmdsmiFwIdDmcuIsr = 23,
    AmdsmiFwIdRlcRestoreListGpmMem = 24,
    AmdsmiFwIdRlcRestoreListSrmMem = 25,
    AmdsmiFwIdRlcRestoreListCntl = 26,
    AmdsmiFwIdRlcV = 27,
    AmdsmiFwIdMmsch = 28,
    AmdsmiFwIdPspSysdrv = 29,
    AmdsmiFwIdPspSosdrv = 30,
    AmdsmiFwIdPspToc = 31,
    AmdsmiFwIdPspKeydb = 32,
    AmdsmiFwIdDfc = 33,
    AmdsmiFwIdPspSpl = 34,
    AmdsmiFwIdDrvCap = 35,
    AmdsmiFwIdMc = 36,
    AmdsmiFwIdPspBl = 37,
    AmdsmiFwIdCpPm4 = 38,
    AmdsmiFwIdRlcP = 39,
    AmdsmiFwIdSecPolicyStage2 = 40,
    AmdsmiFwIdRegAccessWhitelist = 41,
    AmdsmiFwIdImuDram = 42,
    AmdsmiFwIdImuIram = 43,
    AmdsmiFwIdSdmaTh0 = 44,
    AmdsmiFwIdSdmaTh1 = 45,
    AmdsmiFwIdCpMes = 46,
    AmdsmiFwIdMesKiq = 47,
    AmdsmiFwIdMesStack = 48,
    AmdsmiFwIdMesThread1 = 49,
    AmdsmiFwIdMesThread1Stack = 50,
    AmdsmiFwIdRlx6 = 51,
    AmdsmiFwIdRlx6DramBoot = 52,
    AmdsmiFwIdRs64Me = 53,
    AmdsmiFwIdRs64MeP0Data = 54,
    AmdsmiFwIdRs64MeP1Data = 55,
    AmdsmiFwIdRs64Pfp = 56,
    AmdsmiFwIdRs64PfpP0Data = 57,
    AmdsmiFwIdRs64PfpP1Data = 58,
    AmdsmiFwIdRs64Mec = 59,
    AmdsmiFwIdRs64MecP0Data = 60,
    AmdsmiFwIdRs64MecP1Data = 61,
    AmdsmiFwIdRs64MecP2Data = 62,
    AmdsmiFwIdRs64MecP3Data = 63,
    AmdsmiFwIdPptable = 64,
    AmdsmiFwIdPspSoc = 65,
    AmdsmiFwIdPspDbg = 66,
    AmdsmiFwIdPspIntf = 67,
    AmdsmiFwIdRlx6Core1 = 68,
    AmdsmiFwIdRlx6DramBootCore1 = 69,
    AmdsmiFwIdRlcvLx7 = 70,
    AmdsmiFwIdRlcSaveRestoreList = 71,
    AmdsmiFwIdAsd = 72,
    AmdsmiFwIdTaRas = 73,
    AmdsmiFwIdTaXgmi = 74,
    AmdsmiFwIdRlcSrlg = 75,
    AmdsmiFwIdRlcSrls = 76,
    AmdsmiFwIdPm = 77,
    AmdsmiFwIdDmcu = 78,
    AmdsmiFwIdPldmBundle = 79,
    AmdsmiFwIdMax = 80,
}
impl AmdsmiVramTypeT {
    pub const AmdsmiVramTypeMax: AmdsmiVramTypeT = AmdsmiVramTypeT::AmdsmiVramTypeLpddr5;
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiVramTypeT {
    AmdsmiVramTypeUnknown = 0,
    AmdsmiVramTypeHbm = 1,
    AmdsmiVramTypeHbm2 = 2,
    AmdsmiVramTypeHbm2e = 3,
    AmdsmiVramTypeHbm3 = 4,
    AmdsmiVramTypeHbm3e = 5,
    AmdsmiVramTypeDdr2 = 10,
    AmdsmiVramTypeDdr3 = 11,
    AmdsmiVramTypeDdr4 = 12,
    AmdsmiVramTypeDdr5 = 13,
    AmdsmiVramTypeGddr1 = 17,
    AmdsmiVramTypeGddr2 = 18,
    AmdsmiVramTypeGddr3 = 19,
    AmdsmiVramTypeGddr4 = 20,
    AmdsmiVramTypeGddr5 = 21,
    AmdsmiVramTypeGddr6 = 22,
    AmdsmiVramTypeGddr7 = 23,
    AmdsmiVramTypeLpddr4 = 30,
    AmdsmiVramTypeLpddr5 = 31,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiRangeT {
    pub lower_bound: u64,
    pub upper_bound: u64,
    pub reserved: [u64; 2usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiRangeT"][::std::mem::size_of::<AmdsmiRangeT>() - 32usize];
    ["Alignment of AmdsmiRangeT"][::std::mem::align_of::<AmdsmiRangeT>() - 8usize];
    ["Offset of field: AmdsmiRangeT::lower_bound"]
        [::std::mem::offset_of!(AmdsmiRangeT, lower_bound) - 0usize];
    ["Offset of field: AmdsmiRangeT::upper_bound"]
        [::std::mem::offset_of!(AmdsmiRangeT, upper_bound) - 8usize];
    ["Offset of field: AmdsmiRangeT::reserved"]
        [::std::mem::offset_of!(AmdsmiRangeT, reserved) - 16usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiXgmiInfoT {
    pub xgmi_lanes: u8,
    pub xgmi_hive_id: u64,
    pub xgmi_node_id: u64,
    pub index: u32,
    pub reserved: [u32; 9usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiXgmiInfoT"][::std::mem::size_of::<AmdsmiXgmiInfoT>() - 64usize];
    ["Alignment of AmdsmiXgmiInfoT"][::std::mem::align_of::<AmdsmiXgmiInfoT>() - 8usize];
    ["Offset of field: AmdsmiXgmiInfoT::xgmi_lanes"]
        [::std::mem::offset_of!(AmdsmiXgmiInfoT, xgmi_lanes) - 0usize];
    ["Offset of field: AmdsmiXgmiInfoT::xgmi_hive_id"]
        [::std::mem::offset_of!(AmdsmiXgmiInfoT, xgmi_hive_id) - 8usize];
    ["Offset of field: AmdsmiXgmiInfoT::xgmi_node_id"]
        [::std::mem::offset_of!(AmdsmiXgmiInfoT, xgmi_node_id) - 16usize];
    ["Offset of field: AmdsmiXgmiInfoT::index"]
        [::std::mem::offset_of!(AmdsmiXgmiInfoT, index) - 24usize];
    ["Offset of field: AmdsmiXgmiInfoT::reserved"]
        [::std::mem::offset_of!(AmdsmiXgmiInfoT, reserved) - 28usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiVramUsageT {
    pub vram_total: u32,
    pub vram_used: u32,
    pub reserved: [u32; 2usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiVramUsageT"][::std::mem::size_of::<AmdsmiVramUsageT>() - 16usize];
    ["Alignment of AmdsmiVramUsageT"][::std::mem::align_of::<AmdsmiVramUsageT>() - 4usize];
    ["Offset of field: AmdsmiVramUsageT::vram_total"]
        [::std::mem::offset_of!(AmdsmiVramUsageT, vram_total) - 0usize];
    ["Offset of field: AmdsmiVramUsageT::vram_used"]
        [::std::mem::offset_of!(AmdsmiVramUsageT, vram_used) - 4usize];
    ["Offset of field: AmdsmiVramUsageT::reserved"]
        [::std::mem::offset_of!(AmdsmiVramUsageT, reserved) - 8usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiViolationStatusT {
    pub reference_timestamp: u64,
    pub violation_timestamp: u64,
    pub acc_counter: u64,
    pub acc_prochot_thrm: u64,
    pub acc_ppt_pwr: u64,
    pub acc_socket_thrm: u64,
    pub acc_vr_thrm: u64,
    pub acc_hbm_thrm: u64,
    pub acc_gfx_clk_below_host_limit: u64,
    pub per_prochot_thrm: u64,
    pub per_ppt_pwr: u64,
    pub per_socket_thrm: u64,
    pub per_vr_thrm: u64,
    pub per_hbm_thrm: u64,
    pub per_gfx_clk_below_host_limit: u64,
    pub active_prochot_thrm: u8,
    pub active_ppt_pwr: u8,
    pub active_socket_thrm: u8,
    pub active_vr_thrm: u8,
    pub active_hbm_thrm: u8,
    pub active_gfx_clk_below_host_limit: u8,
    pub acc_gfx_clk_below_host_limit_pwr: [[u64; 8usize]; 8usize],
    pub acc_gfx_clk_below_host_limit_thm: [[u64; 8usize]; 8usize],
    pub acc_low_utilization: [[u64; 8usize]; 8usize],
    pub acc_gfx_clk_below_host_limit_total: [[u64; 8usize]; 8usize],
    pub per_gfx_clk_below_host_limit_pwr: [[u64; 8usize]; 8usize],
    pub per_gfx_clk_below_host_limit_thm: [[u64; 8usize]; 8usize],
    pub per_low_utilization: [[u64; 8usize]; 8usize],
    pub per_gfx_clk_below_host_limit_total: [[u64; 8usize]; 8usize],
    pub active_gfx_clk_below_host_limit_pwr: [[u8; 8usize]; 8usize],
    pub active_gfx_clk_below_host_limit_thm: [[u8; 8usize]; 8usize],
    pub active_low_utilization: [[u8; 8usize]; 8usize],
    pub active_gfx_clk_below_host_limit_total: [[u8; 8usize]; 8usize],
    pub reserved: [[u64; 8usize]; 8usize],
    pub reserved2: [[u64; 8usize]; 8usize],
    pub reserved3: [[u64; 8usize]; 8usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiViolationStatusT"][::std::mem::size_of::<AmdsmiViolationStatusT>() - 6016usize];
    ["Alignment of AmdsmiViolationStatusT"]
        [::std::mem::align_of::<AmdsmiViolationStatusT>() - 8usize];
    ["Offset of field: AmdsmiViolationStatusT::reference_timestamp"]
        [::std::mem::offset_of!(AmdsmiViolationStatusT, reference_timestamp) - 0usize];
    ["Offset of field: AmdsmiViolationStatusT::violation_timestamp"]
        [::std::mem::offset_of!(AmdsmiViolationStatusT, violation_timestamp) - 8usize];
    ["Offset of field: AmdsmiViolationStatusT::acc_counter"]
        [::std::mem::offset_of!(AmdsmiViolationStatusT, acc_counter) - 16usize];
    ["Offset of field: AmdsmiViolationStatusT::acc_prochot_thrm"]
        [::std::mem::offset_of!(AmdsmiViolationStatusT, acc_prochot_thrm) - 24usize];
    ["Offset of field: AmdsmiViolationStatusT::acc_ppt_pwr"]
        [::std::mem::offset_of!(AmdsmiViolationStatusT, acc_ppt_pwr) - 32usize];
    ["Offset of field: AmdsmiViolationStatusT::acc_socket_thrm"]
        [::std::mem::offset_of!(AmdsmiViolationStatusT, acc_socket_thrm) - 40usize];
    ["Offset of field: AmdsmiViolationStatusT::acc_vr_thrm"]
        [::std::mem::offset_of!(AmdsmiViolationStatusT, acc_vr_thrm) - 48usize];
    ["Offset of field: AmdsmiViolationStatusT::acc_hbm_thrm"]
        [::std::mem::offset_of!(AmdsmiViolationStatusT, acc_hbm_thrm) - 56usize];
    ["Offset of field: AmdsmiViolationStatusT::acc_gfx_clk_below_host_limit"]
        [::std::mem::offset_of!(AmdsmiViolationStatusT, acc_gfx_clk_below_host_limit) - 64usize];
    ["Offset of field: AmdsmiViolationStatusT::per_prochot_thrm"]
        [::std::mem::offset_of!(AmdsmiViolationStatusT, per_prochot_thrm) - 72usize];
    ["Offset of field: AmdsmiViolationStatusT::per_ppt_pwr"]
        [::std::mem::offset_of!(AmdsmiViolationStatusT, per_ppt_pwr) - 80usize];
    ["Offset of field: AmdsmiViolationStatusT::per_socket_thrm"]
        [::std::mem::offset_of!(AmdsmiViolationStatusT, per_socket_thrm) - 88usize];
    ["Offset of field: AmdsmiViolationStatusT::per_vr_thrm"]
        [::std::mem::offset_of!(AmdsmiViolationStatusT, per_vr_thrm) - 96usize];
    ["Offset of field: AmdsmiViolationStatusT::per_hbm_thrm"]
        [::std::mem::offset_of!(AmdsmiViolationStatusT, per_hbm_thrm) - 104usize];
    ["Offset of field: AmdsmiViolationStatusT::per_gfx_clk_below_host_limit"]
        [::std::mem::offset_of!(AmdsmiViolationStatusT, per_gfx_clk_below_host_limit) - 112usize];
    ["Offset of field: AmdsmiViolationStatusT::active_prochot_thrm"]
        [::std::mem::offset_of!(AmdsmiViolationStatusT, active_prochot_thrm) - 120usize];
    ["Offset of field: AmdsmiViolationStatusT::active_ppt_pwr"]
        [::std::mem::offset_of!(AmdsmiViolationStatusT, active_ppt_pwr) - 121usize];
    ["Offset of field: AmdsmiViolationStatusT::active_socket_thrm"]
        [::std::mem::offset_of!(AmdsmiViolationStatusT, active_socket_thrm) - 122usize];
    ["Offset of field: AmdsmiViolationStatusT::active_vr_thrm"]
        [::std::mem::offset_of!(AmdsmiViolationStatusT, active_vr_thrm) - 123usize];
    ["Offset of field: AmdsmiViolationStatusT::active_hbm_thrm"]
        [::std::mem::offset_of!(AmdsmiViolationStatusT, active_hbm_thrm) - 124usize];
    ["Offset of field: AmdsmiViolationStatusT::active_gfx_clk_below_host_limit"][::std::mem::offset_of!(
        AmdsmiViolationStatusT,
        active_gfx_clk_below_host_limit
    ) - 125usize];
    ["Offset of field: AmdsmiViolationStatusT::acc_gfx_clk_below_host_limit_pwr"][::std::mem::offset_of!(
        AmdsmiViolationStatusT,
        acc_gfx_clk_below_host_limit_pwr
    ) - 128usize];
    ["Offset of field: AmdsmiViolationStatusT::acc_gfx_clk_below_host_limit_thm"][::std::mem::offset_of!(
        AmdsmiViolationStatusT,
        acc_gfx_clk_below_host_limit_thm
    ) - 640usize];
    ["Offset of field: AmdsmiViolationStatusT::acc_low_utilization"]
        [::std::mem::offset_of!(AmdsmiViolationStatusT, acc_low_utilization) - 1152usize];
    ["Offset of field: AmdsmiViolationStatusT::acc_gfx_clk_below_host_limit_total"][::std::mem::offset_of!(
        AmdsmiViolationStatusT,
        acc_gfx_clk_below_host_limit_total
    ) - 1664usize];
    ["Offset of field: AmdsmiViolationStatusT::per_gfx_clk_below_host_limit_pwr"][::std::mem::offset_of!(
        AmdsmiViolationStatusT,
        per_gfx_clk_below_host_limit_pwr
    ) - 2176usize];
    ["Offset of field: AmdsmiViolationStatusT::per_gfx_clk_below_host_limit_thm"][::std::mem::offset_of!(
        AmdsmiViolationStatusT,
        per_gfx_clk_below_host_limit_thm
    ) - 2688usize];
    ["Offset of field: AmdsmiViolationStatusT::per_low_utilization"]
        [::std::mem::offset_of!(AmdsmiViolationStatusT, per_low_utilization) - 3200usize];
    ["Offset of field: AmdsmiViolationStatusT::per_gfx_clk_below_host_limit_total"][::std::mem::offset_of!(
        AmdsmiViolationStatusT,
        per_gfx_clk_below_host_limit_total
    ) - 3712usize];
    ["Offset of field: AmdsmiViolationStatusT::active_gfx_clk_below_host_limit_pwr"][::std::mem::offset_of!(
        AmdsmiViolationStatusT,
        active_gfx_clk_below_host_limit_pwr
    ) - 4224usize];
    ["Offset of field: AmdsmiViolationStatusT::active_gfx_clk_below_host_limit_thm"][::std::mem::offset_of!(
        AmdsmiViolationStatusT,
        active_gfx_clk_below_host_limit_thm
    ) - 4288usize];
    ["Offset of field: AmdsmiViolationStatusT::active_low_utilization"]
        [::std::mem::offset_of!(AmdsmiViolationStatusT, active_low_utilization) - 4352usize];
    ["Offset of field: AmdsmiViolationStatusT::active_gfx_clk_below_host_limit_total"][::std::mem::offset_of!(
        AmdsmiViolationStatusT,
        active_gfx_clk_below_host_limit_total
    )
        - 4416usize];
    ["Offset of field: AmdsmiViolationStatusT::reserved"]
        [::std::mem::offset_of!(AmdsmiViolationStatusT, reserved) - 4480usize];
    ["Offset of field: AmdsmiViolationStatusT::reserved2"]
        [::std::mem::offset_of!(AmdsmiViolationStatusT, reserved2) - 4992usize];
    ["Offset of field: AmdsmiViolationStatusT::reserved3"]
        [::std::mem::offset_of!(AmdsmiViolationStatusT, reserved3) - 5504usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiFrequencyRangeT {
    pub supported_freq_range: AmdsmiRangeT,
    pub current_freq_range: AmdsmiRangeT,
    pub reserved: [u32; 8usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiFrequencyRangeT"][::std::mem::size_of::<AmdsmiFrequencyRangeT>() - 96usize];
    ["Alignment of AmdsmiFrequencyRangeT"]
        [::std::mem::align_of::<AmdsmiFrequencyRangeT>() - 8usize];
    ["Offset of field: AmdsmiFrequencyRangeT::supported_freq_range"]
        [::std::mem::offset_of!(AmdsmiFrequencyRangeT, supported_freq_range) - 0usize];
    ["Offset of field: AmdsmiFrequencyRangeT::current_freq_range"]
        [::std::mem::offset_of!(AmdsmiFrequencyRangeT, current_freq_range) - 32usize];
    ["Offset of field: AmdsmiFrequencyRangeT::reserved"]
        [::std::mem::offset_of!(AmdsmiFrequencyRangeT, reserved) - 64usize];
};
#[repr(C)]
#[derive(Copy, Clone)]
pub union AmdsmiBdfT {
    pub bdf: AmdsmiBdfTBdf,
    pub __bindgen_anon_1: AmdsmiBdfTBindgenTy1,
    pub as_uint: u64,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiBdfTBdf {
    pub _bitfield_align_1: [u64; 0],
    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 8usize]>,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiBdfTBdf"][::std::mem::size_of::<AmdsmiBdfTBdf>() - 8usize];
    ["Alignment of AmdsmiBdfTBdf"][::std::mem::align_of::<AmdsmiBdfTBdf>() - 8usize];
};
impl AmdsmiBdfTBdf {
    #[inline]
    pub fn function_number(&self) -> u64 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 3u8) as u64) }
    }
    #[inline]
    pub fn set_function_number(&mut self, val: u64) {
        unsafe {
            let val: u64 = ::std::mem::transmute(val);
            self._bitfield_1.set(0usize, 3u8, val as u64)
        }
    }
    #[inline]
    pub fn device_number(&self) -> u64 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(3usize, 5u8) as u64) }
    }
    #[inline]
    pub fn set_device_number(&mut self, val: u64) {
        unsafe {
            let val: u64 = ::std::mem::transmute(val);
            self._bitfield_1.set(3usize, 5u8, val as u64)
        }
    }
    #[inline]
    pub fn bus_number(&self) -> u64 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(8usize, 8u8) as u64) }
    }
    #[inline]
    pub fn set_bus_number(&mut self, val: u64) {
        unsafe {
            let val: u64 = ::std::mem::transmute(val);
            self._bitfield_1.set(8usize, 8u8, val as u64)
        }
    }
    #[inline]
    pub fn domain_number(&self) -> u64 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(16usize, 48u8) as u64) }
    }
    #[inline]
    pub fn set_domain_number(&mut self, val: u64) {
        unsafe {
            let val: u64 = ::std::mem::transmute(val);
            self._bitfield_1.set(16usize, 48u8, val as u64)
        }
    }
    #[inline]
    pub fn new_bitfield_1(
        function_number: u64,
        device_number: u64,
        bus_number: u64,
        domain_number: u64,
    ) -> __BindgenBitfieldUnit<[u8; 8usize]> {
        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 8usize]> = Default::default();
        __bindgen_bitfield_unit.set(0usize, 3u8, {
            let function_number: u64 = unsafe { ::std::mem::transmute(function_number) };
            function_number as u64
        });
        __bindgen_bitfield_unit.set(3usize, 5u8, {
            let device_number: u64 = unsafe { ::std::mem::transmute(device_number) };
            device_number as u64
        });
        __bindgen_bitfield_unit.set(8usize, 8u8, {
            let bus_number: u64 = unsafe { ::std::mem::transmute(bus_number) };
            bus_number as u64
        });
        __bindgen_bitfield_unit.set(16usize, 48u8, {
            let domain_number: u64 = unsafe { ::std::mem::transmute(domain_number) };
            domain_number as u64
        });
        __bindgen_bitfield_unit
    }
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiBdfTBindgenTy1 {
    pub _bitfield_align_1: [u64; 0],
    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 8usize]>,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiBdfTBindgenTy1"][::std::mem::size_of::<AmdsmiBdfTBindgenTy1>() - 8usize];
    ["Alignment of AmdsmiBdfTBindgenTy1"][::std::mem::align_of::<AmdsmiBdfTBindgenTy1>() - 8usize];
};
impl AmdsmiBdfTBindgenTy1 {
    #[inline]
    pub fn function_number(&self) -> u64 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 3u8) as u64) }
    }
    #[inline]
    pub fn set_function_number(&mut self, val: u64) {
        unsafe {
            let val: u64 = ::std::mem::transmute(val);
            self._bitfield_1.set(0usize, 3u8, val as u64)
        }
    }
    #[inline]
    pub fn device_number(&self) -> u64 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(3usize, 5u8) as u64) }
    }
    #[inline]
    pub fn set_device_number(&mut self, val: u64) {
        unsafe {
            let val: u64 = ::std::mem::transmute(val);
            self._bitfield_1.set(3usize, 5u8, val as u64)
        }
    }
    #[inline]
    pub fn bus_number(&self) -> u64 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(8usize, 8u8) as u64) }
    }
    #[inline]
    pub fn set_bus_number(&mut self, val: u64) {
        unsafe {
            let val: u64 = ::std::mem::transmute(val);
            self._bitfield_1.set(8usize, 8u8, val as u64)
        }
    }
    #[inline]
    pub fn domain_number(&self) -> u64 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(16usize, 48u8) as u64) }
    }
    #[inline]
    pub fn set_domain_number(&mut self, val: u64) {
        unsafe {
            let val: u64 = ::std::mem::transmute(val);
            self._bitfield_1.set(16usize, 48u8, val as u64)
        }
    }
    #[inline]
    pub fn new_bitfield_1(
        function_number: u64,
        device_number: u64,
        bus_number: u64,
        domain_number: u64,
    ) -> __BindgenBitfieldUnit<[u8; 8usize]> {
        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 8usize]> = Default::default();
        __bindgen_bitfield_unit.set(0usize, 3u8, {
            let function_number: u64 = unsafe { ::std::mem::transmute(function_number) };
            function_number as u64
        });
        __bindgen_bitfield_unit.set(3usize, 5u8, {
            let device_number: u64 = unsafe { ::std::mem::transmute(device_number) };
            device_number as u64
        });
        __bindgen_bitfield_unit.set(8usize, 8u8, {
            let bus_number: u64 = unsafe { ::std::mem::transmute(bus_number) };
            bus_number as u64
        });
        __bindgen_bitfield_unit.set(16usize, 48u8, {
            let domain_number: u64 = unsafe { ::std::mem::transmute(domain_number) };
            domain_number as u64
        });
        __bindgen_bitfield_unit
    }
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiBdfT"][::std::mem::size_of::<AmdsmiBdfT>() - 8usize];
    ["Alignment of AmdsmiBdfT"][::std::mem::align_of::<AmdsmiBdfT>() - 8usize];
    ["Offset of field: AmdsmiBdfT::bdf"][::std::mem::offset_of!(AmdsmiBdfT, bdf) - 0usize];
    ["Offset of field: AmdsmiBdfT::as_uint"][::std::mem::offset_of!(AmdsmiBdfT, as_uint) - 0usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiEnumerationInfoT {
    pub drm_render: u32,
    pub drm_card: u32,
    pub hsa_id: u32,
    pub hip_id: u32,
    pub hip_uuid: [::std::os::raw::c_char; 256usize],
    pub oam_id: u32,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiEnumerationInfoT"][::std::mem::size_of::<AmdsmiEnumerationInfoT>() - 276usize];
    ["Alignment of AmdsmiEnumerationInfoT"]
        [::std::mem::align_of::<AmdsmiEnumerationInfoT>() - 4usize];
    ["Offset of field: AmdsmiEnumerationInfoT::drm_render"]
        [::std::mem::offset_of!(AmdsmiEnumerationInfoT, drm_render) - 0usize];
    ["Offset of field: AmdsmiEnumerationInfoT::drm_card"]
        [::std::mem::offset_of!(AmdsmiEnumerationInfoT, drm_card) - 4usize];
    ["Offset of field: AmdsmiEnumerationInfoT::hsa_id"]
        [::std::mem::offset_of!(AmdsmiEnumerationInfoT, hsa_id) - 8usize];
    ["Offset of field: AmdsmiEnumerationInfoT::hip_id"]
        [::std::mem::offset_of!(AmdsmiEnumerationInfoT, hip_id) - 12usize];
    ["Offset of field: AmdsmiEnumerationInfoT::hip_uuid"]
        [::std::mem::offset_of!(AmdsmiEnumerationInfoT, hip_uuid) - 16usize];
    ["Offset of field: AmdsmiEnumerationInfoT::oam_id"]
        [::std::mem::offset_of!(AmdsmiEnumerationInfoT, oam_id) - 272usize];
};
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiCardFormFactorT {
    AmdsmiCardFormFactorPcie = 0,
    AmdsmiCardFormFactorOam = 1,
    AmdsmiCardFormFactorCem = 2,
    AmdsmiCardFormFactorUnknown = 3,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiPcieInfoT {
    pub pcie_static: AmdsmiPcieInfoTPcieStatic,
    pub pcie_metric: AmdsmiPcieInfoTPcieMetric,
    pub reserved: [u64; 32usize],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiPcieInfoTPcieStatic {
    pub max_pcie_width: u16,
    pub max_pcie_speed: u32,
    pub pcie_interface_version: u32,
    pub slot_type: AmdsmiCardFormFactorT,
    pub max_pcie_interface_version: u32,
    pub reserved: [u64; 9usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiPcieInfoTPcieStatic"]
        [::std::mem::size_of::<AmdsmiPcieInfoTPcieStatic>() - 96usize];
    ["Alignment of AmdsmiPcieInfoTPcieStatic"]
        [::std::mem::align_of::<AmdsmiPcieInfoTPcieStatic>() - 8usize];
    ["Offset of field: AmdsmiPcieInfoTPcieStatic::max_pcie_width"]
        [::std::mem::offset_of!(AmdsmiPcieInfoTPcieStatic, max_pcie_width) - 0usize];
    ["Offset of field: AmdsmiPcieInfoTPcieStatic::max_pcie_speed"]
        [::std::mem::offset_of!(AmdsmiPcieInfoTPcieStatic, max_pcie_speed) - 4usize];
    ["Offset of field: AmdsmiPcieInfoTPcieStatic::pcie_interface_version"]
        [::std::mem::offset_of!(AmdsmiPcieInfoTPcieStatic, pcie_interface_version) - 8usize];
    ["Offset of field: AmdsmiPcieInfoTPcieStatic::slot_type"]
        [::std::mem::offset_of!(AmdsmiPcieInfoTPcieStatic, slot_type) - 12usize];
    ["Offset of field: AmdsmiPcieInfoTPcieStatic::max_pcie_interface_version"]
        [::std::mem::offset_of!(AmdsmiPcieInfoTPcieStatic, max_pcie_interface_version) - 16usize];
    ["Offset of field: AmdsmiPcieInfoTPcieStatic::reserved"]
        [::std::mem::offset_of!(AmdsmiPcieInfoTPcieStatic, reserved) - 24usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiPcieInfoTPcieMetric {
    pub pcie_width: u16,
    pub pcie_speed: u32,
    pub pcie_bandwidth: u32,
    pub pcie_replay_count: u64,
    pub pcie_l0_to_recovery_count: u64,
    pub pcie_replay_roll_over_count: u64,
    pub pcie_nak_sent_count: u64,
    pub pcie_nak_received_count: u64,
    pub pcie_lc_perf_other_end_recovery_count: u32,
    pub reserved: [u64; 12usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiPcieInfoTPcieMetric"]
        [::std::mem::size_of::<AmdsmiPcieInfoTPcieMetric>() - 160usize];
    ["Alignment of AmdsmiPcieInfoTPcieMetric"]
        [::std::mem::align_of::<AmdsmiPcieInfoTPcieMetric>() - 8usize];
    ["Offset of field: AmdsmiPcieInfoTPcieMetric::pcie_width"]
        [::std::mem::offset_of!(AmdsmiPcieInfoTPcieMetric, pcie_width) - 0usize];
    ["Offset of field: AmdsmiPcieInfoTPcieMetric::pcie_speed"]
        [::std::mem::offset_of!(AmdsmiPcieInfoTPcieMetric, pcie_speed) - 4usize];
    ["Offset of field: AmdsmiPcieInfoTPcieMetric::pcie_bandwidth"]
        [::std::mem::offset_of!(AmdsmiPcieInfoTPcieMetric, pcie_bandwidth) - 8usize];
    ["Offset of field: AmdsmiPcieInfoTPcieMetric::pcie_replay_count"]
        [::std::mem::offset_of!(AmdsmiPcieInfoTPcieMetric, pcie_replay_count) - 16usize];
    ["Offset of field: AmdsmiPcieInfoTPcieMetric::pcie_l0_to_recovery_count"]
        [::std::mem::offset_of!(AmdsmiPcieInfoTPcieMetric, pcie_l0_to_recovery_count) - 24usize];
    ["Offset of field: AmdsmiPcieInfoTPcieMetric::pcie_replay_roll_over_count"]
        [::std::mem::offset_of!(AmdsmiPcieInfoTPcieMetric, pcie_replay_roll_over_count) - 32usize];
    ["Offset of field: AmdsmiPcieInfoTPcieMetric::pcie_nak_sent_count"]
        [::std::mem::offset_of!(AmdsmiPcieInfoTPcieMetric, pcie_nak_sent_count) - 40usize];
    ["Offset of field: AmdsmiPcieInfoTPcieMetric::pcie_nak_received_count"]
        [::std::mem::offset_of!(AmdsmiPcieInfoTPcieMetric, pcie_nak_received_count) - 48usize];
    ["Offset of field: AmdsmiPcieInfoTPcieMetric::pcie_lc_perf_other_end_recovery_count"][::std::mem::offset_of!(
        AmdsmiPcieInfoTPcieMetric,
        pcie_lc_perf_other_end_recovery_count
    )
        - 56usize];
    ["Offset of field: AmdsmiPcieInfoTPcieMetric::reserved"]
        [::std::mem::offset_of!(AmdsmiPcieInfoTPcieMetric, reserved) - 64usize];
};
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiPcieInfoT"][::std::mem::size_of::<AmdsmiPcieInfoT>() - 512usize];
    ["Alignment of AmdsmiPcieInfoT"][::std::mem::align_of::<AmdsmiPcieInfoT>() - 8usize];
    ["Offset of field: AmdsmiPcieInfoT::pcie_static"]
        [::std::mem::offset_of!(AmdsmiPcieInfoT, pcie_static) - 0usize];
    ["Offset of field: AmdsmiPcieInfoT::pcie_metric"]
        [::std::mem::offset_of!(AmdsmiPcieInfoT, pcie_metric) - 96usize];
    ["Offset of field: AmdsmiPcieInfoT::reserved"]
        [::std::mem::offset_of!(AmdsmiPcieInfoT, reserved) - 256usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiPowerCapInfoT {
    pub power_cap: u64,
    pub default_power_cap: u64,
    pub dpm_cap: u64,
    pub min_power_cap: u64,
    pub max_power_cap: u64,
    pub reserved: [u64; 3usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiPowerCapInfoT"][::std::mem::size_of::<AmdsmiPowerCapInfoT>() - 64usize];
    ["Alignment of AmdsmiPowerCapInfoT"][::std::mem::align_of::<AmdsmiPowerCapInfoT>() - 8usize];
    ["Offset of field: AmdsmiPowerCapInfoT::power_cap"]
        [::std::mem::offset_of!(AmdsmiPowerCapInfoT, power_cap) - 0usize];
    ["Offset of field: AmdsmiPowerCapInfoT::default_power_cap"]
        [::std::mem::offset_of!(AmdsmiPowerCapInfoT, default_power_cap) - 8usize];
    ["Offset of field: AmdsmiPowerCapInfoT::dpm_cap"]
        [::std::mem::offset_of!(AmdsmiPowerCapInfoT, dpm_cap) - 16usize];
    ["Offset of field: AmdsmiPowerCapInfoT::min_power_cap"]
        [::std::mem::offset_of!(AmdsmiPowerCapInfoT, min_power_cap) - 24usize];
    ["Offset of field: AmdsmiPowerCapInfoT::max_power_cap"]
        [::std::mem::offset_of!(AmdsmiPowerCapInfoT, max_power_cap) - 32usize];
    ["Offset of field: AmdsmiPowerCapInfoT::reserved"]
        [::std::mem::offset_of!(AmdsmiPowerCapInfoT, reserved) - 40usize];
};
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiPowerCapTypeT {
    AmdsmiPowerCapTypePpt0 = 0,
    AmdsmiPowerCapTypePpt1 = 1,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiVbiosInfoT {
    pub name: [::std::os::raw::c_char; 256usize],
    pub build_date: [::std::os::raw::c_char; 256usize],
    pub part_number: [::std::os::raw::c_char; 256usize],
    pub version: [::std::os::raw::c_char; 256usize],
    pub boot_firmware: [::std::os::raw::c_char; 256usize],
    pub reserved: [u64; 36usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiVbiosInfoT"][::std::mem::size_of::<AmdsmiVbiosInfoT>() - 1568usize];
    ["Alignment of AmdsmiVbiosInfoT"][::std::mem::align_of::<AmdsmiVbiosInfoT>() - 8usize];
    ["Offset of field: AmdsmiVbiosInfoT::name"]
        [::std::mem::offset_of!(AmdsmiVbiosInfoT, name) - 0usize];
    ["Offset of field: AmdsmiVbiosInfoT::build_date"]
        [::std::mem::offset_of!(AmdsmiVbiosInfoT, build_date) - 256usize];
    ["Offset of field: AmdsmiVbiosInfoT::part_number"]
        [::std::mem::offset_of!(AmdsmiVbiosInfoT, part_number) - 512usize];
    ["Offset of field: AmdsmiVbiosInfoT::version"]
        [::std::mem::offset_of!(AmdsmiVbiosInfoT, version) - 768usize];
    ["Offset of field: AmdsmiVbiosInfoT::boot_firmware"]
        [::std::mem::offset_of!(AmdsmiVbiosInfoT, boot_firmware) - 1024usize];
    ["Offset of field: AmdsmiVbiosInfoT::reserved"]
        [::std::mem::offset_of!(AmdsmiVbiosInfoT, reserved) - 1280usize];
};
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiCachePropertyTypeT {
    AmdsmiCachePropertyEnabled = 1,
    AmdsmiCachePropertyDataCache = 2,
    AmdsmiCachePropertyInstCache = 4,
    AmdsmiCachePropertyCpuCache = 8,
    AmdsmiCachePropertySimdCache = 16,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiGpuCacheInfoT {
    pub num_cache_types: u32,
    pub cache: [AmdsmiGpuCacheInfoTCache; 10usize],
    pub reserved: [u32; 15usize],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiGpuCacheInfoTCache {
    pub cache_properties: u32,
    pub cache_size: u32,
    pub cache_level: u32,
    pub max_num_cu_shared: u32,
    pub num_cache_instance: u32,
    pub reserved: [u32; 3usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiGpuCacheInfoTCache"]
        [::std::mem::size_of::<AmdsmiGpuCacheInfoTCache>() - 32usize];
    ["Alignment of AmdsmiGpuCacheInfoTCache"]
        [::std::mem::align_of::<AmdsmiGpuCacheInfoTCache>() - 4usize];
    ["Offset of field: AmdsmiGpuCacheInfoTCache::cache_properties"]
        [::std::mem::offset_of!(AmdsmiGpuCacheInfoTCache, cache_properties) - 0usize];
    ["Offset of field: AmdsmiGpuCacheInfoTCache::cache_size"]
        [::std::mem::offset_of!(AmdsmiGpuCacheInfoTCache, cache_size) - 4usize];
    ["Offset of field: AmdsmiGpuCacheInfoTCache::cache_level"]
        [::std::mem::offset_of!(AmdsmiGpuCacheInfoTCache, cache_level) - 8usize];
    ["Offset of field: AmdsmiGpuCacheInfoTCache::max_num_cu_shared"]
        [::std::mem::offset_of!(AmdsmiGpuCacheInfoTCache, max_num_cu_shared) - 12usize];
    ["Offset of field: AmdsmiGpuCacheInfoTCache::num_cache_instance"]
        [::std::mem::offset_of!(AmdsmiGpuCacheInfoTCache, num_cache_instance) - 16usize];
    ["Offset of field: AmdsmiGpuCacheInfoTCache::reserved"]
        [::std::mem::offset_of!(AmdsmiGpuCacheInfoTCache, reserved) - 20usize];
};
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiGpuCacheInfoT"][::std::mem::size_of::<AmdsmiGpuCacheInfoT>() - 384usize];
    ["Alignment of AmdsmiGpuCacheInfoT"][::std::mem::align_of::<AmdsmiGpuCacheInfoT>() - 4usize];
    ["Offset of field: AmdsmiGpuCacheInfoT::num_cache_types"]
        [::std::mem::offset_of!(AmdsmiGpuCacheInfoT, num_cache_types) - 0usize];
    ["Offset of field: AmdsmiGpuCacheInfoT::cache"]
        [::std::mem::offset_of!(AmdsmiGpuCacheInfoT, cache) - 4usize];
    ["Offset of field: AmdsmiGpuCacheInfoT::reserved"]
        [::std::mem::offset_of!(AmdsmiGpuCacheInfoT, reserved) - 324usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiFwInfoT {
    pub num_fw_info: u8,
    pub fw_info_list: [AmdsmiFwInfoTFwInfoList; 80usize],
    pub reserved: [u32; 7usize],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiFwInfoTFwInfoList {
    pub fw_id: AmdsmiFwBlockT,
    pub fw_version: u64,
    pub reserved: [u64; 2usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiFwInfoTFwInfoList"][::std::mem::size_of::<AmdsmiFwInfoTFwInfoList>() - 32usize];
    ["Alignment of AmdsmiFwInfoTFwInfoList"]
        [::std::mem::align_of::<AmdsmiFwInfoTFwInfoList>() - 8usize];
    ["Offset of field: AmdsmiFwInfoTFwInfoList::fw_id"]
        [::std::mem::offset_of!(AmdsmiFwInfoTFwInfoList, fw_id) - 0usize];
    ["Offset of field: AmdsmiFwInfoTFwInfoList::fw_version"]
        [::std::mem::offset_of!(AmdsmiFwInfoTFwInfoList, fw_version) - 8usize];
    ["Offset of field: AmdsmiFwInfoTFwInfoList::reserved"]
        [::std::mem::offset_of!(AmdsmiFwInfoTFwInfoList, reserved) - 16usize];
};
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiFwInfoT"][::std::mem::size_of::<AmdsmiFwInfoT>() - 2600usize];
    ["Alignment of AmdsmiFwInfoT"][::std::mem::align_of::<AmdsmiFwInfoT>() - 8usize];
    ["Offset of field: AmdsmiFwInfoT::num_fw_info"]
        [::std::mem::offset_of!(AmdsmiFwInfoT, num_fw_info) - 0usize];
    ["Offset of field: AmdsmiFwInfoT::fw_info_list"]
        [::std::mem::offset_of!(AmdsmiFwInfoT, fw_info_list) - 8usize];
    ["Offset of field: AmdsmiFwInfoT::reserved"]
        [::std::mem::offset_of!(AmdsmiFwInfoT, reserved) - 2568usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiAsicInfoT {
    pub market_name: [::std::os::raw::c_char; 256usize],
    pub vendor_id: u32,
    pub vendor_name: [::std::os::raw::c_char; 256usize],
    pub subvendor_id: u32,
    pub device_id: u64,
    pub rev_id: u32,
    pub asic_serial: [::std::os::raw::c_char; 256usize],
    pub oam_id: u32,
    pub num_of_compute_units: u32,
    pub target_graphics_version: u64,
    pub subsystem_id: u32,
    pub flags: u64,
    pub reserved: [u32; 18usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiAsicInfoT"][::std::mem::size_of::<AmdsmiAsicInfoT>() - 896usize];
    ["Alignment of AmdsmiAsicInfoT"][::std::mem::align_of::<AmdsmiAsicInfoT>() - 8usize];
    ["Offset of field: AmdsmiAsicInfoT::market_name"]
        [::std::mem::offset_of!(AmdsmiAsicInfoT, market_name) - 0usize];
    ["Offset of field: AmdsmiAsicInfoT::vendor_id"]
        [::std::mem::offset_of!(AmdsmiAsicInfoT, vendor_id) - 256usize];
    ["Offset of field: AmdsmiAsicInfoT::vendor_name"]
        [::std::mem::offset_of!(AmdsmiAsicInfoT, vendor_name) - 260usize];
    ["Offset of field: AmdsmiAsicInfoT::subvendor_id"]
        [::std::mem::offset_of!(AmdsmiAsicInfoT, subvendor_id) - 516usize];
    ["Offset of field: AmdsmiAsicInfoT::device_id"]
        [::std::mem::offset_of!(AmdsmiAsicInfoT, device_id) - 520usize];
    ["Offset of field: AmdsmiAsicInfoT::rev_id"]
        [::std::mem::offset_of!(AmdsmiAsicInfoT, rev_id) - 528usize];
    ["Offset of field: AmdsmiAsicInfoT::asic_serial"]
        [::std::mem::offset_of!(AmdsmiAsicInfoT, asic_serial) - 532usize];
    ["Offset of field: AmdsmiAsicInfoT::oam_id"]
        [::std::mem::offset_of!(AmdsmiAsicInfoT, oam_id) - 788usize];
    ["Offset of field: AmdsmiAsicInfoT::num_of_compute_units"]
        [::std::mem::offset_of!(AmdsmiAsicInfoT, num_of_compute_units) - 792usize];
    ["Offset of field: AmdsmiAsicInfoT::target_graphics_version"]
        [::std::mem::offset_of!(AmdsmiAsicInfoT, target_graphics_version) - 800usize];
    ["Offset of field: AmdsmiAsicInfoT::subsystem_id"]
        [::std::mem::offset_of!(AmdsmiAsicInfoT, subsystem_id) - 808usize];
    ["Offset of field: AmdsmiAsicInfoT::flags"]
        [::std::mem::offset_of!(AmdsmiAsicInfoT, flags) - 816usize];
    ["Offset of field: AmdsmiAsicInfoT::reserved"]
        [::std::mem::offset_of!(AmdsmiAsicInfoT, reserved) - 824usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiKfdInfoT {
    pub kfd_id: u64,
    pub node_id: u32,
    pub current_partition_id: u32,
    pub reserved: [u32; 12usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiKfdInfoT"][::std::mem::size_of::<AmdsmiKfdInfoT>() - 64usize];
    ["Alignment of AmdsmiKfdInfoT"][::std::mem::align_of::<AmdsmiKfdInfoT>() - 8usize];
    ["Offset of field: AmdsmiKfdInfoT::kfd_id"]
        [::std::mem::offset_of!(AmdsmiKfdInfoT, kfd_id) - 0usize];
    ["Offset of field: AmdsmiKfdInfoT::node_id"]
        [::std::mem::offset_of!(AmdsmiKfdInfoT, node_id) - 8usize];
    ["Offset of field: AmdsmiKfdInfoT::current_partition_id"]
        [::std::mem::offset_of!(AmdsmiKfdInfoT, current_partition_id) - 12usize];
    ["Offset of field: AmdsmiKfdInfoT::reserved"]
        [::std::mem::offset_of!(AmdsmiKfdInfoT, reserved) - 16usize];
};
#[repr(C)]
#[derive(Copy, Clone)]
pub union AmdsmiNpsCapsT {
    pub nps_flags: AmdsmiNpsCapsTNpsFlags,
    pub nps_cap_mask: u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiNpsCapsTNpsFlags {
    pub _bitfield_align_1: [u32; 0],
    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize]>,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiNpsCapsTNpsFlags"][::std::mem::size_of::<AmdsmiNpsCapsTNpsFlags>() - 4usize];
    ["Alignment of AmdsmiNpsCapsTNpsFlags"]
        [::std::mem::align_of::<AmdsmiNpsCapsTNpsFlags>() - 4usize];
};
impl AmdsmiNpsCapsTNpsFlags {
    #[inline]
    pub fn nps1_cap(&self) -> u32 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) }
    }
    #[inline]
    pub fn set_nps1_cap(&mut self, val: u32) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(0usize, 1u8, val as u64)
        }
    }
    #[inline]
    pub fn nps2_cap(&self) -> u32 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u32) }
    }
    #[inline]
    pub fn set_nps2_cap(&mut self, val: u32) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(1usize, 1u8, val as u64)
        }
    }
    #[inline]
    pub fn nps4_cap(&self) -> u32 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 1u8) as u32) }
    }
    #[inline]
    pub fn set_nps4_cap(&mut self, val: u32) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(2usize, 1u8, val as u64)
        }
    }
    #[inline]
    pub fn nps8_cap(&self) -> u32 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u32) }
    }
    #[inline]
    pub fn set_nps8_cap(&mut self, val: u32) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(3usize, 1u8, val as u64)
        }
    }
    #[inline]
    pub fn reserved(&self) -> u32 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(4usize, 28u8) as u32) }
    }
    #[inline]
    pub fn set_reserved(&mut self, val: u32) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(4usize, 28u8, val as u64)
        }
    }
    #[inline]
    pub fn new_bitfield_1(
        nps1_cap: u32,
        nps2_cap: u32,
        nps4_cap: u32,
        nps8_cap: u32,
        reserved: u32,
    ) -> __BindgenBitfieldUnit<[u8; 4usize]> {
        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 4usize]> = Default::default();
        __bindgen_bitfield_unit.set(0usize, 1u8, {
            let nps1_cap: u32 = unsafe { ::std::mem::transmute(nps1_cap) };
            nps1_cap as u64
        });
        __bindgen_bitfield_unit.set(1usize, 1u8, {
            let nps2_cap: u32 = unsafe { ::std::mem::transmute(nps2_cap) };
            nps2_cap as u64
        });
        __bindgen_bitfield_unit.set(2usize, 1u8, {
            let nps4_cap: u32 = unsafe { ::std::mem::transmute(nps4_cap) };
            nps4_cap as u64
        });
        __bindgen_bitfield_unit.set(3usize, 1u8, {
            let nps8_cap: u32 = unsafe { ::std::mem::transmute(nps8_cap) };
            nps8_cap as u64
        });
        __bindgen_bitfield_unit.set(4usize, 28u8, {
            let reserved: u32 = unsafe { ::std::mem::transmute(reserved) };
            reserved as u64
        });
        __bindgen_bitfield_unit
    }
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiNpsCapsT"][::std::mem::size_of::<AmdsmiNpsCapsT>() - 4usize];
    ["Alignment of AmdsmiNpsCapsT"][::std::mem::align_of::<AmdsmiNpsCapsT>() - 4usize];
    ["Offset of field: AmdsmiNpsCapsT::nps_flags"]
        [::std::mem::offset_of!(AmdsmiNpsCapsT, nps_flags) - 0usize];
    ["Offset of field: AmdsmiNpsCapsT::nps_cap_mask"]
        [::std::mem::offset_of!(AmdsmiNpsCapsT, nps_cap_mask) - 0usize];
};
#[repr(C)]
#[derive(Copy, Clone)]
pub struct AmdsmiMemoryPartitionConfigT {
    pub partition_caps: AmdsmiNpsCapsT,
    pub mp_mode: AmdsmiMemoryPartitionTypeT,
    pub num_numa_ranges: u32,
    pub numa_range: [AmdsmiMemoryPartitionConfigTNumaRange; 32usize],
    pub reserved: [u64; 11usize],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiMemoryPartitionConfigTNumaRange {
    pub memory_type: AmdsmiVramTypeT,
    pub start: u64,
    pub end: u64,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiMemoryPartitionConfigTNumaRange"]
        [::std::mem::size_of::<AmdsmiMemoryPartitionConfigTNumaRange>() - 24usize];
    ["Alignment of AmdsmiMemoryPartitionConfigTNumaRange"]
        [::std::mem::align_of::<AmdsmiMemoryPartitionConfigTNumaRange>() - 8usize];
    ["Offset of field: AmdsmiMemoryPartitionConfigTNumaRange::memory_type"]
        [::std::mem::offset_of!(AmdsmiMemoryPartitionConfigTNumaRange, memory_type) - 0usize];
    ["Offset of field: AmdsmiMemoryPartitionConfigTNumaRange::start"]
        [::std::mem::offset_of!(AmdsmiMemoryPartitionConfigTNumaRange, start) - 8usize];
    ["Offset of field: AmdsmiMemoryPartitionConfigTNumaRange::end"]
        [::std::mem::offset_of!(AmdsmiMemoryPartitionConfigTNumaRange, end) - 16usize];
};
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiMemoryPartitionConfigT"]
        [::std::mem::size_of::<AmdsmiMemoryPartitionConfigT>() - 872usize];
    ["Alignment of AmdsmiMemoryPartitionConfigT"]
        [::std::mem::align_of::<AmdsmiMemoryPartitionConfigT>() - 8usize];
    ["Offset of field: AmdsmiMemoryPartitionConfigT::partition_caps"]
        [::std::mem::offset_of!(AmdsmiMemoryPartitionConfigT, partition_caps) - 0usize];
    ["Offset of field: AmdsmiMemoryPartitionConfigT::mp_mode"]
        [::std::mem::offset_of!(AmdsmiMemoryPartitionConfigT, mp_mode) - 4usize];
    ["Offset of field: AmdsmiMemoryPartitionConfigT::num_numa_ranges"]
        [::std::mem::offset_of!(AmdsmiMemoryPartitionConfigT, num_numa_ranges) - 8usize];
    ["Offset of field: AmdsmiMemoryPartitionConfigT::numa_range"]
        [::std::mem::offset_of!(AmdsmiMemoryPartitionConfigT, numa_range) - 16usize];
    ["Offset of field: AmdsmiMemoryPartitionConfigT::reserved"]
        [::std::mem::offset_of!(AmdsmiMemoryPartitionConfigT, reserved) - 784usize];
};
#[repr(C)]
#[derive(Copy, Clone)]
pub struct AmdsmiAcceleratorPartitionProfileT {
    pub profile_type: AmdsmiAcceleratorPartitionTypeT,
    pub num_partitions: u32,
    pub memory_caps: AmdsmiNpsCapsT,
    pub profile_index: u32,
    pub num_resources: u32,
    pub resources: [[u32; 32usize]; 8usize],
    pub reserved: [u64; 13usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiAcceleratorPartitionProfileT"]
        [::std::mem::size_of::<AmdsmiAcceleratorPartitionProfileT>() - 1152usize];
    ["Alignment of AmdsmiAcceleratorPartitionProfileT"]
        [::std::mem::align_of::<AmdsmiAcceleratorPartitionProfileT>() - 8usize];
    ["Offset of field: AmdsmiAcceleratorPartitionProfileT::profile_type"]
        [::std::mem::offset_of!(AmdsmiAcceleratorPartitionProfileT, profile_type) - 0usize];
    ["Offset of field: AmdsmiAcceleratorPartitionProfileT::num_partitions"]
        [::std::mem::offset_of!(AmdsmiAcceleratorPartitionProfileT, num_partitions) - 4usize];
    ["Offset of field: AmdsmiAcceleratorPartitionProfileT::memory_caps"]
        [::std::mem::offset_of!(AmdsmiAcceleratorPartitionProfileT, memory_caps) - 8usize];
    ["Offset of field: AmdsmiAcceleratorPartitionProfileT::profile_index"]
        [::std::mem::offset_of!(AmdsmiAcceleratorPartitionProfileT, profile_index) - 12usize];
    ["Offset of field: AmdsmiAcceleratorPartitionProfileT::num_resources"]
        [::std::mem::offset_of!(AmdsmiAcceleratorPartitionProfileT, num_resources) - 16usize];
    ["Offset of field: AmdsmiAcceleratorPartitionProfileT::resources"]
        [::std::mem::offset_of!(AmdsmiAcceleratorPartitionProfileT, resources) - 20usize];
    ["Offset of field: AmdsmiAcceleratorPartitionProfileT::reserved"]
        [::std::mem::offset_of!(AmdsmiAcceleratorPartitionProfileT, reserved) - 1048usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiAcceleratorPartitionResourceProfileT {
    pub profile_index: u32,
    pub resource_type: AmdsmiAcceleratorPartitionResourceTypeT,
    pub partition_resource: u32,
    pub num_partitions_share_resource: u32,
    pub reserved: [u64; 6usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiAcceleratorPartitionResourceProfileT"]
        [::std::mem::size_of::<AmdsmiAcceleratorPartitionResourceProfileT>() - 64usize];
    ["Alignment of AmdsmiAcceleratorPartitionResourceProfileT"]
        [::std::mem::align_of::<AmdsmiAcceleratorPartitionResourceProfileT>() - 8usize];
    ["Offset of field: AmdsmiAcceleratorPartitionResourceProfileT::profile_index"][::std::mem::offset_of!(
        AmdsmiAcceleratorPartitionResourceProfileT,
        profile_index
    ) - 0usize];
    ["Offset of field: AmdsmiAcceleratorPartitionResourceProfileT::resource_type"][::std::mem::offset_of!(
        AmdsmiAcceleratorPartitionResourceProfileT,
        resource_type
    ) - 4usize];
    ["Offset of field: AmdsmiAcceleratorPartitionResourceProfileT::partition_resource"][::std::mem::offset_of!(
        AmdsmiAcceleratorPartitionResourceProfileT,
        partition_resource
    ) - 8usize];
    ["Offset of field: AmdsmiAcceleratorPartitionResourceProfileT::num_partitions_share_resource"] [:: std :: mem :: offset_of ! (AmdsmiAcceleratorPartitionResourceProfileT , num_partitions_share_resource) - 12usize] ;
    ["Offset of field: AmdsmiAcceleratorPartitionResourceProfileT::reserved"]
        [::std::mem::offset_of!(AmdsmiAcceleratorPartitionResourceProfileT, reserved) - 16usize];
};
#[repr(C)]
#[derive(Copy, Clone)]
pub struct AmdsmiAcceleratorPartitionProfileConfigT {
    pub num_profiles: u32,
    pub num_resource_profiles: u32,
    pub resource_profiles: [AmdsmiAcceleratorPartitionResourceProfileT; 32usize],
    pub default_profile_index: u32,
    pub profiles: [AmdsmiAcceleratorPartitionProfileT; 32usize],
    pub reserved: [u64; 30usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiAcceleratorPartitionProfileConfigT"]
        [::std::mem::size_of::<AmdsmiAcceleratorPartitionProfileConfigT>() - 39168usize];
    ["Alignment of AmdsmiAcceleratorPartitionProfileConfigT"]
        [::std::mem::align_of::<AmdsmiAcceleratorPartitionProfileConfigT>() - 8usize];
    ["Offset of field: AmdsmiAcceleratorPartitionProfileConfigT::num_profiles"]
        [::std::mem::offset_of!(AmdsmiAcceleratorPartitionProfileConfigT, num_profiles) - 0usize];
    ["Offset of field: AmdsmiAcceleratorPartitionProfileConfigT::num_resource_profiles"][::std::mem::offset_of!(
        AmdsmiAcceleratorPartitionProfileConfigT,
        num_resource_profiles
    )
        - 4usize];
    ["Offset of field: AmdsmiAcceleratorPartitionProfileConfigT::resource_profiles"][::std::mem::offset_of!(
        AmdsmiAcceleratorPartitionProfileConfigT,
        resource_profiles
    ) - 8usize];
    ["Offset of field: AmdsmiAcceleratorPartitionProfileConfigT::default_profile_index"][::std::mem::offset_of!(
        AmdsmiAcceleratorPartitionProfileConfigT,
        default_profile_index
    )
        - 2056usize];
    ["Offset of field: AmdsmiAcceleratorPartitionProfileConfigT::profiles"]
        [::std::mem::offset_of!(AmdsmiAcceleratorPartitionProfileConfigT, profiles) - 2064usize];
    ["Offset of field: AmdsmiAcceleratorPartitionProfileConfigT::reserved"]
        [::std::mem::offset_of!(AmdsmiAcceleratorPartitionProfileConfigT, reserved) - 38928usize];
};
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiLinkTypeT {
    AmdsmiLinkTypeInternal = 0,
    AmdsmiLinkTypePcie = 1,
    AmdsmiLinkTypeXgmi = 2,
    AmdsmiLinkTypeNotApplicable = 3,
    AmdsmiLinkTypeUnknown = 4,
    AmdsmiLinkTypeNuma = 5,
    AmdsmiLinkTypeXnuma = 6,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiCpuUtilT {
    pub cpu_util_total: u32,
    pub cpu_util_user: u32,
    pub cpu_util_nice: u32,
    pub cpu_util_sys: u32,
    pub cpu_util_irq: u32,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiCpuUtilT"][::std::mem::size_of::<AmdsmiCpuUtilT>() - 20usize];
    ["Alignment of AmdsmiCpuUtilT"][::std::mem::align_of::<AmdsmiCpuUtilT>() - 4usize];
    ["Offset of field: AmdsmiCpuUtilT::cpu_util_total"]
        [::std::mem::offset_of!(AmdsmiCpuUtilT, cpu_util_total) - 0usize];
    ["Offset of field: AmdsmiCpuUtilT::cpu_util_user"]
        [::std::mem::offset_of!(AmdsmiCpuUtilT, cpu_util_user) - 4usize];
    ["Offset of field: AmdsmiCpuUtilT::cpu_util_nice"]
        [::std::mem::offset_of!(AmdsmiCpuUtilT, cpu_util_nice) - 8usize];
    ["Offset of field: AmdsmiCpuUtilT::cpu_util_sys"]
        [::std::mem::offset_of!(AmdsmiCpuUtilT, cpu_util_sys) - 12usize];
    ["Offset of field: AmdsmiCpuUtilT::cpu_util_irq"]
        [::std::mem::offset_of!(AmdsmiCpuUtilT, cpu_util_irq) - 16usize];
};
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiLinkStatusT {
    AmdsmiLinkStatusEnabled = 0,
    AmdsmiLinkStatusDisabled = 1,
    AmdsmiLinkStatusInactive = 2,
    AmdsmiLinkStatusError = 3,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct AmdsmiLinkMetricsT {
    pub num_links: u32,
    pub links: [AmdsmiLinkMetricsTLinks; 64usize],
    pub reserved: [u64; 7usize],
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct AmdsmiLinkMetricsTLinks {
    pub bdf: AmdsmiBdfT,
    pub bit_rate: u32,
    pub max_bandwidth: u32,
    pub link_type: AmdsmiLinkTypeT,
    pub read: u64,
    pub write: u64,
    pub link_status: AmdsmiLinkStatusT,
    pub reserved: [u64; 1usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiLinkMetricsTLinks"][::std::mem::size_of::<AmdsmiLinkMetricsTLinks>() - 56usize];
    ["Alignment of AmdsmiLinkMetricsTLinks"]
        [::std::mem::align_of::<AmdsmiLinkMetricsTLinks>() - 8usize];
    ["Offset of field: AmdsmiLinkMetricsTLinks::bdf"]
        [::std::mem::offset_of!(AmdsmiLinkMetricsTLinks, bdf) - 0usize];
    ["Offset of field: AmdsmiLinkMetricsTLinks::bit_rate"]
        [::std::mem::offset_of!(AmdsmiLinkMetricsTLinks, bit_rate) - 8usize];
    ["Offset of field: AmdsmiLinkMetricsTLinks::max_bandwidth"]
        [::std::mem::offset_of!(AmdsmiLinkMetricsTLinks, max_bandwidth) - 12usize];
    ["Offset of field: AmdsmiLinkMetricsTLinks::link_type"]
        [::std::mem::offset_of!(AmdsmiLinkMetricsTLinks, link_type) - 16usize];
    ["Offset of field: AmdsmiLinkMetricsTLinks::read"]
        [::std::mem::offset_of!(AmdsmiLinkMetricsTLinks, read) - 24usize];
    ["Offset of field: AmdsmiLinkMetricsTLinks::write"]
        [::std::mem::offset_of!(AmdsmiLinkMetricsTLinks, write) - 32usize];
    ["Offset of field: AmdsmiLinkMetricsTLinks::link_status"]
        [::std::mem::offset_of!(AmdsmiLinkMetricsTLinks, link_status) - 40usize];
    ["Offset of field: AmdsmiLinkMetricsTLinks::reserved"]
        [::std::mem::offset_of!(AmdsmiLinkMetricsTLinks, reserved) - 48usize];
};
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiLinkMetricsT"][::std::mem::size_of::<AmdsmiLinkMetricsT>() - 3648usize];
    ["Alignment of AmdsmiLinkMetricsT"][::std::mem::align_of::<AmdsmiLinkMetricsT>() - 8usize];
    ["Offset of field: AmdsmiLinkMetricsT::num_links"]
        [::std::mem::offset_of!(AmdsmiLinkMetricsT, num_links) - 0usize];
    ["Offset of field: AmdsmiLinkMetricsT::links"]
        [::std::mem::offset_of!(AmdsmiLinkMetricsT, links) - 8usize];
    ["Offset of field: AmdsmiLinkMetricsT::reserved"]
        [::std::mem::offset_of!(AmdsmiLinkMetricsT, reserved) - 3592usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiVramInfoT {
    pub vram_type: AmdsmiVramTypeT,
    pub vram_vendor: [::std::os::raw::c_char; 256usize],
    pub vram_size: u64,
    pub vram_bit_width: u32,
    pub vram_max_bandwidth: u64,
    pub reserved: [u64; 37usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiVramInfoT"][::std::mem::size_of::<AmdsmiVramInfoT>() - 584usize];
    ["Alignment of AmdsmiVramInfoT"][::std::mem::align_of::<AmdsmiVramInfoT>() - 8usize];
    ["Offset of field: AmdsmiVramInfoT::vram_type"]
        [::std::mem::offset_of!(AmdsmiVramInfoT, vram_type) - 0usize];
    ["Offset of field: AmdsmiVramInfoT::vram_vendor"]
        [::std::mem::offset_of!(AmdsmiVramInfoT, vram_vendor) - 4usize];
    ["Offset of field: AmdsmiVramInfoT::vram_size"]
        [::std::mem::offset_of!(AmdsmiVramInfoT, vram_size) - 264usize];
    ["Offset of field: AmdsmiVramInfoT::vram_bit_width"]
        [::std::mem::offset_of!(AmdsmiVramInfoT, vram_bit_width) - 272usize];
    ["Offset of field: AmdsmiVramInfoT::vram_max_bandwidth"]
        [::std::mem::offset_of!(AmdsmiVramInfoT, vram_max_bandwidth) - 280usize];
    ["Offset of field: AmdsmiVramInfoT::reserved"]
        [::std::mem::offset_of!(AmdsmiVramInfoT, reserved) - 288usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiDriverInfoT {
    pub driver_version: [::std::os::raw::c_char; 256usize],
    pub driver_date: [::std::os::raw::c_char; 256usize],
    pub driver_name: [::std::os::raw::c_char; 256usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiDriverInfoT"][::std::mem::size_of::<AmdsmiDriverInfoT>() - 768usize];
    ["Alignment of AmdsmiDriverInfoT"][::std::mem::align_of::<AmdsmiDriverInfoT>() - 1usize];
    ["Offset of field: AmdsmiDriverInfoT::driver_version"]
        [::std::mem::offset_of!(AmdsmiDriverInfoT, driver_version) - 0usize];
    ["Offset of field: AmdsmiDriverInfoT::driver_date"]
        [::std::mem::offset_of!(AmdsmiDriverInfoT, driver_date) - 256usize];
    ["Offset of field: AmdsmiDriverInfoT::driver_name"]
        [::std::mem::offset_of!(AmdsmiDriverInfoT, driver_name) - 512usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiBoardInfoT {
    pub model_number: [::std::os::raw::c_char; 256usize],
    pub product_serial: [::std::os::raw::c_char; 256usize],
    pub fru_id: [::std::os::raw::c_char; 256usize],
    pub product_name: [::std::os::raw::c_char; 256usize],
    pub manufacturer_name: [::std::os::raw::c_char; 256usize],
    pub reserved: [u64; 64usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiBoardInfoT"][::std::mem::size_of::<AmdsmiBoardInfoT>() - 1792usize];
    ["Alignment of AmdsmiBoardInfoT"][::std::mem::align_of::<AmdsmiBoardInfoT>() - 8usize];
    ["Offset of field: AmdsmiBoardInfoT::model_number"]
        [::std::mem::offset_of!(AmdsmiBoardInfoT, model_number) - 0usize];
    ["Offset of field: AmdsmiBoardInfoT::product_serial"]
        [::std::mem::offset_of!(AmdsmiBoardInfoT, product_serial) - 256usize];
    ["Offset of field: AmdsmiBoardInfoT::fru_id"]
        [::std::mem::offset_of!(AmdsmiBoardInfoT, fru_id) - 512usize];
    ["Offset of field: AmdsmiBoardInfoT::product_name"]
        [::std::mem::offset_of!(AmdsmiBoardInfoT, product_name) - 768usize];
    ["Offset of field: AmdsmiBoardInfoT::manufacturer_name"]
        [::std::mem::offset_of!(AmdsmiBoardInfoT, manufacturer_name) - 1024usize];
    ["Offset of field: AmdsmiBoardInfoT::reserved"]
        [::std::mem::offset_of!(AmdsmiBoardInfoT, reserved) - 1280usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiPowerInfoT {
    pub socket_power: u64,
    pub current_socket_power: u32,
    pub average_socket_power: u32,
    pub gfx_voltage: u64,
    pub soc_voltage: u64,
    pub mem_voltage: u64,
    pub power_limit: u32,
    pub ubb_power: u32,
    pub reserved: [u64; 18usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiPowerInfoT"][::std::mem::size_of::<AmdsmiPowerInfoT>() - 192usize];
    ["Alignment of AmdsmiPowerInfoT"][::std::mem::align_of::<AmdsmiPowerInfoT>() - 8usize];
    ["Offset of field: AmdsmiPowerInfoT::socket_power"]
        [::std::mem::offset_of!(AmdsmiPowerInfoT, socket_power) - 0usize];
    ["Offset of field: AmdsmiPowerInfoT::current_socket_power"]
        [::std::mem::offset_of!(AmdsmiPowerInfoT, current_socket_power) - 8usize];
    ["Offset of field: AmdsmiPowerInfoT::average_socket_power"]
        [::std::mem::offset_of!(AmdsmiPowerInfoT, average_socket_power) - 12usize];
    ["Offset of field: AmdsmiPowerInfoT::gfx_voltage"]
        [::std::mem::offset_of!(AmdsmiPowerInfoT, gfx_voltage) - 16usize];
    ["Offset of field: AmdsmiPowerInfoT::soc_voltage"]
        [::std::mem::offset_of!(AmdsmiPowerInfoT, soc_voltage) - 24usize];
    ["Offset of field: AmdsmiPowerInfoT::mem_voltage"]
        [::std::mem::offset_of!(AmdsmiPowerInfoT, mem_voltage) - 32usize];
    ["Offset of field: AmdsmiPowerInfoT::power_limit"]
        [::std::mem::offset_of!(AmdsmiPowerInfoT, power_limit) - 40usize];
    ["Offset of field: AmdsmiPowerInfoT::ubb_power"]
        [::std::mem::offset_of!(AmdsmiPowerInfoT, ubb_power) - 44usize];
    ["Offset of field: AmdsmiPowerInfoT::reserved"]
        [::std::mem::offset_of!(AmdsmiPowerInfoT, reserved) - 48usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiClkInfoT {
    pub clk: u32,
    pub min_clk: u32,
    pub max_clk: u32,
    pub clk_locked: u8,
    pub clk_deep_sleep: u8,
    pub reserved: [u32; 4usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiClkInfoT"][::std::mem::size_of::<AmdsmiClkInfoT>() - 32usize];
    ["Alignment of AmdsmiClkInfoT"][::std::mem::align_of::<AmdsmiClkInfoT>() - 4usize];
    ["Offset of field: AmdsmiClkInfoT::clk"][::std::mem::offset_of!(AmdsmiClkInfoT, clk) - 0usize];
    ["Offset of field: AmdsmiClkInfoT::min_clk"]
        [::std::mem::offset_of!(AmdsmiClkInfoT, min_clk) - 4usize];
    ["Offset of field: AmdsmiClkInfoT::max_clk"]
        [::std::mem::offset_of!(AmdsmiClkInfoT, max_clk) - 8usize];
    ["Offset of field: AmdsmiClkInfoT::clk_locked"]
        [::std::mem::offset_of!(AmdsmiClkInfoT, clk_locked) - 12usize];
    ["Offset of field: AmdsmiClkInfoT::clk_deep_sleep"]
        [::std::mem::offset_of!(AmdsmiClkInfoT, clk_deep_sleep) - 13usize];
    ["Offset of field: AmdsmiClkInfoT::reserved"]
        [::std::mem::offset_of!(AmdsmiClkInfoT, reserved) - 16usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiEngineUsageT {
    pub gfx_activity: u32,
    pub umc_activity: u32,
    pub mm_activity: u32,
    pub reserved: [u32; 13usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiEngineUsageT"][::std::mem::size_of::<AmdsmiEngineUsageT>() - 64usize];
    ["Alignment of AmdsmiEngineUsageT"][::std::mem::align_of::<AmdsmiEngineUsageT>() - 4usize];
    ["Offset of field: AmdsmiEngineUsageT::gfx_activity"]
        [::std::mem::offset_of!(AmdsmiEngineUsageT, gfx_activity) - 0usize];
    ["Offset of field: AmdsmiEngineUsageT::umc_activity"]
        [::std::mem::offset_of!(AmdsmiEngineUsageT, umc_activity) - 4usize];
    ["Offset of field: AmdsmiEngineUsageT::mm_activity"]
        [::std::mem::offset_of!(AmdsmiEngineUsageT, mm_activity) - 8usize];
    ["Offset of field: AmdsmiEngineUsageT::reserved"]
        [::std::mem::offset_of!(AmdsmiEngineUsageT, reserved) - 12usize];
};
pub type AmdsmiProcessHandleT = u32;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiProcInfoT {
    pub name: [::std::os::raw::c_char; 256usize],
    pub pid: AmdsmiProcessHandleT,
    pub mem: u64,
    pub engine_usage: AmdsmiProcInfoTEngineUsage,
    pub memory_usage: AmdsmiProcInfoTMemoryUsage,
    pub container_name: [::std::os::raw::c_char; 256usize],
    pub cu_occupancy: u32,
    pub evicted_time: u32,
    pub sdma_usage: u64,
    pub reserved: [u32; 8usize],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiProcInfoTEngineUsage {
    pub gfx: u64,
    pub enc: u64,
    pub reserved: [u32; 12usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiProcInfoTEngineUsage"]
        [::std::mem::size_of::<AmdsmiProcInfoTEngineUsage>() - 64usize];
    ["Alignment of AmdsmiProcInfoTEngineUsage"]
        [::std::mem::align_of::<AmdsmiProcInfoTEngineUsage>() - 8usize];
    ["Offset of field: AmdsmiProcInfoTEngineUsage::gfx"]
        [::std::mem::offset_of!(AmdsmiProcInfoTEngineUsage, gfx) - 0usize];
    ["Offset of field: AmdsmiProcInfoTEngineUsage::enc"]
        [::std::mem::offset_of!(AmdsmiProcInfoTEngineUsage, enc) - 8usize];
    ["Offset of field: AmdsmiProcInfoTEngineUsage::reserved"]
        [::std::mem::offset_of!(AmdsmiProcInfoTEngineUsage, reserved) - 16usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiProcInfoTMemoryUsage {
    pub gtt_mem: u64,
    pub cpu_mem: u64,
    pub vram_mem: u64,
    pub reserved: [u32; 10usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiProcInfoTMemoryUsage"]
        [::std::mem::size_of::<AmdsmiProcInfoTMemoryUsage>() - 64usize];
    ["Alignment of AmdsmiProcInfoTMemoryUsage"]
        [::std::mem::align_of::<AmdsmiProcInfoTMemoryUsage>() - 8usize];
    ["Offset of field: AmdsmiProcInfoTMemoryUsage::gtt_mem"]
        [::std::mem::offset_of!(AmdsmiProcInfoTMemoryUsage, gtt_mem) - 0usize];
    ["Offset of field: AmdsmiProcInfoTMemoryUsage::cpu_mem"]
        [::std::mem::offset_of!(AmdsmiProcInfoTMemoryUsage, cpu_mem) - 8usize];
    ["Offset of field: AmdsmiProcInfoTMemoryUsage::vram_mem"]
        [::std::mem::offset_of!(AmdsmiProcInfoTMemoryUsage, vram_mem) - 16usize];
    ["Offset of field: AmdsmiProcInfoTMemoryUsage::reserved"]
        [::std::mem::offset_of!(AmdsmiProcInfoTMemoryUsage, reserved) - 24usize];
};
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiProcInfoT"][::std::mem::size_of::<AmdsmiProcInfoT>() - 704usize];
    ["Alignment of AmdsmiProcInfoT"][::std::mem::align_of::<AmdsmiProcInfoT>() - 8usize];
    ["Offset of field: AmdsmiProcInfoT::name"]
        [::std::mem::offset_of!(AmdsmiProcInfoT, name) - 0usize];
    ["Offset of field: AmdsmiProcInfoT::pid"]
        [::std::mem::offset_of!(AmdsmiProcInfoT, pid) - 256usize];
    ["Offset of field: AmdsmiProcInfoT::mem"]
        [::std::mem::offset_of!(AmdsmiProcInfoT, mem) - 264usize];
    ["Offset of field: AmdsmiProcInfoT::engine_usage"]
        [::std::mem::offset_of!(AmdsmiProcInfoT, engine_usage) - 272usize];
    ["Offset of field: AmdsmiProcInfoT::memory_usage"]
        [::std::mem::offset_of!(AmdsmiProcInfoT, memory_usage) - 336usize];
    ["Offset of field: AmdsmiProcInfoT::container_name"]
        [::std::mem::offset_of!(AmdsmiProcInfoT, container_name) - 400usize];
    ["Offset of field: AmdsmiProcInfoT::cu_occupancy"]
        [::std::mem::offset_of!(AmdsmiProcInfoT, cu_occupancy) - 656usize];
    ["Offset of field: AmdsmiProcInfoT::evicted_time"]
        [::std::mem::offset_of!(AmdsmiProcInfoT, evicted_time) - 660usize];
    ["Offset of field: AmdsmiProcInfoT::sdma_usage"]
        [::std::mem::offset_of!(AmdsmiProcInfoT, sdma_usage) - 664usize];
    ["Offset of field: AmdsmiProcInfoT::reserved"]
        [::std::mem::offset_of!(AmdsmiProcInfoT, reserved) - 672usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiProcGpuEntryT {
    pub gpu_index: u32,
    pub mem: u64,
    pub engine_usage: AmdsmiProcGpuEntryTBindgenTy1,
    pub memory_usage: AmdsmiProcGpuEntryTBindgenTy2,
    pub cu_occupancy: u32,
    pub evicted_time: u32,
    pub sdma_usage: u64,
    pub reserved: [u32; 8usize],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiProcGpuEntryTBindgenTy1 {
    pub gfx: u64,
    pub enc: u64,
    pub reserved: [u32; 12usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiProcGpuEntryTBindgenTy1"]
        [::std::mem::size_of::<AmdsmiProcGpuEntryTBindgenTy1>() - 64usize];
    ["Alignment of AmdsmiProcGpuEntryTBindgenTy1"]
        [::std::mem::align_of::<AmdsmiProcGpuEntryTBindgenTy1>() - 8usize];
    ["Offset of field: AmdsmiProcGpuEntryTBindgenTy1::gfx"]
        [::std::mem::offset_of!(AmdsmiProcGpuEntryTBindgenTy1, gfx) - 0usize];
    ["Offset of field: AmdsmiProcGpuEntryTBindgenTy1::enc"]
        [::std::mem::offset_of!(AmdsmiProcGpuEntryTBindgenTy1, enc) - 8usize];
    ["Offset of field: AmdsmiProcGpuEntryTBindgenTy1::reserved"]
        [::std::mem::offset_of!(AmdsmiProcGpuEntryTBindgenTy1, reserved) - 16usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiProcGpuEntryTBindgenTy2 {
    pub gtt_mem: u64,
    pub cpu_mem: u64,
    pub vram_mem: u64,
    pub reserved: [u32; 10usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiProcGpuEntryTBindgenTy2"]
        [::std::mem::size_of::<AmdsmiProcGpuEntryTBindgenTy2>() - 64usize];
    ["Alignment of AmdsmiProcGpuEntryTBindgenTy2"]
        [::std::mem::align_of::<AmdsmiProcGpuEntryTBindgenTy2>() - 8usize];
    ["Offset of field: AmdsmiProcGpuEntryTBindgenTy2::gtt_mem"]
        [::std::mem::offset_of!(AmdsmiProcGpuEntryTBindgenTy2, gtt_mem) - 0usize];
    ["Offset of field: AmdsmiProcGpuEntryTBindgenTy2::cpu_mem"]
        [::std::mem::offset_of!(AmdsmiProcGpuEntryTBindgenTy2, cpu_mem) - 8usize];
    ["Offset of field: AmdsmiProcGpuEntryTBindgenTy2::vram_mem"]
        [::std::mem::offset_of!(AmdsmiProcGpuEntryTBindgenTy2, vram_mem) - 16usize];
    ["Offset of field: AmdsmiProcGpuEntryTBindgenTy2::reserved"]
        [::std::mem::offset_of!(AmdsmiProcGpuEntryTBindgenTy2, reserved) - 24usize];
};
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiProcGpuEntryT"][::std::mem::size_of::<AmdsmiProcGpuEntryT>() - 192usize];
    ["Alignment of AmdsmiProcGpuEntryT"][::std::mem::align_of::<AmdsmiProcGpuEntryT>() - 8usize];
    ["Offset of field: AmdsmiProcGpuEntryT::gpu_index"]
        [::std::mem::offset_of!(AmdsmiProcGpuEntryT, gpu_index) - 0usize];
    ["Offset of field: AmdsmiProcGpuEntryT::mem"]
        [::std::mem::offset_of!(AmdsmiProcGpuEntryT, mem) - 8usize];
    ["Offset of field: AmdsmiProcGpuEntryT::engine_usage"]
        [::std::mem::offset_of!(AmdsmiProcGpuEntryT, engine_usage) - 16usize];
    ["Offset of field: AmdsmiProcGpuEntryT::memory_usage"]
        [::std::mem::offset_of!(AmdsmiProcGpuEntryT, memory_usage) - 80usize];
    ["Offset of field: AmdsmiProcGpuEntryT::cu_occupancy"]
        [::std::mem::offset_of!(AmdsmiProcGpuEntryT, cu_occupancy) - 144usize];
    ["Offset of field: AmdsmiProcGpuEntryT::evicted_time"]
        [::std::mem::offset_of!(AmdsmiProcGpuEntryT, evicted_time) - 148usize];
    ["Offset of field: AmdsmiProcGpuEntryT::sdma_usage"]
        [::std::mem::offset_of!(AmdsmiProcGpuEntryT, sdma_usage) - 152usize];
    ["Offset of field: AmdsmiProcGpuEntryT::reserved"]
        [::std::mem::offset_of!(AmdsmiProcGpuEntryT, reserved) - 160usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiProcInfoByPidT {
    pub pid: AmdsmiProcessHandleT,
    pub name: [::std::os::raw::c_char; 256usize],
    pub container_name: [::std::os::raw::c_char; 256usize],
    pub num_gpus: u32,
    pub gpus: [AmdsmiProcGpuEntryT; 32usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiProcInfoByPidT"][::std::mem::size_of::<AmdsmiProcInfoByPidT>() - 6664usize];
    ["Alignment of AmdsmiProcInfoByPidT"][::std::mem::align_of::<AmdsmiProcInfoByPidT>() - 8usize];
    ["Offset of field: AmdsmiProcInfoByPidT::pid"]
        [::std::mem::offset_of!(AmdsmiProcInfoByPidT, pid) - 0usize];
    ["Offset of field: AmdsmiProcInfoByPidT::name"]
        [::std::mem::offset_of!(AmdsmiProcInfoByPidT, name) - 4usize];
    ["Offset of field: AmdsmiProcInfoByPidT::container_name"]
        [::std::mem::offset_of!(AmdsmiProcInfoByPidT, container_name) - 260usize];
    ["Offset of field: AmdsmiProcInfoByPidT::num_gpus"]
        [::std::mem::offset_of!(AmdsmiProcInfoByPidT, num_gpus) - 516usize];
    ["Offset of field: AmdsmiProcInfoByPidT::gpus"]
        [::std::mem::offset_of!(AmdsmiProcInfoByPidT, gpus) - 520usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiP2pCapabilityT {
    pub is_iolink_coherent: u8,
    pub is_iolink_atomics_32bit: u8,
    pub is_iolink_atomics_64bit: u8,
    pub is_iolink_dma: u8,
    pub is_iolink_bi_directional: u8,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiP2pCapabilityT"][::std::mem::size_of::<AmdsmiP2pCapabilityT>() - 5usize];
    ["Alignment of AmdsmiP2pCapabilityT"][::std::mem::align_of::<AmdsmiP2pCapabilityT>() - 1usize];
    ["Offset of field: AmdsmiP2pCapabilityT::is_iolink_coherent"]
        [::std::mem::offset_of!(AmdsmiP2pCapabilityT, is_iolink_coherent) - 0usize];
    ["Offset of field: AmdsmiP2pCapabilityT::is_iolink_atomics_32bit"]
        [::std::mem::offset_of!(AmdsmiP2pCapabilityT, is_iolink_atomics_32bit) - 1usize];
    ["Offset of field: AmdsmiP2pCapabilityT::is_iolink_atomics_64bit"]
        [::std::mem::offset_of!(AmdsmiP2pCapabilityT, is_iolink_atomics_64bit) - 2usize];
    ["Offset of field: AmdsmiP2pCapabilityT::is_iolink_dma"]
        [::std::mem::offset_of!(AmdsmiP2pCapabilityT, is_iolink_dma) - 3usize];
    ["Offset of field: AmdsmiP2pCapabilityT::is_iolink_bi_directional"]
        [::std::mem::offset_of!(AmdsmiP2pCapabilityT, is_iolink_bi_directional) - 4usize];
};
impl AmdsmiDevPerfLevelT {
    pub const AmdsmiDevPerfLevelFirst: AmdsmiDevPerfLevelT =
        AmdsmiDevPerfLevelT::AmdsmiDevPerfLevelAuto;
}
impl AmdsmiDevPerfLevelT {
    pub const AmdsmiDevPerfLevelLast: AmdsmiDevPerfLevelT =
        AmdsmiDevPerfLevelT::AmdsmiDevPerfLevelDeterminism;
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiDevPerfLevelT {
    AmdsmiDevPerfLevelAuto = 0,
    AmdsmiDevPerfLevelLow = 1,
    AmdsmiDevPerfLevelHigh = 2,
    AmdsmiDevPerfLevelManual = 3,
    AmdsmiDevPerfLevelStableStd = 4,
    AmdsmiDevPerfLevelStablePeak = 5,
    AmdsmiDevPerfLevelStableMinMclk = 6,
    AmdsmiDevPerfLevelStableMinSclk = 7,
    AmdsmiDevPerfLevelDeterminism = 8,
    AmdsmiDevPerfLevelUnknown = 256,
}
pub type AmdsmiEventHandleT = usize;
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiEventGroupT {
    AmdsmiEvntGrpXgmi = 0,
    AmdsmiEvntGrpXgmiDataOut = 10,
    AmdsmiEvntGrpInvalid = 4294967295,
}
impl AmdsmiEventTypeT {
    pub const AmdsmiEvntXgmiFirst: AmdsmiEventTypeT = AmdsmiEventTypeT::AmdsmiEvntFirst;
}
impl AmdsmiEventTypeT {
    pub const AmdsmiEvntXgmi0NopTx: AmdsmiEventTypeT = AmdsmiEventTypeT::AmdsmiEvntFirst;
}
impl AmdsmiEventTypeT {
    pub const AmdsmiEvntXgmiLast: AmdsmiEventTypeT = AmdsmiEventTypeT::AmdsmiEvntXgmi1BeatsTx;
}
impl AmdsmiEventTypeT {
    pub const AmdsmiEvntXgmiDataOut0: AmdsmiEventTypeT =
        AmdsmiEventTypeT::AmdsmiEvntXgmiDataOutFirst;
}
impl AmdsmiEventTypeT {
    pub const AmdsmiEvntXgmiDataOutLast: AmdsmiEventTypeT =
        AmdsmiEventTypeT::AmdsmiEvntXgmiDataOut5;
}
impl AmdsmiEventTypeT {
    pub const AmdsmiEvntLast: AmdsmiEventTypeT = AmdsmiEventTypeT::AmdsmiEvntXgmiDataOut5;
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiEventTypeT {
    AmdsmiEvntFirst = 0,
    AmdsmiEvntXgmi0RequestTx = 1,
    AmdsmiEvntXgmi0ResponseTx = 2,
    AmdsmiEvntXgmi0BeatsTx = 3,
    AmdsmiEvntXgmi1NopTx = 4,
    AmdsmiEvntXgmi1RequestTx = 5,
    AmdsmiEvntXgmi1ResponseTx = 6,
    AmdsmiEvntXgmi1BeatsTx = 7,
    AmdsmiEvntXgmiDataOutFirst = 10,
    AmdsmiEvntXgmiDataOut1 = 11,
    AmdsmiEvntXgmiDataOut2 = 12,
    AmdsmiEvntXgmiDataOut3 = 13,
    AmdsmiEvntXgmiDataOut4 = 14,
    AmdsmiEvntXgmiDataOut5 = 15,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiCounterCommandT {
    AmdsmiCntrCmdStart = 0,
    AmdsmiCntrCmdStop = 1,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiCounterValueT {
    pub value: u64,
    pub time_enabled: u64,
    pub time_running: u64,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiCounterValueT"][::std::mem::size_of::<AmdsmiCounterValueT>() - 24usize];
    ["Alignment of AmdsmiCounterValueT"][::std::mem::align_of::<AmdsmiCounterValueT>() - 8usize];
    ["Offset of field: AmdsmiCounterValueT::value"]
        [::std::mem::offset_of!(AmdsmiCounterValueT, value) - 0usize];
    ["Offset of field: AmdsmiCounterValueT::time_enabled"]
        [::std::mem::offset_of!(AmdsmiCounterValueT, time_enabled) - 8usize];
    ["Offset of field: AmdsmiCounterValueT::time_running"]
        [::std::mem::offset_of!(AmdsmiCounterValueT, time_running) - 16usize];
};
impl AmdsmiEvtNotificationTypeT {
    pub const AmdsmiEvtNotifFirst: AmdsmiEvtNotificationTypeT =
        AmdsmiEvtNotificationTypeT::AmdsmiEvtNotifVmfault;
}
impl AmdsmiEvtNotificationTypeT {
    pub const AmdsmiEvtNotifLast: AmdsmiEvtNotificationTypeT =
        AmdsmiEvtNotificationTypeT::AmdsmiEvtNotifProcessEnd;
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiEvtNotificationTypeT {
    AmdsmiEvtNotifNone = 0,
    AmdsmiEvtNotifVmfault = 1,
    AmdsmiEvtNotifThermalThrottle = 2,
    AmdsmiEvtNotifGpuPreReset = 3,
    AmdsmiEvtNotifGpuPostReset = 4,
    AmdsmiEvtNotifMigrateStart = 5,
    AmdsmiEvtNotifMigrateEnd = 6,
    AmdsmiEvtNotifPageFaultStart = 7,
    AmdsmiEvtNotifPageFaultEnd = 8,
    AmdsmiEvtNotifQueueEviction = 9,
    AmdsmiEvtNotifQueueRestore = 10,
    AmdsmiEvtNotifUnmapFromGpu = 11,
    AmdsmiEvtNotifProcessStart = 12,
    AmdsmiEvtNotifProcessEnd = 13,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiEvtNotificationDataT {
    pub processor_handle: AmdsmiProcessorHandle,
    pub event: AmdsmiEvtNotificationTypeT,
    pub message: [::std::os::raw::c_char; 256usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiEvtNotificationDataT"]
        [::std::mem::size_of::<AmdsmiEvtNotificationDataT>() - 272usize];
    ["Alignment of AmdsmiEvtNotificationDataT"]
        [::std::mem::align_of::<AmdsmiEvtNotificationDataT>() - 8usize];
    ["Offset of field: AmdsmiEvtNotificationDataT::processor_handle"]
        [::std::mem::offset_of!(AmdsmiEvtNotificationDataT, processor_handle) - 0usize];
    ["Offset of field: AmdsmiEvtNotificationDataT::event"]
        [::std::mem::offset_of!(AmdsmiEvtNotificationDataT, event) - 8usize];
    ["Offset of field: AmdsmiEvtNotificationDataT::message"]
        [::std::mem::offset_of!(AmdsmiEvtNotificationDataT, message) - 12usize];
};
impl AmdsmiTemperatureMetricT {
    pub const AmdsmiTempFirst: AmdsmiTemperatureMetricT =
        AmdsmiTemperatureMetricT::AmdsmiTempCurrent;
}
impl AmdsmiTemperatureMetricT {
    pub const AmdsmiTempLast: AmdsmiTemperatureMetricT =
        AmdsmiTemperatureMetricT::AmdsmiTempShutdown;
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiTemperatureMetricT {
    AmdsmiTempCurrent = 0,
    AmdsmiTempMax = 1,
    AmdsmiTempMin = 2,
    AmdsmiTempMaxHyst = 3,
    AmdsmiTempMinHyst = 4,
    AmdsmiTempCritical = 5,
    AmdsmiTempCriticalHyst = 6,
    AmdsmiTempEmergency = 7,
    AmdsmiTempEmergencyHyst = 8,
    AmdsmiTempCritMin = 9,
    AmdsmiTempCritMinHyst = 10,
    AmdsmiTempOffset = 11,
    AmdsmiTempLowest = 12,
    AmdsmiTempHighest = 13,
    AmdsmiTempShutdown = 14,
}
impl AmdsmiVoltageMetricT {
    pub const AmdsmiVoltFirst: AmdsmiVoltageMetricT = AmdsmiVoltageMetricT::AmdsmiVoltCurrent;
}
impl AmdsmiVoltageMetricT {
    pub const AmdsmiVoltLast: AmdsmiVoltageMetricT = AmdsmiVoltageMetricT::AmdsmiVoltHighest;
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiVoltageMetricT {
    AmdsmiVoltCurrent = 0,
    AmdsmiVoltMax = 1,
    AmdsmiVoltMinCrit = 2,
    AmdsmiVoltMin = 3,
    AmdsmiVoltMaxCrit = 4,
    AmdsmiVoltAverage = 5,
    AmdsmiVoltLowest = 6,
    AmdsmiVoltHighest = 7,
}
impl AmdsmiVoltageTypeT {
    pub const AmdsmiVoltTypeVddgfx: AmdsmiVoltageTypeT = AmdsmiVoltageTypeT::AmdsmiVoltTypeFirst;
}
impl AmdsmiVoltageTypeT {
    pub const AmdsmiVoltTypeLast: AmdsmiVoltageTypeT = AmdsmiVoltageTypeT::AmdsmiVoltTypeVddboard;
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiVoltageTypeT {
    AmdsmiVoltTypeFirst = 0,
    AmdsmiVoltTypeVddboard = 1,
    AmdsmiVoltTypeInvalid = 4294967295,
}
impl AmdsmiPowerProfilePresetMasksT {
    pub const AmdsmiPwrProfPrstLast: AmdsmiPowerProfilePresetMasksT =
        AmdsmiPowerProfilePresetMasksT::AmdsmiPwrProfPrstBootupDefault;
}
#[repr(u64)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiPowerProfilePresetMasksT {
    AmdsmiPwrProfPrstCustomMask = 1,
    AmdsmiPwrProfPrstVideoMask = 2,
    AmdsmiPwrProfPrstPowerSavingMask = 4,
    AmdsmiPwrProfPrstComputeMask = 8,
    AmdsmiPwrProfPrstVrMask = 16,
    AmdsmiPwrProfPrst3dFullScrMask = 32,
    AmdsmiPwrProfPrstBootupDefault = 64,
    AmdsmiPwrProfPrstInvalid = 18446744073709551615,
}
impl AmdsmiGpuBlockT {
    pub const AmdsmiGpuBlockUmc: AmdsmiGpuBlockT = AmdsmiGpuBlockT::AmdsmiGpuBlockFirst;
}
impl AmdsmiGpuBlockT {
    pub const AmdsmiGpuBlockLast: AmdsmiGpuBlockT = AmdsmiGpuBlockT::AmdsmiGpuBlockMpio;
}
#[repr(u64)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiGpuBlockT {
    AmdsmiGpuBlockInvalid = 0,
    AmdsmiGpuBlockFirst = 1,
    AmdsmiGpuBlockSdma = 2,
    AmdsmiGpuBlockGfx = 4,
    AmdsmiGpuBlockMmhub = 8,
    AmdsmiGpuBlockAthub = 16,
    AmdsmiGpuBlockPcieBif = 32,
    AmdsmiGpuBlockHdp = 64,
    AmdsmiGpuBlockXgmiWafl = 128,
    AmdsmiGpuBlockDf = 256,
    AmdsmiGpuBlockSmn = 512,
    AmdsmiGpuBlockSem = 1024,
    AmdsmiGpuBlockMp0 = 2048,
    AmdsmiGpuBlockMp1 = 4096,
    AmdsmiGpuBlockFuse = 8192,
    AmdsmiGpuBlockMca = 16384,
    AmdsmiGpuBlockVcn = 32768,
    AmdsmiGpuBlockJpeg = 65536,
    AmdsmiGpuBlockIh = 131072,
    AmdsmiGpuBlockMpio = 262144,
    AmdsmiGpuBlockReserved = 9223372036854775808,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiClkLimitTypeT {
    ClkLimitMin = 0,
    ClkLimitMax = 1,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiCperSevT {
    AmdsmiCperSevNonFatalUncorrected = 0,
    AmdsmiCperSevFatal = 1,
    AmdsmiCperSevNonFatalCorrected = 2,
    AmdsmiCperSevNum = 3,
    AmdsmiCperSevUnused = 10,
}
#[repr(u64)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiCperNotifyTypeT {
    AmdsmiCperNotifyTypeCmc = 4976123370175105969,
    AmdsmiCperNotifyTypeCpe = 5356425115412803478,
    AmdsmiCperNotifyTypeMce = 5531987820403847166,
    AmdsmiCperNotifyTypePcie = 5619395120325705759,
    AmdsmiCperNotifyTypeInit = 4992964802890589160,
    AmdsmiCperNotifyTypeNmi = 4812579876830546431,
    AmdsmiCperNotifyTypeBoot = 4655221457236894822,
    AmdsmiCperNotifyTypeDmar = 5487573144795207569,
    AmdsmiCperNotifyTypeSea = 1289362001033197706,
    AmdsmiCperNotifyTypeSei = 5658685719731260545,
    AmdsmiCperNotifyTypePei = 4761520883332928940,
    AmdsmiCperNotifyTypeCxlComponent = 5306157213770398665,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiGpuRasPolicyV40T {
    pub dram_non_critical_region_threshold: u16,
    pub dram_critical_region_threshold: u16,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiGpuRasPolicyV40T"][::std::mem::size_of::<AmdsmiGpuRasPolicyV40T>() - 4usize];
    ["Alignment of AmdsmiGpuRasPolicyV40T"]
        [::std::mem::align_of::<AmdsmiGpuRasPolicyV40T>() - 2usize];
    ["Offset of field: AmdsmiGpuRasPolicyV40T::dram_non_critical_region_threshold"][::std::mem::offset_of!(
        AmdsmiGpuRasPolicyV40T,
        dram_non_critical_region_threshold
    ) - 0usize];
    ["Offset of field: AmdsmiGpuRasPolicyV40T::dram_critical_region_threshold"]
        [::std::mem::offset_of!(AmdsmiGpuRasPolicyV40T, dram_critical_region_threshold) - 2usize];
};
#[repr(C)]
#[derive(Copy, Clone)]
pub struct AmdsmiGpuRasPolicyInfoT {
    pub major_version: u8,
    pub minor_version: u8,
    pub policy_data: AmdsmiGpuRasPolicyInfoTPolicyData,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union AmdsmiGpuRasPolicyInfoTPolicyData {
    pub v4_0: AmdsmiGpuRasPolicyV40T,
    pub info: [u64; 5usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiGpuRasPolicyInfoTPolicyData"]
        [::std::mem::size_of::<AmdsmiGpuRasPolicyInfoTPolicyData>() - 40usize];
    ["Alignment of AmdsmiGpuRasPolicyInfoTPolicyData"]
        [::std::mem::align_of::<AmdsmiGpuRasPolicyInfoTPolicyData>() - 8usize];
    ["Offset of field: AmdsmiGpuRasPolicyInfoTPolicyData::v4_0"]
        [::std::mem::offset_of!(AmdsmiGpuRasPolicyInfoTPolicyData, v4_0) - 0usize];
    ["Offset of field: AmdsmiGpuRasPolicyInfoTPolicyData::info"]
        [::std::mem::offset_of!(AmdsmiGpuRasPolicyInfoTPolicyData, info) - 0usize];
};
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiGpuRasPolicyInfoT"][::std::mem::size_of::<AmdsmiGpuRasPolicyInfoT>() - 48usize];
    ["Alignment of AmdsmiGpuRasPolicyInfoT"]
        [::std::mem::align_of::<AmdsmiGpuRasPolicyInfoT>() - 8usize];
    ["Offset of field: AmdsmiGpuRasPolicyInfoT::major_version"]
        [::std::mem::offset_of!(AmdsmiGpuRasPolicyInfoT, major_version) - 0usize];
    ["Offset of field: AmdsmiGpuRasPolicyInfoT::minor_version"]
        [::std::mem::offset_of!(AmdsmiGpuRasPolicyInfoT, minor_version) - 1usize];
    ["Offset of field: AmdsmiGpuRasPolicyInfoT::policy_data"]
        [::std::mem::offset_of!(AmdsmiGpuRasPolicyInfoT, policy_data) - 8usize];
};
impl AmdsmiRasErrStateT {
    pub const AmdsmiRasErrStateLast: AmdsmiRasErrStateT =
        AmdsmiRasErrStateT::AmdsmiRasErrStateEnabled;
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiRasErrStateT {
    AmdsmiRasErrStateNone = 0,
    AmdsmiRasErrStateDisabled = 1,
    AmdsmiRasErrStateParity = 2,
    AmdsmiRasErrStateSingC = 3,
    AmdsmiRasErrStateMultUc = 4,
    AmdsmiRasErrStatePoison = 5,
    AmdsmiRasErrStateEnabled = 6,
    AmdsmiRasErrStateInvalid = 4294967295,
}
impl AmdsmiMemoryTypeT {
    pub const AmdsmiMemTypeVram: AmdsmiMemoryTypeT = AmdsmiMemoryTypeT::AmdsmiMemTypeFirst;
}
impl AmdsmiMemoryTypeT {
    pub const AmdsmiMemTypeLast: AmdsmiMemoryTypeT = AmdsmiMemoryTypeT::AmdsmiMemTypeGtt;
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiMemoryTypeT {
    AmdsmiMemTypeFirst = 0,
    AmdsmiMemTypeVisVram = 1,
    AmdsmiMemTypeGtt = 2,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiFreqIndT {
    AmdsmiFreqIndMin = 0,
    AmdsmiFreqIndMax = 1,
    AmdsmiFreqIndInvalid = 4294967295,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiXgmiStatusT {
    AmdsmiXgmiStatusNoErrors = 0,
    AmdsmiXgmiStatusError = 1,
    AmdsmiXgmiStatusMultipleErrors = 2,
}
pub type AmdsmiBitFieldT = u64;
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiMemoryPageStatusT {
    AmdsmiMemPageStatusReserved = 0,
    AmdsmiMemPageStatusPending = 1,
    AmdsmiMemPageStatusUnreservable = 2,
}
impl AmdsmiUtilizationCounterTypeT {
    pub const AmdsmiCoarseGrainGfxActivity: AmdsmiUtilizationCounterTypeT =
        AmdsmiUtilizationCounterTypeT::AmdsmiUtilizationCounterFirst;
}
impl AmdsmiUtilizationCounterTypeT {
    pub const AmdsmiUtilizationCounterLast: AmdsmiUtilizationCounterTypeT =
        AmdsmiUtilizationCounterTypeT::AmdsmiFineDecoderActivity;
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiUtilizationCounterTypeT {
    AmdsmiUtilizationCounterFirst = 0,
    AmdsmiCoarseGrainMemActivity = 1,
    AmdsmiCoarseDecoderActivity = 2,
    AmdsmiFineGrainGfxActivity = 100,
    AmdsmiFineGrainMemActivity = 101,
    AmdsmiFineDecoderActivity = 102,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiUtilizationCounterT {
    pub type_: AmdsmiUtilizationCounterTypeT,
    pub value: u64,
    pub fine_value: [u64; 4usize],
    pub fine_value_count: u16,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiUtilizationCounterT"]
        [::std::mem::size_of::<AmdsmiUtilizationCounterT>() - 56usize];
    ["Alignment of AmdsmiUtilizationCounterT"]
        [::std::mem::align_of::<AmdsmiUtilizationCounterT>() - 8usize];
    ["Offset of field: AmdsmiUtilizationCounterT::type_"]
        [::std::mem::offset_of!(AmdsmiUtilizationCounterT, type_) - 0usize];
    ["Offset of field: AmdsmiUtilizationCounterT::value"]
        [::std::mem::offset_of!(AmdsmiUtilizationCounterT, value) - 8usize];
    ["Offset of field: AmdsmiUtilizationCounterT::fine_value"]
        [::std::mem::offset_of!(AmdsmiUtilizationCounterT, fine_value) - 16usize];
    ["Offset of field: AmdsmiUtilizationCounterT::fine_value_count"]
        [::std::mem::offset_of!(AmdsmiUtilizationCounterT, fine_value_count) - 48usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiRetiredPageRecordT {
    pub page_address: u64,
    pub page_size: u64,
    pub status: AmdsmiMemoryPageStatusT,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiRetiredPageRecordT"]
        [::std::mem::size_of::<AmdsmiRetiredPageRecordT>() - 24usize];
    ["Alignment of AmdsmiRetiredPageRecordT"]
        [::std::mem::align_of::<AmdsmiRetiredPageRecordT>() - 8usize];
    ["Offset of field: AmdsmiRetiredPageRecordT::page_address"]
        [::std::mem::offset_of!(AmdsmiRetiredPageRecordT, page_address) - 0usize];
    ["Offset of field: AmdsmiRetiredPageRecordT::page_size"]
        [::std::mem::offset_of!(AmdsmiRetiredPageRecordT, page_size) - 8usize];
    ["Offset of field: AmdsmiRetiredPageRecordT::status"]
        [::std::mem::offset_of!(AmdsmiRetiredPageRecordT, status) - 16usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiPowerProfileStatusT {
    pub available_profiles: AmdsmiBitFieldT,
    pub current: AmdsmiPowerProfilePresetMasksT,
    pub num_profiles: u32,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiPowerProfileStatusT"]
        [::std::mem::size_of::<AmdsmiPowerProfileStatusT>() - 24usize];
    ["Alignment of AmdsmiPowerProfileStatusT"]
        [::std::mem::align_of::<AmdsmiPowerProfileStatusT>() - 8usize];
    ["Offset of field: AmdsmiPowerProfileStatusT::available_profiles"]
        [::std::mem::offset_of!(AmdsmiPowerProfileStatusT, available_profiles) - 0usize];
    ["Offset of field: AmdsmiPowerProfileStatusT::current"]
        [::std::mem::offset_of!(AmdsmiPowerProfileStatusT, current) - 8usize];
    ["Offset of field: AmdsmiPowerProfileStatusT::num_profiles"]
        [::std::mem::offset_of!(AmdsmiPowerProfileStatusT, num_profiles) - 16usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiFrequenciesT {
    pub has_deep_sleep: bool,
    pub num_supported: u32,
    pub current: u32,
    pub frequency: [u64; 33usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiFrequenciesT"][::std::mem::size_of::<AmdsmiFrequenciesT>() - 280usize];
    ["Alignment of AmdsmiFrequenciesT"][::std::mem::align_of::<AmdsmiFrequenciesT>() - 8usize];
    ["Offset of field: AmdsmiFrequenciesT::has_deep_sleep"]
        [::std::mem::offset_of!(AmdsmiFrequenciesT, has_deep_sleep) - 0usize];
    ["Offset of field: AmdsmiFrequenciesT::num_supported"]
        [::std::mem::offset_of!(AmdsmiFrequenciesT, num_supported) - 4usize];
    ["Offset of field: AmdsmiFrequenciesT::current"]
        [::std::mem::offset_of!(AmdsmiFrequenciesT, current) - 8usize];
    ["Offset of field: AmdsmiFrequenciesT::frequency"]
        [::std::mem::offset_of!(AmdsmiFrequenciesT, frequency) - 16usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiDpmPolicyEntryT {
    pub policy_id: u32,
    pub policy_description: [::std::os::raw::c_char; 256usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiDpmPolicyEntryT"][::std::mem::size_of::<AmdsmiDpmPolicyEntryT>() - 260usize];
    ["Alignment of AmdsmiDpmPolicyEntryT"]
        [::std::mem::align_of::<AmdsmiDpmPolicyEntryT>() - 4usize];
    ["Offset of field: AmdsmiDpmPolicyEntryT::policy_id"]
        [::std::mem::offset_of!(AmdsmiDpmPolicyEntryT, policy_id) - 0usize];
    ["Offset of field: AmdsmiDpmPolicyEntryT::policy_description"]
        [::std::mem::offset_of!(AmdsmiDpmPolicyEntryT, policy_description) - 4usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiDpmPolicyT {
    pub num_supported: u32,
    pub current: u32,
    pub policies: [AmdsmiDpmPolicyEntryT; 32usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiDpmPolicyT"][::std::mem::size_of::<AmdsmiDpmPolicyT>() - 8328usize];
    ["Alignment of AmdsmiDpmPolicyT"][::std::mem::align_of::<AmdsmiDpmPolicyT>() - 4usize];
    ["Offset of field: AmdsmiDpmPolicyT::num_supported"]
        [::std::mem::offset_of!(AmdsmiDpmPolicyT, num_supported) - 0usize];
    ["Offset of field: AmdsmiDpmPolicyT::current"]
        [::std::mem::offset_of!(AmdsmiDpmPolicyT, current) - 4usize];
    ["Offset of field: AmdsmiDpmPolicyT::policies"]
        [::std::mem::offset_of!(AmdsmiDpmPolicyT, policies) - 8usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiPcieBandwidthT {
    pub transfer_rate: AmdsmiFrequenciesT,
    pub lanes: [u32; 33usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiPcieBandwidthT"][::std::mem::size_of::<AmdsmiPcieBandwidthT>() - 416usize];
    ["Alignment of AmdsmiPcieBandwidthT"][::std::mem::align_of::<AmdsmiPcieBandwidthT>() - 8usize];
    ["Offset of field: AmdsmiPcieBandwidthT::transfer_rate"]
        [::std::mem::offset_of!(AmdsmiPcieBandwidthT, transfer_rate) - 0usize];
    ["Offset of field: AmdsmiPcieBandwidthT::lanes"]
        [::std::mem::offset_of!(AmdsmiPcieBandwidthT, lanes) - 280usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiVersionT {
    pub major: u32,
    pub minor: u32,
    pub release: u32,
    pub build: *const ::std::os::raw::c_char,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiVersionT"][::std::mem::size_of::<AmdsmiVersionT>() - 24usize];
    ["Alignment of AmdsmiVersionT"][::std::mem::align_of::<AmdsmiVersionT>() - 8usize];
    ["Offset of field: AmdsmiVersionT::major"]
        [::std::mem::offset_of!(AmdsmiVersionT, major) - 0usize];
    ["Offset of field: AmdsmiVersionT::minor"]
        [::std::mem::offset_of!(AmdsmiVersionT, minor) - 4usize];
    ["Offset of field: AmdsmiVersionT::release"]
        [::std::mem::offset_of!(AmdsmiVersionT, release) - 8usize];
    ["Offset of field: AmdsmiVersionT::build"]
        [::std::mem::offset_of!(AmdsmiVersionT, build) - 16usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiOdVddcPointT {
    pub frequency: u64,
    pub voltage: u64,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiOdVddcPointT"][::std::mem::size_of::<AmdsmiOdVddcPointT>() - 16usize];
    ["Alignment of AmdsmiOdVddcPointT"][::std::mem::align_of::<AmdsmiOdVddcPointT>() - 8usize];
    ["Offset of field: AmdsmiOdVddcPointT::frequency"]
        [::std::mem::offset_of!(AmdsmiOdVddcPointT, frequency) - 0usize];
    ["Offset of field: AmdsmiOdVddcPointT::voltage"]
        [::std::mem::offset_of!(AmdsmiOdVddcPointT, voltage) - 8usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiFreqVoltRegionT {
    pub freq_range: AmdsmiRangeT,
    pub volt_range: AmdsmiRangeT,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiFreqVoltRegionT"][::std::mem::size_of::<AmdsmiFreqVoltRegionT>() - 64usize];
    ["Alignment of AmdsmiFreqVoltRegionT"]
        [::std::mem::align_of::<AmdsmiFreqVoltRegionT>() - 8usize];
    ["Offset of field: AmdsmiFreqVoltRegionT::freq_range"]
        [::std::mem::offset_of!(AmdsmiFreqVoltRegionT, freq_range) - 0usize];
    ["Offset of field: AmdsmiFreqVoltRegionT::volt_range"]
        [::std::mem::offset_of!(AmdsmiFreqVoltRegionT, volt_range) - 32usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiOdVoltCurveT {
    pub vc_points: [AmdsmiOdVddcPointT; 3usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiOdVoltCurveT"][::std::mem::size_of::<AmdsmiOdVoltCurveT>() - 48usize];
    ["Alignment of AmdsmiOdVoltCurveT"][::std::mem::align_of::<AmdsmiOdVoltCurveT>() - 8usize];
    ["Offset of field: AmdsmiOdVoltCurveT::vc_points"]
        [::std::mem::offset_of!(AmdsmiOdVoltCurveT, vc_points) - 0usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiOdVoltFreqDataT {
    pub curr_sclk_range: AmdsmiRangeT,
    pub curr_mclk_range: AmdsmiRangeT,
    pub curr_fclk_range: AmdsmiRangeT,
    pub sclk_freq_limits: AmdsmiRangeT,
    pub mclk_freq_limits: AmdsmiRangeT,
    pub fclk_freq_limits: AmdsmiRangeT,
    pub curve: AmdsmiOdVoltCurveT,
    pub num_regions: u32,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiOdVoltFreqDataT"][::std::mem::size_of::<AmdsmiOdVoltFreqDataT>() - 248usize];
    ["Alignment of AmdsmiOdVoltFreqDataT"]
        [::std::mem::align_of::<AmdsmiOdVoltFreqDataT>() - 8usize];
    ["Offset of field: AmdsmiOdVoltFreqDataT::curr_sclk_range"]
        [::std::mem::offset_of!(AmdsmiOdVoltFreqDataT, curr_sclk_range) - 0usize];
    ["Offset of field: AmdsmiOdVoltFreqDataT::curr_mclk_range"]
        [::std::mem::offset_of!(AmdsmiOdVoltFreqDataT, curr_mclk_range) - 32usize];
    ["Offset of field: AmdsmiOdVoltFreqDataT::curr_fclk_range"]
        [::std::mem::offset_of!(AmdsmiOdVoltFreqDataT, curr_fclk_range) - 64usize];
    ["Offset of field: AmdsmiOdVoltFreqDataT::sclk_freq_limits"]
        [::std::mem::offset_of!(AmdsmiOdVoltFreqDataT, sclk_freq_limits) - 96usize];
    ["Offset of field: AmdsmiOdVoltFreqDataT::mclk_freq_limits"]
        [::std::mem::offset_of!(AmdsmiOdVoltFreqDataT, mclk_freq_limits) - 128usize];
    ["Offset of field: AmdsmiOdVoltFreqDataT::fclk_freq_limits"]
        [::std::mem::offset_of!(AmdsmiOdVoltFreqDataT, fclk_freq_limits) - 160usize];
    ["Offset of field: AmdsmiOdVoltFreqDataT::curve"]
        [::std::mem::offset_of!(AmdsmiOdVoltFreqDataT, curve) - 192usize];
    ["Offset of field: AmdsmiOdVoltFreqDataT::num_regions"]
        [::std::mem::offset_of!(AmdsmiOdVoltFreqDataT, num_regions) - 240usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdMetricsTableHeaderT {
    pub structure_size: u16,
    pub format_revision: u8,
    pub content_revision: u8,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdMetricsTableHeaderT"][::std::mem::size_of::<AmdMetricsTableHeaderT>() - 4usize];
    ["Alignment of AmdMetricsTableHeaderT"]
        [::std::mem::align_of::<AmdMetricsTableHeaderT>() - 2usize];
    ["Offset of field: AmdMetricsTableHeaderT::structure_size"]
        [::std::mem::offset_of!(AmdMetricsTableHeaderT, structure_size) - 0usize];
    ["Offset of field: AmdMetricsTableHeaderT::format_revision"]
        [::std::mem::offset_of!(AmdMetricsTableHeaderT, format_revision) - 2usize];
    ["Offset of field: AmdMetricsTableHeaderT::content_revision"]
        [::std::mem::offset_of!(AmdMetricsTableHeaderT, content_revision) - 3usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiGpuXcpMetricsT {
    pub gfx_busy_inst: [u32; 8usize],
    pub jpeg_busy: [u16; 40usize],
    pub vcn_busy: [u16; 4usize],
    pub gfx_busy_acc: [u64; 8usize],
    pub gfx_below_host_limit_acc: [u64; 8usize],
    pub gfx_below_host_limit_ppt_acc: [u64; 8usize],
    pub gfx_below_host_limit_thm_acc: [u64; 8usize],
    pub gfx_low_utilization_acc: [u64; 8usize],
    pub gfx_below_host_limit_total_acc: [u64; 8usize],
    pub temperature_xcd: [u16; 8usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiGpuXcpMetricsT"][::std::mem::size_of::<AmdsmiGpuXcpMetricsT>() - 520usize];
    ["Alignment of AmdsmiGpuXcpMetricsT"][::std::mem::align_of::<AmdsmiGpuXcpMetricsT>() - 8usize];
    ["Offset of field: AmdsmiGpuXcpMetricsT::gfx_busy_inst"]
        [::std::mem::offset_of!(AmdsmiGpuXcpMetricsT, gfx_busy_inst) - 0usize];
    ["Offset of field: AmdsmiGpuXcpMetricsT::jpeg_busy"]
        [::std::mem::offset_of!(AmdsmiGpuXcpMetricsT, jpeg_busy) - 32usize];
    ["Offset of field: AmdsmiGpuXcpMetricsT::vcn_busy"]
        [::std::mem::offset_of!(AmdsmiGpuXcpMetricsT, vcn_busy) - 112usize];
    ["Offset of field: AmdsmiGpuXcpMetricsT::gfx_busy_acc"]
        [::std::mem::offset_of!(AmdsmiGpuXcpMetricsT, gfx_busy_acc) - 120usize];
    ["Offset of field: AmdsmiGpuXcpMetricsT::gfx_below_host_limit_acc"]
        [::std::mem::offset_of!(AmdsmiGpuXcpMetricsT, gfx_below_host_limit_acc) - 184usize];
    ["Offset of field: AmdsmiGpuXcpMetricsT::gfx_below_host_limit_ppt_acc"]
        [::std::mem::offset_of!(AmdsmiGpuXcpMetricsT, gfx_below_host_limit_ppt_acc) - 248usize];
    ["Offset of field: AmdsmiGpuXcpMetricsT::gfx_below_host_limit_thm_acc"]
        [::std::mem::offset_of!(AmdsmiGpuXcpMetricsT, gfx_below_host_limit_thm_acc) - 312usize];
    ["Offset of field: AmdsmiGpuXcpMetricsT::gfx_low_utilization_acc"]
        [::std::mem::offset_of!(AmdsmiGpuXcpMetricsT, gfx_low_utilization_acc) - 376usize];
    ["Offset of field: AmdsmiGpuXcpMetricsT::gfx_below_host_limit_total_acc"]
        [::std::mem::offset_of!(AmdsmiGpuXcpMetricsT, gfx_below_host_limit_total_acc) - 440usize];
    ["Offset of field: AmdsmiGpuXcpMetricsT::temperature_xcd"]
        [::std::mem::offset_of!(AmdsmiGpuXcpMetricsT, temperature_xcd) - 504usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiApuMetricsT {
    pub temperature_gfx: u16,
    pub temperature_soc: u16,
    pub temperature_core: [u16; 16usize],
    pub temperature_l3: [u16; 2usize],
    pub temperature_skin: u16,
    pub average_gfx_activity: u16,
    pub average_mm_activity: u16,
    pub average_vcn_activity: u16,
    pub average_ipu_activity: [u16; 8usize],
    pub average_core_c0_activity: [u16; 16usize],
    pub average_dram_reads: u16,
    pub average_dram_writes: u16,
    pub average_ipu_reads: u16,
    pub average_ipu_writes: u16,
    pub average_socket_power: u32,
    pub average_cpu_power: u16,
    pub average_soc_power: u16,
    pub average_gfx_power: u32,
    pub average_core_power: [u16; 16usize],
    pub average_ipu_power: u16,
    pub average_apu_power: u32,
    pub average_dgpu_power: u32,
    pub average_all_core_power: u32,
    pub average_sys_power: u16,
    pub stapm_power_limit: u16,
    pub current_stapm_power_limit: u16,
    pub average_gfxclk_frequency: u16,
    pub average_socclk_frequency: u16,
    pub average_uclk_frequency: u16,
    pub average_fclk_frequency: u16,
    pub average_vclk_frequency: u16,
    pub average_dclk_frequency: u16,
    pub average_vpeclk_frequency: u16,
    pub average_ipuclk_frequency: u16,
    pub average_mpipu_frequency: u16,
    pub current_gfxclk: u16,
    pub current_socclk: u16,
    pub current_uclk: u16,
    pub current_fclk: u16,
    pub current_vclk: u16,
    pub current_dclk: u16,
    pub current_coreclk: [u16; 16usize],
    pub current_l3clk: [u16; 2usize],
    pub current_core_maxfreq: u16,
    pub current_gfx_maxfreq: u16,
    pub throttle_status: u32,
    pub indep_throttle_status: u64,
    pub throttle_residency_prochot: u32,
    pub throttle_residency_spl: u32,
    pub throttle_residency_fppt: u32,
    pub throttle_residency_sppt: u32,
    pub throttle_residency_thm_core: u32,
    pub throttle_residency_thm_gfx: u32,
    pub throttle_residency_thm_soc: u32,
    pub fan_pwm: u16,
    pub average_temperature_gfx: u16,
    pub average_temperature_soc: u16,
    pub average_temperature_core: [u16; 16usize],
    pub average_temperature_l3: [u16; 2usize],
    pub average_cpu_voltage: u16,
    pub average_soc_voltage: u16,
    pub average_gfx_voltage: u16,
    pub average_cpu_current: u16,
    pub average_soc_current: u16,
    pub average_gfx_current: u16,
    pub time_filter_alphavalue: u32,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiApuMetricsT"][::std::mem::size_of::<AmdsmiApuMetricsT>() - 344usize];
    ["Alignment of AmdsmiApuMetricsT"][::std::mem::align_of::<AmdsmiApuMetricsT>() - 8usize];
    ["Offset of field: AmdsmiApuMetricsT::temperature_gfx"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, temperature_gfx) - 0usize];
    ["Offset of field: AmdsmiApuMetricsT::temperature_soc"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, temperature_soc) - 2usize];
    ["Offset of field: AmdsmiApuMetricsT::temperature_core"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, temperature_core) - 4usize];
    ["Offset of field: AmdsmiApuMetricsT::temperature_l3"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, temperature_l3) - 36usize];
    ["Offset of field: AmdsmiApuMetricsT::temperature_skin"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, temperature_skin) - 40usize];
    ["Offset of field: AmdsmiApuMetricsT::average_gfx_activity"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, average_gfx_activity) - 42usize];
    ["Offset of field: AmdsmiApuMetricsT::average_mm_activity"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, average_mm_activity) - 44usize];
    ["Offset of field: AmdsmiApuMetricsT::average_vcn_activity"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, average_vcn_activity) - 46usize];
    ["Offset of field: AmdsmiApuMetricsT::average_ipu_activity"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, average_ipu_activity) - 48usize];
    ["Offset of field: AmdsmiApuMetricsT::average_core_c0_activity"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, average_core_c0_activity) - 64usize];
    ["Offset of field: AmdsmiApuMetricsT::average_dram_reads"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, average_dram_reads) - 96usize];
    ["Offset of field: AmdsmiApuMetricsT::average_dram_writes"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, average_dram_writes) - 98usize];
    ["Offset of field: AmdsmiApuMetricsT::average_ipu_reads"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, average_ipu_reads) - 100usize];
    ["Offset of field: AmdsmiApuMetricsT::average_ipu_writes"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, average_ipu_writes) - 102usize];
    ["Offset of field: AmdsmiApuMetricsT::average_socket_power"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, average_socket_power) - 104usize];
    ["Offset of field: AmdsmiApuMetricsT::average_cpu_power"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, average_cpu_power) - 108usize];
    ["Offset of field: AmdsmiApuMetricsT::average_soc_power"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, average_soc_power) - 110usize];
    ["Offset of field: AmdsmiApuMetricsT::average_gfx_power"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, average_gfx_power) - 112usize];
    ["Offset of field: AmdsmiApuMetricsT::average_core_power"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, average_core_power) - 116usize];
    ["Offset of field: AmdsmiApuMetricsT::average_ipu_power"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, average_ipu_power) - 148usize];
    ["Offset of field: AmdsmiApuMetricsT::average_apu_power"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, average_apu_power) - 152usize];
    ["Offset of field: AmdsmiApuMetricsT::average_dgpu_power"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, average_dgpu_power) - 156usize];
    ["Offset of field: AmdsmiApuMetricsT::average_all_core_power"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, average_all_core_power) - 160usize];
    ["Offset of field: AmdsmiApuMetricsT::average_sys_power"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, average_sys_power) - 164usize];
    ["Offset of field: AmdsmiApuMetricsT::stapm_power_limit"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, stapm_power_limit) - 166usize];
    ["Offset of field: AmdsmiApuMetricsT::current_stapm_power_limit"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, current_stapm_power_limit) - 168usize];
    ["Offset of field: AmdsmiApuMetricsT::average_gfxclk_frequency"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, average_gfxclk_frequency) - 170usize];
    ["Offset of field: AmdsmiApuMetricsT::average_socclk_frequency"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, average_socclk_frequency) - 172usize];
    ["Offset of field: AmdsmiApuMetricsT::average_uclk_frequency"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, average_uclk_frequency) - 174usize];
    ["Offset of field: AmdsmiApuMetricsT::average_fclk_frequency"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, average_fclk_frequency) - 176usize];
    ["Offset of field: AmdsmiApuMetricsT::average_vclk_frequency"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, average_vclk_frequency) - 178usize];
    ["Offset of field: AmdsmiApuMetricsT::average_dclk_frequency"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, average_dclk_frequency) - 180usize];
    ["Offset of field: AmdsmiApuMetricsT::average_vpeclk_frequency"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, average_vpeclk_frequency) - 182usize];
    ["Offset of field: AmdsmiApuMetricsT::average_ipuclk_frequency"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, average_ipuclk_frequency) - 184usize];
    ["Offset of field: AmdsmiApuMetricsT::average_mpipu_frequency"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, average_mpipu_frequency) - 186usize];
    ["Offset of field: AmdsmiApuMetricsT::current_gfxclk"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, current_gfxclk) - 188usize];
    ["Offset of field: AmdsmiApuMetricsT::current_socclk"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, current_socclk) - 190usize];
    ["Offset of field: AmdsmiApuMetricsT::current_uclk"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, current_uclk) - 192usize];
    ["Offset of field: AmdsmiApuMetricsT::current_fclk"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, current_fclk) - 194usize];
    ["Offset of field: AmdsmiApuMetricsT::current_vclk"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, current_vclk) - 196usize];
    ["Offset of field: AmdsmiApuMetricsT::current_dclk"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, current_dclk) - 198usize];
    ["Offset of field: AmdsmiApuMetricsT::current_coreclk"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, current_coreclk) - 200usize];
    ["Offset of field: AmdsmiApuMetricsT::current_l3clk"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, current_l3clk) - 232usize];
    ["Offset of field: AmdsmiApuMetricsT::current_core_maxfreq"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, current_core_maxfreq) - 236usize];
    ["Offset of field: AmdsmiApuMetricsT::current_gfx_maxfreq"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, current_gfx_maxfreq) - 238usize];
    ["Offset of field: AmdsmiApuMetricsT::throttle_status"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, throttle_status) - 240usize];
    ["Offset of field: AmdsmiApuMetricsT::indep_throttle_status"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, indep_throttle_status) - 248usize];
    ["Offset of field: AmdsmiApuMetricsT::throttle_residency_prochot"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, throttle_residency_prochot) - 256usize];
    ["Offset of field: AmdsmiApuMetricsT::throttle_residency_spl"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, throttle_residency_spl) - 260usize];
    ["Offset of field: AmdsmiApuMetricsT::throttle_residency_fppt"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, throttle_residency_fppt) - 264usize];
    ["Offset of field: AmdsmiApuMetricsT::throttle_residency_sppt"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, throttle_residency_sppt) - 268usize];
    ["Offset of field: AmdsmiApuMetricsT::throttle_residency_thm_core"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, throttle_residency_thm_core) - 272usize];
    ["Offset of field: AmdsmiApuMetricsT::throttle_residency_thm_gfx"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, throttle_residency_thm_gfx) - 276usize];
    ["Offset of field: AmdsmiApuMetricsT::throttle_residency_thm_soc"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, throttle_residency_thm_soc) - 280usize];
    ["Offset of field: AmdsmiApuMetricsT::fan_pwm"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, fan_pwm) - 284usize];
    ["Offset of field: AmdsmiApuMetricsT::average_temperature_gfx"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, average_temperature_gfx) - 286usize];
    ["Offset of field: AmdsmiApuMetricsT::average_temperature_soc"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, average_temperature_soc) - 288usize];
    ["Offset of field: AmdsmiApuMetricsT::average_temperature_core"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, average_temperature_core) - 290usize];
    ["Offset of field: AmdsmiApuMetricsT::average_temperature_l3"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, average_temperature_l3) - 322usize];
    ["Offset of field: AmdsmiApuMetricsT::average_cpu_voltage"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, average_cpu_voltage) - 326usize];
    ["Offset of field: AmdsmiApuMetricsT::average_soc_voltage"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, average_soc_voltage) - 328usize];
    ["Offset of field: AmdsmiApuMetricsT::average_gfx_voltage"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, average_gfx_voltage) - 330usize];
    ["Offset of field: AmdsmiApuMetricsT::average_cpu_current"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, average_cpu_current) - 332usize];
    ["Offset of field: AmdsmiApuMetricsT::average_soc_current"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, average_soc_current) - 334usize];
    ["Offset of field: AmdsmiApuMetricsT::average_gfx_current"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, average_gfx_current) - 336usize];
    ["Offset of field: AmdsmiApuMetricsT::time_filter_alphavalue"]
        [::std::mem::offset_of!(AmdsmiApuMetricsT, time_filter_alphavalue) - 340usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiGpuMetricsT {
    pub common_header: AmdMetricsTableHeaderT,
    pub temperature_edge: u16,
    pub temperature_hotspot: u16,
    pub temperature_mem: u16,
    pub temperature_vrgfx: u16,
    pub temperature_vrsoc: u16,
    pub temperature_vrmem: u16,
    pub average_gfx_activity: u16,
    pub average_umc_activity: u16,
    pub average_mm_activity: u16,
    pub average_socket_power: u16,
    pub energy_accumulator: u64,
    pub system_clock_counter: u64,
    pub average_gfxclk_frequency: u16,
    pub average_socclk_frequency: u16,
    pub average_uclk_frequency: u16,
    pub average_vclk0_frequency: u16,
    pub average_dclk0_frequency: u16,
    pub average_vclk1_frequency: u16,
    pub average_dclk1_frequency: u16,
    pub current_gfxclk: u16,
    pub current_socclk: u16,
    pub current_uclk: u16,
    pub current_vclk0: u16,
    pub current_dclk0: u16,
    pub current_vclk1: u16,
    pub current_dclk1: u16,
    pub throttle_status: u32,
    pub current_fan_speed: u16,
    pub pcie_link_width: u16,
    pub pcie_link_speed: u16,
    pub gfx_activity_acc: u32,
    pub mem_activity_acc: u32,
    pub temperature_hbm: [u16; 4usize],
    pub firmware_timestamp: u64,
    pub voltage_soc: u16,
    pub voltage_gfx: u16,
    pub voltage_mem: u16,
    pub indep_throttle_status: u64,
    pub current_socket_power: u16,
    pub vcn_activity: [u16; 4usize],
    pub gfxclk_lock_status: u32,
    pub xgmi_link_width: u16,
    pub xgmi_link_speed: u16,
    pub pcie_bandwidth_acc: u64,
    pub pcie_bandwidth_inst: u64,
    pub pcie_l0_to_recov_count_acc: u64,
    pub pcie_replay_count_acc: u64,
    pub pcie_replay_rover_count_acc: u64,
    pub xgmi_read_data_acc: [u64; 8usize],
    pub xgmi_write_data_acc: [u64; 8usize],
    pub current_gfxclks: [u16; 8usize],
    pub current_socclks: [u16; 4usize],
    pub current_vclk0s: [u16; 4usize],
    pub current_dclk0s: [u16; 4usize],
    pub jpeg_activity: [u16; 32usize],
    pub pcie_nak_sent_count_acc: u32,
    pub pcie_nak_rcvd_count_acc: u32,
    pub accumulation_counter: u64,
    pub prochot_residency_acc: u64,
    pub ppt_residency_acc: u64,
    pub socket_thm_residency_acc: u64,
    pub vr_thm_residency_acc: u64,
    pub hbm_thm_residency_acc: u64,
    pub num_partition: u16,
    pub xcp_stats: [AmdsmiGpuXcpMetricsT; 8usize],
    pub pcie_lc_perf_other_end_recovery: u32,
    pub vram_max_bandwidth: u64,
    pub xgmi_link_status: [u16; 8usize],
    pub temperature_hbm_stacks: [u16; 12usize],
    pub temperature_mid: [u16; 2usize],
    pub temperature_aid: [u16; 2usize],
    pub current_uclk_aid: [u16; 2usize],
    pub current_socclks_mid: [u16; 2usize],
    pub apu_metrics: *mut AmdsmiApuMetricsT,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiGpuMetricsT"][::std::mem::size_of::<AmdsmiGpuMetricsT>() - 4720usize];
    ["Alignment of AmdsmiGpuMetricsT"][::std::mem::align_of::<AmdsmiGpuMetricsT>() - 8usize];
    ["Offset of field: AmdsmiGpuMetricsT::common_header"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, common_header) - 0usize];
    ["Offset of field: AmdsmiGpuMetricsT::temperature_edge"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, temperature_edge) - 4usize];
    ["Offset of field: AmdsmiGpuMetricsT::temperature_hotspot"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, temperature_hotspot) - 6usize];
    ["Offset of field: AmdsmiGpuMetricsT::temperature_mem"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, temperature_mem) - 8usize];
    ["Offset of field: AmdsmiGpuMetricsT::temperature_vrgfx"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, temperature_vrgfx) - 10usize];
    ["Offset of field: AmdsmiGpuMetricsT::temperature_vrsoc"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, temperature_vrsoc) - 12usize];
    ["Offset of field: AmdsmiGpuMetricsT::temperature_vrmem"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, temperature_vrmem) - 14usize];
    ["Offset of field: AmdsmiGpuMetricsT::average_gfx_activity"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, average_gfx_activity) - 16usize];
    ["Offset of field: AmdsmiGpuMetricsT::average_umc_activity"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, average_umc_activity) - 18usize];
    ["Offset of field: AmdsmiGpuMetricsT::average_mm_activity"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, average_mm_activity) - 20usize];
    ["Offset of field: AmdsmiGpuMetricsT::average_socket_power"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, average_socket_power) - 22usize];
    ["Offset of field: AmdsmiGpuMetricsT::energy_accumulator"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, energy_accumulator) - 24usize];
    ["Offset of field: AmdsmiGpuMetricsT::system_clock_counter"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, system_clock_counter) - 32usize];
    ["Offset of field: AmdsmiGpuMetricsT::average_gfxclk_frequency"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, average_gfxclk_frequency) - 40usize];
    ["Offset of field: AmdsmiGpuMetricsT::average_socclk_frequency"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, average_socclk_frequency) - 42usize];
    ["Offset of field: AmdsmiGpuMetricsT::average_uclk_frequency"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, average_uclk_frequency) - 44usize];
    ["Offset of field: AmdsmiGpuMetricsT::average_vclk0_frequency"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, average_vclk0_frequency) - 46usize];
    ["Offset of field: AmdsmiGpuMetricsT::average_dclk0_frequency"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, average_dclk0_frequency) - 48usize];
    ["Offset of field: AmdsmiGpuMetricsT::average_vclk1_frequency"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, average_vclk1_frequency) - 50usize];
    ["Offset of field: AmdsmiGpuMetricsT::average_dclk1_frequency"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, average_dclk1_frequency) - 52usize];
    ["Offset of field: AmdsmiGpuMetricsT::current_gfxclk"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, current_gfxclk) - 54usize];
    ["Offset of field: AmdsmiGpuMetricsT::current_socclk"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, current_socclk) - 56usize];
    ["Offset of field: AmdsmiGpuMetricsT::current_uclk"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, current_uclk) - 58usize];
    ["Offset of field: AmdsmiGpuMetricsT::current_vclk0"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, current_vclk0) - 60usize];
    ["Offset of field: AmdsmiGpuMetricsT::current_dclk0"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, current_dclk0) - 62usize];
    ["Offset of field: AmdsmiGpuMetricsT::current_vclk1"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, current_vclk1) - 64usize];
    ["Offset of field: AmdsmiGpuMetricsT::current_dclk1"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, current_dclk1) - 66usize];
    ["Offset of field: AmdsmiGpuMetricsT::throttle_status"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, throttle_status) - 68usize];
    ["Offset of field: AmdsmiGpuMetricsT::current_fan_speed"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, current_fan_speed) - 72usize];
    ["Offset of field: AmdsmiGpuMetricsT::pcie_link_width"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, pcie_link_width) - 74usize];
    ["Offset of field: AmdsmiGpuMetricsT::pcie_link_speed"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, pcie_link_speed) - 76usize];
    ["Offset of field: AmdsmiGpuMetricsT::gfx_activity_acc"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, gfx_activity_acc) - 80usize];
    ["Offset of field: AmdsmiGpuMetricsT::mem_activity_acc"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, mem_activity_acc) - 84usize];
    ["Offset of field: AmdsmiGpuMetricsT::temperature_hbm"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, temperature_hbm) - 88usize];
    ["Offset of field: AmdsmiGpuMetricsT::firmware_timestamp"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, firmware_timestamp) - 96usize];
    ["Offset of field: AmdsmiGpuMetricsT::voltage_soc"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, voltage_soc) - 104usize];
    ["Offset of field: AmdsmiGpuMetricsT::voltage_gfx"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, voltage_gfx) - 106usize];
    ["Offset of field: AmdsmiGpuMetricsT::voltage_mem"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, voltage_mem) - 108usize];
    ["Offset of field: AmdsmiGpuMetricsT::indep_throttle_status"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, indep_throttle_status) - 112usize];
    ["Offset of field: AmdsmiGpuMetricsT::current_socket_power"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, current_socket_power) - 120usize];
    ["Offset of field: AmdsmiGpuMetricsT::vcn_activity"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, vcn_activity) - 122usize];
    ["Offset of field: AmdsmiGpuMetricsT::gfxclk_lock_status"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, gfxclk_lock_status) - 132usize];
    ["Offset of field: AmdsmiGpuMetricsT::xgmi_link_width"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, xgmi_link_width) - 136usize];
    ["Offset of field: AmdsmiGpuMetricsT::xgmi_link_speed"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, xgmi_link_speed) - 138usize];
    ["Offset of field: AmdsmiGpuMetricsT::pcie_bandwidth_acc"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, pcie_bandwidth_acc) - 144usize];
    ["Offset of field: AmdsmiGpuMetricsT::pcie_bandwidth_inst"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, pcie_bandwidth_inst) - 152usize];
    ["Offset of field: AmdsmiGpuMetricsT::pcie_l0_to_recov_count_acc"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, pcie_l0_to_recov_count_acc) - 160usize];
    ["Offset of field: AmdsmiGpuMetricsT::pcie_replay_count_acc"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, pcie_replay_count_acc) - 168usize];
    ["Offset of field: AmdsmiGpuMetricsT::pcie_replay_rover_count_acc"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, pcie_replay_rover_count_acc) - 176usize];
    ["Offset of field: AmdsmiGpuMetricsT::xgmi_read_data_acc"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, xgmi_read_data_acc) - 184usize];
    ["Offset of field: AmdsmiGpuMetricsT::xgmi_write_data_acc"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, xgmi_write_data_acc) - 248usize];
    ["Offset of field: AmdsmiGpuMetricsT::current_gfxclks"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, current_gfxclks) - 312usize];
    ["Offset of field: AmdsmiGpuMetricsT::current_socclks"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, current_socclks) - 328usize];
    ["Offset of field: AmdsmiGpuMetricsT::current_vclk0s"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, current_vclk0s) - 336usize];
    ["Offset of field: AmdsmiGpuMetricsT::current_dclk0s"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, current_dclk0s) - 344usize];
    ["Offset of field: AmdsmiGpuMetricsT::jpeg_activity"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, jpeg_activity) - 352usize];
    ["Offset of field: AmdsmiGpuMetricsT::pcie_nak_sent_count_acc"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, pcie_nak_sent_count_acc) - 416usize];
    ["Offset of field: AmdsmiGpuMetricsT::pcie_nak_rcvd_count_acc"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, pcie_nak_rcvd_count_acc) - 420usize];
    ["Offset of field: AmdsmiGpuMetricsT::accumulation_counter"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, accumulation_counter) - 424usize];
    ["Offset of field: AmdsmiGpuMetricsT::prochot_residency_acc"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, prochot_residency_acc) - 432usize];
    ["Offset of field: AmdsmiGpuMetricsT::ppt_residency_acc"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, ppt_residency_acc) - 440usize];
    ["Offset of field: AmdsmiGpuMetricsT::socket_thm_residency_acc"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, socket_thm_residency_acc) - 448usize];
    ["Offset of field: AmdsmiGpuMetricsT::vr_thm_residency_acc"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, vr_thm_residency_acc) - 456usize];
    ["Offset of field: AmdsmiGpuMetricsT::hbm_thm_residency_acc"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, hbm_thm_residency_acc) - 464usize];
    ["Offset of field: AmdsmiGpuMetricsT::num_partition"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, num_partition) - 472usize];
    ["Offset of field: AmdsmiGpuMetricsT::xcp_stats"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, xcp_stats) - 480usize];
    ["Offset of field: AmdsmiGpuMetricsT::pcie_lc_perf_other_end_recovery"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, pcie_lc_perf_other_end_recovery) - 4640usize];
    ["Offset of field: AmdsmiGpuMetricsT::vram_max_bandwidth"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, vram_max_bandwidth) - 4648usize];
    ["Offset of field: AmdsmiGpuMetricsT::xgmi_link_status"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, xgmi_link_status) - 4656usize];
    ["Offset of field: AmdsmiGpuMetricsT::temperature_hbm_stacks"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, temperature_hbm_stacks) - 4672usize];
    ["Offset of field: AmdsmiGpuMetricsT::temperature_mid"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, temperature_mid) - 4696usize];
    ["Offset of field: AmdsmiGpuMetricsT::temperature_aid"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, temperature_aid) - 4700usize];
    ["Offset of field: AmdsmiGpuMetricsT::current_uclk_aid"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, current_uclk_aid) - 4704usize];
    ["Offset of field: AmdsmiGpuMetricsT::current_socclks_mid"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, current_socclks_mid) - 4708usize];
    ["Offset of field: AmdsmiGpuMetricsT::apu_metrics"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, apu_metrics) - 4712usize];
};
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiXgmiLinkStatusTypeT {
    AmdsmiXgmiLinkDown = 0,
    AmdsmiXgmiLinkUp = 1,
    AmdsmiXgmiLinkDisable = 2,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiXgmiLinkStatusT {
    pub total_links: u32,
    pub status: [AmdsmiXgmiLinkStatusTypeT; 8usize],
    pub reserved: [u64; 7usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiXgmiLinkStatusT"][::std::mem::size_of::<AmdsmiXgmiLinkStatusT>() - 96usize];
    ["Alignment of AmdsmiXgmiLinkStatusT"]
        [::std::mem::align_of::<AmdsmiXgmiLinkStatusT>() - 8usize];
    ["Offset of field: AmdsmiXgmiLinkStatusT::total_links"]
        [::std::mem::offset_of!(AmdsmiXgmiLinkStatusT, total_links) - 0usize];
    ["Offset of field: AmdsmiXgmiLinkStatusT::status"]
        [::std::mem::offset_of!(AmdsmiXgmiLinkStatusT, status) - 4usize];
    ["Offset of field: AmdsmiXgmiLinkStatusT::reserved"]
        [::std::mem::offset_of!(AmdsmiXgmiLinkStatusT, reserved) - 40usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiNameValueT {
    pub name: [::std::os::raw::c_char; 256usize],
    pub value: u64,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiNameValueT"][::std::mem::size_of::<AmdsmiNameValueT>() - 264usize];
    ["Alignment of AmdsmiNameValueT"][::std::mem::align_of::<AmdsmiNameValueT>() - 8usize];
    ["Offset of field: AmdsmiNameValueT::name"]
        [::std::mem::offset_of!(AmdsmiNameValueT, name) - 0usize];
    ["Offset of field: AmdsmiNameValueT::value"]
        [::std::mem::offset_of!(AmdsmiNameValueT, value) - 256usize];
};
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiRegTypeT {
    AmdsmiRegXgmi = 0,
    AmdsmiRegWafl = 1,
    AmdsmiRegPcie = 2,
    AmdsmiRegUsr = 3,
    AmdsmiRegUsr1 = 4,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiRasFeatureT {
    pub ras_eeprom_version: u32,
    pub ecc_correction_schema_flag: u32,
    pub ras_info: AmdsmiRasFeatureTRasInfo,
    pub needs_reboot: bool,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiRasFeatureTRasInfo {
    pub _bitfield_align_1: [u32; 0],
    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize]>,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiRasFeatureTRasInfo"]
        [::std::mem::size_of::<AmdsmiRasFeatureTRasInfo>() - 4usize];
    ["Alignment of AmdsmiRasFeatureTRasInfo"]
        [::std::mem::align_of::<AmdsmiRasFeatureTRasInfo>() - 4usize];
};
impl AmdsmiRasFeatureTRasInfo {
    #[inline]
    pub fn dram_ecc(&self) -> u32 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) }
    }
    #[inline]
    pub fn set_dram_ecc(&mut self, val: u32) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(0usize, 1u8, val as u64)
        }
    }
    #[inline]
    pub fn sram_ecc(&self) -> u32 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u32) }
    }
    #[inline]
    pub fn set_sram_ecc(&mut self, val: u32) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(1usize, 1u8, val as u64)
        }
    }
    #[inline]
    pub fn poisoning(&self) -> u32 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 1u8) as u32) }
    }
    #[inline]
    pub fn set_poisoning(&mut self, val: u32) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(2usize, 1u8, val as u64)
        }
    }
    #[inline]
    pub fn rsvd(&self) -> u32 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(3usize, 29u8) as u32) }
    }
    #[inline]
    pub fn set_rsvd(&mut self, val: u32) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(3usize, 29u8, val as u64)
        }
    }
    #[inline]
    pub fn new_bitfield_1(
        dram_ecc: u32,
        sram_ecc: u32,
        poisoning: u32,
        rsvd: u32,
    ) -> __BindgenBitfieldUnit<[u8; 4usize]> {
        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 4usize]> = Default::default();
        __bindgen_bitfield_unit.set(0usize, 1u8, {
            let dram_ecc: u32 = unsafe { ::std::mem::transmute(dram_ecc) };
            dram_ecc as u64
        });
        __bindgen_bitfield_unit.set(1usize, 1u8, {
            let sram_ecc: u32 = unsafe { ::std::mem::transmute(sram_ecc) };
            sram_ecc as u64
        });
        __bindgen_bitfield_unit.set(2usize, 1u8, {
            let poisoning: u32 = unsafe { ::std::mem::transmute(poisoning) };
            poisoning as u64
        });
        __bindgen_bitfield_unit.set(3usize, 29u8, {
            let rsvd: u32 = unsafe { ::std::mem::transmute(rsvd) };
            rsvd as u64
        });
        __bindgen_bitfield_unit
    }
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiRasFeatureT"][::std::mem::size_of::<AmdsmiRasFeatureT>() - 16usize];
    ["Alignment of AmdsmiRasFeatureT"][::std::mem::align_of::<AmdsmiRasFeatureT>() - 4usize];
    ["Offset of field: AmdsmiRasFeatureT::ras_eeprom_version"]
        [::std::mem::offset_of!(AmdsmiRasFeatureT, ras_eeprom_version) - 0usize];
    ["Offset of field: AmdsmiRasFeatureT::ecc_correction_schema_flag"]
        [::std::mem::offset_of!(AmdsmiRasFeatureT, ecc_correction_schema_flag) - 4usize];
    ["Offset of field: AmdsmiRasFeatureT::ras_info"]
        [::std::mem::offset_of!(AmdsmiRasFeatureT, ras_info) - 8usize];
    ["Offset of field: AmdsmiRasFeatureT::needs_reboot"]
        [::std::mem::offset_of!(AmdsmiRasFeatureT, needs_reboot) - 12usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiErrorCountT {
    pub correctable_count: u64,
    pub uncorrectable_count: u64,
    pub deferred_count: u64,
    pub reserved: [u64; 5usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiErrorCountT"][::std::mem::size_of::<AmdsmiErrorCountT>() - 64usize];
    ["Alignment of AmdsmiErrorCountT"][::std::mem::align_of::<AmdsmiErrorCountT>() - 8usize];
    ["Offset of field: AmdsmiErrorCountT::correctable_count"]
        [::std::mem::offset_of!(AmdsmiErrorCountT, correctable_count) - 0usize];
    ["Offset of field: AmdsmiErrorCountT::uncorrectable_count"]
        [::std::mem::offset_of!(AmdsmiErrorCountT, uncorrectable_count) - 8usize];
    ["Offset of field: AmdsmiErrorCountT::deferred_count"]
        [::std::mem::offset_of!(AmdsmiErrorCountT, deferred_count) - 16usize];
    ["Offset of field: AmdsmiErrorCountT::reserved"]
        [::std::mem::offset_of!(AmdsmiErrorCountT, reserved) - 24usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiProcessInfoT {
    pub process_id: u32,
    pub vram_usage: u64,
    pub sdma_usage: u64,
    pub cu_occupancy: u32,
    pub evicted_time: u32,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiProcessInfoT"][::std::mem::size_of::<AmdsmiProcessInfoT>() - 32usize];
    ["Alignment of AmdsmiProcessInfoT"][::std::mem::align_of::<AmdsmiProcessInfoT>() - 8usize];
    ["Offset of field: AmdsmiProcessInfoT::process_id"]
        [::std::mem::offset_of!(AmdsmiProcessInfoT, process_id) - 0usize];
    ["Offset of field: AmdsmiProcessInfoT::vram_usage"]
        [::std::mem::offset_of!(AmdsmiProcessInfoT, vram_usage) - 8usize];
    ["Offset of field: AmdsmiProcessInfoT::sdma_usage"]
        [::std::mem::offset_of!(AmdsmiProcessInfoT, sdma_usage) - 16usize];
    ["Offset of field: AmdsmiProcessInfoT::cu_occupancy"]
        [::std::mem::offset_of!(AmdsmiProcessInfoT, cu_occupancy) - 24usize];
    ["Offset of field: AmdsmiProcessInfoT::evicted_time"]
        [::std::mem::offset_of!(AmdsmiProcessInfoT, evicted_time) - 28usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiTopologyNearestT {
    pub count: u32,
    pub processor_list: [AmdsmiProcessorHandle; 256usize],
    pub reserved: [u64; 15usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiTopologyNearestT"][::std::mem::size_of::<AmdsmiTopologyNearestT>() - 2176usize];
    ["Alignment of AmdsmiTopologyNearestT"]
        [::std::mem::align_of::<AmdsmiTopologyNearestT>() - 8usize];
    ["Offset of field: AmdsmiTopologyNearestT::count"]
        [::std::mem::offset_of!(AmdsmiTopologyNearestT, count) - 0usize];
    ["Offset of field: AmdsmiTopologyNearestT::processor_list"]
        [::std::mem::offset_of!(AmdsmiTopologyNearestT, processor_list) - 8usize];
    ["Offset of field: AmdsmiTopologyNearestT::reserved"]
        [::std::mem::offset_of!(AmdsmiTopologyNearestT, reserved) - 2056usize];
};
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiVirtualizationModeT {
    AmdsmiVirtualizationModeUnknown = 0,
    AmdsmiVirtualizationModeBaremetal = 1,
    AmdsmiVirtualizationModeHost = 2,
    AmdsmiVirtualizationModeGuest = 3,
    AmdsmiVirtualizationModePassthrough = 4,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiAffinityScopeT {
    AmdsmiAffinityScopeNode = 0,
    AmdsmiAffinityScopeSocket = 1,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiNpmStatusT {
    AmdsmiNpmStatusDisabled = 0,
    AmdsmiNpmStatusEnabled = 1,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiNpmInfoT {
    pub status: AmdsmiNpmStatusT,
    pub limit: u64,
    pub ubb_power_threshold: u32,
    pub reserved: [u64; 5usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiNpmInfoT"][::std::mem::size_of::<AmdsmiNpmInfoT>() - 64usize];
    ["Alignment of AmdsmiNpmInfoT"][::std::mem::align_of::<AmdsmiNpmInfoT>() - 8usize];
    ["Offset of field: AmdsmiNpmInfoT::status"]
        [::std::mem::offset_of!(AmdsmiNpmInfoT, status) - 0usize];
    ["Offset of field: AmdsmiNpmInfoT::limit"]
        [::std::mem::offset_of!(AmdsmiNpmInfoT, limit) - 8usize];
    ["Offset of field: AmdsmiNpmInfoT::ubb_power_threshold"]
        [::std::mem::offset_of!(AmdsmiNpmInfoT, ubb_power_threshold) - 16usize];
    ["Offset of field: AmdsmiNpmInfoT::reserved"]
        [::std::mem::offset_of!(AmdsmiNpmInfoT, reserved) - 24usize];
};
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiPtlDataFormatT {
    AmdsmiPtlDataFormatI8 = 0,
    AmdsmiPtlDataFormatF16 = 1,
    AmdsmiPtlDataFormatBf16 = 2,
    AmdsmiPtlDataFormatF32 = 3,
    AmdsmiPtlDataFormatF64 = 4,
    AmdsmiPtlDataFormatF8 = 5,
    AmdsmiPtlDataFormatVector = 6,
    AmdsmiPtlDataFormatInvalid = 4294967295,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiSockInfoT {
    pub socket_id: u32,
    pub cores_per_socket: u32,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiSockInfoT"][::std::mem::size_of::<AmdsmiSockInfoT>() - 8usize];
    ["Alignment of AmdsmiSockInfoT"][::std::mem::align_of::<AmdsmiSockInfoT>() - 4usize];
    ["Offset of field: AmdsmiSockInfoT::socket_id"]
        [::std::mem::offset_of!(AmdsmiSockInfoT, socket_id) - 0usize];
    ["Offset of field: AmdsmiSockInfoT::cores_per_socket"]
        [::std::mem::offset_of!(AmdsmiSockInfoT, cores_per_socket) - 4usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiNicStatT {
    pub name: [::std::os::raw::c_char; 256usize],
    pub value: u64,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiNicStatT"][::std::mem::size_of::<AmdsmiNicStatT>() - 264usize];
    ["Alignment of AmdsmiNicStatT"][::std::mem::align_of::<AmdsmiNicStatT>() - 8usize];
    ["Offset of field: AmdsmiNicStatT::name"]
        [::std::mem::offset_of!(AmdsmiNicStatT, name) - 0usize];
    ["Offset of field: AmdsmiNicStatT::value"]
        [::std::mem::offset_of!(AmdsmiNicStatT, value) - 256usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiNicAsicInfoT {
    pub vendor_id: u16,
    pub subvendor_id: u16,
    pub device_id: u16,
    pub subsystem_id: u16,
    pub revision: u8,
    pub permanent_address: [::std::os::raw::c_char; 256usize],
    pub product_name: [::std::os::raw::c_char; 256usize],
    pub part_number: [::std::os::raw::c_char; 256usize],
    pub serial_number: [::std::os::raw::c_char; 256usize],
    pub vendor_name: [::std::os::raw::c_char; 256usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiNicAsicInfoT"][::std::mem::size_of::<AmdsmiNicAsicInfoT>() - 1290usize];
    ["Alignment of AmdsmiNicAsicInfoT"][::std::mem::align_of::<AmdsmiNicAsicInfoT>() - 2usize];
    ["Offset of field: AmdsmiNicAsicInfoT::vendor_id"]
        [::std::mem::offset_of!(AmdsmiNicAsicInfoT, vendor_id) - 0usize];
    ["Offset of field: AmdsmiNicAsicInfoT::subvendor_id"]
        [::std::mem::offset_of!(AmdsmiNicAsicInfoT, subvendor_id) - 2usize];
    ["Offset of field: AmdsmiNicAsicInfoT::device_id"]
        [::std::mem::offset_of!(AmdsmiNicAsicInfoT, device_id) - 4usize];
    ["Offset of field: AmdsmiNicAsicInfoT::subsystem_id"]
        [::std::mem::offset_of!(AmdsmiNicAsicInfoT, subsystem_id) - 6usize];
    ["Offset of field: AmdsmiNicAsicInfoT::revision"]
        [::std::mem::offset_of!(AmdsmiNicAsicInfoT, revision) - 8usize];
    ["Offset of field: AmdsmiNicAsicInfoT::permanent_address"]
        [::std::mem::offset_of!(AmdsmiNicAsicInfoT, permanent_address) - 9usize];
    ["Offset of field: AmdsmiNicAsicInfoT::product_name"]
        [::std::mem::offset_of!(AmdsmiNicAsicInfoT, product_name) - 265usize];
    ["Offset of field: AmdsmiNicAsicInfoT::part_number"]
        [::std::mem::offset_of!(AmdsmiNicAsicInfoT, part_number) - 521usize];
    ["Offset of field: AmdsmiNicAsicInfoT::serial_number"]
        [::std::mem::offset_of!(AmdsmiNicAsicInfoT, serial_number) - 777usize];
    ["Offset of field: AmdsmiNicAsicInfoT::vendor_name"]
        [::std::mem::offset_of!(AmdsmiNicAsicInfoT, vendor_name) - 1033usize];
};
#[repr(C)]
#[derive(Copy, Clone)]
pub struct AmdsmiNicBusInfoT {
    pub bdf: AmdsmiBdfT,
    pub max_pcie_width: u8,
    pub max_pcie_speed: u32,
    pub pcie_interface_version: [::std::os::raw::c_char; 256usize],
    pub slot_type: [::std::os::raw::c_char; 256usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiNicBusInfoT"][::std::mem::size_of::<AmdsmiNicBusInfoT>() - 528usize];
    ["Alignment of AmdsmiNicBusInfoT"][::std::mem::align_of::<AmdsmiNicBusInfoT>() - 8usize];
    ["Offset of field: AmdsmiNicBusInfoT::bdf"]
        [::std::mem::offset_of!(AmdsmiNicBusInfoT, bdf) - 0usize];
    ["Offset of field: AmdsmiNicBusInfoT::max_pcie_width"]
        [::std::mem::offset_of!(AmdsmiNicBusInfoT, max_pcie_width) - 8usize];
    ["Offset of field: AmdsmiNicBusInfoT::max_pcie_speed"]
        [::std::mem::offset_of!(AmdsmiNicBusInfoT, max_pcie_speed) - 12usize];
    ["Offset of field: AmdsmiNicBusInfoT::pcie_interface_version"]
        [::std::mem::offset_of!(AmdsmiNicBusInfoT, pcie_interface_version) - 16usize];
    ["Offset of field: AmdsmiNicBusInfoT::slot_type"]
        [::std::mem::offset_of!(AmdsmiNicBusInfoT, slot_type) - 272usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiNicNumaInfoT {
    pub node: u8,
    pub affinity: [::std::os::raw::c_char; 256usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiNicNumaInfoT"][::std::mem::size_of::<AmdsmiNicNumaInfoT>() - 257usize];
    ["Alignment of AmdsmiNicNumaInfoT"][::std::mem::align_of::<AmdsmiNicNumaInfoT>() - 1usize];
    ["Offset of field: AmdsmiNicNumaInfoT::node"]
        [::std::mem::offset_of!(AmdsmiNicNumaInfoT, node) - 0usize];
    ["Offset of field: AmdsmiNicNumaInfoT::affinity"]
        [::std::mem::offset_of!(AmdsmiNicNumaInfoT, affinity) - 1usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiNicFwT {
    pub name: [::std::os::raw::c_char; 256usize],
    pub version: [::std::os::raw::c_char; 256usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiNicFwT"][::std::mem::size_of::<AmdsmiNicFwT>() - 512usize];
    ["Alignment of AmdsmiNicFwT"][::std::mem::align_of::<AmdsmiNicFwT>() - 1usize];
    ["Offset of field: AmdsmiNicFwT::name"][::std::mem::offset_of!(AmdsmiNicFwT, name) - 0usize];
    ["Offset of field: AmdsmiNicFwT::version"]
        [::std::mem::offset_of!(AmdsmiNicFwT, version) - 256usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiNicFwInfoT {
    pub num_fw: u32,
    pub fw: [AmdsmiNicFwT; 16usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiNicFwInfoT"][::std::mem::size_of::<AmdsmiNicFwInfoT>() - 8196usize];
    ["Alignment of AmdsmiNicFwInfoT"][::std::mem::align_of::<AmdsmiNicFwInfoT>() - 4usize];
    ["Offset of field: AmdsmiNicFwInfoT::num_fw"]
        [::std::mem::offset_of!(AmdsmiNicFwInfoT, num_fw) - 0usize];
    ["Offset of field: AmdsmiNicFwInfoT::fw"]
        [::std::mem::offset_of!(AmdsmiNicFwInfoT, fw) - 4usize];
};
#[repr(C)]
#[derive(Copy, Clone)]
pub struct AmdsmiNicPortT {
    pub bdf: AmdsmiBdfT,
    pub port_num: u32,
    pub type_: [::std::os::raw::c_char; 256usize],
    pub flavour: [::std::os::raw::c_char; 256usize],
    pub netdev: [::std::os::raw::c_char; 256usize],
    pub ifindex: u8,
    pub mac_address: [::std::os::raw::c_char; 256usize],
    pub carrier: u8,
    pub mtu: u16,
    pub link_state: [::std::os::raw::c_char; 256usize],
    pub link_speed: u32,
    pub active_fec: u32,
    pub autoneg: [::std::os::raw::c_char; 256usize],
    pub pause_autoneg: [::std::os::raw::c_char; 256usize],
    pub pause_rx: [::std::os::raw::c_char; 256usize],
    pub pause_tx: [::std::os::raw::c_char; 256usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiNicPortT"][::std::mem::size_of::<AmdsmiNicPortT>() - 2328usize];
    ["Alignment of AmdsmiNicPortT"][::std::mem::align_of::<AmdsmiNicPortT>() - 8usize];
    ["Offset of field: AmdsmiNicPortT::bdf"][::std::mem::offset_of!(AmdsmiNicPortT, bdf) - 0usize];
    ["Offset of field: AmdsmiNicPortT::port_num"]
        [::std::mem::offset_of!(AmdsmiNicPortT, port_num) - 8usize];
    ["Offset of field: AmdsmiNicPortT::type_"]
        [::std::mem::offset_of!(AmdsmiNicPortT, type_) - 12usize];
    ["Offset of field: AmdsmiNicPortT::flavour"]
        [::std::mem::offset_of!(AmdsmiNicPortT, flavour) - 268usize];
    ["Offset of field: AmdsmiNicPortT::netdev"]
        [::std::mem::offset_of!(AmdsmiNicPortT, netdev) - 524usize];
    ["Offset of field: AmdsmiNicPortT::ifindex"]
        [::std::mem::offset_of!(AmdsmiNicPortT, ifindex) - 780usize];
    ["Offset of field: AmdsmiNicPortT::mac_address"]
        [::std::mem::offset_of!(AmdsmiNicPortT, mac_address) - 781usize];
    ["Offset of field: AmdsmiNicPortT::carrier"]
        [::std::mem::offset_of!(AmdsmiNicPortT, carrier) - 1037usize];
    ["Offset of field: AmdsmiNicPortT::mtu"]
        [::std::mem::offset_of!(AmdsmiNicPortT, mtu) - 1038usize];
    ["Offset of field: AmdsmiNicPortT::link_state"]
        [::std::mem::offset_of!(AmdsmiNicPortT, link_state) - 1040usize];
    ["Offset of field: AmdsmiNicPortT::link_speed"]
        [::std::mem::offset_of!(AmdsmiNicPortT, link_speed) - 1296usize];
    ["Offset of field: AmdsmiNicPortT::active_fec"]
        [::std::mem::offset_of!(AmdsmiNicPortT, active_fec) - 1300usize];
    ["Offset of field: AmdsmiNicPortT::autoneg"]
        [::std::mem::offset_of!(AmdsmiNicPortT, autoneg) - 1304usize];
    ["Offset of field: AmdsmiNicPortT::pause_autoneg"]
        [::std::mem::offset_of!(AmdsmiNicPortT, pause_autoneg) - 1560usize];
    ["Offset of field: AmdsmiNicPortT::pause_rx"]
        [::std::mem::offset_of!(AmdsmiNicPortT, pause_rx) - 1816usize];
    ["Offset of field: AmdsmiNicPortT::pause_tx"]
        [::std::mem::offset_of!(AmdsmiNicPortT, pause_tx) - 2072usize];
};
#[repr(C)]
#[derive(Copy, Clone)]
pub struct AmdsmiNicPortInfoT {
    pub num_ports: u32,
    pub ports: [AmdsmiNicPortT; 32usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiNicPortInfoT"][::std::mem::size_of::<AmdsmiNicPortInfoT>() - 74504usize];
    ["Alignment of AmdsmiNicPortInfoT"][::std::mem::align_of::<AmdsmiNicPortInfoT>() - 8usize];
    ["Offset of field: AmdsmiNicPortInfoT::num_ports"]
        [::std::mem::offset_of!(AmdsmiNicPortInfoT, num_ports) - 0usize];
    ["Offset of field: AmdsmiNicPortInfoT::ports"]
        [::std::mem::offset_of!(AmdsmiNicPortInfoT, ports) - 8usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiNicDriverInfoT {
    pub name: [::std::os::raw::c_char; 256usize],
    pub version: [::std::os::raw::c_char; 256usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiNicDriverInfoT"][::std::mem::size_of::<AmdsmiNicDriverInfoT>() - 512usize];
    ["Alignment of AmdsmiNicDriverInfoT"][::std::mem::align_of::<AmdsmiNicDriverInfoT>() - 1usize];
    ["Offset of field: AmdsmiNicDriverInfoT::name"]
        [::std::mem::offset_of!(AmdsmiNicDriverInfoT, name) - 0usize];
    ["Offset of field: AmdsmiNicDriverInfoT::version"]
        [::std::mem::offset_of!(AmdsmiNicDriverInfoT, version) - 256usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiNicRdmaPortInfoT {
    pub netdev: [::std::os::raw::c_char; 256usize],
    pub state: [::std::os::raw::c_char; 256usize],
    pub rdma_port: u8,
    pub max_mtu: u16,
    pub active_mtu: u16,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiNicRdmaPortInfoT"][::std::mem::size_of::<AmdsmiNicRdmaPortInfoT>() - 518usize];
    ["Alignment of AmdsmiNicRdmaPortInfoT"]
        [::std::mem::align_of::<AmdsmiNicRdmaPortInfoT>() - 2usize];
    ["Offset of field: AmdsmiNicRdmaPortInfoT::netdev"]
        [::std::mem::offset_of!(AmdsmiNicRdmaPortInfoT, netdev) - 0usize];
    ["Offset of field: AmdsmiNicRdmaPortInfoT::state"]
        [::std::mem::offset_of!(AmdsmiNicRdmaPortInfoT, state) - 256usize];
    ["Offset of field: AmdsmiNicRdmaPortInfoT::rdma_port"]
        [::std::mem::offset_of!(AmdsmiNicRdmaPortInfoT, rdma_port) - 512usize];
    ["Offset of field: AmdsmiNicRdmaPortInfoT::max_mtu"]
        [::std::mem::offset_of!(AmdsmiNicRdmaPortInfoT, max_mtu) - 514usize];
    ["Offset of field: AmdsmiNicRdmaPortInfoT::active_mtu"]
        [::std::mem::offset_of!(AmdsmiNicRdmaPortInfoT, active_mtu) - 516usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiNicRdmaDevInfoT {
    pub rdma_dev: [::std::os::raw::c_char; 256usize],
    pub node_guid: [::std::os::raw::c_char; 256usize],
    pub node_type: [::std::os::raw::c_char; 256usize],
    pub sys_image_guid: [::std::os::raw::c_char; 256usize],
    pub fw_ver: [::std::os::raw::c_char; 256usize],
    pub num_rdma_ports: u8,
    pub rdma_port_info: [AmdsmiNicRdmaPortInfoT; 32usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiNicRdmaDevInfoT"][::std::mem::size_of::<AmdsmiNicRdmaDevInfoT>() - 17858usize];
    ["Alignment of AmdsmiNicRdmaDevInfoT"]
        [::std::mem::align_of::<AmdsmiNicRdmaDevInfoT>() - 2usize];
    ["Offset of field: AmdsmiNicRdmaDevInfoT::rdma_dev"]
        [::std::mem::offset_of!(AmdsmiNicRdmaDevInfoT, rdma_dev) - 0usize];
    ["Offset of field: AmdsmiNicRdmaDevInfoT::node_guid"]
        [::std::mem::offset_of!(AmdsmiNicRdmaDevInfoT, node_guid) - 256usize];
    ["Offset of field: AmdsmiNicRdmaDevInfoT::node_type"]
        [::std::mem::offset_of!(AmdsmiNicRdmaDevInfoT, node_type) - 512usize];
    ["Offset of field: AmdsmiNicRdmaDevInfoT::sys_image_guid"]
        [::std::mem::offset_of!(AmdsmiNicRdmaDevInfoT, sys_image_guid) - 768usize];
    ["Offset of field: AmdsmiNicRdmaDevInfoT::fw_ver"]
        [::std::mem::offset_of!(AmdsmiNicRdmaDevInfoT, fw_ver) - 1024usize];
    ["Offset of field: AmdsmiNicRdmaDevInfoT::num_rdma_ports"]
        [::std::mem::offset_of!(AmdsmiNicRdmaDevInfoT, num_rdma_ports) - 1280usize];
    ["Offset of field: AmdsmiNicRdmaDevInfoT::rdma_port_info"]
        [::std::mem::offset_of!(AmdsmiNicRdmaDevInfoT, rdma_port_info) - 1282usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiNicRdmaDevicesInfoT {
    pub num_rdma_dev: u8,
    pub rdma_dev_info: [AmdsmiNicRdmaDevInfoT; 32usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiNicRdmaDevicesInfoT"]
        [::std::mem::size_of::<AmdsmiNicRdmaDevicesInfoT>() - 571458usize];
    ["Alignment of AmdsmiNicRdmaDevicesInfoT"]
        [::std::mem::align_of::<AmdsmiNicRdmaDevicesInfoT>() - 2usize];
    ["Offset of field: AmdsmiNicRdmaDevicesInfoT::num_rdma_dev"]
        [::std::mem::offset_of!(AmdsmiNicRdmaDevicesInfoT, num_rdma_dev) - 0usize];
    ["Offset of field: AmdsmiNicRdmaDevicesInfoT::rdma_dev_info"]
        [::std::mem::offset_of!(AmdsmiNicRdmaDevicesInfoT, rdma_dev_info) - 2usize];
};
extern "C" {
    pub fn amdsmi_init(init_flags: u64) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_shut_down() -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_socket_handles(
        socket_count: *mut u32,
        socket_handles: *mut AmdsmiSocketHandle,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_socket_info(
        socket_handle: AmdsmiSocketHandle,
        len: usize,
        name: *mut ::std::os::raw::c_char,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_processor_handles(
        socket_handle: AmdsmiSocketHandle,
        processor_count: *mut u32,
        processor_handles: *mut AmdsmiProcessorHandle,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_node_handle(
        processor_handle: AmdsmiProcessorHandle,
        node_handle: *mut AmdsmiNodeHandle,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_processor_type(
        processor_handle: AmdsmiProcessorHandle,
        processor_type: *mut AmdsmiProcessorTypeT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_processor_info(
        processor_handle: AmdsmiProcessorHandle,
        len: usize,
        name: *mut ::std::os::raw::c_char,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_processor_count_from_handles(
        processor_handles: *mut AmdsmiProcessorHandle,
        processor_count: *mut u32,
        nr_cpusockets: *mut u32,
        nr_cpucores: *mut u32,
        nr_gpus: *mut u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_processor_handles_by_type(
        socket_handle: AmdsmiSocketHandle,
        processor_type: AmdsmiProcessorTypeT,
        processor_handles: *mut AmdsmiProcessorHandle,
        processor_count: *mut u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_processor_handle_from_bdf(
        bdf: AmdsmiBdfT,
        processor_handle: *mut AmdsmiProcessorHandle,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_device_bdf(
        processor_handle: AmdsmiProcessorHandle,
        bdf: *mut AmdsmiBdfT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_device_uuid(
        processor_handle: AmdsmiProcessorHandle,
        uuid_length: *mut ::std::os::raw::c_uint,
        uuid: *mut ::std::os::raw::c_char,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_enumeration_info(
        processor_handle: AmdsmiProcessorHandle,
        info: *mut AmdsmiEnumerationInfoT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_cpu_affinity_with_scope(
        processor_handle: AmdsmiProcessorHandle,
        cpu_set_size: u32,
        cpu_set: *mut u64,
        scope: AmdsmiAffinityScopeT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_virtualization_mode(
        processor_handle: AmdsmiProcessorHandle,
        mode: *mut AmdsmiVirtualizationModeT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_nic_processor_handles(
        socket_handle: AmdsmiSocketHandle,
        processor_count: *mut u32,
        processor_handles: *mut AmdsmiProcessorHandle,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_nic_device_bdf(
        processor_handle: AmdsmiProcessorHandle,
        bdf: *mut AmdsmiBdfT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_id(
        processor_handle: AmdsmiProcessorHandle,
        id: *mut u16,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_revision(
        processor_handle: AmdsmiProcessorHandle,
        revision: *mut u16,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_vendor_name(
        processor_handle: AmdsmiProcessorHandle,
        name: *mut ::std::os::raw::c_char,
        len: usize,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_vram_vendor(
        processor_handle: AmdsmiProcessorHandle,
        brand: *mut ::std::os::raw::c_char,
        len: u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_subsystem_id(
        processor_handle: AmdsmiProcessorHandle,
        id: *mut u16,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_subsystem_name(
        processor_handle: AmdsmiProcessorHandle,
        name: *mut ::std::os::raw::c_char,
        len: usize,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_pci_bandwidth(
        processor_handle: AmdsmiProcessorHandle,
        bandwidth: *mut AmdsmiPcieBandwidthT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_bdf_id(
        processor_handle: AmdsmiProcessorHandle,
        bdfid: *mut u64,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_topo_numa_affinity(
        processor_handle: AmdsmiProcessorHandle,
        numa_node: *mut i32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_pci_throughput(
        processor_handle: AmdsmiProcessorHandle,
        sent: *mut u64,
        received: *mut u64,
        max_pkt_sz: *mut u64,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_pci_replay_counter(
        processor_handle: AmdsmiProcessorHandle,
        counter: *mut u64,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_set_gpu_pci_bandwidth(
        processor_handle: AmdsmiProcessorHandle,
        bw_bitmask: u64,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_energy_count(
        processor_handle: AmdsmiProcessorHandle,
        energy_accumulator: *mut u64,
        counter_resolution: *mut f32,
        timestamp: *mut u64,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_set_power_cap(
        processor_handle: AmdsmiProcessorHandle,
        sensor_ind: u32,
        cap: u64,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_set_gpu_power_profile(
        processor_handle: AmdsmiProcessorHandle,
        reserved: u32,
        profile: AmdsmiPowerProfilePresetMasksT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_supported_power_cap(
        processor_handle: AmdsmiProcessorHandle,
        sensor_count: *mut u32,
        sensor_inds: *mut u32,
        sensor_types: *mut AmdsmiPowerCapTypeT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_cpu_socket_power(
        processor_handle: AmdsmiProcessorHandle,
        ppower: *mut u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_cpu_socket_power_cap(
        processor_handle: AmdsmiProcessorHandle,
        pcap: *mut u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_cpu_socket_power_cap_max(
        processor_handle: AmdsmiProcessorHandle,
        pmax: *mut u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_cpu_pwr_svi_telemetry_all_rails(
        processor_handle: AmdsmiProcessorHandle,
        power: *mut u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_set_cpu_socket_power_cap(
        processor_handle: AmdsmiProcessorHandle,
        pcap: u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_set_cpu_pwr_efficiency_mode(
        processor_handle: AmdsmiProcessorHandle,
        power_efficiency_mode: u8,
        utilization: *mut u32,
        ppt_limit: *mut u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_cpu_pwr_efficiency_mode(
        processor_handle: AmdsmiProcessorHandle,
        power_efficiency_mode: *mut u32,
        utilization: *mut u32,
        ppt_limit: *mut u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_cpu_core_ccd_power(
        processor_handle: AmdsmiProcessorHandle,
        power: *mut u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_memory_total(
        processor_handle: AmdsmiProcessorHandle,
        mem_type: AmdsmiMemoryTypeT,
        total: *mut u64,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_memory_usage(
        processor_handle: AmdsmiProcessorHandle,
        mem_type: AmdsmiMemoryTypeT,
        used: *mut u64,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_bad_page_info(
        processor_handle: AmdsmiProcessorHandle,
        num_pages: *mut u32,
        info: *mut AmdsmiRetiredPageRecordT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_bad_page_threshold(
        processor_handle: AmdsmiProcessorHandle,
        threshold: *mut u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_gpu_validate_ras_eeprom(processor_handle: AmdsmiProcessorHandle)
        -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_ras_block_features_enabled(
        processor_handle: AmdsmiProcessorHandle,
        block: AmdsmiGpuBlockT,
        state: *mut AmdsmiRasErrStateT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_memory_reserved_pages(
        processor_handle: AmdsmiProcessorHandle,
        num_pages: *mut u32,
        records: *mut AmdsmiRetiredPageRecordT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_fan_rpms(
        processor_handle: AmdsmiProcessorHandle,
        sensor_ind: u32,
        speed: *mut i64,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_fan_speed(
        processor_handle: AmdsmiProcessorHandle,
        sensor_ind: u32,
        speed: *mut i64,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_fan_speed_max(
        processor_handle: AmdsmiProcessorHandle,
        sensor_ind: u32,
        max_speed: *mut u64,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_cache_info(
        processor_handle: AmdsmiProcessorHandle,
        info: *mut AmdsmiGpuCacheInfoT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_volt_metric(
        processor_handle: AmdsmiProcessorHandle,
        sensor_type: AmdsmiVoltageTypeT,
        metric: AmdsmiVoltageMetricT,
        voltage: *mut i64,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_reset_gpu_fan(
        processor_handle: AmdsmiProcessorHandle,
        sensor_ind: u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_set_gpu_fan_speed(
        processor_handle: AmdsmiProcessorHandle,
        sensor_ind: u32,
        speed: u64,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_busy_percent(
        processor_handle: AmdsmiProcessorHandle,
        gpu_busy_percent: *mut u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_utilization_count(
        processor_handle: AmdsmiProcessorHandle,
        utilization_counters: *mut AmdsmiUtilizationCounterT,
        count: u32,
        timestamp: *mut u64,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_perf_level(
        processor_handle: AmdsmiProcessorHandle,
        perf: *mut AmdsmiDevPerfLevelT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_set_gpu_perf_determinism_mode(
        processor_handle: AmdsmiProcessorHandle,
        clkvalue: u64,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_overdrive_level(
        processor_handle: AmdsmiProcessorHandle,
        od: *mut u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_mem_overdrive_level(
        processor_handle: AmdsmiProcessorHandle,
        od: *mut u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_clk_freq(
        processor_handle: AmdsmiProcessorHandle,
        clk_type: AmdsmiClkTypeT,
        f: *mut AmdsmiFrequenciesT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_reset_gpu(processor_handle: AmdsmiProcessorHandle) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_od_volt_info(
        processor_handle: AmdsmiProcessorHandle,
        odv: *mut AmdsmiOdVoltFreqDataT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_metrics_header_info(
        processor_handle: AmdsmiProcessorHandle,
        header_value: *mut AmdMetricsTableHeaderT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_metrics_info(
        processor_handle: AmdsmiProcessorHandle,
        pgpu_metrics: *mut AmdsmiGpuMetricsT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_partition_metrics_info(
        processor_handle: AmdsmiProcessorHandle,
        pgpu_metrics: *mut AmdsmiGpuMetricsT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_pm_metrics_info(
        processor_handle: AmdsmiProcessorHandle,
        pm_metrics: *mut *mut AmdsmiNameValueT,
        num_of_metrics: *mut u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_reg_table_info(
        processor_handle: AmdsmiProcessorHandle,
        reg_type: AmdsmiRegTypeT,
        reg_metrics: *mut *mut AmdsmiNameValueT,
        num_of_metrics: *mut u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_set_gpu_clk_range(
        processor_handle: AmdsmiProcessorHandle,
        minclkvalue: u64,
        maxclkvalue: u64,
        clkType: AmdsmiClkTypeT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_set_gpu_clk_limit(
        processor_handle: AmdsmiProcessorHandle,
        clk_type: AmdsmiClkTypeT,
        limit_type: AmdsmiClkLimitTypeT,
        clk_value: u64,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_set_gpu_od_clk_info(
        processor_handle: AmdsmiProcessorHandle,
        level: AmdsmiFreqIndT,
        clkvalue: u64,
        clkType: AmdsmiClkTypeT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_set_gpu_od_volt_info(
        processor_handle: AmdsmiProcessorHandle,
        vpoint: u32,
        clkvalue: u64,
        voltvalue: u64,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_od_volt_curve_regions(
        processor_handle: AmdsmiProcessorHandle,
        num_regions: *mut u32,
        buffer: *mut AmdsmiFreqVoltRegionT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_power_profile_presets(
        processor_handle: AmdsmiProcessorHandle,
        sensor_ind: u32,
        status: *mut AmdsmiPowerProfileStatusT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_set_gpu_perf_level(
        processor_handle: AmdsmiProcessorHandle,
        perf_lvl: AmdsmiDevPerfLevelT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_set_gpu_overdrive_level(
        processor_handle: AmdsmiProcessorHandle,
        od: u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_set_clk_freq(
        processor_handle: AmdsmiProcessorHandle,
        clk_type: AmdsmiClkTypeT,
        freq_bitmask: u64,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_soc_pstate(
        processor_handle: AmdsmiProcessorHandle,
        policy: *mut AmdsmiDpmPolicyT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_set_soc_pstate(
        processor_handle: AmdsmiProcessorHandle,
        policy_id: u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_xgmi_plpd(
        processor_handle: AmdsmiProcessorHandle,
        xgmi_plpd: *mut AmdsmiDpmPolicyT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_set_xgmi_plpd(
        processor_handle: AmdsmiProcessorHandle,
        policy_id: u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_process_isolation(
        processor_handle: AmdsmiProcessorHandle,
        pisolate: *mut u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_set_gpu_process_isolation(
        processor_handle: AmdsmiProcessorHandle,
        pisolate: u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_clean_gpu_local_data(processor_handle: AmdsmiProcessorHandle) -> AmdsmiStatusT;
}
impl AmdsmiFabricTelemetryCategoryT {
    pub const AmdsmiFabricTelemetryCategoryInvalid: AmdsmiFabricTelemetryCategoryT =
        AmdsmiFabricTelemetryCategoryT::AmdsmiFabricTelemetryCategoryUnknown;
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiFabricTelemetryCategoryT {
    AmdsmiFabricTelemetryCategoryUnknown = 4294967295,
    AmdsmiFabricTelemetryCategoryUaloe = 0,
    AmdsmiFabricTelemetryCategorySwitch = 1,
    AmdsmiFabricTelemetryCategoryCrypto = 2,
    AmdsmiFabricTelemetryCategoryPfc = 3,
    AmdsmiFabricTelemetryCategoryNetport = 4,
    AmdsmiFabricTelemetryCategoryDerivedUaloe = 5,
    AmdsmiFabricTelemetryCategoryDerivedNetport = 6,
    AmdsmiFabricTelemetryCategoryMax = 7,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiFabricTelemetryCategoryMaskT {
    AmdsmiFabricTelemetryCategoryMaskUaloe = 1,
    AmdsmiFabricTelemetryCategoryMaskSwitch = 2,
    AmdsmiFabricTelemetryCategoryMaskCrypto = 4,
    AmdsmiFabricTelemetryCategoryMaskPfc = 8,
    AmdsmiFabricTelemetryCategoryMaskNetport = 16,
    AmdsmiFabricTelemetryCategoryMaskDerivedUaloe = 32,
    AmdsmiFabricTelemetryCategoryMaskDerivedNetport = 64,
    AmdsmiFabricTelemetryCategoryMaskAllKnown = 127,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiFabricTelemetryItemT {
    pub id: u64,
    pub value: u64,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiFabricTelemetryItemT"]
        [::std::mem::size_of::<AmdsmiFabricTelemetryItemT>() - 16usize];
    ["Alignment of AmdsmiFabricTelemetryItemT"]
        [::std::mem::align_of::<AmdsmiFabricTelemetryItemT>() - 8usize];
    ["Offset of field: AmdsmiFabricTelemetryItemT::id"]
        [::std::mem::offset_of!(AmdsmiFabricTelemetryItemT, id) - 0usize];
    ["Offset of field: AmdsmiFabricTelemetryItemT::value"]
        [::std::mem::offset_of!(AmdsmiFabricTelemetryItemT, value) - 8usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiFabricLabelT {
    pub text: [::std::os::raw::c_char; 32usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiFabricLabelT"][::std::mem::size_of::<AmdsmiFabricLabelT>() - 32usize];
    ["Alignment of AmdsmiFabricLabelT"][::std::mem::align_of::<AmdsmiFabricLabelT>() - 1usize];
    ["Offset of field: AmdsmiFabricLabelT::text"]
        [::std::mem::offset_of!(AmdsmiFabricLabelT, text) - 0usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiFabricTelemetryInstanceT {
    pub name: AmdsmiFabricLabelT,
    pub logical_idx: ::std::os::raw::c_uint,
    pub item_count: ::std::os::raw::c_uint,
    pub items: *mut AmdsmiFabricTelemetryItemT,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiFabricTelemetryInstanceT"]
        [::std::mem::size_of::<AmdsmiFabricTelemetryInstanceT>() - 48usize];
    ["Alignment of AmdsmiFabricTelemetryInstanceT"]
        [::std::mem::align_of::<AmdsmiFabricTelemetryInstanceT>() - 8usize];
    ["Offset of field: AmdsmiFabricTelemetryInstanceT::name"]
        [::std::mem::offset_of!(AmdsmiFabricTelemetryInstanceT, name) - 0usize];
    ["Offset of field: AmdsmiFabricTelemetryInstanceT::logical_idx"]
        [::std::mem::offset_of!(AmdsmiFabricTelemetryInstanceT, logical_idx) - 32usize];
    ["Offset of field: AmdsmiFabricTelemetryInstanceT::item_count"]
        [::std::mem::offset_of!(AmdsmiFabricTelemetryInstanceT, item_count) - 36usize];
    ["Offset of field: AmdsmiFabricTelemetryInstanceT::items"]
        [::std::mem::offset_of!(AmdsmiFabricTelemetryInstanceT, items) - 40usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiFabricTelemetryDatasetT {
    pub category: AmdsmiFabricTelemetryCategoryT,
    pub generation_count: u64,
    pub timestamp: timespec,
    pub instance_count: ::std::os::raw::c_uint,
    pub instances: *mut AmdsmiFabricTelemetryInstanceT,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiFabricTelemetryDatasetT"]
        [::std::mem::size_of::<AmdsmiFabricTelemetryDatasetT>() - 48usize];
    ["Alignment of AmdsmiFabricTelemetryDatasetT"]
        [::std::mem::align_of::<AmdsmiFabricTelemetryDatasetT>() - 8usize];
    ["Offset of field: AmdsmiFabricTelemetryDatasetT::category"]
        [::std::mem::offset_of!(AmdsmiFabricTelemetryDatasetT, category) - 0usize];
    ["Offset of field: AmdsmiFabricTelemetryDatasetT::generation_count"]
        [::std::mem::offset_of!(AmdsmiFabricTelemetryDatasetT, generation_count) - 8usize];
    ["Offset of field: AmdsmiFabricTelemetryDatasetT::timestamp"]
        [::std::mem::offset_of!(AmdsmiFabricTelemetryDatasetT, timestamp) - 16usize];
    ["Offset of field: AmdsmiFabricTelemetryDatasetT::instance_count"]
        [::std::mem::offset_of!(AmdsmiFabricTelemetryDatasetT, instance_count) - 32usize];
    ["Offset of field: AmdsmiFabricTelemetryDatasetT::instances"]
        [::std::mem::offset_of!(AmdsmiFabricTelemetryDatasetT, instances) - 40usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiFabricTelemetryT {
    pub datasets: [*mut AmdsmiFabricTelemetryDatasetT; 7usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiFabricTelemetryT"][::std::mem::size_of::<AmdsmiFabricTelemetryT>() - 56usize];
    ["Alignment of AmdsmiFabricTelemetryT"]
        [::std::mem::align_of::<AmdsmiFabricTelemetryT>() - 8usize];
    ["Offset of field: AmdsmiFabricTelemetryT::datasets"]
        [::std::mem::offset_of!(AmdsmiFabricTelemetryT, datasets) - 0usize];
};
extern "C" {
    pub fn amdsmi_alloc_fabric_telemetry(
        processor_handle: AmdsmiProcessorHandle,
        category_mask: u32,
        telemetry: *mut *mut AmdsmiFabricTelemetryT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_fabric_telemetry_data(
        processor_handle: AmdsmiProcessorHandle,
        telemetry: *mut AmdsmiFabricTelemetryT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_fabric_telem_id_to_string(telem_id: u64) -> *const ::std::os::raw::c_char;
}
extern "C" {
    pub fn amdsmi_free_fabric_telemetry(
        processor_handle: AmdsmiProcessorHandle,
        telemetry: *mut AmdsmiFabricTelemetryT,
    ) -> AmdsmiStatusT;
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiFabricSizeConstantsT {
    AmdsmiFabricActiveAcceleratorsBitmapSize = 32,
    AmdsmiFabricMaxLocalGpus = 16,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiFabricTypeT {
    AmdsmiFabricTypeUaloe = 0,
    AmdsmiFabricTypeUallink = 1,
    AmdsmiFabricTypeUnknown = 2,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiFabricNpaAddressModeT {
    AmdsmiFabricNpaAddressModeSourceAliasing = 0,
    AmdsmiFabricNpaAddressModeSourceIdentification = 1,
    AmdsmiFabricNpaAddressModeUnknown = 2,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiFabricAcceleratorVpodStateT {
    AmdsmiFabricAcceleratorVpodStateUnconfigured = 0,
    AmdsmiFabricAcceleratorVpodStateConfigured = 1,
    AmdsmiFabricAcceleratorVpodStateReady = 2,
    AmdsmiFabricAcceleratorVpodStateActive = 3,
    AmdsmiFabricAcceleratorVpodStateError = 4,
    AmdsmiFabricAcceleratorVpodStateUnknown = 5,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiFabricInfoV1T {
    pub accelerator_id: u32,
    pub fabric_type: AmdsmiFabricTypeT,
    pub bandwidth: u32,
    pub latency: u32,
    pub ppod_id: [u8; 16usize],
    pub ppod_size: u32,
    pub vpod_id: u32,
    pub vpod_size: u32,
    pub vpod_active_accelerators: [u32; 32usize],
    pub local_accelerators: [u32; 16usize],
    pub addr_mode: AmdsmiFabricNpaAddressModeT,
    pub accel_state: AmdsmiFabricAcceleratorVpodStateT,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiFabricInfoV1T"][::std::mem::size_of::<AmdsmiFabricInfoV1T>() - 244usize];
    ["Alignment of AmdsmiFabricInfoV1T"][::std::mem::align_of::<AmdsmiFabricInfoV1T>() - 4usize];
    ["Offset of field: AmdsmiFabricInfoV1T::accelerator_id"]
        [::std::mem::offset_of!(AmdsmiFabricInfoV1T, accelerator_id) - 0usize];
    ["Offset of field: AmdsmiFabricInfoV1T::fabric_type"]
        [::std::mem::offset_of!(AmdsmiFabricInfoV1T, fabric_type) - 4usize];
    ["Offset of field: AmdsmiFabricInfoV1T::bandwidth"]
        [::std::mem::offset_of!(AmdsmiFabricInfoV1T, bandwidth) - 8usize];
    ["Offset of field: AmdsmiFabricInfoV1T::latency"]
        [::std::mem::offset_of!(AmdsmiFabricInfoV1T, latency) - 12usize];
    ["Offset of field: AmdsmiFabricInfoV1T::ppod_id"]
        [::std::mem::offset_of!(AmdsmiFabricInfoV1T, ppod_id) - 16usize];
    ["Offset of field: AmdsmiFabricInfoV1T::ppod_size"]
        [::std::mem::offset_of!(AmdsmiFabricInfoV1T, ppod_size) - 32usize];
    ["Offset of field: AmdsmiFabricInfoV1T::vpod_id"]
        [::std::mem::offset_of!(AmdsmiFabricInfoV1T, vpod_id) - 36usize];
    ["Offset of field: AmdsmiFabricInfoV1T::vpod_size"]
        [::std::mem::offset_of!(AmdsmiFabricInfoV1T, vpod_size) - 40usize];
    ["Offset of field: AmdsmiFabricInfoV1T::vpod_active_accelerators"]
        [::std::mem::offset_of!(AmdsmiFabricInfoV1T, vpod_active_accelerators) - 44usize];
    ["Offset of field: AmdsmiFabricInfoV1T::local_accelerators"]
        [::std::mem::offset_of!(AmdsmiFabricInfoV1T, local_accelerators) - 172usize];
    ["Offset of field: AmdsmiFabricInfoV1T::addr_mode"]
        [::std::mem::offset_of!(AmdsmiFabricInfoV1T, addr_mode) - 236usize];
    ["Offset of field: AmdsmiFabricInfoV1T::accel_state"]
        [::std::mem::offset_of!(AmdsmiFabricInfoV1T, accel_state) - 240usize];
};
#[repr(C)]
#[derive(Copy, Clone)]
pub struct AmdsmiFabricInfoVerT {
    pub version: u32,
    pub fabric_version: AmdsmiFabricInfoVerTFabricInfo,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union AmdsmiFabricInfoVerTFabricInfo {
    pub v1: AmdsmiFabricInfoV1T,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiFabricInfoVerTFabricInfo"]
        [::std::mem::size_of::<AmdsmiFabricInfoVerTFabricInfo>() - 244usize];
    ["Alignment of AmdsmiFabricInfoVerTFabricInfo"]
        [::std::mem::align_of::<AmdsmiFabricInfoVerTFabricInfo>() - 4usize];
    ["Offset of field: AmdsmiFabricInfoVerTFabricInfo::v1"]
        [::std::mem::offset_of!(AmdsmiFabricInfoVerTFabricInfo, v1) - 0usize];
};
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiFabricInfoVerT"][::std::mem::size_of::<AmdsmiFabricInfoVerT>() - 248usize];
    ["Alignment of AmdsmiFabricInfoVerT"][::std::mem::align_of::<AmdsmiFabricInfoVerT>() - 4usize];
    ["Offset of field: AmdsmiFabricInfoVerT::version"]
        [::std::mem::offset_of!(AmdsmiFabricInfoVerT, version) - 0usize];
    ["Offset of field: AmdsmiFabricInfoVerT::fabric_version"]
        [::std::mem::offset_of!(AmdsmiFabricInfoVerT, fabric_version) - 4usize];
};
#[repr(C)]
#[derive(Copy, Clone)]
pub struct AmdsmiFabricInfoT {
    pub bdf: AmdsmiBdfT,
    pub fabric_info: AmdsmiFabricInfoVerT,
    pub reserved: [u32; 15usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiFabricInfoT"][::std::mem::size_of::<AmdsmiFabricInfoT>() - 320usize];
    ["Alignment of AmdsmiFabricInfoT"][::std::mem::align_of::<AmdsmiFabricInfoT>() - 8usize];
    ["Offset of field: AmdsmiFabricInfoT::bdf"]
        [::std::mem::offset_of!(AmdsmiFabricInfoT, bdf) - 0usize];
    ["Offset of field: AmdsmiFabricInfoT::fabric_info"]
        [::std::mem::offset_of!(AmdsmiFabricInfoT, fabric_info) - 8usize];
    ["Offset of field: AmdsmiFabricInfoT::reserved"]
        [::std::mem::offset_of!(AmdsmiFabricInfoT, reserved) - 256usize];
};
extern "C" {
    pub fn amdsmi_get_gpu_fabric_info(
        processor_handle: AmdsmiProcessorHandle,
        info: *mut AmdsmiFabricInfoT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_lib_version(version: *mut AmdsmiVersionT) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_ecc_count(
        processor_handle: AmdsmiProcessorHandle,
        block: AmdsmiGpuBlockT,
        ec: *mut AmdsmiErrorCountT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_ecc_enabled(
        processor_handle: AmdsmiProcessorHandle,
        enabled_blocks: *mut u64,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_total_ecc_count(
        processor_handle: AmdsmiProcessorHandle,
        ec: *mut AmdsmiErrorCountT,
    ) -> AmdsmiStatusT;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiCperGuidT {
    pub b: [::std::os::raw::c_uchar; 16usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiCperGuidT"][::std::mem::size_of::<AmdsmiCperGuidT>() - 16usize];
    ["Alignment of AmdsmiCperGuidT"][::std::mem::align_of::<AmdsmiCperGuidT>() - 1usize];
    ["Offset of field: AmdsmiCperGuidT::b"][::std::mem::offset_of!(AmdsmiCperGuidT, b) - 0usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiCperTimestampT {
    pub seconds: u8,
    pub minutes: u8,
    pub hours: u8,
    pub flag: u8,
    pub day: u8,
    pub month: u8,
    pub year: u8,
    pub century: u8,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiCperTimestampT"][::std::mem::size_of::<AmdsmiCperTimestampT>() - 8usize];
    ["Alignment of AmdsmiCperTimestampT"][::std::mem::align_of::<AmdsmiCperTimestampT>() - 1usize];
    ["Offset of field: AmdsmiCperTimestampT::seconds"]
        [::std::mem::offset_of!(AmdsmiCperTimestampT, seconds) - 0usize];
    ["Offset of field: AmdsmiCperTimestampT::minutes"]
        [::std::mem::offset_of!(AmdsmiCperTimestampT, minutes) - 1usize];
    ["Offset of field: AmdsmiCperTimestampT::hours"]
        [::std::mem::offset_of!(AmdsmiCperTimestampT, hours) - 2usize];
    ["Offset of field: AmdsmiCperTimestampT::flag"]
        [::std::mem::offset_of!(AmdsmiCperTimestampT, flag) - 3usize];
    ["Offset of field: AmdsmiCperTimestampT::day"]
        [::std::mem::offset_of!(AmdsmiCperTimestampT, day) - 4usize];
    ["Offset of field: AmdsmiCperTimestampT::month"]
        [::std::mem::offset_of!(AmdsmiCperTimestampT, month) - 5usize];
    ["Offset of field: AmdsmiCperTimestampT::year"]
        [::std::mem::offset_of!(AmdsmiCperTimestampT, year) - 6usize];
    ["Offset of field: AmdsmiCperTimestampT::century"]
        [::std::mem::offset_of!(AmdsmiCperTimestampT, century) - 7usize];
};
#[repr(C, packed)]
#[derive(Copy, Clone)]
pub union AmdsmiCperValidBitsT {
    pub valid_bits: AmdsmiCperValidBitsTValidBits,
    pub valid_mask: u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiCperValidBitsTValidBits {
    pub _bitfield_align_1: [u8; 0],
    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize]>,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiCperValidBitsTValidBits"]
        [::std::mem::size_of::<AmdsmiCperValidBitsTValidBits>() - 4usize];
    ["Alignment of AmdsmiCperValidBitsTValidBits"]
        [::std::mem::align_of::<AmdsmiCperValidBitsTValidBits>() - 1usize];
};
impl AmdsmiCperValidBitsTValidBits {
    #[inline]
    pub fn platform_id(&self) -> u32 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) }
    }
    #[inline]
    pub fn set_platform_id(&mut self, val: u32) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(0usize, 1u8, val as u64)
        }
    }
    #[inline]
    pub fn timestamp(&self) -> u32 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u32) }
    }
    #[inline]
    pub fn set_timestamp(&mut self, val: u32) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(1usize, 1u8, val as u64)
        }
    }
    #[inline]
    pub fn partition_id(&self) -> u32 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 1u8) as u32) }
    }
    #[inline]
    pub fn set_partition_id(&mut self, val: u32) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(2usize, 1u8, val as u64)
        }
    }
    #[inline]
    pub fn reserved(&self) -> u32 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(3usize, 29u8) as u32) }
    }
    #[inline]
    pub fn set_reserved(&mut self, val: u32) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(3usize, 29u8, val as u64)
        }
    }
    #[inline]
    pub fn new_bitfield_1(
        platform_id: u32,
        timestamp: u32,
        partition_id: u32,
        reserved: u32,
    ) -> __BindgenBitfieldUnit<[u8; 4usize]> {
        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 4usize]> = Default::default();
        __bindgen_bitfield_unit.set(0usize, 1u8, {
            let platform_id: u32 = unsafe { ::std::mem::transmute(platform_id) };
            platform_id as u64
        });
        __bindgen_bitfield_unit.set(1usize, 1u8, {
            let timestamp: u32 = unsafe { ::std::mem::transmute(timestamp) };
            timestamp as u64
        });
        __bindgen_bitfield_unit.set(2usize, 1u8, {
            let partition_id: u32 = unsafe { ::std::mem::transmute(partition_id) };
            partition_id as u64
        });
        __bindgen_bitfield_unit.set(3usize, 29u8, {
            let reserved: u32 = unsafe { ::std::mem::transmute(reserved) };
            reserved as u64
        });
        __bindgen_bitfield_unit
    }
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiCperValidBitsT"][::std::mem::size_of::<AmdsmiCperValidBitsT>() - 4usize];
    ["Alignment of AmdsmiCperValidBitsT"][::std::mem::align_of::<AmdsmiCperValidBitsT>() - 1usize];
    ["Offset of field: AmdsmiCperValidBitsT::valid_bits"]
        [::std::mem::offset_of!(AmdsmiCperValidBitsT, valid_bits) - 0usize];
    ["Offset of field: AmdsmiCperValidBitsT::valid_mask"]
        [::std::mem::offset_of!(AmdsmiCperValidBitsT, valid_mask) - 0usize];
};
#[repr(C, packed)]
#[derive(Copy, Clone)]
pub struct AmdsmiCperHdrT {
    pub signature: [::std::os::raw::c_char; 4usize],
    pub revision: u16,
    pub signature_end: u32,
    pub sec_cnt: u16,
    pub error_severity: AmdsmiCperSevT,
    pub cper_valid_bits: AmdsmiCperValidBitsT,
    pub record_length: u32,
    pub timestamp: AmdsmiCperTimestampT,
    pub platform_id: [::std::os::raw::c_char; 16usize],
    pub partition_id: AmdsmiCperGuidT,
    pub creator_id: [::std::os::raw::c_char; 16usize],
    pub notify_type: AmdsmiCperGuidT,
    pub record_id: [::std::os::raw::c_char; 8usize],
    pub flags: u32,
    pub persistence_info: u64,
    pub reserved: [u8; 12usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiCperHdrT"][::std::mem::size_of::<AmdsmiCperHdrT>() - 128usize];
    ["Alignment of AmdsmiCperHdrT"][::std::mem::align_of::<AmdsmiCperHdrT>() - 1usize];
    ["Offset of field: AmdsmiCperHdrT::signature"]
        [::std::mem::offset_of!(AmdsmiCperHdrT, signature) - 0usize];
    ["Offset of field: AmdsmiCperHdrT::revision"]
        [::std::mem::offset_of!(AmdsmiCperHdrT, revision) - 4usize];
    ["Offset of field: AmdsmiCperHdrT::signature_end"]
        [::std::mem::offset_of!(AmdsmiCperHdrT, signature_end) - 6usize];
    ["Offset of field: AmdsmiCperHdrT::sec_cnt"]
        [::std::mem::offset_of!(AmdsmiCperHdrT, sec_cnt) - 10usize];
    ["Offset of field: AmdsmiCperHdrT::error_severity"]
        [::std::mem::offset_of!(AmdsmiCperHdrT, error_severity) - 12usize];
    ["Offset of field: AmdsmiCperHdrT::cper_valid_bits"]
        [::std::mem::offset_of!(AmdsmiCperHdrT, cper_valid_bits) - 16usize];
    ["Offset of field: AmdsmiCperHdrT::record_length"]
        [::std::mem::offset_of!(AmdsmiCperHdrT, record_length) - 20usize];
    ["Offset of field: AmdsmiCperHdrT::timestamp"]
        [::std::mem::offset_of!(AmdsmiCperHdrT, timestamp) - 24usize];
    ["Offset of field: AmdsmiCperHdrT::platform_id"]
        [::std::mem::offset_of!(AmdsmiCperHdrT, platform_id) - 32usize];
    ["Offset of field: AmdsmiCperHdrT::partition_id"]
        [::std::mem::offset_of!(AmdsmiCperHdrT, partition_id) - 48usize];
    ["Offset of field: AmdsmiCperHdrT::creator_id"]
        [::std::mem::offset_of!(AmdsmiCperHdrT, creator_id) - 64usize];
    ["Offset of field: AmdsmiCperHdrT::notify_type"]
        [::std::mem::offset_of!(AmdsmiCperHdrT, notify_type) - 80usize];
    ["Offset of field: AmdsmiCperHdrT::record_id"]
        [::std::mem::offset_of!(AmdsmiCperHdrT, record_id) - 96usize];
    ["Offset of field: AmdsmiCperHdrT::flags"]
        [::std::mem::offset_of!(AmdsmiCperHdrT, flags) - 104usize];
    ["Offset of field: AmdsmiCperHdrT::persistence_info"]
        [::std::mem::offset_of!(AmdsmiCperHdrT, persistence_info) - 108usize];
    ["Offset of field: AmdsmiCperHdrT::reserved"]
        [::std::mem::offset_of!(AmdsmiCperHdrT, reserved) - 116usize];
};
extern "C" {
    pub fn amdsmi_get_afids_from_cper(
        cper_buffer: *mut ::std::os::raw::c_char,
        buf_size: u32,
        afids: *mut u64,
        num_afids: *mut u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_ras_feature_info(
        processor_handle: AmdsmiProcessorHandle,
        ras_feature: *mut AmdsmiRasFeatureT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_cper_entries(
        processor_handle: AmdsmiProcessorHandle,
        severity_mask: u32,
        cper_data: *mut ::std::os::raw::c_char,
        buf_size: *mut u64,
        cper_hdrs: *mut *mut AmdsmiCperHdrT,
        entry_count: *mut u64,
        cursor: *mut u64,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_ecc_status(
        processor_handle: AmdsmiProcessorHandle,
        block: AmdsmiGpuBlockT,
        state: *mut AmdsmiRasErrStateT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_status_code_to_string(
        status: AmdsmiStatusT,
        status_string: *mut *const ::std::os::raw::c_char,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_gpu_counter_group_supported(
        processor_handle: AmdsmiProcessorHandle,
        group: AmdsmiEventGroupT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_gpu_create_counter(
        processor_handle: AmdsmiProcessorHandle,
        type_: AmdsmiEventTypeT,
        evnt_handle: *mut AmdsmiEventHandleT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_gpu_destroy_counter(evnt_handle: AmdsmiEventHandleT) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_gpu_control_counter(
        evt_handle: AmdsmiEventHandleT,
        cmd: AmdsmiCounterCommandT,
        cmd_args: *mut ::std::os::raw::c_void,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_gpu_read_counter(
        evt_handle: AmdsmiEventHandleT,
        value: *mut AmdsmiCounterValueT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_available_counters(
        processor_handle: AmdsmiProcessorHandle,
        grp: AmdsmiEventGroupT,
        available: *mut u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_compute_process_info(
        procs: *mut AmdsmiProcessInfoT,
        num_items: *mut u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_compute_process_info_by_pid(
        pid: u32,
        proc_: *mut AmdsmiProcessInfoT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_compute_process_gpus(
        pid: u32,
        dv_indices: *mut u32,
        num_devices: *mut u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_gpu_xgmi_error_status(
        processor_handle: AmdsmiProcessorHandle,
        status: *mut AmdsmiXgmiStatusT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_reset_gpu_xgmi_error(processor_handle: AmdsmiProcessorHandle) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_xgmi_info(
        processor_handle: AmdsmiProcessorHandle,
        info: *mut AmdsmiXgmiInfoT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_xgmi_link_status(
        processor_handle: AmdsmiProcessorHandle,
        link_status: *mut AmdsmiXgmiLinkStatusT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_link_metrics(
        processor_handle: AmdsmiProcessorHandle,
        link_metrics: *mut AmdsmiLinkMetricsT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_topo_get_numa_node_number(
        processor_handle: AmdsmiProcessorHandle,
        numa_node: *mut u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_topo_get_link_weight(
        processor_handle_src: AmdsmiProcessorHandle,
        processor_handle_dst: AmdsmiProcessorHandle,
        weight: *mut u64,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_minmax_bandwidth_between_processors(
        processor_handle_src: AmdsmiProcessorHandle,
        processor_handle_dst: AmdsmiProcessorHandle,
        min_bandwidth: *mut u64,
        max_bandwidth: *mut u64,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_topo_get_link_type(
        processor_handle_src: AmdsmiProcessorHandle,
        processor_handle_dst: AmdsmiProcessorHandle,
        hops: *mut u64,
        type_: *mut AmdsmiLinkTypeT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_link_topology_nearest(
        processor_handle: AmdsmiProcessorHandle,
        link_type: AmdsmiLinkTypeT,
        topology_nearest_info: *mut AmdsmiTopologyNearestT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_is_P2P_accessible(
        processor_handle_src: AmdsmiProcessorHandle,
        processor_handle_dst: AmdsmiProcessorHandle,
        accessible: *mut bool,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_topo_get_p2p_status(
        processor_handle_src: AmdsmiProcessorHandle,
        processor_handle_dst: AmdsmiProcessorHandle,
        type_: *mut AmdsmiLinkTypeT,
        cap: *mut AmdsmiP2pCapabilityT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_compute_partition(
        processor_handle: AmdsmiProcessorHandle,
        compute_partition: *mut ::std::os::raw::c_char,
        len: u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_set_gpu_compute_partition(
        processor_handle: AmdsmiProcessorHandle,
        compute_partition: AmdsmiComputePartitionTypeT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_compute_partition_mem_alloc_mode(
        processor_handle: AmdsmiProcessorHandle,
        mode: *mut AmdsmiComputePartitionMemAllocModeT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_set_gpu_compute_partition_mem_alloc_mode(
        processor_handle: AmdsmiProcessorHandle,
        mode: AmdsmiComputePartitionMemAllocModeT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_memory_partition(
        processor_handle: AmdsmiProcessorHandle,
        memory_partition: *mut ::std::os::raw::c_char,
        len: u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_set_gpu_memory_partition(
        processor_handle: AmdsmiProcessorHandle,
        memory_partition: AmdsmiMemoryPartitionTypeT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_memory_partition_config(
        processor_handle: AmdsmiProcessorHandle,
        config: *mut AmdsmiMemoryPartitionConfigT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_set_gpu_memory_partition_mode(
        processor_handle: AmdsmiProcessorHandle,
        mode: AmdsmiMemoryPartitionTypeT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_accelerator_partition_profile_config(
        processor_handle: AmdsmiProcessorHandle,
        profile_config: *mut AmdsmiAcceleratorPartitionProfileConfigT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_accelerator_partition_profile(
        processor_handle: AmdsmiProcessorHandle,
        profile: *mut AmdsmiAcceleratorPartitionProfileT,
        partition_id: *mut u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_set_gpu_accelerator_partition_profile(
        processor_handle: AmdsmiProcessorHandle,
        profile_index: u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_init_gpu_event_notification(
        processor_handle: AmdsmiProcessorHandle,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_set_gpu_event_notification_mask(
        processor_handle: AmdsmiProcessorHandle,
        mask: u64,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_event_notification(
        timeout_ms: ::std::os::raw::c_int,
        num_elem: *mut u32,
        data: *mut AmdsmiEvtNotificationDataT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_stop_gpu_event_notification(
        processor_handle: AmdsmiProcessorHandle,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_driver_info(
        processor_handle: AmdsmiProcessorHandle,
        info: *mut AmdsmiDriverInfoT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_asic_info(
        processor_handle: AmdsmiProcessorHandle,
        info: *mut AmdsmiAsicInfoT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_kfd_info(
        processor_handle: AmdsmiProcessorHandle,
        info: *mut AmdsmiKfdInfoT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_vram_info(
        processor_handle: AmdsmiProcessorHandle,
        info: *mut AmdsmiVramInfoT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_board_info(
        processor_handle: AmdsmiProcessorHandle,
        info: *mut AmdsmiBoardInfoT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_power_cap_info(
        processor_handle: AmdsmiProcessorHandle,
        sensor_ind: u32,
        info: *mut AmdsmiPowerCapInfoT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_pcie_info(
        processor_handle: AmdsmiProcessorHandle,
        info: *mut AmdsmiPcieInfoT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_xcd_counter(
        processor_handle: AmdsmiProcessorHandle,
        xcd_count: *mut u16,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_npm_info(
        node_handle: AmdsmiNodeHandle,
        info: *mut AmdsmiNpmInfoT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_fw_info(
        processor_handle: AmdsmiProcessorHandle,
        info: *mut AmdsmiFwInfoT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_vbios_info(
        processor_handle: AmdsmiProcessorHandle,
        info: *mut AmdsmiVbiosInfoT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_temp_metric(
        processor_handle: AmdsmiProcessorHandle,
        sensor_type: AmdsmiTemperatureTypeT,
        metric: AmdsmiTemperatureMetricT,
        temperature: *mut i64,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_activity(
        processor_handle: AmdsmiProcessorHandle,
        info: *mut AmdsmiEngineUsageT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_power_info(
        processor_handle: AmdsmiProcessorHandle,
        info: *mut AmdsmiPowerInfoT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_is_gpu_power_management_enabled(
        processor_handle: AmdsmiProcessorHandle,
        enabled: *mut bool,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_clock_info(
        processor_handle: AmdsmiProcessorHandle,
        clk_type: AmdsmiClkTypeT,
        info: *mut AmdsmiClkInfoT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_vram_usage(
        processor_handle: AmdsmiProcessorHandle,
        info: *mut AmdsmiVramUsageT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_violation_status(
        processor_handle: AmdsmiProcessorHandle,
        info: *mut AmdsmiViolationStatusT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_process_list(
        processor_handle: AmdsmiProcessorHandle,
        max_processes: *mut u32,
        list: *mut AmdsmiProcInfoT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_process_list_by_pid(
        processor_handles: *mut AmdsmiProcessorHandle,
        num_processors: u32,
        procs: *mut AmdsmiProcInfoByPidT,
        max_processes: *mut u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_gpu_driver_reload() -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_ptl_state(
        processor_handle: AmdsmiProcessorHandle,
        enabled: *mut bool,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_set_gpu_ptl_state(
        processor_handle: AmdsmiProcessorHandle,
        enable: bool,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_ptl_formats(
        processor_handle: AmdsmiProcessorHandle,
        data_format1: *mut AmdsmiPtlDataFormatT,
        data_format2: *mut AmdsmiPtlDataFormatT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_set_gpu_ptl_formats(
        processor_handle: AmdsmiProcessorHandle,
        data_format1: AmdsmiPtlDataFormatT,
        data_format2: AmdsmiPtlDataFormatT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_nic_driver_info(
        processor_handle: AmdsmiProcessorHandle,
        info: *mut AmdsmiNicDriverInfoT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_nic_asic_info(
        processor_handle: AmdsmiProcessorHandle,
        info: *mut AmdsmiNicAsicInfoT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_nic_bus_info(
        processor_handle: AmdsmiProcessorHandle,
        info: *mut AmdsmiNicBusInfoT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_nic_numa_info(
        processor_handle: AmdsmiProcessorHandle,
        info: *mut AmdsmiNicNumaInfoT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_nic_port_info(
        processor_handle: AmdsmiProcessorHandle,
        info: *mut AmdsmiNicPortInfoT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_nic_rdma_dev_info(
        processor_handle: AmdsmiProcessorHandle,
        info: *mut AmdsmiNicRdmaDevicesInfoT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_nic_rdma_port_statistics(
        processor_handle: AmdsmiProcessorHandle,
        rdma_port_index: u32,
        num_stats: *mut u32,
        stats: *mut AmdsmiNicStatT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_nic_fw_info(
        processor_handle: AmdsmiProcessorHandle,
        info: *mut AmdsmiNicFwInfoT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_nic_port_statistics(
        processor_handle: AmdsmiProcessorHandle,
        port_index: u32,
        num_stats: *mut u32,
        stats: *mut AmdsmiNicStatT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_nic_vendor_statistics(
        processor_handle: AmdsmiProcessorHandle,
        port_index: u32,
        num_stats: *mut u32,
        stats: *mut AmdsmiNicStatT,
    ) -> AmdsmiStatusT;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiUmaCarveoutOptionT {
    pub index: u32,
    pub description: [::std::os::raw::c_char; 256usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiUmaCarveoutOptionT"]
        [::std::mem::size_of::<AmdsmiUmaCarveoutOptionT>() - 260usize];
    ["Alignment of AmdsmiUmaCarveoutOptionT"]
        [::std::mem::align_of::<AmdsmiUmaCarveoutOptionT>() - 4usize];
    ["Offset of field: AmdsmiUmaCarveoutOptionT::index"]
        [::std::mem::offset_of!(AmdsmiUmaCarveoutOptionT, index) - 0usize];
    ["Offset of field: AmdsmiUmaCarveoutOptionT::description"]
        [::std::mem::offset_of!(AmdsmiUmaCarveoutOptionT, description) - 4usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiUmaCarveoutInfoT {
    pub current_index: u32,
    pub num_options: u32,
    pub options: [AmdsmiUmaCarveoutOptionT; 16usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiUmaCarveoutInfoT"][::std::mem::size_of::<AmdsmiUmaCarveoutInfoT>() - 4168usize];
    ["Alignment of AmdsmiUmaCarveoutInfoT"]
        [::std::mem::align_of::<AmdsmiUmaCarveoutInfoT>() - 4usize];
    ["Offset of field: AmdsmiUmaCarveoutInfoT::current_index"]
        [::std::mem::offset_of!(AmdsmiUmaCarveoutInfoT, current_index) - 0usize];
    ["Offset of field: AmdsmiUmaCarveoutInfoT::num_options"]
        [::std::mem::offset_of!(AmdsmiUmaCarveoutInfoT, num_options) - 4usize];
    ["Offset of field: AmdsmiUmaCarveoutInfoT::options"]
        [::std::mem::offset_of!(AmdsmiUmaCarveoutInfoT, options) - 8usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiTtmInfoT {
    pub current_pages: u64,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiTtmInfoT"][::std::mem::size_of::<AmdsmiTtmInfoT>() - 8usize];
    ["Alignment of AmdsmiTtmInfoT"][::std::mem::align_of::<AmdsmiTtmInfoT>() - 8usize];
    ["Offset of field: AmdsmiTtmInfoT::current_pages"]
        [::std::mem::offset_of!(AmdsmiTtmInfoT, current_pages) - 0usize];
};
extern "C" {
    pub fn amdsmi_get_gpu_uma_carveout_info(
        processor_handle: AmdsmiProcessorHandle,
        info: *mut AmdsmiUmaCarveoutInfoT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_set_gpu_uma_carveout(
        processor_handle: AmdsmiProcessorHandle,
        option_index: u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_ttm_info(info: *mut AmdsmiTtmInfoT) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_set_ttm_pages_limit(pages: u64) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_reset_ttm_pages_limit() -> AmdsmiStatusT;
}
