mirror of
https://github.com/RPCSX/llvm.git
synced 2025-02-08 21:47:23 +00:00
![Hal Finkel](/assets/img/avatar_default.png)
We might end up with a trivial copy as the addend, and if so, we should ignore the corresponding FMA instruction. The trivial copy can be coalesced away later, so there's nothing to do here. We should not, however, assert. Fixes PR24544. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245907 91177308-0d34-0410-b5e6-96231b3b80d8
39 lines
1.2 KiB
LLVM
39 lines
1.2 KiB
LLVM
; RUN: llc < %s | FileCheck %s
|
|
target datalayout = "E-m:e-i64:64-n32:64"
|
|
target triple = "powerpc64-unknown-linux-gnu"
|
|
|
|
; Function Attrs: nounwind
|
|
define void @LSH_recall_init(float %d_min, float %W) #0 {
|
|
entry:
|
|
br i1 undef, label %for.body.lr.ph, label %for.end
|
|
|
|
; CHECK-LABEL: @LSH_recall_init
|
|
; CHECK: xsnmsubadp
|
|
|
|
for.body.lr.ph: ; preds = %entry
|
|
%conv3 = fpext float %W to double
|
|
br label %for.body
|
|
|
|
for.body: ; preds = %for.body, %for.body.lr.ph
|
|
%div = fdiv fast float 0.000000e+00, 0.000000e+00
|
|
%add = fadd fast float %div, %d_min
|
|
%conv2 = fpext float %add to double
|
|
%0 = tail call double @llvm.sqrt.f64(double %conv2)
|
|
%div4 = fdiv fast double %conv3, %0
|
|
%call = tail call signext i32 bitcast (i32 (...)* @p_col_helper to i32 (double)*)(double %div4) #2
|
|
br label %for.body
|
|
|
|
for.end: ; preds = %entry
|
|
ret void
|
|
}
|
|
|
|
; Function Attrs: nounwind readnone
|
|
declare double @llvm.sqrt.f64(double) #1
|
|
|
|
declare signext i32 @p_col_helper(...) #2
|
|
|
|
attributes #0 = { nounwind "no-infs-fp-math"="true" "no-nans-fp-math"="true" "target-cpu"="pwr7" "unsafe-fp-math"="true" }
|
|
attributes #1 = { nounwind readnone }
|
|
attributes #2 = { nounwind }
|
|
|