authorgravatar for jan.hafer@rwth-aachen.deJan Philipp Hafer <jan.hafer@rwth-aachen.de> 2023-06-15 23:06:45+02:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2023-06-16 23:37:50-07:00
logf043071cdfb956ff16b1441c9d01ce43eea9fb7b
tree04c944e1b2da68edb1e552b1113fb0c65dc92cd5
parente95fc2023f90e8c257dbe0ed247f5245b69f48a4

compiler_rt: add missing PPC routines

Adds conditional exports - __fixkfti - __fixunskfti - __floattikf - __negkf2 - __mulkc3 - __divkc3 - __powikf2 and adjusts tools/gen_stubs.zig. From https://gcc.gnu.org/onlinedocs/gcc/Floating-Types.html: "When long double transitions to __float128 on PowerPC in the future, __ibm128 will remain for use in conversions between the two types." Hence `__extendkftf2` and `__trunctfkf2` for conversion are superfluous and only using f128 for `kf` routines is justified. Closes #16057.

8 files changed, 31 insertions(+), 4 deletions(-)

lib/compiler_rt/divtc3.zig+5-1
...@@ -4,7 +4,11 @@ const Complex = @import("./mulc3.zig").Complex;...@@ -4,7 +4,11 @@ const Complex = @import("./mulc3.zig").Complex;
44
5comptime {5comptime {
6 if (@import("builtin").zig_backend != .stage2_c) {6 if (@import("builtin").zig_backend != .stage2_c) {
7 @export(__divtc3, .{ .name = "__divtc3", .linkage = common.linkage, .visibility = common.visibility });7 if (common.want_ppc_abi) {
8 @export(__divtc3, .{ .name = "__divkc3", .linkage = common.linkage, .visibility = common.visibility });
9 } else {
10 @export(__divtc3, .{ .name = "__divtc3", .linkage = common.linkage, .visibility = common.visibility });
11 }
8 }12 }
9}13}
1014
lib/compiler_rt/fixtfti.zig+2
...@@ -7,6 +7,8 @@ pub const panic = common.panic;...@@ -7,6 +7,8 @@ pub const panic = common.panic;
7comptime {7comptime {
8 if (common.want_windows_v2u64_abi) {8 if (common.want_windows_v2u64_abi) {
9 @export(__fixtfti_windows_x86_64, .{ .name = "__fixtfti", .linkage = common.linkage, .visibility = common.visibility });9 @export(__fixtfti_windows_x86_64, .{ .name = "__fixtfti", .linkage = common.linkage, .visibility = common.visibility });
10 } else if (common.want_ppc_abi) {
11 @export(__fixtfti, .{ .name = "__fixkfti", .linkage = common.linkage, .visibility = common.visibility });
10 } else {12 } else {
11 @export(__fixtfti, .{ .name = "__fixtfti", .linkage = common.linkage, .visibility = common.visibility });13 @export(__fixtfti, .{ .name = "__fixtfti", .linkage = common.linkage, .visibility = common.visibility });
12 }14 }
lib/compiler_rt/fixunstfti.zig+2
...@@ -7,6 +7,8 @@ pub const panic = common.panic;...@@ -7,6 +7,8 @@ pub const panic = common.panic;
7comptime {7comptime {
8 if (common.want_windows_v2u64_abi) {8 if (common.want_windows_v2u64_abi) {
9 @export(__fixunstfti_windows_x86_64, .{ .name = "__fixunstfti", .linkage = common.linkage, .visibility = common.visibility });9 @export(__fixunstfti_windows_x86_64, .{ .name = "__fixunstfti", .linkage = common.linkage, .visibility = common.visibility });
10 } else if (common.want_ppc_abi) {
11 @export(__fixunstfti, .{ .name = "__fixunskfti", .linkage = common.linkage, .visibility = common.visibility });
10 } else {12 } else {
11 @export(__fixunstfti, .{ .name = "__fixunstfti", .linkage = common.linkage, .visibility = common.visibility });13 @export(__fixunstfti, .{ .name = "__fixunstfti", .linkage = common.linkage, .visibility = common.visibility });
12 }14 }
lib/compiler_rt/floattitf.zig+2
...@@ -7,6 +7,8 @@ pub const panic = common.panic;...@@ -7,6 +7,8 @@ pub const panic = common.panic;
7comptime {7comptime {
8 if (common.want_windows_v2u64_abi) {8 if (common.want_windows_v2u64_abi) {
9 @export(__floattitf_windows_x86_64, .{ .name = "__floattitf", .linkage = common.linkage, .visibility = common.visibility });9 @export(__floattitf_windows_x86_64, .{ .name = "__floattitf", .linkage = common.linkage, .visibility = common.visibility });
10 } else if (common.want_ppc_abi) {
11 @export(__floattitf, .{ .name = "__floattikf", .linkage = common.linkage, .visibility = common.visibility });
10 } else {12 } else {
11 @export(__floattitf, .{ .name = "__floattitf", .linkage = common.linkage, .visibility = common.visibility });13 @export(__floattitf, .{ .name = "__floattitf", .linkage = common.linkage, .visibility = common.visibility });
12 }14 }
lib/compiler_rt/multc3.zig+5-1
...@@ -5,7 +5,11 @@ pub const panic = common.panic;...@@ -5,7 +5,11 @@ pub const panic = common.panic;
55
6comptime {6comptime {
7 if (@import("builtin").zig_backend != .stage2_c) {7 if (@import("builtin").zig_backend != .stage2_c) {
8 @export(__multc3, .{ .name = "__multc3", .linkage = common.linkage, .visibility = common.visibility });8 if (common.want_ppc_abi) {
9 @export(__multc3, .{ .name = "__mulkc3", .linkage = common.linkage, .visibility = common.visibility });
10 } else {
11 @export(__multc3, .{ .name = "__multc3", .linkage = common.linkage, .visibility = common.visibility });
12 }
9 }13 }
10}14}
1115
lib/compiler_rt/negtf2.zig+5-1
...@@ -3,7 +3,11 @@ const common = @import("./common.zig");...@@ -3,7 +3,11 @@ const common = @import("./common.zig");
3pub const panic = common.panic;3pub const panic = common.panic;
44
5comptime {5comptime {
6 @export(__negtf2, .{ .name = "__negtf2", .linkage = common.linkage, .visibility = common.visibility });6 if (common.want_ppc_abi) {
7 @export(__negtf2, .{ .name = "__negkf2", .linkage = common.linkage, .visibility = common.visibility });
8 } else {
9 @export(__negtf2, .{ .name = "__negtf2", .linkage = common.linkage, .visibility = common.visibility });
10 }
7}11}
812
9fn __negtf2(a: f128) callconv(.C) f128 {13fn __negtf2(a: f128) callconv(.C) f128 {
lib/compiler_rt/powiXf2.zig+5-1
...@@ -13,7 +13,11 @@ comptime {...@@ -13,7 +13,11 @@ comptime {
13 @export(__powihf2, .{ .name = "__powihf2", .linkage = common.linkage, .visibility = common.visibility });13 @export(__powihf2, .{ .name = "__powihf2", .linkage = common.linkage, .visibility = common.visibility });
14 @export(__powisf2, .{ .name = "__powisf2", .linkage = common.linkage, .visibility = common.visibility });14 @export(__powisf2, .{ .name = "__powisf2", .linkage = common.linkage, .visibility = common.visibility });
15 @export(__powidf2, .{ .name = "__powidf2", .linkage = common.linkage, .visibility = common.visibility });15 @export(__powidf2, .{ .name = "__powidf2", .linkage = common.linkage, .visibility = common.visibility });
16 @export(__powitf2, .{ .name = "__powitf2", .linkage = common.linkage, .visibility = common.visibility });16 if (common.want_ppc_abi) {
17 @export(__powitf2, .{ .name = "__powikf2", .linkage = common.linkage, .visibility = common.visibility });
18 } else {
19 @export(__powitf2, .{ .name = "__powitf2", .linkage = common.linkage, .visibility = common.visibility });
20 }
17 @export(__powixf2, .{ .name = "__powixf2", .linkage = common.linkage, .visibility = common.visibility });21 @export(__powixf2, .{ .name = "__powixf2", .linkage = common.linkage, .visibility = common.visibility });
18}22}
1923
tools/gen_stubs.zig+5
...@@ -703,6 +703,7 @@ const blacklisted_symbols = [_][]const u8{...@@ -703,6 +703,7 @@ const blacklisted_symbols = [_][]const u8{
703 "__fixdfti",703 "__fixdfti",
704 "__fixkfdi",704 "__fixkfdi",
705 "__fixkfsi",705 "__fixkfsi",
706 "__fixkfti",
706 "__fixsfdi",707 "__fixsfdi",
707 "__fixsfsi",708 "__fixsfsi",
708 "__fixsfti",709 "__fixsfti",
...@@ -714,6 +715,7 @@ const blacklisted_symbols = [_][]const u8{...@@ -714,6 +715,7 @@ const blacklisted_symbols = [_][]const u8{
714 "__fixunsdfti",715 "__fixunsdfti",
715 "__fixunskfdi",716 "__fixunskfdi",
716 "__fixunskfsi",717 "__fixunskfsi",
718 "__fixunskfti",
717 "__fixunssfdi",719 "__fixunssfdi",
718 "__fixunssfsi",720 "__fixunssfsi",
719 "__fixunssfti",721 "__fixunssfti",
...@@ -737,6 +739,7 @@ const blacklisted_symbols = [_][]const u8{...@@ -737,6 +739,7 @@ const blacklisted_symbols = [_][]const u8{
737 "__floatsitf",739 "__floatsitf",
738 "__floatsixf",740 "__floatsixf",
739 "__floattidf",741 "__floattidf",
742 "__floattikf",
740 "__floattisf",743 "__floattisf",
741 "__floattitf",744 "__floattitf",
742 "__floattixf",745 "__floattixf",
...@@ -802,6 +805,7 @@ const blacklisted_symbols = [_][]const u8{...@@ -802,6 +805,7 @@ const blacklisted_symbols = [_][]const u8{
802 "__muldc3",805 "__muldc3",
803 "__muldf3",806 "__muldf3",
804 "__muldi3",807 "__muldi3",
808 "__mulkc3",
805 "__mulkf3",809 "__mulkf3",
806 "__mulodi4",810 "__mulodi4",
807 "__mulosi4",811 "__mulosi4",
...@@ -835,6 +839,7 @@ const blacklisted_symbols = [_][]const u8{...@@ -835,6 +839,7 @@ const blacklisted_symbols = [_][]const u8{
835 "__popcountti2",839 "__popcountti2",
836 "__powidf2",840 "__powidf2",
837 "__powihf2",841 "__powihf2",
842 "__powikf2",
838 "__powisf2",843 "__powisf2",
839 "__powitf2",844 "__powitf2",
840 "__powixf2",845 "__powixf2",