Skip to content

Instantly share code, notes, and snippets.

@regehr
Created April 30, 2018 16:11
Show Gist options
  • Save regehr/f23229e6966629bd3e6fe756d9aff74e to your computer and use it in GitHub Desktop.
Save regehr/f23229e6966629bd3e6fe756d9aff74e to your computer and use it in GitHub Desktop.
; Listing valid replacements.
; Using solver: Z3 + internal cache
; Static profile 1
; Function: wasmbackend_lua_scimark.c.js.bc:luaV_execute
%0:i32 = var
%1:i6 = trunc %0
pc %1 8:i6
%2:i32 = lshr %0, 23:i32
%3:i32 = and 256:i32, %2
%4:i1 = eq 0:i32, %3
%5:i32 = and 255:i32, %2
%6:i32 = select %4, %2, %5
cand %6 %5
; Static profile 1
; Function: wasmbackend_lua_scimark.c.js.bc:luaV_execute
%0:i32 = var
%1:i6 = trunc %0
pc %1 10:i6
%2:i32 = lshr %0, 23:i32
%3:i32 = and 256:i32, %2
%4:i1 = eq 0:i32, %3
%5:i32 = and 255:i32, %2
%6:i32 = select %4, %2, %5
cand %6 %5
; Static profile 1
; Function: wasmbackend_lua_scimark.c.js.bc:luaV_execute
%0:i32 = var
%1:i6 = trunc %0
pc %1 13:i6
%2:i32 = lshr %0, 23:i32
%3:i32 = and 256:i32, %2
%4:i1 = eq 0:i32, %3
%5:i32 = and 255:i32, %2
%6:i32 = select %4, %2, %5
cand %6 %5
; Static profile 1
; Function: wasmbackend_lua_scimark.c.js.bc:luaV_execute
%0:i32 = var
%1:i6 = trunc %0
pc %1 14:i6
%2:i32 = lshr %0, 23:i32
%3:i32 = and 256:i32, %2
%4:i1 = eq 0:i32, %3
%5:i32 = and 255:i32, %2
%6:i32 = select %4, %2, %5
cand %6 %5
; Static profile 1
; Function: wasmbackend_lua_scimark.c.js.bc:luaV_execute
%0:i32 = var
%1:i6 = trunc %0
pc %1 15:i6
%2:i32 = lshr %0, 23:i32
%3:i32 = and 256:i32, %2
%4:i1 = eq 0:i32, %3
%5:i32 = and 255:i32, %2
%6:i32 = select %4, %2, %5
cand %6 %5
; Static profile 1
; Function: wasmbackend_lua_scimark.c.js.bc:luaV_execute
%0:i32 = var
%1:i6 = trunc %0
pc %1 16:i6
%2:i32 = lshr %0, 23:i32
%3:i32 = and 256:i32, %2
%4:i1 = eq 0:i32, %3
%5:i32 = and 255:i32, %2
%6:i32 = select %4, %2, %5
cand %6 %5
; Static profile 1
; Function: wasmbackend_lua_scimark.c.js.bc:luaV_execute
%0:i32 = var
%1:i6 = trunc %0
pc %1 17:i6
%2:i32 = lshr %0, 23:i32
%3:i32 = and 256:i32, %2
%4:i1 = eq 0:i32, %3
%5:i32 = and 255:i32, %2
%6:i32 = select %4, %2, %5
cand %6 %5
; Static profile 1
; Function: wasmbackend_lua_scimark.c.js.bc:luaV_execute
%0:i32 = var
%1:i6 = trunc %0
pc %1 18:i6
%2:i32 = lshr %0, 23:i32
%3:i32 = and 256:i32, %2
%4:i1 = eq 0:i32, %3
%5:i32 = and 255:i32, %2
%6:i32 = select %4, %2, %5
cand %6 %5
; Static profile 1
; Function: wasmbackend_lua_scimark.c.js.bc:luaV_execute
%0:i32 = var
%1:i6 = trunc %0
pc %1 24:i6
%2:i32 = lshr %0, 23:i32
%3:i32 = and 256:i32, %2
%4:i1 = eq 0:i32, %3
%5:i32 = and 255:i32, %2
%6:i32 = select %4, %2, %5
cand %6 %5
; Static profile 1
; Function: wasmbackend_lua_scimark.c.js.bc:luaV_execute
%0:i32 = var
%1:i6 = trunc %0
pc %1 25:i6
%2:i32 = lshr %0, 23:i32
%3:i32 = and 256:i32, %2
%4:i1 = eq 0:i32, %3
%5:i32 = and 255:i32, %2
%6:i32 = select %4, %2, %5
cand %6 %5
; Static profile 1
; Function: wasmbackend_lua_scimark.c.js.bc:luaV_execute
%0:i32 = var
%1:i6 = trunc %0
pc %1 26:i6
%2:i32 = lshr %0, 23:i32
%3:i32 = and 256:i32, %2
%4:i1 = eq 0:i32, %3
%5:i32 = and 255:i32, %2
%6:i32 = select %4, %2, %5
cand %6 %5
; Static profile 1
; Function: wasmbackend_lua_scimark.c.js.bc:luaV_concat
%0:i32 = var
%1:i32 = and 15:i32, %0
%2:i1 = eq 4:i32, %1
%3:i1 = xor 1:i1, %2
%4:i1 = eq 3:i32, %0
%5:i1 = and %3, %4
cand %5 %4
; Static profile 1
; Function: wasmbackend_lua_scimark.c.js.bc:getobjname
%0 = block 2
%1:i32 = phi %0, 67108863:i32, 262143:i32
%2:i32 = var
%3:i32 = lshr %2, 6:i32
%4:i32 = var
%5:i32 = lshr %4, 14:i32
%6:i32 = phi %0, %3, %5
%7:i32 = and %1, %6
cand %7 %6
; Static profile 22
; Function: wasmbackend_lua_scimark.c.js.bc:lexerror
%0:i32 = var
%1:i32 = var
%2:i32 = add 1:i32, %1
%3:i1 = ult %0, %2
pc %3 1:i1
%4:i1 = ult 2147483645:i32, %0
pc %4 0:i1
%5:i32 = shl %0, 1:i32
%6:i1 = eq 4294967294:i32, %5
cand %6 0:i1
; Static profile 1
; Function: wasmbackend_lua_scimark.c.js.bc:adjust_assign
%0:i32 = var
%1:i32 = var
%2:i32 = subnsw %0, %1
%3:i32 = addnsw 1:i32, %2
%4:i1 = slt 0:i32, %3
%5:i32 = select %4, %3, 0:i32
%6:i1 = slt 1:i32, %5
pc %6 1:i1
%7:i32 = addnsw 4294967295:i32, %5
cand %7 %2
; Static profile 1
; Function: wasmbackend_lua_scimark.c.js.bc:singlevaraux
%0:i32 = var (knownBits=0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx) (nonNegative)
%1:i1 = slt %0, 0:i32
cand %1 0:i1
; Static profile 2
; Function: wasmbackend_lua_scimark.c.js.bc:llex
%0 = block 2
%1:i8 = var
%2:i32 = zext %1
%3:i32 = var
%4:i32 = phi %0, %2, %3
%5:i1 = eq 0:i32, %4
pc %5 0:i1
%6:i64 = zext %4
%7:i64 = shl 1:i64, %6
%8:i64 = and 70368744177665:i64, %7
%9:i1 = eq 0:i64, %8
%10:i1 = ult 63:i32, %4
%11:i1 = or %9, %10
cand %11 %9
; Static profile 1
; Function: wasmbackend_lua_scimark.c.js.bc:llex
%0:i32 = var
%1:i1 = eq 0:i32, %0
pc %1 0:i1
%2:i64 = zext %0
%3:i64 = shl 1:i64, %2
%4:i64 = and 43980465111041:i64, %3
%5:i1 = eq 0:i64, %4
%6:i1 = ult 63:i32, %0
%7:i1 = or %5, %6
cand %7 %5
; Static profile 3
; Function: wasmbackend_lua_scimark.c.js.bc:llex
%0:i32 = var
%1:i1 = eq 0:i32, %0
pc %1 0:i1
%2:i1 = ult %0, 4:i32
pc %2 0:i1
%3:i32 = and 4294967292:i32, %0
%4:i1 = eq 0:i32, %3
cand %4 0:i1
; Static profile 1
; Function: wasmbackend_lua_scimark.c.js.bc:b_arshift
%0:i32 = var
%1:i1 = slt 4294967295:i32, %0
%2:i32 = var
%3:i1 = slt %2, 0:i32
%4:i1 = and %1, %3
pc %4 0:i1
%5:i1 = slt 0:i32, %0
pc %5 1:i1
%6:i1 = slt 31:i32, %0
%7:i32 = lshr %2, %0
%8:i32 = select %6, 0:i32, %7
cand %8 %7
; Static profile 1
; Function: wasmbackend_lua_scimark.c.js.bc:b_arshift
%0:i32 = var
%1:i1 = slt 4294967295:i32, %0
%2:i32 = var
%3:i1 = slt %2, 0:i32
%4:i1 = and %1, %3
pc %4 0:i1
%5:i1 = slt 0:i32, %0
pc %5 0:i1
%6:i1 = slt %0, 4294967265:i32
%7:i32 = subnsw 0:i32, %0
%8:i32 = shl %2, %7
%9:i32 = select %6, 0:i32, %8
cand %9 %8
; Static profile 1
; Function: wasmbackend_lua_scimark.c.js.bc:b_lshift
%0:i32 = var
%1:i1 = slt %0, 0:i32
pc %1 0:i1
%2:i1 = slt 31:i32, %0
%3:i32 = var
%4:i32 = shl %3, %0
%5:i32 = select %2, 0:i32, %4
cand %5 %4
; Static profile 1
; Function: wasmbackend_lua_scimark.c.js.bc:b_rshift
%0:i32 = var
%1:i1 = slt 0:i32, %0
pc %1 1:i1
%2:i1 = slt 31:i32, %0
%3:i32 = var
%4:i32 = lshr %3, %0
%5:i32 = select %2, 0:i32, %4
cand %5 %4
; Static profile 1
; Function: wasmbackend_lua_scimark.c.js.bc:b_rshift
%0:i32 = var
%1:i1 = slt 0:i32, %0
pc %1 0:i1
%2:i1 = slt %0, 4294967265:i32
%3:i32 = var
%4:i32 = subnsw 0:i32, %0
%5:i32 = shl %3, %4
%6:i32 = select %2, 0:i32, %5
cand %6 %5
; Static profile 1
; Function: wasmbackend_lua_scimark.c.js.bc:str_format
%0:i8 = var
%1:i64 = sext %0
%2:i64 = and 4294967295:i64, %1
%3:i64 = shl 1:i64, %2
%4:i64 = and 325494096527361:i64, %3
%5:i1 = ne 0:i64, %4
%6:i1 = ult %2, 64:i64
%7:i1 = and %5, %6
cand %7 %5
; Static profile 1
; Function: wasmbackend_lua_scimark.c.js.bc:str_find_aux
%0:i32 = var
%1:i1 = eq 0:i32, %0
pc %1 0:i1
%2:i32 = var
%3 = block 3
%4 = block 2
%5:i32 = var
%6:i32 = var
%7:i32 = add 1:i32, %6
%8:i32 = add %5, %7
%9:i32 = phi %4, %8, %6
%10:i32 = phi %3, %9, 1:i32, 1:i32
%11:i32 = sub %2, %10
%12:i32 = add 1:i32, %11
%13:i1 = ult %12, %0
pc %13 0:i1
%14:i32 = add 4294967295:i32, %0
%15:i32 = sub %12, %14
%16:i1 = eq 0:i32, %15
cand %16 0:i1
; Static profile 2
; Function: wasmbackend_lua_scimark.c.js.bc:luaL_prepbuffsize
%0:i32 = var
%1:i32 = var
%2:i32 = sub %0, %1
%3:i32 = var
%4:i1 = ult %2, %3
pc %4 1:i1
%5:i32 = shl %0, 1:i32
%6:i32 = sub %5, %1
%7:i1 = ult %6, %3
%8:i32 = add %1, %3
%9:i32 = select %7, %8, %5
%10:i32 = sub %9, %1
%11:i1 = ult %10, %3
cand %11 0:i1
; Static profile 2
; Function: wasmbackend_lua_scimark.c.js.bc:luaL_prepbuffsize
%0:i32 = var
%1:i32 = var
%2:i32 = sub %0, %1
%3:i32 = var
%4:i1 = ult %2, %3
pc %4 1:i1
%5:i32 = shl %0, 1:i32
%6:i32 = sub %5, %1
%7:i1 = ult %6, %3
%8:i32 = add %1, %3
%9:i32 = select %7, %8, %5
%10:i32 = sub %9, %1
%11:i1 = ult %10, %3
%12:i1 = ult %9, %1
%13:i1 = or %11, %12
cand %13 %12
; Static profile 2
; Function: wasmbackend_lua_scimark.c.js.bc:luaL_addvalue
%0:i32 = var
%1:i32 = var
%2:i32 = sub %0, %1
%3:i32 = var
%4:i1 = ult %2, %3
pc %4 1:i1
%5:i32 = shl %0, 1:i32
%6:i32 = sub %5, %1
%7:i1 = ult %6, %3
%8:i32 = add %3, %1
%9:i32 = select %7, %8, %5
%10:i32 = sub %9, %1
%11:i1 = ult %10, %3
cand %11 0:i1
; Static profile 2
; Function: wasmbackend_lua_scimark.c.js.bc:luaL_addvalue
%0:i32 = var
%1:i32 = var
%2:i32 = sub %0, %1
%3:i32 = var
%4:i1 = ult %2, %3
pc %4 1:i1
%5:i32 = shl %0, 1:i32
%6:i32 = sub %5, %1
%7:i1 = ult %6, %3
%8:i32 = add %3, %1
%9:i32 = select %7, %8, %5
%10:i32 = sub %9, %1
%11:i1 = ult %10, %3
%12:i1 = ult %9, %1
%13:i1 = or %11, %12
cand %13 %12
; Static profile 1
; Function: wasmbackend_lua_scimark.c.js.bc:unpack
%0 = block 2
%1:i32 = var
%2:i32 = var
%3:i32 = phi %0, %1, %2
%4:i32 = var
%5:i1 = slt %3, %4
pc %5 0:i1
%6:i32 = subnsw %3, %4
%7:i1 = slt %6, 0:i32
cand %7 0:i1
; Static profile 1
; Function: wasmbackend_lua_scimark.c.js.bc:luaL_gsub
%0:i32 = var
%1:i32 = var
%2:i32 = sub %0, %1
%3:i32 = var
%4:i32 = var
%5:i32 = sub %3, %4
%6:i1 = ult %2, %5
pc %6 1:i1
%7:i32 = shl %0, 1:i32
%8:i32 = sub %7, %1
%9:i1 = ult %8, %5
%10:i32 = add %1, %5
%11:i32 = select %9, %10, %7
%12:i32 = sub %11, %1
%13:i1 = ult %12, %5
cand %13 0:i1
; Static profile 1
; Function: wasmbackend_lua_scimark.c.js.bc:luaL_gsub
%0:i32 = var
%1:i32 = var
%2:i32 = sub %0, %1
%3:i32 = var
%4:i32 = var
%5:i32 = sub %3, %4
%6:i1 = ult %2, %5
pc %6 1:i1
%7:i32 = shl %0, 1:i32
%8:i32 = sub %7, %1
%9:i1 = ult %8, %5
%10:i32 = add %1, %5
%11:i32 = select %9, %10, %7
%12:i32 = sub %11, %1
%13:i1 = ult %12, %5
%14:i1 = ult %11, %1
%15:i1 = or %13, %14
cand %15 %14
; Static profile 1
; Function: wasmbackend_lua_scimark.c.js.bc:luaL_gsub
%0:i32 = var
%1:i32 = var
%2:i32 = var
%3:i32 = var
%4:i32 = sub %2, %3
%5:i32 = add %1, %4
%6:i32 = sub %0, %5
%7:i32 = var
%8:i1 = ult %6, %7
pc %8 1:i1
%9:i32 = shl %0, 1:i32
%10:i32 = sub %9, %5
%11:i1 = ult %10, %7
%12:i32 = add %7, %5
%13:i32 = select %11, %12, %9
%14:i32 = sub %13, %5
%15:i1 = ult %14, %7
cand %15 0:i1
; Static profile 1
; Function: wasmbackend_lua_scimark.c.js.bc:luaL_gsub
%0:i32 = var
%1:i32 = var
%2:i32 = var
%3:i32 = var
%4:i32 = sub %2, %3
%5:i32 = add %1, %4
%6:i32 = sub %0, %5
%7:i32 = var
%8:i1 = ult %6, %7
pc %8 1:i1
%9:i32 = shl %0, 1:i32
%10:i32 = sub %9, %5
%11:i1 = ult %10, %7
%12:i32 = add %7, %5
%13:i32 = select %11, %12, %9
%14:i32 = sub %13, %5
%15:i1 = ult %14, %7
%16:i1 = ult %13, %5
%17:i1 = or %15, %16
cand %17 %16
; Static profile 1
; Function: wasmbackend_lua_scimark.c.js.bc:luaL_gsub
%0 = block 2
%1:i32 = var
%2:i32 = phi %0, 1024:i32, %1
%3:i32 = var
%4:i32 = var
%5:i32 = add %3, %4
%6:i32 = phi %0, 0:i32, %5
%7:i32 = sub %2, %6
%8:i32 = var
%9:i1 = ult %7, %8
pc %9 1:i1
%10:i32 = shl %2, 1:i32
%11:i32 = sub %10, %6
%12:i1 = ult %11, %8
%13:i32 = add %8, %6
%14:i32 = select %12, %13, %10
%15:i32 = sub %14, %6
%16:i1 = ult %15, %8
cand %16 0:i1
; Static profile 1
; Function: wasmbackend_lua_scimark.c.js.bc:luaL_gsub
%0 = block 2
%1:i32 = var
%2:i32 = phi %0, 1024:i32, %1
%3:i32 = var
%4:i32 = var
%5:i32 = add %3, %4
%6:i32 = phi %0, 0:i32, %5
%7:i32 = sub %2, %6
%8:i32 = var
%9:i1 = ult %7, %8
pc %9 1:i1
%10:i32 = shl %2, 1:i32
%11:i32 = sub %10, %6
%12:i1 = ult %11, %8
%13:i32 = add %8, %6
%14:i32 = select %12, %13, %10
%15:i32 = sub %14, %6
%16:i1 = ult %15, %8
%17:i1 = ult %14, %6
%18:i1 = or %16, %17
cand %18 %17
; Static profile 1
; Function: malloc
%0:i32 = var
%1:i1 = ult %0, 245:i32
pc %1 1:i1
%2:i32 = var
%3:i1 = ult %0, 11:i32
%4:i32 = add 11:i32, %0
%5:i32 = and 4294967288:i32, %4
%6:i32 = select %3, 16:i32, %5
%7:i32 = lshrexact %6, 3:i32
%8:i32 = lshr %2, %7
%9:i32 = and 3:i32, %8
%10:i1 = eq 0:i32, %9
pc %10 1:i1
%11:i32 = var
%12:i1 = ult %11, %6
pc %12 1:i1
%13:i1 = eq 0:i32, %8
pc %13 0:i1
%14:i32 = shl 2:i32, %7
%15:i32 = sub 0:i32, %14
%16:i32 = or %15, %14
cand %16 %15
; Static profile 1
; Function: malloc
%0:i32 = var
%1:i1 = ult %0, 245:i32
pc %1 1:i1
%2:i32 = var
%3:i1 = ult %0, 11:i32
%4:i32 = add 11:i32, %0
%5:i32 = and 4294967288:i32, %4
%6:i32 = select %3, 16:i32, %5
%7:i32 = lshrexact %6, 3:i32
%8:i32 = lshr %2, %7
%9:i32 = and 3:i32, %8
%10:i1 = eq 0:i32, %9
pc %10 1:i1
%11:i32 = var
%12:i1 = ult %11, %6
pc %12 1:i1
%13:i1 = eq 0:i32, %8
pc %13 0:i1
%14:i32 = shl 2:i32, %7
%15:i32 = sub 0:i32, %14
%16:i32 = or %15, %14
%17:i32 = shl %8, %7
%18:i32 = and %16, %17
cand %18 %17
; Static profile 1
; Function: malloc
%0:i32 = var
%1:i1 = ult %0, 245:i32
pc %1 1:i1
%2:i32 = var
%3:i1 = ult %0, 11:i32
%4:i32 = add 11:i32, %0
%5:i32 = and 4294967288:i32, %4
%6:i32 Unable to query solver: Value too large for defined data type
= select %3, 16:i32, %5
%7:i32 = lshrexact %6, 3:i32
%8:i32 = lshr %2, %7
%9:i32 = and 3:i32, %8
%10:i1 = eq 0:i32, %9
pc %10 1:i1
%11:i32 = var
%12:i1 = ult %11, %6
pc %12 1:i1
%13:i1 = eq 0:i32, %8
pc %13 0:i1
%14:i32 = shl 2:i32, %7
%15:i32 = sub 0:i32, %14
%16:i32 = or %15, %14
%17:i32 = shl %8, %7
%18:i32 = and %16, %17
%19:i32 = sub 0:i32, %18
%20:i32 = and %19, %18
%21:i32 = add 4294967295:i32, %20
%22:i32 = lshr %21, 12:i32
%23:i32 = and 16:i32, %22
%24:i32 = lshr %21, %23
%25:i32 = lshr %24, 5:i32
%26:i32 = and 8:i32, %25
%27:i32 = lshr %24, %26
%28:i32 = lshr %27, 2:i32
%29:i32 = and 4:i32, %28
%30:i32 = lshr %27, %29
%31:i32 = lshr %30, 1:i32
%32:i32 = and 2:i32, %31
%33:i32 = lshr %30, %32
%34:i32 = lshr %33, 1:i32
%35:i32 = and 1:i32, %34
cand %35 %34
; Static profile 1
; Function: malloc
%0:i32 = var
%1:i1 = ult %0, 245:i32
pc %1 1:i1
%2:i32 = var
%3:i1 = ult %0, 11:i32
%4:i32 = add 11:i32, %0
%5:i32 = and 4294967288:i32, %4
%6:i32 = select %3, 16:i32, %5
%7:i32 = lshrexact %6, 3:i32
%8:i32 = lshr %2, %7
%9:i32 = and 3:i32, %8
%10:i1 = eq 0:i32, %9
pc %10 1:i1
%11:i32 = var
%12:i1 = ult %11, %6
pc %12 1:i1
%13:i1 = eq 0:i32, %8
pc %13 0:i1
%14:i32 = shl 2:i32, %7
%15:i32 = sub 0:i32, %14
%16:i32 = or %15, %14
%17:i32 = shl %8, %7
%18:i32 = and %16, %17
%19:i32 = sub 0:i32, %18
%20:i32 = and %19, %18
%21:i32 = add 4294967295:i32, %20
%22:i32 = lshr %21, 12:i32
%23:i32 = and 16:i32, %22
%24:i32 = lshr %21, %23
%25:i32 = lshr %24, 5:i32
%26:i32 = and 8:i32, %25
%27:i32 = lshr %24, %26
%28:i32 = lshr %27, 2:i32
%29:i32 = and 4:i32, %28
%30:i32 = lshr %27, %29
%31:i32 = lshr %30, 1:i32
%32:i32 = and 2:i32, %31
%33:i32 = lshr %30, %32
%34:i32 = lshr %33, 1:i32
%35:i32 = and 1:i32, %34
%36:i32 = lshr %33, %35
cand %36 1:i32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment