tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

cmp-x64-ion-codegen.js (2335B)


      1 // |jit-test| skip-if: !wasmSimdEnabled() || !hasDisassembler() || wasmCompileMode() != "ion" || !getBuildConfiguration("x64") || getBuildConfiguration("simulator"); include:codegen-x64-test.js
      2 
      3 // Test that there are no extraneous moves or fixups for various SIMD comparison
      4 // operations.  See README-codegen.md for general information about this type of
      5 // test case.
      6 
      7 // Inputs (xmm0, xmm1)
      8 
      9 codegenTestX64_v128xv128_v128(
     10    [['i8x16.gt_s', `pcmpgtb %xmm1, %xmm0`],
     11     ['i16x8.gt_s', `pcmpgtw %xmm1, %xmm0`],
     12     ['i32x4.gt_s', `pcmpgtd %xmm1, %xmm0`],
     13     ['i8x16.le_s', `
     14 pcmpgtb %xmm1, %xmm0
     15 pcmpeqw %xmm15, %xmm15
     16 pxor %xmm15, %xmm0
     17 `],
     18     ['i16x8.le_s', `
     19 pcmpgtw %xmm1, %xmm0
     20 pcmpeqw %xmm15, %xmm15
     21 pxor %xmm15, %xmm0
     22 `],
     23     ['i32x4.le_s', `
     24 pcmpgtd %xmm1, %xmm0
     25 pcmpeqw %xmm15, %xmm15
     26 pxor %xmm15, %xmm0
     27 `],
     28     ['i8x16.eq', `pcmpeqb %xmm1, %xmm0`],
     29     ['i16x8.eq', `pcmpeqw %xmm1, %xmm0`],
     30     ['i32x4.eq', `pcmpeqd %xmm1, %xmm0`],
     31     ['i8x16.ne', `
     32 pcmpeqb %xmm1, %xmm0
     33 pcmpeqw %xmm15, %xmm15
     34 pxor %xmm15, %xmm0
     35 `],
     36     ['i16x8.ne', `
     37 pcmpeqw %xmm1, %xmm0
     38 pcmpeqw %xmm15, %xmm15
     39 pxor %xmm15, %xmm0
     40 `],
     41     ['i32x4.ne', `
     42 pcmpeqd %xmm1, %xmm0
     43 pcmpeqw %xmm15, %xmm15
     44 pxor %xmm15, %xmm0
     45 `],
     46     ['f32x4.eq', `cmpps \\$0x00, %xmm1, %xmm0`],
     47     ['f32x4.ne', `cmpps \\$0x04, %xmm1, %xmm0`],
     48     ['f32x4.lt', `cmpps \\$0x01, %xmm1, %xmm0`],
     49     ['f32x4.le', `cmpps \\$0x02, %xmm1, %xmm0`],
     50     ['f64x2.eq', `cmppd \\$0x00, %xmm1, %xmm0`],
     51     ['f64x2.ne', `cmppd \\$0x04, %xmm1, %xmm0`],
     52     ['f64x2.lt', `cmppd \\$0x01, %xmm1, %xmm0`],
     53     ['f64x2.le', `cmppd \\$0x02, %xmm1, %xmm0`]] );
     54 
     55 // Inputs (xmm1, xmm0) because the operation reverses its arguments.
     56 
     57 codegenTestX64_v128xv128_v128_reversed(
     58    [['i8x16.ge_s', `
     59 pcmpgtb %xmm1, %xmm0
     60 pcmpeqw %xmm15, %xmm15
     61 pxor %xmm15, %xmm0`],
     62     ['i16x8.ge_s',
     63 `
     64 pcmpgtw %xmm1, %xmm0
     65 pcmpeqw %xmm15, %xmm15
     66 pxor %xmm15, %xmm0`],
     67     ['i32x4.ge_s', `
     68 pcmpgtd %xmm1, %xmm0
     69 pcmpeqw %xmm15, %xmm15
     70 pxor %xmm15, %xmm0`],
     71     ['i8x16.lt_s', `pcmpgtb %xmm1, %xmm0`],
     72     ['i16x8.lt_s', `pcmpgtw %xmm1, %xmm0`],
     73     ['i32x4.lt_s', `pcmpgtd %xmm1, %xmm0`],
     74     ['f32x4.gt', `cmpps \\$0x01, %xmm1, %xmm0`],
     75     ['f32x4.ge', `cmpps \\$0x02, %xmm1, %xmm0`],
     76     ['f64x2.gt', `cmppd \\$0x01, %xmm1, %xmm0`],
     77     ['f64x2.ge', `cmppd \\$0x02, %xmm1, %xmm0`]] );