Skip to content

Instantly share code, notes, and snippets.

@regehr
Created April 26, 2018 15:42
Show Gist options
  • Save regehr/b7b990d7c49cec51e14c646660cfa240 to your computer and use it in GitHub Desktop.
Save regehr/b7b990d7c49cec51e14c646660cfa240 to your computer and use it in GitHub Desktop.
-----------------------------------------------------------
; start LHS (in $2)
%0 = block 2
%1:i32 = var
; (i32.lt_s(i32.const -1000999)(get_local $17))
%2 = slt -1000999:i32, %1
blockpc %0 0 %2 1:i1
%3:i32 = zext %2
; (i32.eq(unreachable)(unreachable))
%4 = eq %3, 0:i32
blockpc %0 1 %4 1:i1
%5:i32 = var
%6:i32 = var
; (i32.shl(get_local $21)(i32.const 4))
%7 = shl %1, 4:i32
; (i32.add(get_local $20)(get_local $22))
%8 = add %6, %7
%9 = phi %0, %5, %8
; (i32.eq(get_local $24)(i32.const -1001000))
%10 = eq %1, -1001000:i32
pc %10 1:i1
; (i32.le_s(i32.const 0)(get_local $5))
%11 = sle 0:i32, %1
%12:i32 = zext %11
; (i32.eq(unreachable)(unreachable))
%13 = eq %12, 0:i32
pc %13 1:i1
infer %9
; RHS inferred successfully
%14:i32 = sub %6, 16016000:i32
result %14
-----------------------------------------------------------
; start LHS (in $3)
%0:i32 = var
; (i32.add(get_local $14)(i32.const 24))
%1 = add %0, 24:i32
; (i32.add(get_local $26)(i32.const 36))
%2 = add %1, 36:i32
%3:i32 = var
; (i32.le_s(i32.const 0)(get_local $23))
%4 = sle 0:i32, %3
pc %4 1:i1
%5:i32 = var
; (i32.ne(unreachable)(unreachable))
%6 = ne %5, 0:i32
pc %6 1:i1
infer %2
; RHS inferred successfully
%7:i32 = add 60:i32, %0
result %7
-----------------------------------------------------------
; start LHS (in $13)
%0:i32 = var
; (i32.add(get_local $12)(i32.const 28))
%1 = add %0, 28:i32
; (i32.add(get_local $49)(i32.const 4))
%2 = add %1, 4:i32
infer %2
; RHS inferred successfully
%3:i32 = sub %0, 4294967264:i32
result %3
-----------------------------------------------------------
; start LHS (in $13)
%0:i32 = var
; (i32.add(get_local $12)(i32.const 28))
%1 = add %0, 28:i32
; (i32.add(get_local $49)(i32.const 4))
%2 = add %1, 4:i32
infer %2
; RHS inferred successfully
%3:i32 = sub %0, 4294967264:i32
result %3
-----------------------------------------------------------
; start LHS (in $13)
%0:i32 = var
; (i32.add(get_local $12)(i32.const 28))
%1 = add %0, 28:i32
; (i32.add(get_local $49)(i32.const 4))
%2 = add %1, 4:i32
%3:i32 = var
; (i32.eq(unreachable)(unreachable))
%4 = eq %3, 0:i32
pc %4 1:i1
infer %2
; RHS inferred successfully
%5:i32 = sub %0, 4294967264:i32
result %5
-----------------------------------------------------------
; start LHS (in $36)
%0:i32 = var
%1:i32 = var
; (i32.sub(get_local $33)(get_local $35))
%2 = sub %0, %1
; (i32.shr_s(get_local $36)(i32.const 2))
%3 = ashr %2, 2:i32
; (i32.add(get_local $37)(i32.const -1))
%4 = add %3, -1:i32
; (i32.shl(get_local $38)(i32.const 2))
%5 = shl %4, 2:i32
%6:i32 = var
; (i32.ne(unreachable)(unreachable))
%7 = ne %6, 0:i32
pc %7 1:i1
infer %5
; RHS inferred successfully
%8:i32 = or 3:i32, %2
%9:i32 = add 4294967289:i32, %8
result %9
-----------------------------------------------------------
; start LHS (in $45)
%0:i32 = var
; (i32.le_s(i32.const 0)(get_local $24))
%1 = sle 0:i32, %0
%2:i32 = zext %1
%3:i32 = var
; (i32.le_s(i32.const 0)(get_local $26))
%4 = sle 0:i32, %3
%5:i32 = zext %4
; (i32.or(get_local $25)(get_local $27))
%6 = or %2, %5
infer %6
; RHS inferred successfully
%7:i32 = and %0, %3
%8:i32 = ashr %7, 31:i32
%9:i32 = sub %8, 4294967295:i32
result %9
-----------------------------------------------------------
; start LHS (in $45)
%0:i32 = var
; (i32.le_s(i32.const 0)(get_local $24))
%1 = sle 0:i32, %0
%2:i32 = zext %1
%3:i32 = var
; (i32.le_s(i32.const 0)(get_local $26))
%4 = sle 0:i32, %3
%5:i32 = zext %4
; (i32.or(get_local $25)(get_local $27))
%6 = or %2, %5
; (i32.eq(unreachable)(unreachable))
%7 = eq %6, 0:i32
infer %7
; RHS inferred successfully
%8:i32 = and %0, %3
%9:i32 = lshr %8, 31:i32
%10:i1 = trunc %9
result %10
-----------------------------------------------------------
; start LHS (in $52)
%0:i32 = var
; (i32.add(get_local $13)(i32.const 1))
%1 = add %0, 1:i32
; (i32.shl(get_local $14)(i32.const 16))
%2 = shl %1, 16:i32
; (i32.shr_s(get_local $15)(i32.const 16))
%3 = ashr %2, 16:i32
; (i32.and(get_local $19)(i32.const 65535))
%4 = and %3, 65535:i32
infer %4
; RHS inferred successfully
%5:i32 = add 4160749569:i32, %0
%6:i32 = and 65535:i32, %5
result %6
-----------------------------------------------------------
; start LHS (in $52)
%0:i32 = var
; (i32.add(get_local $13)(i32.const 1))
%1 = add %0, 1:i32
; (i32.shl(get_local $14)(i32.const 16))
%2 = shl %1, 16:i32
; (i32.shr_s(get_local $15)(i32.const 16))
%3 = ashr %2, 16:i32
; (i32.and(get_local $26)(i32.const 65535))
%4 = and %3, 65535:i32
; (i32.and(get_local $19)(i32.const 65535))
%5 = and %3, 65535:i32
; (i32.le_s(i32.const 199)(get_local $20))
%6 = sle 199:i32, %5
pc %6 1:i1
infer %4
; RHS inferred successfully
%6:i32 = and 65535:i32, %0
%7:i32 = add 1:i32, %6
result %7
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment