| ... | @@ -76,10 +76,11 @@ comptime { | ... | @@ -76,10 +76,11 @@ comptime { |
| 76 | | 76 | |
| 77 | @export(__extendhfsf2, .{ .name = "__gnu_h2f_ieee", .linkage = linkage }); | 77 | @export(__extendhfsf2, .{ .name = "__gnu_h2f_ieee", .linkage = linkage }); |
| 78 | | 78 | |
| 79 | const __muloti4 = @import("compiler_rt/muloti4.zig").__muloti4; | 79 | // Integral arithmetic which returns if overflow |
| 80 | @export(__muloti4, .{ .name = "__muloti4", .linkage = linkage }); | | |
| 81 | const __mulodi4 = @import("compiler_rt/mulodi4.zig").__mulodi4; | 80 | const __mulodi4 = @import("compiler_rt/mulodi4.zig").__mulodi4; |
| 82 | @export(__mulodi4, .{ .name = "__mulodi4", .linkage = linkage }); | 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 | if (builtin.os.tag == .windows) { | 86 | if (builtin.os.tag == .windows) { |
| ... | @@ -217,6 +218,7 @@ comptime { | ... | @@ -217,6 +218,7 @@ comptime { |
| 217 | const __divtf3 = @import("compiler_rt/divtf3.zig").__divtf3; | 218 | const __divtf3 = @import("compiler_rt/divtf3.zig").__divtf3; |
| 218 | @export(__divtf3, .{ .name = "__divtf3", .linkage = linkage }); | 219 | @export(__divtf3, .{ .name = "__divtf3", .linkage = linkage }); |
| 219 | | 220 | |
| | 221 | // Integral bit manipulation |
| 220 | const __ashldi3 = @import("compiler_rt/shift.zig").__ashldi3; | 222 | const __ashldi3 = @import("compiler_rt/shift.zig").__ashldi3; |
| 221 | @export(__ashldi3, .{ .name = "__ashldi3", .linkage = linkage }); | 223 | @export(__ashldi3, .{ .name = "__ashldi3", .linkage = linkage }); |
| 222 | const __ashlti3 = @import("compiler_rt/shift.zig").__ashlti3; | 224 | const __ashlti3 = @import("compiler_rt/shift.zig").__ashlti3; |
| ... | @@ -230,6 +232,33 @@ comptime { | ... | @@ -230,6 +232,33 @@ comptime { |
| 230 | const __lshrti3 = @import("compiler_rt/shift.zig").__lshrti3; | 232 | const __lshrti3 = @import("compiler_rt/shift.zig").__lshrti3; |
| 231 | @export(__lshrti3, .{ .name = "__lshrti3", .linkage = linkage }); | 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 | const __floatsidf = @import("compiler_rt/floatsiXf.zig").__floatsidf; | 262 | const __floatsidf = @import("compiler_rt/floatsiXf.zig").__floatsidf; |
| 234 | @export(__floatsidf, .{ .name = "__floatsidf", .linkage = linkage }); | 263 | @export(__floatsidf, .{ .name = "__floatsidf", .linkage = linkage }); |
| 235 | const __floatsisf = @import("compiler_rt/floatsiXf.zig").__floatsisf; | 264 | const __floatsisf = @import("compiler_rt/floatsiXf.zig").__floatsisf; |
| ... | @@ -291,6 +320,7 @@ comptime { | ... | @@ -291,6 +320,7 @@ comptime { |
| 291 | const __extendsfdf2 = @import("compiler_rt/extendXfYf2.zig").__extendsfdf2; | 320 | const __extendsfdf2 = @import("compiler_rt/extendXfYf2.zig").__extendsfdf2; |
| 292 | @export(__extendsfdf2, .{ .name = "__extendsfdf2", .linkage = linkage }); | 321 | @export(__extendsfdf2, .{ .name = "__extendsfdf2", .linkage = linkage }); |
| 293 | | 322 | |
| | 323 | // Integral / floating point conversion (part 2/2) |
| 294 | const __fixunssfsi = @import("compiler_rt/fixunssfsi.zig").__fixunssfsi; | 324 | const __fixunssfsi = @import("compiler_rt/fixunssfsi.zig").__fixunssfsi; |
| 295 | @export(__fixunssfsi, .{ .name = "__fixunssfsi", .linkage = linkage }); | 325 | @export(__fixunssfsi, .{ .name = "__fixunssfsi", .linkage = linkage }); |
| 296 | const __fixunssfdi = @import("compiler_rt/fixunssfdi.zig").__fixunssfdi; | 326 | const __fixunssfdi = @import("compiler_rt/fixunssfdi.zig").__fixunssfdi; |
| ... | @@ -333,18 +363,13 @@ comptime { | ... | @@ -333,18 +363,13 @@ comptime { |
| 333 | | 363 | |
| 334 | const __udivmoddi4 = @import("compiler_rt/int.zig").__udivmoddi4; | 364 | const __udivmoddi4 = @import("compiler_rt/int.zig").__udivmoddi4; |
| 335 | @export(__udivmoddi4, .{ .name = "__udivmoddi4", .linkage = linkage }); | 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 | if (is_darwin) { | 367 | if (is_darwin) { |
| 344 | const __isPlatformVersionAtLeast = @import("compiler_rt/os_version_check.zig").__isPlatformVersionAtLeast; | 368 | const __isPlatformVersionAtLeast = @import("compiler_rt/os_version_check.zig").__isPlatformVersionAtLeast; |
| 345 | @export(__isPlatformVersionAtLeast, .{ .name = "__isPlatformVersionAtLeast", .linkage = linkage }); | 369 | @export(__isPlatformVersionAtLeast, .{ .name = "__isPlatformVersionAtLeast", .linkage = linkage }); |
| 346 | } | 370 | } |
| 347 | | 371 | |
| | 372 | // Integral arithmetic |
| 348 | const __mulsi3 = @import("compiler_rt/int.zig").__mulsi3; | 373 | const __mulsi3 = @import("compiler_rt/int.zig").__mulsi3; |
| 349 | @export(__mulsi3, .{ .name = "__mulsi3", .linkage = linkage }); | 374 | @export(__mulsi3, .{ .name = "__mulsi3", .linkage = linkage }); |
| 350 | const __muldi3 = @import("compiler_rt/muldi3.zig").__muldi3; | 375 | const __muldi3 = @import("compiler_rt/muldi3.zig").__muldi3; |
| ... | @@ -372,24 +397,26 @@ comptime { | ... | @@ -372,24 +397,26 @@ comptime { |
| 372 | const __udivmodsi4 = @import("compiler_rt/int.zig").__udivmodsi4; | 397 | const __udivmodsi4 = @import("compiler_rt/int.zig").__udivmodsi4; |
| 373 | @export(__udivmodsi4, .{ .name = "__udivmodsi4", .linkage = linkage }); | 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 | const __negsf2 = @import("compiler_rt/negXf2.zig").__negsf2; | 415 | const __negsf2 = @import("compiler_rt/negXf2.zig").__negsf2; |
| 376 | @export(__negsf2, .{ .name = "__negsf2", .linkage = linkage }); | 416 | @export(__negsf2, .{ .name = "__negsf2", .linkage = linkage }); |
| 377 | const __negdf2 = @import("compiler_rt/negXf2.zig").__negdf2; | 417 | const __negdf2 = @import("compiler_rt/negXf2.zig").__negdf2; |
| 378 | @export(__negdf2, .{ .name = "__negdf2", .linkage = linkage }); | 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 | if (builtin.link_libc and os_tag == .openbsd) { | 420 | if (builtin.link_libc and os_tag == .openbsd) { |
| 394 | const __emutls_get_address = @import("compiler_rt/emutls.zig").__emutls_get_address; | 421 | const __emutls_get_address = @import("compiler_rt/emutls.zig").__emutls_get_address; |
| 395 | @export(__emutls_get_address, .{ .name = "__emutls_get_address", .linkage = linkage }); | 422 | @export(__emutls_get_address, .{ .name = "__emutls_get_address", .linkage = linkage }); |