
This patch does the same changes as D111433 for PowerPC and D139549 for X86, - in the strictfp function all calls are marked as implicit defs of FPCR. It prevents from moving FP operations across function calls, which may change rounding mode, as fesetround does. Differential Revision: https://reviews.llvm.org/D143001
14 lines
575 B
LLVM
14 lines
575 B
LLVM
; RUN: llc -mtriple aarch64-none-linux-gnu -stop-after=finalize-isel %s -o - | FileCheck %s
|
|
|
|
define float @func_02(float %x, float %y) strictfp nounwind {
|
|
%call = call float @func_01(float %x) strictfp
|
|
%res = call float @llvm.experimental.constrained.fadd.f32(float %call, float %y, metadata !"round.dynamic", metadata !"fpexcept.ignore") strictfp
|
|
ret float %res
|
|
}
|
|
; CHECK-LABEL: name: func_02
|
|
; CHECK: BL @func_01, {{.*}}, implicit-def $fpcr
|
|
|
|
|
|
declare float @func_01(float)
|
|
declare float @llvm.experimental.constrained.fadd.f32(float, float, metadata, metadata)
|