Page MenuHomePhabricator

david-arm (David Sherwood)
User

Projects

User does not belong to any projects.

User Details

User Since
Nov 20 2019, 6:41 AM (53 w, 1 d)

Recent Activity

Today

david-arm retitled D92178: [InstructionCost] Change LoopVectorizationCostModel::getInstructionCost to return InstructionCost from [InstructionCost] Migrate to using InstructionCost in LoopVectorize.cpp to [InstructionCost] Change LoopVectorizationCostModel::getInstructionCost to return InstructionCost.
Thu, Nov 26, 9:01 AM · Restricted Project
david-arm added a reviewer for D92178: [InstructionCost] Change LoopVectorizationCostModel::getInstructionCost to return InstructionCost: nhaehnle.
Thu, Nov 26, 8:53 AM · Restricted Project
david-arm updated the diff for D91174: [Analysis] Introduce a new InstructionCost class.
  • Fixed shared library build issue due to InstructionCost::print living in llvm/lib/Analysis. I've moved this to a new file - llvm/lib/Support/InstructionCost.cpp - which resolves dependency issues.
Thu, Nov 26, 7:56 AM · Restricted Project
david-arm requested review of D92178: [InstructionCost] Change LoopVectorizationCostModel::getInstructionCost to return InstructionCost.
Thu, Nov 26, 6:42 AM · Restricted Project
david-arm requested review of D92177: [NFC][InstructionCost] Refactor LoopVectorizationCostModel::selectVectorizationFactor.
Thu, Nov 26, 6:41 AM · Restricted Project
david-arm added inline comments to D91174: [Analysis] Introduce a new InstructionCost class.
Thu, Nov 26, 2:34 AM · Restricted Project
david-arm added inline comments to D91174: [Analysis] Introduce a new InstructionCost class.
Thu, Nov 26, 12:41 AM · Restricted Project

Yesterday

david-arm updated the diff for D91174: [Analysis] Introduce a new InstructionCost class.
  • Removed isInvalid() in favour of getState() that is more future-proof.
  • Converted "" comments to "/"
Wed, Nov 25, 8:58 AM · Restricted Project
david-arm added a comment to D91174: [Analysis] Introduce a new InstructionCost class.

OK, so it is possible to check for validity just using getValue() by writing code such as:

Wed, Nov 25, 6:57 AM · Restricted Project
david-arm added a comment to D91174: [Analysis] Introduce a new InstructionCost class.

I think the main reason for having isValid (or something like that) was because it sometimes made control flow easier and there are places in the codebase today where all we want to do is assert that something is valid. I guess the alternative to calling isValid is something like:

Wed, Nov 25, 6:25 AM · Restricted Project
david-arm updated the diff for D91957: [Analysis] Migrate more high level cost functions to using InstructionCost.
  • Rebased off parent patch.
  • Changed calls to isInvalid to !isValid instead, since I feel this is more future-proof in case additional states are added to the InstructionCost class.
Wed, Nov 25, 1:51 AM · Restricted Project
david-arm updated the diff for D88962: [SVE] Add support for scalable vectors with vectorize.scalable.enable loop attribute.
  • Added documentation to getOptionalElementCountLoopAttribute and simplified the implementation in the function.
  • Removed some tbaa metadata from the tests.
Wed, Nov 25, 1:21 AM · Restricted Project
david-arm updated the diff for D91174: [Analysis] Introduce a new InstructionCost class.
  • Added tests for value extraction.
Wed, Nov 25, 12:49 AM · Restricted Project

Tue, Nov 24

david-arm updated the diff for D91174: [Analysis] Introduce a new InstructionCost class.
  • Changed getValue() to return an Optional<CostType>
Tue, Nov 24, 1:29 AM · Restricted Project
david-arm updated subscribers of D91174: [Analysis] Introduce a new InstructionCost class.
Tue, Nov 24, 1:20 AM · Restricted Project

Mon, Nov 23

david-arm added a comment to D91174: [Analysis] Introduce a new InstructionCost class.

