summaryrefslogtreecommitdiff
path: root/rust/asm/src
diff options
context:
space:
mode:
Diffstat (limited to 'rust/asm/src')
-rw-r--r--rust/asm/src/main.rs45
-rw-r--r--rust/asm/src/main_aarch64.S35
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