Add intrinsics for float arithmetic with fast flag enabled
`fast` a.k.a UnsafeAlgebra is the flag for enabling all "unsafe" (according to llvm) float optimizations. See LangRef for more information http://llvm.org/docs/LangRef.html#fast-math-flags Providing these operations with less precise associativity rules (for example) is useful to numerical applications. For example, the summation loop: let sum = 0.; for element in data { sum += *element; } Using the default floating point semantics, this loop expresses the floats must be added in a sequence, one after another. This constraint is usually completely unintended, and it means that no autovectorization is possible.
This commit is contained in:
@@ -1310,6 +1310,7 @@ extern {
|
||||
-> ValueRef;
|
||||
pub fn LLVMBuildNot(B: BuilderRef, V: ValueRef, Name: *const c_char)
|
||||
-> ValueRef;
|
||||
pub fn LLVMRustSetHasUnsafeAlgebra(Instr: ValueRef);
|
||||
|
||||
/* Memory */
|
||||
pub fn LLVMBuildAlloca(B: BuilderRef, Ty: TypeRef, Name: *const c_char)
|
||||
|
||||
Reference in New Issue
Block a user