14c4e3488SNick Fitzgerald;;! target = "x86_64" 24c4e3488SNick Fitzgerald 34c4e3488SNick Fitzgerald(module 44c4e3488SNick Fitzgerald ;; These two types should be deduped to the same `ir::Signature` in the 54c4e3488SNick Fitzgerald ;; translated CLIF. 64c4e3488SNick Fitzgerald (type (func (result i32))) 74c4e3488SNick Fitzgerald (type (func (result i32))) 84c4e3488SNick Fitzgerald 94c4e3488SNick Fitzgerald (import "" "" (table 0 funcref)) 104c4e3488SNick Fitzgerald 114c4e3488SNick Fitzgerald (func (param i32) (result i32 i32) 124c4e3488SNick Fitzgerald local.get 0 134c4e3488SNick Fitzgerald call_indirect (type 0) 144c4e3488SNick Fitzgerald local.get 0 154c4e3488SNick Fitzgerald call_indirect (type 1) 164c4e3488SNick Fitzgerald ) 174c4e3488SNick Fitzgerald) 184c4e3488SNick Fitzgerald 194c4e3488SNick Fitzgerald;; function u0:0(i64 vmctx, i64, i32) -> i32, i32 tail { 204c4e3488SNick Fitzgerald;; gv0 = vmctx 214c4e3488SNick Fitzgerald;; gv1 = load.i64 notrap aligned readonly gv0+8 22*7e0331c2SChris Fallin;; gv2 = load.i64 notrap aligned gv1+24 234c4e3488SNick Fitzgerald;; gv3 = vmctx 244c4e3488SNick Fitzgerald;; gv4 = load.i64 notrap aligned readonly can_move gv3+48 254c4e3488SNick Fitzgerald;; gv5 = load.i64 notrap aligned gv4 264c4e3488SNick Fitzgerald;; gv6 = load.i64 notrap aligned gv4+8 274c4e3488SNick Fitzgerald;; sig0 = (i64 vmctx, i64) -> i32 tail 284c4e3488SNick Fitzgerald;; sig1 = (i64 vmctx, i32, i64) -> i64 tail 2917fbd3c6SChris Fallin;; fn0 = colocated u805306368:9 sig1 304c4e3488SNick Fitzgerald;; stack_limit = gv2 314c4e3488SNick Fitzgerald;; 324c4e3488SNick Fitzgerald;; block0(v0: i64, v1: i64, v2: i32): 334c4e3488SNick Fitzgerald;; @002d v64 = load.i64 notrap aligned readonly can_move v0+48 344c4e3488SNick Fitzgerald;; @002d v5 = load.i64 notrap aligned v64+8 354c4e3488SNick Fitzgerald;; @002d v6 = ireduce.i32 v5 364c4e3488SNick Fitzgerald;; @002d v7 = icmp uge v2, v6 374c4e3488SNick Fitzgerald;; @002d v8 = uextend.i64 v2 384c4e3488SNick Fitzgerald;; @002d v62 = load.i64 notrap aligned readonly can_move v0+48 394c4e3488SNick Fitzgerald;; @002d v9 = load.i64 notrap aligned v62 404c4e3488SNick Fitzgerald;; v61 = iconst.i64 3 414c4e3488SNick Fitzgerald;; @002d v10 = ishl v8, v61 ; v61 = 3 424c4e3488SNick Fitzgerald;; @002d v11 = iadd v9, v10 434c4e3488SNick Fitzgerald;; @002d v12 = iconst.i64 0 444c4e3488SNick Fitzgerald;; @002d v13 = select_spectre_guard v7, v12, v11 ; v12 = 0 454c4e3488SNick Fitzgerald;; @002d v14 = load.i64 user5 aligned table v13 464c4e3488SNick Fitzgerald;; v60 = iconst.i64 -2 474c4e3488SNick Fitzgerald;; @002d v15 = band v14, v60 ; v60 = -2 484c4e3488SNick Fitzgerald;; @002d brif v14, block3(v15), block2 494c4e3488SNick Fitzgerald;; 504c4e3488SNick Fitzgerald;; block2 cold: 514c4e3488SNick Fitzgerald;; @002d v17 = iconst.i32 0 524c4e3488SNick Fitzgerald;; @002d v19 = uextend.i64 v2 534c4e3488SNick Fitzgerald;; @002d v20 = call fn0(v0, v17, v19) ; v17 = 0 544c4e3488SNick Fitzgerald;; @002d jump block3(v20) 554c4e3488SNick Fitzgerald;; 564c4e3488SNick Fitzgerald;; block3(v16: i64): 574c4e3488SNick Fitzgerald;; @002d v22 = load.i64 notrap aligned readonly can_move v0+40 584c4e3488SNick Fitzgerald;; @002d v23 = load.i32 notrap aligned readonly can_move v22 594c4e3488SNick Fitzgerald;; @002d v24 = load.i32 user6 aligned readonly v16+16 604c4e3488SNick Fitzgerald;; @002d v25 = icmp eq v24, v23 614c4e3488SNick Fitzgerald;; @002d trapz v25, user7 624c4e3488SNick Fitzgerald;; @002d v26 = load.i64 notrap aligned readonly v16+8 634c4e3488SNick Fitzgerald;; @002d v27 = load.i64 notrap aligned readonly v16+24 644c4e3488SNick Fitzgerald;; @002d v28 = call_indirect sig0, v26(v27, v0) 654c4e3488SNick Fitzgerald;; @0032 v58 = load.i64 notrap aligned readonly can_move v0+48 664c4e3488SNick Fitzgerald;; @0032 v30 = load.i64 notrap aligned v58+8 674c4e3488SNick Fitzgerald;; @0032 v31 = ireduce.i32 v30 684c4e3488SNick Fitzgerald;; @0032 v32 = icmp.i32 uge v2, v31 694c4e3488SNick Fitzgerald;; @0032 v33 = uextend.i64 v2 704c4e3488SNick Fitzgerald;; @0032 v56 = load.i64 notrap aligned readonly can_move v0+48 714c4e3488SNick Fitzgerald;; @0032 v34 = load.i64 notrap aligned v56 724c4e3488SNick Fitzgerald;; v55 = iconst.i64 3 734c4e3488SNick Fitzgerald;; @0032 v35 = ishl v33, v55 ; v55 = 3 744c4e3488SNick Fitzgerald;; @0032 v36 = iadd v34, v35 754c4e3488SNick Fitzgerald;; @0032 v37 = iconst.i64 0 764c4e3488SNick Fitzgerald;; @0032 v38 = select_spectre_guard v32, v37, v36 ; v37 = 0 774c4e3488SNick Fitzgerald;; @0032 v39 = load.i64 user5 aligned table v38 784c4e3488SNick Fitzgerald;; v54 = iconst.i64 -2 794c4e3488SNick Fitzgerald;; @0032 v40 = band v39, v54 ; v54 = -2 804c4e3488SNick Fitzgerald;; @0032 brif v39, block5(v40), block4 814c4e3488SNick Fitzgerald;; 824c4e3488SNick Fitzgerald;; block4 cold: 834c4e3488SNick Fitzgerald;; @0032 v42 = iconst.i32 0 844c4e3488SNick Fitzgerald;; @0032 v44 = uextend.i64 v2 854c4e3488SNick Fitzgerald;; @0032 v45 = call fn0(v0, v42, v44) ; v42 = 0 864c4e3488SNick Fitzgerald;; @0032 jump block5(v45) 874c4e3488SNick Fitzgerald;; 884c4e3488SNick Fitzgerald;; block5(v41: i64): 894c4e3488SNick Fitzgerald;; @0032 v47 = load.i64 notrap aligned readonly can_move v0+40 904c4e3488SNick Fitzgerald;; @0032 v48 = load.i32 notrap aligned readonly can_move v47 914c4e3488SNick Fitzgerald;; @0032 v49 = load.i32 user6 aligned readonly v41+16 924c4e3488SNick Fitzgerald;; @0032 v50 = icmp eq v49, v48 934c4e3488SNick Fitzgerald;; @0032 trapz v50, user7 944c4e3488SNick Fitzgerald;; @0032 v51 = load.i64 notrap aligned readonly v41+8 954c4e3488SNick Fitzgerald;; @0032 v52 = load.i64 notrap aligned readonly v41+24 964c4e3488SNick Fitzgerald;; @0032 v53 = call_indirect sig0, v51(v52, v0) 974c4e3488SNick Fitzgerald;; @0035 jump block1 984c4e3488SNick Fitzgerald;; 994c4e3488SNick Fitzgerald;; block1: 1004c4e3488SNick Fitzgerald;; @0035 return v28, v53 1014c4e3488SNick Fitzgerald;; } 102