[PATCH] D17898: Implement expansion of {s,u}{min,max}

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Wed Mar 9 15:03:58 PST 2016


arsenm added a comment.

What is emitting the illegal min/max?

Isn't this already handled in DAGTypeLegalizer::PromoteIntegerResult? I added handling here a while ago

In http://reviews.llvm.org/D17898#368702, @jvesely wrote:

> In http://reviews.llvm.org/D17898#368335, @arsenm wrote:
>
> > What is emitting the illegal min/max?
> >
> > Isn't this already handled in DAGTypeLegalizer::PromoteIntegerResult? I added handling here a while ago
>
>
> I don't think this ever went through promotion pass since the types are i64 to begin with. Finding and fixing the place is probably better than undoing it in type legalization, but I had trouble finding the place
>  with dumps enabled, the last thing that I see before assertion failure is:
>
>   *** IR Dump After Module Verifier ***
>   ; Function Attrs: norecurse nounwind uwtable
>   define void @test(i64* nocapture %out, i64 %a, i64 %b) #0 {
>   entry:
>     %cmp = icmp sgt i64 %a, %b
>     %cond = select i1 %cmp, i64 %a, i64 %b
>     store i64 %cond, i64* %out, align 8, !tbaa !7
>     ret void
>   }
>   ExpandIntegerResult #0: t16: i64 = smax t12, t13
>  
>   Do not know how to expand the result of this operator!
>
>
> the next pass is: AMDGPU DAG->DAG Pattern Instruction Selection
>  I'm not sure if llvm dump is of much use as afaik these ops don't show up there (which I assume means that they are not used).
>  the added test cases trigger the problem for EG.


Min/max matching is done in SelectionDAGBuilder. You want -debug / -debug-only=isel


Repository:
  rL LLVM

http://reviews.llvm.org/D17898





More information about the llvm-commits mailing list