@@ -1580,6 +1580,11 @@ EmitInfo WasmBytecodeGenerator::EmitM128BitSelect()
1580
1580
EmitInfo mask = PopEvalStack (WasmTypes::M128);
1581
1581
EmitInfo arg2Info = PopEvalStack (WasmTypes::M128);
1582
1582
EmitInfo arg1Info = PopEvalStack (WasmTypes::M128);
1583
+
1584
+ ReleaseLocation (&mask);
1585
+ ReleaseLocation (&arg2Info);
1586
+ ReleaseLocation (&arg1Info);
1587
+
1583
1588
Js::RegSlot resultReg = GetRegisterSpace (WasmTypes::M128)->AcquireTmpRegister ();
1584
1589
EmitInfo resultInfo (resultReg, WasmTypes::M128);
1585
1590
m_writer->AsmReg4 (Js::OpCodeAsmJs::Simd128_BitSelect_I4, resultReg, arg1Info.location , arg2Info.location , mask.location );
@@ -1591,6 +1596,8 @@ EmitInfo WasmBytecodeGenerator::EmitV8X16Shuffle()
1591
1596
EmitInfo arg2Info = PopEvalStack (WasmTypes::M128);
1592
1597
EmitInfo arg1Info = PopEvalStack (WasmTypes::M128);
1593
1598
1599
+ // FIXME Release arg2Info and arg1Info
1600
+
1594
1601
Js::RegSlot resultReg = GetRegisterSpace (WasmTypes::M128)->AcquireTmpRegister ();
1595
1602
EmitInfo resultInfo (resultReg, WasmTypes::M128);
1596
1603
@@ -1613,16 +1620,16 @@ EmitInfo WasmBytecodeGenerator::EmitExtractLaneExpr(Js::OpCodeAsmJs op, const Wa
1613
1620
WasmTypes::WasmType simdArgType = signature[1 ];
1614
1621
1615
1622
EmitInfo simdArgInfo = PopEvalStack (simdArgType, _u (" Argument should be of type M128" ));
1623
+ ReleaseLocation (&simdArgInfo);
1616
1624
1617
1625
Js::RegSlot resultReg = GetRegisterSpace (resultType)->AcquireTmpRegister ();
1618
1626
EmitInfo resultInfo (resultReg, resultType);
1619
1627
1620
1628
// put index into a register to reuse the existing infra in Interpreter and Compiler
1621
1629
EmitInfo indexInfo = EmitLaneIndex (op);
1630
+ ReleaseLocation (&indexInfo);
1622
1631
1623
1632
m_writer->AsmReg3 (op, resultReg, simdArgInfo.location , indexInfo.location );
1624
- ReleaseLocation (&indexInfo);
1625
- ReleaseLocation (&simdArgInfo);
1626
1633
return resultInfo;
1627
1634
}
1628
1635
0 commit comments