use super::*;
#[test]
fn test_clang_kernel_noop() {
let src = "void test_kernel(void) { }\n";
let kernel = ClangKernel::compile(src, "test_kernel", vec![], 0).unwrap();
assert_eq!(kernel.name(), "test_kernel");
unsafe {
kernel.execute_with_vals(&[], &[]).unwrap();
}
}
#[test]
fn test_clang_kernel_add() {
let src = r#"
void add_kernel(float* restrict a, float* restrict b, float* restrict out) {
out[0] = a[0] + b[0];
}
"#;
let kernel = ClangKernel::compile(src, "add_kernel", vec![], 3).unwrap();
let mut a = [1.0f32];
let mut b = [2.0f32];
let mut out = [0.0f32];
let buffers = vec![a.as_mut_ptr() as *mut u8, b.as_mut_ptr() as *mut u8, out.as_mut_ptr() as *mut u8];
unsafe {
kernel.execute_with_vals(&buffers, &[]).unwrap();
}
assert_eq!(out[0], 3.0);
}