|
3 | 3 | ;; RUN: foreach %s %t wasm-opt --string-lowering -all -S -o - | filecheck %s |
4 | 4 |
|
5 | 5 | (module |
6 | | - ;; CHECK: (type $0 (func)) |
7 | | - |
8 | 6 | ;; CHECK: (type $array16 (array (mut i16))) |
9 | 7 | (type $array16 (array (mut i16))) |
10 | 8 |
|
| 9 | + ;; CHECK: (type $1 (func (param externref externref) (result i32))) |
| 10 | + |
11 | 11 | ;; CHECK: (rec |
12 | | - ;; CHECK-NEXT: (type $2 (func (param (ref $array16)))) |
| 12 | + ;; CHECK-NEXT: (type $2 (func (param externref) (result externref))) |
| 13 | + |
| 14 | + ;; CHECK: (type $3 (func (param externref) (result i32))) |
| 15 | + |
| 16 | + ;; CHECK: (type $4 (func (param externref externref) (result i32))) |
| 17 | + |
| 18 | + ;; CHECK: (type $5 (func (param externref (ref $array16)) (result i32))) |
| 19 | + |
| 20 | + ;; CHECK: (type $6 (func (result externref))) |
| 21 | + |
| 22 | + ;; CHECK: (type $7 (func (param (ref $array16)))) |
13 | 23 |
|
14 | | - ;; CHECK: (type $3 (func (param externref externref externref externref))) |
| 24 | + ;; CHECK: (type $8 (func (param externref externref externref externref))) |
15 | 25 |
|
16 | | - ;; CHECK: (type $4 (func (param (ref null $array16) i32 i32) (result (ref extern)))) |
| 26 | + ;; CHECK: (type $9 (func)) |
17 | 27 |
|
18 | | - ;; CHECK: (type $5 (func (param i32) (result (ref extern)))) |
| 28 | + ;; CHECK: (type $10 (func (param (ref null $array16) i32 i32) (result (ref extern)))) |
19 | 29 |
|
20 | | - ;; CHECK: (import "colliding" "name" (func $fromCodePoint (type $0))) |
| 30 | + ;; CHECK: (type $11 (func (param i32) (result (ref extern)))) |
| 31 | + |
| 32 | + ;; CHECK: (type $12 (func (param externref (ref null $array16) i32) (result i32))) |
| 33 | + |
| 34 | + ;; CHECK: (type $13 (func (param externref) (result i32))) |
| 35 | + |
| 36 | + ;; CHECK: (type $14 (func (param externref i32) (result i32))) |
| 37 | + |
| 38 | + ;; CHECK: (type $15 (func (param externref i32 i32) (result (ref extern)))) |
| 39 | + |
| 40 | + ;; CHECK: (import "colliding" "name" (func $fromCodePoint (type $9))) |
21 | 41 | (import "colliding" "name" (func $fromCodePoint)) |
22 | 42 |
|
23 | | - ;; CHECK: (import "wasm:js-string" "fromCharCodeArray" (func $fromCharCodeArray (type $4) (param (ref null $array16) i32 i32) (result (ref extern)))) |
| 43 | + ;; CHECK: (import "wasm:js-string" "fromCharCodeArray" (func $fromCharCodeArray (type $10) (param (ref null $array16) i32 i32) (result (ref extern)))) |
| 44 | + |
| 45 | + ;; CHECK: (import "wasm:js-string" "fromCodePoint" (func $fromCodePoint_11 (type $11) (param i32) (result (ref extern)))) |
| 46 | + |
| 47 | + ;; CHECK: (import "wasm:js-string" "intoCharCodeArray" (func $intoCharCodeArray (type $12) (param externref (ref null $array16) i32) (result i32))) |
24 | 48 |
|
25 | | - ;; CHECK: (import "wasm:js-string" "fromCodePoint" (func $fromCodePoint_5 (type $5) (param i32) (result (ref extern)))) |
| 49 | + ;; CHECK: (import "wasm:js-string" "equals" (func $equals (type $1) (param externref externref) (result i32))) |
26 | 50 |
|
27 | | - ;; CHECK: (func $string.as (type $3) (param $a externref) (param $b externref) (param $c externref) (param $d externref) |
| 51 | + ;; CHECK: (import "wasm:js-string" "compare" (func $compare (type $1) (param externref externref) (result i32))) |
| 52 | + |
| 53 | + ;; CHECK: (import "wasm:js-string" "length" (func $length (type $13) (param externref) (result i32))) |
| 54 | + |
| 55 | + ;; CHECK: (import "wasm:js-string" "codePointAt" (func $codePointAt (type $14) (param externref i32) (result i32))) |
| 56 | + |
| 57 | + ;; CHECK: (import "wasm:js-string" "substring" (func $substring (type $15) (param externref i32 i32) (result (ref extern)))) |
| 58 | + |
| 59 | + ;; CHECK: (func $string.as (type $8) (param $a externref) (param $b externref) (param $c externref) (param $d externref) |
28 | 60 | ;; CHECK-NEXT: (local.set $b |
29 | 61 | ;; CHECK-NEXT: (local.get $a) |
30 | 62 | ;; CHECK-NEXT: ) |
|
59 | 91 | ) |
60 | 92 | ) |
61 | 93 |
|
62 | | - ;; CHECK: (func $string.new.gc (type $2) (param $array16 (ref $array16)) |
| 94 | + ;; CHECK: (func $string.new.gc (type $7) (param $array16 (ref $array16)) |
63 | 95 | ;; CHECK-NEXT: (drop |
64 | 96 | ;; CHECK-NEXT: (call $fromCharCodeArray |
65 | 97 | ;; CHECK-NEXT: (local.get $array16) |
|
78 | 110 | ) |
79 | 111 | ) |
80 | 112 |
|
81 | | - ;; CHECK: (func $string.from_code_point (type $0) |
82 | | - ;; CHECK-NEXT: (drop |
83 | | - ;; CHECK-NEXT: (call $fromCodePoint_5 |
84 | | - ;; CHECK-NEXT: (i32.const 1) |
85 | | - ;; CHECK-NEXT: ) |
| 113 | + ;; CHECK: (func $string.from_code_point (type $6) (result externref) |
| 114 | + ;; CHECK-NEXT: (call $fromCodePoint_11 |
| 115 | + ;; CHECK-NEXT: (i32.const 1) |
86 | 116 | ;; CHECK-NEXT: ) |
87 | 117 | ;; CHECK-NEXT: ) |
88 | | - (func $string.from_code_point |
89 | | - (drop |
90 | | - (string.from_code_point |
91 | | - (i32.const 1) |
92 | | - ) |
| 118 | + (func $string.from_code_point (result stringref) |
| 119 | + (string.from_code_point |
| 120 | + (i32.const 1) |
| 121 | + ) |
| 122 | + ) |
| 123 | + |
| 124 | + ;; CHECK: (func $string.encode (type $5) (param $ref externref) (param $array16 (ref $array16)) (result i32) |
| 125 | + ;; CHECK-NEXT: (call $intoCharCodeArray |
| 126 | + ;; CHECK-NEXT: (local.get $ref) |
| 127 | + ;; CHECK-NEXT: (local.get $array16) |
| 128 | + ;; CHECK-NEXT: (i32.const 10) |
| 129 | + ;; CHECK-NEXT: ) |
| 130 | + ;; CHECK-NEXT: ) |
| 131 | + (func $string.encode (param $ref stringref) (param $array16 (ref $array16)) (result i32) |
| 132 | + (string.encode_wtf16_array |
| 133 | + (local.get $ref) |
| 134 | + (local.get $array16) |
| 135 | + (i32.const 10) |
| 136 | + ) |
| 137 | + ) |
| 138 | + |
| 139 | + ;; CHECK: (func $string.eq (type $4) (param $a externref) (param $b externref) (result i32) |
| 140 | + ;; CHECK-NEXT: (call $equals |
| 141 | + ;; CHECK-NEXT: (local.get $a) |
| 142 | + ;; CHECK-NEXT: (local.get $b) |
| 143 | + ;; CHECK-NEXT: ) |
| 144 | + ;; CHECK-NEXT: ) |
| 145 | + (func $string.eq (param $a stringref) (param $b stringref) (result i32) |
| 146 | + (string.eq |
| 147 | + (local.get $a) |
| 148 | + (local.get $b) |
| 149 | + ) |
| 150 | + ) |
| 151 | + |
| 152 | + ;; CHECK: (func $string.compare (type $4) (param $a externref) (param $b externref) (result i32) |
| 153 | + ;; CHECK-NEXT: (call $compare |
| 154 | + ;; CHECK-NEXT: (local.get $a) |
| 155 | + ;; CHECK-NEXT: (local.get $b) |
| 156 | + ;; CHECK-NEXT: ) |
| 157 | + ;; CHECK-NEXT: ) |
| 158 | + (func $string.compare (param $a stringref) (param $b stringref) (result i32) |
| 159 | + (string.compare |
| 160 | + (local.get $a) |
| 161 | + (local.get $b) |
| 162 | + ) |
| 163 | + ) |
| 164 | + |
| 165 | + ;; CHECK: (func $string.length (type $3) (param $ref externref) (result i32) |
| 166 | + ;; CHECK-NEXT: (call $length |
| 167 | + ;; CHECK-NEXT: (local.get $ref) |
| 168 | + ;; CHECK-NEXT: ) |
| 169 | + ;; CHECK-NEXT: ) |
| 170 | + (func $string.length (param $ref stringview_wtf16) (result i32) |
| 171 | + (stringview_wtf16.length |
| 172 | + (local.get $ref) |
| 173 | + ) |
| 174 | + ) |
| 175 | + |
| 176 | + ;; CHECK: (func $string.get_codeunit (type $3) (param $ref externref) (result i32) |
| 177 | + ;; CHECK-NEXT: (call $codePointAt |
| 178 | + ;; CHECK-NEXT: (local.get $ref) |
| 179 | + ;; CHECK-NEXT: (i32.const 2) |
| 180 | + ;; CHECK-NEXT: ) |
| 181 | + ;; CHECK-NEXT: ) |
| 182 | + (func $string.get_codeunit (param $ref stringview_wtf16) (result i32) |
| 183 | + (stringview_wtf16.get_codeunit |
| 184 | + (local.get $ref) |
| 185 | + (i32.const 2) |
| 186 | + ) |
| 187 | + ) |
| 188 | + |
| 189 | + ;; CHECK: (func $string.slice (type $2) (param $ref externref) (result externref) |
| 190 | + ;; CHECK-NEXT: (call $substring |
| 191 | + ;; CHECK-NEXT: (local.get $ref) |
| 192 | + ;; CHECK-NEXT: (i32.const 2) |
| 193 | + ;; CHECK-NEXT: (i32.const 3) |
| 194 | + ;; CHECK-NEXT: ) |
| 195 | + ;; CHECK-NEXT: ) |
| 196 | + (func $string.slice (param $ref stringview_wtf16) (result stringref) |
| 197 | + (stringview_wtf16.slice |
| 198 | + (local.get $ref) |
| 199 | + (i32.const 2) |
| 200 | + (i32.const 3) |
93 | 201 | ) |
94 | 202 | ) |
95 | 203 | ) |
0 commit comments