[llvm-branch-commits] [llvm] release/19.x: [PowerPC] Respect endianness when bitcasting to fp128 (#95931) (PR #105623)
tgross35 wrote: (I'm not really involved with LLVM but I am doing a lot of f128 work and requested the backport) This seems unlikely to be a regression. There have a handful of f128-related bugs on various ppc platforms so I suspect this is just something that hadn't been tested before now. The problem this fixes is pretty fundamental, it means any sort of soft float operations are completely broken on some ppc targets. This is how I originally identified the issue, in https://github.com/rust-lang/compiler-builtins/pull/606#issuecomment-2105657287. Backporting isn't critical; at this time it probably only affects those of us that are experimenting with f128 support, there can't be many/any end users. I was just hoping for a fix soonish to get ppc f128 caught up to the other targets, since is one of the few popular 64-bit linux target to still have bugs (our more complete list: https://github.com/rust-lang/rust/blob/3f121b9461cce02a703a0e7e450568849dfaa074/library/std/build.rs#L123-L141) https://github.com/llvm/llvm-project/pull/105623 ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [llvm] release/19.x: [loongarch][DAG][FREEZE] Fix crash when FREEZE a half(f16) type on loongarch (#107791) (PR #109093)
tgross35 wrote: > @heiher this would still break the ABI right? so it would still create > problem for downstream users like rust? Speaking only from a Rust perspective, don't worry too much about making breaking changes that fix `f16` or `f128` behavior. The types are nightly-only for now (probably will be that way for at least a year or so) so we don't have any public guarantees. (I would just get to un-skip `f16` tests on another arch sooner). I don't know what other frontends exposes this type but the commit mentions Zig. If it is preferable to keep using float registers, it sounds like there is another fix for the precision issue rather than changing the ABI https://github.com/llvm/llvm-project/issues/97975#issuecomment-2218678418. I don't think there is a test for the precision yet. https://github.com/llvm/llvm-project/pull/109093 ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [llvm] release/19.x: [loongarch][DAG][FREEZE] Fix crash when FREEZE a half(f16) type on loongarch (#107791) (PR #109093)
tgross35 wrote: > Currently, Rust's compiler-builtins has marked fp16 as available for > loongarch64, but in fact, the functionality is broken. Even with this patch, > it is not optimal. Subjectively, I hope these patches can be backported to > LLVM 19 to avoid ABI incompatibility issues across multiple versions. If we > don’t break anything unrelated to fp16, it won’t be a bad thing to work on > fixing fp16, as it was already broken to begin with. Thanks. If you are referring to https://github.com/rust-lang/compiler-builtins/blob/bb18ce58c2b5fec081a5dd3553aa960a36b8de5c/configure.rs#L51-L91, we only disable f16/f128 on platforms where LLVM 19 actually has a crash or produces code that can't be linked. Quite a few of the targets that aren't disabled there have some form of ABI issue - so we just build the symbols but don't actually test with them. (the config for what gets tested is at https://github.com/rust-lang/rust/blob/2bd1e894efde3b6be857ad345914a3b1cea51def/library/std/build.rs#L81-L186) https://github.com/llvm/llvm-project/pull/109093 ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [llvm] release/20.x: [PowerPC] Support conversion between f16 and f128 (#130158) (PR #132049)
tgross35 wrote: > @tgross35 What do you think about merging this PR to the release branch? I'd be happy to have it but it's certainly not my call. @RolandF77 was the original reviewer. https://github.com/llvm/llvm-project/pull/132049 ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [llvm] RuntimeLibcalls: Remove darwin override of half convert libcalls (PR #148782)
https://github.com/tgross35 commented: LGTM, this matches what I've seen while inspecting the tablegen output https://github.com/llvm/llvm-project/pull/148782 ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [llvm] RuntimeLibcalls: Stop opting out of exp10 (PR #148604)
@@ -0,0 +1,31 @@ +; RUN: %if aarch64-registered-target %{ llc < %s -mtriple=aarch64-unknown-linux-gnu| FileCheck %s --check-prefixes=CHECK-ALL,CHECK-USELD %} +; RUN: %if aarch64-registered-target %{ llc < %s -mtriple=aarch64-unknown-linux-musl | FileCheck %s --check-prefixes=CHECK-ALL,CHECK-USELD %} +; RUN: %if aarch64-registered-target %{ llc < %s -mtriple=aarch64-unknown-none | FileCheck %s --check-prefixes=CHECK-ALL,CHECK-USELD %} +; RUN: %if aarch64-registered-target %{ not llc -mtriple=arm64-apple-macosx -filetype=null %s 2>&1 | FileCheck --check-prefix=ERR %s %} +; RUN: %if arm-registered-target %{ llc < %s -mtriple=arm-none-eabi | FileCheck %s --check-prefixes=CHECK-ALL,CHECK-USELD %} +; RUN: %if arm-registered-target %{ llc < %s -mtriple=arm-unknown-linux-gnueabi| FileCheck %s --check-prefixes=CHECK-ALL,CHECK-USELD %} +; RUN: %if powerpc-registered-target %{ llc < %s -mtriple=powerpc-unknown-linux-gnu| FileCheck %s --check-prefixes=CHECK-ALL,CHECK-F128 %} +; RUN: %if powerpc-registered-target %{ llc < %s -mtriple=powerpc64-unknown-linux-gnu | FileCheck %s --check-prefixes=CHECK-ALL,CHECK-F128 %} +; RUN: %if powerpc-registered-target %{ llc < %s -mtriple=powerpc64-unknown-linux-musl | FileCheck %s --check-prefixes=CHECK-ALL,CHECK-F128 %} +; RUN: %if riscv-registered-target %{ llc < %s -mtriple=riscv32-unknown-linux-gnu| FileCheck %s --check-prefixes=CHECK-ALL,CHECK-USELD %} +; RUN: %if systemz-registered-target %{ llc < %s -mtriple=s390x-unknown-linux-gnu | FileCheck %s --check-prefixes=CHECK-ALL,CHECK-S390X %} +; RUN: %if x86-registered-target %{ llc < %s -mtriple=i686-unknown-linux-gnu | FileCheck %s --check-prefixes=CHECK-ALL,CHECK-F128 %} +; RUN: %if x86-registered-target %{ llc < %s -mtriple=i686-unknown-linux-musl | FileCheck %s --check-prefixes=CHECK-ALL,CHECK-USELD %} +; RUN: %if x86-registered-target %{ llc < %s -mtriple=x86_64-unknown-linux-gnu | FileCheck %s --check-prefixes=CHECK-ALL,CHECK-F128 %} +; RUN: %if x86-registered-target %{ llc < %s -mtriple=x86_64-unknown-linux-musl| FileCheck %s --check-prefixes=CHECK-ALL,CHECK-USELD %} +; +; FIXME(#144006): Windows-MSVC should also be run but has a ldexp selection +; failure. +; %if x86-registered-target %{ llc < %s -mtriple=x86_64-pc-windows-msvc -verify-machineinstrs | FileCheck %s --check-prefixes=CHECK-ALL,CHECK-F128 %} tgross35 wrote: ```suggestion ; RUN %if x86-registered-target %{ llc < %s -mtriple=x86_64-pc-windows-msvc | FileCheck %s --check-prefixes=CHECK-ALL,CHECK-F128 %} ``` Since that's not relevant here. I'll wind up removing these in https://github.com/llvm/llvm-project/pull/148326 anyway https://github.com/llvm/llvm-project/pull/148604 ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits