From 48a1b723f27d50442a0b812f6e1e6a2e0f0c914b Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Thu, 9 Jul 2020 09:53:30 -0500 Subject: [PATCH] Fixed intrinsics types --- progs/intrinsics.onyx | 46 +++++++++++++++++++++++++++++++++++++++ progs/test.onyx | 50 ++----------------------------------------- 2 files changed, 48 insertions(+), 48 deletions(-) create mode 100644 progs/intrinsics.onyx diff --git a/progs/intrinsics.onyx b/progs/intrinsics.onyx new file mode 100644 index 00000000..ceece40f --- /dev/null +++ b/progs/intrinsics.onyx @@ -0,0 +1,46 @@ +memory_size :: proc #intrinsic -> i32 --- +memory_grow :: proc #intrinsic -> i32 --- + +clz_i32 :: proc #intrinsic (val: i32) -> i32 --- +ctz_i32 :: proc #intrinsic (val: i32) -> i32 --- +popcnt_i32 :: proc #intrinsic (val: i32) -> i32 --- +and_i32 :: proc #intrinsic (lhs: i32, rhs: i32) -> i32 --- +or_i32 :: proc #intrinsic (lhs: i32, rhs: i32) -> i32 --- +xor_i32 :: proc #intrinsic (lhs: i32, rhs: i32) -> i32 --- +shl_i32 :: proc #intrinsic (lhs: i32, rhs: i32) -> i32 --- +slr_i32 :: proc #intrinsic (lhs: i32, rhs: i32) -> i32 --- +sar_i32 :: proc #intrinsic (lhs: i32, rhs: i32) -> i32 --- +rotl_i32 :: proc #intrinsic (lhs: i32, rhs: i32) -> i32 --- +rotr_i32 :: proc #intrinsic (lhs: i32, rhs: i32) -> i32 --- + +clz_i64 :: proc #intrinsic (val: i64) -> i64 --- +ctz_i64 :: proc #intrinsic (val: i64) -> i64 --- +popcnt_i64 :: proc #intrinsic (val: i64) -> i64 --- +and_i64 :: proc #intrinsic (lhs: i64, rhs: i64) -> i64 --- +or_i64 :: proc #intrinsic (lhs: i64, rhs: i64) -> i64 --- +xor_i64 :: proc #intrinsic (lhs: i64, rhs: i64) -> i64 --- +shl_i64 :: proc #intrinsic (lhs: i64, rhs: i64) -> i64 --- +slr_i64 :: proc #intrinsic (lhs: i64, rhs: i64) -> i64 --- +sar_i64 :: proc #intrinsic (lhs: i64, rhs: i64) -> i64 --- +rotl_i64 :: proc #intrinsic (lhs: i64, rhs: i64) -> i64 --- +rotr_i64 :: proc #intrinsic (lhs: i64, rhs: i64) -> i64 --- + +abs_f32 :: proc #intrinsic (val: f32) -> f32 --- +ceil_f32 :: proc #intrinsic (val: f32) -> f32 --- +floor_f32 :: proc #intrinsic (val: f32) -> f32 --- +trunc_f32 :: proc #intrinsic (val: f32) -> f32 --- +nearest_f32 :: proc #intrinsic (val: f32) -> f32 --- +sqrt_f32 :: proc #intrinsic (val: f32) -> f32 --- +min_f32 :: proc #intrinsic (lhs: f32, rhs: f32) -> f32 --- +max_f32 :: proc #intrinsic (lhs: f32, rhs: f32) -> f32 --- +copysign_f32 :: proc #intrinsic (lhs: f32, rhs: f32) -> f32 --- + +abs_f64 :: proc #intrinsic (val: f64) -> f64 --- +ceil_f64 :: proc #intrinsic (val: f64) -> f64 --- +floor_f64 :: proc #intrinsic (val: f64) -> f64 --- +trunc_f64 :: proc #intrinsic (val: f64) -> f64 --- +nearest_f64 :: proc #intrinsic (val: f64) -> f64 --- +sqrt_f64 :: proc #intrinsic (val: f64) -> f64 --- +min_f64 :: proc #intrinsic (lhs: f64, rhs: f64) -> f64 --- +max_f64 :: proc #intrinsic (lhs: f64, rhs: f64) -> f64 --- +copysign_f64 :: proc #intrinsic (lhs: f64, rhs: f64) -> f64 --- diff --git a/progs/test.onyx b/progs/test.onyx index f70b6816..3858a7ad 100644 --- a/progs/test.onyx +++ b/progs/test.onyx @@ -1,5 +1,6 @@ use "progs/print_funcs" use "progs/other" +use "progs/intrinsics" something_else :: proc (n: i32) -> i32 { return 100 * n + global_value; @@ -11,54 +12,6 @@ export in_unit_circle :: proc (x: f32, y: f32) -> bool { return (x * x) + (y * y) < 1.0f; } -memory_size :: proc #intrinsic -> i32 --- -memory_grow :: proc #intrinsic -> i32 --- - -clz_i32 :: proc #intrinsic (val: i32) -> i32 --- -ctz_i32 :: proc #intrinsic (val: i32) -> i32 --- -popcnt_i32 :: proc #intrinsic (val: i32) -> i32 --- -and_i32 :: proc #intrinsic (val: i32) -> i32 --- -or_i32 :: proc #intrinsic (val: i32) -> i32 --- -xor_i32 :: proc #intrinsic (val: i32) -> i32 --- -shl_i32 :: proc #intrinsic (val: i32) -> i32 --- -slr_i32 :: proc #intrinsic (val: i32) -> i32 --- -sar_i32 :: proc #intrinsic (val: i32) -> i32 --- -rotl_i32 :: proc #intrinsic (val: i32) -> i32 --- -rotr_i32 :: proc #intrinsic (val: i32) -> i32 --- - -clz_i64 :: proc #intrinsic (val: i64) -> i64 --- -ctz_i64 :: proc #intrinsic (val: i64) -> i64 --- -popcnt_i64 :: proc #intrinsic (val: i64) -> i64 --- -and_i64 :: proc #intrinsic (val: i64) -> i64 --- -or_i64 :: proc #intrinsic (val: i64) -> i64 --- -xor_i64 :: proc #intrinsic (val: i64) -> i64 --- -shl_i64 :: proc #intrinsic (val: i64) -> i64 --- -slr_i64 :: proc #intrinsic (val: i64) -> i64 --- -sar_i64 :: proc #intrinsic (val: i64) -> i64 --- -rotl_i64 :: proc #intrinsic (val: i64) -> i64 --- -rotr_i64 :: proc #intrinsic (val: i64) -> i64 --- - -abs_f32 :: proc #intrinsic (val: f32) -> f32 --- -ceil_f32 :: proc #intrinsic (val: f32) -> f32 --- -floor_f32 :: proc #intrinsic (val: f32) -> f32 --- -trunc_f32 :: proc #intrinsic (val: f32) -> f32 --- -nearest_f32 :: proc #intrinsic (val: f32) -> f32 --- -sqrt_f32 :: proc #intrinsic (val: f32) -> f32 --- -min_f32 :: proc #intrinsic (val: f32) -> f32 --- -max_f32 :: proc #intrinsic (val: f32) -> f32 --- -copysign_f32 :: proc #intrinsic (val: f32) -> f32 --- - -abs_f64 :: proc #intrinsic (val: f64) -> f64 --- -ceil_f64 :: proc #intrinsic (val: f64) -> f64 --- -floor_f64 :: proc #intrinsic (val: f64) -> f64 --- -trunc_f64 :: proc #intrinsic (val: f64) -> f64 --- -nearest_f64 :: proc #intrinsic (val: f64) -> f64 --- -sqrt_f64 :: proc #intrinsic (val: f64) -> f64 --- -min_f64 :: proc #intrinsic (val: f64) -> f64 --- -max_f64 :: proc #intrinsic (val: f64) -> f64 --- -copysign_f64 :: proc #intrinsic (val: f64) -> f64 --- - - // This is the entry point export main2 :: proc { i := 0; @@ -109,6 +62,7 @@ export main2 :: proc { // } export main :: proc { + print_i32(shl_i32(16, 2)); print_f32(sqrt_f32(2.0f)); print_i32(5 * 6 + 2 * 3); -- 2.25.1