search for: isgprzero

Displaying 4 results from an estimated 4 matches for "isgprzero".

2018 May 10
2
[RFC] MC support for variant scheduling classes.
..."lower" scheduling predicates into code that work on MCInst too. A more complicated example involving TII method calls. ------------------------------------------------------ This code is taken from the AArch64 Cyclone scheduling model: ``` def WriteZPred : SchedPredicate<[{TII->isGPRZero(*MI)}]>; def WriteImmZ : SchedWriteVariant<[ SchedVar<WriteZPred, [WriteX]>, SchedVar<NoSchedPred, [WriteImm]>]>; ``` Predicate WriteZPred is used to check if a GPR instruction is a zero-idiom. The rationale is that zero-idioms have zero...
2018 May 11
0
[RFC] MC support for variant scheduling classes.
...developers can extend it by adding new Check predicates. As long as they also teach the PredicateExpander how to do the lowering for those new predicates, then everything should be fine. -- In the RFC I mentioned how we can use a TIIPredicate to let tablegen auto-generate two version of function `isGPRZero`: 1) a version that takes a MachineInstr as input, and that is automatically generated by tablegen into the target-specific instruction info class. 2) another version (still auto-generated by tablegen) that takes a MCInst as input. The goal is to help users defining a predicate the check logic....
2018 May 10
2
[RFC] MC support for variant scheduling classes.
On 10 May 2018 at 21:58, Andrew Trick <atrick at apple.com> wrote: > Fantastic writeup! It’s great to see so much progress on fundamental > infrastructure. > > My time for LLVM code review is extremely limited. Can someone work with > Andrea to get these patches in? Hi Andrew, Same here, but this has been a long goal for me, too, so I'll do my best. -- cheers,
2018 May 11
1
[RFC] MC support for variant scheduling classes.
...ogic. If we use a TIIPredicate, we specify the logic only once, in a declarative way, and then we let tablegen generate code for us. > > If for some reason, a user doesn't want to use this approach, then they can still provide their own implementation for variant 2. (i.e. the version of `isGPRZero` that takes a MCInst as input). The important thing is that users can call into target-specific TII entry points (i.e. not declared in TargetInstrInfo as a virtual method). The reason I provided a C++ hook is so that users could do this without learning the tablegen backend. Although if it’s easy...