[clang] [llvm] [SystemZ] Add support for half (fp16) (PR #109164)
Ulrich Weigand via cfe-commits
cfe-commits at lists.llvm.org
Fri Oct 25 04:26:02 PDT 2024
================
@@ -0,0 +1,201 @@
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
+; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z16 | FileCheck %s
+;
+; Tests for 16-bit floating point (half).
+
+; Incoming half arguments added together and returned.
+define half @fun0(half %Op0, half %Op1) {
+; CHECK-LABEL: fun0:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: stmg %r13, %r15, 104(%r15)
+; CHECK-NEXT: .cfi_offset %r13, -56
+; CHECK-NEXT: .cfi_offset %r14, -48
+; CHECK-NEXT: .cfi_offset %r15, -40
+; CHECK-NEXT: aghi %r15, -168
+; CHECK-NEXT: .cfi_def_cfa_offset 328
+; CHECK-NEXT: std %f8, 160(%r15) # 8-byte Folded Spill
+; CHECK-NEXT: .cfi_offset %f8, -168
+; CHECK-NEXT: vlgvf %r0, %v2, 0
+; CHECK-NEXT: llghr %r2, %r0
+; CHECK-NEXT: vlgvf %r13, %v0, 0
+; CHECK-NEXT: brasl %r14, __gnu_h2f_ieee at PLT
----------------
uweigand wrote:
I believe we should be using `__extendhfsf2` / `__truncsfhf2` here. At least in GCC, the `__gnu_` routines are treated as something specific to ARM.
https://github.com/llvm/llvm-project/pull/109164
More information about the cfe-commits
mailing list