Page MenuHomePhabricator

huntergr (Graham Hunter)
User

Projects

User does not belong to any projects.

User Details

User Since
Sep 5 2014, 5:55 AM (241 w, 1 d)

Recent Activity

Thu, Apr 18

huntergr added a comment to D32530: [SVE][IR] Scalable Vector IR Type.

We need to clarify on insertelement/extractelement. Maybe already done in some other patches, but that clarification should be part of this patch.
Is the "length of val" under the semantics "scalable * n" in <scalable n x ElemTy>, right? Or is it still n?

I am not sure how it could be anything but n. If you don't know how long the vector is, you can't correctly generate an index beyond n.

But you know at runtime... there has to be a way to determine, at runtime, vscale. And the index doesn't need to be a constant. I'm not sure that we need to restrict non-constant n to only values valid for vscale == 1.

Thu, Apr 18, 2:54 AM
huntergr added inline comments to D32530: [SVE][IR] Scalable Vector IR Type.
Thu, Apr 18, 2:46 AM
huntergr added a comment to D32530: [SVE][IR] Scalable Vector IR Type.

We need to clarify on insertelement/extractelement. Maybe already done in some other patches, but that clarification should be part of this patch.
Is the "length of val" under the semantics "scalable * n" in <scalable n x ElemTy>, right? Or is it still n?

I am not sure how it could be anything but n. If you don't know how long the vector is, you can't correctly generate an index beyond n. I assume for vectors of length > n one would have to use shufflevector or something similar (using vscale and stepvector as Graham mentioned) to get the elements you want to the lower n positions.

Either way, the semantics and any restrictions certainly need to be documented.

Thu, Apr 18, 2:38 AM
huntergr added a comment to D32530: [SVE][IR] Scalable Vector IR Type.

That's pretty much what LLVM-VP is about: https://reviews.llvm.org/D57504

We are proposing compress/expand and lane shift as intrinsics.
I suggest you add any shuffle intrinsics to the same namespace to avoid fragmentation.

Thu, Apr 18, 2:38 AM

Mon, Apr 15

huntergr added a comment to D32530: [SVE][IR] Scalable Vector IR Type.

I think this is a coherent set of changes. Given the current top of trunk, this expands support from just assembly/disassembly of machine instructions to include LLVM IR, right? Such being the case, I think this patch should go in. I have some ideas on how to structure passes so SV IR supporting optimizations can be added incrementally. If anyone thinks such a proposal would help, let me know.

I think there is one more thing we still have to do. Does scalable vector type apply to all Instructions where non-scalable vector is allowed? If the answer is no, we need to identify which ones are not allowed to take scalable vector type operand/result. Some of the Instructions are not plain element-wise operation. Do we have agreed upon semantics for all those that are allowed?

Mon, Apr 15, 6:46 AM

Tue, Apr 9

huntergr added inline comments to D32530: [SVE][IR] Scalable Vector IR Type.
Tue, Apr 9, 5:57 AM
huntergr added inline comments to D32530: [SVE][IR] Scalable Vector IR Type.
Tue, Apr 9, 12:48 AM

Fri, Apr 5

huntergr updated the diff for D32530: [SVE][IR] Scalable Vector IR Type.
  • Clarified that the runtime multiple is constant across all scalable vector types, even if the constant value isn't known at compile time.
  • Removed extra whitespace.
Fri, Apr 5, 5:48 AM
huntergr added inline comments to D32530: [SVE][IR] Scalable Vector IR Type.
Fri, Apr 5, 2:45 AM
huntergr added a comment to D32530: [SVE][IR] Scalable Vector IR Type.

I think this patch is a good start and I don't mind having it merged as is, I was just suggesting a way forward since it seems people are still hesitating. While there seems to be some consensus on moving forward with native types, I'm sure many of the details are still somewhat fuzzy. In my opinion having more patches reviewed would make those details clear, and it would thus make it easier to get more sign-offs on this patch as well.

Fri, Apr 5, 2:36 AM
huntergr added a comment to D32530: [SVE][IR] Scalable Vector IR Type.

