pub mod amdgpu_asm_printer;
pub mod amdgpu_code_object;
pub mod amdgpu_instr_info;
pub mod amdgpu_isel;
pub mod amdgpu_isel_full;
pub mod amdgpu_kernel_lowering;
pub mod amdgpu_mc_encoder;
pub mod amdgpu_register_info;
pub mod amdgpu_target_machine;
pub mod amdgpu_x86_bridge;
pub use amdgpu_asm_printer::AmdgpuAsmPrinter;
pub use amdgpu_code_object::AmdgpuCodeObject;
pub use amdgpu_instr_info::{AmdgpuEncodingFormat, AmdgpuInstrDesc, AmdgpuInstrInfo, AmdgpuOpcode};
pub use amdgpu_isel::AmdgpuInstructionSelector;
pub use amdgpu_isel_full::{
AmdgpuExportTarget, AmdgpuFeatureQuery, AmdgpuFullInstructionSelector, AmdgpuGfxVersion,
AmdgpuImageOp, AmdgpuMemOp,
};
pub use amdgpu_kernel_lowering::{AmdgpuKernelDescriptor, AmdgpuKernelLowering, AmdgpuWorkItemId};
pub use amdgpu_mc_encoder::AmdgpuMCEncoder;
pub use amdgpu_register_info::{AmdgpuRegClass, AmdgpuRegisterDesc, AmdgpuRegisterInfo};
pub use amdgpu_target_machine::{
AmdgpuGeneration, AmdgpuIsaVersion, AmdgpuSubtargetFeatures, AmdgpuTargetMachine,
};
pub const AMDGPU_MAX_SGPRS: u32 = 104;
pub const AMDGPU_MAX_VGPRS: u32 = 256;
pub const AMDGPU_WAVEFRONT_SIZE: u32 = 64;
pub const AMDGPU_LDS_SIZE: u32 = 65536;
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_amdgpu_constants() {
assert_eq!(AMDGPU_MAX_SGPRS, 104);
assert_eq!(AMDGPU_MAX_VGPRS, 256);
assert_eq!(AMDGPU_WAVEFRONT_SIZE, 64);
assert_eq!(AMDGPU_LDS_SIZE, 65536);
}
#[test]
fn test_register_info_exists() {
let info = AmdgpuRegisterInfo::new();
assert_eq!(info.count(), 651);
}
#[test]
fn test_instr_info_exists() {
let info = AmdgpuInstrInfo::new();
assert!(info.count() >= 60);
}
#[test]
fn test_encoder_exists() {
let mut enc = AmdgpuMCEncoder::new();
let bytes = enc.encode(AmdgpuOpcode::SNop, &[0]);
assert_eq!(bytes.len(), 4);
}
#[test]
fn test_target_machine_exists() {
let tm = AmdgpuTargetMachine::from_cpu("gfx900").unwrap();
assert!(tm.is_gcn());
}
}