Skip to content

Commit 68e3c97

Browse files
authored
Forward mode sincos (rust-lang#501)
1 parent 44e7122 commit 68e3c97

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

enzyme/Enzyme/AdjointGenerator.h

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8026,7 +8026,7 @@ class AdjointGenerator
80268026
return;
80278027
}
80288028
}
8029-
if (funcName == "__fd_sincos_1" || funcName == "sincos") {
8029+
if (funcName == "__fd_sincos_1") {
80308030
if (gutils->knownRecomputeHeuristic.find(orig) !=
80318031
gutils->knownRecomputeHeuristic.end()) {
80328032
if (!gutils->knownRecomputeHeuristic[orig]) {
@@ -8057,13 +8057,13 @@ class AdjointGenerator
80578057
Intrinsic::getDeclaration(gutils->oldFunc->getParent(),
80588058
Intrinsic::sin, tys),
80598059
args));
8060-
Value *dif0 = Builder2.CreateFSub(
8061-
Builder2.CreateFMul(Builder2.CreateExtractValue(vdiff, {0}),
8062-
dsin),
8063-
Builder2.CreateFMul(Builder2.CreateExtractValue(vdiff, {1}),
8064-
dcos));
8065-
8066-
setDiffe(orig, dif0, Builder2);
8060+
Value *res = UndefValue::get(orig->getType());
8061+
res = Builder2.CreateInsertValue(
8062+
res, Builder2.CreateFMul(vdiff, dsin), {0});
8063+
res = Builder2.CreateInsertValue(
8064+
res, Builder2.CreateFNeg(Builder2.CreateFMul(vdiff, dcos)),
8065+
{1});
8066+
setDiffe(orig, res, Builder2);
80678067
return;
80688068
}
80698069
case DerivativeMode::ReverseModeGradient:

0 commit comments

Comments
 (0)