Rollup merge of #147509 - AMS21:remove_llvm_rust_intrinsics, r=Zalathar
remove intrinsic wrapper functions from LLVM bindings As discussed on https://github.com/llvm/llvm-project/pull/162500 there is no good reason to implement these intrinsic function via the LLVM wrapper instead we now just implement them via `call_intrinsic` like all the other intrinsic functions. Work towards https://github.com/rust-lang/rust/issues/46437
This commit is contained in:
commit
828dd0cdd4
3 changed files with 28 additions and 132 deletions
|
|
@ -1481,69 +1481,6 @@ extern "C" void LLVMRustModuleInstructionStats(LLVMModuleRef M,
|
|||
});
|
||||
}
|
||||
|
||||
// Vector reductions:
|
||||
extern "C" LLVMValueRef LLVMRustBuildVectorReduceFAdd(LLVMBuilderRef B,
|
||||
LLVMValueRef Acc,
|
||||
LLVMValueRef Src) {
|
||||
return wrap(unwrap(B)->CreateFAddReduce(unwrap(Acc), unwrap(Src)));
|
||||
}
|
||||
extern "C" LLVMValueRef LLVMRustBuildVectorReduceFMul(LLVMBuilderRef B,
|
||||
LLVMValueRef Acc,
|
||||
LLVMValueRef Src) {
|
||||
return wrap(unwrap(B)->CreateFMulReduce(unwrap(Acc), unwrap(Src)));
|
||||
}
|
||||
extern "C" LLVMValueRef LLVMRustBuildVectorReduceAdd(LLVMBuilderRef B,
|
||||
LLVMValueRef Src) {
|
||||
return wrap(unwrap(B)->CreateAddReduce(unwrap(Src)));
|
||||
}
|
||||
extern "C" LLVMValueRef LLVMRustBuildVectorReduceMul(LLVMBuilderRef B,
|
||||
LLVMValueRef Src) {
|
||||
return wrap(unwrap(B)->CreateMulReduce(unwrap(Src)));
|
||||
}
|
||||
extern "C" LLVMValueRef LLVMRustBuildVectorReduceAnd(LLVMBuilderRef B,
|
||||
LLVMValueRef Src) {
|
||||
return wrap(unwrap(B)->CreateAndReduce(unwrap(Src)));
|
||||
}
|
||||
extern "C" LLVMValueRef LLVMRustBuildVectorReduceOr(LLVMBuilderRef B,
|
||||
LLVMValueRef Src) {
|
||||
return wrap(unwrap(B)->CreateOrReduce(unwrap(Src)));
|
||||
}
|
||||
extern "C" LLVMValueRef LLVMRustBuildVectorReduceXor(LLVMBuilderRef B,
|
||||
LLVMValueRef Src) {
|
||||
return wrap(unwrap(B)->CreateXorReduce(unwrap(Src)));
|
||||
}
|
||||
extern "C" LLVMValueRef LLVMRustBuildVectorReduceMin(LLVMBuilderRef B,
|
||||
LLVMValueRef Src,
|
||||
bool IsSigned) {
|
||||
return wrap(unwrap(B)->CreateIntMinReduce(unwrap(Src), IsSigned));
|
||||
}
|
||||
extern "C" LLVMValueRef LLVMRustBuildVectorReduceMax(LLVMBuilderRef B,
|
||||
LLVMValueRef Src,
|
||||
bool IsSigned) {
|
||||
return wrap(unwrap(B)->CreateIntMaxReduce(unwrap(Src), IsSigned));
|
||||
}
|
||||
extern "C" LLVMValueRef
|
||||
LLVMRustBuildVectorReduceFMin(LLVMBuilderRef B, LLVMValueRef Src, bool NoNaN) {
|
||||
Instruction *I = unwrap(B)->CreateFPMinReduce(unwrap(Src));
|
||||
I->setHasNoNaNs(NoNaN);
|
||||
return wrap(I);
|
||||
}
|
||||
extern "C" LLVMValueRef
|
||||
LLVMRustBuildVectorReduceFMax(LLVMBuilderRef B, LLVMValueRef Src, bool NoNaN) {
|
||||
Instruction *I = unwrap(B)->CreateFPMaxReduce(unwrap(Src));
|
||||
I->setHasNoNaNs(NoNaN);
|
||||
return wrap(I);
|
||||
}
|
||||
|
||||
extern "C" LLVMValueRef LLVMRustBuildMinNum(LLVMBuilderRef B, LLVMValueRef LHS,
|
||||
LLVMValueRef RHS) {
|
||||
return wrap(unwrap(B)->CreateMinNum(unwrap(LHS), unwrap(RHS)));
|
||||
}
|
||||
extern "C" LLVMValueRef LLVMRustBuildMaxNum(LLVMBuilderRef B, LLVMValueRef LHS,
|
||||
LLVMValueRef RHS) {
|
||||
return wrap(unwrap(B)->CreateMaxNum(unwrap(LHS), unwrap(RHS)));
|
||||
}
|
||||
|
||||
// Transfers ownership of DiagnosticHandler unique_ptr to the caller.
|
||||
extern "C" DiagnosticHandler *
|
||||
LLVMRustContextGetDiagnosticHandler(LLVMContextRef C) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue