Files
Jonas Paulsson 6d03f51f0c [SystemZ] Add support for 16-bit floating point. (#109164)
- _Float16 is now accepted by Clang.

- The half IR type is fully handled by the backend.

- These values are passed in FP registers and converted to/from float around
  each operation.

- Compiler-rt conversion functions are now built for s390x including the missing
  extendhfdf2 which was added.

Fixes #50374
2025-04-16 20:02:56 +02:00

40 lines
842 B
LLVM

; Test the FPR constraint "f".
;
; RUN: llc < %s -mtriple=s390x-linux-gnu -no-integrated-as | FileCheck %s
define half @f0() {
; CHECK-LABEL: f0:
; CHECK: lzer %f1
; CHECK: blah %f0 %f1
; CHECK: br %r14
%val = call half asm "blah $0 $1", "=&f,f" (half 0.0)
ret half %val
}
define float @f1() {
; CHECK-LABEL: f1:
; CHECK: lzer %f1
; CHECK: blah %f0 %f1
; CHECK: br %r14
%val = call float asm "blah $0 $1", "=&f,f" (float 0.0)
ret float %val
}
define double @f2() {
; CHECK-LABEL: f2:
; CHECK: lzdr %f1
; CHECK: blah %f0 %f1
; CHECK: br %r14
%val = call double asm "blah $0 $1", "=&f,f" (double 0.0)
ret double %val
}
define double @f3() {
; CHECK-LABEL: f3:
; CHECK: lzxr %f1
; CHECK: blah %f0 %f1
; CHECK: br %r14
%val = call double asm "blah $0 $1", "=&f,f" (fp128 0xL00000000000000000000000000000000)
ret double %val
}