Serge Pavlov c4e38fadfa [AArch64] Mark function calls as possibly changing FPCR
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
2023-02-01 12:06:51 +07:00

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)