Skip to content

Commit fb775fb

Browse files
committed
Responding to review comments
Change-Id: Ic1b7f8774ae529680597b4e032c4a63416ac927a
1 parent ea9475e commit fb775fb

File tree

2 files changed

+21
-7
lines changed

2 files changed

+21
-7
lines changed

llvm/lib/Target/AArch64/AArch64ISelLowering.cpp

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -547,8 +547,11 @@ AArch64TargetLowering::AArch64TargetLowering(const TargetMachine &TM,
547547
setOperationAction(ISD::STRICT_FP_ROUND, MVT::f32, Custom);
548548
setOperationAction(ISD::STRICT_FP_ROUND, MVT::f64, Custom);
549549

550-
if (Subtarget->hasFPARMv8())
551-
setOperationAction(ISD::FP_ROUND, MVT::f16, Custom);
550+
if (Subtarget->hasFPARMv8()) {
551+
setOperationAction(ISD::BITCAST, MVT::i16, Custom);
552+
setOperationAction(ISD::BITCAST, MVT::f16, Custom);
553+
setOperationAction(ISD::BITCAST, MVT::bf16, Custom);
554+
}
552555

553556
setOperationAction(ISD::FP_TO_UINT_SAT, MVT::i32, Custom);
554557
setOperationAction(ISD::FP_TO_UINT_SAT, MVT::i64, Custom);
@@ -24617,8 +24620,8 @@ void AArch64TargetLowering::ReplaceBITCASTResults(
2461724620
EVT VT = N->getValueType(0);
2461824621
EVT SrcVT = Op.getValueType();
2461924622

24620-
// Default to the generic legalizer
24621-
if (SrcVT == MVT::f16 && !Subtarget->hasFPARMv8())
24623+
if (!Subtarget->hasFPARMv8() &&
24624+
(SrcVT == MVT::f16 || SrcVT == MVT::i16 || SrcVT == MVT::bf16))
2462224625
return;
2462324626

2462424627
if (VT == MVT::v2i16 && SrcVT == MVT::i32) {

llvm/test/CodeGen/AArch64/float16-promotion-with-nofp.ll renamed to llvm/test/CodeGen/AArch64/16bit-float-promotion-with-nofp.ll

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,24 @@ define half @f2h(float %a) {
88
; CHECK-NEXT: .cfi_def_cfa_offset 16
99
; CHECK-NEXT: .cfi_offset w30, -16
1010
; CHECK-NEXT: bl __gnu_f2h_ieee
11-
; CHECK-NEXT: and w0, w0, #0xffff
12-
; CHECK-NEXT: bl __gnu_h2f_ieee
13-
; CHECK-NEXT: bl __gnu_f2h_ieee
1411
; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
1512
; CHECK-NEXT: ret
1613
entry:
1714
%0 = fptrunc float %a to half
1815
ret half %0
1916
}
2017

18+
define bfloat @f2bfloat(float %a) {
19+
; CHECK-LABEL: f2bfloat:
20+
; CHECK: // %bb.0: // %entry
21+
; CHECK-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
22+
; CHECK-NEXT: .cfi_def_cfa_offset 16
23+
; CHECK-NEXT: .cfi_offset w30, -16
24+
; CHECK-NEXT: bl __truncsfbf2
25+
; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
26+
; CHECK-NEXT: ret
27+
entry:
28+
%0 = fptrunc float %a to bfloat
29+
ret bfloat %0
30+
}
31+

0 commit comments

Comments
 (0)