summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/wasm/regress/baseline-bytereg.js
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))
)`);