Skip to content

Optimization check never finishes #44

@chfast

Description

@chfast

Hi there,

I wanted to use alive to verify an optimization but I know very little about how it works.

The optimization looks like:

Name: Mul128MatchLo
Pre: hasOneUse(%xl) && hasOneUse(%xh) && hasOneUse(%yl) && hasOneUse(%yh)
%xl = and i64 %X, 4294967295
%xh = lshr i64 %X, 32
%yl = and i64 %Y, 4294967295
%yh = lshr i64 %Y, 32
%mul = mul nuw i64 %xl, %yl
%and3 = and i64 %mul, 4294967295
%shr4 = lshr i64 %mul, 32
%mul5 = mul nuw i64 %yl, %xh
%add = add i64 %shr4, %mul5
%and7 = and i64 %add, 4294967295
%mul8 = mul nuw i64 %yh, %xl
%add9 = add i64 %and7, %mul8
%shl = shl i64 %add9, 32
%L = or i64 %shl, %and3
  =>
%L = mul i64 %X, %Y

It might be to heavy for Z3, because it looks like it hangs and does not report anything back. There is not Done: progress reported and it's impossible to terminate it with Ctrl+C.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions