Skip to content

Commit 213b0ae

Browse files
authored
[GlobalISel][ARM] legalize G_FPENV_RESET for soft-float mode (#81456)
1 parent d153ef6 commit 213b0ae

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

llvm/lib/Target/ARM/ARMLegalizerInfo.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,8 @@ ARMLegalizerInfo::ARMLegalizerInfo(const ARMSubtarget &ST) {
223223
getActionDefinitionsBuilder({G_SITOFP, G_UITOFP})
224224
.libcallForCartesianProduct({s32, s64}, {s32});
225225

226-
getActionDefinitionsBuilder({G_GET_FPENV, G_SET_FPENV}).libcall();
226+
getActionDefinitionsBuilder({G_GET_FPENV, G_SET_FPENV, G_RESET_FPENV})
227+
.libcall();
227228
}
228229

229230
// Just expand whatever loads and stores are left.

llvm/test/CodeGen/ARM/GlobalISel/fpenv.ll

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,5 +74,19 @@ entry:
7474
ret void
7575
}
7676

77+
define void @func_reset_soft() #0 {
78+
; CHECK-LABEL: func_reset_soft:
79+
; CHECK: @ %bb.0: @ %entry
80+
; CHECK-NEXT: .save {r11, lr}
81+
; CHECK-NEXT: push {r11, lr}
82+
; CHECK-NEXT: mvn r0, #0
83+
; CHECK-NEXT: bl fesetenv
84+
; CHECK-NEXT: pop {r11, lr}
85+
; CHECK-NEXT: mov pc, lr
86+
entry:
87+
call void @llvm.reset.fpenv()
88+
ret void
89+
}
90+
7791
attributes #0 = { nounwind "use-soft-float"="true" }
7892

0 commit comments

Comments
 (0)