Update math and math/linalg; add "pure_none" calling convention

This commit is contained in:
gingerBill
2020-09-10 15:00:19 +01:00
parent 7e625f6ee7
commit c1149dbdee
14 changed files with 1422 additions and 360 deletions
+7 -3
View File
@@ -29,9 +29,13 @@ Calling_Convention :: enum u8 {
Invalid = 0,
Odin = 1,
Contextless = 2,
C = 3,
Std = 4,
Fast = 5,
Pure = 3,
CDecl = 4,
Std_Call = 5,
Fast_Call = 6,
None = 7,
Pure_None = 8,
}
Type_Info_Enum_Value :: distinct i64;
+6 -6
View File
@@ -2,31 +2,31 @@ package runtime
import "core:os"
bswap_16 :: proc "none" (x: u16) -> u16 {
bswap_16 :: proc "pure" (x: u16) -> u16 {
return x>>8 | x<<8;
}
bswap_32 :: proc "none" (x: u32) -> u32 {
bswap_32 :: proc "pure" (x: u32) -> u32 {
return x>>24 | (x>>8)&0xff00 | (x<<8)&0xff0000 | x<<24;
}
bswap_64 :: proc "none" (x: u64) -> u64 {
bswap_64 :: proc "pure" (x: u64) -> u64 {
return u64(bswap_32(u32(x))) | u64(bswap_32(u32(x>>32)));
}
bswap_128 :: proc "none" (x: u128) -> u128 {
bswap_128 :: proc "pure" (x: u128) -> u128 {
return u128(bswap_64(u64(x))) | u128(bswap_64(u64(x>>64)));
}
bswap_f32 :: proc "none" (f: f32) -> f32 {
bswap_f32 :: proc "pure" (f: f32) -> f32 {
x := transmute(u32)f;
z := x>>24 | (x>>8)&0xff00 | (x<<8)&0xff0000 | x<<24;
return transmute(f32)z;
}
bswap_f64 :: proc "none" (f: f64) -> f64 {
bswap_f64 :: proc "pure" (f: f64) -> f64 {
x := transmute(u64)f;
z := u64(bswap_32(u32(x))) | u64(bswap_32(u32(x>>32)));
return transmute(f64)z;