implement lshrti3 on wasm

This commit is contained in:
Laytan Laats
2024-08-18 17:09:57 +02:00
parent f49ebae956
commit b2e64b7ce0
3 changed files with 76 additions and 46 deletions
+21
View File
@@ -52,3 +52,24 @@ udivti3 :: proc "c" (la, ha, lb, hb: u64) -> u128 {
b.lo, b.hi = lb, hb
return udivmodti4(a.all, b.all, nil)
}
@(link_name="__lshrti3", linkage="strong")
__lshrti3 :: proc "c" (la, ha: u64, b: u32) -> i128 {
bits :: size_of(u32)*8
input, result: ti_int
input.lo = la
input.hi = ha
if b & bits != 0 {
result.hi = 0
result.lo = input.hi >> (b - bits)
} else if b == 0 {
return input.all
} else {
result.hi = input.hi >> b
result.lo = (input.hi << (bits - b)) | (input.lo >> b)
}
return result.all
}