43 lines
864 B
Rust
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();
|
|
}
|