Chris Tetreault via llvm-dev
2020-Nov-06 17:29 UTC
[llvm-dev] [Proposal] Introducing the concept of invalid costs to the IR cost model
Makes sense. I personally greatly prefer having a type rather than a `static
constexpr int CostUnfathomable = 10000`.
I think the type should have arithmetic operators defined such that an
"invalid cost" on either side results in an invalid cost (similar to
how NaN infects floats), and an implicit conversion that constructs a valid
cost. Then I could just do:
```
Cost c = 7;
// c is a valid cost of 7 here
c = c + someFuncThatReturnsInvalidCost();
Cost d = 2 + c;
// d and c are both invalid costs here
```
This way, basically no existing code has to change. I'm actually a little
disappointed that llvm::Optional doesn't already have this behavior (with
arithmetic operators guarded by enable_if).
Thanks,
Christopher Tetreault
From: David Sherwood <David.Sherwood at arm.com>
Sent: Friday, November 6, 2020 12:18 AM
To: Chris Tetreault <ctetreau at quicinc.com>; LLVM Dev <llvm-dev at
lists.llvm.org>
Subject: [EXT] RE: [llvm-dev] [Proposal] Introducing the concept of invalid
costs to the IR cost model
Hi Chris,
Thanks for the reply. My email was really to just ask if people were ok with the
idea
in principle and I kind of deliberately avoided getting into too many details at
this
point. If people are happy with the idea in principle I can push a patch up soon
that
shows what such a class could like so that people can comment on it?
Regards,
David Sherwood.
From: Chris Tetreault <ctetreau at quicinc.com<mailto:ctetreau at
quicinc.com>>
Sent: 05 November 2020 19:23
To: David Sherwood <David.Sherwood at arm.com<mailto:David.Sherwood at
arm.com>>; LLVM Dev <llvm-dev at lists.llvm.org<mailto:llvm-dev at
lists.llvm.org>>
Subject: RE: [llvm-dev] [Proposal] Introducing the concept of invalid costs to
the IR cost model
You're being quite vague about what the extra state is. Is this because you
haven't yet settled on what it should be, or do you actually intend to let
it be a template parameter:
template <typename T>
struct Cost {
unsigned Val;
T State;
}
Thanks,
Christopher Tetreault
From: llvm-dev <llvm-dev-bounces at lists.llvm.org<mailto:llvm-dev-bounces
at lists.llvm.org>> On Behalf Of David Sherwood via llvm-dev
Sent: Thursday, November 5, 2020 7:43 AM
To: llvm-dev at lists.llvm.org<mailto:llvm-dev at lists.llvm.org>
Subject: [EXT] [llvm-dev] [Proposal] Introducing the concept of invalid costs to
the IR cost model
Hi,
I'd like to propose a change to our cost interfaces so that instead of
returning
an unsigned value from functions like getInstructionCost, getUserCost, etc., we
instead return a wrapper class that encodes an integer cost along with extra
state. The extra state can be used to express:
1. A cost as infinitely expensive in order to prevent certain optimisations
taking place. For example, there are already examples in LLVM where the cost is
set extremely high, but not so high that it would cause overflow. This might be
to
prevent vectorisation in cases where we would have to scalarize the operation,
which is particularly relevant for scalable vectors, where scalarisation is
not [yet] available. There isn't currently a standard value for something
that
constitutes very expensive and we can replace all the magic numbers with a
single invalid state.
2. A cost as unknown, where the user is simply unable to determine an accurate
cost for an operation.
This new wrapper class would work almost seamlessly with existing code as it
would contain the full set of operators required for arithmetic and comparisons.
This is in addition to the ability to create invalid costs and query the
validity
of an existing cost. Once a cost becomes invalid or unknown it will remain in
that
state regardless of any further arithmetic performed.
Kind Regards,
David Sherwood.
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20201106/a3da68b9/attachment.html>
Reasonably Related Threads
- [Proposal] Introducing the concept of invalid costs to the IR cost model
- [Proposal] Introducing the concept of invalid costs to the IR cost model
- [Proposal] Introducing the concept of invalid costs to the IR cost model
- [Proposal] Introducing the concept of invalid costs to the IR cost model
- FileCheck
