1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-24 13:33:37 +02:00
llvm-mirror/test/CodeGen/PowerPC/vsx-fma-mutate-trivial-copy.ll
Hal Finkel d1f0f5ba25 [PowerPC] PPCVSXFMAMutate should ignore trivial-copy addends
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.

llvm-svn: 245907
2015-08-24 23:48:28 +00:00

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 }