Page MenuHomePhabricator

Scalable type size queries (llvm)
Needs ReviewPublic

Authored by huntergr on Oct 11 2018, 6:59 AM.



Implements basic size queries to support scalable vectors in LLVM IR, and makes various other classes related to memory addressing aware of scalable sizes.

For now there are a few functions that just bail out and return a conservative answer when encountering scalable vectors (e.g. assuming they may alias with anything in the same address space).

Diff Detail

Event Timeline

huntergr created this revision.Oct 11 2018, 6:59 AM
huntergr updated this revision to Diff 172470.Nov 2 2018, 5:27 PM
  • Unified ScalableSize representation
  • Changed to uint64_t + boolean, since we no longer allow scalable vectors in aggregates
  • Removed aggregate and mixed unit tests

This looks ok to me, but I'd rather more people look at it before approving.


I know this isn't ready for merge, but since the mailing list discussion has died down it seems like maybe we should move the discussion here. If so, it would be helpful to have comments on all the routines explaining what they do and how they differ from the existing routines, in order to aid discussion.

simoll added a subscriber: simoll.Mar 8 2019, 9:00 AM
hsaito added a subscriber: hsaito.Mar 8 2019, 2:28 PM
huntergr planned changes to this revision.Mar 22 2019, 3:06 AM
vkmr added a subscriber: vkmr.Jun 14 2019, 5:10 AM
huntergr updated this revision to Diff 210089.Tue, Jul 16, 6:59 AM
huntergr edited the summary of this revision. (Show Details)
huntergr set the repository for this revision to rG LLVM Github Monorepo.

Updated based on where scalable size queries were required when running with an SVE-capable loop vectorizer on several codebases (all of LNT, various flavours of SpecCPU, lots of HPC and embedded benchmarks).

Herald added a project: Restricted Project. · View Herald TranscriptTue, Jul 16, 6:59 AM