I'm likely to be out of the office most of this week, so once the assert is in, feel free to merge without waiting for my approval (assuming Sander is satisfied)

Mon, Nov 23, 9:09 AM · Restricted Project
david-arm added inline comments to D91174: [Analysis] Introduce a new InstructionCost class.
Mon, Nov 23, 8:14 AM · Restricted Project
david-arm added reviewers for D91957: [Analysis] Migrate more high level cost functions to using InstructionCost: sdesmalen, ctetreau, CarolineConcatto.
Mon, Nov 23, 4:55 AM · Restricted Project
david-arm requested review of D91957: [Analysis] Migrate more high level cost functions to using InstructionCost.
Mon, Nov 23, 4:54 AM · Restricted Project
david-arm added a comment to D88962: [SVE] Add support for scalable vectors with vectorize.scalable.enable loop attribute.

Hi @fhahn @SjoerdMeijer @paulwalker-arm, are you happy with the patch now? The implementation on the LLVM IR side of things is independent of the clang pragma patch. For the clang patch I intend to write a proposal to the mailing list for changing the vectorize_width #pragma. @fhahn would you be happy with removing the "Request changes" cross?

Mon, Nov 23, 3:43 AM · Restricted Project
david-arm updated the diff for D88962: [SVE] Add support for scalable vectors with vectorize.scalable.enable loop attribute.
  • Updated the documentation to mention that the new attribute only has any effect if vectorisation is enabled for the loop.
  • Cleaned up one of the test files.
Mon, Nov 23, 3:37 AM · Restricted Project

Fri, Nov 20

david-arm updated the diff for D91174: [Analysis] Introduce a new InstructionCost class.
Fri, Nov 20, 1:25 AM · Restricted Project

Wed, Nov 18

david-arm updated the diff for D91174: [Analysis] Introduce a new InstructionCost class.
  • Added comments explaining the reason for the behaviour used in the comparison operators.
  • Removed the comment above operator-.
  • Added private propagateState() function, which is more generic and will support more than state. It uses the same lexicographical ordering as the comparisons.
  • Updated the tests to use more readable variable names.
Wed, Nov 18, 7:55 AM · Restricted Project
david-arm added a comment to D88962: [SVE] Add support for scalable vectors with vectorize.scalable.enable loop attribute.

Hi @paulwalker-arm, so the reason for this change is related to the child patch where we changed the vectorize_width #pragma to accept an additional optional argument "scalable" or "fixed". @SjoerdMeijer felt this was the wrong approach and that the scalable property should be specified only as an additional pragma, i.e.

Wed, Nov 18, 3:21 AM · Restricted Project
david-arm added a reviewer for D88962: [SVE] Add support for scalable vectors with vectorize.scalable.enable loop attribute: SjoerdMeijer.

After discussions on the child patch (D89031) we've decided to do things differently so instead of adapting vectorize.width to accept a tuple we're now adding a new vectorize.scalable.enable hint that can be used with vectorize.width to create a ElementCount. For the clang patch I also intend to update it so that we use a new vectorize_style #pragma instead of using vectorize_width to force scalable vectorisation.

Wed, Nov 18, 2:29 AM · Restricted Project
david-arm updated the diff for D88962: [SVE] Add support for scalable vectors with vectorize.scalable.enable loop attribute.
  • Reverted changes to vectorize.width loop hint attribute.
  • Added new vectorize.scalable.enable loop hint attribute to control scalable vectorisation.
Wed, Nov 18, 1:54 AM · Restricted Project

Tue, Nov 17

david-arm added inline comments to D91174: [Analysis] Introduce a new InstructionCost class.
Tue, Nov 17, 2:35 AM · Restricted Project
david-arm accepted D77442: [SVE] Take constant fold fast path for splatted vscale vectors.

LGTM

Tue, Nov 17, 1:40 AM · Restricted Project

Fri, Nov 13

david-arm updated the diff for D91174: [Analysis] Introduce a new InstructionCost class.
  • Changed comparison operators to explicitly treat invalid as infinitely expensive and return the appropriate result.
  • Added setValid() function.
  • Changed enum states to Valid and Invalid.
  • Removed template from the InstructionCost class and defaulted to 'int'. I think 32 bits is enough for costs, since everywhere in the codebase uses int or unsigned. However, the cost type can be easily changed since I made it a typedef. Not having the template meant I could also simplify the list of operators.
  • Changed lib/Transforms/Scalar/CallSiteSplitting.cpp so that we no longer explicitly check isInvalid() before comparing with DuplicationThreshold. This is because the ">=" operator now takes the invalid state into account.
Fri, Nov 13, 4:28 AM · Restricted Project
david-arm added inline comments to D91174: [Analysis] Introduce a new InstructionCost class.
Fri, Nov 13, 3:39 AM · Restricted Project

Thu, Nov 12

david-arm added a comment to D89031: [SVE] Add support to vectorize_width loop pragma for scalable vectors.

Hi @SjoerdMeijer I think that given we now support scalable vectors we thought it made sense to be able to specify whether the user wants 'fixed' or 'scalable' vectorisation along with the vector width, although without specifying the additional property the default continues to remain 'fixed'. However, what you said about having a vectorize_scalable pragma is correct and we are intending to also add a pragma like this in a future patch.

Thu, Nov 12, 5:54 AM · Restricted Project
david-arm committed rG3225fcf11eb7: [SVE] Deal with SVE tuple call arguments correctly when running out of registers (authored by david-arm).
[SVE] Deal with SVE tuple call arguments correctly when running out of registers
Thu, Nov 12, 12:42 AM
david-arm closed D90219: [SVE] Deal with SVE tuple call arguments correctly when running out of registers.
Thu, Nov 12, 12:42 AM · Restricted Project

Wed, Nov 11

david-arm updated the diff for D89031: [SVE] Add support to vectorize_width loop pragma for scalable vectors.
Wed, Nov 11, 5:16 AM · Restricted Project
david-arm updated the diff for D88962: [SVE] Add support for scalable vectors with vectorize.scalable.enable loop attribute.
  • In LoopVectorize.cpp I've forced the UserVF to fall back on fixed width vectorisation for now.
  • Added comments to the new test file and renamed it.
Wed, Nov 11, 4:32 AM · Restricted Project
david-arm updated the diff for D90219: [SVE] Deal with SVE tuple call arguments correctly when running out of registers.
Wed, Nov 11, 2:32 AM · Restricted Project

Tue, Nov 10

david-arm added a reviewer for D91174: [Analysis] Introduce a new InstructionCost class: paulwalker-arm.
Tue, Nov 10, 8:53 AM · Restricted Project
david-arm requested review of D91174: [Analysis] Introduce a new InstructionCost class.
Tue, Nov 10, 8:42 AM · Restricted Project

Mon, Nov 9

david-arm added inline comments to D90219: [SVE] Deal with SVE tuple call arguments correctly when running out of registers.
Mon, Nov 9, 8:12 AM · Restricted Project
david-arm updated the diff for D90219: [SVE] Deal with SVE tuple call arguments correctly when running out of registers.
  • Added more comments documenting the algorithm in AArch64CallingConvention.cpp.
  • Rewrote loops in AArch64ISelLowering.cpp
Mon, Nov 9, 3:37 AM · Restricted Project

Fri, Nov 6

david-arm updated the diff for D88962: [SVE] Add support for scalable vectors with vectorize.scalable.enable loop attribute.
  • Fixed up some remaining vectorize.width attribute cases.
Fri, Nov 6, 9:17 AM · Restricted Project

Thu, Nov 5

david-arm updated the diff for D88962: [SVE] Add support for scalable vectors with vectorize.scalable.enable loop attribute.
Thu, Nov 5, 8:50 AM · Restricted Project
david-arm added inline comments to D88962: [SVE] Add support for scalable vectors with vectorize.scalable.enable loop attribute.
Thu, Nov 5, 4:38 AM · Restricted Project
david-arm added a comment to D89031: [SVE] Add support to vectorize_width loop pragma for scalable vectors.

I'll hold off on any more changes for now to give @fhahn a chance to reply to your comment @sdesmalen about the fallback behaviour when scalable vectorisation is unsupported.

Thu, Nov 5, 4:28 AM · Restricted Project

Wed, Nov 4

david-arm added inline comments to D90219: [SVE] Deal with SVE tuple call arguments correctly when running out of registers.
Wed, Nov 4, 11:42 PM · Restricted Project
david-arm updated the diff for D89031: [SVE] Add support to vectorize_width loop pragma for scalable vectors.
Wed, Nov 4, 1:20 AM · Restricted Project

Tue, Nov 3

david-arm added a comment to D88962: [SVE] Add support for scalable vectors with vectorize.scalable.enable loop attribute.

Hi @fhahn are you happy with the changes now and happy to accept them?

Tue, Nov 3, 6:39 AM · Restricted Project

Fri, Oct 30

david-arm accepted D88982: [NFCI] Add StackOffset class and base classes for ElementCount, TypeSize..

LGTM and a lot tidier now, provided you're also happy with this @ctetreau?

Fri, Oct 30, 10:14 AM · Restricted Project, Restricted Project
david-arm committed rGcea69fa4dcc4: [SVE] Add fatal error for unnamed SVE variadic arguments (authored by david-arm).
[SVE] Add fatal error for unnamed SVE variadic arguments
Fri, Oct 30, 6:36 AM
david-arm closed D90230: [SVE] Add fatal error for unnamed SVE variadic arguments.
Fri, Oct 30, 6:36 AM · Restricted Project, Restricted Project

Thu, Oct 29

david-arm updated the diff for D88962: [SVE] Add support for scalable vectors with vectorize.scalable.enable loop attribute.
  • Updated documentation.
  • Addressed review comments.
Thu, Oct 29, 9:37 AM · Restricted Project
david-arm committed rG8c058dd2d752: [SVE] Remove TypeSize comparison operators (authored by david-arm).
[SVE] Remove TypeSize comparison operators
Thu, Oct 29, 7:33 AM
david-arm closed D90160: [SVE] Remove TypeSize comparison operators.
Thu, Oct 29, 7:32 AM · Restricted Project
david-arm updated the diff for D90230: [SVE] Add fatal error for unnamed SVE variadic arguments.
  • Added fatal errors on the callee side when one of the variadic arguments is a scalable vector.
Thu, Oct 29, 4:19 AM · Restricted Project, Restricted Project

Oct 27 2020

david-arm updated the diff for D90230: [SVE] Add fatal error for unnamed SVE variadic arguments.
Oct 27 2020, 10:51 AM · Restricted Project, Restricted Project
david-arm added inline comments to D88962: [SVE] Add support for scalable vectors with vectorize.scalable.enable loop attribute.
Oct 27 2020, 7:44 AM · Restricted Project
david-arm added inline comments to D88962: [SVE] Add support for scalable vectors with vectorize.scalable.enable loop attribute.
Oct 27 2020, 7:43 AM · Restricted Project
david-arm requested review of D90230: [SVE] Add fatal error for unnamed SVE variadic arguments.
Oct 27 2020, 7:19 AM · Restricted Project, Restricted Project
david-arm added a reviewer for D90219: [SVE] Deal with SVE tuple call arguments correctly when running out of registers: thegameg.
Oct 27 2020, 4:27 AM · Restricted Project
david-arm requested review of D90219: [SVE] Deal with SVE tuple call arguments correctly when running out of registers.
Oct 27 2020, 4:25 AM · Restricted Project
david-arm added a comment to D90160: [SVE] Remove TypeSize comparison operators.

Is this the right way to go here? I've assumed we want to remove the operators, but perhaps they should be marked as deprecated and left in for a while first?

Oct 27 2020, 3:38 AM · Restricted Project
david-arm added inline comments to D88962: [SVE] Add support for scalable vectors with vectorize.scalable.enable loop attribute.
Oct 27 2020, 2:56 AM · Restricted Project

