blob: 8bdcc32618baf3ad201a8bcd6db13e91ad087a79 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
// Bug 1322450 is about the baseline compiler not properly handling a byte store
// from a wider datum on 32-bit x86 because it does not move the value to be
// stored to a valid byte register if it is in a 32-bit register that does not
// have a byte part (EDI/ESI/EBP).
//
// This test is white-box because it knows about the register allocation order:
// the two values pushed onto the stack occupy EAX and ECX, and the i64.store8
// will use EDX for the index and (EDI or ESI or EBP) for the low register of
// the value to be stored. The i64.store8 instruction will then assert in the
// assembler.
//
// If the baseline compiler starts allocating registers in a different order
// then this test will be ineffective.
wasmEvalText(`(module
(memory 1)
(func $run (param i64) (param i32) (param i32)
local.get 1
local.get 2
i32.add
local.get 1
local.get 2
i32.add
i32.const 0
local.get 0
i64.store8
drop
drop
)
(export "run" (func $run))
)`);
|