mirror of
https://github.com/c3lang/c3c.git
synced 2026-02-27 03:51:18 +00:00
96 lines
3.0 KiB
Plaintext
96 lines
3.0 KiB
Plaintext
// #target: linux-aarch64
|
|
module abi;
|
|
|
|
struct Vector2 {
|
|
float x;
|
|
float y;
|
|
}
|
|
fn Vector2 vector2_zero() @cname("vector2_zero") { return {}; }
|
|
fn Vector2 vector2_one() @cname("vector2_one") { return {}; }
|
|
fn Vector2 vector2_add(Vector2 v1, Vector2 v2) @cname("vector2_add") { return {}; }
|
|
fn Vector2 vector2_add_value(Vector2 v, float add) @cname("vector2_add_value") { return {}; }
|
|
fn Vector2 vector2_subtract(Vector2 v1, Vector2 v2) @cname("vector2_subtract") { return {}; }
|
|
fn Vector2 vector2_subtract_value(Vector2 v, float sub) @cname("vector2_subtract_value") { return {}; }
|
|
|
|
|
|
/* #expect: abi.ll
|
|
|
|
%Vector2 = type { float, float }
|
|
|
|
define %Vector2 @vector2_zero() #0 {
|
|
entry:
|
|
%literal = alloca %Vector2, align 4
|
|
store float 0.000000e+00, ptr %literal, align 4
|
|
%ptradd = getelementptr inbounds i8, ptr %literal, i64 4
|
|
store float 0.000000e+00, ptr %ptradd, align 4
|
|
%0 = load %Vector2, ptr %literal, align 4
|
|
ret %Vector2 %0
|
|
}
|
|
|
|
; Function Attrs:
|
|
define %Vector2 @vector2_one() #0 {
|
|
entry:
|
|
%literal = alloca %Vector2, align 4
|
|
store float 0.000000e+00, ptr %literal, align 4
|
|
%ptradd = getelementptr inbounds i8, ptr %literal, i64 4
|
|
store float 0.000000e+00, ptr %ptradd, align 4
|
|
%0 = load %Vector2, ptr %literal, align 4
|
|
ret %Vector2 %0
|
|
}
|
|
|
|
; Function Attrs:
|
|
define %Vector2 @vector2_add([2 x float] %0, [2 x float] %1) #0 {
|
|
entry:
|
|
%v1 = alloca %Vector2, align 4
|
|
%v2 = alloca %Vector2, align 4
|
|
%literal = alloca %Vector2, align 4
|
|
store [2 x float] %0, ptr %v1, align 4
|
|
store [2 x float] %1, ptr %v2, align 4
|
|
store float 0.000000e+00, ptr %literal, align 4
|
|
%ptradd = getelementptr inbounds i8, ptr %literal, i64 4
|
|
store float 0.000000e+00, ptr %ptradd, align 4
|
|
%2 = load %Vector2, ptr %literal, align 4
|
|
ret %Vector2 %2
|
|
}
|
|
|
|
; Function Attrs:
|
|
define %Vector2 @vector2_add_value([2 x float] %0, float %1) #0 {
|
|
entry:
|
|
%v = alloca %Vector2, align 4
|
|
%literal = alloca %Vector2, align 4
|
|
store [2 x float] %0, ptr %v, align 4
|
|
store float 0.000000e+00, ptr %literal, align 4
|
|
%ptradd = getelementptr inbounds i8, ptr %literal, i64 4
|
|
store float 0.000000e+00, ptr %ptradd, align 4
|
|
%2 = load %Vector2, ptr %literal, align 4
|
|
ret %Vector2 %2
|
|
}
|
|
|
|
; Function Attrs:
|
|
define %Vector2 @vector2_subtract([2 x float] %0, [2 x float] %1) #0 {
|
|
entry:
|
|
%v1 = alloca %Vector2, align 4
|
|
%v2 = alloca %Vector2, align 4
|
|
%literal = alloca %Vector2, align 4
|
|
store [2 x float] %0, ptr %v1, align 4
|
|
store [2 x float] %1, ptr %v2, align 4
|
|
store float 0.000000e+00, ptr %literal, align 4
|
|
%ptradd = getelementptr inbounds i8, ptr %literal, i64 4
|
|
store float 0.000000e+00, ptr %ptradd, align 4
|
|
%2 = load %Vector2, ptr %literal, align 4
|
|
ret %Vector2 %2
|
|
}
|
|
|
|
; Function Attrs:
|
|
define %Vector2 @vector2_subtract_value([2 x float] %0, float %1) #0 {
|
|
entry:
|
|
%v = alloca %Vector2, align 4
|
|
%literal = alloca %Vector2, align 4
|
|
store [2 x float] %0, ptr %v, align 4
|
|
store float 0.000000e+00, ptr %literal, align 4
|
|
%ptradd = getelementptr inbounds i8, ptr %literal, i64 4
|
|
store float 0.000000e+00, ptr %ptradd, align 4
|
|
%2 = load %Vector2, ptr %literal, align 4
|
|
ret %Vector2 %2
|
|
}
|