search for: gisel

Displaying 20 results from an estimated 73 matches for "gisel".

Did you mean: isel
2020 May 12
3
Codegen pass configs dependent on function attributes?
...up a patch here: https://reviews.llvm.org/D79769 <https://reviews.llvm.org/D79769> that adds a unified pipeline that targets can opt-into. It has some similarities with forcing fallbacks, but uses a different mechanism to do so to preserve the abort behavior. It therefore requires that every GISel pass needs to explicitly check whether the GISel selector is being requested rather than just using the FailedISel property. Cheers, Amara > On May 5, 2020, at 6:56 PM, Quentin Colombet <qcolombet at apple.com> wrote: > > Hi Amara, > > I’ve done that internally for testing...
2020 May 05
4
Codegen pass configs dependent on function attributes?
...isel and related options to the cc1 invocation. With LTO, that doesn’t work as we need to encode codegen options into the bitcode, usually via function attributes. Does anyone have any ideas on how to achieve this? The only way I can see it working is if we have a unified codegen pipeline for both GISel and SelectionDAG. Then use a function attribute to tell the GISel passes to skip and leave it to FastISel/SelectionDAG which runs afterwards. Likewise, FastISel/SelectionDAG would need to skip the function if it was marked for GISel compilation and we didn’t trigger a fallback. Amara
2017 Jan 21
12
[GlobalISel] Quick Status
...sending this email to give a status on GlobalISel progress and situation. We are pushing GlobalISel from the state of prototype to a production quality framework. We welcome help with patches, reviews, feedbacks and so on. As explained during the last developer meeting, we are aiming at enabling GISel by default for AArch64 at -O0 for this year (See http://llvm.org/devmtg/2016-11/#talk16). Note: That does not mean the design is settle nor that we won’t change the APIs. Note: A lot of the things listed in this email is a reminder of what we said during the dev meeting talk. *** High Level View...
2017 Jun 16
7
[GlobalISel][AArch64] Toward flipping the switch for O0: Please give it a try!
...nversation what will be the right time and requirements to flip the switch. We want to gather more data first. Your help would be appreciated! *** Short-Term Proposal *** What we would like to do instead short-term is: A. Repurpose or create an option “-aarch64-enable-global-isel-at-O” to enable GISel with fallbacks and warnings enables (i.e., equivalent of -global-isel -global-isel-abort=2) B. Advertise this option in the next open source release to allow compiler enthusiastic to try it and report problems C. Have GISel always built so we can push thing in the right place, MachineVerifier in mi...
2017 Jul 06
2
[RFC][GlobalISel] Making GlobalISel non-optional in the build
...has been this framework built up on the side for about two years. Now, we are close to a point where having it being optional impedes our ability to implement the right things. For instance, checks that would fit naturally in the MachineVerifier are directly done during the execution of the related GISel generic passes to make sure we don’t end up with ifdefs all around of CodeGen. *** What Changed? *** * GlobalISel is more mature We now have a better idea of what the framework should look like and the scope of the changes what will happen on the CodeGen library. * GlobalISel is getting to be...
2017 Nov 13
3
[GlobalISel][AArch64] Toward flipping the switch for O0: Please give it a try!
...on=311388. I haven’t looked into the details of this issue - so maybe I’m worried over nothing? I’m wondering if since then on your side you did any testing around ABI compatibility? E.g. building software where you semi-randomly build some functions through GlobalISel and some functions through DAGISel? Thanks, Kristof On 8 Nov 2017, at 00:42, Quentin Colombet via llvm-dev <llvm-dev at lists.llvm.org<mailto:llvm-dev at lists.llvm.org>> wrote: Hi all, I’d like to resurrect this thread and ask if people are on board for enabling this by default for AArch64 O0. *** What Changed Si...
2019 Mar 11
4
GlobalISel: Ambiguous intrinsic semantics problem
...neInstr, or through an additional operand to store type information (a single bit per operand should suffice). These come with the drawbacks of either increasing the size of MachineInstr, or breaking existing code that deals with intrinsics by adding a new operand somewhere. Change the LLT types in GISel to distinguish between fp and integer types. This seems like the most natural fix in that we match the IR type system more closely, but it also has very significant impacts on the existing GISel codebase. An fp “flag” on a type that only affects types used by intrinsics sounds tempting, but it does...
2018 Jul 02
3
Using FileCheck in unit tests
...heck in UnitTests because FileCheck is extremely convenient/robust to verify correctness. In order to do so, I moved most of FileCheck’s implementation into a header (Support/FileCheck.h) and updated FileCheck.cpp to use this. I ran into this while writing some target agnostic Legalization code in GISel where it’s not possible or extremely inconvenient to use llc. What do others think of this? I would think there might be non GISel uses for FileCheck in unit tests, but I’m not sure. Here’s a quick patch for this (https://reviews.llvm.org/D48850 <https://reviews.llvm.org/D48850>) Thanks Adi...
2017 May 24
2
[GlobalISel][AArch64] Toward flipping the switch for O0: Please give it a try!
...ive it a try? To enable the fast mode, please use (-mllvm) -regalloc-greedy-fast=true (default is false). > At the moment I can't think of an alternative to having a "constant materialization localizer" pass at -O0 to hit all the metrics we thought of as necessary before enabling GISel by default. > > It would be good if someone else could also do a compilation time experiment - just to make sure I didn't make any silly mistakes in my experiment. > > Here are the details I see: > > gisel gisel+greedy > CTMark/7zip/7zip-benchmark 102.8% 106.5% > CTMa...
2017 Jun 06
3
[GlobalISel][AArch64] Toward flipping the switch for O0: Please give it a try!
...ower since I did that 3.5% measurement? > Or maybe the Localizer pass changes the structure of the program so that another later pass gets a different compile time profile? > Basically, I'd have to do more experiments to figure that one out. > > As far as where time is spent in the gisel-passes itself, on average, I saw the following on the latest CTMark experiment I ran: > Avg compile time spent in IRTranslator: 4.61% > Avg compile time spent in InstructionSelect: 7.51% > Avg compile time spent in Legalizer: 1.06% > Avg compile time spent in Localizer: 0.76% > Avg c...
2017 Jun 12
1
[GlobalISel][AArch64] Toward flipping the switch for O0: Please give it a try!
...e I did that 3.5% > measurement? > Or maybe the Localizer pass changes the structure of the program so that > another later pass gets a different compile time profile? > Basically, I'd have to do more experiments to figure that one out. > > As far as where time is spent in the gisel-passes itself, on average, I > saw the following on the latest CTMark experiment I ran: > Avg compile time spent in IRTranslator: 4.61% > Avg compile time spent in InstructionSelect: 7.51% > Avg compile time spent in Legalizer: 1.06% > Avg compile time spent in Localizer: 0.76% >...
2017 Nov 14
2
[GlobalISel][AArch64] Toward flipping the switch for O0: Please give it a try!
...ou’re right. The problem with ABI is if you are consistently wrong, then you won’t notice :). I’m wondering if since then on your side you did any testing around ABI compatibility? E.g. building software where you semi-randomly build some functions through GlobalISel and some functions through DAGISel? Justin will look into that. Clang has utility script for that utils/ABITest. Given we will only be able to check iOS ABI, you may want to follow the same kind of validation on your side. I let you sync up with Justin for the method. Cheers, -Quentin Thanks, Kristof On 8 Nov 2017, at 00:42...
2018 Jan 03
7
Options for custom CCState, CCAssignFn, and GlobalISel
...just having PPCISelLowering call PPCCCState::PreAnalyzeCallOperands directly. * SystemZCCState: has bool vectors ArgIsFixed and ArgIsShortVector, works similarly to MipsCCState or PPCCCState. The above works, but it isn't directly usable in the current GlobalISel implementation. Very sensibly, GISel tries to both reuse existing calling convention implementations and to reduce duplicated code as much as possible. To this end, CallLowering::handleAssignments will create a CCState and use ValueHandler::assignArg to call a function of type CCAssignFn type. I see a couple of options: 1) Creating a...
2018 Jan 04
2
Options for custom CCState, CCAssignFn, and GlobalISel
...d found that it wasn't actually full so maybe we should move OutputArg::IsFixed into ArgFlagsTy now. AArch64, Hexagon, RISCV, and SystemZ all have the same requirement. AArch64 works around it by calling its CCAssignFnForCall helper for every argument (and passing IsFixed through to that). For GISel, it overrides assignArg so a different function can be called for varargs. I'd be in favour of adding IsFixed to ArgFlagsTy even if it did "overflow" ArgFlagsTy. I know there's an argument about "death by a thousand papercuts", but is the size of ArgFlagsTy really criti...
2019 Jun 20
4
RFC: Memcpy inlining in IR
...lementation, I don’t see anything that would particularly be problematic for us to do it at the IR level. The existing TLI hooks to specify how certain memcpy calls should be lowered doesn’t have anything too SelectionDAG specific, and an IR lowering pass could be shared in future between SDAG and GISel. Does anyone see issues with this? Thanks, Amara
2017 Jun 17
2
[GlobalISel][AArch64] Toward flipping the switch for O0: Please give it a try!
...ght time and requirements to flip the switch. We want to gather more data first. Your help would be appreciated! > > > *** Short-Term Proposal *** > > What we would like to do instead short-term is: > A. Repurpose or create an option “-aarch64-enable-global-isel-at-O” to enable GISel with fallbacks and warnings enables (i.e., equivalent of -global-isel -global-isel-abort=2) > B. Advertise this option in the next open source release to allow compiler enthusiastic to try it and report problems > C. Have GISel always built so we can push thing in the right place, MachineVeri...
2017 Jun 14
2
[GlobalISel][AArch64] Toward flipping the switch for O0: Please give it a try!
...5% measurement? >> Or maybe the Localizer pass changes the structure of the program so that >> another later pass gets a different compile time profile? >> Basically, I'd have to do more experiments to figure that one out. >> >> As far as where time is spent in the gisel-passes itself, on average, I >> saw the following on the latest CTMark experiment I ran: >> Avg compile time spent in IRTranslator: 4.61% >> Avg compile time spent in InstructionSelect: 7.51% >> Avg compile time spent in Legalizer: 1.06% >> Avg compile time spent in Lo...
2017 May 23
2
[GlobalISel][AArch64] Toward flipping the switch for O0: Please give it a try!
Great! I thought I had to look at our pipeline at O0 to make sure optimized regalloc was supported (https://bugs.llvm.org/show_bug.cgi?id=33022 <https://bugs.llvm.org/show_bug.cgi?id=33022> in mind). Glad I was wrong, it saves me some time. > On May 22, 2017, at 12:51 AM, Kristof Beyls <kristof.beyls at arm.com> wrote: > > >> On 22 May 2017, at 09:09, Diana Picus
2019 May 20
3
GlobalISel: Very limited pattern matching?
Hi all, I'm trying to get GlobalISel up and running on an off-tree architecture and am thinking I must be doing something wrong, given by how few things actually work. Namely, any ImmLeaf pattern will fail to match if there is a (TRUNC/ZEXT/SEXT) applied to the constant operand, all of which are commonly created through Legalization. This is due to G_CONSTANT being explicitly looked for by
2018 Jan 05
0
Options for custom CCState, CCAssignFn, and GlobalISel
...'t actually full so maybe we should move OutputArg::IsFixed into ArgFlagsTy now. > > AArch64, Hexagon, RISCV, and SystemZ all have the same requirement. > AArch64 works around it by calling its CCAssignFnForCall helper for > every argument (and passing IsFixed through to that). For GISel, it > overrides assignArg so a different function can be called for varargs. > > I'd be in favour of adding IsFixed to ArgFlagsTy even if it did > "overflow" ArgFlagsTy. I know there's an argument about "death by a > thousand papercuts", but is the size o...