mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-24 21:42:54 +02:00
c8b097b7ef
This patch adds support for combining patterns such as (FMUL(FADD(1.0, x), y)) and (FMUL(FSUB(x, 1.0), y)) to their FMA equivalents. This is useful in particular for linear interpolation cases such as (FADD(FMUL(x, t), FMUL(y, FSUB(1.0, t)))) Differential Revision: http://reviews.llvm.org/D13003 llvm-svn: 248210
14 lines
623 B
LLVM
14 lines
623 B
LLVM
; RUN: llc -march=amdgcn -mcpu=SI -verify-machineinstrs < %s | FileCheck -check-prefix=SI -check-prefix=FUNC %s
|
|
; RUN: llc -march=amdgcn -mcpu=tonga -verify-machineinstrs < %s | FileCheck -check-prefix=SI -check-prefix=FUNC %s
|
|
|
|
declare float @llvm.AMDGPU.lrp(float, float, float) nounwind readnone
|
|
|
|
; FUNC-LABEL: {{^}}test_lrp:
|
|
; SI: v_mad_f32
|
|
; SI: v_mac_f32_e32
|
|
define void @test_lrp(float addrspace(1)* %out, float %src0, float %src1, float %src2) nounwind {
|
|
%mad = call float @llvm.AMDGPU.lrp(float %src0, float %src1, float %src2) nounwind readnone
|
|
store float %mad, float addrspace(1)* %out, align 4
|
|
ret void
|
|
}
|