I'd advise caution here, it's really significant/impactful change, and a single sign-off is a bit worrying.
In particular, even regardless of the feature itself, has the implementation itself been reviewed?

Fri, Apr 5, 2:28 AM

Tue, Apr 2

huntergr added a comment to D32530: [SVE][IR] Scalable Vector IR Type.

I am accepting the scalable vector types based on the comments in
http://lists.llvm.org/pipermail/llvm-dev/2019-March/131137.html

Let's move forward with SVE support in LLVM. Thanks!

Tue, Apr 2, 8:12 AM
huntergr abandoned D31417: [OpenMP] Add support for omp simd pragmas without runtime.

LGTM. This provides a consistent behavior same as GCC and ICC w/ -fopenmp-simd option. To answer, Kelvin's question. it is not directly tied with "target".

Tue, Apr 2, 1:44 AM

Fri, Mar 22

huntergr planned changes to D53137: Scalable type size queries (llvm).
Fri, Mar 22, 3:07 AM
huntergr abandoned D47780: [AArch64][SVE] Testing codegen of scalable vectorized loop.

A more focused set of unit tests will be created instead of this demonstration test.

Fri, Mar 22, 3:05 AM
huntergr planned changes to D47779: [AArch64][SVE] Implement copying for Z registers.
Fri, Mar 22, 3:05 AM
huntergr abandoned D47778: [AArch64][SVE] Left shift patterns for scalable integer types.

A better set of patterns will be created later.

Fri, Mar 22, 3:05 AM
huntergr abandoned D47776: [AArch64][SVE] Initial store patterns for SVE.

A better set of patterns will be created later.

Fri, Mar 22, 3:05 AM
huntergr abandoned D47777: [AArch64][SVE] Addition patterns for integer scalable vectors.

A better set of patterns will be created later.

Fri, Mar 22, 3:05 AM
huntergr planned changes to D47775: [AArch64][SVE] Add SplatVector Intrinsic.

Needs to be updated with better isel patterns (and possibly a new ISD?), instead of just the bare minimum required for demonstration.

Fri, Mar 22, 3:05 AM
huntergr planned changes to D47773: [AArch64][SVE] Add VScale Intrinsic.

Needs to be updated with better isel patterns, instead of just the bare minimum required for demonstration.

Fri, Mar 22, 3:01 AM
huntergr planned changes to D47774: [AArch64][SVE] Add StepVector Intrinsic.

Needs to be updated with better isel patterns, instead of just the bare minimum required for demonstration.

Fri, Mar 22, 3:01 AM

Mar 21 2019

huntergr updated the diff for D32530: [SVE][IR] Scalable Vector IR Type.

Rebased, incorporated fixes from reviews.

Mar 21 2019, 10:20 AM

Mar 15 2019

huntergr abandoned D59245: SVE opaque type for C intrinsics demo.
Mar 15 2019, 9:58 AM
huntergr abandoned D59246: SVE opaque type for C intrinsics demo (LLVM side).
Mar 15 2019, 9:58 AM

Mar 12 2019

huntergr created D59246: SVE opaque type for C intrinsics demo (LLVM side).
Mar 12 2019, 4:26 AM
huntergr created D59245: SVE opaque type for C intrinsics demo.
Mar 12 2019, 4:23 AM

Jan 30 2019

huntergr updated the diff for D53695: Scalable VectorType RFC.

Update based on off-list feedback:

  • Added a section on allowed operations to clarify this is a first class type.
  • Remove initial proposal on the flag for not inheriting vlen; there's more pushback against allowing runtime multiple changes. I think this design could still be extended to support that in the future, but I'm afraid I'll have to leave that battle to the RVV team.
  • Minor wording changes.
Jan 30 2019, 3:22 AM

Nov 2 2018

huntergr updated the diff for D53137: Scalable type size queries (llvm).
  • Unified ScalableSize representation
  • Changed to uint64_t + boolean, since we no longer allow scalable vectors in aggregates
  • Removed aggregate and mixed unit tests
Nov 2 2018, 5:27 PM
huntergr updated the diff for D32530: [SVE][IR] Scalable Vector IR Type.
  • Added checks in verifier to prevent scalable vectors being included in structs or arrays
  • Changed lookup to use ElementCount
  • Moved ElementCount to a new file
  • More unit tests
