diff options
| author | Hunter Kvalevog <hunter@kvog.sh> | 2026-10-03 21:45:31 -0500 |
|---|---|---|
| committer | Hunter Kvalevog <hunter@kvog.sh> | 2026-10-03 21:45:31 -0500 |
| commit | 4fab2bee9c914b95601d8c5ebd06834575e4ba6a (patch) | |
| tree | 2926c417a3b2bcd70c9ebb81e37e106a0bc3838b /rust/asm/src | |
| parent | 3b912e557767457e2b4715aa15997a9d25d18a09 (diff) | |
rust/asm: call rustc directly
Diffstat (limited to 'rust/asm/src')
| -rw-r--r-- | rust/asm/src/main.rs | 45 | ||||
| -rw-r--r-- | rust/asm/src/main_aarch64.S | 35 |
2 files changed, 0 insertions, 80 deletions
diff --git a/rust/asm/src/main.rs b/rust/asm/src/main.rs deleted file mode 100644 index 7265deb..0000000 --- a/rust/asm/src/main.rs +++ /dev/null @@ -1,45 +0,0 @@ -// ================================================================================================ -// Rust->assembly interop demo -// -// License: -// Copyright (c) 2026 Hunter Kvalevog -// -// Permission to use, copy, modify, and/or distribute this software for any -// purpose with or without fee is hereby granted. -// -// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -// WITH REGARD TO THIS SOFTWARE. -// ================================================================================================ - -#[repr(C)] -struct Vec3 { - x: f32, - y: f32, - z: f32, -} - -impl Vec3 { - pub fn new(x: f32, y: f32, z: f32) -> Self { - Self { x, y, z } - } -} - -unsafe extern "C" { - fn add_u32(a: u32, b: u32) -> u32; - fn dot_f32v3(a: *const Vec3, b: *const Vec3) -> f32; -} - -fn test_add(a: u32, b: u32) { - let r = unsafe { add_u32(a, b) }; - println!("{a} + {b} = {r}"); -} - -fn test_dot(a: &Vec3, b: &Vec3) { - let r = unsafe { dot_f32v3(a, b) }; - println!("[{}, {}, {}] ⋅ [{}, {}, {}] = {}", a.x, a.y, a.z, b.x, b.y, b.z, r); -} - -fn main() { - test_add(1, 2); - test_dot(&Vec3::new(1.0, 2.0, 3.0), &Vec3::new(4.0, 5.0, 6.0)); -} diff --git a/rust/asm/src/main_aarch64.S b/rust/asm/src/main_aarch64.S deleted file mode 100644 index 56403d5..0000000 --- a/rust/asm/src/main_aarch64.S +++ /dev/null @@ -1,35 +0,0 @@ -// ================================================================================================ -// Rust->assembly interop demo -// -// License: -// Copyright (c) 2026 Hunter Kvalevog -// -// Permission to use, copy, modify, and/or distribute this software for any -// purpose with or without fee is hereby granted. -// -// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -// WITH REGARD TO THIS SOFTWARE. -// ================================================================================================ - -#include "../../../_common/aarch64/common.S" - -TEXT_SEGMENT - -.global SYM(add_u32) -.global SYM(dot_f32v3) - -SYM(add_u32): - add w0, w0, w1 - ret - -SYM(dot_f32v3): - ldp s1, s2, [x0] // a.x, a.y - ldp s3, s4, [x1] // b.x, b.y - ldr s5, [x0, #8] // a.z - ldr s6, [x1, #8] // b.z - - fmul s0, s1, s3 // a.x * b.x - fmadd s0, s2, s4, s0 // + a.y * b.y - fmadd s0, s5, s6, s0 // + a.z * b.z - - ret |