Fixed intrinsics types
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Thu, 9 Jul 2020 14:53:30 +0000 (09:53 -0500)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Thu, 9 Jul 2020 14:53:30 +0000 (09:53 -0500)
progs/intrinsics.onyx [new file with mode: 0644]
progs/test.onyx

diff --git a/progs/intrinsics.onyx b/progs/intrinsics.onyx
new file mode 100644 (file)
index 0000000..ceece40
--- /dev/null
@@ -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 ---
index f70b68168dc2fe079721eac505e8b4495a6f2417..3858a7adc5a3d75ce0e869c60a57269bc5e81df4 100644 (file)
@@ -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);