rust/compiler/rustc_llvm/llvm-wrapper
Matthias Krüger 78f5bddd57
Rollup merge of #136419 - EnzymeAD:autodiff-tests, r=onur-ozkan,jieyouxu
adding autodiff tests

I'd like to get started with upstreaming some tests, even though I'm still waiting for an answer on how to best integrate the enzyme pass. Can we therefore temporarily support the -Z llvm-plugins here without too much effort? And in that case, how would that work? I saw you can do remapping, e.g. `rust-src-base`, but I don't think that will give me the path to libEnzyme.so. Do you have another suggestion?

Other than that this test simply checks that the derivative of `x*x` is `2.0 * x`, which in this case is computed as
`%0 = fadd fast double %x.0.val, %x.0.val`
(I'll add a few more tests and move it to an autodiff folder if we can use the -Z flag)

r? ``@jieyouxu``

Locally at least `-Zllvm-plugins=${PWD}/build/x86_64-unknown-linux-gnu/enzyme/build/Enzyme/libEnzyme-19.so` seems to work if I copy the command I get from x.py test and run it manually. However, running x.py test itself fails.

Tracking:

- https://github.com/rust-lang/rust/issues/124509

Zulip discussion: https://rust-lang.zulipchat.com/#narrow/channel/326414-t-infra.2Fbootstrap/topic/Enzyme.20build.20changes
2025-02-10 16:38:23 +01:00
..
.editorconfig
ArchiveWrapper.cpp Update the minimum external LLVM to 18 2024-09-18 13:53:31 -07:00
CoverageMappingWrapper.cpp Auto merge of #132584 - Zalathar:includes, r=cuviper 2024-11-09 09:46:08 +00:00
Linker.cpp Trim and tidy includes in rustc_llvm 2024-11-04 16:35:39 +11:00
LLVMWrapper.h Auto merge of #132584 - Zalathar:includes, r=cuviper 2024-11-09 09:46:08 +00:00
PassWrapper.cpp move second opt run to lto phase and cleanup code 2025-02-10 01:35:22 -05:00
README
RustWrapper.cpp Remove dead code from rustc_codegen_llvm and the LLVM wrapper 2025-02-06 16:53:52 -08:00
SuppressLLVMWarnings.h Format C++ files in llvm-wrapper 2024-06-26 20:18:49 +08:00
SymbolWrapper.cpp Trim and tidy includes in rustc_llvm 2024-11-04 16:35:39 +11:00

This directory currently contains some LLVM support code. This will generally
be sent upstream to LLVM in time; for now it lives here.

NOTE: the LLVM C++ ABI is subject to between-version breakage and must *never*
be exposed to Rust. To allow for easy auditing of that, all Rust-exposed types
must be typedef-ed as "LLVMXyz", or "LLVMRustXyz" if they were defined here.

Functions that return a failure status and leave the error in
the LLVM last error should return an LLVMRustResult rather than an
int or anything to avoid confusion.

When translating enums, add a single `Other` variant as the first
one to allow for new variants to be added. It should abort when used
as an input.

All other types must not be typedef-ed as such.