Oct 26 2020

david-arm requested review of D90160: [SVE] Remove TypeSize comparison operators.
Oct 26 2020, 8:24 AM · Restricted Project

Oct 23 2020

david-arm accepted D88983: [NFCI] Replace AArch64StackOffset by StackOffset..

LGTM!

Oct 23 2020, 7:24 AM · Restricted Project
david-arm added a comment to D88983: [NFCI] Replace AArch64StackOffset by StackOffset..

One suggestion for a possible fold of some additions, but otherwise looks good to me!

Oct 23 2020, 3:37 AM · Restricted Project

Oct 21 2020

david-arm committed rG5b17b323a617: [SVE][CodeGen] Replace use of TypeSize comparison operator in… (authored by david-arm).
[SVE][CodeGen] Replace use of TypeSize comparison operator in…
Oct 21 2020, 12:42 AM
david-arm closed D88563: [SVE][CodeGen] Replace use of TypeSize comparison operator in CreateStackTemporary.
Oct 21 2020, 12:42 AM · Restricted Project
david-arm committed rGf5815105d276: [SVE] Remove reliance on TypeSize comparison operators in unit tests (authored by david-arm).
[SVE] Remove reliance on TypeSize comparison operators in unit tests
Oct 21 2020, 12:31 AM
david-arm closed D89531: [SVE] Remove reliance on TypeSize comparison operators in unit tests.
Oct 21 2020, 12:31 AM · Restricted Project
david-arm added inline comments to D89798: [SVE][AArch64] Fix TypeSize warning in loop vectorization legality.
Oct 21 2020, 12:03 AM · Restricted Project

Oct 20 2020

david-arm added inline comments to D89798: [SVE][AArch64] Fix TypeSize warning in loop vectorization legality.
Oct 20 2020, 11:59 PM · Restricted Project
david-arm accepted D89701: [SVE][CodeGen][DAGCombiner] Fix TypeSize warning in redundant store elimination.
Oct 20 2020, 11:51 PM · Restricted Project

Oct 19 2020

david-arm added inline comments to D89703: [SVE]Clarify TypeSize comparisons in llvm/lib/Transforms.
Oct 19 2020, 8:37 AM · Restricted Project
david-arm added a comment to D89701: [SVE][CodeGen][DAGCombiner] Fix TypeSize warning in redundant store elimination.

Is it perhaps worth renaming the test to have sve in the name, i.e. sve-redundant-stores.ll? We've been following this convention for other tests.

Oct 19 2020, 8:05 AM · Restricted Project
david-arm added inline comments to D89031: [SVE] Add support to vectorize_width loop pragma for scalable vectors.
Oct 19 2020, 5:16 AM · Restricted Project
david-arm updated the diff for D89031: [SVE] Add support to vectorize_width loop pragma for scalable vectors.
  • Rebase.
Oct 19 2020, 5:12 AM · Restricted Project
david-arm updated the diff for D88962: [SVE] Add support for scalable vectors with vectorize.scalable.enable loop attribute.
  • Updated documentation for vectorize_width loop attribute.
  • Added lambda functions to be used when validating and setting loop hint attributes.
