mirror of
https://github.com/RPCS3/llvm.git
synced 2026-01-31 01:25:19 +01:00
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 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@248210 91177308-0d34-0410-b5e6-96231b3b80d8
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
|
|
}
|