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;
44
55comptime {
66 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 }
812 }
913}
1014
lib/compiler_rt/fixtfti.zig+2
......@@ -7,6 +7,8 @@ pub const panic = common.panic;
77comptime {
88 if (common.want_windows_v2u64_abi) {
99 @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 });
1012 } else {
1113 @export(__fixtfti, .{ .name = "__fixtfti", .linkage = common.linkage, .visibility = common.visibility });
1214 }
lib/compiler_rt/fixunstfti.zig+2
......@@ -7,6 +7,8 @@ pub const panic = common.panic;
77comptime {
88 if (common.want_windows_v2u64_abi) {
99 @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 });
1012 } else {
1113 @export(__fixunstfti, .{ .name = "__fixunstfti", .linkage = common.linkage, .visibility = common.visibility });
1214 }
lib/compiler_rt/floattitf.zig+2
......@@ -7,6 +7,8 @@ pub const panic = common.panic;
77comptime {
88 if (common.want_windows_v2u64_abi) {
99 @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 });
1012 } else {
1113 @export(__floattitf, .{ .name = "__floattitf", .linkage = common.linkage, .visibility = common.visibility });
1214 }
lib/compiler_rt/multc3.zig+5-1
......@@ -5,7 +5,11 @@ pub const panic = common.panic;
55
66comptime {
77 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 }
913 }
1014}
1115
lib/compiler_rt/negtf2.zig+5-1
......@@ -3,7 +3,11 @@ const common = @import("./common.zig");
33pub const panic = common.panic;
44
55comptime {
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 }
711}
812
913fn __negtf2(a: f128) callconv(.C) f128 {
lib/compiler_rt/powiXf2.zig+5-1
......@@ -13,7 +13,11 @@ comptime {
1313 @export(__powihf2, .{ .name = "__powihf2", .linkage = common.linkage, .visibility = common.visibility });
1414 @export(__powisf2, .{ .name = "__powisf2", .linkage = common.linkage, .visibility = common.visibility });
1515 @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 }
1721 @export(__powixf2, .{ .name = "__powixf2", .linkage = common.linkage, .visibility = common.visibility });
1822}
1923
tools/gen_stubs.zig+5
......@@ -703,6 +703,7 @@ const blacklisted_symbols = [_][]const u8{
703703 "__fixdfti",
704704 "__fixkfdi",
705705 "__fixkfsi",
706 "__fixkfti",
706707 "__fixsfdi",
707708 "__fixsfsi",
708709 "__fixsfti",
......@@ -714,6 +715,7 @@ const blacklisted_symbols = [_][]const u8{
714715 "__fixunsdfti",
715716 "__fixunskfdi",
716717 "__fixunskfsi",
718 "__fixunskfti",
717719 "__fixunssfdi",
718720 "__fixunssfsi",
719721 "__fixunssfti",
......@@ -737,6 +739,7 @@ const blacklisted_symbols = [_][]const u8{
737739 "__floatsitf",
738740 "__floatsixf",
739741 "__floattidf",
742 "__floattikf",
740743 "__floattisf",
741744 "__floattitf",
742745 "__floattixf",
......@@ -802,6 +805,7 @@ const blacklisted_symbols = [_][]const u8{
802805 "__muldc3",
803806 "__muldf3",
804807 "__muldi3",
808 "__mulkc3",
805809 "__mulkf3",
806810 "__mulodi4",
807811 "__mulosi4",
......@@ -835,6 +839,7 @@ const blacklisted_symbols = [_][]const u8{
835839 "__popcountti2",
836840 "__powidf2",
837841 "__powihf2",
842 "__powikf2",
838843 "__powisf2",
839844 "__powitf2",
840845 "__powixf2",