Nov 2 2018, 5:21 PM
huntergr updated the diff for D53695: Scalable VectorType RFC.

Updated based on feedback:

  • Add reasons for restrictions on global/aggregates
  • Change size query struct to an integer + a boolean instead of two integers.
Nov 2 2018, 4:35 PM

Oct 31 2018

huntergr added a comment to D53695: Scalable VectorType RFC.

Also, can you move this to docs/Proposals, together with the other RFCs, please?

Oct 31 2018, 6:29 AM

Oct 25 2018

huntergr updated the diff for D53695: Scalable VectorType RFC.

Updated based on discussions at the 2018 devmeeting

Oct 25 2018, 5:57 AM
huntergr created D53695: Scalable VectorType RFC.
Oct 25 2018, 5:56 AM

Oct 24 2018

huntergr abandoned D53138: Scalable type size queries (clang).

Abandoning this. At the devmeeting it was agreed that 'getPrimitiveSizeInBits' should continue to work as-is for fixed-length vectors and only behave differently for scalable vectors.

Oct 24 2018, 4:16 AM

Oct 11 2018

huntergr added a parent revision for D53137: Scalable type size queries (llvm): D32530: [SVE][IR] Scalable Vector IR Type.
Oct 11 2018, 7:03 AM
huntergr added a child revision for D32530: [SVE][IR] Scalable Vector IR Type: D53137: Scalable type size queries (llvm).
Oct 11 2018, 7:03 AM
huntergr added a parent revision for D53138: Scalable type size queries (clang): D53137: Scalable type size queries (llvm).
Oct 11 2018, 7:03 AM
huntergr added a child revision for D53137: Scalable type size queries (llvm): D53138: Scalable type size queries (clang).
Oct 11 2018, 7:03 AM
huntergr created D53138: Scalable type size queries (clang).
Oct 11 2018, 7:02 AM
huntergr created D53137: Scalable type size queries (llvm).
Oct 11 2018, 6:59 AM

Sep 4 2018

huntergr added inline comments to D32530: [SVE][IR] Scalable Vector IR Type.
Sep 4 2018, 2:39 AM

Aug 1 2018

huntergr updated the summary of D47771: [AArch64][SVE] Scalable arguments and returns passed in Z regs.
Aug 1 2018, 6:58 AM

Jul 26 2018

huntergr added inline comments to D32530: [SVE][IR] Scalable Vector IR Type.
Jul 26 2018, 4:55 AM

Jul 19 2018

huntergr added inline comments to D32530: [SVE][IR] Scalable Vector IR Type.
Jul 19 2018, 8:01 AM
huntergr added reviewers for D32530: [SVE][IR] Scalable Vector IR Type: samparker, SjoerdMeijer.
Jul 19 2018, 7:47 AM

Jul 16 2018

huntergr updated the diff for D32530: [SVE][IR] Scalable Vector IR Type.

Indeed, we shouldn't allow scalable vectors to be globals. I've added a check for that in the verifier, plus unit tests and a small update to the langref. Thanks.

Jul 16 2018, 3:24 AM

Jul 12 2018

huntergr added a reviewer for D32530: [SVE][IR] Scalable Vector IR Type: rkruppe.

I think the discussion on the mailing list has reached agreement on this type being suitable for both SVE and RVV; any review comments on the code or tests?

Jul 12 2018, 3:11 AM

Jun 7 2018

huntergr updated the diff for D47770: [MVT][SVE] Add EVT strings and Type mapping.

Fixed string representation of scalable vectors which don't map to the existing defined set of MVTs.

Jun 7 2018, 5:34 AM

Jun 6 2018

huntergr updated the diff for D47780: [AArch64][SVE] Testing codegen of scalable vectorized loop.

Removed unnecessary metadata.

Jun 6 2018, 7:06 AM

Jun 5 2018

