From 232217e4c992b493ea4447772d880cba3952e4a5 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Wed, 9 Sep 2020 22:36:09 -0500 Subject: [PATCH] started working on SIMD functionality --- core/simd_intrinsics.onyx | 205 ++++++++++++++++++++++++++++++ include/onyxastnodes.h | 110 ++++++++++++++++ include/onyxtypes.h | 2 + include/onyxwasm.h | 189 ++++++++++++++++++++++++++++ misc/onyx.sublime-syntax | 2 +- misc/onyx.vim | 7 +- onyx | Bin 620592 -> 641080 bytes progs/simd_test.onyx | 12 +- src/onyxbuiltins.c | 256 +++++++++++++++++++++++++++++++++++++- src/onyxchecker.c | 59 ++------- src/onyxtypes.c | 7 ++ src/onyxwasm.c | 63 ++++++---- 12 files changed, 831 insertions(+), 81 deletions(-) create mode 100644 core/simd_intrinsics.onyx diff --git a/core/simd_intrinsics.onyx b/core/simd_intrinsics.onyx new file mode 100644 index 00000000..31358bca --- /dev/null +++ b/core/simd_intrinsics.onyx @@ -0,0 +1,205 @@ +package simd + +// NOTE: These u8 values must be compile time known values. +v128_const :: proc (b1: u8, b2: u8, b3: u8, b4: u8, + b5: u8, b6: u8, b7: u8, b8: u8, + b9: u8, b10: u8, b11: u8, b12: u8, + b13: u8, b14: u8, b15: u8, b16: u8) -> v128 #intrinsic --- + +i8x16_const :: proc (b1: i8, b2: i8, b3: i8, b4: i8, + b5: i8, b6: i8, b7: i8, b8: i8, + b9: i8, b10: i8, b11: i8, b12: i8, + b13: i8, b14: i8, b15: i8, b16: i8) -> i8x16 #intrinsic --- +i16x8_const :: proc (b1: i16, b2: i16, b3: i16, b4: i16, + b5: i16, b6: i16, b7: i16, b8: i16) -> i16x8 #intrinsic --- +i32x4_const :: proc (b1: i32, b2: i32, b3: i32, b4: i32) -> i32x4 #intrinsic --- +i64x2_const :: proc (b1: i64, b2: i64) -> i64x2 #intrinsic --- +f32x4_const :: proc (b1: f32, b2: f32, b3: f32, b4: f32) -> f32x4 #intrinsic --- +f64x2_const :: proc (b1: f64, b2: f64) -> f64x2 #intrinsic --- + +// NOTE: These u8 values must be compile time known values. +i8x16_shuffle :: proc (v: v128, + b1: u8, b2: u8, b3: u8, b4: u8, + b5: u8, b6: u8, b7: u8, b8: u8, + b9: u8, b10: u8, b11: u8, b12: u8, + b13: u8, b14: u8, b15: u8, b16: u8) -> v128 #intrinsic --- + +i8x16_extract_lane_s :: proc (v: i8x16, l: u8) -> i8 #intrinsic --- +i8x16_extract_lane_u :: proc (v: i8x16, l: u8) -> u8 #intrinsic --- +i8x16_replace_lane :: proc (v: i8x16, l: u8, val: i8) -> i8x16 #intrinsic --- +i16x8_extract_lane_s :: proc (v: i16x8, l: u8) -> i16 #intrinsic --- +i16x8_extract_lane_u :: proc (v: i16x8, l: u8) -> u16 #intrinsic --- +i16x8_replace_lane :: proc (v: i16x8, l: u8, val: i16) -> i16x8 #intrinsic --- +i32x4_extract_lane :: proc (v: i32x4, l: u8) -> i32 #intrinsic --- +i32x4_replace_lane :: proc (v: i32x4, l: u8, val: i32) -> i32x4 #intrinsic --- +i64x2_extract_lane :: proc (v: i64x2, l: u8) -> i64 #intrinsic --- +i64x2_replace_lane :: proc (v: i64x2, l: u8, val: i64) -> i64x2 #intrinsic --- +f32x4_extract_lane :: proc (v: f32x4, l: u8) -> f32 #intrinsic --- +f32x4_replace_lane :: proc (v: f32x4, l: u8, val: f32) -> f32x4 #intrinsic --- +f64x2_extract_lane :: proc (v: f64x2, l: u8) -> f64 #intrinsic --- +f64x2_replace_lane :: proc (v: f64x2, l: u8, val: f64) -> f64x2 #intrinsic --- + +i8x16_swizzle :: proc (v: v128) -> v128 #intrinsic --- +i8x16_splat :: proc (val: i8) -> i8x16 #intrinsic --- +i16x8_splat :: proc (val: i16) -> i16x8 #intrinsic --- +i32x4_splat :: proc (val: i32) -> i32x4 #intrinsic --- +i64x2_splat :: proc (val: i64) -> i64x2 #intrinsic --- +f32x4_splat :: proc (val: f32) -> f32x4 #intrinsic --- +f64x2_splat :: proc (val: f64) -> f64x2 #intrinsic --- + +i8x16_eq :: proc (a: i8x16, b: i8x16) -> i8x16 #intrinsic --- +i8x16_neq :: proc (a: i8x16, b: i8x16) -> i8x16 #intrinsic --- +i8x16_lt_s :: proc (a: i8x16, b: i8x16) -> i8x16 #intrinsic --- +i8x16_lt_u :: proc (a: i8x16, b: i8x16) -> i8x16 #intrinsic --- +i8x16_gt_s :: proc (a: i8x16, b: i8x16) -> i8x16 #intrinsic --- +i8x16_gt_u :: proc (a: i8x16, b: i8x16) -> i8x16 #intrinsic --- +i8x16_le_s :: proc (a: i8x16, b: i8x16) -> i8x16 #intrinsic --- +i8x16_le_u :: proc (a: i8x16, b: i8x16) -> i8x16 #intrinsic --- +i8x16_ge_s :: proc (a: i8x16, b: i8x16) -> i8x16 #intrinsic --- +i8x16_ge_u :: proc (a: i8x16, b: i8x16) -> i8x16 #intrinsic --- + +i16x8_eq :: proc (a: i16x8, b: i16x8) -> i16x8 #intrinsic --- +i16x8_neq :: proc (a: i16x8, b: i16x8) -> i16x8 #intrinsic --- +i16x8_lt_s :: proc (a: i16x8, b: i16x8) -> i16x8 #intrinsic --- +i16x8_lt_u :: proc (a: i16x8, b: i16x8) -> i16x8 #intrinsic --- +i16x8_gt_s :: proc (a: i16x8, b: i16x8) -> i16x8 #intrinsic --- +i16x8_gt_u :: proc (a: i16x8, b: i16x8) -> i16x8 #intrinsic --- +i16x8_le_s :: proc (a: i16x8, b: i16x8) -> i16x8 #intrinsic --- +i16x8_le_u :: proc (a: i16x8, b: i16x8) -> i16x8 #intrinsic --- +i16x8_ge_s :: proc (a: i16x8, b: i16x8) -> i16x8 #intrinsic --- +i16x8_ge_u :: proc (a: i16x8, b: i16x8) -> i16x8 #intrinsic --- + +i32x4_eq :: proc (a: i32x4, b: i32x4) -> i32x4 #intrinsic --- +i32x4_neq :: proc (a: i32x4, b: i32x4) -> i32x4 #intrinsic --- +i32x4_lt_s :: proc (a: i32x4, b: i32x4) -> i32x4 #intrinsic --- +i32x4_lt_u :: proc (a: i32x4, b: i32x4) -> i32x4 #intrinsic --- +i32x4_gt_s :: proc (a: i32x4, b: i32x4) -> i32x4 #intrinsic --- +i32x4_gt_u :: proc (a: i32x4, b: i32x4) -> i32x4 #intrinsic --- +i32x4_le_s :: proc (a: i32x4, b: i32x4) -> i32x4 #intrinsic --- +i32x4_le_u :: proc (a: i32x4, b: i32x4) -> i32x4 #intrinsic --- +i32x4_ge_s :: proc (a: i32x4, b: i32x4) -> i32x4 #intrinsic --- +i32x4_ge_u :: proc (a: i32x4, b: i32x4) -> i32x4 #intrinsic --- + +f32x4_eq :: proc (a: f32x4, b: f32x4) -> i32x4 #intrinsic --- +f32x4_neq :: proc (a: f32x4, b: f32x4) -> i32x4 #intrinsic --- +f32x4_lt :: proc (a: f32x4, b: f32x4) -> i32x4 #intrinsic --- +f32x4_gt :: proc (a: f32x4, b: f32x4) -> i32x4 #intrinsic --- +f32x4_le :: proc (a: f32x4, b: f32x4) -> i32x4 #intrinsic --- +f32x4_ge :: proc (a: f32x4, b: f32x4) -> i32x4 #intrinsic --- + +f64x2_eq :: proc (a: f64x2, b: f64x2) -> f64x2 #intrinsic --- +f64x2_neq :: proc (a: f64x2, b: f64x2) -> f64x2 #intrinsic --- +f64x2_lt :: proc (a: f64x2, b: f64x2) -> f64x2 #intrinsic --- +f64x2_gt :: proc (a: f64x2, b: f64x2) -> f64x2 #intrinsic --- +f64x2_le :: proc (a: f64x2, b: f64x2) -> f64x2 #intrinsic --- +f64x2_ge :: proc (a: f64x2, b: f64x2) -> f64x2 #intrinsic --- + +v128_not :: proc (v: v128) -> v128 #intrinsic --- +v128_and :: proc (a: v128, b: v128) -> v128 #intrinsic --- +v128_andnot :: proc (a: v128, b: v128) -> v128 #intrinsic --- +v128_or :: proc (a: v128, b: v128) -> v128 #intrinsic --- +v128_xor :: proc (a: v128, b: v128) -> v128 #intrinsic --- +v128_bitselect :: proc (a: v128, b: v128, c: v128) -> v128 #intrinsic --- + +i8x16_abs :: proc (a: i8x16) -> i8x16 #intrinsic --- +i8x16_neg :: proc (a: i8x16) -> i8x16 #intrinsic --- +i8x16_any_true :: proc (a: i8x16) -> bool #intrinsic --- +i8x16_all_true :: proc (a: i8x16) -> bool #intrinsic --- +i8x16_bitmask :: proc (a: i8x16, b: i8x16) -> i8x16 #intrinsic --- +i8x16_narrow_i16x8_s :: proc (a: i16x8) -> i8x16 #intrinsic --- +i8x16_narrow_i16x8_u :: proc (a: i16x8) -> i8x16 #intrinsic --- +i8x16_shl :: proc (a: i8x16, s: i32) -> i8x16 #intrinsic --- +i8x16_shr_s :: proc (a: i8x16, s: i32) -> i8x16 #intrinsic --- +i8x16_shr_u :: proc (a: i8x16, s: i32) -> i8x16 #intrinsic --- +i8x16_add :: proc (a: i8x16, b: i8x16) -> i8x16 #intrinsic --- +i8x16_add_sat_s :: proc (a: i8x16, b: i8x16) -> i8x16 #intrinsic --- +i8x16_add_sat_u :: proc (a: i8x16, b: i8x16) -> i8x16 #intrinsic --- +i8x16_sub :: proc (a: i8x16, b: i8x16) -> i8x16 #intrinsic --- +i8x16_sub_sat_s :: proc (a: i8x16, b: i8x16) -> i8x16 #intrinsic --- +i8x16_sub_sat_u :: proc (a: i8x16, b: i8x16) -> i8x16 #intrinsic --- +i8x16_min_s :: proc (a: i8x16, b: i8x16) -> i8x16 #intrinsic --- +i8x16_min_u :: proc (a: i8x16, b: i8x16) -> i8x16 #intrinsic --- +i8x16_max_s :: proc (a: i8x16, b: i8x16) -> i8x16 #intrinsic --- +i8x16_max_u :: proc (a: i8x16, b: i8x16) -> i8x16 #intrinsic --- +i8x16_avgr_u :: proc (a: i8x16) -> i8x16 #intrinsic --- + +i16x8_abs :: proc (a: i16x8) -> i16x8 #intrinsic --- +i16x8_neg :: proc (a: i16x8) -> i16x8 #intrinsic --- +i16x8_any_true :: proc (a: i16x8) -> bool #intrinsic --- +i16x8_all_true :: proc (a: i16x8) -> bool #intrinsic --- +i16x8_bitmask :: proc (a: i16x8, b: i16x8) -> i16x8 #intrinsic --- +i16x8_narrow_i32x4_s :: proc (a: i32x4) -> i16x8 #intrinsic --- +i16x8_narrow_i32x4_u :: proc (a: i32x4) -> i16x8 #intrinsic --- +i16x8_widen_low_i8x16_s :: proc (a: i8x16) -> i16x8 #intrinsic --- +i16x8_widen_high_i8x16_s :: proc (a: i8x16) -> i16x8 #intrinsic --- +i16x8_widen_low_i8x16_u :: proc (a: i8x16) -> i16x8 #intrinsic --- +i16x8_widen_high_i8x16_u :: proc (a: i8x16) -> i16x8 #intrinsic --- +i16x8_shl :: proc (a: i16x8, s: i32) -> i16x8 #intrinsic --- +i16x8_shr_s :: proc (a: i16x8, s: i32) -> i16x8 #intrinsic --- +i16x8_shr_u :: proc (a: i16x8, s: i32) -> i16x8 #intrinsic --- +i16x8_add :: proc (a: i16x8, b: i16x8) -> i16x8 #intrinsic --- +i16x8_add_sat_s :: proc (a: i16x8, b: i16x8) -> i16x8 #intrinsic --- +i16x8_add_sat_u :: proc (a: i16x8, b: i16x8) -> i16x8 #intrinsic --- +i16x8_sub :: proc (a: i16x8, b: i16x8) -> i16x8 #intrinsic --- +i16x8_sub_sat_s :: proc (a: i16x8, b: i16x8) -> i16x8 #intrinsic --- +i16x8_sub_sat_u :: proc (a: i16x8, b: i16x8) -> i16x8 #intrinsic --- +i16x8_mul :: proc (a: i16x8, b: i16x8) -> i16x8 #intrinsic --- +i16x8_min_s :: proc (a: i16x8, b: i16x8) -> i16x8 #intrinsic --- +i16x8_min_u :: proc (a: i16x8, b: i16x8) -> i16x8 #intrinsic --- +i16x8_max_s :: proc (a: i16x8, b: i16x8) -> i16x8 #intrinsic --- +i16x8_max_u :: proc (a: i16x8, b: i16x8) -> i16x8 #intrinsic --- +i16x8_avgr_u :: proc (a: i16x8) -> i16x8 #intrinsic --- + +i32x4_abs :: proc (a: i32x4) -> i32x4 #intrinsic --- +i32x4_neg :: proc (a: i32x4) -> i32x4 #intrinsic --- +i32x4_any_true :: proc (a: i32x4) -> bool #intrinsic --- +i32x4_all_true :: proc (a: i32x4) -> bool #intrinsic --- +i32x4_bitmask :: proc (a: i32x4, b: i32x4) -> i32x4 #intrinsic --- +i32x4_widen_low_i16x8_s :: proc (a: i16x8) -> i32x4 #intrinsic --- +i32x4_widen_high_i16x8_s :: proc (a: i16x8) -> i32x4 #intrinsic --- +i32x4_widen_low_i16x8_u :: proc (a: i16x8) -> i32x4 #intrinsic --- +i32x4_widen_high_i16x8_u :: proc (a: i16x8) -> i32x4 #intrinsic --- +i32x4_shl :: proc (a: i32x4, s: i32) -> i32x4 #intrinsic --- +i32x4_shr_s :: proc (a: i32x4, s: i32) -> i32x4 #intrinsic --- +i32x4_shl_u :: proc (a: i32x4, s: i32) -> i32x4 #intrinsic --- +i32x4_add :: proc (a: i32x4, b: i32x4) -> i32x4 #intrinsic --- +i32x4_sub :: proc (a: i32x4, b: i32x4) -> i32x4 #intrinsic --- +i32x4_mul :: proc (a: i32x4, b: i32x4) -> i32x4 #intrinsic --- +i32x4_min_s :: proc (a: i32x4, b: i32x4) -> i32x4 #intrinsic --- +i32x4_min_u :: proc (a: i32x4, b: i32x4) -> i32x4 #intrinsic --- +i32x4_max_s :: proc (a: i32x4, b: i32x4) -> i32x4 #intrinsic --- +i32x4_max_u :: proc (a: i32x4, b: i32x4) -> i32x4 #intrinsic --- + +i64x2_neg :: proc (a: i64x2) -> i64x2 #intrinsic --- +i64x2_shl :: proc (a: i64x2, s: i32) -> i64x2 #intrinsic --- +i64x2_shr_s :: proc (a: i64x2, s: i32) -> i64x2 #intrinsic --- +i64x2_shr_u :: proc (a: i64x2, s: i32) -> i64x2 #intrinsic --- +i64x2_add :: proc (a: i64x2, b: i64x2) -> i64x2 #intrinsic --- +i64x2_sub :: proc (a: i64x2, b: i64x2) -> i64x2 #intrinsic --- +i64x2_mul :: proc (a: i64x2, b: i64x2) -> i64x2 #intrinsic --- + +f32x4_abs :: proc (a: f32x4) -> f32x4 #intrinsic --- +f32x4_neg :: proc (a: f32x4) -> f32x4 #intrinsic --- +f32x4_sqrt :: proc (a: f32x4) -> f32x4 #intrinsic --- +f32x4_add :: proc (a: f32x4, b: f32x4) -> f32x4 #intrinsic --- +f32x4_sub :: proc (a: f32x4, b: f32x4) -> f32x4 #intrinsic --- +f32x4_mul :: proc (a: f32x4, b: f32x4) -> f32x4 #intrinsic --- +f32x4_div :: proc (a: f32x4, b: f32x4) -> f32x4 #intrinsic --- +f32x4_min :: proc (a: f32x4, b: f32x4) -> f32x4 #intrinsic --- +f32x4_max :: proc (a: f32x4, b: f32x4) -> f32x4 #intrinsic --- + +f64x2_abs :: proc (a: f64x2) -> f64x2 #intrinsic --- +f64x2_neg :: proc (a: f64x2) -> f64x2 #intrinsic --- +f64x2_sqrt :: proc (a: f64x2) -> f64x2 #intrinsic --- +f64x2_add :: proc (a: f64x2, b: f64x2) -> f64x2 #intrinsic --- +f64x2_sub :: proc (a: f64x2, b: f64x2) -> f64x2 #intrinsic --- +f64x2_mul :: proc (a: f64x2, b: f64x2) -> f64x2 #intrinsic --- +f64x2_div :: proc (a: f64x2, b: f64x2) -> f64x2 #intrinsic --- +f64x2_min :: proc (a: f64x2, b: f64x2) -> f64x2 #intrinsic --- +f64x2_max :: proc (a: f64x2, b: f64x2) -> f64x2 #intrinsic --- + +// NOTE: These may be backwards +i32x4_trunc_sat_f32x4_s :: proc (v: f32x4) -> i32x4 #intrinsic --- +i32x4_trunc_sat_f32x4_u :: proc (v: f32x4) -> i32x4 #intrinsic --- +f32x4_convert_i32x4_s :: proc (v: i32x4) -> f32x4 #intrinsic --- +f32x4_convert_i32x4_u :: proc (v: i32x4) -> f32x4 #intrinsic --- diff --git a/include/onyxastnodes.h b/include/onyxastnodes.h index d58a3df7..6907ae26 100644 --- a/include/onyxastnodes.h +++ b/include/onyxastnodes.h @@ -262,6 +262,109 @@ typedef enum OnyxIntrinsic { ONYX_INTRINSIC_F64_TRUNC, ONYX_INTRINSIC_F64_NEAREST, ONYX_INTRINSIC_F64_MIN, ONYX_INTRINSIC_F64_MAX, ONYX_INTRINSIC_F64_COPYSIGN, + + + + ONYX_INTRINSIC_V128_CONST, + ONYX_INTRINSIC_I8X16_CONST, ONYX_INTRINSIC_I16X8_CONST, + ONYX_INTRINSIC_I32X4_CONST, ONYX_INTRINSIC_I64X2_CONST, + ONYX_INTRINSIC_F32X4_CONST, ONYX_INTRINSIC_F64X2_CONST, + ONYX_INTRINSIC_I8X16_SHUFFLE, + + ONYX_INTRINSIC_I8X16_EXTRACT_LANE_S, ONYX_INTRINSIC_I8X16_EXTRACT_LANE_U, ONYX_INTRINSIC_I8X16_REPLACE_LANE, + ONYX_INTRINSIC_I16X8_EXTRACT_LANE_S, ONYX_INTRINSIC_I16X8_EXTRACT_LANE_U, ONYX_INTRINSIC_I16X8_REPLACE_LANE, + ONYX_INTRINSIC_I32X4_EXTRACT_LANE, ONYX_INTRINSIC_I32X4_REPLACE_LANE, + ONYX_INTRINSIC_I64X2_EXTRACT_LANE, ONYX_INTRINSIC_I64X2_REPLACE_LANE, + ONYX_INTRINSIC_F32X4_EXTRACT_LANE, ONYX_INTRINSIC_F32X4_REPLACE_LANE, + ONYX_INTRINSIC_F64X2_EXTRACT_LANE, ONYX_INTRINSIC_F64X2_REPLACE_LANE, + + ONYX_INTRINSIC_I8X16_SWIZZLE, + ONYX_INTRINSIC_I8X16_SPLAT, ONYX_INTRINSIC_I16X8_SPLAT, + ONYX_INTRINSIC_I32X4_SPLAT, ONYX_INTRINSIC_I64X2_SPLAT, + ONYX_INTRINSIC_F32X4_SPLAT, ONYX_INTRINSIC_F64X2_SPLAT, + + ONYX_INTRINSIC_I8X16_EQ, ONYX_INTRINSIC_I8X16_NEQ, + ONYX_INTRINSIC_I8X16_LT_S, ONYX_INTRINSIC_I8X16_LT_U, + ONYX_INTRINSIC_I8X16_GT_S, ONYX_INTRINSIC_I8X16_GT_U, + ONYX_INTRINSIC_I8X16_LE_S, ONYX_INTRINSIC_I8X16_LE_U, + ONYX_INTRINSIC_I8X16_GE_S, ONYX_INTRINSIC_I8X16_GE_U, + + ONYX_INTRINSIC_I16X8_EQ, ONYX_INTRINSIC_I16X8_NEQ, + ONYX_INTRINSIC_I16X8_LT_S, ONYX_INTRINSIC_I16X8_LT_U, + ONYX_INTRINSIC_I16X8_GT_S, ONYX_INTRINSIC_I16X8_GT_U, + ONYX_INTRINSIC_I16X8_LE_S, ONYX_INTRINSIC_I16X8_LE_U, + ONYX_INTRINSIC_I16X8_GE_S, ONYX_INTRINSIC_I16X8_GE_U, + + ONYX_INTRINSIC_I32X4_EQ, ONYX_INTRINSIC_I32X4_NEQ, + ONYX_INTRINSIC_I32X4_LT_S, ONYX_INTRINSIC_I32X4_LT_U, + ONYX_INTRINSIC_I32X4_GT_S, ONYX_INTRINSIC_I32X4_GT_U, + ONYX_INTRINSIC_I32X4_LE_S, ONYX_INTRINSIC_I32X4_LE_U, + ONYX_INTRINSIC_I32X4_GE_S, ONYX_INTRINSIC_I32X4_GE_U, + + ONYX_INTRINSIC_F32X4_EQ, ONYX_INTRINSIC_F32X4_NEQ, + ONYX_INTRINSIC_F32X4_LT, ONYX_INTRINSIC_F32X4_GT, + ONYX_INTRINSIC_F32X4_LE, ONYX_INTRINSIC_F32X4_GE, + + ONYX_INTRINSIC_F64X2_EQ, ONYX_INTRINSIC_F64X2_NEQ, + ONYX_INTRINSIC_F64X2_LT, ONYX_INTRINSIC_F64X2_GT, + ONYX_INTRINSIC_F64X2_LE, ONYX_INTRINSIC_F64X2_GE, + + ONYX_INTRINSIC_V128_NOT, ONYX_INTRINSIC_V128_AND, ONYX_INTRINSIC_V128_ANDNOT, + ONYX_INTRINSIC_V128_OR, ONYX_INTRINSIC_V128_XOR, ONYX_INTRINSIC_V128_BITSELECT, + + ONYX_INTRINSIC_I8X16_ABS, ONYX_INTRINSIC_I8X16_NEG, + ONYX_INTRINSIC_I8X16_ANY_TRUE, ONYX_INTRINSIC_I8X16_ALL_TRUE, + ONYX_INTRINSIC_I8X16_BITMASK, + ONYX_INTRINSIC_I8X16_NARROW_I16X8_S, ONYX_INTRINSIC_I8X16_NARROW_I16X8_U, + ONYX_INTRINSIC_I8X16_SHL, ONYX_INTRINSIC_I8X16_SHR_S, ONYX_INTRINSIC_I8X16_SHR_U, + ONYX_INTRINSIC_I8X16_ADD, ONYX_INTRINSIC_I8X16_ADD_SAT_S, ONYX_INTRINSIC_I8X16_ADD_SAT_U, + ONYX_INTRINSIC_I8X16_SUB, ONYX_INTRINSIC_I8X16_SUB_SAT_S, ONYX_INTRINSIC_I8X16_SUB_SAT_U, + ONYX_INTRINSIC_I8X16_MIN_S, ONYX_INTRINSIC_I8X16_MIN_U, + ONYX_INTRINSIC_I8X16_MAX_S, ONYX_INTRINSIC_I8X16_MAX_U, + ONYX_INTRINSIC_I8X16_AVGR_U, + + ONYX_INTRINSIC_I16X8_ABS, ONYX_INTRINSIC_I16X8_NEG, + ONYX_INTRINSIC_I16X8_ANY_TRUE, ONYX_INTRINSIC_I16X8_ALL_TRUE, + ONYX_INTRINSIC_I16X8_BITMASK, + ONYX_INTRINSIC_I16X8_NARROW_I32X4_S, ONYX_INTRINSIC_I16X8_NARROW_I32X4_U, + ONYX_INTRINSIC_I16X8_WIDEN_LOW_I8X16_S, ONYX_INTRINSIC_I16X8_WIDEN_HIGH_I8X16_S, + ONYX_INTRINSIC_I16X8_WIDEN_LOW_I8X16_U, ONYX_INTRINSIC_I16X8_WIDEN_HIGH_I8X16_U, + ONYX_INTRINSIC_I16X8_SHL, ONYX_INTRINSIC_I16X8_SHR_S, ONYX_INTRINSIC_I16X8_SHR_U, + ONYX_INTRINSIC_I16X8_ADD, ONYX_INTRINSIC_I16X8_ADD_SAT_S, ONYX_INTRINSIC_I16X8_ADD_SAT_U, + ONYX_INTRINSIC_I16X8_SUB, ONYX_INTRINSIC_I16X8_SUB_SAT_S, ONYX_INTRINSIC_I16X8_SUB_SAT_U, + ONYX_INTRINSIC_I16X8_MUL, + ONYX_INTRINSIC_I16X8_MIN_S, ONYX_INTRINSIC_I16X8_MIN_U, + ONYX_INTRINSIC_I16X8_MAX_S, ONYX_INTRINSIC_I16X8_MAX_U, + ONYX_INTRINSIC_I16X8_AVGR_U, + + ONYX_INTRINSIC_I32X4_ABS, ONYX_INTRINSIC_I32X4_NEG, + ONYX_INTRINSIC_I32X4_ANY_TRUE, ONYX_INTRINSIC_I32X4_ALL_TRUE, + ONYX_INTRINSIC_I32X4_BITMASK, + ONYX_INTRINSIC_I32X4_WIDEN_LOW_I16X8_S, ONYX_INTRINSIC_I32X4_WIDEN_HIGH_I16X8_S, + ONYX_INTRINSIC_I32X4_WIDEN_LOW_I16X8_U, ONYX_INTRINSIC_I32X4_WIDEN_HIGH_I16X8_U, + ONYX_INTRINSIC_I32X4_SHL, ONYX_INTRINSIC_I32X4_SHR_S, ONYX_INTRINSIC_I32X4_SHR_U, + ONYX_INTRINSIC_I32X4_ADD, ONYX_INTRINSIC_I32X4_SUB, ONYX_INTRINSIC_I32X4_MUL, + ONYX_INTRINSIC_I32X4_MIN_S, ONYX_INTRINSIC_I32X4_MIN_U, + ONYX_INTRINSIC_I32X4_MAX_S, ONYX_INTRINSIC_I32X4_MAX_U, + + ONYX_INTRINSIC_I64X2_NEG, ONYX_INTRINSIC_I64X2_SHL, + ONYX_INTRINSIC_I64X2_SHR_S, ONYX_INTRINSIC_I64X2_SHR_U, + ONYX_INTRINSIC_I64X2_ADD, ONYX_INTRINSIC_I64X2_SUB, ONYX_INTRINSIC_I64X2_MUL, + + ONYX_INTRINSIC_F32X4_ABS, ONYX_INTRINSIC_F32X4_NEG, ONYX_INTRINSIC_F32X4_SQRT, + ONYX_INTRINSIC_F32X4_ADD, ONYX_INTRINSIC_F32X4_SUB, + ONYX_INTRINSIC_F32X4_MUL, ONYX_INTRINSIC_F32X4_DIV, + ONYX_INTRINSIC_F32X4_MIN, ONYX_INTRINSIC_F32X4_MAX, + + ONYX_INTRINSIC_F64X2_ABS, ONYX_INTRINSIC_F64X2_NEG, ONYX_INTRINSIC_F64X2_SQRT, + ONYX_INTRINSIC_F64X2_ADD, ONYX_INTRINSIC_F64X2_SUB, + ONYX_INTRINSIC_F64X2_MUL, ONYX_INTRINSIC_F64X2_DIV, + ONYX_INTRINSIC_F64X2_MIN, ONYX_INTRINSIC_F64X2_MAX, + + ONYX_INTRINSIC_I32X4_TRUNC_SAT_F32X4_S, + ONYX_INTRINSIC_I32X4_TRUNC_SAT_F32X4_U, + ONYX_INTRINSIC_F32X4_CONVERT_I32X4_S, + ONYX_INTRINSIC_F32X4_CONVERT_I32X4_U, } OnyxIntrinsic; typedef enum CallingConvention { @@ -625,6 +728,13 @@ typedef struct BuiltinSymbol { extern const BuiltinSymbol builtin_symbols[]; +typedef struct IntrinsicMap { + char* name; + OnyxIntrinsic intrinsic; +} IntrinsicMap; + +extern bh_table(OnyxIntrinsic) intrinsic_table; + void initialize_builtins(bh_allocator a, ProgramInfo* prog); diff --git a/include/onyxtypes.h b/include/onyxtypes.h index 7f985237..f84609ad 100644 --- a/include/onyxtypes.h +++ b/include/onyxtypes.h @@ -28,6 +28,7 @@ enum BasicKind { Basic_Kind_I64X2, Basic_Kind_F32X4, Basic_Kind_F64X2, + Basic_Kind_V128, }; enum BasicFlag { @@ -146,6 +147,7 @@ b32 type_is_small_integer(Type* type); b32 type_is_integer(Type* type); b32 type_is_numeric(Type* type); b32 type_is_compound(Type* type); +b32 type_is_simd(Type* type); b32 type_results_in_void(Type* type); b32 type_is_array_accessible(Type* type); b32 type_is_structlike(Type* type); diff --git a/include/onyxwasm.h b/include/onyxwasm.h index 2328a04d..88d3e817 100644 --- a/include/onyxwasm.h +++ b/include/onyxwasm.h @@ -16,6 +16,7 @@ typedef struct WasmFuncType { WasmType param_types[]; } WasmFuncType; +#define SIMD_INSTR_MASK 0x10000 typedef enum WasmInstructionType { WI_UNREACHABLE = 0x00, @@ -221,6 +222,194 @@ typedef enum WasmInstructionType { WI_I64_EXTEND_8_S = 0xC2, WI_I64_EXTEND_16_S = 0xC3, WI_I64_EXTEND_32_S = 0xC4, + + + + WI_V128_LOAD = SIMD_INSTR_MASK | 0, + WI_V128_STORE = SIMD_INSTR_MASK | 11, + + WI_V128_CONST = SIMD_INSTR_MASK | 12, + + WI_I8X16_SHUFFLE = SIMD_INSTR_MASK | 13, + + WI_I8X16_EXTRACT_LANE_S = SIMD_INSTR_MASK | 21, + WI_I8X16_EXTRACT_LANE_U = SIMD_INSTR_MASK | 22, + WI_I8X16_REPLACE_LANE = SIMD_INSTR_MASK | 23, + WI_I16X8_EXTRACT_LANE_S = SIMD_INSTR_MASK | 24, + WI_I16X8_EXTRACT_LANE_U = SIMD_INSTR_MASK | 25, + WI_I16X8_REPLACE_LANE = SIMD_INSTR_MASK | 26, + WI_I32X4_EXTRACT_LANE = SIMD_INSTR_MASK | 27, + WI_I32X4_REPLACE_LANE = SIMD_INSTR_MASK | 28, + WI_I64X2_EXTRACT_LANE = SIMD_INSTR_MASK | 29, + WI_I64X2_REPLACE_LANE = SIMD_INSTR_MASK | 30, + WI_F32X4_EXTRACT_LANE = SIMD_INSTR_MASK | 31, + WI_F32X4_REPLACE_LANE = SIMD_INSTR_MASK | 32, + WI_F64X2_EXTRACT_LANE = SIMD_INSTR_MASK | 33, + WI_F64X2_REPLACE_LANE = SIMD_INSTR_MASK | 34, + + WI_I8X16_SWIZZLE = SIMD_INSTR_MASK | 14, + WI_I8X16_SPLAT = SIMD_INSTR_MASK | 15, + WI_I16X8_SPLAT = SIMD_INSTR_MASK | 16, + WI_I32X4_SPLAT = SIMD_INSTR_MASK | 17, + WI_I64X2_SPLAT = SIMD_INSTR_MASK | 18, + WI_F32X4_SPLAT = SIMD_INSTR_MASK | 19, + WI_F64X2_SPLAT = SIMD_INSTR_MASK | 20, + + WI_I8X16_EQ = SIMD_INSTR_MASK | 35, + WI_I8X16_NEQ = SIMD_INSTR_MASK | 36, + WI_I8X16_LT_S = SIMD_INSTR_MASK | 37, + WI_I8X16_LT_U = SIMD_INSTR_MASK | 38, + WI_I8X16_GT_S = SIMD_INSTR_MASK | 39, + WI_I8X16_GT_U = SIMD_INSTR_MASK | 40, + WI_I8X16_LE_S = SIMD_INSTR_MASK | 41, + WI_I8X16_LE_U = SIMD_INSTR_MASK | 42, + WI_I8X16_GE_S = SIMD_INSTR_MASK | 43, + WI_I8X16_GE_U = SIMD_INSTR_MASK | 44, + + WI_I16X8_EQ = SIMD_INSTR_MASK | 45, + WI_I16X8_NEQ = SIMD_INSTR_MASK | 46, + WI_I16X8_LT_S = SIMD_INSTR_MASK | 47, + WI_I16X8_LT_U = SIMD_INSTR_MASK | 48, + WI_I16X8_GT_S = SIMD_INSTR_MASK | 49, + WI_I16X8_GT_U = SIMD_INSTR_MASK | 50, + WI_I16X8_LE_S = SIMD_INSTR_MASK | 51, + WI_I16X8_LE_U = SIMD_INSTR_MASK | 52, + WI_I16X8_GE_S = SIMD_INSTR_MASK | 53, + WI_I16X8_GE_U = SIMD_INSTR_MASK | 54, + + WI_I32X4_EQ = SIMD_INSTR_MASK | 55, + WI_I32X4_NEQ = SIMD_INSTR_MASK | 56, + WI_I32X4_LT_S = SIMD_INSTR_MASK | 57, + WI_I32X4_LT_U = SIMD_INSTR_MASK | 58, + WI_I32X4_GT_S = SIMD_INSTR_MASK | 59, + WI_I32X4_GT_U = SIMD_INSTR_MASK | 60, + WI_I32X4_LE_S = SIMD_INSTR_MASK | 61, + WI_I32X4_LE_U = SIMD_INSTR_MASK | 62, + WI_I32X4_GE_S = SIMD_INSTR_MASK | 63, + WI_I32X4_GE_U = SIMD_INSTR_MASK | 64, + + WI_F32X4_EQ = SIMD_INSTR_MASK | 65, + WI_F32X4_NEQ = SIMD_INSTR_MASK | 66, + WI_F32X4_LT = SIMD_INSTR_MASK | 67, + WI_F32X4_GT = SIMD_INSTR_MASK | 68, + WI_F32X4_LE = SIMD_INSTR_MASK | 69, + WI_F32X4_GE = SIMD_INSTR_MASK | 70, + + WI_F64X2_EQ = SIMD_INSTR_MASK | 71, + WI_F64X2_NEQ = SIMD_INSTR_MASK | 72, + WI_F64X2_LT = SIMD_INSTR_MASK | 73, + WI_F64X2_GT = SIMD_INSTR_MASK | 74, + WI_F64X2_LE = SIMD_INSTR_MASK | 75, + WI_F64X2_GE = SIMD_INSTR_MASK | 76, + + WI_V128_NOT = SIMD_INSTR_MASK | 77, + WI_V128_AND = SIMD_INSTR_MASK | 78, + WI_V128_ANDNOT = SIMD_INSTR_MASK | 79, + WI_V128_OR = SIMD_INSTR_MASK | 80, + WI_V128_XOR = SIMD_INSTR_MASK | 81, + WI_V128_BITSELECT = SIMD_INSTR_MASK | 82, + + WI_I8X16_ABS = SIMD_INSTR_MASK | 96, + WI_I8X16_NEG = SIMD_INSTR_MASK | 97, + WI_I8X16_ANY_TRUE = SIMD_INSTR_MASK | 98, + WI_I8X16_ALL_TRUE = SIMD_INSTR_MASK | 99, + WI_I8X16_BITMASK = SIMD_INSTR_MASK | 100, + WI_I8X16_NARROW_I16X8_S = SIMD_INSTR_MASK | 101, + WI_I8X16_NARROW_I16X8_U = SIMD_INSTR_MASK | 102, + WI_I8X16_SHL = SIMD_INSTR_MASK | 107, + WI_I8X16_SHR_S = SIMD_INSTR_MASK | 108, + WI_I8X16_SHR_U = SIMD_INSTR_MASK | 109, + WI_I8X16_ADD = SIMD_INSTR_MASK | 110, + WI_I8X16_ADD_SAT_S = SIMD_INSTR_MASK | 111, + WI_I8X16_ADD_SAT_U = SIMD_INSTR_MASK | 112, + WI_I8X16_SUB = SIMD_INSTR_MASK | 113, + WI_I8X16_SUB_SAT_S = SIMD_INSTR_MASK | 114, + WI_I8X16_SUB_SAT_U = SIMD_INSTR_MASK | 115, + WI_I8X16_MIN_S = SIMD_INSTR_MASK | 118, + WI_I8X16_MIN_U = SIMD_INSTR_MASK | 119, + WI_I8X16_MAX_S = SIMD_INSTR_MASK | 120, + WI_I8X16_MAX_U = SIMD_INSTR_MASK | 121, + WI_I8X16_AVGR_U = SIMD_INSTR_MASK | 123, + + WI_I16X8_ABS = SIMD_INSTR_MASK | 128, + WI_I16X8_NEG = SIMD_INSTR_MASK | 129, + WI_I16X8_ANY_TRUE = SIMD_INSTR_MASK | 130, + WI_I16X8_ALL_TRUE = SIMD_INSTR_MASK | 131, + WI_I16X8_BITMASK = SIMD_INSTR_MASK | 132, + WI_I16X8_NARROW_I32X4_S = SIMD_INSTR_MASK | 133, + WI_I16X8_NARROW_I32X4_U = SIMD_INSTR_MASK | 134, + WI_I16X8_WIDEN_LOW_I8X16_S = SIMD_INSTR_MASK | 135, + WI_I16X8_WIDEN_HIGH_I8X16_S = SIMD_INSTR_MASK | 136, + WI_I16X8_WIDEN_LOW_I8X16_U = SIMD_INSTR_MASK | 137, + WI_I16X8_WIDEN_HIGH_I8X16_U = SIMD_INSTR_MASK | 138, + WI_I16X8_SHL = SIMD_INSTR_MASK | 139, + WI_I16X8_SHR_S = SIMD_INSTR_MASK | 140, + WI_I16X8_SHR_U = SIMD_INSTR_MASK | 141, + WI_I16X8_ADD = SIMD_INSTR_MASK | 142, + WI_I16X8_ADD_SAT_S = SIMD_INSTR_MASK | 143, + WI_I16X8_ADD_SAT_U = SIMD_INSTR_MASK | 144, + WI_I16X8_SUB = SIMD_INSTR_MASK | 145, + WI_I16X8_SUB_SAT_S = SIMD_INSTR_MASK | 146, + WI_I16X8_SUB_SAT_U = SIMD_INSTR_MASK | 147, + WI_I16X8_MUL = SIMD_INSTR_MASK | 149, + WI_I16X8_MIN_S = SIMD_INSTR_MASK | 150, + WI_I16X8_MIN_U = SIMD_INSTR_MASK | 151, + WI_I16X8_MAX_S = SIMD_INSTR_MASK | 152, + WI_I16X8_MAX_U = SIMD_INSTR_MASK | 153, + WI_I16X8_AVGR_U = SIMD_INSTR_MASK | 155, + + WI_I32X4_ABS = SIMD_INSTR_MASK | 160, + WI_I32X4_NEG = SIMD_INSTR_MASK | 161, + WI_I32X4_ANY_TRUE = SIMD_INSTR_MASK | 162, + WI_I32X4_ALL_TRUE = SIMD_INSTR_MASK | 163, + WI_I32X4_BITMASK = SIMD_INSTR_MASK | 164, + WI_I32X4_WIDEN_LOW_I16X8_S = SIMD_INSTR_MASK | 167, + WI_I32X4_WIDEN_HIGH_I16X8_S = SIMD_INSTR_MASK | 168, + WI_I32X4_WIDEN_LOW_I16X8_U = SIMD_INSTR_MASK | 169, + WI_I32X4_WIDEN_HIGH_I16X8_U = SIMD_INSTR_MASK | 170, + WI_I32X4_SHL = SIMD_INSTR_MASK | 171, + WI_I32X4_SHR_S = SIMD_INSTR_MASK | 172, + WI_I32X4_SHR_U = SIMD_INSTR_MASK | 173, + WI_I32X4_ADD = SIMD_INSTR_MASK | 174, + WI_I32X4_SUB = SIMD_INSTR_MASK | 177, + WI_I32X4_MUL = SIMD_INSTR_MASK | 181, + WI_I32X4_MIN_S = SIMD_INSTR_MASK | 182, + WI_I32X4_MIN_U = SIMD_INSTR_MASK | 183, + WI_I32X4_MAX_S = SIMD_INSTR_MASK | 184, + WI_I32X4_MAX_U = SIMD_INSTR_MASK | 185, + + WI_I64X2_NEG = SIMD_INSTR_MASK | 193, + WI_I64X2_SHL = SIMD_INSTR_MASK | 203, + WI_I64X2_SHR_S = SIMD_INSTR_MASK | 204, + WI_I64X2_SHR_U = SIMD_INSTR_MASK | 205, + WI_I64X2_ADD = SIMD_INSTR_MASK | 206, + WI_I64X2_SUB = SIMD_INSTR_MASK | 209, + WI_I64X2_MUL = SIMD_INSTR_MASK | 213, + + WI_F32X4_ABS = SIMD_INSTR_MASK | 224, + WI_F32X4_NEG = SIMD_INSTR_MASK | 225, + WI_F32X4_SQRT = SIMD_INSTR_MASK | 227, + WI_F32X4_ADD = SIMD_INSTR_MASK | 228, + WI_F32X4_SUB = SIMD_INSTR_MASK | 229, + WI_F32X4_MUL = SIMD_INSTR_MASK | 230, + WI_F32X4_DIV = SIMD_INSTR_MASK | 231, + WI_F32X4_MIN = SIMD_INSTR_MASK | 232, + WI_F32X4_MAX = SIMD_INSTR_MASK | 233, + + WI_F64X2_ABS = SIMD_INSTR_MASK | 236, + WI_F64X2_NEG = SIMD_INSTR_MASK | 237, + WI_F64X2_SQRT = SIMD_INSTR_MASK | 239, + WI_F64X2_ADD = SIMD_INSTR_MASK | 240, + WI_F64X2_SUB = SIMD_INSTR_MASK | 241, + WI_F64X2_MUL = SIMD_INSTR_MASK | 242, + WI_F64X2_DIV = SIMD_INSTR_MASK | 243, + WI_F64X2_MIN = SIMD_INSTR_MASK | 244, + WI_F64X2_MAX = SIMD_INSTR_MASK | 245, + + WI_I32X4_TRUNC_SAT_F32X4_S = SIMD_INSTR_MASK | 248, + WI_I32X4_TRUNC_SAT_F32X4_U = SIMD_INSTR_MASK | 249, + WI_F32X4_CONVERT_I32X4_S = SIMD_INSTR_MASK | 250, + WI_F32X4_CONVERT_I32X4_U = SIMD_INSTR_MASK | 251, } WasmInstructionType; typedef union { diff --git a/misc/onyx.sublime-syntax b/misc/onyx.sublime-syntax index 5bbabea6..c9b92b1b 100644 --- a/misc/onyx.sublime-syntax +++ b/misc/onyx.sublime-syntax @@ -32,7 +32,7 @@ contexts: - match: '\b(bool|void|i8|u8|i16|u16|i32|u32|i64|u64|f32|f64|rawptr)\b' scope: keyword.control.onyx - - match: '\b(i8x16|i16x8|i32x4|i64x2|f32x4|f64x2)\b' + - match: '\b(i8x16|i16x8|i32x4|i64x2|f32x4|f64x2|v128)\b' scope: keyword.control.onyx - match: '\b(true|false|null|context)\b' diff --git a/misc/onyx.vim b/misc/onyx.vim index 99bea6e5..1b707670 100644 --- a/misc/onyx.vim +++ b/misc/onyx.vim @@ -25,12 +25,7 @@ syn keyword onyxType i64 u64 syn keyword onyxType f32 syn keyword onyxType f64 syn keyword onyxType rawptr -syn keyword onyxType i8x16 -syn keyword onyxType i16x8 -syn keyword onyxType i32x4 -syn keyword onyxType i64x2 -syn keyword onyxType f32x4 -syn keyword onyxType f64x2 +syn keyword onyxType i8x16 i16x8 i32x4 i64x2 f32x4 f64x2 v128 syn keyword onyxConstant true false null diff --git a/onyx b/onyx index 0a728275f0036df5086b0f2a7d399089058ae162..3c270817360993f357943ea61cde9c2f7e9c7889 100755 GIT binary patch delta 228960 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 s%XC`DL(}5`ScM}F>9bb^rhX delta 210622 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 diff --git a/progs/simd_test.onyx b/progs/simd_test.onyx index cf59c925..8cd9df61 100644 --- a/progs/simd_test.onyx +++ b/progs/simd_test.onyx @@ -1,10 +1,20 @@ package main #include_file "core/std/wasi" +#include_file "core/simd_intrinsics" use package core use package simd +dummy :: proc (p: ^i32x4) { + v := cast(^i32x4) calloc(sizeof i32x4); + y := *p; + + *v = *p; +} + main :: proc (args: [] cstring) { - x : i32x4; + x := i32x4_splat(10); + d : i8x16; + dummy(^x); } diff --git a/src/onyxbuiltins.c b/src/onyxbuiltins.c index fa1bb321..0869e6cd 100644 --- a/src/onyxbuiltins.c +++ b/src/onyxbuiltins.c @@ -17,13 +17,14 @@ AstBasicType basic_type_f32 = { Ast_Kind_Basic_Type, 0, NULL, "f32" , &basi AstBasicType basic_type_f64 = { Ast_Kind_Basic_Type, 0, NULL, "f64" , &basic_types[Basic_Kind_F64] }; AstBasicType basic_type_rawptr = { Ast_Kind_Basic_Type, 0, NULL, "rawptr", &basic_types[Basic_Kind_Rawptr] }; -static OnyxToken simd_token = { Token_Type_Symbol, 14, "simd intrinsic", { 0 } }; +static OnyxToken simd_token = { Token_Type_Symbol, 0, "", { 0 } }; AstBasicType basic_type_i8x16 = { Ast_Kind_Basic_Type, 0, &simd_token, "i8x16", &basic_types[Basic_Kind_I8X16] }; AstBasicType basic_type_i16x8 = { Ast_Kind_Basic_Type, 0, &simd_token, "i16x8", &basic_types[Basic_Kind_I16X8] }; AstBasicType basic_type_i32x4 = { Ast_Kind_Basic_Type, 0, &simd_token, "i32x4", &basic_types[Basic_Kind_I32X4] }; AstBasicType basic_type_i64x2 = { Ast_Kind_Basic_Type, 0, &simd_token, "i64x2", &basic_types[Basic_Kind_I64X2] }; AstBasicType basic_type_f32x4 = { Ast_Kind_Basic_Type, 0, &simd_token, "f32x4", &basic_types[Basic_Kind_F32X4] }; AstBasicType basic_type_f64x2 = { Ast_Kind_Basic_Type, 0, &simd_token, "f64x2", &basic_types[Basic_Kind_F64X2] }; +AstBasicType basic_type_v128 = { Ast_Kind_Basic_Type, 0, &simd_token, "v128", &basic_types[Basic_Kind_V128] }; static OnyxToken builtin_package_token = { Token_Type_Symbol, 7, "builtin ", { 0 } }; AstNode builtin_package_node = { Ast_Kind_Symbol, Ast_Flag_No_Clone, &builtin_package_token, NULL }; @@ -58,6 +59,7 @@ const BuiltinSymbol builtin_symbols[] = { { "simd", "i64x2", (AstNode *) &basic_type_i64x2 }, { "simd", "f32x4", (AstNode *) &basic_type_f32x4 }, { "simd", "f64x2", (AstNode *) &basic_type_f64x2 }, + { "simd", "v128", (AstNode *) &basic_type_v128 }, { "builtin", "__heap_start", (AstNode *) &builtin_heap_start }, { "builtin", "__stack_top", (AstNode *) &builtin_stack_top }, @@ -65,6 +67,249 @@ const BuiltinSymbol builtin_symbols[] = { { NULL, NULL, NULL }, }; +bh_table(OnyxIntrinsic) intrinsic_table; + +static IntrinsicMap builtin_intrinsics[] = { + { "memory_size", ONYX_INTRINSIC_MEMORY_SIZE }, + { "memory_grow", ONYX_INTRINSIC_MEMORY_GROW }, + + { "clz_i32", ONYX_INTRINSIC_I32_CLZ }, + { "ctz_i32", ONYX_INTRINSIC_I32_CTZ }, + { "popcnt_i32", ONYX_INTRINSIC_I32_POPCNT }, + { "and_i32", ONYX_INTRINSIC_I32_AND }, + { "or_i32", ONYX_INTRINSIC_I32_OR }, + { "xor_i32", ONYX_INTRINSIC_I32_XOR }, + { "shl_i32", ONYX_INTRINSIC_I32_SHL }, + { "slr_i32", ONYX_INTRINSIC_I32_SLR }, + { "sar_i32", ONYX_INTRINSIC_I32_SAR }, + { "rotl_i32", ONYX_INTRINSIC_I32_ROTL }, + { "rotr_i32", ONYX_INTRINSIC_I32_ROTR }, + + { "clz_i64", ONYX_INTRINSIC_I64_CLZ }, + { "ctz_i64", ONYX_INTRINSIC_I64_CTZ }, + { "popcnt_i64", ONYX_INTRINSIC_I64_POPCNT }, + { "and_i64", ONYX_INTRINSIC_I64_AND }, + { "or_i64", ONYX_INTRINSIC_I64_OR }, + { "xor_i64", ONYX_INTRINSIC_I64_XOR }, + { "shl_i64", ONYX_INTRINSIC_I64_SHL }, + { "slr_i64", ONYX_INTRINSIC_I64_SLR }, + { "sar_i64", ONYX_INTRINSIC_I64_SAR }, + { "rotl_i64", ONYX_INTRINSIC_I64_ROTL }, + { "rotr_i64", ONYX_INTRINSIC_I64_ROTR }, + + { "abs_f32", ONYX_INTRINSIC_F32_ABS }, + { "ceil_f32", ONYX_INTRINSIC_F32_CEIL }, + { "floor_f32", ONYX_INTRINSIC_F32_FLOOR }, + { "trunc_f32", ONYX_INTRINSIC_F32_TRUNC }, + { "nearest_f32", ONYX_INTRINSIC_F32_NEAREST }, + { "sqrt_f32", ONYX_INTRINSIC_F32_SQRT }, + { "min_f32", ONYX_INTRINSIC_F32_MIN }, + { "max_f32", ONYX_INTRINSIC_F32_MAX }, + { "copysign_f32", ONYX_INTRINSIC_F32_COPYSIGN }, + + { "abs_f64", ONYX_INTRINSIC_F64_ABS }, + { "ceil_f64", ONYX_INTRINSIC_F64_CEIL }, + { "floor_f64", ONYX_INTRINSIC_F64_FLOOR }, + { "trunc_f64", ONYX_INTRINSIC_F64_TRUNC }, + { "nearest_f64", ONYX_INTRINSIC_F64_NEAREST }, + { "sqrt_f64", ONYX_INTRINSIC_F64_SQRT }, + { "min_f64", ONYX_INTRINSIC_F64_MIN }, + { "max_f64", ONYX_INTRINSIC_F64_MAX }, + { "copysign_f64", ONYX_INTRINSIC_F64_COPYSIGN }, + + + // SIMD Intrinsics + { "v128_const", ONYX_INTRINSIC_V128_CONST }, + { "i8x16_const", ONYX_INTRINSIC_I8X16_CONST }, + { "i16x8_const", ONYX_INTRINSIC_I16X8_CONST }, + { "i32x4_const", ONYX_INTRINSIC_I32X4_CONST }, + { "i64x2_const", ONYX_INTRINSIC_I64X2_CONST }, + { "f32x4_const", ONYX_INTRINSIC_F32X4_CONST }, + { "f64x2_const", ONYX_INTRINSIC_F64X2_CONST }, + { "i8x16_shuffle", ONYX_INTRINSIC_I8X16_SHUFFLE }, + + { "i8x16_extract_lane_s", ONYX_INTRINSIC_I8X16_EXTRACT_LANE_S }, + { "i8x16_extract_lane_u", ONYX_INTRINSIC_I8X16_EXTRACT_LANE_U }, + { "i8x16_replace_lane", ONYX_INTRINSIC_I8X16_REPLACE_LANE }, + { "i16x8_extract_lane_s", ONYX_INTRINSIC_I16X8_EXTRACT_LANE_S }, + { "i16x8_extract_lane_u", ONYX_INTRINSIC_I16X8_EXTRACT_LANE_U }, + { "i16x8_replace_lane", ONYX_INTRINSIC_I16X8_REPLACE_LANE }, + { "i32x4_extract_lane", ONYX_INTRINSIC_I32X4_EXTRACT_LANE }, + { "i32x4_replace_lane", ONYX_INTRINSIC_I32X4_REPLACE_LANE }, + { "i64x2_extract_lane", ONYX_INTRINSIC_I64X2_EXTRACT_LANE }, + { "i64x2_replace_lane", ONYX_INTRINSIC_I64X2_REPLACE_LANE }, + { "f32x4_extract_lane", ONYX_INTRINSIC_F32X4_EXTRACT_LANE }, + { "f32x4_replace_lane", ONYX_INTRINSIC_F32X4_REPLACE_LANE }, + { "f64x2_extract_lane", ONYX_INTRINSIC_F64X2_EXTRACT_LANE }, + { "f64x2_replace_lane", ONYX_INTRINSIC_F64X2_REPLACE_LANE }, + + { "i8x16_swizzle", ONYX_INTRINSIC_I8X16_SWIZZLE }, + { "i8x16_splat", ONYX_INTRINSIC_I8X16_SPLAT }, + { "i16x8_splat", ONYX_INTRINSIC_I16X8_SPLAT }, + { "i32x4_splat", ONYX_INTRINSIC_I32X4_SPLAT }, + { "i64x2_splat", ONYX_INTRINSIC_I64X2_SPLAT }, + { "f32x4_splat", ONYX_INTRINSIC_F32X4_SPLAT }, + { "f64x2_splat", ONYX_INTRINSIC_F64X2_SPLAT }, + + { "i8x16_eq", ONYX_INTRINSIC_I8X16_EQ }, + { "i8x16_neq", ONYX_INTRINSIC_I8X16_NEQ }, + { "i8x16_lt_s", ONYX_INTRINSIC_I8X16_LT_S }, + { "i8x16_lt_u", ONYX_INTRINSIC_I8X16_LT_U }, + { "i8x16_gt_s", ONYX_INTRINSIC_I8X16_GT_S }, + { "i8x16_gt_u", ONYX_INTRINSIC_I8X16_GT_U }, + { "i8x16_le_s", ONYX_INTRINSIC_I8X16_LE_S }, + { "i8x16_le_u", ONYX_INTRINSIC_I8X16_LE_U }, + { "i8x16_ge_s", ONYX_INTRINSIC_I8X16_GE_S }, + { "i8x16_ge_u", ONYX_INTRINSIC_I8X16_GE_U }, + + { "i16x8_eq", ONYX_INTRINSIC_I16X8_EQ }, + { "i16x8_neq", ONYX_INTRINSIC_I16X8_NEQ }, + { "i16x8_lt_s", ONYX_INTRINSIC_I16X8_LT_S }, + { "i16x8_lt_u", ONYX_INTRINSIC_I16X8_LT_U }, + { "i16x8_gt_s", ONYX_INTRINSIC_I16X8_GT_S }, + { "i16x8_gt_u", ONYX_INTRINSIC_I16X8_GT_U }, + { "i16x8_le_s", ONYX_INTRINSIC_I16X8_LE_S }, + { "i16x8_le_u", ONYX_INTRINSIC_I16X8_LE_U }, + { "i16x8_ge_s", ONYX_INTRINSIC_I16X8_GE_S }, + { "i16x8_ge_u", ONYX_INTRINSIC_I16X8_GE_U }, + + { "i32x4_eq", ONYX_INTRINSIC_I32X4_EQ }, + { "i32x4_neq", ONYX_INTRINSIC_I32X4_NEQ }, + { "i32x4_lt_s", ONYX_INTRINSIC_I32X4_LT_S }, + { "i32x4_lt_u", ONYX_INTRINSIC_I32X4_LT_U }, + { "i32x4_gt_s", ONYX_INTRINSIC_I32X4_GT_S }, + { "i32x4_gt_u", ONYX_INTRINSIC_I32X4_GT_U }, + { "i32x4_le_s", ONYX_INTRINSIC_I32X4_LE_S }, + { "i32x4_le_u", ONYX_INTRINSIC_I32X4_LE_U }, + { "i32x4_ge_s", ONYX_INTRINSIC_I32X4_GE_S }, + { "i32x4_ge_u", ONYX_INTRINSIC_I32X4_GE_U }, + + { "f32x4_eq", ONYX_INTRINSIC_F32X4_EQ }, + { "f32x4_neq", ONYX_INTRINSIC_F32X4_NEQ }, + { "f32x4_lt", ONYX_INTRINSIC_F32X4_LT }, + { "f32x4_gt", ONYX_INTRINSIC_F32X4_GT }, + { "f32x4_le", ONYX_INTRINSIC_F32X4_LE }, + { "f32x4_ge", ONYX_INTRINSIC_F32X4_GE }, + + { "f64x2_eq", ONYX_INTRINSIC_F64X2_EQ }, + { "f64x2_neq", ONYX_INTRINSIC_F64X2_NEQ }, + { "f64x2_lt", ONYX_INTRINSIC_F64X2_LT }, + { "f64x2_gt", ONYX_INTRINSIC_F64X2_GT }, + { "f64x2_le", ONYX_INTRINSIC_F64X2_LE }, + { "f64x2_ge", ONYX_INTRINSIC_F64X2_GE }, + + { "v128_not", ONYX_INTRINSIC_V128_NOT }, + { "v128_and", ONYX_INTRINSIC_V128_AND }, + { "v128_andnot", ONYX_INTRINSIC_V128_ANDNOT }, + { "v128_or", ONYX_INTRINSIC_V128_OR }, + { "v128_xor", ONYX_INTRINSIC_V128_XOR }, + { "v128_bitselect", ONYX_INTRINSIC_V128_BITSELECT }, + + { "i8x16_abs", ONYX_INTRINSIC_I8X16_ABS }, + { "i8x16_neg", ONYX_INTRINSIC_I8X16_NEG }, + { "i8x16_any_true", ONYX_INTRINSIC_I8X16_ANY_TRUE }, + { "i8x16_all_true", ONYX_INTRINSIC_I8X16_ALL_TRUE }, + { "i8x16_bitmask", ONYX_INTRINSIC_I8X16_BITMASK }, + { "i8x16_narrow_i16x8_s", ONYX_INTRINSIC_I8X16_NARROW_I16X8_S }, + { "i8x16_narrow_i16x8_u", ONYX_INTRINSIC_I8X16_NARROW_I16X8_U }, + { "i8x16_shl", ONYX_INTRINSIC_I8X16_SHL }, + { "i8x16_shr_s", ONYX_INTRINSIC_I8X16_SHR_S }, + { "i8x16_shr_u", ONYX_INTRINSIC_I8X16_SHR_U }, + { "i8x16_add", ONYX_INTRINSIC_I8X16_ADD }, + { "i8x16_add_sat_s", ONYX_INTRINSIC_I8X16_ADD_SAT_S }, + { "i8x16_add_sat_u", ONYX_INTRINSIC_I8X16_ADD_SAT_U }, + { "i8x16_sub", ONYX_INTRINSIC_I8X16_SUB }, + { "i8x16_sub_sat_s", ONYX_INTRINSIC_I8X16_SUB_SAT_S }, + { "i8x16_sub_sat_u", ONYX_INTRINSIC_I8X16_SUB_SAT_U }, + { "i8x16_min_s", ONYX_INTRINSIC_I8X16_MIN_S }, + { "i8x16_min_u", ONYX_INTRINSIC_I8X16_MIN_U }, + { "i8x16_max_s", ONYX_INTRINSIC_I8X16_MAX_S }, + { "i8x16_max_u", ONYX_INTRINSIC_I8X16_MAX_U }, + { "i8x16_avgr_u", ONYX_INTRINSIC_I8X16_AVGR_U }, + + { "i16x8_abs", ONYX_INTRINSIC_I16X8_ABS }, + { "i16x8_neg", ONYX_INTRINSIC_I16X8_NEG }, + { "i16x8_any_true", ONYX_INTRINSIC_I16X8_ANY_TRUE }, + { "i16x8_all_true", ONYX_INTRINSIC_I16X8_ALL_TRUE }, + { "i16x8_bitmask", ONYX_INTRINSIC_I16X8_BITMASK }, + { "i16x8_narrow_i32x4_s", ONYX_INTRINSIC_I16X8_NARROW_I32X4_S }, + { "i16x8_narrow_i32x4_u", ONYX_INTRINSIC_I16X8_NARROW_I32X4_U }, + { "i16x8_widen_low_i8x16_s", ONYX_INTRINSIC_I16X8_WIDEN_LOW_I8X16_S }, + { "i16x8_widen_high_i8x16_s", ONYX_INTRINSIC_I16X8_WIDEN_HIGH_I8X16_S }, + { "i16x8_widen_low_i8x16_u", ONYX_INTRINSIC_I16X8_WIDEN_LOW_I8X16_U }, + { "i16x8_widen_high_i8x16_u", ONYX_INTRINSIC_I16X8_WIDEN_HIGH_I8X16_U }, + { "i16x8_shl", ONYX_INTRINSIC_I16X8_SHL }, + { "i16x8_shr_s", ONYX_INTRINSIC_I16X8_SHR_S }, + { "i16x8_shr_u", ONYX_INTRINSIC_I16X8_SHR_U }, + { "i16x8_add", ONYX_INTRINSIC_I16X8_ADD }, + { "i16x8_add_sat_s", ONYX_INTRINSIC_I16X8_ADD_SAT_S }, + { "i16x8_add_sat_u", ONYX_INTRINSIC_I16X8_ADD_SAT_U }, + { "i16x8_sub", ONYX_INTRINSIC_I16X8_SUB }, + { "i16x8_sub_sat_s", ONYX_INTRINSIC_I16X8_SUB_SAT_S }, + { "i16x8_sub_sat_u", ONYX_INTRINSIC_I16X8_SUB_SAT_U }, + { "i16x8_mul", ONYX_INTRINSIC_I16X8_MUL }, + { "i16x8_min_s", ONYX_INTRINSIC_I16X8_MIN_S }, + { "i16x8_min_u", ONYX_INTRINSIC_I16X8_MIN_U }, + { "i16x8_max_s", ONYX_INTRINSIC_I16X8_MAX_S }, + { "i16x8_max_u", ONYX_INTRINSIC_I16X8_MAX_U }, + { "i16x8_avgr_u", ONYX_INTRINSIC_I16X8_AVGR_U }, + + { "i32x4_abs", ONYX_INTRINSIC_I32X4_ABS }, + { "i32x4_neg", ONYX_INTRINSIC_I32X4_NEG }, + { "i32x4_any_true", ONYX_INTRINSIC_I32X4_ANY_TRUE }, + { "i32x4_all_true", ONYX_INTRINSIC_I32X4_ALL_TRUE }, + { "i32x4_bitmask", ONYX_INTRINSIC_I32X4_BITMASK }, + { "i32x4_widen_low_i16x8_s", ONYX_INTRINSIC_I32X4_WIDEN_LOW_I16X8_S }, + { "i32x4_widen_high_i16x8_s", ONYX_INTRINSIC_I32X4_WIDEN_HIGH_I16X8_S }, + { "i32x4_widen_low_i16x8_u", ONYX_INTRINSIC_I32X4_WIDEN_LOW_I16X8_U }, + { "i32x4_widen_high_i16x8_u", ONYX_INTRINSIC_I32X4_WIDEN_HIGH_I16X8_U }, + { "i32x4_shl", ONYX_INTRINSIC_I32X4_SHL }, + { "i32x4_shr_s", ONYX_INTRINSIC_I32X4_SHR_S }, + { "i32x4_shl_u", ONYX_INTRINSIC_I32X4_SHR_U }, + { "i32x4_add", ONYX_INTRINSIC_I32X4_ADD }, + { "i32x4_sub", ONYX_INTRINSIC_I32X4_SUB }, + { "i32x4_mul", ONYX_INTRINSIC_I32X4_MUL }, + { "i32x4_min_s", ONYX_INTRINSIC_I32X4_MIN_S }, + { "i32x4_min_u", ONYX_INTRINSIC_I32X4_MIN_U }, + { "i32x4_max_s", ONYX_INTRINSIC_I32X4_MAX_S }, + { "i32x4_max_u", ONYX_INTRINSIC_I32X4_MAX_U }, + + { "i64x2_neg", ONYX_INTRINSIC_I64X2_NEG }, + { "i64x2_shl", ONYX_INTRINSIC_I64X2_SHL }, + { "i64x2_shr_s", ONYX_INTRINSIC_I64X2_SHR_S }, + { "i64x2_shr_u", ONYX_INTRINSIC_I64X2_SHR_U }, + { "i64x2_add", ONYX_INTRINSIC_I64X2_ADD }, + { "i64x2_sub", ONYX_INTRINSIC_I64X2_SUB }, + { "i64x2_mul", ONYX_INTRINSIC_I64X2_MUL }, + + { "f32x4_abs", ONYX_INTRINSIC_F32X4_ABS }, + { "f32x4_neg", ONYX_INTRINSIC_F32X4_NEG }, + { "f32x4_sqrt", ONYX_INTRINSIC_F32X4_SQRT }, + { "f32x4_add", ONYX_INTRINSIC_F32X4_ADD }, + { "f32x4_sub", ONYX_INTRINSIC_F32X4_SUB }, + { "f32x4_mul", ONYX_INTRINSIC_F32X4_MUL }, + { "f32x4_div", ONYX_INTRINSIC_F32X4_DIV }, + { "f32x4_min", ONYX_INTRINSIC_F32X4_MIN }, + { "f32x4_max", ONYX_INTRINSIC_F32X4_MAX }, + + { "f64x2_abs", ONYX_INTRINSIC_F64X2_ABS }, + { "f64x2_neg", ONYX_INTRINSIC_F64X2_NEG }, + { "f64x2_sqrt", ONYX_INTRINSIC_F64X2_SQRT }, + { "f64x2_add", ONYX_INTRINSIC_F64X2_ADD }, + { "f64x2_sub", ONYX_INTRINSIC_F64X2_SUB }, + { "f64x2_mul", ONYX_INTRINSIC_F64X2_MUL }, + { "f64x2_div", ONYX_INTRINSIC_F64X2_DIV }, + { "f64x2_min", ONYX_INTRINSIC_F64X2_MIN }, + { "f64x2_max", ONYX_INTRINSIC_F64X2_MAX }, + + { "i32x4_trunc_sat_f32x4_s", ONYX_INTRINSIC_I32X4_TRUNC_SAT_F32X4_S }, + { "i32x4_trunc_sat_f32x4_u", ONYX_INTRINSIC_I32X4_TRUNC_SAT_F32X4_U }, + { "f32x4_convert_i32x4_s", ONYX_INTRINSIC_F32X4_CONVERT_I32X4_S }, + { "f32x4_convert_i32x4_u", ONYX_INTRINSIC_F32X4_CONVERT_I32X4_U }, + + { NULL, ONYX_INTRINSIC_UNDEFINED }, +}; + void initialize_builtins(bh_allocator a, ProgramInfo* prog) { // HACK builtin_package_token.text = bh_strdup(global_heap_allocator, builtin_package_token.text); @@ -99,4 +344,13 @@ void initialize_builtins(bh_allocator a, ProgramInfo* prog) { onyx_report_error((OnyxFilePos) { 0 }, "'range' struct not found in builtin package."); return; } + + + + bh_table_init(global_heap_allocator, intrinsic_table, 128); + IntrinsicMap* intrinsic = &builtin_intrinsics[0]; + while (intrinsic->name != NULL) { + bh_table_put(OnyxIntrinsic, intrinsic_table, intrinsic->name, intrinsic->intrinsic); + intrinsic++; + } } diff --git a/src/onyxchecker.c b/src/onyxchecker.c index 469a1ca6..98cf5d9a 100644 --- a/src/onyxchecker.c +++ b/src/onyxchecker.c @@ -402,56 +402,15 @@ b32 check_call(AstCall* call) { token_toggle_end(callee->intrinsic_name); char* intr_name = callee->intrinsic_name->text; - OnyxIntrinsic intrinsic = ONYX_INTRINSIC_UNDEFINED; - - if (!strcmp("memory_size", intr_name)) intrinsic = ONYX_INTRINSIC_MEMORY_SIZE; - else if (!strcmp("memory_grow", intr_name)) intrinsic = ONYX_INTRINSIC_MEMORY_GROW; - - else if (!strcmp("clz_i32", intr_name)) intrinsic = ONYX_INTRINSIC_I32_CLZ; - else if (!strcmp("ctz_i32", intr_name)) intrinsic = ONYX_INTRINSIC_I32_CTZ; - else if (!strcmp("popcnt_i32", intr_name)) intrinsic = ONYX_INTRINSIC_I32_POPCNT; - else if (!strcmp("and_i32", intr_name)) intrinsic = ONYX_INTRINSIC_I32_AND; - else if (!strcmp("or_i32", intr_name)) intrinsic = ONYX_INTRINSIC_I32_OR; - else if (!strcmp("xor_i32", intr_name)) intrinsic = ONYX_INTRINSIC_I32_XOR; - else if (!strcmp("shl_i32", intr_name)) intrinsic = ONYX_INTRINSIC_I32_SHL; - else if (!strcmp("slr_i32", intr_name)) intrinsic = ONYX_INTRINSIC_I32_SLR; - else if (!strcmp("sar_i32", intr_name)) intrinsic = ONYX_INTRINSIC_I32_SAR; - else if (!strcmp("rotl_i32", intr_name)) intrinsic = ONYX_INTRINSIC_I32_ROTL; - else if (!strcmp("rotr_i32", intr_name)) intrinsic = ONYX_INTRINSIC_I32_ROTR; - - else if (!strcmp("clz_i64", intr_name)) intrinsic = ONYX_INTRINSIC_I64_CLZ; - else if (!strcmp("ctz_i64", intr_name)) intrinsic = ONYX_INTRINSIC_I64_CTZ; - else if (!strcmp("popcnt_i64", intr_name)) intrinsic = ONYX_INTRINSIC_I64_POPCNT; - else if (!strcmp("and_i64", intr_name)) intrinsic = ONYX_INTRINSIC_I64_AND; - else if (!strcmp("or_i64", intr_name)) intrinsic = ONYX_INTRINSIC_I64_OR; - else if (!strcmp("xor_i64", intr_name)) intrinsic = ONYX_INTRINSIC_I64_XOR; - else if (!strcmp("shl_i64", intr_name)) intrinsic = ONYX_INTRINSIC_I64_SHL; - else if (!strcmp("slr_i64", intr_name)) intrinsic = ONYX_INTRINSIC_I64_SLR; - else if (!strcmp("sar_i64", intr_name)) intrinsic = ONYX_INTRINSIC_I64_SAR; - else if (!strcmp("rotl_i64", intr_name)) intrinsic = ONYX_INTRINSIC_I64_ROTL; - else if (!strcmp("rotr_i64", intr_name)) intrinsic = ONYX_INTRINSIC_I64_ROTR; - - else if (!strcmp("abs_f32", intr_name)) intrinsic = ONYX_INTRINSIC_F32_ABS; - else if (!strcmp("ceil_f32", intr_name)) intrinsic = ONYX_INTRINSIC_F32_CEIL; - else if (!strcmp("floor_f32", intr_name)) intrinsic = ONYX_INTRINSIC_F32_FLOOR; - else if (!strcmp("trunc_f32", intr_name)) intrinsic = ONYX_INTRINSIC_F32_TRUNC; - else if (!strcmp("nearest_f32", intr_name)) intrinsic = ONYX_INTRINSIC_F32_NEAREST; - else if (!strcmp("sqrt_f32", intr_name)) intrinsic = ONYX_INTRINSIC_F32_SQRT; - else if (!strcmp("min_f32", intr_name)) intrinsic = ONYX_INTRINSIC_F32_MIN; - else if (!strcmp("max_f32", intr_name)) intrinsic = ONYX_INTRINSIC_F32_MAX; - else if (!strcmp("copysign_f32", intr_name)) intrinsic = ONYX_INTRINSIC_F32_COPYSIGN; - - else if (!strcmp("abs_f64", intr_name)) intrinsic = ONYX_INTRINSIC_F64_ABS; - else if (!strcmp("ceil_f64", intr_name)) intrinsic = ONYX_INTRINSIC_F64_CEIL; - else if (!strcmp("floor_f64", intr_name)) intrinsic = ONYX_INTRINSIC_F64_FLOOR; - else if (!strcmp("trunc_f64", intr_name)) intrinsic = ONYX_INTRINSIC_F64_TRUNC; - else if (!strcmp("nearest_f64", intr_name)) intrinsic = ONYX_INTRINSIC_F64_NEAREST; - else if (!strcmp("sqrt_f64", intr_name)) intrinsic = ONYX_INTRINSIC_F64_SQRT; - else if (!strcmp("min_f64", intr_name)) intrinsic = ONYX_INTRINSIC_F64_MIN; - else if (!strcmp("max_f64", intr_name)) intrinsic = ONYX_INTRINSIC_F64_MAX; - else if (!strcmp("copysign_f64", intr_name)) intrinsic = ONYX_INTRINSIC_F64_COPYSIGN; - - ((AstIntrinsicCall *)call)->intrinsic = intrinsic; + + if (bh_table_has(OnyxIntrinsic, intrinsic_table, intr_name)) { + ((AstIntrinsicCall *)call)->intrinsic = bh_table_get(OnyxIntrinsic, intrinsic_table, intr_name); + + } else { + onyx_report_error(callee->token->pos, "Intrinsic not supported, '%s'.", intr_name); + token_toggle_end(callee->intrinsic_name); + return 1; + } token_toggle_end(callee->intrinsic_name); } diff --git a/src/onyxtypes.c b/src/onyxtypes.c index 691a5924..ca46639f 100644 --- a/src/onyxtypes.c +++ b/src/onyxtypes.c @@ -29,6 +29,7 @@ Type basic_types[] = { { Type_Kind_Basic, 0, { Basic_Kind_I64X2, Basic_Flag_SIMD, 16, 16, "i64x2" } }, { Type_Kind_Basic, 0, { Basic_Kind_F32X4, Basic_Flag_SIMD, 16, 16, "f32x4" } }, { Type_Kind_Basic, 0, { Basic_Kind_F64X2, Basic_Flag_SIMD, 16, 16, "f64x2" } }, + { Type_Kind_Basic, 0, { Basic_Kind_V128, Basic_Flag_SIMD, 16, 16, "v128" } }, }; b32 types_are_surface_compatible(Type* t1, Type* t2) { @@ -534,6 +535,7 @@ u32 type_get_alignment_log2(Type* type) { else if (store_size == 2) return 1; else if (store_size == 4) return 2; else if (store_size == 8) return 3; + else if (store_size == 16) return 4; return 2; } @@ -715,6 +717,11 @@ b32 type_is_compound(Type* type) { || type->kind == Type_Kind_Struct; } +b32 type_is_simd(Type* type) { + if (type->kind != Type_Kind_Basic) return 0; + return type->Basic.flags & Basic_Flag_SIMD; +} + b32 type_results_in_void(Type* type) { return (type == NULL) || (type->kind == Type_Kind_Basic && type->Basic.kind == Basic_Kind_Void) diff --git a/src/onyxwasm.c b/src/onyxwasm.c index 6c57c0c6..775454f8 100644 --- a/src/onyxwasm.c +++ b/src/onyxwasm.c @@ -573,6 +573,7 @@ EMIT_FUNC(store_instruction, Type* type, u32 offset) { i32 is_pointer = is_basic && (type->Basic.flags & Basic_Flag_Pointer); i32 is_integer = is_basic && ((type->Basic.flags & Basic_Flag_Integer) || (type->Basic.flags & Basic_Flag_Boolean)); i32 is_float = is_basic && (type->Basic.flags & Basic_Flag_Float); + i32 is_simd = is_basic && (type->Basic.flags & Basic_Flag_SIMD); if (is_pointer) { WID(WI_I32_STORE, ((WasmInstructionData) { alignment, offset })); @@ -584,6 +585,8 @@ EMIT_FUNC(store_instruction, Type* type, u32 offset) { } else if (is_float) { if (store_size == 4) WID(WI_F32_STORE, ((WasmInstructionData) { alignment, offset })); else if (store_size == 8) WID(WI_F64_STORE, ((WasmInstructionData) { alignment, offset })); + } else if (is_simd) { + WID(WI_V128_STORE, ((WasmInstructionData) { alignment, offset })); } else { onyx_report_error((OnyxFilePos) { 0 }, "Failed to generate store instruction for type '%s'.", @@ -625,6 +628,7 @@ EMIT_FUNC(load_instruction, Type* type, u32 offset) { i32 is_integer = is_basic && ((type->Basic.flags & Basic_Flag_Integer) || (type->Basic.flags & Basic_Flag_Boolean)); i32 is_float = is_basic && (type->Basic.flags & Basic_Flag_Float); i32 is_unsigned = is_basic && (type->Basic.flags & Basic_Flag_Unsigned); + i32 is_simd = is_basic && (type->Basic.flags & Basic_Flag_SIMD); WasmInstructionType instr = WI_NOP; i32 alignment = type_get_alignment_log2(type); @@ -644,6 +648,9 @@ EMIT_FUNC(load_instruction, Type* type, u32 offset) { if (load_size == 4) instr = WI_F32_LOAD; else if (load_size == 8) instr = WI_F64_LOAD; } + else if (is_simd) { + instr = WI_V128_LOAD; + } WID(instr, ((WasmInstructionData) { alignment, offset })); @@ -1996,6 +2003,21 @@ EMIT_FUNC(cast, AstUnaryOp* cast) { return; } + if (type_is_simd(to) && !type_is_simd(from)) { + onyx_report_error(cast->token->pos, "Can only perform a SIMD cast between SIMD types."); + return; + } + + if (type_is_simd(from) && !type_is_simd(to)) { + onyx_report_error(cast->token->pos, "Can only perform a SIMD cast between SIMD types."); + return; + } + + if (type_is_simd(from) && type_is_simd(to)) { + *pcode = code; + return; + } + if (from->kind == Type_Kind_Enum) from = from->Enum.backing; if (to->kind == Type_Kind_Enum) to = to->Enum.backing; @@ -3077,7 +3099,14 @@ static void output_instruction(WasmFunc* func, WasmInstruction* instr, bh_buffer i32 leb_len; u8* leb; - bh_buffer_write_byte(buff, (u8) instr->type); + if (instr->type & SIMD_INSTR_MASK) { + bh_buffer_write_byte(buff, 0xFD); + leb = uint_to_uleb128((u64) (instr->type &~ SIMD_INSTR_MASK), &leb_len); + bh_buffer_append(buff, leb, leb_len); + + } else { + bh_buffer_write_byte(buff, (u8) instr->type); + } switch (instr->type) { case WI_LOCAL_GET: @@ -3121,29 +3150,19 @@ static void output_instruction(WasmFunc* func, WasmInstruction* instr, bh_buffer case WI_CALL_INDIRECT: - case WI_I32_STORE: - case WI_I32_STORE_8: - case WI_I32_STORE_16: - case WI_I64_STORE: - case WI_I64_STORE_8: - case WI_I64_STORE_16: - case WI_I64_STORE_32: - case WI_F32_STORE: - case WI_F64_STORE: + case WI_I32_STORE: case WI_I32_STORE_8: case WI_I32_STORE_16: + case WI_I64_STORE: case WI_I64_STORE_8: case WI_I64_STORE_16: case WI_I64_STORE_32: + case WI_F32_STORE: case WI_F64_STORE: + case WI_V128_STORE: case WI_I32_LOAD: - case WI_I32_LOAD_8_S: - case WI_I32_LOAD_8_U: - case WI_I32_LOAD_16_S: - case WI_I32_LOAD_16_U: + case WI_I32_LOAD_8_S: case WI_I32_LOAD_8_U: + case WI_I32_LOAD_16_S: case WI_I32_LOAD_16_U: case WI_I64_LOAD: - case WI_I64_LOAD_8_S: - case WI_I64_LOAD_8_U: - case WI_I64_LOAD_16_S: - case WI_I64_LOAD_16_U: - case WI_I64_LOAD_32_S: - case WI_I64_LOAD_32_U: - case WI_F32_LOAD: - case WI_F64_LOAD: + case WI_I64_LOAD_8_S: case WI_I64_LOAD_8_U: + case WI_I64_LOAD_16_S: case WI_I64_LOAD_16_U: + case WI_I64_LOAD_32_S: case WI_I64_LOAD_32_U: + case WI_F32_LOAD: case WI_F64_LOAD: + case WI_V128_LOAD: leb = uint_to_uleb128((u64) instr->data.i1, &leb_len); bh_buffer_append(buff, leb, leb_len); leb = uint_to_uleb128((u64) instr->data.i2, &leb_len); -- 2.25.1