...

Text file src/github.com/tetratelabs/wazero/internal/integration_test/spectest/v2/testdata/endianness.wast

Documentation: github.com/tetratelabs/wazero/internal/integration_test/spectest/v2/testdata

     1(module
     2  (memory 1)
     3
     4  ;; Stores an i16 value in little-endian-format
     5  (func $i16_store_little (param $address i32) (param $value i32)
     6    (i32.store8 (local.get $address) (local.get $value))
     7    (i32.store8 (i32.add (local.get $address) (i32.const 1)) (i32.shr_u (local.get $value) (i32.const 8)))
     8  )
     9
    10  ;; Stores an i32 value in little-endian format
    11  (func $i32_store_little (param $address i32) (param $value i32)
    12    (call $i16_store_little (local.get $address) (local.get $value))
    13    (call $i16_store_little (i32.add (local.get $address) (i32.const 2)) (i32.shr_u (local.get $value) (i32.const 16)))
    14  )
    15
    16  ;; Stores an i64 value in little-endian format
    17  (func $i64_store_little (param $address i32) (param $value i64)
    18    (call $i32_store_little (local.get $address) (i32.wrap_i64 (local.get $value)))
    19    (call $i32_store_little (i32.add (local.get $address) (i32.const 4)) (i32.wrap_i64 (i64.shr_u (local.get $value) (i64.const 32))))
    20  )
    21
    22  ;; Loads an i16 value in little-endian format
    23  (func $i16_load_little (param $address i32) (result i32)
    24    (i32.or
    25      (i32.load8_u (local.get $address))
    26      (i32.shl (i32.load8_u (i32.add (local.get $address) (i32.const 1))) (i32.const 8))
    27    )
    28  )
    29
    30  ;; Loads an i32 value in little-endian format
    31  (func $i32_load_little (param $address i32) (result i32)
    32    (i32.or
    33      (call $i16_load_little (local.get $address))
    34      (i32.shl (call $i16_load_little (i32.add (local.get $address) (i32.const 2))) (i32.const 16))
    35    )
    36  )
    37
    38  ;; Loads an i64 value in little-endian format
    39  (func $i64_load_little (param $address i32) (result i64)
    40    (i64.or
    41      (i64.extend_i32_u (call $i32_load_little (local.get $address)))
    42      (i64.shl (i64.extend_i32_u (call $i32_load_little (i32.add (local.get $address) (i32.const 4)))) (i64.const 32))
    43    )
    44  )
    45
    46  (func (export "i32_load16_s") (param $value i32) (result i32)
    47    (call $i16_store_little (i32.const 0) (local.get $value))
    48    (i32.load16_s (i32.const 0))
    49  )
    50
    51  (func (export "i32_load16_u") (param $value i32) (result i32)
    52    (call $i16_store_little (i32.const 0) (local.get $value))
    53    (i32.load16_u (i32.const 0))
    54  )
    55
    56  (func (export "i32_load") (param $value i32) (result i32)
    57    (call $i32_store_little (i32.const 0) (local.get $value))
    58    (i32.load (i32.const 0))
    59  )
    60
    61  (func (export "i64_load16_s") (param $value i64) (result i64)
    62    (call $i16_store_little (i32.const 0) (i32.wrap_i64 (local.get $value)))
    63    (i64.load16_s (i32.const 0))
    64  )
    65
    66  (func (export "i64_load16_u") (param $value i64) (result i64)
    67    (call $i16_store_little (i32.const 0) (i32.wrap_i64 (local.get $value)))
    68    (i64.load16_u (i32.const 0))
    69  )
    70
    71  (func (export "i64_load32_s") (param $value i64) (result i64)
    72    (call $i32_store_little (i32.const 0) (i32.wrap_i64 (local.get $value)))
    73    (i64.load32_s (i32.const 0))
    74  )
    75
    76  (func (export "i64_load32_u") (param $value i64) (result i64)
    77    (call $i32_store_little (i32.const 0) (i32.wrap_i64 (local.get $value)))
    78    (i64.load32_u (i32.const 0))
    79  )
    80
    81  (func (export "i64_load") (param $value i64) (result i64)
    82    (call $i64_store_little (i32.const 0) (local.get $value))
    83    (i64.load (i32.const 0))
    84  )
    85
    86  (func (export "f32_load") (param $value f32) (result f32)
    87    (call $i32_store_little (i32.const 0) (i32.reinterpret_f32 (local.get $value)))
    88    (f32.load (i32.const 0))
    89  )
    90
    91  (func (export "f64_load") (param $value f64) (result f64)
    92    (call $i64_store_little (i32.const 0) (i64.reinterpret_f64 (local.get $value)))
    93    (f64.load (i32.const 0))
    94  )
    95
    96
    97  (func (export "i32_store16") (param $value i32) (result i32)
    98    (i32.store16 (i32.const 0) (local.get $value))
    99    (call $i16_load_little (i32.const 0))
   100  )
   101
   102  (func (export "i32_store") (param $value i32) (result i32)
   103    (i32.store (i32.const 0) (local.get $value))
   104    (call $i32_load_little (i32.const 0))
   105  )
   106
   107  (func (export "i64_store16") (param $value i64) (result i64)
   108    (i64.store16 (i32.const 0) (local.get $value))
   109    (i64.extend_i32_u (call $i16_load_little (i32.const 0)))
   110  )
   111
   112  (func (export "i64_store32") (param $value i64) (result i64)
   113    (i64.store32 (i32.const 0) (local.get $value))
   114    (i64.extend_i32_u (call $i32_load_little (i32.const 0)))
   115  )
   116
   117  (func (export "i64_store") (param $value i64) (result i64)
   118    (i64.store (i32.const 0) (local.get $value))
   119    (call $i64_load_little (i32.const 0))
   120  )
   121
   122  (func (export "f32_store") (param $value f32) (result f32)
   123    (f32.store (i32.const 0) (local.get $value))
   124    (f32.reinterpret_i32 (call $i32_load_little (i32.const 0)))
   125  )
   126
   127  (func (export "f64_store") (param $value f64) (result f64)
   128    (f64.store (i32.const 0) (local.get $value))
   129    (f64.reinterpret_i64 (call $i64_load_little (i32.const 0)))
   130  )
   131)
   132
   133(assert_return (invoke "i32_load16_s" (i32.const -1)) (i32.const -1))
   134(assert_return (invoke "i32_load16_s" (i32.const -4242)) (i32.const -4242))
   135(assert_return (invoke "i32_load16_s" (i32.const 42)) (i32.const 42))
   136(assert_return (invoke "i32_load16_s" (i32.const 0x3210)) (i32.const 0x3210))
   137
   138(assert_return (invoke "i32_load16_u" (i32.const -1)) (i32.const 0xFFFF))
   139(assert_return (invoke "i32_load16_u" (i32.const -4242)) (i32.const 61294))
   140(assert_return (invoke "i32_load16_u" (i32.const 42)) (i32.const 42))
   141(assert_return (invoke "i32_load16_u" (i32.const 0xCAFE)) (i32.const 0xCAFE))
   142
   143(assert_return (invoke "i32_load" (i32.const -1)) (i32.const -1))
   144(assert_return (invoke "i32_load" (i32.const -42424242)) (i32.const -42424242))
   145(assert_return (invoke "i32_load" (i32.const 42424242)) (i32.const 42424242))
   146(assert_return (invoke "i32_load" (i32.const 0xABAD1DEA)) (i32.const 0xABAD1DEA))
   147
   148(assert_return (invoke "i64_load16_s" (i64.const -1)) (i64.const -1))
   149(assert_return (invoke "i64_load16_s" (i64.const -4242)) (i64.const -4242))
   150(assert_return (invoke "i64_load16_s" (i64.const 42)) (i64.const 42))
   151(assert_return (invoke "i64_load16_s" (i64.const 0x3210)) (i64.const 0x3210))
   152
   153(assert_return (invoke "i64_load16_u" (i64.const -1)) (i64.const 0xFFFF))
   154(assert_return (invoke "i64_load16_u" (i64.const -4242)) (i64.const 61294))
   155(assert_return (invoke "i64_load16_u" (i64.const 42)) (i64.const 42))
   156(assert_return (invoke "i64_load16_u" (i64.const 0xCAFE)) (i64.const 0xCAFE))
   157
   158(assert_return (invoke "i64_load32_s" (i64.const -1)) (i64.const -1))
   159(assert_return (invoke "i64_load32_s" (i64.const -42424242)) (i64.const -42424242))
   160(assert_return (invoke "i64_load32_s" (i64.const 42424242)) (i64.const 42424242))
   161(assert_return (invoke "i64_load32_s" (i64.const 0x12345678)) (i64.const 0x12345678))
   162
   163(assert_return (invoke "i64_load32_u" (i64.const -1)) (i64.const 0xFFFFFFFF))
   164(assert_return (invoke "i64_load32_u" (i64.const -42424242)) (i64.const 4252543054))
   165(assert_return (invoke "i64_load32_u" (i64.const 42424242)) (i64.const 42424242))
   166(assert_return (invoke "i64_load32_u" (i64.const 0xABAD1DEA)) (i64.const 0xABAD1DEA))
   167
   168(assert_return (invoke "i64_load" (i64.const -1)) (i64.const -1))
   169(assert_return (invoke "i64_load" (i64.const -42424242)) (i64.const -42424242))
   170(assert_return (invoke "i64_load" (i64.const 0xABAD1DEA)) (i64.const 0xABAD1DEA))
   171(assert_return (invoke "i64_load" (i64.const 0xABADCAFEDEAD1DEA)) (i64.const 0xABADCAFEDEAD1DEA))
   172
   173(assert_return (invoke "f32_load" (f32.const -1)) (f32.const -1))
   174(assert_return (invoke "f32_load" (f32.const 1234e-5)) (f32.const 1234e-5))
   175(assert_return (invoke "f32_load" (f32.const 4242.4242)) (f32.const 4242.4242))
   176(assert_return (invoke "f32_load" (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127))
   177
   178(assert_return (invoke "f64_load" (f64.const -1)) (f64.const -1))
   179(assert_return (invoke "f64_load" (f64.const 123456789e-5)) (f64.const 123456789e-5))
   180(assert_return (invoke "f64_load" (f64.const 424242.424242)) (f64.const 424242.424242))
   181(assert_return (invoke "f64_load" (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023))
   182
   183
   184(assert_return (invoke "i32_store16" (i32.const -1)) (i32.const 0xFFFF))
   185(assert_return (invoke "i32_store16" (i32.const -4242)) (i32.const 61294))
   186(assert_return (invoke "i32_store16" (i32.const 42)) (i32.const 42))
   187(assert_return (invoke "i32_store16" (i32.const 0xCAFE)) (i32.const 0xCAFE))
   188
   189(assert_return (invoke "i32_store" (i32.const -1)) (i32.const -1))
   190(assert_return (invoke "i32_store" (i32.const -4242)) (i32.const -4242))
   191(assert_return (invoke "i32_store" (i32.const 42424242)) (i32.const 42424242))
   192(assert_return (invoke "i32_store" (i32.const 0xDEADCAFE)) (i32.const 0xDEADCAFE))
   193
   194(assert_return (invoke "i64_store16" (i64.const -1)) (i64.const 0xFFFF))
   195(assert_return (invoke "i64_store16" (i64.const -4242)) (i64.const 61294))
   196(assert_return (invoke "i64_store16" (i64.const 42)) (i64.const 42))
   197(assert_return (invoke "i64_store16" (i64.const 0xCAFE)) (i64.const 0xCAFE))
   198
   199(assert_return (invoke "i64_store32" (i64.const -1)) (i64.const 0xFFFFFFFF))
   200(assert_return (invoke "i64_store32" (i64.const -4242)) (i64.const 4294963054))
   201(assert_return (invoke "i64_store32" (i64.const 42424242)) (i64.const 42424242))
   202(assert_return (invoke "i64_store32" (i64.const 0xDEADCAFE)) (i64.const 0xDEADCAFE))
   203
   204(assert_return (invoke "i64_store" (i64.const -1)) (i64.const -1))
   205(assert_return (invoke "i64_store" (i64.const -42424242)) (i64.const -42424242))
   206(assert_return (invoke "i64_store" (i64.const 0xABAD1DEA)) (i64.const 0xABAD1DEA))
   207(assert_return (invoke "i64_store" (i64.const 0xABADCAFEDEAD1DEA)) (i64.const 0xABADCAFEDEAD1DEA))
   208
   209(assert_return (invoke "f32_store" (f32.const -1)) (f32.const -1))
   210(assert_return (invoke "f32_store" (f32.const 1234e-5)) (f32.const 1234e-5))
   211(assert_return (invoke "f32_store" (f32.const 4242.4242)) (f32.const 4242.4242))
   212(assert_return (invoke "f32_store" (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127))
   213
   214(assert_return (invoke "f64_store" (f64.const -1)) (f64.const -1))
   215(assert_return (invoke "f64_store" (f64.const 123456789e-5)) (f64.const 123456789e-5))
   216(assert_return (invoke "f64_store" (f64.const 424242.424242)) (f64.const 424242.424242))
   217(assert_return (invoke "f64_store" (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023))

View as plain text