1;;! target = "x86_64" 2 3(module 4 (type $ft (func (param v128) (result v128))) 5 (func $foo (export "foo") (param i32) (param v128) (result v128) 6 (call_indirect (type $ft) (local.get 1) (local.get 0)) 7 ) 8 (table (;0;) 23 23 funcref) 9) 10 11;; function u0:0(i64 vmctx, i64, i32, i8x16) -> i8x16 tail { 12;; gv0 = vmctx 13;; gv1 = load.i64 notrap aligned readonly gv0+8 14;; gv2 = load.i64 notrap aligned gv1+24 15;; gv3 = vmctx 16;; gv4 = load.i64 notrap aligned readonly can_move gv3+48 17;; sig0 = (i64 vmctx, i64, i8x16) -> i8x16 tail 18;; sig1 = (i64 vmctx, i32, i64) -> i64 tail 19;; fn0 = colocated u805306368:9 sig1 20;; stack_limit = gv2 21;; 22;; block0(v0: i64, v1: i64, v2: i32, v3: i8x16): 23;; @0033 v5 = iconst.i32 23 24;; @0033 v6 = icmp uge v2, v5 ; v5 = 23 25;; @0033 v7 = uextend.i64 v2 26;; @0033 v8 = load.i64 notrap aligned readonly can_move v0+48 27;; v29 = iconst.i64 3 28;; @0033 v9 = ishl v7, v29 ; v29 = 3 29;; @0033 v10 = iadd v8, v9 30;; @0033 v11 = iconst.i64 0 31;; @0033 v12 = select_spectre_guard v6, v11, v10 ; v11 = 0 32;; @0033 v13 = load.i64 user5 aligned table v12 33;; v28 = iconst.i64 -2 34;; @0033 v14 = band v13, v28 ; v28 = -2 35;; @0033 brif v13, block3(v14), block2 36;; 37;; block2 cold: 38;; @0033 v16 = iconst.i32 0 39;; @0033 v18 = uextend.i64 v2 40;; @0033 v19 = call fn0(v0, v16, v18) ; v16 = 0 41;; @0033 jump block3(v19) 42;; 43;; block3(v15: i64): 44;; @0033 v21 = load.i64 notrap aligned readonly can_move v0+40 45;; @0033 v22 = load.i32 notrap aligned readonly can_move v21 46;; @0033 v23 = load.i32 user6 aligned readonly v15+16 47;; @0033 v24 = icmp eq v23, v22 48;; @0033 trapz v24, user7 49;; @0033 v25 = load.i64 notrap aligned readonly v15+8 50;; @0033 v26 = load.i64 notrap aligned readonly v15+24 51;; @0033 v27 = call_indirect sig0, v25(v26, v0, v3) 52;; @0036 jump block1 53;; 54;; block1: 55;; @0036 return v27 56;; } 57