a71bfc249d
This removes the compiler_rt.setXmm0 hack. Instead, for the functions that use i128 or u128 in their parameter and return types, we use `@Vector(2, u64)` which generates the LLVM IR `<2 x i64>` type that matches what Clang generates for `typedef int ti_int __attribute__ ((mode (TI)))` when targeting Windows x86_64.
16 lines
497 B
Zig
16 lines
497 B
Zig
const udivmodti4 = @import("udivmodti4.zig");
|
|
const builtin = @import("builtin");
|
|
const compiler_rt = @import("../compiler_rt.zig");
|
|
|
|
pub extern fn __umodti3(a: u128, b: u128) u128 {
|
|
@setRuntimeSafety(builtin.is_test);
|
|
var r: u128 = undefined;
|
|
_ = udivmodti4.__udivmodti4(a, b, &r);
|
|
return r;
|
|
}
|
|
|
|
const v128 = @Vector(2, u64);
|
|
pub extern fn __umodti3_windows_x86_64(a: v128, b: v128) v128 {
|
|
return @bitCast(v128, @inlineCall(__umodti3, @bitCast(u128, a), @bitCast(u128, b)));
|
|
}
|