search for: sqrt_call

Displaying 5 results from an estimated 5 matches for "sqrt_call".

2015 Jan 08
3
[LLVMdev] Floating-point range checks
...eed something equivalent for them. It looks like there may already be a start in the form of: CannotBeNegativeZero Other places to look would be SimplifyFAdd and InstCombine::visitFAdd. For this particular example, you're probably going to want a pattern in SimplifyFCmp of the form: matcher: sqrt_call( fadd(Value(X), SpecificValue(X)), fadd(Value(Y), SpecificValue(Y))) && CannotBeNegativeZero(X) && CannotBeNegativeZero(Y) You might also look at LazyValueInfo, but that's probably of secondary interest. It's purely in terms of constant integer ranges currently. Philip...
2015 Jan 07
2
[LLVMdev] Floating-point range checks
The Julia language implements sqrt(x) with conditional branch taken if x<0. Alas this prevents vectorization of loops with sqrt. Often the argument can be proven to be non-negative. E.g., sqrt(x*x+y*y). Is there an existing LLVM pass or analysis that does floating-point range propagation to eliminate such unnecessary checks? Arch D. Robison Intel Corporation -------------- next part
2015 Jan 08
2
[LLVMdev] Floating-point range checks
...It looks like there may already be a start in the form of: > CannotBeNegativeZero > > Other places to look would be SimplifyFAdd and InstCombine::visitFAdd. > > For this particular example, you're probably going to want a pattern > in SimplifyFCmp of the form: > matcher: sqrt_call( fadd(Value(X), SpecificValue(X)), fadd(Value(Y), > SpecificValue(Y))) > && CannotBeNegativeZero(X) && CannotBeNegativeZero(Y) > > You might also look at LazyValueInfo, but that's probably of secondary > interest. It's purely in terms of constant integer ran...
2015 Jan 08
2
[LLVMdev] Floating-point range checks
...eNegativeZero >>> >>> Other places to look would be SimplifyFAdd and >>> InstCombine::visitFAdd. >>> >>> For this particular example, you're probably going to want a >>> pattern >>> in SimplifyFCmp of the form: >>> matcher: sqrt_call( fadd(Value(X), SpecificValue(X)), >>> fadd(Value(Y), >>> SpecificValue(Y))) >>> && CannotBeNegativeZero(X) && CannotBeNegativeZero(Y) >>> >>> You might also look at LazyValueInfo, but that's probably of >>> secondary >&gt...
2015 Jan 08
2
[LLVMdev] Floating-point range checks
...gt;> > >>> Other places to look would be SimplifyFAdd and > >>> InstCombine::visitFAdd. > >>> > >>> For this particular example, you're probably going to want a > >>> pattern in SimplifyFCmp of the form: > >>> matcher: sqrt_call( fadd(Value(X), SpecificValue(X)), > >>> fadd(Value(Y), > >>> SpecificValue(Y))) > >>> && CannotBeNegativeZero(X) && CannotBeNegativeZero(Y) > >>> > >>> You might also look at LazyValueInfo, but that's probably of &gt...