wa-lang.org/wazero@v1.0.2/internal/integration_test/spectest/v2/testdata/simd_load_splat.wast (about)

     1  ;; Tests for the load_splat instructions
     2  
     3  (module
     4    (memory 1)
     5    (data (i32.const 0) "\00\01\02\03\04\05\06\07\08\09\0A\0B\0C\0D\0E\0F")
     6    (data (i32.const 65520) "\10\11\12\13\14\15\16\17\18\19\1A\1B\1C\1D\1E\1F")
     7  
     8    (func (export "v128.load8_splat") (param $address i32) (result v128) (v128.load8_splat (local.get $address)))
     9    (func (export "v128.load16_splat") (param $address i32) (result v128) (v128.load16_splat (local.get $address)))
    10    (func (export "v128.load32_splat") (param $address i32) (result v128) (v128.load32_splat (local.get $address)))
    11    (func (export "v128.load64_splat") (param $address i32) (result v128) (v128.load64_splat (local.get $address)))
    12  
    13    ;; Load data with different offset/align arguments
    14    (func (export "v8x16.offset0") (param $address i32) (result v128) (v128.load8_splat offset=0 (local.get $address)))
    15    (func (export "v8x16.align1") (param $address i32) (result v128) (v128.load8_splat align=1 (local.get $address)))
    16    (func (export "v8x16.offset1_align1") (param $address i32) (result v128) (v128.load8_splat offset=1 align=1 (local.get $address)))
    17    (func (export "v8x16.offset2_align1") (param $address i32) (result v128) (v128.load8_splat offset=2 align=1 (local.get $address)))
    18    (func (export "v8x16.offset15_align1") (param $address i32) (result v128) (v128.load8_splat offset=15 align=1 (local.get $address)))
    19  
    20    (func (export "v16x8.offset0") (param $address i32) (result v128) (v128.load16_splat offset=0 (local.get $address)))
    21    (func (export "v16x8.align1") (param $address i32) (result v128) (v128.load16_splat align=1 (local.get $address)))
    22    (func (export "v16x8.offset1_align1") (param $address i32) (result v128) (v128.load16_splat offset=1 align=1 (local.get $address)))
    23    (func (export "v16x8.offset2_align1") (param $address i32) (result v128) (v128.load16_splat offset=2 align=1 (local.get $address)))
    24    (func (export "v16x8.offset15_align2") (param $address i32) (result v128) (v128.load16_splat offset=15 align=2 (local.get $address)))
    25  
    26    (func (export "v32x4.offset0") (param $address i32) (result v128) (v128.load32_splat offset=0 (local.get $address)))
    27    (func (export "v32x4.align1") (param $address i32) (result v128) (v128.load32_splat align=1 (local.get $address)))
    28    (func (export "v32x4.offset1_align1") (param $address i32) (result v128) (v128.load32_splat offset=1 align=1 (local.get $address)))
    29    (func (export "v32x4.offset2_align2") (param $address i32) (result v128) (v128.load32_splat offset=2 align=2 (local.get $address)))
    30    (func (export "v32x4.offset15_align4") (param $address i32) (result v128) (v128.load32_splat offset=15 align=4 (local.get $address)))
    31  
    32    (func (export "v64x2.offset0") (param $address i32) (result v128) (v128.load64_splat offset=0 (local.get $address)))
    33    (func (export "v64x2.align1") (param $address i32) (result v128) (v128.load64_splat align=1 (local.get $address)))
    34    (func (export "v64x2.offset1_align2") (param $address i32) (result v128) (v128.load64_splat offset=1 align=2 (local.get $address)))
    35    (func (export "v64x2.offset2_align4") (param $address i32) (result v128) (v128.load64_splat offset=2 align=4 (local.get $address)))
    36    (func (export "v64x2.offset15_align8") (param $address i32) (result v128) (v128.load64_splat offset=15 align=8 (local.get $address)))
    37  
    38    (func (export "v8x16.offset65536") (param $address i32) (result v128) (v128.load8_splat offset=65536 (local.get $address)))
    39    (func (export "v16x8.offset65535") (param $address i32) (result v128) (v128.load16_splat offset=65535 (local.get $address)))
    40    (func (export "v32x4.offset65533") (param $address i32) (result v128) (v128.load32_splat offset=65533 (local.get $address)))
    41    (func (export "v64x2.offset65529") (param $address i32) (result v128) (v128.load64_splat offset=65529 (local.get $address)))
    42  )
    43  (assert_return (invoke "v128.load8_splat" (i32.const 0)) (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
    44  (assert_return (invoke "v128.load8_splat" (i32.const 1)) (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1))
    45  (assert_return (invoke "v128.load8_splat" (i32.const 2)) (v128.const i8x16 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2))
    46  (assert_return (invoke "v128.load8_splat" (i32.const 3)) (v128.const i8x16 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3))
    47  (assert_return (invoke "v128.load8_splat" (i32.const 65535)) (v128.const i8x16 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31))
    48  (assert_return (invoke "v128.load16_splat" (i32.const 4)) (v128.const i16x8 0x0504 0x0504 0x0504 0x0504 0x0504 0x0504 0x0504 0x0504))
    49  (assert_return (invoke "v128.load16_splat" (i32.const 5)) (v128.const i16x8 0x0605 0x0605 0x0605 0x0605 0x0605 0x0605 0x0605 0x0605))
    50  (assert_return (invoke "v128.load16_splat" (i32.const 6)) (v128.const i16x8 0x0706 0x0706 0x0706 0x0706 0x0706 0x0706 0x0706 0x0706))
    51  (assert_return (invoke "v128.load16_splat" (i32.const 7)) (v128.const i16x8 0x0807 0x0807 0x0807 0x0807 0x0807 0x0807 0x0807 0x0807))
    52  (assert_return (invoke "v128.load16_splat" (i32.const 65534)) (v128.const i16x8 0x1F1E 0x1F1E 0x1F1E 0x1F1E 0x1F1E 0x1F1E 0x1F1E 0x1F1E))
    53  (assert_return (invoke "v128.load32_splat" (i32.const 8)) (v128.const i32x4 0x0B0A0908 0x0B0A0908 0x0B0A0908 0x0B0A0908))
    54  (assert_return (invoke "v128.load32_splat" (i32.const 9)) (v128.const i32x4 0x0C0B0A09 0x0C0B0A09 0x0C0B0A09 0x0C0B0A09))
    55  (assert_return (invoke "v128.load32_splat" (i32.const 10)) (v128.const i32x4 0x0D0C0B0A 0x0D0C0B0A 0x0D0C0B0A 0x0D0C0B0A))
    56  (assert_return (invoke "v128.load32_splat" (i32.const 11)) (v128.const i32x4 0x0E0D0C0B 0x0E0D0C0B 0x0E0D0C0B 0x0E0D0C0B))
    57  (assert_return (invoke "v128.load32_splat" (i32.const 65532)) (v128.const i32x4 0x1F1E1D1C 0x1F1E1D1C 0x1F1E1D1C 0x1F1E1D1C))
    58  (assert_return (invoke "v128.load64_splat" (i32.const 12)) (v128.const i64x2 0x000000000F0E0D0C 0x000000000F0E0D0C))
    59  (assert_return (invoke "v128.load64_splat" (i32.const 13)) (v128.const i64x2 0x00000000000F0E0D 0x00000000000F0E0D))
    60  (assert_return (invoke "v128.load64_splat" (i32.const 14)) (v128.const i64x2 0x0000000000000F0E 0x0000000000000F0E))
    61  (assert_return (invoke "v128.load64_splat" (i32.const 15)) (v128.const i64x2 0x000000000000000F 0x000000000000000F))
    62  (assert_return (invoke "v128.load64_splat" (i32.const 65528)) (v128.const i64x2 0x1F1E1D1C1B1A1918 0x1F1E1D1C1B1A1918))
    63  
    64  ;; v8x16
    65  (assert_return (invoke "v8x16.offset0" (i32.const 0)) (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
    66  (assert_return (invoke "v8x16.align1" (i32.const 0)) (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
    67  (assert_return (invoke "v8x16.offset1_align1" (i32.const 0)) (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1))
    68  (assert_return (invoke "v8x16.offset2_align1" (i32.const 0)) (v128.const i8x16 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2))
    69  (assert_return (invoke "v8x16.offset15_align1" (i32.const 0)) (v128.const i8x16 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15))
    70  (assert_return (invoke "v8x16.offset0" (i32.const 1)) (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1))
    71  (assert_return (invoke "v8x16.align1" (i32.const 1)) (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1))
    72  (assert_return (invoke "v8x16.offset1_align1" (i32.const 1)) (v128.const i8x16 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2))
    73  (assert_return (invoke "v8x16.offset2_align1" (i32.const 1)) (v128.const i8x16 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3))
    74  (assert_return (invoke "v8x16.offset15_align1" (i32.const 1)) (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
    75  (assert_return (invoke "v8x16.offset0" (i32.const 65535)) (v128.const i8x16 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31))
    76  (assert_return (invoke "v8x16.align1" (i32.const 65535)) (v128.const i8x16 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31))
    77  ;; v16x8
    78  (assert_return (invoke "v16x8.offset0" (i32.const 0)) (v128.const i16x8 0x0100 0x0100 0x0100 0x0100 0x0100 0x0100 0x0100 0x0100))
    79  (assert_return (invoke "v16x8.align1" (i32.const 0)) (v128.const i16x8 0x0100 0x0100 0x0100 0x0100 0x0100 0x0100 0x0100 0x0100))
    80  (assert_return (invoke "v16x8.offset1_align1" (i32.const 0)) (v128.const i16x8 0x0201 0x0201 0x0201 0x0201 0x0201 0x0201 0x0201 0x0201))
    81  (assert_return (invoke "v16x8.offset2_align1" (i32.const 0)) (v128.const i16x8 0x0302 0x0302 0x0302 0x0302 0x0302 0x0302 0x0302 0x0302))
    82  (assert_return (invoke "v16x8.offset15_align2" (i32.const 0)) (v128.const i16x8 0x000F 0x000F 0x000F 0x000F 0x000F 0x000F 0x000F 0x000F))
    83  (assert_return (invoke "v16x8.offset0" (i32.const 1)) (v128.const i16x8 0x0201 0x0201 0x0201 0x0201 0x0201 0x0201 0x0201 0x0201))
    84  (assert_return (invoke "v16x8.align1" (i32.const 1)) (v128.const i16x8 0x0201 0x0201 0x0201 0x0201 0x0201 0x0201 0x0201 0x0201))
    85  (assert_return (invoke "v16x8.offset1_align1" (i32.const 1)) (v128.const i16x8 0x0302 0x0302 0x0302 0x0302 0x0302 0x0302 0x0302 0x0302))
    86  (assert_return (invoke "v16x8.offset2_align1" (i32.const 1)) (v128.const i16x8 0x0403 0x0403 0x0403 0x0403 0x0403 0x0403 0x0403 0x0403))
    87  (assert_return (invoke "v16x8.offset15_align2" (i32.const 1)) (v128.const i16x8 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000))
    88  (assert_return (invoke "v16x8.offset0" (i32.const 65534)) (v128.const i16x8 0x1F1E 0x1F1E 0x1F1E 0x1F1E 0x1F1E 0x1F1E 0x1F1E 0x1F1E))
    89  (assert_return (invoke "v16x8.align1" (i32.const 65534)) (v128.const i16x8 0x1F1E 0x1F1E 0x1F1E 0x1F1E 0x1F1E 0x1F1E 0x1F1E 0x1F1E))
    90  ;; v32x4
    91  (assert_return (invoke "v32x4.offset0" (i32.const 0)) (v128.const i32x4 0x03020100 0x03020100 0x03020100 0x03020100))
    92  (assert_return (invoke "v32x4.align1" (i32.const 0)) (v128.const i32x4 0x03020100 0x03020100 0x03020100 0x03020100))
    93  (assert_return (invoke "v32x4.offset1_align1" (i32.const 0)) (v128.const i32x4 0x04030201 0x04030201 0x04030201 0x04030201))
    94  (assert_return (invoke "v32x4.offset2_align2" (i32.const 0)) (v128.const i32x4 0x05040302 0x05040302 0x05040302 0x05040302))
    95  (assert_return (invoke "v32x4.offset15_align4" (i32.const 0)) (v128.const i32x4 0x0000000F 0x0000000F 0x0000000F 0x0000000F))
    96  (assert_return (invoke "v32x4.offset0" (i32.const 1)) (v128.const i32x4 0x04030201 0x04030201 0x04030201 0x04030201))
    97  (assert_return (invoke "v32x4.align1" (i32.const 1)) (v128.const i32x4 0x04030201 0x04030201 0x04030201 0x04030201))
    98  (assert_return (invoke "v32x4.offset1_align1" (i32.const 1)) (v128.const i32x4 0x05040302 0x05040302 0x05040302 0x05040302))
    99  (assert_return (invoke "v32x4.offset2_align2" (i32.const 1)) (v128.const i32x4 0x06050403 0x06050403 0x06050403 0x06050403))
   100  (assert_return (invoke "v32x4.offset15_align4" (i32.const 1)) (v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000))
   101  (assert_return (invoke "v32x4.offset0" (i32.const 65532)) (v128.const i32x4 0x1F1E1D1C 0x1F1E1D1C 0x1F1E1D1C 0x1F1E1D1C))
   102  (assert_return (invoke "v32x4.align1" (i32.const 65532)) (v128.const i32x4 0x1F1E1D1C 0x1F1E1D1C 0x1F1E1D1C 0x1F1E1D1C))
   103  ;; v64x2
   104  (assert_return (invoke "v64x2.offset0" (i32.const 0)) (v128.const i64x2 0x0706050403020100 0x0706050403020100))
   105  (assert_return (invoke "v64x2.align1" (i32.const 0)) (v128.const i64x2 0x0706050403020100 0x0706050403020100))
   106  (assert_return (invoke "v64x2.offset1_align2" (i32.const 0)) (v128.const i64x2 0x0807060504030201 0x0807060504030201))
   107  (assert_return (invoke "v64x2.offset2_align4" (i32.const 0)) (v128.const i64x2 0x0908070605040302 0x0908070605040302))
   108  (assert_return (invoke "v64x2.offset15_align8" (i32.const 0)) (v128.const i64x2 0x000000000000000F 0x000000000000000F))
   109  (assert_return (invoke "v64x2.offset0" (i32.const 1)) (v128.const i64x2 0x0807060504030201 0x0807060504030201))
   110  (assert_return (invoke "v64x2.align1" (i32.const 1)) (v128.const i64x2 0x0807060504030201 0x0807060504030201))
   111  (assert_return (invoke "v64x2.offset1_align2" (i32.const 1)) (v128.const i64x2 0x0908070605040302 0x0908070605040302))
   112  (assert_return (invoke "v64x2.offset2_align4" (i32.const 1)) (v128.const i64x2 0x0A09080706050403 0x0A09080706050403))
   113  (assert_return (invoke "v64x2.offset15_align8" (i32.const 1)) (v128.const i64x2 0x0000000000000000 0x0000000000000000))
   114  (assert_return (invoke "v64x2.offset0" (i32.const 65528)) (v128.const i64x2 0x1F1E1D1C1B1A1918 0x1F1E1D1C1B1A1918))
   115  (assert_return (invoke "v64x2.align1" (i32.const 65528)) (v128.const i64x2 0x1F1E1D1C1B1A1918 0x1F1E1D1C1B1A1918))
   116  
   117  
   118  ;; Out of bounds memory access
   119  (assert_trap (invoke "v128.load8_splat" (i32.const -1)) "out of bounds memory access")
   120  (assert_trap (invoke "v128.load16_splat" (i32.const -1)) "out of bounds memory access")
   121  (assert_trap (invoke "v128.load32_splat" (i32.const -1)) "out of bounds memory access")
   122  (assert_trap (invoke "v128.load64_splat" (i32.const -1)) "out of bounds memory access")
   123  (assert_trap (invoke "v128.load8_splat" (i32.const 65536)) "out of bounds memory access")
   124  (assert_trap (invoke "v128.load16_splat" (i32.const 65535)) "out of bounds memory access")
   125  (assert_trap (invoke "v128.load32_splat" (i32.const 65533)) "out of bounds memory access")
   126  (assert_trap (invoke "v128.load64_splat" (i32.const 65529)) "out of bounds memory access")
   127  
   128  (assert_trap (invoke "v8x16.offset1_align1" (i32.const 65535)) "out of bounds memory access")
   129  (assert_trap (invoke "v8x16.offset2_align1" (i32.const 65535)) "out of bounds memory access")
   130  (assert_trap (invoke "v8x16.offset15_align1" (i32.const 65535)) "out of bounds memory access")
   131  (assert_trap (invoke "v16x8.offset1_align1" (i32.const 65534)) "out of bounds memory access")
   132  (assert_trap (invoke "v16x8.offset2_align1" (i32.const 65534)) "out of bounds memory access")
   133  (assert_trap (invoke "v16x8.offset15_align2" (i32.const 65534)) "out of bounds memory access")
   134  (assert_trap (invoke "v32x4.offset1_align1" (i32.const 65532)) "out of bounds memory access")
   135  (assert_trap (invoke "v32x4.offset2_align2" (i32.const 65532)) "out of bounds memory access")
   136  (assert_trap (invoke "v32x4.offset15_align4" (i32.const 65532)) "out of bounds memory access")
   137  (assert_trap (invoke "v64x2.offset1_align2" (i32.const 65528)) "out of bounds memory access")
   138  (assert_trap (invoke "v64x2.offset2_align4" (i32.const 65528)) "out of bounds memory access")
   139  (assert_trap (invoke "v64x2.offset15_align8" (i32.const 65528)) "out of bounds memory access")
   140  
   141  (assert_trap (invoke "v8x16.offset1_align1" (i32.const -1)) "out of bounds memory access")
   142  (assert_trap (invoke "v16x8.offset1_align1" (i32.const -1)) "out of bounds memory access")
   143  (assert_trap (invoke "v32x4.offset1_align1" (i32.const -1)) "out of bounds memory access")
   144  (assert_trap (invoke "v64x2.offset1_align2" (i32.const -1)) "out of bounds memory access")
   145  
   146  (assert_trap (invoke "v8x16.offset65536" (i32.const 0)) "out of bounds memory access")
   147  (assert_trap (invoke "v16x8.offset65535" (i32.const 0)) "out of bounds memory access")
   148  (assert_trap (invoke "v32x4.offset65533" (i32.const 0)) "out of bounds memory access")
   149  (assert_trap (invoke "v64x2.offset65529" (i32.const 0)) "out of bounds memory access")
   150  (assert_trap (invoke "v8x16.offset65536" (i32.const 1)) "out of bounds memory access")
   151  (assert_trap (invoke "v16x8.offset65535" (i32.const 1)) "out of bounds memory access")
   152  (assert_trap (invoke "v32x4.offset65533" (i32.const 1)) "out of bounds memory access")
   153  (assert_trap (invoke "v64x2.offset65529" (i32.const 1)) "out of bounds memory access")
   154  
   155  
   156  ;; Combination
   157  
   158  (module (memory 1)
   159    (data (i32.const 0) "\00\01\02\03\04\05\06\07\08\09\0A")
   160  
   161    (func (export "v128.load8_splat-in-block") (result v128)
   162        (block (result v128) (block (result v128) (v128.load8_splat (i32.const 0))))
   163    )
   164    (func (export "v128.load16_splat-in-block") (result v128)
   165        (block (result v128) (block (result v128) (v128.load16_splat (i32.const 1))))
   166    )
   167    (func (export "v128.load32_splat-in-block") (result v128)
   168        (block (result v128) (block (result v128) (v128.load32_splat (i32.const 2))))
   169    )
   170    (func (export "v128.load64_splat-in-block") (result v128)
   171        (block (result v128) (block (result v128) (v128.load64_splat (i32.const 9))))
   172    )
   173    (func (export "v128.load8_splat-as-br-value") (result v128)
   174      (block (result v128) (br 0 (v128.load8_splat (i32.const 3))))
   175    )
   176    (func (export "v128.load16_splat-as-br-value") (result v128)
   177      (block (result v128) (br 0 (v128.load16_splat (i32.const 4))))
   178    )
   179    (func (export "v128.load32_splat-as-br-value") (result v128)
   180      (block (result v128) (br 0 (v128.load32_splat (i32.const 5))))
   181    )
   182    (func (export "v128.load64_splat-as-br-value") (result v128)
   183      (block (result v128) (br 0 (v128.load64_splat (i32.const 10))))
   184    )
   185    (func (export "v128.load8_splat-extract_lane_s-operand") (result i32)
   186      (i8x16.extract_lane_s 0 (v128.load8_splat (i32.const 6)))
   187    )
   188    (func (export "v128.load16_splat-extract_lane_s-operand") (result i32)
   189      (i8x16.extract_lane_s 0 (v128.load16_splat (i32.const 7)))
   190    )
   191    (func (export "v128.load32_splat-extract_lane_s-operand") (result i32)
   192      (i8x16.extract_lane_s 0 (v128.load32_splat (i32.const 8)))
   193    )
   194    (func (export "v128.load64_splat-extract_lane_s-operand") (result i32)
   195      (i8x16.extract_lane_s 0 (v128.load64_splat (i32.const 11)))
   196    )
   197  )
   198  (assert_return (invoke "v128.load8_splat-in-block") (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
   199  (assert_return (invoke "v128.load16_splat-in-block") (v128.const i16x8 0x0201 0x0201 0x0201 0x0201 0x0201 0x0201 0x0201 0x0201))
   200  (assert_return (invoke "v128.load32_splat-in-block") (v128.const i32x4 0x05040302 0x05040302 0x05040302 0x05040302))
   201  (assert_return (invoke "v128.load64_splat-in-block") (v128.const i64x2 0x0000000000000A09 0x0000000000000A09))
   202  (assert_return (invoke "v128.load8_splat-as-br-value") (v128.const i8x16 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3))
   203  (assert_return (invoke "v128.load16_splat-as-br-value") (v128.const i16x8 0x0504 0x0504 0x0504 0x0504 0x0504 0x0504 0x0504 0x0504))
   204  (assert_return (invoke "v128.load32_splat-as-br-value") (v128.const i32x4 0x08070605 0x08070605 0x08070605 0x08070605))
   205  (assert_return (invoke "v128.load64_splat-as-br-value") (v128.const i64x2 0x000000000000000A 0x000000000000000A))
   206  (assert_return (invoke "v128.load8_splat-extract_lane_s-operand") (i32.const 6))
   207  (assert_return (invoke "v128.load16_splat-extract_lane_s-operand") (i32.const 7))
   208  (assert_return (invoke "v128.load32_splat-extract_lane_s-operand") (i32.const 8))
   209  (assert_return (invoke "v128.load64_splat-extract_lane_s-operand") (i32.const 0))
   210  
   211  
   212  ;; Type check
   213  
   214  (assert_invalid (module (memory 0) (func (result v128) (v128.load8_splat (v128.const i32x4 0 0 0 0)))) "type mismatch")
   215  (assert_invalid (module (memory 0) (func (result v128) (v128.load16_splat (v128.const i32x4 0 0 0 0)))) "type mismatch")
   216  (assert_invalid (module (memory 0) (func (result v128) (v128.load32_splat (v128.const i32x4 0 0 0 0)))) "type mismatch")
   217  (assert_invalid (module (memory 0) (func (result v128) (v128.load64_splat (v128.const i32x4 0 0 0 0)))) "type mismatch")
   218  
   219  
   220  ;; Unknown operator
   221  
   222  (assert_malformed (module quote "(memory 1) (func (drop (i8x16.load_splat (i32.const 0))))") "unknown operator")
   223  (assert_malformed (module quote "(memory 1) (func (drop (i16x8.load_splat (i32.const 0))))") "unknown operator")
   224  (assert_malformed (module quote "(memory 1) (func (drop (i32x4.load_splat (i32.const 0))))") "unknown operator")
   225  (assert_malformed (module quote "(memory 1) (func (drop (i64x2.load_splat (i32.const 0))))") "unknown operator")
   226  
   227  
   228  ;; Test operation with empty argument
   229  
   230  (assert_invalid
   231    (module (memory 0)
   232      (func $v128.load8_splat-arg-empty (result v128)
   233        (v128.load8_splat)
   234      )
   235    )
   236    "type mismatch"
   237  )
   238  (assert_invalid
   239    (module (memory 0)
   240      (func $v128.load16_splat-arg-empty (result v128)
   241        (v128.load16_splat)
   242      )
   243    )
   244    "type mismatch"
   245  )
   246  (assert_invalid
   247    (module (memory 0)
   248      (func $v128.load32_splat-arg-empty (result v128)
   249        (v128.load32_splat)
   250      )
   251    )
   252    "type mismatch"
   253  )
   254  (assert_invalid
   255    (module (memory 0)
   256      (func $v128.load64_splat-arg-empty (result v128)
   257        (v128.load64_splat)
   258      )
   259    )
   260    "type mismatch"
   261  )