use core::fmt;
#[cfg(any(feature = "instr_info", feature = "encoder"))]
pub use self::info::*;
#[cfg(any(feature = "instr_info", feature = "encoder"))]
mod info {
use super::super::iced_constants::IcedConstants;
use super::MemorySize;
#[cfg_attr(feature = "cargo-fmt", rustfmt::skip)]
pub(super) static MEMORY_SIZE_INFOS: &[MemorySizeInfo; IcedConstants::NUMBER_OF_MEMORY_SIZES] = &[
MemorySizeInfo { size: 0, element_size: 0, memory_size: MemorySize::Unknown, element_type: MemorySize::Unknown, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 1, element_size: 1, memory_size: MemorySize::UInt8, element_type: MemorySize::UInt8, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 2, element_size: 2, memory_size: MemorySize::UInt16, element_type: MemorySize::UInt16, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 4, element_size: 4, memory_size: MemorySize::UInt32, element_type: MemorySize::UInt32, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 8, element_size: 8, memory_size: MemorySize::UInt52, element_type: MemorySize::UInt52, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 8, element_size: 8, memory_size: MemorySize::UInt64, element_type: MemorySize::UInt64, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 16, element_size: 16, memory_size: MemorySize::UInt128, element_type: MemorySize::UInt128, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 32, element_size: 32, memory_size: MemorySize::UInt256, element_type: MemorySize::UInt256, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 64, element_size: 64, memory_size: MemorySize::UInt512, element_type: MemorySize::UInt512, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 1, element_size: 1, memory_size: MemorySize::Int8, element_type: MemorySize::Int8, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 2, element_size: 2, memory_size: MemorySize::Int16, element_type: MemorySize::Int16, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 4, element_size: 4, memory_size: MemorySize::Int32, element_type: MemorySize::Int32, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 8, element_size: 8, memory_size: MemorySize::Int64, element_type: MemorySize::Int64, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 16, element_size: 16, memory_size: MemorySize::Int128, element_type: MemorySize::Int128, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 32, element_size: 32, memory_size: MemorySize::Int256, element_type: MemorySize::Int256, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 64, element_size: 64, memory_size: MemorySize::Int512, element_type: MemorySize::Int512, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 4, element_size: 4, memory_size: MemorySize::SegPtr16, element_type: MemorySize::SegPtr16, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 6, element_size: 6, memory_size: MemorySize::SegPtr32, element_type: MemorySize::SegPtr32, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 10, element_size: 10, memory_size: MemorySize::SegPtr64, element_type: MemorySize::SegPtr64, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 2, element_size: 2, memory_size: MemorySize::WordOffset, element_type: MemorySize::WordOffset, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 4, element_size: 4, memory_size: MemorySize::DwordOffset, element_type: MemorySize::DwordOffset, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 8, element_size: 8, memory_size: MemorySize::QwordOffset, element_type: MemorySize::QwordOffset, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 4, element_size: 4, memory_size: MemorySize::Bound16_WordWord, element_type: MemorySize::Bound16_WordWord, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 8, element_size: 8, memory_size: MemorySize::Bound32_DwordDword, element_type: MemorySize::Bound32_DwordDword, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 8, element_size: 8, memory_size: MemorySize::Bnd32, element_type: MemorySize::Bnd32, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 16, element_size: 16, memory_size: MemorySize::Bnd64, element_type: MemorySize::Bnd64, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 6, element_size: 6, memory_size: MemorySize::Fword6, element_type: MemorySize::Fword6, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 10, element_size: 10, memory_size: MemorySize::Fword10, element_type: MemorySize::Fword10, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 2, element_size: 2, memory_size: MemorySize::Float16, element_type: MemorySize::Float16, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 4, element_size: 4, memory_size: MemorySize::Float32, element_type: MemorySize::Float32, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 8, element_size: 8, memory_size: MemorySize::Float64, element_type: MemorySize::Float64, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 10, element_size: 10, memory_size: MemorySize::Float80, element_type: MemorySize::Float80, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 16, element_size: 16, memory_size: MemorySize::Float128, element_type: MemorySize::Float128, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 2, element_size: 2, memory_size: MemorySize::BFloat16, element_type: MemorySize::BFloat16, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 14, element_size: 14, memory_size: MemorySize::FpuEnv14, element_type: MemorySize::FpuEnv14, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 28, element_size: 28, memory_size: MemorySize::FpuEnv28, element_type: MemorySize::FpuEnv28, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 94, element_size: 94, memory_size: MemorySize::FpuState94, element_type: MemorySize::FpuState94, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 108, element_size: 108, memory_size: MemorySize::FpuState108, element_type: MemorySize::FpuState108, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 512, element_size: 512, memory_size: MemorySize::Fxsave_512Byte, element_type: MemorySize::Fxsave_512Byte, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 512, element_size: 512, memory_size: MemorySize::Fxsave64_512Byte, element_type: MemorySize::Fxsave64_512Byte, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 0, element_size: 0, memory_size: MemorySize::Xsave, element_type: MemorySize::Xsave, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 0, element_size: 0, memory_size: MemorySize::Xsave64, element_type: MemorySize::Xsave64, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 10, element_size: 10, memory_size: MemorySize::Bcd, element_type: MemorySize::Bcd, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 2, element_size: 1, memory_size: MemorySize::Packed16_UInt8, element_type: MemorySize::UInt8, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 2, element_size: 1, memory_size: MemorySize::Packed16_Int8, element_type: MemorySize::Int8, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 4, element_size: 1, memory_size: MemorySize::Packed32_UInt8, element_type: MemorySize::UInt8, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 4, element_size: 1, memory_size: MemorySize::Packed32_Int8, element_type: MemorySize::Int8, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 4, element_size: 2, memory_size: MemorySize::Packed32_UInt16, element_type: MemorySize::UInt16, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 4, element_size: 2, memory_size: MemorySize::Packed32_Int16, element_type: MemorySize::Int16, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 4, element_size: 2, memory_size: MemorySize::Packed32_BFloat16, element_type: MemorySize::BFloat16, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 8, element_size: 1, memory_size: MemorySize::Packed64_UInt8, element_type: MemorySize::UInt8, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 8, element_size: 1, memory_size: MemorySize::Packed64_Int8, element_type: MemorySize::Int8, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 8, element_size: 2, memory_size: MemorySize::Packed64_UInt16, element_type: MemorySize::UInt16, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 8, element_size: 2, memory_size: MemorySize::Packed64_Int16, element_type: MemorySize::Int16, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 8, element_size: 4, memory_size: MemorySize::Packed64_UInt32, element_type: MemorySize::UInt32, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 8, element_size: 4, memory_size: MemorySize::Packed64_Int32, element_type: MemorySize::Int32, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 8, element_size: 2, memory_size: MemorySize::Packed64_Float16, element_type: MemorySize::Float16, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 8, element_size: 4, memory_size: MemorySize::Packed64_Float32, element_type: MemorySize::Float32, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 16, element_size: 1, memory_size: MemorySize::Packed128_UInt8, element_type: MemorySize::UInt8, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 16, element_size: 1, memory_size: MemorySize::Packed128_Int8, element_type: MemorySize::Int8, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 16, element_size: 2, memory_size: MemorySize::Packed128_UInt16, element_type: MemorySize::UInt16, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 16, element_size: 2, memory_size: MemorySize::Packed128_Int16, element_type: MemorySize::Int16, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 16, element_size: 4, memory_size: MemorySize::Packed128_UInt32, element_type: MemorySize::UInt32, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 16, element_size: 4, memory_size: MemorySize::Packed128_Int32, element_type: MemorySize::Int32, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 16, element_size: 8, memory_size: MemorySize::Packed128_UInt52, element_type: MemorySize::UInt52, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 16, element_size: 8, memory_size: MemorySize::Packed128_UInt64, element_type: MemorySize::UInt64, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 16, element_size: 8, memory_size: MemorySize::Packed128_Int64, element_type: MemorySize::Int64, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 16, element_size: 2, memory_size: MemorySize::Packed128_Float16, element_type: MemorySize::Float16, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 16, element_size: 4, memory_size: MemorySize::Packed128_Float32, element_type: MemorySize::Float32, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 16, element_size: 8, memory_size: MemorySize::Packed128_Float64, element_type: MemorySize::Float64, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 16, element_size: 4, memory_size: MemorySize::Packed128_2xBFloat16, element_type: MemorySize::Packed32_BFloat16, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 32, element_size: 1, memory_size: MemorySize::Packed256_UInt8, element_type: MemorySize::UInt8, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 32, element_size: 1, memory_size: MemorySize::Packed256_Int8, element_type: MemorySize::Int8, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 32, element_size: 2, memory_size: MemorySize::Packed256_UInt16, element_type: MemorySize::UInt16, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 32, element_size: 2, memory_size: MemorySize::Packed256_Int16, element_type: MemorySize::Int16, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 32, element_size: 4, memory_size: MemorySize::Packed256_UInt32, element_type: MemorySize::UInt32, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 32, element_size: 4, memory_size: MemorySize::Packed256_Int32, element_type: MemorySize::Int32, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 32, element_size: 8, memory_size: MemorySize::Packed256_UInt52, element_type: MemorySize::UInt52, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 32, element_size: 8, memory_size: MemorySize::Packed256_UInt64, element_type: MemorySize::UInt64, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 32, element_size: 8, memory_size: MemorySize::Packed256_Int64, element_type: MemorySize::Int64, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 32, element_size: 16, memory_size: MemorySize::Packed256_UInt128, element_type: MemorySize::UInt128, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 32, element_size: 16, memory_size: MemorySize::Packed256_Int128, element_type: MemorySize::Int128, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 32, element_size: 2, memory_size: MemorySize::Packed256_Float16, element_type: MemorySize::Float16, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 32, element_size: 4, memory_size: MemorySize::Packed256_Float32, element_type: MemorySize::Float32, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 32, element_size: 8, memory_size: MemorySize::Packed256_Float64, element_type: MemorySize::Float64, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 32, element_size: 16, memory_size: MemorySize::Packed256_Float128, element_type: MemorySize::Float128, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 32, element_size: 4, memory_size: MemorySize::Packed256_2xBFloat16, element_type: MemorySize::Packed32_BFloat16, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 64, element_size: 1, memory_size: MemorySize::Packed512_UInt8, element_type: MemorySize::UInt8, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 64, element_size: 1, memory_size: MemorySize::Packed512_Int8, element_type: MemorySize::Int8, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 64, element_size: 2, memory_size: MemorySize::Packed512_UInt16, element_type: MemorySize::UInt16, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 64, element_size: 2, memory_size: MemorySize::Packed512_Int16, element_type: MemorySize::Int16, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 64, element_size: 4, memory_size: MemorySize::Packed512_UInt32, element_type: MemorySize::UInt32, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 64, element_size: 4, memory_size: MemorySize::Packed512_Int32, element_type: MemorySize::Int32, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 64, element_size: 8, memory_size: MemorySize::Packed512_UInt52, element_type: MemorySize::UInt52, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 64, element_size: 8, memory_size: MemorySize::Packed512_UInt64, element_type: MemorySize::UInt64, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 64, element_size: 8, memory_size: MemorySize::Packed512_Int64, element_type: MemorySize::Int64, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 64, element_size: 16, memory_size: MemorySize::Packed512_UInt128, element_type: MemorySize::UInt128, is_signed: false, is_broadcast: false },
MemorySizeInfo { size: 64, element_size: 4, memory_size: MemorySize::Packed512_Float32, element_type: MemorySize::Float32, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 64, element_size: 8, memory_size: MemorySize::Packed512_Float64, element_type: MemorySize::Float64, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 64, element_size: 4, memory_size: MemorySize::Packed512_2xBFloat16, element_type: MemorySize::Packed32_BFloat16, is_signed: true, is_broadcast: false },
MemorySizeInfo { size: 4, element_size: 4, memory_size: MemorySize::Broadcast64_UInt32, element_type: MemorySize::UInt32, is_signed: false, is_broadcast: true },
MemorySizeInfo { size: 4, element_size: 4, memory_size: MemorySize::Broadcast64_Int32, element_type: MemorySize::Int32, is_signed: true, is_broadcast: true },
MemorySizeInfo { size: 4, element_size: 4, memory_size: MemorySize::Broadcast64_Float32, element_type: MemorySize::Float32, is_signed: true, is_broadcast: true },
MemorySizeInfo { size: 4, element_size: 4, memory_size: MemorySize::Broadcast128_UInt32, element_type: MemorySize::UInt32, is_signed: false, is_broadcast: true },
MemorySizeInfo { size: 4, element_size: 4, memory_size: MemorySize::Broadcast128_Int32, element_type: MemorySize::Int32, is_signed: true, is_broadcast: true },
MemorySizeInfo { size: 8, element_size: 8, memory_size: MemorySize::Broadcast128_UInt52, element_type: MemorySize::UInt52, is_signed: false, is_broadcast: true },
MemorySizeInfo { size: 8, element_size: 8, memory_size: MemorySize::Broadcast128_UInt64, element_type: MemorySize::UInt64, is_signed: false, is_broadcast: true },
MemorySizeInfo { size: 8, element_size: 8, memory_size: MemorySize::Broadcast128_Int64, element_type: MemorySize::Int64, is_signed: true, is_broadcast: true },
MemorySizeInfo { size: 4, element_size: 4, memory_size: MemorySize::Broadcast128_Float32, element_type: MemorySize::Float32, is_signed: true, is_broadcast: true },
MemorySizeInfo { size: 8, element_size: 8, memory_size: MemorySize::Broadcast128_Float64, element_type: MemorySize::Float64, is_signed: true, is_broadcast: true },
MemorySizeInfo { size: 4, element_size: 4, memory_size: MemorySize::Broadcast256_UInt32, element_type: MemorySize::UInt32, is_signed: false, is_broadcast: true },
MemorySizeInfo { size: 4, element_size: 4, memory_size: MemorySize::Broadcast256_Int32, element_type: MemorySize::Int32, is_signed: true, is_broadcast: true },
MemorySizeInfo { size: 8, element_size: 8, memory_size: MemorySize::Broadcast256_UInt52, element_type: MemorySize::UInt52, is_signed: false, is_broadcast: true },
MemorySizeInfo { size: 8, element_size: 8, memory_size: MemorySize::Broadcast256_UInt64, element_type: MemorySize::UInt64, is_signed: false, is_broadcast: true },
MemorySizeInfo { size: 8, element_size: 8, memory_size: MemorySize::Broadcast256_Int64, element_type: MemorySize::Int64, is_signed: true, is_broadcast: true },
MemorySizeInfo { size: 4, element_size: 4, memory_size: MemorySize::Broadcast256_Float32, element_type: MemorySize::Float32, is_signed: true, is_broadcast: true },
MemorySizeInfo { size: 8, element_size: 8, memory_size: MemorySize::Broadcast256_Float64, element_type: MemorySize::Float64, is_signed: true, is_broadcast: true },
MemorySizeInfo { size: 4, element_size: 4, memory_size: MemorySize::Broadcast512_UInt32, element_type: MemorySize::UInt32, is_signed: false, is_broadcast: true },
MemorySizeInfo { size: 4, element_size: 4, memory_size: MemorySize::Broadcast512_Int32, element_type: MemorySize::Int32, is_signed: true, is_broadcast: true },
MemorySizeInfo { size: 8, element_size: 8, memory_size: MemorySize::Broadcast512_UInt52, element_type: MemorySize::UInt52, is_signed: false, is_broadcast: true },
MemorySizeInfo { size: 8, element_size: 8, memory_size: MemorySize::Broadcast512_UInt64, element_type: MemorySize::UInt64, is_signed: false, is_broadcast: true },
MemorySizeInfo { size: 8, element_size: 8, memory_size: MemorySize::Broadcast512_Int64, element_type: MemorySize::Int64, is_signed: true, is_broadcast: true },
MemorySizeInfo { size: 4, element_size: 4, memory_size: MemorySize::Broadcast512_Float32, element_type: MemorySize::Float32, is_signed: true, is_broadcast: true },
MemorySizeInfo { size: 8, element_size: 8, memory_size: MemorySize::Broadcast512_Float64, element_type: MemorySize::Float64, is_signed: true, is_broadcast: true },
MemorySizeInfo { size: 4, element_size: 2, memory_size: MemorySize::Broadcast128_2xInt16, element_type: MemorySize::Int16, is_signed: true, is_broadcast: true },
MemorySizeInfo { size: 4, element_size: 2, memory_size: MemorySize::Broadcast256_2xInt16, element_type: MemorySize::Int16, is_signed: true, is_broadcast: true },
MemorySizeInfo { size: 4, element_size: 2, memory_size: MemorySize::Broadcast512_2xInt16, element_type: MemorySize::Int16, is_signed: true, is_broadcast: true },
MemorySizeInfo { size: 8, element_size: 4, memory_size: MemorySize::Broadcast128_2xUInt32, element_type: MemorySize::UInt32, is_signed: false, is_broadcast: true },
MemorySizeInfo { size: 8, element_size: 4, memory_size: MemorySize::Broadcast256_2xUInt32, element_type: MemorySize::UInt32, is_signed: false, is_broadcast: true },
MemorySizeInfo { size: 8, element_size: 4, memory_size: MemorySize::Broadcast512_2xUInt32, element_type: MemorySize::UInt32, is_signed: false, is_broadcast: true },
MemorySizeInfo { size: 8, element_size: 4, memory_size: MemorySize::Broadcast128_2xInt32, element_type: MemorySize::Int32, is_signed: true, is_broadcast: true },
MemorySizeInfo { size: 8, element_size: 4, memory_size: MemorySize::Broadcast256_2xInt32, element_type: MemorySize::Int32, is_signed: true, is_broadcast: true },
MemorySizeInfo { size: 8, element_size: 4, memory_size: MemorySize::Broadcast512_2xInt32, element_type: MemorySize::Int32, is_signed: true, is_broadcast: true },
MemorySizeInfo { size: 4, element_size: 2, memory_size: MemorySize::Broadcast128_2xBFloat16, element_type: MemorySize::BFloat16, is_signed: true, is_broadcast: true },
MemorySizeInfo { size: 4, element_size: 2, memory_size: MemorySize::Broadcast256_2xBFloat16, element_type: MemorySize::BFloat16, is_signed: true, is_broadcast: true },
MemorySizeInfo { size: 4, element_size: 2, memory_size: MemorySize::Broadcast512_2xBFloat16, element_type: MemorySize::BFloat16, is_signed: true, is_broadcast: true },
];
#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)]
pub struct MemorySizeInfo {
size: u16,
element_size: u16,
memory_size: MemorySize,
element_type: MemorySize,
is_signed: bool,
is_broadcast: bool,
}
#[cfg_attr(feature = "cargo-clippy", allow(clippy::trivially_copy_pass_by_ref))]
impl MemorySizeInfo {
#[cfg_attr(has_must_use, must_use)]
#[inline]
pub fn memory_size(&self) -> MemorySize {
self.memory_size
}
#[cfg_attr(has_must_use, must_use)]
#[inline]
pub fn size(&self) -> usize {
self.size as usize
}
#[cfg_attr(has_must_use, must_use)]
#[inline]
pub fn element_size(&self) -> usize {
self.element_size as usize
}
#[cfg_attr(has_must_use, must_use)]
#[inline]
pub fn element_type(&self) -> MemorySize {
self.element_type
}
#[cfg_attr(has_must_use, must_use)]
#[inline]
pub fn element_type_info(&self) -> &'static Self {
self.element_type().info()
}
#[cfg_attr(has_must_use, must_use)]
#[inline]
pub fn is_signed(&self) -> bool {
self.is_signed
}
#[cfg_attr(has_must_use, must_use)]
#[inline]
pub fn is_broadcast(&self) -> bool {
self.is_broadcast
}
#[cfg_attr(has_must_use, must_use)]
#[inline]
pub fn is_packed(&self) -> bool {
self.element_size < self.size
}
#[cfg_attr(has_must_use, must_use)]
#[inline]
pub fn element_count(&self) -> usize {
if self.element_size == self.size {
1
} else {
self.size as usize / self.element_size as usize
}
}
}
}
#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
#[cfg_attr(all(not(feature = "exhaustive_enums"), has_non_exhaustive), non_exhaustive)]
#[allow(non_camel_case_types)]
pub enum MemorySize {
Unknown = 0,
UInt8 = 1,
UInt16 = 2,
UInt32 = 3,
UInt52 = 4,
UInt64 = 5,
UInt128 = 6,
UInt256 = 7,
UInt512 = 8,
Int8 = 9,
Int16 = 10,
Int32 = 11,
Int64 = 12,
Int128 = 13,
Int256 = 14,
Int512 = 15,
SegPtr16 = 16,
SegPtr32 = 17,
SegPtr64 = 18,
WordOffset = 19,
DwordOffset = 20,
QwordOffset = 21,
Bound16_WordWord = 22,
Bound32_DwordDword = 23,
Bnd32 = 24,
Bnd64 = 25,
Fword6 = 26,
Fword10 = 27,
Float16 = 28,
Float32 = 29,
Float64 = 30,
Float80 = 31,
Float128 = 32,
BFloat16 = 33,
FpuEnv14 = 34,
FpuEnv28 = 35,
FpuState94 = 36,
FpuState108 = 37,
Fxsave_512Byte = 38,
Fxsave64_512Byte = 39,
Xsave = 40,
Xsave64 = 41,
Bcd = 42,
Packed16_UInt8 = 43,
Packed16_Int8 = 44,
Packed32_UInt8 = 45,
Packed32_Int8 = 46,
Packed32_UInt16 = 47,
Packed32_Int16 = 48,
Packed32_BFloat16 = 49,
Packed64_UInt8 = 50,
Packed64_Int8 = 51,
Packed64_UInt16 = 52,
Packed64_Int16 = 53,
Packed64_UInt32 = 54,
Packed64_Int32 = 55,
Packed64_Float16 = 56,
Packed64_Float32 = 57,
Packed128_UInt8 = 58,
Packed128_Int8 = 59,
Packed128_UInt16 = 60,
Packed128_Int16 = 61,
Packed128_UInt32 = 62,
Packed128_Int32 = 63,
Packed128_UInt52 = 64,
Packed128_UInt64 = 65,
Packed128_Int64 = 66,
Packed128_Float16 = 67,
Packed128_Float32 = 68,
Packed128_Float64 = 69,
Packed128_2xBFloat16 = 70,
Packed256_UInt8 = 71,
Packed256_Int8 = 72,
Packed256_UInt16 = 73,
Packed256_Int16 = 74,
Packed256_UInt32 = 75,
Packed256_Int32 = 76,
Packed256_UInt52 = 77,
Packed256_UInt64 = 78,
Packed256_Int64 = 79,
Packed256_UInt128 = 80,
Packed256_Int128 = 81,
Packed256_Float16 = 82,
Packed256_Float32 = 83,
Packed256_Float64 = 84,
Packed256_Float128 = 85,
Packed256_2xBFloat16 = 86,
Packed512_UInt8 = 87,
Packed512_Int8 = 88,
Packed512_UInt16 = 89,
Packed512_Int16 = 90,
Packed512_UInt32 = 91,
Packed512_Int32 = 92,
Packed512_UInt52 = 93,
Packed512_UInt64 = 94,
Packed512_Int64 = 95,
Packed512_UInt128 = 96,
Packed512_Float32 = 97,
Packed512_Float64 = 98,
Packed512_2xBFloat16 = 99,
Broadcast64_UInt32 = 100,
Broadcast64_Int32 = 101,
Broadcast64_Float32 = 102,
Broadcast128_UInt32 = 103,
Broadcast128_Int32 = 104,
Broadcast128_UInt52 = 105,
Broadcast128_UInt64 = 106,
Broadcast128_Int64 = 107,
Broadcast128_Float32 = 108,
Broadcast128_Float64 = 109,
Broadcast256_UInt32 = 110,
Broadcast256_Int32 = 111,
Broadcast256_UInt52 = 112,
Broadcast256_UInt64 = 113,
Broadcast256_Int64 = 114,
Broadcast256_Float32 = 115,
Broadcast256_Float64 = 116,
Broadcast512_UInt32 = 117,
Broadcast512_Int32 = 118,
Broadcast512_UInt52 = 119,
Broadcast512_UInt64 = 120,
Broadcast512_Int64 = 121,
Broadcast512_Float32 = 122,
Broadcast512_Float64 = 123,
Broadcast128_2xInt16 = 124,
Broadcast256_2xInt16 = 125,
Broadcast512_2xInt16 = 126,
Broadcast128_2xUInt32 = 127,
Broadcast256_2xUInt32 = 128,
Broadcast512_2xUInt32 = 129,
Broadcast128_2xInt32 = 130,
Broadcast256_2xInt32 = 131,
Broadcast512_2xInt32 = 132,
Broadcast128_2xBFloat16 = 133,
Broadcast256_2xBFloat16 = 134,
Broadcast512_2xBFloat16 = 135,
}
#[cfg_attr(feature = "cargo-fmt", rustfmt::skip)]
static GEN_DEBUG_MEMORY_SIZE: [&str; 136] = [
"Unknown",
"UInt8",
"UInt16",
"UInt32",
"UInt52",
"UInt64",
"UInt128",
"UInt256",
"UInt512",
"Int8",
"Int16",
"Int32",
"Int64",
"Int128",
"Int256",
"Int512",
"SegPtr16",
"SegPtr32",
"SegPtr64",
"WordOffset",
"DwordOffset",
"QwordOffset",
"Bound16_WordWord",
"Bound32_DwordDword",
"Bnd32",
"Bnd64",
"Fword6",
"Fword10",
"Float16",
"Float32",
"Float64",
"Float80",
"Float128",
"BFloat16",
"FpuEnv14",
"FpuEnv28",
"FpuState94",
"FpuState108",
"Fxsave_512Byte",
"Fxsave64_512Byte",
"Xsave",
"Xsave64",
"Bcd",
"Packed16_UInt8",
"Packed16_Int8",
"Packed32_UInt8",
"Packed32_Int8",
"Packed32_UInt16",
"Packed32_Int16",
"Packed32_BFloat16",
"Packed64_UInt8",
"Packed64_Int8",
"Packed64_UInt16",
"Packed64_Int16",
"Packed64_UInt32",
"Packed64_Int32",
"Packed64_Float16",
"Packed64_Float32",
"Packed128_UInt8",
"Packed128_Int8",
"Packed128_UInt16",
"Packed128_Int16",
"Packed128_UInt32",
"Packed128_Int32",
"Packed128_UInt52",
"Packed128_UInt64",
"Packed128_Int64",
"Packed128_Float16",
"Packed128_Float32",
"Packed128_Float64",
"Packed128_2xBFloat16",
"Packed256_UInt8",
"Packed256_Int8",
"Packed256_UInt16",
"Packed256_Int16",
"Packed256_UInt32",
"Packed256_Int32",
"Packed256_UInt52",
"Packed256_UInt64",
"Packed256_Int64",
"Packed256_UInt128",
"Packed256_Int128",
"Packed256_Float16",
"Packed256_Float32",
"Packed256_Float64",
"Packed256_Float128",
"Packed256_2xBFloat16",
"Packed512_UInt8",
"Packed512_Int8",
"Packed512_UInt16",
"Packed512_Int16",
"Packed512_UInt32",
"Packed512_Int32",
"Packed512_UInt52",
"Packed512_UInt64",
"Packed512_Int64",
"Packed512_UInt128",
"Packed512_Float32",
"Packed512_Float64",
"Packed512_2xBFloat16",
"Broadcast64_UInt32",
"Broadcast64_Int32",
"Broadcast64_Float32",
"Broadcast128_UInt32",
"Broadcast128_Int32",
"Broadcast128_UInt52",
"Broadcast128_UInt64",
"Broadcast128_Int64",
"Broadcast128_Float32",
"Broadcast128_Float64",
"Broadcast256_UInt32",
"Broadcast256_Int32",
"Broadcast256_UInt52",
"Broadcast256_UInt64",
"Broadcast256_Int64",
"Broadcast256_Float32",
"Broadcast256_Float64",
"Broadcast512_UInt32",
"Broadcast512_Int32",
"Broadcast512_UInt52",
"Broadcast512_UInt64",
"Broadcast512_Int64",
"Broadcast512_Float32",
"Broadcast512_Float64",
"Broadcast128_2xInt16",
"Broadcast256_2xInt16",
"Broadcast512_2xInt16",
"Broadcast128_2xUInt32",
"Broadcast256_2xUInt32",
"Broadcast512_2xUInt32",
"Broadcast128_2xInt32",
"Broadcast256_2xInt32",
"Broadcast512_2xInt32",
"Broadcast128_2xBFloat16",
"Broadcast256_2xBFloat16",
"Broadcast512_2xBFloat16",
];
impl fmt::Debug for MemorySize {
#[inline]
fn fmt<'a>(&self, f: &mut fmt::Formatter<'a>) -> fmt::Result {
write!(f, "{}", GEN_DEBUG_MEMORY_SIZE[*self as usize])?;
Ok(())
}
}
impl Default for MemorySize {
#[cfg_attr(has_must_use, must_use)]
#[inline]
fn default() -> Self {
MemorySize::Unknown
}
}
#[cfg(any(feature = "instr_info", feature = "encoder"))]
impl MemorySize {
#[cfg_attr(has_must_use, must_use)]
#[inline]
pub fn info(self) -> &'static MemorySizeInfo {
&MEMORY_SIZE_INFOS[self as usize]
}
#[cfg_attr(has_must_use, must_use)]
#[inline]
pub fn size(self) -> usize {
self.info().size()
}
#[cfg_attr(has_must_use, must_use)]
#[inline]
pub fn element_size(self) -> usize {
self.info().element_size()
}
#[cfg_attr(has_must_use, must_use)]
#[inline]
pub fn element_type(self) -> Self {
self.info().element_type()
}
#[cfg_attr(has_must_use, must_use)]
#[inline]
pub fn element_type_info(self) -> &'static MemorySizeInfo {
self.info().element_type().info()
}
#[cfg_attr(has_must_use, must_use)]
#[inline]
pub fn is_signed(self) -> bool {
self.info().is_signed()
}
#[cfg_attr(has_must_use, must_use)]
#[inline]
pub fn is_packed(self) -> bool {
self.info().is_packed()
}
#[cfg_attr(has_must_use, must_use)]
#[inline]
pub fn element_count(self) -> usize {
self.info().element_count()
}
#[cfg_attr(has_must_use, must_use)]
#[inline]
pub fn is_broadcast(self) -> bool {
use super::iced_constants::IcedConstants;
self >= IcedConstants::FIRST_BROADCAST_MEMORY_SIZE
}
}