Override disjoint_or
in the LLVM backend
This commit is contained in:
parent
f23025305f
commit
4ee1602eab
6 changed files with 54 additions and 0 deletions
|
@ -421,6 +421,14 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
|
|||
unchecked_umul(x, y) => LLVMBuildNUWMul,
|
||||
}
|
||||
|
||||
fn or_disjoint(&mut self, a: &'ll Value, b: &'ll Value) -> &'ll Value {
|
||||
unsafe {
|
||||
let or = llvm::LLVMBuildOr(self.llbuilder, a, b, UNNAMED);
|
||||
llvm::LLVMSetIsDisjoint(or, True);
|
||||
or
|
||||
}
|
||||
}
|
||||
|
||||
set_math_builder_methods! {
|
||||
fadd_fast(x, y) => (LLVMBuildFAdd, LLVMRustSetFastMath),
|
||||
fsub_fast(x, y) => (LLVMBuildFSub, LLVMRustSetFastMath),
|
||||
|
|
|
@ -1380,6 +1380,9 @@ unsafe extern "C" {
|
|||
pub fn LLVMBuildFNeg<'a>(B: &Builder<'a>, V: &'a Value, Name: *const c_char) -> &'a Value;
|
||||
pub fn LLVMBuildNot<'a>(B: &Builder<'a>, V: &'a Value, Name: *const c_char) -> &'a Value;
|
||||
|
||||
// Extra flags on arithmetic
|
||||
pub fn LLVMSetIsDisjoint(Instr: &Value, IsDisjoint: Bool);
|
||||
|
||||
// Memory
|
||||
pub fn LLVMBuildAlloca<'a>(B: &Builder<'a>, Ty: &'a Type, Name: *const c_char) -> &'a Value;
|
||||
pub fn LLVMBuildArrayAlloca<'a>(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue