| ... | ... | @@ -76,10 +76,11 @@ comptime { |
| 76 | 76 | |
| 77 | 77 | @export(__extendhfsf2, .{ .name = "__gnu_h2f_ieee", .linkage = linkage }); |
| 78 | 78 | |
| 79 | | const __muloti4 = @import("compiler_rt/muloti4.zig").__muloti4; |
| 80 | | @export(__muloti4, .{ .name = "__muloti4", .linkage = linkage }); |
| 79 | // Integral arithmetic which returns if overflow |
| 81 | 80 | const __mulodi4 = @import("compiler_rt/mulodi4.zig").__mulodi4; |
| 82 | 81 | @export(__mulodi4, .{ .name = "__mulodi4", .linkage = linkage }); |
| 82 | const __muloti4 = @import("compiler_rt/muloti4.zig").__muloti4; |
| 83 | @export(__muloti4, .{ .name = "__muloti4", .linkage = linkage }); |
| 83 | 84 | } |
| 84 | 85 | |
| 85 | 86 | if (builtin.os.tag == .windows) { |
| ... | ... | @@ -217,6 +218,7 @@ comptime { |
| 217 | 218 | const __divtf3 = @import("compiler_rt/divtf3.zig").__divtf3; |
| 218 | 219 | @export(__divtf3, .{ .name = "__divtf3", .linkage = linkage }); |
| 219 | 220 | |
| 221 | // Integral bit manipulation |
| 220 | 222 | const __ashldi3 = @import("compiler_rt/shift.zig").__ashldi3; |
| 221 | 223 | @export(__ashldi3, .{ .name = "__ashldi3", .linkage = linkage }); |
| 222 | 224 | const __ashlti3 = @import("compiler_rt/shift.zig").__ashlti3; |
| ... | ... | @@ -230,6 +232,33 @@ comptime { |
| 230 | 232 | const __lshrti3 = @import("compiler_rt/shift.zig").__lshrti3; |
| 231 | 233 | @export(__lshrti3, .{ .name = "__lshrti3", .linkage = linkage }); |
| 232 | 234 | |
| 235 | const __clzsi2 = @import("compiler_rt/count0bits.zig").__clzsi2; |
| 236 | @export(__clzsi2, .{ .name = "__clzsi2", .linkage = linkage }); |
| 237 | const __clzdi2 = @import("compiler_rt/count0bits.zig").__clzdi2; |
| 238 | @export(__clzdi2, .{ .name = "__clzdi2", .linkage = linkage }); |
| 239 | const __clzti2 = @import("compiler_rt/count0bits.zig").__clzti2; |
| 240 | @export(__clzti2, .{ .name = "__clzti2", .linkage = linkage }); |
| 241 | const __ctzsi2 = @import("compiler_rt/count0bits.zig").__ctzsi2; |
| 242 | @export(__ctzsi2, .{ .name = "__ctzsi2", .linkage = linkage }); |
| 243 | const __ctzdi2 = @import("compiler_rt/count0bits.zig").__ctzdi2; |
| 244 | @export(__ctzdi2, .{ .name = "__ctzdi2", .linkage = linkage }); |
| 245 | const __ctzti2 = @import("compiler_rt/count0bits.zig").__ctzti2; |
| 246 | @export(__ctzti2, .{ .name = "__ctzti2", .linkage = linkage }); |
| 247 | |
| 248 | const __paritysi2 = @import("compiler_rt/parity.zig").__paritysi2; |
| 249 | @export(__paritysi2, .{ .name = "__paritysi2", .linkage = linkage }); |
| 250 | const __paritydi2 = @import("compiler_rt/parity.zig").__paritydi2; |
| 251 | @export(__paritydi2, .{ .name = "__paritydi2", .linkage = linkage }); |
| 252 | const __parityti2 = @import("compiler_rt/parity.zig").__parityti2; |
| 253 | @export(__parityti2, .{ .name = "__parityti2", .linkage = linkage }); |
| 254 | const __popcountsi2 = @import("compiler_rt/popcount.zig").__popcountsi2; |
| 255 | @export(__popcountsi2, .{ .name = "__popcountsi2", .linkage = linkage }); |
| 256 | const __popcountdi2 = @import("compiler_rt/popcount.zig").__popcountdi2; |
| 257 | @export(__popcountdi2, .{ .name = "__popcountdi2", .linkage = linkage }); |
| 258 | const __popcountti2 = @import("compiler_rt/popcount.zig").__popcountti2; |
| 259 | @export(__popcountti2, .{ .name = "__popcountti2", .linkage = linkage }); |
| 260 | |
| 261 | // Integral / floating point conversion (part 1/2) |
| 233 | 262 | const __floatsidf = @import("compiler_rt/floatsiXf.zig").__floatsidf; |
| 234 | 263 | @export(__floatsidf, .{ .name = "__floatsidf", .linkage = linkage }); |
| 235 | 264 | const __floatsisf = @import("compiler_rt/floatsiXf.zig").__floatsisf; |
| ... | ... | @@ -291,6 +320,7 @@ comptime { |
| 291 | 320 | const __extendsfdf2 = @import("compiler_rt/extendXfYf2.zig").__extendsfdf2; |
| 292 | 321 | @export(__extendsfdf2, .{ .name = "__extendsfdf2", .linkage = linkage }); |
| 293 | 322 | |
| 323 | // Integral / floating point conversion (part 2/2) |
| 294 | 324 | const __fixunssfsi = @import("compiler_rt/fixunssfsi.zig").__fixunssfsi; |
| 295 | 325 | @export(__fixunssfsi, .{ .name = "__fixunssfsi", .linkage = linkage }); |
| 296 | 326 | const __fixunssfdi = @import("compiler_rt/fixunssfdi.zig").__fixunssfdi; |
| ... | ... | @@ -333,18 +363,13 @@ comptime { |
| 333 | 363 | |
| 334 | 364 | const __udivmoddi4 = @import("compiler_rt/int.zig").__udivmoddi4; |
| 335 | 365 | @export(__udivmoddi4, .{ .name = "__udivmoddi4", .linkage = linkage }); |
| 336 | | const __popcountsi2 = @import("compiler_rt/popcount.zig").__popcountsi2; |
| 337 | | @export(__popcountsi2, .{ .name = "__popcountsi2", .linkage = linkage }); |
| 338 | | const __popcountdi2 = @import("compiler_rt/popcount.zig").__popcountdi2; |
| 339 | | @export(__popcountdi2, .{ .name = "__popcountdi2", .linkage = linkage }); |
| 340 | | const __popcountti2 = @import("compiler_rt/popcount.zig").__popcountti2; |
| 341 | | @export(__popcountti2, .{ .name = "__popcountti2", .linkage = linkage }); |
| 342 | 366 | |
| 343 | 367 | if (is_darwin) { |
| 344 | 368 | const __isPlatformVersionAtLeast = @import("compiler_rt/os_version_check.zig").__isPlatformVersionAtLeast; |
| 345 | 369 | @export(__isPlatformVersionAtLeast, .{ .name = "__isPlatformVersionAtLeast", .linkage = linkage }); |
| 346 | 370 | } |
| 347 | 371 | |
| 372 | // Integral arithmetic |
| 348 | 373 | const __mulsi3 = @import("compiler_rt/int.zig").__mulsi3; |
| 349 | 374 | @export(__mulsi3, .{ .name = "__mulsi3", .linkage = linkage }); |
| 350 | 375 | const __muldi3 = @import("compiler_rt/muldi3.zig").__muldi3; |
| ... | ... | @@ -372,24 +397,26 @@ comptime { |
| 372 | 397 | const __udivmodsi4 = @import("compiler_rt/int.zig").__udivmodsi4; |
| 373 | 398 | @export(__udivmodsi4, .{ .name = "__udivmodsi4", .linkage = linkage }); |
| 374 | 399 | |
| 400 | // missing: Integral arithmetic with trapping overflow |
| 401 | |
| 402 | // missing: Integral arithmetic which returns if overflow |
| 403 | |
| 404 | // missing: Integral comparison |
| 405 | // (a < b) => 0 |
| 406 | // (a == b) => 1 |
| 407 | // (a > b) => 2 |
| 408 | |
| 409 | // missing: Floating point raised to integer power |
| 410 | |
| 411 | // missing: Complex arithmetic |
| 412 | // (a + ib) * (c + id) |
| 413 | // (a + ib) / (c + id) |
| 414 | |
| 375 | 415 | const __negsf2 = @import("compiler_rt/negXf2.zig").__negsf2; |
| 376 | 416 | @export(__negsf2, .{ .name = "__negsf2", .linkage = linkage }); |
| 377 | 417 | const __negdf2 = @import("compiler_rt/negXf2.zig").__negdf2; |
| 378 | 418 | @export(__negdf2, .{ .name = "__negdf2", .linkage = linkage }); |
| 379 | 419 | |
| 380 | | const __clzsi2 = @import("compiler_rt/count0bits.zig").__clzsi2; |
| 381 | | @export(__clzsi2, .{ .name = "__clzsi2", .linkage = linkage }); |
| 382 | | const __clzdi2 = @import("compiler_rt/count0bits.zig").__clzdi2; |
| 383 | | @export(__clzdi2, .{ .name = "__clzdi2", .linkage = linkage }); |
| 384 | | const __clzti2 = @import("compiler_rt/count0bits.zig").__clzti2; |
| 385 | | @export(__clzti2, .{ .name = "__clzti2", .linkage = linkage }); |
| 386 | | const __ctzsi2 = @import("compiler_rt/count0bits.zig").__ctzsi2; |
| 387 | | @export(__ctzsi2, .{ .name = "__ctzsi2", .linkage = linkage }); |
| 388 | | const __ctzdi2 = @import("compiler_rt/count0bits.zig").__ctzdi2; |
| 389 | | @export(__ctzdi2, .{ .name = "__ctzdi2", .linkage = linkage }); |
| 390 | | const __ctzti2 = @import("compiler_rt/count0bits.zig").__ctzti2; |
| 391 | | @export(__ctzti2, .{ .name = "__ctzti2", .linkage = linkage }); |
| 392 | | |
| 393 | 420 | if (builtin.link_libc and os_tag == .openbsd) { |
| 394 | 421 | const __emutls_get_address = @import("compiler_rt/emutls.zig").__emutls_get_address; |
| 395 | 422 | @export(__emutls_get_address, .{ .name = "__emutls_get_address", .linkage = linkage }); |