EnzymeAD / EnzymeAD/Enzyme

Handle Mixed Active/Duplicated Return

Open
#597 4 comments 0 reactions 0 assignees View on GitHub
Dominant language
LLVM
Stars
1.7k
Forks
188
Avg merge
2d 4h
Merged PRs (30d)
22

Description

```llvm
declare dso_local double @__enzyme_autodiff(i8*, double)

declare i8* @malloc(i64)

define { i8*, double } @augsquare(double %x) {
entry:
%m = tail call noalias nonnull dereferenceable(64) dereferenceable_or_null(64) i8* @malloc(i64 64)
%.fca.0.insert = insertvalue { i8*, double } undef, i8* %m, 0
%.fca.1.insert = insertvalue { i8*, double } %.fca.0.insert, double %x, 1
ret { i8*, double } %.fca.1.insert
}

define double @square(double %x) {
entry:
%ext = call { i8*, double } @augsquare(double %x)
%o = extractvalue { i8*, double } %ext, 1
%mul = fmul double %o, %o
ret double %mul
}

define double @dsquare(double %x) local_unnamed_addr {
entry:
%call = tail call double @__enzyme_autodiff(i8* bitcast (double (double)* @square to i8*), double %x)
ret double %call
}

```

https://enzyme.mit.edu/explorer/#z:OYLghAFBqd5TKALEBjA9gEwKYFFMCWALugE4A0BIEAZgQDbYB2AhgLbYgDkAjF%2BTXRMiAZVQtGIHgBYBQogFUAztgAKAD24AGfgCsp5eiyah69AG5tyKxqiIEh1ZpgDC6egFc2TENNnOAGQImbAA5LwAjbFIpADZyAAd0JWIHJjdPb19ZJJT7ISCQ8LYomJ54m2w7NJEiFlIiDK8fP2tsW3ymWvqiQrDI6LjrOoamrNalEd7g/pLB8oBKa3QPUlROLhxUI1JsAGpMJXQAfXp0cXoDlYjGPYABY%2BPmAC8ATw5jlg8SQhoaCAIAA4AFTkK4eG7YBYAUi0AEFYXCtjt9kDgfc2BIzqgAbFpDD4YicHQQntoQB2ABCezRYMw11uFIAIvcvsAlABHDz1bAQekQxkAJgArOoFmSqYjmERSK8QIi9mSRWwyQBmFl1Bh7C6XJjoCQEFhKPZ6phMDxmA7RbA0a1MdYsSEQPHinC7W27e3YR2MY5kY7mszO/E0kEYrHnXHSPYuhVK4UAOho4gTWgTwRUDTVLIz0SI5gkHn2FOptPBkIlLI8TGJYLR8asey0cehIqTKZ46aYmaI2Zp3bzBc8xapodB5cZ5JZrcTyZYqa7PbpDOLIvUYJ4cd2vZLY%2BXApH07bc4TndzDURzMv8OJMwn%2BzunO5uz5K/jYollKlwll8vhipnbB1B3dVtSxT893vStWQ8dkuR5V8D3fAk4QAkV0D7ICZRYOwhyLCCy35CtmXjLCNxbZULT7Gg2CooihWFdAwRndAt2wXt6NXYVaPoS8p2vJEbTvTj7kOeCXxEmcP2xCRjmrVgOEwT5MEwUhP2/GU5Qo4UdT7TVLl0kSHieJg3g%2BL4fgIP4ATDCJiHESY9kQitnMYBZ0UfcT9hIMcligqSUMVbd/JFHU%2BKZREuCWehuGFfgfC4HRyHQbgAgCAA1ABZPYAEkACU9iOVZ1iVVU%2BHIIhtCipYAGtfEBBNpB4clBViVrhS0QFVQATlVQxuGkeKquS7h%2BCUEAtAqqqljgWAUAwNgEgYaJKGoBalsYGJ0ASIgeEFABaF53mwfbMWCAQGCIaJxogCJhrs1hf14fgFo4YQAHkmHoOVEv4HBMRMSRfvIQhdmqcxsHG4GgKqb4NiS4Irpi4H6AICJSHqV43BwYaZQINhuD4JYaCMdl0oIbAAHd3oSZhCf4QRhDECROBkORhGUNRNGB/QeEMYxTAsKxUYicbICWbbOihsb2iqTonBrMYfD5wIZmKUoDFyVIhCVzXkm1pg%2BnV%2BY2g6Gopl1vnKmqIRugaI2BjKYYekt537bVx2pCWIq1lZirdg2In%2Bq4OLyASpKUq4SW9j2pzVRoclsFiPbxQgNKstyvKwXwYgyFKvm9jcRblrU1syoWfhKt%2BmaUAICgqAgbBCBIUgcswAxGdEC5WdkTvOY0YbedNuW0gV1x3GaAxVaKT2%2Ba1zpXfntIHbmJ3rc6O3GgnrIrdlm2uimFeNati3t%2BVt3phn1evei2KhuByP0%2By/K9nJqnoj2aPY4gePE%2BTwUFgQBzi3fOYIi4bQ/mXHgFcprV1qiAYUnZhSAkFOSVUaDpDdXKFockfNkaDTDsNSOY0JqwJ0AsW%2BXBBT8AJsKWIqZBTdVQbEckWhYhaCauSQhD9RpkKiuQWayAQArCIAkb4q0IDrRLlPZuZAO7yGZpINmfcVAD2BjKbAgd%2BCUwxgkemlDQ7h34JHd63wxG9nQDQT%2BO0Y6CjjgnJOKcnLgJLvnGBVdyFLCQN6N01BKEEIJtIVUCZuqsJaqqRhPVkF9SMSNLgJDJoeOqsHVU98I68KSRQ8gENSApEcNIIAA%3D

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.