Displaying 5 results from an estimated 5 matches for "specificvalue".
2015 Jan 08
3
[LLVMdev] Floating-point range checks
...or 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
On 01/07/2015 02:13 PM, Robiso...
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
...ready 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.
>
> Phil...
2015 Jan 08
2
[LLVMdev] Floating-point range checks
...>>> 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 purel...
2015 Jan 08
2
[LLVMdev] Floating-point range checks
...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 inter...