|
| 1 | +;; Tests for i32x4 arithmetic operations on major boundary values and all special values. |
| 2 | + |
| 3 | + |
| 4 | +(module |
| 5 | + (func (export "i32x4.dot_i16x8_s") (param v128 v128) (result v128) (i32x4.dot_i16x8_s (local.get 0) (local.get 1))) |
| 6 | +) |
| 7 | + |
| 8 | + |
| 9 | +;; i32x4.dot_i16x8_s |
| 10 | +(assert_return (invoke "i32x4.dot_i16x8_s" (v128.const i16x8 0 0 0 0 0 0 0 0) |
| 11 | + (v128.const i16x8 0 0 0 0 0 0 0 0)) |
| 12 | + (v128.const i32x4 0 0 0 0)) |
| 13 | +(assert_return (invoke "i32x4.dot_i16x8_s" (v128.const i16x8 0 0 0 0 0 0 0 0) |
| 14 | + (v128.const i16x8 1 1 1 1 1 1 1 1)) |
| 15 | + (v128.const i32x4 0 0 0 0)) |
| 16 | +(assert_return (invoke "i32x4.dot_i16x8_s" (v128.const i16x8 1 1 1 1 1 1 1 1) |
| 17 | + (v128.const i16x8 1 1 1 1 1 1 1 1)) |
| 18 | + (v128.const i32x4 2 2 2 2)) |
| 19 | +(assert_return (invoke "i32x4.dot_i16x8_s" (v128.const i16x8 0 0 0 0 0 0 0 0) |
| 20 | + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) |
| 21 | + (v128.const i32x4 0 0 0 0)) |
| 22 | +(assert_return (invoke "i32x4.dot_i16x8_s" (v128.const i16x8 1 1 1 1 1 1 1 1) |
| 23 | + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) |
| 24 | + (v128.const i32x4 -2 -2 -2 -2)) |
| 25 | +(assert_return (invoke "i32x4.dot_i16x8_s" (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1) |
| 26 | + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) |
| 27 | + (v128.const i32x4 2 2 2 2)) |
| 28 | +(assert_return (invoke "i32x4.dot_i16x8_s" (v128.const i16x8 16383 16383 16383 16383 16383 16383 16383 16383) |
| 29 | + (v128.const i16x8 16384 16384 16384 16384 16384 16384 16384 16384)) |
| 30 | + (v128.const i32x4 536838144 536838144 536838144 536838144)) |
| 31 | +(assert_return (invoke "i32x4.dot_i16x8_s" (v128.const i16x8 16384 16384 16384 16384 16384 16384 16384 16384) |
| 32 | + (v128.const i16x8 16384 16384 16384 16384 16384 16384 16384 16384)) |
| 33 | + (v128.const i32x4 536870912 536870912 536870912 536870912)) |
| 34 | +(assert_return (invoke "i32x4.dot_i16x8_s" (v128.const i16x8 -16383 -16383 -16383 -16383 -16383 -16383 -16383 -16383) |
| 35 | + (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384)) |
| 36 | + (v128.const i32x4 536838144 536838144 536838144 536838144)) |
| 37 | +(assert_return (invoke "i32x4.dot_i16x8_s" (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384) |
| 38 | + (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384)) |
| 39 | + (v128.const i32x4 536870912 536870912 536870912 536870912)) |
| 40 | +(assert_return (invoke "i32x4.dot_i16x8_s" (v128.const i16x8 -16385 -16385 -16385 -16385 -16385 -16385 -16385 -16385) |
| 41 | + (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384)) |
| 42 | + (v128.const i32x4 536903680 536903680 536903680 536903680)) |
| 43 | +(assert_return (invoke "i32x4.dot_i16x8_s" (v128.const i16x8 32765 32765 32765 32765 32765 32765 32765 32765) |
| 44 | + (v128.const i16x8 1 1 1 1 1 1 1 1)) |
| 45 | + (v128.const i32x4 65530 65530 65530 65530)) |
| 46 | +(assert_return (invoke "i32x4.dot_i16x8_s" (v128.const i16x8 32766 32766 32766 32766 32766 32766 32766 32766) |
| 47 | + (v128.const i16x8 1 1 1 1 1 1 1 1)) |
| 48 | + (v128.const i32x4 65532 65532 65532 65532)) |
| 49 | +(assert_return (invoke "i32x4.dot_i16x8_s" (v128.const i16x8 32768 32768 32768 32768 32768 32768 32768 32768) |
| 50 | + (v128.const i16x8 1 1 1 1 1 1 1 1)) |
| 51 | + (v128.const i32x4 -65536 -65536 -65536 -65536)) |
| 52 | +(assert_return (invoke "i32x4.dot_i16x8_s" (v128.const i16x8 -32766 -32766 -32766 -32766 -32766 -32766 -32766 -32766) |
| 53 | + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) |
| 54 | + (v128.const i32x4 65532 65532 65532 65532)) |
| 55 | +(assert_return (invoke "i32x4.dot_i16x8_s" (v128.const i16x8 -32767 -32767 -32767 -32767 -32767 -32767 -32767 -32767) |
| 56 | + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) |
| 57 | + (v128.const i32x4 65534 65534 65534 65534)) |
| 58 | +(assert_return (invoke "i32x4.dot_i16x8_s" (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768) |
| 59 | + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) |
| 60 | + (v128.const i32x4 65536 65536 65536 65536)) |
| 61 | +(assert_return (invoke "i32x4.dot_i16x8_s" (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767) |
| 62 | + (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) |
| 63 | + (v128.const i32x4 2147352578 2147352578 2147352578 2147352578)) |
| 64 | +(assert_return (invoke "i32x4.dot_i16x8_s" (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768) |
| 65 | + (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)) |
| 66 | + (v128.const i32x4 2147483648 2147483648 2147483648 2147483648)) |
| 67 | +(assert_return (invoke "i32x4.dot_i16x8_s" (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768) |
| 68 | + (v128.const i16x8 -32767 -32767 -32767 -32767 -32767 -32767 -32767 -32767)) |
| 69 | + (v128.const i32x4 2147418112 2147418112 2147418112 2147418112)) |
| 70 | +(assert_return (invoke "i32x4.dot_i16x8_s" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) |
| 71 | + (v128.const i16x8 0 0 0 0 0 0 0 0)) |
| 72 | + (v128.const i32x4 0 0 0 0)) |
| 73 | +(assert_return (invoke "i32x4.dot_i16x8_s" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) |
| 74 | + (v128.const i16x8 1 1 1 1 1 1 1 1)) |
| 75 | + (v128.const i32x4 -2 -2 -2 -2)) |
| 76 | +(assert_return (invoke "i32x4.dot_i16x8_s" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) |
| 77 | + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) |
| 78 | + (v128.const i32x4 2 2 2 2)) |
| 79 | +(assert_return (invoke "i32x4.dot_i16x8_s" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) |
| 80 | + (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) |
| 81 | + (v128.const i32x4 -65534 -65534 -65534 -65534)) |
| 82 | +(assert_return (invoke "i32x4.dot_i16x8_s" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) |
| 83 | + (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)) |
| 84 | + (v128.const i32x4 65536 65536 65536 65536)) |
| 85 | +(assert_return (invoke "i32x4.dot_i16x8_s" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) |
| 86 | + (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) |
| 87 | + (v128.const i32x4 2 2 2 2)) |
| 88 | + |
| 89 | +;; type check |
| 90 | +(assert_invalid (module (func (result v128) (i32x4.dot_i16x8_s (i32.const 0) (f32.const 0.0)))) "type mismatch") |
| 91 | + |
| 92 | +;; Test operation with empty argument |
| 93 | + |
| 94 | +(assert_invalid |
| 95 | + (module |
| 96 | + (func $i32x4.dot_i16x8_s-1st-arg-empty (result v128) |
| 97 | + (i32x4.dot_i16x8_s (v128.const i32x4 0 0 0 0)) |
| 98 | + ) |
| 99 | + ) |
| 100 | + "type mismatch" |
| 101 | +) |
| 102 | +(assert_invalid |
| 103 | + (module |
| 104 | + (func $i32x4.dot_i16x8_s-arg-empty (result v128) |
| 105 | + (i32x4.dot_i16x8_s) |
| 106 | + ) |
| 107 | + ) |
| 108 | + "type mismatch" |
| 109 | +) |
| 110 | + |
0 commit comments