huntergr updated subscribers of D47780: [AArch64][SVE] Testing codegen of scalable vectorized loop.
Jun 5 2018, 7:57 AM
huntergr updated subscribers of D47779: [AArch64][SVE] Implement copying for Z registers.
Jun 5 2018, 7:54 AM
huntergr updated subscribers of D47778: [AArch64][SVE] Left shift patterns for scalable integer types.
Jun 5 2018, 7:53 AM
huntergr updated subscribers of D47777: [AArch64][SVE] Addition patterns for integer scalable vectors.
Jun 5 2018, 7:53 AM
huntergr updated subscribers of D47776: [AArch64][SVE] Initial store patterns for SVE.
Jun 5 2018, 7:53 AM
huntergr updated subscribers of D47775: [AArch64][SVE] Add SplatVector Intrinsic.
Jun 5 2018, 7:53 AM
huntergr updated subscribers of D47774: [AArch64][SVE] Add StepVector Intrinsic.
Jun 5 2018, 7:52 AM
huntergr updated subscribers of D47773: [AArch64][SVE] Add VScale Intrinsic.
Jun 5 2018, 7:52 AM
huntergr updated subscribers of D47772: [AArch64] Cleanup intrinsic lowering a little. NFC..
Jun 5 2018, 7:51 AM
huntergr updated subscribers of D47771: [AArch64][SVE] Scalable arguments and returns passed in Z regs.
Jun 5 2018, 7:51 AM
huntergr updated subscribers of D47770: [MVT][SVE] Add EVT strings and Type mapping.
Jun 5 2018, 7:51 AM
huntergr updated subscribers of D47769: [SVE][TableGen] LLT support for scalable vectors.
Jun 5 2018, 7:51 AM
huntergr updated subscribers of D47768: [SVE][TableGen] Vector element constraint.
Jun 5 2018, 7:50 AM
huntergr added a comment to D32530: [SVE][IR] Scalable Vector IR Type.

Updated RFC including a list of patches for simple codegen using this extension has been posted: http://lists.llvm.org/pipermail/llvm-dev/2018-June/123780.html

Jun 5 2018, 6:36 AM
huntergr created D47780: [AArch64][SVE] Testing codegen of scalable vectorized loop.
Jun 5 2018, 5:53 AM
huntergr created D47779: [AArch64][SVE] Implement copying for Z registers.
Jun 5 2018, 5:50 AM
huntergr created D47778: [AArch64][SVE] Left shift patterns for scalable integer types.
Jun 5 2018, 5:48 AM
huntergr created D47777: [AArch64][SVE] Addition patterns for integer scalable vectors.
Jun 5 2018, 5:45 AM
huntergr created D47776: [AArch64][SVE] Initial store patterns for SVE.
Jun 5 2018, 5:43 AM
huntergr created D47775: [AArch64][SVE] Add SplatVector Intrinsic.
Jun 5 2018, 5:41 AM
huntergr created D47774: [AArch64][SVE] Add StepVector Intrinsic.
Jun 5 2018, 5:37 AM
huntergr created D47773: [AArch64][SVE] Add VScale Intrinsic.
Jun 5 2018, 5:34 AM
huntergr created D47772: [AArch64] Cleanup intrinsic lowering a little. NFC..
Jun 5 2018, 5:29 AM
huntergr created D47771: [AArch64][SVE] Scalable arguments and returns passed in Z regs.
Jun 5 2018, 5:26 AM
huntergr added a comment to D47770: [MVT][SVE] Add EVT strings and Type mapping.
Jun 5 2018, 5:20 AM
huntergr added a comment to D47769: [SVE][TableGen] LLT support for scalable vectors.
Jun 5 2018, 5:20 AM
huntergr added a comment to D47768: [SVE][TableGen] Vector element constraint.
Jun 5 2018, 5:19 AM
huntergr created D47770: [MVT][SVE] Add EVT strings and Type mapping.
Jun 5 2018, 5:15 AM
huntergr created D47769: [SVE][TableGen] LLT support for scalable vectors.
Jun 5 2018, 5:06 AM
huntergr created D47768: [SVE][TableGen] Vector element constraint.
Jun 5 2018, 4:56 AM

Nov 1 2017

