[PATCH] D66991: [PowerPC] Fix SH field overflow issue

Yi-Hong Lyu via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Sep 23 12:13:28 PDT 2019


Yi-Hong.Lyu marked 2 inline comments as done.
Yi-Hong.Lyu added inline comments.


================
Comment at: llvm/test/CodeGen/PowerPC/SH-field-overflow.mir:10
+  ; PowerPC Pre-Emit Peephole converts
+  ;   renamable $r4 = LI 0
+  ;   renamable $r5 = SRW renamable $r3, renamable $r4
----------------
jsji wrote:
> Yi-Hong.Lyu wrote:
> > jsji wrote:
> > > We know what exactly we want to test in MIR, so why don't we reduce this MIR test further ?
> > > eg:  a MIR with following lines should be sufficient for 32 bit, you can add another module for 64 bits, and that should be all.
> > > 
> > > ```
> > > $ cat sh-overflow.mir
> > > ---
> > > name:            special_right_shift32_0
> > > liveins:
> > >   - { reg: '$x3'}
> > >   - { reg: '$x4'}
> > > tracksRegLiveness: true
> > > body:             |
> > >   bb.0.entry:
> > >     liveins: $r3, $r4
> > >   
> > >     renamable $r4 = LI 0
> > >     renamable $r3 = SRW renamable $r3, renamable $r4
> > >     BLR8 implicit $lr8, implicit $rm, implicit $x3
> > > ...
> > > 
> > > ```
> > > 
> > Multiple passes after ppc-mi-peepholes relies on SSA form. Apparently, the test case is not in SSA form so we can't just use it.
> Good point, sorry, I did not check SSA constraint for MIR carefully. 
> My example above is mostly just to demo the idea of how to reduce the case
> 
> How about something like these?
> 
> ```
> $ cat t2.mir
> ---
> name:            special_right_shift32_0
> liveins:
>   - { reg: '$r4'}
>   - { reg: '$r5'}
> tracksRegLiveness: true
> body:             |
>   bb.0.entry:
>     liveins: $r5, $r4
>   
>     renamable $r4 = LI 0
>     renamable $r3 = SRW killed renamable $r5, killed renamable $r4, implicit-def $x3
>     BLR8 implicit $lr8, implicit $rm, implicit killed $x3
> ...
> $ cat t3.mir
> ---
> name:            special_right_shift64_0
> liveins:
>   - { reg: '$r4'}
>   - { reg: '$x5'}
> tracksRegLiveness: true
> body:             |
>   bb.0.entry:
>     liveins: $r4, $x5
>   
>     renamable $r4 = LI 0
>     renamable $x3 = SRD killed renamable $x5, killed renamable $r4
>     BLR8 implicit $lr8, implicit $rm, implicit killed $x3
> ...
> ```
Thanks for your test case. Both of your test cases works. One concern is that they are non-SSA MIR tests but we apply some SSA MIR passes (e.g., Live Variable Analysis) on them. I come up with reduced SSA MIR tests, how do you think?


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D66991/new/

https://reviews.llvm.org/D66991





More information about the llvm-commits mailing list