Oct 19 2020, 3:14 AM · Restricted Project
david-arm committed rG81b7e2141f18: Fix build issue caused by f693f915a07eca94a3faeadc3b5dad59fc0eb1de (authored by david-arm).
Fix build issue caused by f693f915a07eca94a3faeadc3b5dad59fc0eb1de
Oct 19 2020, 3:07 AM
david-arm committed rG3945b69e815b: [SVE][CodeGen] Replace more TypeSize comparison operators with their scalar… (authored by david-arm).
[SVE][CodeGen] Replace more TypeSize comparison operators with their scalar…
Oct 19 2020, 12:39 AM
david-arm closed D88562: [SVE][CodeGen] Replace more TypeSize comparison operators with their scalar equivalents.
Oct 19 2020, 12:39 AM · Restricted Project
david-arm committed rG35a531fb456a: [SVE][CodeGen][NFC] Replace TypeSize comparison operators with their scalar… (authored by david-arm).
[SVE][CodeGen][NFC] Replace TypeSize comparison operators with their scalar…
Oct 19 2020, 12:30 AM
david-arm closed D88482: [SVE][CodeGen][NFC] Replace TypeSize comparison operators with their scalar equivalents.
Oct 19 2020, 12:30 AM · Restricted Project
david-arm committed rG72701773a7ca: [SVE] Replace TypeSize comparison operators in llvm/utils/TableGen (authored by david-arm).
[SVE] Replace TypeSize comparison operators in llvm/utils/TableGen
Oct 19 2020, 12:22 AM
david-arm closed D88947: [SVE] Replace TypeSize comparison operators in llvm/utils/TableGen.
Oct 19 2020, 12:22 AM · Restricted Project
david-arm committed rGf693f915a07e: [SVE][CodeGen] Replace uses of TypeSize comparison operators (authored by david-arm).
[SVE][CodeGen] Replace uses of TypeSize comparison operators
Oct 19 2020, 12:15 AM
david-arm closed D88654: [SVE][CodeGen] Replace uses of TypeSize comparison operators with calls to isKnownXY.
Oct 19 2020, 12:14 AM · Restricted Project
david-arm committed rGd67d8f879027: [SVE][AArch64] Replace TypeSize comparisons with their integer equivalents (authored by david-arm).
[SVE][AArch64] Replace TypeSize comparisons with their integer equivalents
Oct 19 2020, 12:07 AM
david-arm closed D89116: [SVE][AArch64] Replace TypeSize comparisons with their integer equivalents.
Oct 19 2020, 12:07 AM · Restricted Project

Oct 16 2020

david-arm requested review of D89531: [SVE] Remove reliance on TypeSize comparison operators in unit tests.
Oct 16 2020, 3:32 AM · Restricted Project
david-arm updated the diff for D88654: [SVE][CodeGen] Replace uses of TypeSize comparison operators with calls to isKnownXY.
Oct 16 2020, 1:54 AM · Restricted Project

Oct 15 2020

david-arm added a reviewer for D89031: [SVE] Add support to vectorize_width loop pragma for scalable vectors: SjoerdMeijer.
Oct 15 2020, 5:41 AM · Restricted Project
david-arm committed rG47f2dc7e5ff9: [SVE][NFC] Replace some TypeSize comparisons in non-AArch64 Targets (authored by david-arm).
[SVE][NFC] Replace some TypeSize comparisons in non-AArch64 Targets
Oct 15 2020, 1:03 AM
david-arm closed D89101: [SVE][NFC] Replace some TypeSize comparisons in non-AArch64 Targets.
Oct 15 2020, 1:02 AM · Restricted Project
david-arm accepted D89387: [ValueTracking] Clarify TypeSize comparisons.

LGTM!

Oct 15 2020, 12:27 AM · Restricted Project

Oct 14 2020

david-arm committed rGaf57a0838eba: [SVE] Add fatal error when running out of registers for SVE tuple call arguments (authored by david-arm).
[SVE] Add fatal error when running out of registers for SVE tuple call arguments
Oct 14 2020, 1:32 AM
david-arm closed D89326: [SVE] Add fatal error when running out of registers for SVE tuple call arguments.
Oct 14 2020, 1:32 AM · Restricted Project
david-arm accepted D89313: [SVE]Fix implicit TypeSize casts in EmitCheckValue.
Oct 14 2020, 12:03 AM · Restricted Project
david-arm accepted D89312: [SVE][CodeGen]Use getFixedSize() function for TypeSize comparison in clang.
Oct 14 2020, 12:02 AM · Restricted Project

Oct 13 2020

david-arm requested review of D89326: [SVE] Add fatal error when running out of registers for SVE tuple call arguments.
Oct 13 2020, 9:11 AM · Restricted Project
david-arm added inline comments to D88982: [NFCI] Add StackOffset class and base classes for ElementCount, TypeSize..
Oct 13 2020, 5:01 AM · Restricted Project, Restricted Project