tor-browser

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

memory-arm64-ion-codegen.js (1469B)


      1 // |jit-test| skip-if: !hasDisassembler() || wasmCompileMode() != "ion" || !getBuildConfiguration("arm64"); include:codegen-arm64-test.js
      2 
      3 // Test that loads/stores at friendly constant offsets yield expected code
      4 
      5 codegenTestARM64_adhoc(
      6    `(module
      7       (memory 1)
      8       (func (export "f") (result i32)
      9         (i32.load (i32.const 4000))))`,
     10    'f',
     11    'ldr  w0, \\[x21, #4000\\]');
     12 
     13 codegenTestARM64_adhoc(
     14    `(module
     15       (memory 1)
     16       (func (export "f") (result i32)
     17         (i32.load offset=1000 (i32.const 3000))))`,
     18    'f',
     19    'ldr  w0, \\[x21, #4000\\]');
     20 
     21 codegenTestARM64_adhoc(
     22    `(module
     23       (memory 1)
     24       (func (export "f") (param i32)
     25         (i32.store (i32.const 4000) (local.get 0))))`,
     26    'f',
     27    'str w0, \\[x21, #4000\\]');
     28 
     29 codegenTestARM64_adhoc(
     30    `(module
     31       (memory 1)
     32       (func (export "f") (param i32)
     33         (i32.store offset=1000 (i32.const 3000) (local.get 0))))`,
     34    'f',
     35    'str w0, \\[x21, #4000\\]');
     36 
     37 // Unfriendly offsets are first loaded into a scratch register
     38 
     39 codegenTestARM64_adhoc(
     40    `(module
     41       (memory 1)
     42       (func (export "f") (result i32)
     43         (i32.load (i32.const 4001))))`,
     44    'f',
     45    `mov     x16, #0xfa1
     46     ldr     w0, \\[x21, x16\\]`);
     47 
     48 codegenTestARM64_adhoc(
     49    `(module
     50       (memory 1)
     51       (func (export "f") (param i32)
     52         (i32.store (i32.const 4001) (local.get 0))))`,
     53    'f',
     54    `mov     x16, #0xfa1
     55     str     w0, \\[x21, x16\\]`);