upstream rustc_codegen_llvm changes for enzyme/autodiff
This commit is contained in:
parent
372442fe5f
commit
d753cbf779
17 changed files with 610 additions and 28 deletions
29
compiler/rustc_codegen_llvm/src/llvm/enzyme_ffi.rs
Normal file
29
compiler/rustc_codegen_llvm/src/llvm/enzyme_ffi.rs
Normal file
|
@ -0,0 +1,29 @@
|
|||
#![allow(non_camel_case_types)]
|
||||
|
||||
use libc::{c_char, c_uint};
|
||||
|
||||
use super::ffi::{BasicBlock, Metadata, Module, Type, Value};
|
||||
use crate::llvm::Bool;
|
||||
extern "C" {
|
||||
// Enzyme
|
||||
pub fn LLVMRustHasMetadata(I: &Value, KindID: c_uint) -> bool;
|
||||
pub fn LLVMRustEraseInstBefore(BB: &BasicBlock, I: &Value);
|
||||
pub fn LLVMRustGetLastInstruction<'a>(BB: &BasicBlock) -> Option<&'a Value>;
|
||||
pub fn LLVMRustDIGetInstMetadata(I: &Value) -> Option<&Metadata>;
|
||||
pub fn LLVMRustEraseInstFromParent(V: &Value);
|
||||
pub fn LLVMRustGetTerminator<'a>(B: &BasicBlock) -> &'a Value;
|
||||
pub fn LLVMRustVerifyFunction(V: &Value, action: LLVMRustVerifierFailureAction) -> Bool;
|
||||
|
||||
pub fn LLVMGetFunctionCallConv(F: &Value) -> c_uint;
|
||||
pub fn LLVMGetReturnType(T: &Type) -> &Type;
|
||||
pub fn LLVMGetParams(Fnc: &Value, parms: *mut &Value);
|
||||
pub fn LLVMGetNamedFunction(M: &Module, Name: *const c_char) -> Option<&Value>;
|
||||
}
|
||||
|
||||
#[repr(C)]
|
||||
#[derive(Copy, Clone, PartialEq)]
|
||||
pub enum LLVMRustVerifierFailureAction {
|
||||
LLVMAbortProcessAction = 0,
|
||||
LLVMPrintMessageAction = 1,
|
||||
LLVMReturnStatusAction = 2,
|
||||
}
|
|
@ -99,7 +99,7 @@ pub enum ModuleFlagMergeBehavior {
|
|||
/// LLVM CallingConv::ID. Should we wrap this?
|
||||
///
|
||||
/// See <https://github.com/llvm/llvm-project/blob/main/llvm/include/llvm/IR/CallingConv.h>
|
||||
#[derive(Copy, Clone, PartialEq, Debug)]
|
||||
#[derive(Copy, Clone, PartialEq, Debug, TryFromU32)]
|
||||
#[repr(C)]
|
||||
pub enum CallConv {
|
||||
CCallConv = 0,
|
||||
|
|
|
@ -22,8 +22,11 @@ use crate::common::AsCCharPtr;
|
|||
|
||||
pub mod archive_ro;
|
||||
pub mod diagnostic;
|
||||
pub mod enzyme_ffi;
|
||||
mod ffi;
|
||||
|
||||
pub use self::enzyme_ffi::*;
|
||||
|
||||
impl LLVMRustResult {
|
||||
pub fn into_result(self) -> Result<(), ()> {
|
||||
match self {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue