authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2024-11-24 18:47:21+01:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2024-11-24 18:47:21+01:00
log6d781e0955e7dd2b6cc17a5bb43c790e19a07ac0
treed0a320c4ca54f7a7c7320a3bce840448c300e7c6
parente163ae794b6d6598833c6a8248a818e1e49ce794
parentaa19e71a27a653b01908f334077fd23905a0d291
signaturebadge-check Signed by PGP key B5690EEEBB952194

Merge pull request #22062 from alexrp/hexagon-fixes

Some follow-up fixes for #22029

2 files changed, 32 insertions(+), 29 deletions(-)

lib/compiler_rt/hexagon.zig+28-29
...@@ -938,7 +938,7 @@ fn __hexagon_divdf3() align(32) callconv(.naked) noreturn {...@@ -938,7 +938,7 @@ fn __hexagon_divdf3() align(32) callconv(.naked) noreturn {
938 \\ }938 \\ }
939 \\ {939 \\ {
940 \\ p0 = cmp.gt(r12,#0)940 \\ p0 = cmp.gt(r12,#0)
941 \\ if (p0.new) jump:nt .Lpossible_unf941 \\ if (p0.new) jump:nt .Ldiv_possible_unf
942 \\ }942 \\ }
943 \\ {943 \\ {
944 \\ r13 = add(clb(r7:6),#-1)944 \\ r13 = add(clb(r7:6),#-1)
...@@ -981,7 +981,7 @@ fn __hexagon_divdf3() align(32) callconv(.naked) noreturn {...@@ -981,7 +981,7 @@ fn __hexagon_divdf3() align(32) callconv(.naked) noreturn {
981 \\ }981 \\ }
982 \\982 \\
983 \\983 \\
984 \\ .Lpossible_unf:984 \\ .Ldiv_possible_unf:
985 \\985 \\
986 \\986 \\
987 \\ {987 \\ {
...@@ -1250,7 +1250,7 @@ fn __hexagon_muldf3() align(32) callconv(.naked) noreturn {...@@ -1250,7 +1250,7 @@ fn __hexagon_muldf3() align(32) callconv(.naked) noreturn {
1250 \\ }1250 \\ }
1251 \\1251 \\
1252 \\ .falign1252 \\ .falign
1253 \\ .Lpossible_unf:1253 \\ .Lmul_possible_unf:
1254 \\ {1254 \\ {
1255 \\ p0 = cmp.eq(r0,#0)1255 \\ p0 = cmp.eq(r0,#0)
1256 \\ p0 = bitsclr(r1,r4)1256 \\ p0 = bitsclr(r1,r4)
...@@ -1295,7 +1295,7 @@ fn __hexagon_muldf3() align(32) callconv(.naked) noreturn {...@@ -1295,7 +1295,7 @@ fn __hexagon_muldf3() align(32) callconv(.naked) noreturn {
1295 \\ }1295 \\ }
1296 \\ {1296 \\ {
1297 \\ p0 = cmp.gt(r7,#0)1297 \\ p0 = cmp.gt(r7,#0)
1298 \\ if (p0.new) jump:nt .Lpossible_unf1298 \\ if (p0.new) jump:nt .Lmul_possible_unf
1299 \\ r5 = sub(r6,r5)1299 \\ r5 = sub(r6,r5)
1300 \\ r28 = #631300 \\ r28 = #63
1301 \\ }1301 \\ }
...@@ -1759,30 +1759,29 @@ fn __hexagon_sqrtdf2() align(32) callconv(.naked) noreturn {...@@ -1759,30 +1759,29 @@ fn __hexagon_sqrtdf2() align(32) callconv(.naked) noreturn {
17591759
1760comptime {1760comptime {
1761 if (builtin.cpu.arch == .hexagon) {1761 if (builtin.cpu.arch == .hexagon) {
1762 @export(__hexagon_adddf3, .{ .name = "__hexagon_adddf3", .linkage = common.linkage, .visibility = common.visibility });1762 @export(&__hexagon_adddf3, .{ .name = "__hexagon_adddf3", .linkage = common.linkage, .visibility = common.visibility });
1763 @export(__hexagon_adddf3, .{ .name = "__hexagon_fast_adddf3", .linkage = common.linkage, .visibility = common.visibility });1763 @export(&__hexagon_adddf3, .{ .name = "__hexagon_fast_adddf3", .linkage = common.linkage, .visibility = common.visibility });
1764 @export(__hexagon_subdf3, .{ .name = "__hexagon_subdf3", .linkage = common.linkage, .visibility = common.visibility });1764 @export(&__hexagon_subdf3, .{ .name = "__hexagon_subdf3", .linkage = common.linkage, .visibility = common.visibility });
1765 @export(__hexagon_subdf3, .{ .name = "__hexagon_fast_subdf3", .linkage = common.linkage, .visibility = common.visibility });1765 @export(&__hexagon_subdf3, .{ .name = "__hexagon_fast_subdf3", .linkage = common.linkage, .visibility = common.visibility });
1766 @export(__hexagon_divdf3, .{ .name = "__hexagon_divdf3", .linkage = common.linkage, .visibility = common.visibility });1766 @export(&__hexagon_divdf3, .{ .name = "__hexagon_divdf3", .linkage = common.linkage, .visibility = common.visibility });
1767 @export(__hexagon_divdf3, .{ .name = "__hexagon_fast_divdf3", .linkage = common.linkage, .visibility = common.visibility });1767 @export(&__hexagon_divdf3, .{ .name = "__hexagon_fast_divdf3", .linkage = common.linkage, .visibility = common.visibility });
1768 @export(__hexagon_muldf3, .{ .name = "__hexagon_muldf3", .linkage = common.linkage, .visibility = common.visibility });1768 @export(&__hexagon_muldf3, .{ .name = "__hexagon_muldf3", .linkage = common.linkage, .visibility = common.visibility });
1769 @export(__hexagon_muldf3, .{ .name = "__hexagon_fast_muldf3", .linkage = common.linkage, .visibility = common.visibility });1769 @export(&__hexagon_muldf3, .{ .name = "__hexagon_fast_muldf3", .linkage = common.linkage, .visibility = common.visibility });
1770 @export(__hexagon_sqrtdf2, .{ .name = "__hexagon_sqrtdf2", .linkage = common.linkage, .visibility = common.visibility });1770 @export(&__hexagon_sqrtdf2, .{ .name = "__hexagon_sqrtdf2", .linkage = common.linkage, .visibility = common.visibility });
1771 @export(__hexagon_sqrtdf2, .{ .name = "__hexagon_fast2_sqrtdf2", .linkage = common.linkage, .visibility = common.visibility });1771 @export(&__hexagon_sqrtdf2, .{ .name = "__hexagon_fast2_sqrtdf2", .linkage = common.linkage, .visibility = common.visibility });
1772 @export(__hexagon_sqrtdf2, .{ .name = "__hexagon_sqrt", .linkage = common.linkage, .visibility = common.visibility });1772 @export(&__hexagon_sqrtdf2, .{ .name = "__hexagon_sqrt", .linkage = common.linkage, .visibility = common.visibility });
1773 @export(__hexagon_divsf3, .{ .name = "__hexagon_divsf3", .linkage = common.linkage, .visibility = common.visibility });1773 @export(&__hexagon_divsf3, .{ .name = "__hexagon_divsf3", .linkage = common.linkage, .visibility = common.visibility });
1774 @export(__hexagon_divsf3, .{ .name = "__hexagon_fast_divsf3", .linkage = common.linkage, .visibility = common.visibility });1774 @export(&__hexagon_divsf3, .{ .name = "__hexagon_fast_divsf3", .linkage = common.linkage, .visibility = common.visibility });
1775 @export(__hexagon_divsi3, .{ .name = "__hexagon_divsi3", .linkage = common.linkage, .visibility = common.visibility });1775 @export(&__hexagon_divsi3, .{ .name = "__hexagon_divsi3", .linkage = common.linkage, .visibility = common.visibility });
1776 @export(__hexagon_umodsi3, .{ .name = "__hexagon_umodsi3", .linkage = common.linkage, .visibility = common.visibility });1776 @export(&__hexagon_umodsi3, .{ .name = "__hexagon_umodsi3", .linkage = common.linkage, .visibility = common.visibility });
1777 @export(__hexagon_sqrtf, .{ .name = "__hexagon_sqrtf", .linkage = common.linkage, .visibility = common.visibility });1777 @export(&__hexagon_sqrtf, .{ .name = "__hexagon_sqrtf", .linkage = common.linkage, .visibility = common.visibility });
1778 @export(__hexagon_sqrtf, .{ .name = "__hexagon_fast2_sqrtf", .linkage = common.linkage, .visibility = common.visibility });1778 @export(&__hexagon_sqrtf, .{ .name = "__hexagon_fast2_sqrtf", .linkage = common.linkage, .visibility = common.visibility });
1779 @export(__hexagon_moddi3, .{ .name = "__hexagon_moddi3", .linkage = common.linkage, .visibility = common.visibility });1779 @export(&__hexagon_moddi3, .{ .name = "__hexagon_moddi3", .linkage = common.linkage, .visibility = common.visibility });
1780 @export(__hexagon_divdi3, .{ .name = "__hexagon_divdi3", .linkage = common.linkage, .visibility = common.visibility });1780 @export(&__hexagon_divdi3, .{ .name = "__hexagon_divdi3", .linkage = common.linkage, .visibility = common.visibility });
1781 @export(__hexagon_divsf3, .{ .name = "__hexagon_divsf3", .linkage = common.linkage, .visibility = common.visibility });1781 @export(&__hexagon_udivdi3, .{ .name = "__hexagon_udivdi3", .linkage = common.linkage, .visibility = common.visibility });
1782 @export(__hexagon_udivdi3, .{ .name = "__hexagon_udivdi3", .linkage = common.linkage, .visibility = common.visibility });1782 @export(&__hexagon_umoddi3, .{ .name = "__hexagon_umoddi3", .linkage = common.linkage, .visibility = common.visibility });
1783 @export(__hexagon_umoddi3, .{ .name = "__hexagon_umoddi3", .linkage = common.linkage, .visibility = common.visibility });1783 @export(&__hexagon_modsi3, .{ .name = "__hexagon_modsi3", .linkage = common.linkage, .visibility = common.visibility });
1784 @export(__hexagon_modsi3, .{ .name = "__hexagon_modsi3", .linkage = common.linkage, .visibility = common.visibility });1784 @export(&__hexagon_memcpy_likely_aligned_min32bytes_mult8bytes, .{ .name = "__hexagon_memcpy_likely_aligned_min32bytes_mult8bytes", .linkage = common.linkage, .visibility = common.visibility });
1785 @export(__hexagon_memcpy_likely_aligned_min32bytes_mult8bytes, .{ .name = "__hexagon_memcpy_likely_aligned_min32bytes_mult8bytes", .linkage = common.linkage, .visibility = common.visibility });1785 @export(&__hexagon_udivsi3, .{ .name = "__hexagon_udivsi3", .linkage = common.linkage, .visibility = common.visibility });
1786 @export(__hexagon_udivsi3, .{ .name = "__hexagon_udivsi3", .linkage = common.linkage, .visibility = common.visibility });
1787 }1786 }
1788}1787}
lib/zig.h+4
...@@ -256,6 +256,8 @@ typedef char bool;...@@ -256,6 +256,8 @@ typedef char bool;
256#define zig_trap() __asm__ volatile("udf #0xfe")256#define zig_trap() __asm__ volatile("udf #0xfe")
257#elif defined(__arm__) || defined(__aarch64__)257#elif defined(__arm__) || defined(__aarch64__)
258#define zig_trap() __asm__ volatile("udf #0xfdee")258#define zig_trap() __asm__ volatile("udf #0xfdee")
259#elif defined(__hexagon__)
260#define zig_trap() __asm__ volatile("r27:26 = memd(#0xbadc0fee)")
259#elif defined(__loongarch__) || defined(__powerpc__)261#elif defined(__loongarch__) || defined(__powerpc__)
260#define zig_trap() __asm__ volatile(".word 0x0")262#define zig_trap() __asm__ volatile(".word 0x0")
261#elif defined(__mips__)263#elif defined(__mips__)
...@@ -280,6 +282,8 @@ typedef char bool;...@@ -280,6 +282,8 @@ typedef char bool;
280#define zig_breakpoint() __asm__ volatile("bkpt #0x0")282#define zig_breakpoint() __asm__ volatile("bkpt #0x0")
281#elif defined(__aarch64__)283#elif defined(__aarch64__)
282#define zig_breakpoint() __asm__ volatile("brk #0xf000")284#define zig_breakpoint() __asm__ volatile("brk #0xf000")
285#elif defined(__hexagon__)
286#define zig_breakpoint() __asm__ volatile("brkpt")
283#elif defined(__loongarch__)287#elif defined(__loongarch__)
284#define zig_breakpoint() __asm__ volatile("break 0x0")288#define zig_breakpoint() __asm__ volatile("break 0x0")
285#elif defined(__mips__)289#elif defined(__mips__)