[llvm] [Transforms] Let amdgcn take advantage of sin(-x) --> -sin(x) (PR #79700)
via llvm-commits
llvm-commits at lists.llvm.org
Sat Jan 27 09:54:49 PST 2024
https://github.com/AtariDreams updated https://github.com/llvm/llvm-project/pull/79700
>From f7232705f27cf34962cc2496b7603090867ce451 Mon Sep 17 00:00:00 2001
From: Rose <83477269+AtariDreams at users.noreply.github.com>
Date: Sat, 27 Jan 2024 12:54:09 -0500
Subject: [PATCH] [Transforms] Let amdgcn take advantage of sin(-x) --> -sin(x)
We do it for amdgcn_cos, and we should do it for amdgcn_sin as well.
---
llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp b/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
index a647be2d26c7613..ce54d49323dc6eb 100644
--- a/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
+++ b/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
@@ -2497,11 +2497,12 @@ Instruction *InstCombinerImpl::visitCallInst(CallInst &CI) {
}
break;
}
- case Intrinsic::sin: {
+ case Intrinsic::sin:
+ case Intrinsic::amdgcn_sin: {
Value *X;
if (match(II->getArgOperand(0), m_OneUse(m_FNeg(m_Value(X))))) {
// sin(-x) --> -sin(x)
- Value *NewSin = Builder.CreateUnaryIntrinsic(Intrinsic::sin, X, II);
+ Value *NewSin = Builder.CreateUnaryIntrinsic(IID, X, II);
Instruction *FNeg = UnaryOperator::CreateFNeg(NewSin);
FNeg->copyFastMathFlags(II);
return FNeg;
More information about the llvm-commits
mailing list