summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/wasm/simd/cvt-x64-ion-codegen.js
blob: 1e2d613c1abf88340a168177f94ab1e9edc7d69f (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
// |jit-test| skip-if: !wasmSimdEnabled() || !hasDisassembler() || wasmCompileMode() != "ion" || !getBuildConfiguration().x64 || getBuildConfiguration().simulator || isAvxPresent(); include:codegen-x64-test.js

// Test that there are no extraneous moves for various SIMD conversion
// operations. See README-codegen.md for general information about this type of
// test case.

// Note, these tests test the beginning of the output but not the end.

codegenTestX64_v128_v128(
    [['i32x4.trunc_sat_f32x4_s',
     // The movaps is dest -> scratch and needs to be here.  The test is
     // asserting that there is not an additional (redundant) move here.
`
44 0f 28 f8               movaps %xmm0, %xmm15
45 0f c2 ff 00            cmpps \\$0x00, %xmm15, %xmm15
66 41 0f db c7            pand %xmm15, %xmm0`],
     ['i32x4.trunc_sat_f32x4_u', `
45 0f 57 ff               xorps %xmm15, %xmm15
41 0f 5f c7               maxps %xmm15, %xmm0`],
     ['f32x4.convert_i32x4_u', `
66 45 0f ef ff            pxor %xmm15, %xmm15
66 44 0f 3a 0e f8 55      pblendw \\$0x55, %xmm0, %xmm15
66 41 0f fa c7            psubd %xmm15, %xmm0
45 0f 5b ff               cvtdq2ps %xmm15, %xmm15`]],
    {no_suffix:true});