Skip to content

Commit a05e3e1

Browse files
committed
what if...
1 parent 4186f49 commit a05e3e1

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+4758
-4736
lines changed

src/module.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1536,6 +1536,13 @@ export class Module {
15361536
passes.push("remove-unused-brs");
15371537
passes.push("remove-unused-names");
15381538
passes.push("inlining-optimizing");
1539+
1540+
if (optimizeLevel >= 3 && shrinkLevel <= 1) {
1541+
passes.push("licm");
1542+
}
1543+
passes.push("simplify-locals-notee-nostructure");
1544+
passes.push("vacuum");
1545+
15391546
if (optimizeLevel >= 2 || shrinkLevel >= 1) {
15401547
passes.push("pick-load-signs");
15411548
passes.push("simplify-globals-optimizing");
@@ -1546,11 +1553,6 @@ export class Module {
15461553
passes.push("precompute");
15471554
}
15481555
passes.push("vacuum");
1549-
if (optimizeLevel >= 3 && shrinkLevel <= 1) {
1550-
passes.push("licm");
1551-
}
1552-
passes.push("simplify-locals-nostructure");
1553-
passes.push("vacuum");
15541556

15551557
passes.push("reorder-locals");
15561558
passes.push("remove-unused-brs");

tests/compiler/binary.optimized.wat

Lines changed: 44 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@
132132
br $while-continue|0
133133
end
134134
end
135+
local.get $4
135136
local.get $1
136137
i32.const 8388608
137138
i32.ge_u
@@ -150,31 +151,27 @@
150151
i32.const 8
151152
i32.shl
152153
i32.clz
153-
local.tee $3
154+
local.tee $1
154155
i32.shl
155-
local.set $1
156+
local.tee $3
157+
i32.const 8388608
158+
i32.sub
156159
local.get $2
160+
local.get $1
161+
i32.sub
162+
local.tee $1
163+
i32.const 23
164+
i32.shl
165+
i32.or
157166
local.get $3
167+
i32.const 1
168+
local.get $1
158169
i32.sub
159-
local.tee $2
170+
i32.shr_u
171+
local.get $1
160172
i32.const 0
161173
i32.gt_s
162-
if (result i32)
163-
local.get $1
164-
i32.const 8388608
165-
i32.sub
166-
local.get $2
167-
i32.const 23
168-
i32.shl
169-
i32.or
170-
else
171-
local.get $1
172-
i32.const 1
173-
local.get $2
174-
i32.sub
175-
i32.shr_u
176-
end
177-
local.get $4
174+
select
178175
i32.or
179176
f32.reinterpret_i32
180177
return
@@ -195,7 +192,12 @@
195192
i64.shr_u
196193
i64.const 2047
197194
i64.and
198-
local.tee $2
195+
local.set $2
196+
local.get $1
197+
i64.const 63
198+
i64.shr_u
199+
local.set $3
200+
local.get $2
199201
i64.const 2047
200202
i64.eq
201203
if
@@ -204,19 +206,15 @@
204206
f64.div
205207
return
206208
end
207-
local.get $1
208-
i64.const 63
209-
i64.shr_u
210-
local.set $4
211209
block $folding-inner0
212210
local.get $1
213211
i64.const 1
214212
i64.shl
215-
local.tee $3
213+
local.tee $4
216214
i64.const 9214364837600034816
217215
i64.le_u
218216
if
219-
local.get $3
217+
local.get $4
220218
i64.const 9214364837600034816
221219
i64.eq
222220
br_if $folding-inner0
@@ -276,6 +274,9 @@
276274
br $while-continue|0
277275
end
278276
end
277+
local.get $3
278+
i64.const 63
279+
i64.shl
279280
local.get $1
280281
i64.const 4503599627370496
281282
i64.ge_u
@@ -294,35 +295,29 @@
294295
i64.const 11
295296
i64.shl
296297
i64.clz
297-
local.tee $3
298+
local.tee $1
298299
i64.shl
299-
local.set $1
300+
local.tee $3
301+
i64.const 4503599627370496
302+
i64.sub
300303
local.get $2
304+
local.get $1
305+
i64.sub
306+
local.tee $1
307+
i64.const 52
308+
i64.shl
309+
i64.or
301310
local.get $3
311+
i64.const 0
312+
local.get $1
302313
i64.sub
303-
local.tee $2
314+
i64.const 1
315+
i64.add
316+
i64.shr_u
317+
local.get $1
304318
i64.const 0
305319
i64.gt_s
306-
if (result i64)
307-
local.get $1
308-
i64.const 4503599627370496
309-
i64.sub
310-
local.get $2
311-
i64.const 52
312-
i64.shl
313-
i64.or
314-
else
315-
local.get $1
316-
i64.const 0
317-
local.get $2
318-
i64.sub
319-
i64.const 1
320-
i64.add
321-
i64.shr_u
322-
end
323-
local.get $4
324-
i64.const 63
325-
i64.shl
320+
select
326321
i64.or
327322
f64.reinterpret_i64
328323
return

tests/compiler/comma.optimized.wat

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -80,17 +80,6 @@
8080
global.set $comma/b
8181
i32.const 2
8282
global.set $comma/a
83-
global.get $comma/b
84-
i32.const 2
85-
i32.ne
86-
if
87-
i32.const 0
88-
i32.const 1040
89-
i32.const 19
90-
i32.const 1
91-
call $~lib/builtins/abort
92-
unreachable
93-
end
9483
loop $for-loop|0
9584
local.get $0
9685
global.get $comma/a

tests/compiler/do.optimized.wat

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -238,19 +238,19 @@
238238
i32.const 2
239239
i32.shl
240240
i32.add
241-
local.tee $4
241+
local.tee $1
242242
i32.load offset=4
243243
i32.const 1
244244
local.get $2
245245
i32.shl
246246
i32.const -1
247247
i32.xor
248248
i32.and
249-
local.set $1
250-
local.get $4
249+
local.set $2
251250
local.get $1
251+
local.get $2
252252
i32.store offset=4
253-
local.get $1
253+
local.get $2
254254
i32.eqz
255255
if
256256
local.get $0
@@ -713,10 +713,10 @@
713713
i32.const 16
714714
i32.lt_u
715715
if
716+
local.get $2
716717
local.get $0
717718
i32.const 4
718719
i32.shl
719-
local.get $2
720720
i32.add
721721
i32.const 2
722722
i32.shl
@@ -1158,11 +1158,13 @@
11581158
i32.const 1
11591159
i32.add
11601160
local.tee $0
1161+
local.set $1
1162+
local.get $0
11611163
i32.const 10
11621164
i32.ne
11631165
br_if $do-continue|02
11641166
end
1165-
local.get $0
1167+
local.get $1
11661168
i32.const 10
11671169
i32.ne
11681170
if

0 commit comments

Comments
 (0)