huntergr added a comment to D32530: [SVE][IR] Scalable Vector IR Type.

I have also changed vscale and stepvector to be intrinsics, but as that makes those patches just an addition to Intrinsics.td I won't post them yet.

Nov 1 2017, 5:27 AM
huntergr updated the diff for D32530: [SVE][IR] Scalable Vector IR Type.

Changed textual IR format to match Chris's suggestion from the mailing list.

Nov 1 2017, 5:20 AM

Oct 3 2017

huntergr added a comment to D31417: [OpenMP] Add support for omp simd pragmas without runtime.

Is this still being worked on?

Oct 3 2017, 2:17 AM

Aug 2 2017

huntergr commandeered D35307: [AArch64] Initial SVE register definitions.
Aug 2 2017, 6:34 AM

Jun 1 2017

huntergr added a comment to D32737: [Constants][SVE] Represent the runtime length of a scalable vector.

New RFC posted to llvm-dev: http://lists.llvm.org/pipermail/llvm-dev/2017-June/113587.html

Jun 1 2017, 7:25 AM

May 3 2017

huntergr added inline comments to D32737: [Constants][SVE] Represent the runtime length of a scalable vector.
May 3 2017, 1:24 AM

May 2 2017

huntergr updated the diff for D32530: [SVE][IR] Scalable Vector IR Type.

Improved constructor based on Renato's suggestion. Thanks.

May 2 2017, 2:49 AM
huntergr created D32737: [Constants][SVE] Represent the runtime length of a scalable vector.
May 2 2017, 2:40 AM

Apr 26 2017

huntergr created D32530: [SVE][IR] Scalable Vector IR Type.
Apr 26 2017, 4:12 AM

Apr 20 2017

huntergr updated the diff for D32019: [MVT][SVE] Scalable vector MVTs (3/3).

Added unit tests via gtest framework.
Changed getHalfNumVectorElementsVT to use 'EltCnt.Min' when determining whether the current vector length is evenly divisible.
Changed iterator names to be more obvious.

Apr 20 2017, 3:08 AM

Apr 19 2017

huntergr added a comment to D32019: [MVT][SVE] Scalable vector MVTs (3/3).

Right, the code looks good now, but I'm worried about tests... We don't seem to have unit tests on this area and I'm not sure how we'd create one (not terribly familiar here).

We could wait to have IR tests, like the rest, when AArch64 uses it... If everyone agrees with it.

Apr 19 2017, 6:05 AM
huntergr added a comment to D32017: [MVT][SVE] Scalable vector MVTs (1/3).

Looks good to me to, but, what about tests?

Apr 19 2017, 5:30 AM
huntergr updated the diff for D32019: [MVT][SVE] Scalable vector MVTs (3/3).

Changed 'Min' to unsigned.
Moved text to asserts instead of comments.
Added FIXME to explain why extended scalable vector types aren't handled yet.

Apr 19 2017, 4:59 AM
huntergr updated the diff for D32018: [MVT][SVE] Scalable vector MVTs (2/3).

Changed SimpleValueType enum back to 8 bits, but made it unsigned. Renumbered all of them, with 0 now being the invalid value.

Apr 19 2017, 4:54 AM
huntergr updated the diff for D32017: [MVT][SVE] Scalable vector MVTs (1/3).

Removed unused functions, moved assert on halving the number of elements when there's an odd element count.

Apr 19 2017, 4:50 AM

Apr 18 2017

huntergr added inline comments to D32019: [MVT][SVE] Scalable vector MVTs (3/3).
Apr 18 2017, 6:02 AM
huntergr added inline comments to D32018: [MVT][SVE] Scalable vector MVTs (2/3).
Apr 18 2017, 5:49 AM
huntergr added inline comments to D32017: [MVT][SVE] Scalable vector MVTs (1/3).
Apr 18 2017, 5:48 AM

Apr 13 2017

huntergr updated subscribers of D32019: [MVT][SVE] Scalable vector MVTs (3/3).
Apr 13 2017, 9:05 AM
huntergr updated subscribers of D32018: [MVT][SVE] Scalable vector MVTs (2/3).
Apr 13 2017, 9:04 AM