Files
pim-rs/pim-os/src/bin/classic_vadd.rs

43 lines
864 B
Rust

#![no_std]
#![no_main]
extern crate alloc;
use core::{arch::asm, fmt::Write};
use nalgebra::SVector;
use pim_os::{pim::vector::F16x1, uart::Uart0};
#[cfg(feature = "X1")]
const ROWS: usize = 256;
#[cfg(feature = "X2")]
const ROWS: usize = 512;
#[cfg(feature = "X3")]
const ROWS: usize = 1024;
#[cfg(feature = "X4")]
const ROWS: usize = 2048;
#[no_mangle]
pub extern "C" fn main() {
let a = SVector::<F16x1, ROWS>::zeros();
let b = SVector::<F16x1, ROWS>::zeros();
for element in a.iter() {
unsafe { asm!("dc civac, {val}", val = in(reg) element) }
}
for element in b.iter() {
unsafe { asm!("dc civac, {val}", val = in(reg) element) }
}
pim_os::m5op::exit(0);
for _ in 0..10 {
let c = a + b;
core::hint::black_box(c);
}
pim_os::m5op::exit(0);
writeln!(Uart0, "Done").unwrap();
}