@@ -239,32 +239,37 @@ class ExpressionRunner : public Visitor<SubType, Flow> {
239239 NOTE_EVAL1 (value);
240240 if (value.type == i32 ) {
241241 switch (curr->op ) {
242- case ClzInt32: return value.countLeadingZeroes ();
243- case CtzInt32: return value.countTrailingZeroes ();
244- case PopcntInt32: return value.popCount ();
245- case EqZInt32: return Literal (int32_t (value == Literal (int32_t (0 ))));
246- case ReinterpretInt32: return value.castToF32 ();
247- case ExtendSInt32: return value.extendToSI64 ();
248- case ExtendUInt32: return value.extendToUI64 ();
242+ case ClzInt32: return value.countLeadingZeroes ();
243+ case CtzInt32: return value.countTrailingZeroes ();
244+ case PopcntInt32: return value.popCount ();
245+ case EqZInt32: return Literal (int32_t (value == Literal (int32_t (0 ))));
246+ case ReinterpretInt32: return value.castToF32 ();
247+ case ExtendSInt32: return value.extendToSI64 ();
248+ case ExtendUInt32: return value.extendToUI64 ();
249249 case ConvertUInt32ToFloat32: return value.convertUToF32 ();
250250 case ConvertUInt32ToFloat64: return value.convertUToF64 ();
251251 case ConvertSInt32ToFloat32: return value.convertSToF32 ();
252252 case ConvertSInt32ToFloat64: return value.convertSToF64 ();
253+ case ExtendS8Int32: return Literal (int32_t (int8_t (value.geti32 () & 0xFF )));
254+ case ExtendS16Int32: return Literal (int32_t (int16_t (value.geti32 () & 0xFFFF )));
253255 default : WASM_UNREACHABLE ();
254256 }
255257 }
256258 if (value.type == i64 ) {
257259 switch (curr->op ) {
258- case ClzInt64: return value.countLeadingZeroes ();
259- case CtzInt64: return value.countTrailingZeroes ();
260- case PopcntInt64: return value.popCount ();
261- case EqZInt64: return Literal (int32_t (value == Literal (int64_t (0 ))));
262- case WrapInt64: return value.truncateToI32 ();
263- case ReinterpretInt64: return value.castToF64 ();
260+ case ClzInt64: return value.countLeadingZeroes ();
261+ case CtzInt64: return value.countTrailingZeroes ();
262+ case PopcntInt64: return value.popCount ();
263+ case EqZInt64: return Literal (int32_t (value == Literal (int64_t (0 ))));
264+ case WrapInt64: return value.truncateToI32 ();
265+ case ReinterpretInt64: return value.castToF64 ();
264266 case ConvertUInt64ToFloat32: return value.convertUToF32 ();
265267 case ConvertUInt64ToFloat64: return value.convertUToF64 ();
266268 case ConvertSInt64ToFloat32: return value.convertSToF32 ();
267269 case ConvertSInt64ToFloat64: return value.convertSToF64 ();
270+ case ExtendS8Int64: return Literal (int64_t (int8_t (value.geti64 () & 0xFF )));
271+ case ExtendS16Int64: return Literal (int64_t (int16_t (value.geti64 () & 0xFFFF )));
272+ case ExtendS32Int64: return Literal (int64_t (int32_t (value.geti64 () & 0xFFFFFFFF )));
268273 default : WASM_UNREACHABLE ();
269274 }
270275 }
0 commit comments