summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/literal.h4
-rw-r--r--src/wasm-interpreter.h4
-rw-r--r--src/wasm/literal.cpp12
3 files changed, 20 insertions, 0 deletions
diff --git a/src/literal.h b/src/literal.h
index 0b1b6fa90..28e6f03cf 100644
--- a/src/literal.h
+++ b/src/literal.h
@@ -628,6 +628,10 @@ public:
Literal extendHighSToVecI32x4() const;
Literal extendLowUToVecI32x4() const;
Literal extendHighUToVecI32x4() const;
+ Literal extendLowSToVecI64x2() const;
+ Literal extendHighSToVecI64x2() const;
+ Literal extendLowUToVecI64x2() const;
+ Literal extendHighUToVecI64x2() const;
Literal swizzleVec8x16(const Literal& other) const;
// Checks if an RTT value is a sub-rtt of another, that is, whether GC data
diff --git a/src/wasm-interpreter.h b/src/wasm-interpreter.h
index f646ed976..872d90603 100644
--- a/src/wasm-interpreter.h
+++ b/src/wasm-interpreter.h
@@ -562,9 +562,13 @@ public:
case ExtendHighUVecI16x8ToVecI32x4:
return value.extendHighUToVecI32x4();
case ExtendLowSVecI32x4ToVecI64x2:
+ return value.extendLowSToVecI64x2();
case ExtendHighSVecI32x4ToVecI64x2:
+ return value.extendHighSToVecI64x2();
case ExtendLowUVecI32x4ToVecI64x2:
+ return value.extendLowUToVecI64x2();
case ExtendHighUVecI32x4ToVecI64x2:
+ return value.extendHighUToVecI64x2();
case ConvertLowSVecI32x4ToVecF64x2:
case ConvertLowUVecI32x4ToVecF64x2:
case TruncSatZeroSVecF64x2ToVecI32x4:
diff --git a/src/wasm/literal.cpp b/src/wasm/literal.cpp
index 2c5bff5b1..5a8ec3df3 100644
--- a/src/wasm/literal.cpp
+++ b/src/wasm/literal.cpp
@@ -2387,6 +2387,18 @@ Literal Literal::extendLowUToVecI32x4() const {
Literal Literal::extendHighUToVecI32x4() const {
return extend<4, uint16_t, uint32_t, LaneOrder::High>(*this);
}
+Literal Literal::extendLowSToVecI64x2() const {
+ return extend<2, int32_t, int64_t, LaneOrder::Low>(*this);
+}
+Literal Literal::extendHighSToVecI64x2() const {
+ return extend<2, int32_t, int64_t, LaneOrder::High>(*this);
+}
+Literal Literal::extendLowUToVecI64x2() const {
+ return extend<2, uint32_t, uint64_t, LaneOrder::Low>(*this);
+}
+Literal Literal::extendHighUToVecI64x2() const {
+ return extend<2, uint32_t, uint64_t, LaneOrder::High>(*this);
+}
Literal Literal::extMulLowSI16x8(const Literal& other) const {
WASM_UNREACHABLE("TODO: implement SIMD extending multiplications");