|
| 1 | +;;! target = "riscv64" |
| 2 | +;;! test = 'optimize' |
| 3 | +;;! filter = 'component_trampoline_0_Wasm' |
| 4 | + |
| 5 | +(component |
| 6 | + (type $a (resource (rep i32))) |
| 7 | + (core func $f (canon resource.drop $a)) |
| 8 | + |
| 9 | + (core module $m (import "" "" (func (param i32)))) |
| 10 | + (core instance (instantiate $m (with "" (instance (export "" (func $f)))))) |
| 11 | +) |
| 12 | + |
| 13 | +;; function u0:0(i64 vmctx, i64, i32) tail { |
| 14 | +;; sig0 = (i64 sext, i32 sext, i32 sext) -> i64 sext system_v |
| 15 | +;; sig1 = (i64 sext vmctx) system_v |
| 16 | +;; |
| 17 | +;; block0(v0: i64, v1: i64, v2: i32): |
| 18 | +;; v3 = load.i32 notrap aligned little v0 |
| 19 | +;; v17 = iconst.i32 0x706d_6f63 |
| 20 | +;; v4 = icmp eq v3, v17 ; v17 = 0x706d_6f63 |
| 21 | +;; trapz v4, user1 |
| 22 | +;; v5 = load.i64 notrap aligned v0+16 |
| 23 | +;; v6 = get_frame_pointer.i64 |
| 24 | +;; v7 = load.i64 notrap aligned v6 |
| 25 | +;; store notrap aligned v7, v5+24 |
| 26 | +;; v8 = get_return_address.i64 |
| 27 | +;; store notrap aligned v8, v5+32 |
| 28 | +;; v10 = load.i64 notrap aligned readonly v0+8 |
| 29 | +;; v11 = load.i64 notrap aligned readonly v10+16 |
| 30 | +;; v9 = iconst.i32 0 |
| 31 | +;; v12 = call_indirect sig0, v11(v0, v9, v2) ; v9 = 0 |
| 32 | +;; v13 = iconst.i64 -1 |
| 33 | +;; v14 = icmp ne v12, v13 ; v13 = -1 |
| 34 | +;; brif v14, block2, block1 |
| 35 | +;; |
| 36 | +;; block1 cold: |
| 37 | +;; v15 = load.i64 notrap aligned readonly v1+16 |
| 38 | +;; v16 = load.i64 notrap aligned readonly v15+312 |
| 39 | +;; call_indirect sig1, v16(v1) |
| 40 | +;; trap user1 |
| 41 | +;; |
| 42 | +;; block2: |
| 43 | +;; brif.i64 v12, block3, block4 |
| 44 | +;; |
| 45 | +;; block3: |
| 46 | +;; jump block4 |
| 47 | +;; |
| 48 | +;; block4: |
| 49 | +;; return |
| 50 | +;; } |
0 commit comments