InterpreterHandlerAsmJs.inl 61 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717
  1. //-------------------------------------------------------------------------------------------------------
  2. // Copyright (C) Microsoft Corporation and contributors. All rights reserved.
  3. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
  4. //-------------------------------------------------------------------------------------------------------
  5. #ifdef ASMJS_PLAT
  6. // See Lib\Runtime\Language\InterpreterProcessOpCodeAsmJs.h for Handler Process
  7. // ( HandlerProcess , OpCodeAsmJs , HandlerFunction , LayoutAsmJs , Type )
  8. // ( | , | , | , | , | )
  9. // ( | , | , | , | , | )
  10. // ( V , V , V , V , V )
  11. DEF2 ( NOPASMJS , Nop , Empty )
  12. EXDEF2 (NOPASMJS , InvalidOpCode, Empty )
  13. DEF2 ( NOPASMJS , Label , Empty )
  14. DEF2 ( BR_ASM , AsmBr , OP_Br )
  15. DEF2_WMS( FALLTHROUGH_ASM , LdSlotArr , /* Common case with LdSlot */ )
  16. DEF3_WMS( GET_ELEM_SLOT_ASM, LdSlot , OP_LdAsmJsSlot , ElementSlot )
  17. DEF2_WMS( FUNCtoA1Mem , LdUndef , JavascriptOperators::OP_LdUndef )
  18. // Function Calls
  19. DEF2 ( FALLTHROUGH_ASM , I_StartCall, /* Common case with StartCall */ )
  20. DEF3 ( CUSTOM_ASMJS , StartCall , OP_AsmStartCall , StartCall )
  21. DEF3_WMS( CUSTOM_ASMJS , I_Call , OP_I_AsmCall , AsmCall )
  22. DEF3_WMS( CUSTOM_ASMJS , Call , OP_AsmCall , AsmCall )
  23. DEF2_WMS( D1toR1Out , I_ArgOut_Db , OP_I_SetOutAsmDb ) // set double as internal outparam
  24. DEF2_WMS( D1toR1Out , ArgOut_Db , OP_SetOutAsmDb ) // convert double to var and set it as outparam
  25. DEF2_WMS( I1toR1Out , I_ArgOut_Int , OP_I_SetOutAsmInt ) // set int as internal outparam
  26. DEF2_WMS( I1toR1Out , ArgOut_Int , OP_SetOutAsmInt ) // convert int to var and set it as outparam
  27. DEF2_WMS( F1toR1Out , I_ArgOut_Flt , OP_I_SetOutAsmFlt ) // set float as internal outparam
  28. DEF2_WMS( F1toR1Out , ArgOut_Flt , OP_SetOutAsmFlt ) // convert float to var and set as outparam
  29. DEF2_WMS( L1toR1Out , I_ArgOut_Long, OP_I_SetOutAsmLong ) // set int64 as internal outparam
  30. DEF2_WMS( D1toD1Mem , I_Conv_VTD , (double) )
  31. DEF2_WMS( R1toD1Mem , Conv_VTD , JavascriptConversion::ToNumber ) // convert var to double
  32. DEF2_WMS( F1toF1Mem , I_Conv_VTF , (float) )
  33. DEF2_WMS( R1toF1Mem , Conv_VTF , JavascriptConversion::ToNumber ) // convert var to float
  34. DEF2_WMS( I1toI1Mem , I_Conv_VTI , (int) )
  35. DEF2_WMS( R1toI1Mem , Conv_VTI , JavascriptMath::ToInt32 ) // convert var to int
  36. DEF3_WMS( CUSTOM_ASMJS , ArgOut_Long , OP_InvalidWasmTypeConversion<true> , Reg1Long1 ) // convert int64 to Var
  37. DEF3_WMS( CUSTOM_ASMJS , Conv_VTL , OP_InvalidWasmTypeConversion<false> , Long1Reg1 ) // convert var to int64
  38. DEF3_WMS( CUSTOM_ASMJS , LdArr_Func , OP_LdArrFunc , ElementSlot )
  39. DEF3_WMS( CUSTOM_ASMJS , LdArr_WasmFunc,OP_LdArrWasmFunc , ElementSlot )
  40. DEF3_WMS( CUSTOM_ASMJS , CheckSignature,OP_CheckSignature , Reg1IntConst1 )
  41. DEF4_WMS( TEMPLATE_ASMJS , LdSlot_Db , OP_LdSlotPrimitive , ElementSlot, double )
  42. DEF4_WMS( TEMPLATE_ASMJS , LdSlot_Int , OP_LdSlotPrimitive , ElementSlot, int )
  43. DEF4_WMS( TEMPLATE_ASMJS , LdSlot_Long , OP_LdSlotPrimitive , ElementSlot, int64 )
  44. DEF4_WMS( TEMPLATE_ASMJS , LdSlot_Flt , OP_LdSlotPrimitive , ElementSlot, float )
  45. DEF4_WMS( TEMPLATE_ASMJS , StSlot_Db , OP_StSlotPrimitive , ElementSlot, double )
  46. DEF4_WMS( TEMPLATE_ASMJS , StSlot_Int , OP_StSlotPrimitive , ElementSlot, int )
  47. DEF4_WMS( TEMPLATE_ASMJS , StSlot_Long , OP_StSlotPrimitive , ElementSlot, int64 )
  48. DEF4_WMS( TEMPLATE_ASMJS , StSlot_Flt , OP_StSlotPrimitive , ElementSlot, float )
  49. DEF3_WMS( CUSTOM_ASMJS , LdArr , OP_LdArrGeneric , AsmTypedArr )
  50. DEF3_WMS( CUSTOM_ASMJS , LdArrWasm , OP_LdArrWasm , AsmTypedArr )
  51. DEF3_WMS( CUSTOM_ASMJS , StArrWasm , OP_StArrWasm , AsmTypedArr )
  52. DEF3_WMS( CUSTOM_ASMJS , LdArrConst , OP_LdArrConstIndex , AsmTypedArr )
  53. DEF3_WMS( CUSTOM_ASMJS , StArr , OP_StArrGeneric , AsmTypedArr )
  54. DEF3_WMS( CUSTOM_ASMJS , StArrConst , OP_StArrConstIndex , AsmTypedArr )
  55. DEF2_WMS( C1toI1 , Ld_IntConst , None )
  56. DEF2_WMS( C1toL1 , Ld_LongConst , None )
  57. DEF2_WMS( C1toF1 , Ld_FltConst , None )
  58. DEF2_WMS( C1toD1 , Ld_DbConst , None )
  59. DEF2_WMS( BR_ASM_MemStack , BrTrue_Int , None ) // Jumps to location if int reg is true
  60. DEF2_WMS( BR_ASM_MemStackF , BrFalse_Int , None ) // Jumps to location if int reg is false
  61. DEF2_WMS( BR_ASM_Mem , BrEq_Int , AsmJsMath::CmpEq<int> ) // Jumps to location if both int reg are equal
  62. DEF2_WMS( I1toF1Mem , Reinterpret_ITF, NumberUtilities::ReinterpretBits ) // reinterpret bits of int to float
  63. DEF2_WMS( F1toI1Mem , Reinterpret_FTI, NumberUtilities::ToSpecial ) // reinterpret bits of float to int
  64. DEF2_WMS( L1toD1Mem , Reinterpret_LTD, NumberUtilities::ReinterpretBits ) // reinterpret bits of long to double
  65. DEF2_WMS( D1toL1Mem , Reinterpret_DTL, NumberUtilities::ToSpecial ) // reinterpret bits of double to long
  66. DEF2_WMS( D1toI1Mem , Conv_DTI , JavascriptConversion::ToInt32 ) // convert double to int
  67. DEF2_WMS( D1toI1Mem , Conv_DTU , JavascriptConversion::ToUInt32 ) // convert double to unsigned int
  68. DEF2_WMS( F1toI1Mem , Conv_FTI , JavascriptConversion::ToInt32 ) // convert float to int
  69. DEF2_WMS( F1toI1Mem , Conv_FTU , JavascriptConversion::ToUInt32 ) // convert float to unsigned int
  70. DEF2_WMS( I1toD1Mem , Conv_ITD , (double) ) // convert int to double
  71. DEF2_WMS( U1toD1Mem , Conv_UTD , (double) ) // convert unsigned int to double
  72. DEF2_WMS( U1toF1Mem , Conv_UTF , (float) ) // convert unsigned int to float
  73. DEF2_WMS( F1toD1Mem , Conv_FTD , (double) ) // convert unsigned float to double
  74. DEF2_WMS( I1toL1Mem , Conv_ITL , (int64) ) // extend signed int to int64
  75. DEF2_WMS( U1toL1Mem , Conv_UTL , (int64) ) // extend unsigned int to int64
  76. DEF2_WMS( L1toD1Mem , Conv_ULTD , JavascriptConversion::ULongToDouble )
  77. DEF2_WMS( L1toD1Mem , Conv_LTD , JavascriptConversion::LongToDouble )
  78. DEF2_WMS( L1toF1Mem , Conv_ULTF , JavascriptConversion::ULongToFloat )
  79. DEF2_WMS( L1toF1Mem , Conv_LTF , JavascriptConversion::LongToFloat )
  80. DEF2_WMS( L1toI1Mem , Conv_LTI , (int) ) // wrap int64 to int
  81. DEF2_WMS( I1toI1Mem , Ld_Int , (int) )
  82. DEF2_WMS( L1toL1Mem , Ld_Long , (int64) )
  83. DEF2_WMS( D1toD1Mem , Ld_Db , (double) )
  84. DEF2_WMS( F1toF1Mem , Ld_Flt , (float) )
  85. DEF2_WMS( D1toD1Mem , Return_Db , (double) )
  86. DEF2_WMS( F1toF1Mem , Return_Flt , (float) )
  87. DEF2_WMS( I1toI1Mem , Return_Int , (int) )
  88. DEF2_WMS( L1toL1Mem , Return_Long , (int64) )
  89. DEF2_WMS( I1toI1Mem , BeginSwitch_Int, (int) )
  90. DEF2 ( BR_ASM , EndSwitch_Int, OP_Br )
  91. DEF2_WMS( BR_ASM_Mem , Case_Int , AsmJsMath::CmpEq<int> )
  92. DEF2_WMS( BR_ASM_Const , Case_IntConst, AsmJsMath::CmpEq<int> )
  93. DEF2_WMS( I1toI1Mem , Neg_Int , AsmJsMath::Neg<int> ) // int unary '-'
  94. DEF2_WMS( I1toI1Mem , Not_Int , AsmJsMath::Not ) // int unary '~'
  95. DEF2_WMS( I1toI1Mem , LogNot_Int , AsmJsMath::LogNot ) // int unary '!'
  96. DEF2_WMS( I1toI1Mem , Conv_ITB , AsmJsMath::ToBool ) // convert an int to a bool (0|1)
  97. DEF2_WMS( I2toI1Mem , Add_Int , AsmJsMath::Add<int> )
  98. DEF2_WMS( I2toI1Mem , Sub_Int , AsmJsMath::Sub<int> )
  99. DEF2_WMS( I2toI1Mem , Mul_Int , AsmJsMath::Mul<int> )
  100. DEF2_WMS( I2toI1Mem , Div_Int , AsmJsMath::Div<int> )
  101. DEF2_WMS( I2toI1Mem , Rem_Int , AsmJsMath::Rem<int> )
  102. DEF2_WMS( I2toI1Ctx , Div_Check_Int , (OP_DivOverflow<int, &AsmJsMath::Div<int>, INT_MIN>) )
  103. DEF2_WMS( I2toI1Ctx , Rem_Check_Int , (OP_DivRemCheck<int, &AsmJsMath::Rem<int>>) )
  104. DEF2_WMS( I2toI1Mem , And_Int , AsmJsMath::And )
  105. DEF2_WMS( I2toI1Mem , Or_Int , AsmJsMath::Or )
  106. DEF2_WMS( I2toI1Mem , Xor_Int , AsmJsMath::Xor )
  107. DEF2_WMS( I2toI1Mem , Shl_Int , AsmJsMath::Shl )
  108. DEF2_WMS( I2toI1Mem , Shr_Int , AsmJsMath::Shr )
  109. DEF2_WMS( I2toI1Mem , Shr_UInt , AsmJsMath::ShrU<uint> )
  110. DEF2_WMS( I2toI1Mem , Rol_Int , Wasm::WasmMath::Rol )
  111. DEF2_WMS( I2toI1Mem , Ror_Int , Wasm::WasmMath::Ror )
  112. DEF2_WMS( I1toI1Mem , PopCnt_Int , ::Math::PopCnt32 )
  113. DEF2_WMS( I2toI1Mem , Mul_UInt , AsmJsMath::Mul<uint> )
  114. DEF2_WMS( I2toI1Mem , Div_UInt , AsmJsMath::Div<uint> )
  115. DEF2_WMS( I2toI1Mem , Rem_UInt , AsmJsMath::Rem<uint> )
  116. // Int64 Math
  117. DEF2_WMS( L2toL1Mem , Add_Long , AsmJsMath::Add<int64>)
  118. DEF2_WMS( L2toL1Mem , Sub_Long , AsmJsMath::Sub<int64>)
  119. DEF2_WMS( L2toL1Mem , Mul_Long , AsmJsMath::Mul<int64>)
  120. DEF2_WMS( L2toL1Ctx , Div_Long , (OP_DivOverflow<int64, &AsmJsMath::Div<int64>, LONGLONG_MIN>) )
  121. DEF2_WMS( L2toL1Ctx , Div_ULong , (OP_DivRemCheck<uint64, &AsmJsMath::Div<uint64>>) )
  122. DEF2_WMS( L2toL1Ctx , Rem_Long , (OP_DivRemCheck<int64, &Wasm::WasmMath::Rem<int64>>) )
  123. DEF2_WMS( L2toL1Ctx , Rem_ULong , (OP_DivRemCheck<uint64, &Wasm::WasmMath::Rem<uint64>>) )
  124. DEF2_WMS( L2toL1Mem , And_Long , AsmJsMath::And<int64>)
  125. DEF2_WMS( L2toL1Mem , Or_Long , AsmJsMath::Or<int64>)
  126. DEF2_WMS( L2toL1Mem , Xor_Long , AsmJsMath::Xor<int64>)
  127. DEF2_WMS( L2toL1Mem , Shl_Long , Wasm::WasmMath::Shl<int64>)
  128. DEF2_WMS( L2toL1Mem , Shr_Long , Wasm::WasmMath::Shr<int64>)
  129. DEF2_WMS( L2toL1Mem , Shr_ULong , Wasm::WasmMath::ShrU<uint64>)
  130. DEF2_WMS( L2toL1Mem , Rol_Long , Wasm::WasmMath::Rol<int64>)
  131. DEF2_WMS( L2toL1Mem , Ror_Long , Wasm::WasmMath::Ror<int64>)
  132. DEF2_WMS( L1toL1Mem , Clz_Long , Wasm::WasmMath::Clz<int64>)
  133. DEF2_WMS( L1toL1Mem , Ctz_Long , Wasm::WasmMath::Ctz<int64>)
  134. DEF2_WMS( L1toL1Mem , PopCnt_Long , Wasm::WasmMath::PopCnt<int64>)
  135. DEF2_WMS( I2toI1Ctx , Div_Check_UInt , (OP_DivRemCheck<uint32, &AsmJsMath::Div<uint32>>) )
  136. DEF2_WMS( I2toI1Ctx , Rem_Check_UInt , (OP_DivRemCheck<uint32, &AsmJsMath::Rem<uint32>>) )
  137. DEF2_WMS( D1toD1Mem , Neg_Db , AsmJsMath::Neg<double> ) // double unary '-'
  138. DEF2_WMS( D2toD1Mem , Add_Db , AsmJsMath::Add<double> )
  139. DEF2_WMS( D2toD1Mem , Sub_Db , AsmJsMath::Sub<double> )
  140. DEF2_WMS( D2toD1Mem , Mul_Db , AsmJsMath::Mul<double> )
  141. DEF2_WMS( D2toD1Mem , Div_Db , AsmJsMath::Div<double> )
  142. DEF2_WMS( D2toD1Mem , Rem_Db , AsmJsMath::Rem<double> )
  143. DEF2_WMS( F1toF1Mem , Neg_Flt , AsmJsMath::Neg<float> ) // float unary '-'
  144. DEF2_WMS( F2toF1Mem , Add_Flt , AsmJsMath::Add<float> )
  145. DEF2_WMS( F2toF1Mem , Sub_Flt , AsmJsMath::Sub<float> )
  146. DEF2_WMS( F2toF1Mem , Mul_Flt , AsmJsMath::Mul<float> )
  147. DEF2_WMS( F2toF1Mem , Div_Flt , AsmJsMath::Div<float> )
  148. DEF2_WMS( I2toI1Mem , CmLt_Int , AsmJsMath::CmpLt<int> )
  149. DEF2_WMS( I2toI1Mem , CmLe_Int , AsmJsMath::CmpLe<int> )
  150. DEF2_WMS( I2toI1Mem , CmGt_Int , AsmJsMath::CmpGt<int> )
  151. DEF2_WMS( I2toI1Mem , CmGe_Int , AsmJsMath::CmpGe<int> )
  152. DEF2_WMS( I2toI1Mem , CmEq_Int , AsmJsMath::CmpEq<int> )
  153. DEF2_WMS( I2toI1Mem , CmNe_Int , AsmJsMath::CmpNe<int> )
  154. DEF2_WMS( I2toI1Mem , CmLt_UInt , AsmJsMath::CmpLt<unsigned int> )
  155. DEF2_WMS( I2toI1Mem , CmLe_UInt , AsmJsMath::CmpLe<unsigned int> )
  156. DEF2_WMS( I2toI1Mem , CmGt_UInt , AsmJsMath::CmpGt<unsigned int> )
  157. DEF2_WMS( I2toI1Mem , CmGe_UInt , AsmJsMath::CmpGe<unsigned int> )
  158. DEF2_WMS( I1toI1Mem , Abs_Int , ::abs )
  159. DEF2_WMS( I2toI1Mem , Min_Int , min )
  160. DEF2_WMS( I2toI1Mem , Max_Int , max )
  161. DEF2_WMS( I2toI1Mem , Imul_Int , AsmJsMath::Mul<int> )
  162. DEF2_WMS( I1toI1Mem , Clz32_Int , AsmJsMath::Clz32 )
  163. DEF2_WMS( I1toI1Mem , Ctz_Int , Wasm::WasmMath::Ctz )
  164. DEF2_WMS( I1toI1Mem , Eqz_Int , Wasm::WasmMath::Eqz<int> )
  165. // Int64 comparisons
  166. DEF2_WMS( L2toI1Mem , CmEq_Long , AsmJsMath::CmpEq<int64>)
  167. DEF2_WMS( L2toI1Mem , CmNe_Long , AsmJsMath::CmpNe<int64>)
  168. DEF2_WMS( L2toI1Mem , CmLt_Long , AsmJsMath::CmpLt<int64>)
  169. DEF2_WMS( L2toI1Mem , CmLe_Long , AsmJsMath::CmpLe<int64>)
  170. DEF2_WMS( L2toI1Mem , CmLt_ULong , AsmJsMath::CmpLt<uint64>)
  171. DEF2_WMS( L2toI1Mem , CmLe_ULong , AsmJsMath::CmpLe<uint64>)
  172. DEF2_WMS( L2toI1Mem , CmGt_Long , AsmJsMath::CmpGt<int64>)
  173. DEF2_WMS( L2toI1Mem , CmGe_Long , AsmJsMath::CmpGe<int64>)
  174. DEF2_WMS( L2toI1Mem , CmGt_ULong , AsmJsMath::CmpGt<uint64>)
  175. DEF2_WMS( L2toI1Mem , CmGe_ULong , AsmJsMath::CmpGe<uint64>)
  176. DEF2_WMS( L1toI1Mem , Eqz_Long , Wasm::WasmMath::Eqz<int64>)
  177. DEF2_WMS( D2toI1Mem , CmLt_Db , AsmJsMath::CmpLt<double> )
  178. DEF2_WMS( D2toI1Mem , CmLe_Db , AsmJsMath::CmpLe<double> )
  179. DEF2_WMS( D2toI1Mem , CmGt_Db , AsmJsMath::CmpGt<double> )
  180. DEF2_WMS( D2toI1Mem , CmGe_Db , AsmJsMath::CmpGe<double> )
  181. DEF2_WMS( D2toI1Mem , CmEq_Db , AsmJsMath::CmpEq<double> )
  182. DEF2_WMS( D2toI1Mem , CmNe_Db , AsmJsMath::CmpNe<double> )
  183. DEF2_WMS( F2toI1Mem , CmLt_Flt , AsmJsMath::CmpLt<float> )
  184. DEF2_WMS( F2toI1Mem , CmLe_Flt , AsmJsMath::CmpLe<float> )
  185. DEF2_WMS( F2toI1Mem , CmGt_Flt , AsmJsMath::CmpGt<float> )
  186. DEF2_WMS( F2toI1Mem , CmGe_Flt , AsmJsMath::CmpGe<float> )
  187. DEF2_WMS( F2toI1Mem , CmEq_Flt , AsmJsMath::CmpEq<float> )
  188. DEF2_WMS( F2toI1Mem , CmNe_Flt , AsmJsMath::CmpNe<float> )
  189. DEF2_WMS( D1toD1Mem , Sin_Db , Math::Sin )
  190. DEF2_WMS( D1toD1Mem , Cos_Db , Math::Cos )
  191. DEF2_WMS( D1toD1Mem , Tan_Db , Math::Tan )
  192. DEF2_WMS( D1toD1Mem , Asin_Db , Math::Asin )
  193. DEF2_WMS( D1toD1Mem , Acos_Db , Math::Acos )
  194. DEF2_WMS( D1toD1Mem , Atan_Db , Math::Atan )
  195. DEF2_WMS( D1toD1Mem , Ceil_Db , ::ceil )
  196. DEF2_WMS( F1toF1Mem , Ceil_Flt , ::ceilf )
  197. DEF2_WMS( D1toD1Mem , Floor_Db , ::floor )
  198. DEF2_WMS( F1toF1Mem , Floor_Flt , ::floorf )
  199. DEF2_WMS( D1toD1Mem , Exp_Db , Math::Exp )
  200. DEF2_WMS( D1toD1Mem , Log_Db , Math::Log )
  201. DEF2_WMS( D2toD1Mem , Pow_Db , Math::Pow )
  202. DEF2_WMS( D1toD1Mem , Sqrt_Db , ::sqrt )
  203. DEF2_WMS( F1toF1Mem , Sqrt_Flt , ::sqrtf )
  204. DEF2_WMS( D1toD1Mem , Abs_Db , AsmJsMath::Abs<double> )
  205. DEF2_WMS( F1toF1Mem , Abs_Flt , AsmJsMath::Abs<float> )
  206. DEF2_WMS( D2toD1Mem , Atan2_Db , Math::Atan2 )
  207. DEF2_WMS( D2toD1Mem , Min_Db , AsmJsMath::Min<double> )
  208. DEF2_WMS( F2toF1Mem , Min_Flt , AsmJsMath::Min<float> )
  209. DEF2_WMS( D2toD1Mem , Max_Db , AsmJsMath::Max<double> )
  210. DEF2_WMS( F2toF1Mem , Max_Flt , AsmJsMath::Max<float> )
  211. DEF2_WMS( F1toF1Mem , Fround_Flt , (float) )
  212. DEF2_WMS( D1toF1Mem , Fround_Db , (float) )
  213. DEF2_WMS( I1toF1Mem , Fround_Int , (float) )
  214. EXDEF2_WMS( F2toF1Mem , Copysign_Flt , Wasm::WasmMath::Copysign<float> )
  215. EXDEF2_WMS( D2toD1Mem , Copysign_Db , Wasm::WasmMath::Copysign<double> )
  216. EXDEF2_WMS( F1toF1Mem , Trunc_Flt , Wasm::WasmMath::Trunc<float> )
  217. EXDEF2_WMS( F1toF1Mem , Nearest_Flt , Wasm::WasmMath::Nearest<float> )
  218. EXDEF2_WMS( D1toD1Mem , Trunc_Db , Wasm::WasmMath::Trunc<double> )
  219. EXDEF2_WMS( D1toD1Mem , Nearest_Db , Wasm::WasmMath::Nearest<double> )
  220. EXDEF2_WMS( VtoI1Mem , CurrentMemory_Int, OP_GetMemorySize )
  221. EXDEF2_WMS( I1toI1Mem , GrowMemory , OP_GrowMemory )
  222. EXDEF2 ( EMPTYASMJS , Unreachable_Void , OP_Unreachable )
  223. EXDEF2_WMS( D1toI1Ctx , Conv_Check_DTI , JavascriptConversion::F64TOI32 )
  224. EXDEF2_WMS( F1toI1Ctx , Conv_Check_FTI , JavascriptConversion::F32TOI32 )
  225. EXDEF2_WMS( D1toI1Ctx , Conv_Check_DTU , JavascriptConversion::F64TOU32 )
  226. EXDEF2_WMS( F1toI1Ctx , Conv_Check_FTU , JavascriptConversion::F32TOU32 )
  227. EXDEF2_WMS( F1toL1Ctx , Conv_Check_FTL , JavascriptConversion::F32TOI64 )
  228. EXDEF2_WMS( F1toL1Ctx , Conv_Check_FTUL , JavascriptConversion::F32TOU64 )
  229. EXDEF2_WMS( D1toL1Ctx , Conv_Check_DTL , JavascriptConversion::F64TOI64 )
  230. EXDEF2_WMS( D1toL1Ctx , Conv_Check_DTUL , JavascriptConversion::F64TOU64 )
  231. DEF2_WMS( IP_TARG_ASM , AsmJsLoopBodyStart, OP_ProfiledLoopBodyStart )
  232. //unary ops
  233. EXDEF2_WMS( SIMD_F4_1toF4_1 , Simd128_Ld_F4 , (AsmJsSIMDValue) )
  234. DEF2_WMS( SIMD_I4_1toI4_1 , Simd128_Ld_I4 , (AsmJsSIMDValue) )
  235. EXDEF2_WMS( SIMD_B4_1toB4_1 , Simd128_Ld_B4 , (AsmJsSIMDValue) )
  236. EXDEF2_WMS( SIMD_B8_1toB8_1 , Simd128_Ld_B8 , (AsmJsSIMDValue) )
  237. EXDEF2_WMS( SIMD_B16_1toB16_1, Simd128_Ld_B16 , (AsmJsSIMDValue) )
  238. EXDEF2_WMS( SIMD_F4toF4_1 , Simd128_FloatsToF4 , SIMDFloat32x4Operation::OpFloat32x4 )
  239. DEF2_WMS( SIMD_I4toI4_1 , Simd128_IntsToI4 , SIMDInt32x4Operation::OpInt32x4 )
  240. EXDEF4_WMS( TEMPLATE_ASMJS , Simd128_LdSlot_F4 , OP_LdSlotPrimitive , ElementSlot, AsmJsSIMDValue)
  241. DEF4_WMS( TEMPLATE_ASMJS , Simd128_LdSlot_I4 , OP_LdSlotPrimitive , ElementSlot, AsmJsSIMDValue)
  242. EXDEF4_WMS(TEMPLATE_ASMJS , Simd128_StSlot_F4 , OP_StSlotPrimitive , ElementSlot, AsmJsSIMDValue)
  243. DEF4_WMS(TEMPLATE_ASMJS , Simd128_StSlot_I4 , OP_StSlotPrimitive , ElementSlot, AsmJsSIMDValue)
  244. EXDEF2_WMS( SIMD_F4_1toF4_1 , Simd128_Return_F4 , (AsmJsSIMDValue) )
  245. DEF2_WMS( SIMD_I4_1toI4_1 , Simd128_Return_I4 , (AsmJsSIMDValue) )
  246. EXDEF2_WMS( SIMD_F1toF4_1 , Simd128_Splat_F4 ,Js::SIMDFloat32x4Operation::OpSplat )
  247. DEF2_WMS( SIMD_I1toI4_1 , Simd128_Splat_I4 ,Js::SIMDInt32x4Operation::OpSplat )
  248. //EXDEF2_WMS( SIMD_D2_1toF4_1 , Simd128_FromFloat64x2_F4 ,SIMDFloat32x4Operation::OpFromFloat64x2 )
  249. //EXDEF2_WMS( SIMD_D2_1toF4_1 , Simd128_FromFloat64x2Bits_F4,Js::FromSimdBits )
  250. EXDEF2_WMS( SIMD_I4_1toF4_1 , Simd128_FromInt32x4_F4 ,SIMDFloat32x4Operation::OpFromInt32x4 )
  251. EXDEF2_WMS( SIMD_I4_1toF4_1 , Simd128_FromInt32x4Bits_F4 ,Js::SIMDUtils::FromSimdBits )
  252. DEF3_WMS( CUSTOM_ASMJS , Simd128_FromFloat32x4_I4 , OP_SimdInt32x4FromFloat32x4 , Int32x4_1Float32x4_1 )
  253. //DEF2_WMS( SIMD_D2_1toI4_1 , Simd128_FromFloat64x2_I4 ,SIMDInt32x4Operation::OpFromFloat64x2 )
  254. //DEF2_WMS( SIMD_D2_1toI4_1 , Simd128_FromFloat64x2Bits_I4,Js::FromSimdBits )
  255. DEF2_WMS( SIMD_F4_1toI4_1 , Simd128_FromFloat32x4Bits_I4,Js::SIMDUtils::FromSimdBits )
  256. EXDEF2_WMS( SIMD_F4_1toF4_1 , Simd128_Abs_F4 ,SIMDFloat32x4Operation::OpAbs )
  257. EXDEF2_WMS( SIMD_F4_1toF4_1 , Simd128_Neg_F4 ,SIMDFloat32x4Operation::OpNeg )
  258. DEF2_WMS( SIMD_I4_1toI4_1 , Simd128_Neg_I4 ,SIMDInt32x4Operation::OpNeg )
  259. EXDEF2_WMS( SIMD_F4_1toF4_1 , Simd128_Rcp_F4 ,SIMDFloat32x4Operation::OpReciprocal )
  260. EXDEF2_WMS( SIMD_F4_1toF4_1 , Simd128_RcpSqrt_F4 ,SIMDFloat32x4Operation::OpReciprocalSqrt )
  261. EXDEF2_WMS( SIMD_F4_1toF4_1 , Simd128_Sqrt_F4 ,SIMDFloat32x4Operation::OpSqrt )
  262. DEF2_WMS( SIMD_I4_1toI4_1 , Simd128_Not_I4 , Js::SIMDInt32x4Operation::OpNot )
  263. EXDEF2_WMS( SIMD_B4_1toB4_1 , Simd128_Not_B4 , Js::SIMDInt32x4Operation::OpNot )
  264. EXDEF2_WMS( SIMD_B8_1toB8_1 , Simd128_Not_B8 , Js::SIMDInt32x4Operation::OpNot )
  265. EXDEF2_WMS( SIMD_B16_1toB16_1, Simd128_Not_B16 , Js::SIMDInt32x4Operation::OpNot )
  266. EXDEF2_WMS( SIMD_B4_1toI1, Simd128_AllTrue_B4 , Js::SIMDBool32x4Operation::OpAllTrue )
  267. EXDEF2_WMS( SIMD_B8_1toI1, Simd128_AllTrue_B8 , Js::SIMDBool32x4Operation::OpAllTrue )
  268. EXDEF2_WMS( SIMD_B16_1toI1, Simd128_AllTrue_B16 , Js::SIMDBool32x4Operation::OpAllTrue )
  269. EXDEF2_WMS( SIMD_B4_1toI1, Simd128_AnyTrue_B4 , Js::SIMDBool32x4Operation::OpAnyTrue )
  270. EXDEF2_WMS( SIMD_B8_1toI1, Simd128_AnyTrue_B8 , Js::SIMDBool32x4Operation::OpAnyTrue )
  271. EXDEF2_WMS( SIMD_B16_1toI1, Simd128_AnyTrue_B16 , Js::SIMDBool32x4Operation::OpAnyTrue )
  272. DEF2_WMS(SIMD_I4_1I1toI4_1 , Simd128_ShLtByScalar_I4 , Js::SIMDInt32x4Operation::OpShiftLeftByScalar)
  273. DEF2_WMS(SIMD_I4_1I1toI4_1 , Simd128_ShRtByScalar_I4 , Js::SIMDInt32x4Operation::OpShiftRightByScalar)
  274. // binary ops
  275. EXDEF2_WMS( SIMD_F4_2toF4_1 , Simd128_Add_F4 , Js::SIMDFloat32x4Operation::OpAdd )
  276. DEF2_WMS( SIMD_I4_2toI4_1 , Simd128_Add_I4 , Js::SIMDInt32x4Operation::OpAdd )
  277. EXDEF2_WMS( SIMD_F4_2toF4_1 , Simd128_Sub_F4 , Js::SIMDFloat32x4Operation::OpSub )
  278. DEF2_WMS( SIMD_I4_2toI4_1 , Simd128_Sub_I4 , Js::SIMDInt32x4Operation::OpSub )
  279. EXDEF2_WMS( SIMD_F4_2toF4_1 , Simd128_Mul_F4 , Js::SIMDFloat32x4Operation::OpMul )
  280. DEF2_WMS( SIMD_I4_2toI4_1 , Simd128_Mul_I4 , Js::SIMDInt32x4Operation::OpMul )
  281. EXDEF2_WMS( SIMD_F4_2toF4_1 , Simd128_Div_F4 , Js::SIMDFloat32x4Operation::OpDiv )
  282. EXDEF2_WMS( SIMD_F4_2toF4_1 , Simd128_Min_F4 , Js::SIMDFloat32x4Operation::OpMin )
  283. EXDEF2_WMS( SIMD_F4_2toF4_1 , Simd128_Max_F4 , Js::SIMDFloat32x4Operation::OpMax )
  284. EXDEF2_WMS( SIMD_F4_2toB4_1 , Simd128_Lt_F4 , Js::SIMDFloat32x4Operation::OpLessThan )
  285. DEF2_WMS( SIMD_I4_2toB4_1 , Simd128_Lt_I4 , Js::SIMDInt32x4Operation::OpLessThan )
  286. EXDEF2_WMS( SIMD_F4_2toB4_1 , Simd128_LtEq_F4 , Js::SIMDFloat32x4Operation::OpLessThanOrEqual)
  287. EXDEF2_WMS( SIMD_F4_2toB4_1 , Simd128_Eq_F4 , Js::SIMDFloat32x4Operation::OpEqual )
  288. DEF2_WMS( SIMD_I4_2toB4_1 , Simd128_Eq_I4 , Js::SIMDInt32x4Operation::OpEqual )
  289. EXDEF2_WMS( SIMD_F4_2toB4_1 , Simd128_Neq_F4 , Js::SIMDFloat32x4Operation::OpNotEqual )
  290. EXDEF2_WMS( SIMD_F4_2toB4_1 , Simd128_GtEq_F4 , Js::SIMDFloat32x4Operation::OpGreaterThanOrEqual)
  291. EXDEF2_WMS( SIMD_F4_2toB4_1 , Simd128_Gt_F4 , Js::SIMDFloat32x4Operation::OpGreaterThan )
  292. DEF2_WMS( SIMD_I4_2toB4_1 , Simd128_Gt_I4 , Js::SIMDInt32x4Operation::OpGreaterThan )
  293. DEF2_WMS( SIMD_I4_2toI4_1 , Simd128_And_I4 , Js::SIMDInt32x4Operation::OpAnd )
  294. EXDEF2_WMS( SIMD_B4_2toB4_1, Simd128_And_B4 , Js::SIMDInt32x4Operation::OpAnd )
  295. EXDEF2_WMS( SIMD_B8_2toB8_1, Simd128_And_B8 , Js::SIMDInt32x4Operation::OpAnd )
  296. EXDEF2_WMS( SIMD_B16_2toB16_1, Simd128_And_B16 , Js::SIMDInt32x4Operation::OpAnd )
  297. DEF2_WMS( SIMD_I4_2toI4_1 , Simd128_Or_I4 , Js::SIMDInt32x4Operation::OpOr )
  298. EXDEF2_WMS( SIMD_B4_2toB4_1 , Simd128_Or_B4 , Js::SIMDInt32x4Operation::OpOr )
  299. EXDEF2_WMS( SIMD_B8_2toB8_1 , Simd128_Or_B8 , Js::SIMDInt32x4Operation::OpOr )
  300. EXDEF2_WMS( SIMD_B16_2toB16_1 , Simd128_Or_B16 , Js::SIMDInt32x4Operation::OpOr )
  301. DEF2_WMS( SIMD_I4_2toI4_1 , Simd128_Xor_I4 , Js::SIMDInt32x4Operation::OpXor )
  302. EXDEF2_WMS( SIMD_B4_2toB4_1, Simd128_Xor_B4 , Js::SIMDInt32x4Operation::OpXor )
  303. EXDEF2_WMS( SIMD_B8_2toB8_1, Simd128_Xor_B8 , Js::SIMDInt32x4Operation::OpXor )
  304. EXDEF2_WMS( SIMD_B16_2toB16_1, Simd128_Xor_B16 , Js::SIMDInt32x4Operation::OpXor )
  305. // ternary ops
  306. EXDEF2_WMS( SIMD_F4_3toF4_1 , Simd128_Clamp_F4 , Js::SIMDFloat32x4Operation::OpClamp )
  307. EXDEF2_WMS( SIMD_B4_1F4_2toF4_1 , Simd128_Select_F4 , Js::SIMDFloat32x4Operation::OpSelect )
  308. DEF2_WMS( SIMD_B4_1I4_2toI4_1 , Simd128_Select_I4 , Js::SIMDInt32x4Operation::OpSelect )
  309. EXDEF2_WMS( SIMD_B8_1I8_2toI8_1 , Simd128_Select_I8 , Js::SIMDInt32x4Operation::OpSelect )
  310. EXDEF2_WMS( SIMD_B16_1I16_2toI16_1 , Simd128_Select_I16 , Js::SIMDInt32x4Operation::OpSelect )
  311. EXDEF2_WMS( SIMD_B4_1U4_2toU4_1 , Simd128_Select_U4 , Js::SIMDInt32x4Operation::OpSelect )
  312. EXDEF2_WMS( SIMD_B8_1U8_2toU8_1 , Simd128_Select_U8 , Js::SIMDInt32x4Operation::OpSelect )
  313. EXDEF2_WMS( SIMD_B16_1U16_2toU16_1 , Simd128_Select_U16 , Js::SIMDInt32x4Operation::OpSelect )
  314. // args out, copy value to outParams
  315. EXDEF2_WMS ( SIMD_F4_1toR1Mem , Simd128_I_ArgOut_F4 , OP_I_SetOutAsmSimd )
  316. DEF2_WMS ( SIMD_I4_1toR1Mem , Simd128_I_ArgOut_I4 , OP_I_SetOutAsmSimd )
  317. EXDEF2_WMS ( SIMD_F4_1toF4_1 , Simd128_I_Conv_VTF4 , (AsmJsSIMDValue) )
  318. DEF2_WMS ( SIMD_I4_1toI4_1 , Simd128_I_Conv_VTI4 , (AsmJsSIMDValue) )
  319. EXDEF2_WMS ( SIMD_F4_1I4toF4_1 , Simd128_Swizzle_F4 , SIMDUtils::SIMD128InnerShuffle )
  320. EXDEF2_WMS ( SIMD_F4_2I4toF4_1 , Simd128_Shuffle_F4 , SIMDUtils::SIMD128InnerShuffle )
  321. DEF2_WMS ( SIMD_I4_1I4toI4_1 , Simd128_Swizzle_I4 , SIMDUtils::SIMD128InnerShuffle )
  322. DEF2_WMS ( SIMD_I4_2I4toI4_1 , Simd128_Shuffle_I4 , SIMDUtils::SIMD128InnerShuffle )
  323. DEF2_WMS ( SIMD_I8_1toI8_1 , Simd128_Ld_I8 , (AsmJsSIMDValue) )
  324. DEF2_WMS ( SIMD_U4_1toU4_1 , Simd128_Ld_U4 , (AsmJsSIMDValue) )
  325. DEF2_WMS ( SIMD_U8_1toU8_1 , Simd128_Ld_U8 , (AsmJsSIMDValue) )
  326. DEF2_WMS ( SIMD_U16_1toU16_1 , Simd128_Ld_U16 , (AsmJsSIMDValue) )
  327. DEF4_WMS ( TEMPLATE_ASMJS , Simd128_LdSlot_I8 , OP_LdSlotPrimitive , ElementSlot, AsmJsSIMDValue)
  328. DEF4_WMS ( TEMPLATE_ASMJS , Simd128_LdSlot_I16 , OP_LdSlotPrimitive , ElementSlot, AsmJsSIMDValue)
  329. // Extended opcodes
  330. EXDEF4_WMS ( TEMPLATE_ASMJS , Simd128_LdSlot_U4 , OP_LdSlotPrimitive , ElementSlot, AsmJsSIMDValue)
  331. EXDEF4_WMS ( TEMPLATE_ASMJS , Simd128_LdSlot_U8 , OP_LdSlotPrimitive , ElementSlot, AsmJsSIMDValue)
  332. EXDEF4_WMS ( TEMPLATE_ASMJS , Simd128_LdSlot_U16 , OP_LdSlotPrimitive , ElementSlot, AsmJsSIMDValue)
  333. EXDEF4_WMS ( TEMPLATE_ASMJS , Simd128_LdSlot_B4 , OP_LdSlotPrimitive , ElementSlot, AsmJsSIMDValue)
  334. EXDEF4_WMS ( TEMPLATE_ASMJS , Simd128_LdSlot_B8 , OP_LdSlotPrimitive , ElementSlot, AsmJsSIMDValue)
  335. EXDEF4_WMS ( TEMPLATE_ASMJS , Simd128_LdSlot_B16 , OP_LdSlotPrimitive , ElementSlot, AsmJsSIMDValue)
  336. EXDEF4_WMS ( TEMPLATE_ASMJS , Simd128_StSlot_I8 , OP_StSlotPrimitive , ElementSlot, AsmJsSIMDValue)
  337. EXDEF4_WMS(TEMPLATE_ASMJS , Simd128_StSlot_I16 , OP_StSlotPrimitive , ElementSlot, AsmJsSIMDValue)
  338. EXDEF4_WMS ( TEMPLATE_ASMJS , Simd128_StSlot_U4 , OP_StSlotPrimitive , ElementSlot, AsmJsSIMDValue)
  339. EXDEF4_WMS ( TEMPLATE_ASMJS , Simd128_StSlot_U8 , OP_StSlotPrimitive , ElementSlot, AsmJsSIMDValue)
  340. EXDEF4_WMS ( TEMPLATE_ASMJS , Simd128_StSlot_U16 , OP_StSlotPrimitive , ElementSlot, AsmJsSIMDValue)
  341. EXDEF4_WMS ( TEMPLATE_ASMJS , Simd128_StSlot_B4 , OP_StSlotPrimitive , ElementSlot, AsmJsSIMDValue)
  342. EXDEF4_WMS ( TEMPLATE_ASMJS , Simd128_StSlot_B8 , OP_StSlotPrimitive , ElementSlot, AsmJsSIMDValue)
  343. EXDEF4_WMS ( TEMPLATE_ASMJS , Simd128_StSlot_B16 , OP_StSlotPrimitive , ElementSlot, AsmJsSIMDValue)
  344. EXDEF3_WMS ( CUSTOM_ASMJS , Simd128_IntsToB4 , OP_SimdBool32x4 , Bool32x4_1Int4)
  345. EXDEF3_WMS ( CUSTOM_ASMJS , Simd128_IntsToB8 , OP_SimdBool16x8 , Bool16x8_1Int8)
  346. EXDEF3_WMS ( CUSTOM_ASMJS , Simd128_IntsToB16 , OP_SimdBool8x16 , Bool8x16_1Int16)
  347. EXDEF2_WMS ( SIMD_I1toB4_1 , Simd128_Splat_B4 , Js::SIMDInt32x4Operation::OpSplat )
  348. EXDEF2_WMS ( SIMD_I1toB8_1 , Simd128_Splat_B8 , Js::SIMDInt32x4Operation::OpSplat )
  349. EXDEF2_WMS ( SIMD_I1toB16_1 , Simd128_Splat_B16 , Js::SIMDInt32x4Operation::OpSplat )
  350. EXDEF2_WMS ( SIMD_I16_1toI16_1 , Simd128_Ld_I16 , (AsmJsSIMDValue) )
  351. EXDEF2_WMS ( SIMD_I1toI16_1 , Simd128_Splat_I16 , Js::SIMDInt8x16Operation::OpSplat )
  352. EXDEF2_WMS ( SIMD_I16_2toI16_1 , Simd128_Add_I16 , Js::SIMDInt8x16Operation::OpAdd )
  353. EXDEF2_WMS ( SIMD_I16_2toI16_1 , Simd128_Sub_I16 , Js::SIMDInt8x16Operation::OpSub )
  354. EXDEF2_WMS ( SIMD_I16_2toI16_1 , Simd128_Mul_I16 , Js::SIMDInt8x16Operation::OpMul )
  355. EXDEF2_WMS ( SIMD_I16_1toI16_1 , Simd128_Neg_I16 , SIMDInt8x16Operation::OpNeg )
  356. EXDEF2_WMS ( SIMD_I16_1toI16_1 , Simd128_Not_I16 , Js::SIMDInt32x4Operation::OpNot )
  357. EXDEF2_WMS ( SIMD_I16_2toB16_1 , Simd128_Lt_I16 , Js::SIMDInt8x16Operation::OpLessThan )
  358. EXDEF2_WMS ( SIMD_I16_2toB16_1 , Simd128_Eq_I16 , Js::SIMDInt8x16Operation::OpEqual )
  359. EXDEF2_WMS ( SIMD_I16_2toB16_1 , Simd128_Gt_I16 , Js::SIMDInt8x16Operation::OpGreaterThan )
  360. EXDEF2_WMS ( SIMD_I16_2toI16_1 , Simd128_And_I16 , Js::SIMDInt32x4Operation::OpAnd )
  361. EXDEF2_WMS ( SIMD_I16_2toI16_1 , Simd128_Or_I16 , Js::SIMDInt32x4Operation::OpOr )
  362. EXDEF2_WMS ( SIMD_I16_2toI16_1 , Simd128_Xor_I16 , Js::SIMDInt32x4Operation::OpXor )
  363. EXDEF2_WMS ( SIMD_I16_1toI16_1 , Simd128_Return_I16 , (AsmJsSIMDValue) )
  364. EXDEF2_WMS ( SIMD_I16_1toR1Mem , Simd128_I_ArgOut_I16 , OP_I_SetOutAsmSimd )
  365. EXDEF2_WMS ( SIMD_I16_1toI16_1 , Simd128_I_Conv_VTI16 , (AsmJsSIMDValue) )
  366. //Lane Access
  367. EXDEF2_WMS ( SIMD_I16_1I1toI1 , Simd128_ExtractLane_I16 , SIMDUtils::SIMD128InnerExtractLaneI16 )
  368. EXDEF2_WMS ( SIMD_I16_1I2toI16_1 , Simd128_ReplaceLane_I16 , SIMDUtils::SIMD128InnerReplaceLaneI16 )
  369. EXDEF2_WMS ( SIMD_I4_1I1toI1 , Simd128_ExtractLane_I4 , SIMDUtils::SIMD128InnerExtractLaneI4 )
  370. EXDEF2_WMS ( SIMD_F4_1I1toF1 , Simd128_ExtractLane_F4 , SIMDUtils::SIMD128InnerExtractLaneF4 )
  371. EXDEF2_WMS ( SIMD_I8_1I1toI1 , Simd128_ExtractLane_I8 , SIMDUtils::SIMD128InnerExtractLaneI8 )
  372. EXDEF2_WMS ( SIMD_U4_1I1toI1 , Simd128_ExtractLane_U4 , SIMDUtils::SIMD128InnerExtractLaneI4 )
  373. EXDEF2_WMS ( SIMD_U8_1I1toI1 , Simd128_ExtractLane_U8 , SIMDUtils::SIMD128InnerExtractLaneI8 )
  374. EXDEF2_WMS ( SIMD_U16_1I1toI1 , Simd128_ExtractLane_U16 , SIMDUtils::SIMD128InnerExtractLaneI16 )
  375. EXDEF2_WMS ( SIMD_B4_1I1toI1 , Simd128_ExtractLane_B4 , SIMDUtils::SIMD128InnerExtractLaneI4 )
  376. EXDEF2_WMS ( SIMD_B8_1I1toI1 , Simd128_ExtractLane_B8 , SIMDUtils::SIMD128InnerExtractLaneI8 )
  377. EXDEF2_WMS ( SIMD_B16_1I1toI1 , Simd128_ExtractLane_B16 , SIMDUtils::SIMD128InnerExtractLaneI16 )
  378. EXDEF2_WMS ( SIMD_I4_1I2toI4_1 , Simd128_ReplaceLane_I4 , SIMDUtils::SIMD128InnerReplaceLaneI4 )
  379. EXDEF2_WMS ( SIMD_F4_1I1F1toF4_1 , Simd128_ReplaceLane_F4 , SIMDUtils::SIMD128InnerReplaceLaneF4 )
  380. EXDEF2_WMS ( SIMD_I8_1I2toI8_1 , Simd128_ReplaceLane_I8 , SIMDUtils::SIMD128InnerReplaceLaneI8 )
  381. EXDEF2_WMS ( SIMD_U4_1I2toU4_1 , Simd128_ReplaceLane_U4 , SIMDUtils::SIMD128InnerReplaceLaneI4 )
  382. EXDEF2_WMS ( SIMD_U8_1I2toU8_1 , Simd128_ReplaceLane_U8 , SIMDUtils::SIMD128InnerReplaceLaneI8 )
  383. EXDEF2_WMS ( SIMD_U16_1I2toU16_1 , Simd128_ReplaceLane_U16, SIMDUtils::SIMD128InnerReplaceLaneI16 )
  384. EXDEF2_WMS ( SIMD_B4_1I2toB4_1 , Simd128_ReplaceLane_B4 , SIMDUtils::SIMD128InnerReplaceLaneI4 )
  385. EXDEF2_WMS ( SIMD_B8_1I2toB8_1 , Simd128_ReplaceLane_B8 , SIMDUtils::SIMD128InnerReplaceLaneI8 )
  386. EXDEF2_WMS ( SIMD_B16_1I2toB16_1 , Simd128_ReplaceLane_B16, SIMDUtils::SIMD128InnerReplaceLaneI16 )
  387. EXDEF3_WMS ( CUSTOM_ASMJS , Simd128_LdArr_F4 , OP_SimdLdArrGeneric , AsmSimdTypedArr )
  388. EXDEF3_WMS ( CUSTOM_ASMJS , Simd128_LdArr_I4 , OP_SimdLdArrGeneric , AsmSimdTypedArr )
  389. EXDEF3_WMS ( CUSTOM_ASMJS , Simd128_StArr_F4 , OP_SimdStArrGeneric , AsmSimdTypedArr )
  390. EXDEF3_WMS ( CUSTOM_ASMJS , Simd128_StArr_I4 , OP_SimdStArrGeneric , AsmSimdTypedArr )
  391. EXDEF3_WMS ( CUSTOM_ASMJS , Simd128_LdArrConst_F4 , OP_SimdLdArrConstIndex , AsmSimdTypedArr )
  392. EXDEF3_WMS ( CUSTOM_ASMJS , Simd128_LdArrConst_I4 , OP_SimdLdArrConstIndex , AsmSimdTypedArr )
  393. EXDEF3_WMS ( CUSTOM_ASMJS , Simd128_StArrConst_F4 , OP_SimdStArrConstIndex , AsmSimdTypedArr )
  394. EXDEF3_WMS ( CUSTOM_ASMJS , Simd128_StArrConst_I4 , OP_SimdStArrConstIndex , AsmSimdTypedArr )
  395. EXDEF2_WMS ( SIMD_U4_1toF4_1 , Simd128_FromUint32x4_F4 , Js::SIMDFloat32x4Operation::OpFromUint32x4 )
  396. EXDEF2_WMS ( SIMD_I8_1toF4_1 , Simd128_FromInt16x8Bits_F4 , Js::SIMDUtils::FromSimdBits )
  397. EXDEF2_WMS ( SIMD_I16_1toF4_1 , Simd128_FromInt8x16Bits_F4 , Js::SIMDUtils::FromSimdBits )
  398. EXDEF2_WMS ( SIMD_U4_1toF4_1 , Simd128_FromUint32x4Bits_F4 , Js::SIMDUtils::FromSimdBits )
  399. EXDEF2_WMS ( SIMD_U8_1toF4_1 , Simd128_FromUint16x8Bits_F4 , Js::SIMDUtils::FromSimdBits )
  400. EXDEF2_WMS ( SIMD_U16_1toF4_1 , Simd128_FromUint8x16Bits_F4 , Js::SIMDUtils::FromSimdBits )
  401. EXDEF2_WMS ( SIMD_I8_1toI4_1 , Simd128_FromInt16x8Bits_I4 , Js::SIMDUtils::FromSimdBits )
  402. EXDEF2_WMS ( SIMD_I16_1toI4_1 , Simd128_FromInt8x16Bits_I4 , Js::SIMDUtils::FromSimdBits )
  403. EXDEF2_WMS ( SIMD_U4_1toI4_1 , Simd128_FromUint32x4Bits_I4 , Js::SIMDUtils::FromSimdBits )
  404. EXDEF2_WMS ( SIMD_U8_1toI4_1 , Simd128_FromUint16x8Bits_I4 , Js::SIMDUtils::FromSimdBits )
  405. EXDEF2_WMS ( SIMD_U16_1toI4_1 , Simd128_FromUint8x16Bits_I4 , Js::SIMDUtils::FromSimdBits )
  406. EXDEF3_WMS ( CUSTOM_ASMJS , Simd128_IntsToI8 , OP_SimdInt16x8 , Int16x8_1Int8 )
  407. EXDEF3_WMS ( CUSTOM_ASMJS , Simd128_IntsToI16 , OP_SimdInt8x16 , Int8x16_1Int16)
  408. EXDEF2_WMS ( SIMD_I4toU4_1 , Simd128_IntsToU4 , SIMDUint32x4Operation::OpUint32x4 )
  409. EXDEF3_WMS ( CUSTOM_ASMJS , Simd128_IntsToU8 , OP_SimdUint16x8 , Uint16x8_1Int8)
  410. EXDEF3_WMS ( CUSTOM_ASMJS , Simd128_IntsToU16 , OP_SimdUint8x16 , Uint8x16_1Int16)
  411. EXDEF2_WMS ( SIMD_I8_1toR1Mem , Simd128_I_ArgOut_I8 , OP_I_SetOutAsmSimd )
  412. EXDEF2_WMS ( SIMD_U4_1toR1Mem , Simd128_I_ArgOut_U4 , OP_I_SetOutAsmSimd )
  413. EXDEF2_WMS ( SIMD_U8_1toR1Mem , Simd128_I_ArgOut_U8 , OP_I_SetOutAsmSimd )
  414. EXDEF2_WMS ( SIMD_U16_1toR1Mem , Simd128_I_ArgOut_U16 , OP_I_SetOutAsmSimd )
  415. EXDEF2_WMS ( SIMD_B4_1toR1Mem , Simd128_I_ArgOut_B4 , OP_I_SetOutAsmSimd )
  416. EXDEF2_WMS ( SIMD_B8_1toR1Mem , Simd128_I_ArgOut_B8 , OP_I_SetOutAsmSimd )
  417. EXDEF2_WMS ( SIMD_B16_1toR1Mem , Simd128_I_ArgOut_B16 , OP_I_SetOutAsmSimd )
  418. EXDEF2_WMS ( SIMD_I8_1toI8_1 , Simd128_I_Conv_VTI8 , (AsmJsSIMDValue) )
  419. EXDEF2_WMS ( SIMD_U4_1toU4_1 , Simd128_I_Conv_VTU4 , (AsmJsSIMDValue) )
  420. EXDEF2_WMS ( SIMD_U8_1toU8_1 , Simd128_I_Conv_VTU8 , (AsmJsSIMDValue) )
  421. EXDEF2_WMS ( SIMD_U16_1toU16_1 , Simd128_I_Conv_VTU16 , (AsmJsSIMDValue) )
  422. EXDEF2_WMS ( SIMD_B4_1toB4_1 , Simd128_I_Conv_VTB4 , (AsmJsSIMDValue) )
  423. EXDEF2_WMS ( SIMD_B8_1toB8_1 , Simd128_I_Conv_VTB8 , (AsmJsSIMDValue) )
  424. EXDEF2_WMS ( SIMD_B16_1toB16_1 , Simd128_I_Conv_VTB16 , (AsmJsSIMDValue) )
  425. EXDEF2_WMS ( SIMD_I8_1toI8_1 , Simd128_Return_I8 , (AsmJsSIMDValue) )
  426. EXDEF2_WMS ( SIMD_U4_1toU4_1 , Simd128_Return_U4 , (AsmJsSIMDValue) )
  427. EXDEF2_WMS ( SIMD_U8_1toU8_1 , Simd128_Return_U8 , (AsmJsSIMDValue) )
  428. EXDEF2_WMS ( SIMD_U16_1toU16_1 , Simd128_Return_U16 , (AsmJsSIMDValue) )
  429. EXDEF2_WMS ( SIMD_B4_1toB4_1 , Simd128_Return_B4 , (AsmJsSIMDValue) )
  430. EXDEF2_WMS ( SIMD_B8_1toB8_1 , Simd128_Return_B8 , (AsmJsSIMDValue) )
  431. EXDEF2_WMS ( SIMD_B16_1toB16_1 , Simd128_Return_B16 , (AsmJsSIMDValue) )
  432. EXDEF2_WMS ( SIMD_I8_1I8toI8_1 , Simd128_Swizzle_I8 , SIMDUtils::SIMD128InnerShuffle )
  433. EXDEF2_WMS ( SIMD_I8_2I8toI8_1 , Simd128_Shuffle_I8 , SIMDUtils::SIMD128InnerShuffle )
  434. EXDEF2_WMS ( SIMD_I16_1I16toI16_1 , Simd128_Swizzle_I16 , SIMDUtils::SIMD128InnerShuffle )
  435. EXDEF2_WMS ( SIMD_I16_2I16toI16_1 , Simd128_Shuffle_I16 , SIMDUtils::SIMD128InnerShuffle )
  436. EXDEF2_WMS ( SIMD_U4_1I4toU4_1 , Simd128_Swizzle_U4 , SIMDUtils::SIMD128InnerShuffle )
  437. EXDEF2_WMS ( SIMD_U4_2I4toU4_1 , Simd128_Shuffle_U4 , SIMDUtils::SIMD128InnerShuffle )
  438. EXDEF2_WMS ( SIMD_U8_1I8toU8_1 , Simd128_Swizzle_U8 , SIMDUtils::SIMD128InnerShuffle )
  439. EXDEF2_WMS ( SIMD_U8_2I8toU8_1 , Simd128_Shuffle_U8 , SIMDUtils::SIMD128InnerShuffle )
  440. EXDEF2_WMS ( SIMD_U16_1I16toU16_1 , Simd128_Swizzle_U16 , SIMDUtils::SIMD128InnerShuffle )
  441. EXDEF2_WMS ( SIMD_U16_2I16toU16_1 , Simd128_Shuffle_U16 , SIMDUtils::SIMD128InnerShuffle )
  442. EXDEF2_WMS( SIMD_I1toI8_1 , Simd128_Splat_I8 ,Js::SIMDInt16x8Operation::OpSplat )
  443. EXDEF2_WMS( SIMD_I1toU4_1 , Simd128_Splat_U4 ,Js::SIMDUint32x4Operation::OpSplat )
  444. EXDEF2_WMS( SIMD_I1toU8_1 , Simd128_Splat_U8 ,Js::SIMDInt16x8Operation::OpSplat )
  445. EXDEF2_WMS( SIMD_I1toU16_1 , Simd128_Splat_U16 ,Js::SIMDInt8x16Operation::OpSplat )
  446. EXDEF2_WMS( SIMD_I8_2toI8_1 , Simd128_And_I8 , Js::SIMDInt16x8Operation::OpAnd )
  447. EXDEF2_WMS( SIMD_U4_2toU4_1 , Simd128_And_U4 , Js::SIMDInt32x4Operation::OpAnd )
  448. EXDEF2_WMS( SIMD_U8_2toU8_1 , Simd128_And_U8 , Js::SIMDInt32x4Operation::OpAnd )
  449. EXDEF2_WMS( SIMD_U16_2toU16_1 , Simd128_And_U16 , Js::SIMDInt32x4Operation::OpAnd )
  450. EXDEF2_WMS( SIMD_I8_2toI8_1 , Simd128_Or_I8 , Js::SIMDInt16x8Operation::OpOr )
  451. EXDEF2_WMS( SIMD_U4_2toU4_1 , Simd128_Or_U4 , Js::SIMDInt32x4Operation::OpOr )
  452. EXDEF2_WMS( SIMD_U8_2toU8_1 , Simd128_Or_U8 , Js::SIMDInt32x4Operation::OpOr )
  453. EXDEF2_WMS( SIMD_U16_2toU16_1 , Simd128_Or_U16 , Js::SIMDInt32x4Operation::OpOr )
  454. EXDEF2_WMS( SIMD_I8_2toI8_1 , Simd128_Xor_I8 , Js::SIMDInt16x8Operation::OpXor )
  455. EXDEF2_WMS( SIMD_U4_2toU4_1 , Simd128_Xor_U4 , Js::SIMDInt32x4Operation::OpXor )
  456. EXDEF2_WMS( SIMD_U8_2toU8_1 , Simd128_Xor_U8 , Js::SIMDInt32x4Operation::OpXor )
  457. EXDEF2_WMS( SIMD_U16_2toU16_1 , Simd128_Xor_U16 , Js::SIMDInt32x4Operation::OpXor )
  458. EXDEF2_WMS( SIMD_I8_1toI8_1 , Simd128_Not_I8 , Js::SIMDInt16x8Operation::OpNot )
  459. EXDEF2_WMS( SIMD_U4_1toU4_1 , Simd128_Not_U4 , Js::SIMDInt32x4Operation::OpNot )
  460. EXDEF2_WMS( SIMD_U8_1toU8_1 , Simd128_Not_U8 , Js::SIMDInt32x4Operation::OpNot )
  461. EXDEF2_WMS( SIMD_U16_1toU16_1 , Simd128_Not_U16 , Js::SIMDInt32x4Operation::OpNot )
  462. EXDEF2_WMS( SIMD_I8_2toI8_1 , Simd128_Add_I8 , Js::SIMDInt16x8Operation::OpAdd )
  463. EXDEF2_WMS( SIMD_U4_2toU4_1 , Simd128_Add_U4 , Js::SIMDInt32x4Operation::OpAdd )
  464. EXDEF2_WMS( SIMD_U8_2toU8_1 , Simd128_Add_U8 , Js::SIMDInt16x8Operation::OpAdd )
  465. EXDEF2_WMS( SIMD_U16_2toU16_1 , Simd128_Add_U16 , Js::SIMDInt8x16Operation::OpAdd )
  466. EXDEF2_WMS( SIMD_I8_2toI8_1 , Simd128_Sub_I8 , Js::SIMDInt16x8Operation::OpSub )
  467. EXDEF2_WMS( SIMD_U4_2toU4_1 , Simd128_Sub_U4 , Js::SIMDInt32x4Operation::OpSub )
  468. EXDEF2_WMS( SIMD_U8_2toU8_1 , Simd128_Sub_U8 , Js::SIMDInt16x8Operation::OpSub )
  469. EXDEF2_WMS( SIMD_U16_2toU16_1 , Simd128_Sub_U16 , Js::SIMDInt8x16Operation::OpSub )
  470. EXDEF2_WMS( SIMD_I8_1toI8_1 , Simd128_Neg_I8 , SIMDInt16x8Operation::OpNeg )
  471. EXDEF2_WMS( SIMD_I8_2toI8_1 , Simd128_Mul_I8 , Js::SIMDInt16x8Operation::OpMul )
  472. EXDEF2_WMS( SIMD_U4_2toU4_1 , Simd128_Mul_U4 , Js::SIMDInt32x4Operation::OpMul )
  473. EXDEF2_WMS( SIMD_U8_2toU8_1 , Simd128_Mul_U8 , Js::SIMDInt16x8Operation::OpMul )
  474. EXDEF2_WMS( SIMD_U16_2toU16_1 , Simd128_Mul_U16 , Js::SIMDInt8x16Operation::OpMul )
  475. EXDEF2_WMS(SIMD_I8_1I1toI8_1 , Simd128_ShLtByScalar_I8 , Js::SIMDInt16x8Operation::OpShiftLeftByScalar )
  476. EXDEF2_WMS(SIMD_I8_1I1toI8_1 , Simd128_ShRtByScalar_I8 , Js::SIMDInt16x8Operation::OpShiftRightByScalar )
  477. EXDEF2_WMS(SIMD_I16_1I1toI16_1 , Simd128_ShLtByScalar_I16 , Js::SIMDInt8x16Operation::OpShiftLeftByScalar )
  478. EXDEF2_WMS(SIMD_I16_1I1toI16_1 , Simd128_ShRtByScalar_I16 , Js::SIMDInt8x16Operation::OpShiftRightByScalar )
  479. EXDEF2_WMS(SIMD_U4_1I1toU4_1 , Simd128_ShLtByScalar_U4 , Js::SIMDInt32x4Operation::OpShiftLeftByScalar )
  480. EXDEF2_WMS(SIMD_U4_1I1toU4_1 , Simd128_ShRtByScalar_U4 , Js::SIMDUint32x4Operation::OpShiftRightByScalar )
  481. EXDEF2_WMS(SIMD_U8_1I1toU8_1 , Simd128_ShLtByScalar_U8 , Js::SIMDInt16x8Operation::OpShiftLeftByScalar )
  482. EXDEF2_WMS(SIMD_U8_1I1toU8_1 , Simd128_ShRtByScalar_U8 , Js::SIMDUint16x8Operation::OpShiftRightByScalar )
  483. EXDEF2_WMS(SIMD_U16_1I1toU16_1 , Simd128_ShLtByScalar_U16 , Js::SIMDInt8x16Operation::OpShiftLeftByScalar )
  484. EXDEF2_WMS(SIMD_U16_1I1toU16_1 , Simd128_ShRtByScalar_U16 , Js::SIMDUint8x16Operation::OpShiftRightByScalar )
  485. EXDEF2_WMS( SIMD_I8_2toI8_1 , Simd128_AddSaturate_I8 , Js::SIMDInt16x8Operation::OpAddSaturate )
  486. EXDEF2_WMS( SIMD_I8_2toI8_1 , Simd128_SubSaturate_I8 , Js::SIMDInt16x8Operation::OpSubSaturate )
  487. EXDEF2_WMS( SIMD_I16_2toI16_1 , Simd128_AddSaturate_I16 , Js::SIMDInt8x16Operation::OpAddSaturate )
  488. EXDEF2_WMS( SIMD_I16_2toI16_1 , Simd128_SubSaturate_I16 , Js::SIMDInt8x16Operation::OpSubSaturate )
  489. EXDEF2_WMS( SIMD_U8_2toU8_1 , Simd128_AddSaturate_U8 , Js::SIMDUint16x8Operation::OpAddSaturate )
  490. EXDEF2_WMS( SIMD_U8_2toU8_1 , Simd128_SubSaturate_U8 , Js::SIMDUint16x8Operation::OpSubSaturate )
  491. EXDEF2_WMS( SIMD_U16_2toU16_1 , Simd128_AddSaturate_U16 , Js::SIMDUint8x16Operation::OpAddSaturate )
  492. EXDEF2_WMS( SIMD_U16_2toU16_1 , Simd128_SubSaturate_U16 , Js::SIMDUint8x16Operation::OpSubSaturate )
  493. EXDEF3_WMS( CUSTOM_ASMJS , Simd128_LdArr_I8 , OP_SimdLdArrGeneric , AsmSimdTypedArr )
  494. EXDEF3_WMS( CUSTOM_ASMJS , Simd128_LdArr_I16 , OP_SimdLdArrGeneric , AsmSimdTypedArr )
  495. EXDEF3_WMS( CUSTOM_ASMJS , Simd128_LdArr_U4 , OP_SimdLdArrGeneric , AsmSimdTypedArr )
  496. EXDEF3_WMS( CUSTOM_ASMJS , Simd128_LdArr_U8 , OP_SimdLdArrGeneric , AsmSimdTypedArr )
  497. EXDEF3_WMS( CUSTOM_ASMJS , Simd128_LdArr_U16 , OP_SimdLdArrGeneric , AsmSimdTypedArr )
  498. EXDEF3_WMS( CUSTOM_ASMJS , Simd128_StArr_I8 , OP_SimdStArrGeneric , AsmSimdTypedArr )
  499. EXDEF3_WMS( CUSTOM_ASMJS , Simd128_StArr_I16 , OP_SimdStArrGeneric , AsmSimdTypedArr )
  500. EXDEF3_WMS( CUSTOM_ASMJS , Simd128_StArr_U4 , OP_SimdStArrGeneric , AsmSimdTypedArr )
  501. EXDEF3_WMS( CUSTOM_ASMJS , Simd128_StArr_U8 , OP_SimdStArrGeneric , AsmSimdTypedArr )
  502. EXDEF3_WMS( CUSTOM_ASMJS , Simd128_StArr_U16 , OP_SimdStArrGeneric , AsmSimdTypedArr )
  503. EXDEF2_WMS( SIMD_F4_1toI8_1 , Simd128_FromFloat32x4Bits_I8 , Js::SIMDUtils::FromSimdBits )
  504. EXDEF2_WMS( SIMD_I4_1toI8_1 , Simd128_FromInt32x4Bits_I8 , Js::SIMDUtils::FromSimdBits )
  505. EXDEF2_WMS( SIMD_I16_1toI8_1 , Simd128_FromInt8x16Bits_I8 , Js::SIMDUtils::FromSimdBits )
  506. EXDEF2_WMS( SIMD_U4_1toI8_1 , Simd128_FromUint32x4Bits_I8 , Js::SIMDUtils::FromSimdBits )
  507. EXDEF2_WMS( SIMD_U8_1toI8_1 , Simd128_FromUint16x8Bits_I8 , Js::SIMDUtils::FromSimdBits )
  508. EXDEF2_WMS( SIMD_U16_1toI8_1 , Simd128_FromUint8x16Bits_I8 , Js::SIMDUtils::FromSimdBits )
  509. EXDEF2_WMS( SIMD_F4_1toI16_1 , Simd128_FromFloat32x4Bits_I16 , Js::SIMDUtils::FromSimdBits )
  510. EXDEF2_WMS( SIMD_I4_1toI16_1 , Simd128_FromInt32x4Bits_I16 , Js::SIMDUtils::FromSimdBits )
  511. EXDEF2_WMS( SIMD_I8_1toI16_1 , Simd128_FromInt16x8Bits_I16 , Js::SIMDUtils::FromSimdBits )
  512. EXDEF2_WMS( SIMD_U4_1toI16_1 , Simd128_FromUint32x4Bits_I16 , Js::SIMDUtils::FromSimdBits )
  513. EXDEF2_WMS( SIMD_U8_1toI16_1 , Simd128_FromUint16x8Bits_I16 , Js::SIMDUtils::FromSimdBits )
  514. EXDEF2_WMS( SIMD_U16_1toI16_1, Simd128_FromUint8x16Bits_I16 , Js::SIMDUtils::FromSimdBits )
  515. EXDEF3_WMS( CUSTOM_ASMJS , Simd128_FromFloat32x4_U4 , OP_SimdUint32x4FromFloat32x4 , Uint32x4_1Float32x4_1)
  516. EXDEF2_WMS( SIMD_F4_1toU4_1 , Simd128_FromFloat32x4Bits_U4 , Js::SIMDUtils::FromSimdBits )
  517. EXDEF2_WMS( SIMD_I4_1toU4_1 , Simd128_FromInt32x4Bits_U4 , Js::SIMDUtils::FromSimdBits )
  518. EXDEF2_WMS( SIMD_I8_1toU4_1 , Simd128_FromInt16x8Bits_U4 , Js::SIMDUtils::FromSimdBits )
  519. EXDEF2_WMS( SIMD_I16_1toU4_1 , Simd128_FromInt8x16Bits_U4 , Js::SIMDUtils::FromSimdBits )
  520. EXDEF2_WMS( SIMD_U8_1toU4_1 , Simd128_FromUint16x8Bits_U4 , Js::SIMDUtils::FromSimdBits )
  521. EXDEF2_WMS( SIMD_U16_1toU4_1 , Simd128_FromUint8x16Bits_U4 , Js::SIMDUtils::FromSimdBits )
  522. EXDEF2_WMS( SIMD_F4_1toU8_1 , Simd128_FromFloat32x4Bits_U8 , Js::SIMDUtils::FromSimdBits )
  523. EXDEF2_WMS( SIMD_I4_1toU8_1 , Simd128_FromInt32x4Bits_U8 , Js::SIMDUtils::FromSimdBits )
  524. EXDEF2_WMS( SIMD_I8_1toU8_1 , Simd128_FromInt16x8Bits_U8 , Js::SIMDUtils::FromSimdBits )
  525. EXDEF2_WMS( SIMD_I16_1toU8_1 , Simd128_FromInt8x16Bits_U8 , Js::SIMDUtils::FromSimdBits )
  526. EXDEF2_WMS( SIMD_U4_1toU8_1 , Simd128_FromUint32x4Bits_U8 , Js::SIMDUtils::FromSimdBits )
  527. EXDEF2_WMS( SIMD_U16_1toU8_1 , Simd128_FromUint8x16Bits_U8 , Js::SIMDUtils::FromSimdBits )
  528. EXDEF2_WMS( SIMD_F4_1toU16_1 , Simd128_FromFloat32x4Bits_U16 , Js::SIMDUtils::FromSimdBits )
  529. EXDEF2_WMS( SIMD_I4_1toU16_1 , Simd128_FromInt32x4Bits_U16 , Js::SIMDUtils::FromSimdBits )
  530. EXDEF2_WMS( SIMD_I8_1toU16_1 , Simd128_FromInt16x8Bits_U16 , Js::SIMDUtils::FromSimdBits )
  531. EXDEF2_WMS( SIMD_I16_1toU16_1 , Simd128_FromInt8x16Bits_U16 , Js::SIMDUtils::FromSimdBits )
  532. EXDEF2_WMS( SIMD_U4_1toU16_1 , Simd128_FromUint32x4Bits_U16 , Js::SIMDUtils::FromSimdBits )
  533. EXDEF2_WMS( SIMD_U8_1toU16_1 , Simd128_FromUint16x8Bits_U16 , Js::SIMDUtils::FromSimdBits )
  534. EXDEF2_WMS( SIMD_I8_2toB8_1 , Simd128_Lt_I8 , Js::SIMDInt16x8Operation::OpLessThan )
  535. EXDEF2_WMS( SIMD_U4_2toB4_1 , Simd128_Lt_U4 , Js::SIMDUint32x4Operation::OpLessThan )
  536. EXDEF2_WMS( SIMD_U8_2toB8_1 , Simd128_Lt_U8 , Js::SIMDUint16x8Operation::OpLessThan )
  537. EXDEF2_WMS( SIMD_U16_2toB16_1 , Simd128_Lt_U16 , Js::SIMDUint8x16Operation::OpLessThan )
  538. EXDEF2_WMS( SIMD_I4_2toB4_1 , Simd128_LtEq_I4 , Js::SIMDInt32x4Operation::OpLessThanOrEqual )
  539. EXDEF2_WMS( SIMD_I8_2toB8_1 , Simd128_LtEq_I8 , Js::SIMDInt16x8Operation::OpLessThanOrEqual )
  540. EXDEF2_WMS( SIMD_I16_2toB16_1 , Simd128_LtEq_I16 , Js::SIMDInt8x16Operation::OpLessThanOrEqual )
  541. EXDEF2_WMS( SIMD_U4_2toB4_1 , Simd128_LtEq_U4 , Js::SIMDUint32x4Operation::OpLessThanOrEqual )
  542. EXDEF2_WMS( SIMD_U8_2toB8_1 , Simd128_LtEq_U8 , Js::SIMDUint16x8Operation::OpLessThanOrEqual )
  543. EXDEF2_WMS( SIMD_U16_2toB16_1 , Simd128_LtEq_U16 , Js::SIMDUint8x16Operation::OpLessThanOrEqual )
  544. EXDEF2_WMS( SIMD_I8_2toB8_1 , Simd128_Eq_I8 , Js::SIMDInt16x8Operation::OpEqual )
  545. EXDEF2_WMS( SIMD_U4_2toB4_1 , Simd128_Eq_U4 , Js::SIMDInt32x4Operation::OpEqual )
  546. EXDEF2_WMS( SIMD_U8_2toB8_1 , Simd128_Eq_U8 , Js::SIMDInt16x8Operation::OpEqual )
  547. EXDEF2_WMS( SIMD_U16_2toB16_1 , Simd128_Eq_U16 , Js::SIMDInt8x16Operation::OpEqual )
  548. EXDEF2_WMS( SIMD_I4_2toB4_1 , Simd128_Neq_I4 , Js::SIMDInt32x4Operation::OpNotEqual )
  549. EXDEF2_WMS( SIMD_I8_2toB8_1 , Simd128_Neq_I8 , Js::SIMDInt16x8Operation::OpNotEqual )
  550. EXDEF2_WMS( SIMD_I16_2toB16_1 , Simd128_Neq_I16 , Js::SIMDInt8x16Operation::OpNotEqual )
  551. EXDEF2_WMS( SIMD_U4_2toB4_1 , Simd128_Neq_U4 , Js::SIMDInt32x4Operation::OpNotEqual )
  552. EXDEF2_WMS( SIMD_U8_2toB8_1 , Simd128_Neq_U8 , Js::SIMDInt16x8Operation::OpNotEqual )
  553. EXDEF2_WMS( SIMD_U16_2toB16_1 , Simd128_Neq_U16 , Js::SIMDInt8x16Operation::OpNotEqual )
  554. EXDEF2_WMS( SIMD_I4_2toB4_1 , Simd128_GtEq_I4 , Js::SIMDInt32x4Operation::OpGreaterThanOrEqual )
  555. EXDEF2_WMS( SIMD_I8_2toB8_1 , Simd128_GtEq_I8 , Js::SIMDInt16x8Operation::OpGreaterThanOrEqual )
  556. EXDEF2_WMS( SIMD_I16_2toB16_1 , Simd128_GtEq_I16 , Js::SIMDInt8x16Operation::OpGreaterThanOrEqual )
  557. EXDEF2_WMS( SIMD_U4_2toB4_1 , Simd128_GtEq_U4 , Js::SIMDUint32x4Operation::OpGreaterThanOrEqual )
  558. EXDEF2_WMS( SIMD_U8_2toB8_1 , Simd128_GtEq_U8 , Js::SIMDUint16x8Operation::OpGreaterThanOrEqual )
  559. EXDEF2_WMS( SIMD_U16_2toB16_1 , Simd128_GtEq_U16 , Js::SIMDUint8x16Operation::OpGreaterThanOrEqual )
  560. EXDEF2_WMS( SIMD_I8_2toB8_1 , Simd128_Gt_I8 , Js::SIMDInt16x8Operation::OpGreaterThan )
  561. EXDEF2_WMS( SIMD_U4_2toB4_1 , Simd128_Gt_U4 , Js::SIMDUint32x4Operation::OpGreaterThan )
  562. EXDEF2_WMS( SIMD_U8_2toB8_1 , Simd128_Gt_U8 , Js::SIMDUint16x8Operation::OpGreaterThan )
  563. EXDEF2_WMS( SIMD_U16_2toB16_1 , Simd128_Gt_U16 , Js::SIMDUint8x16Operation::OpGreaterThan )
  564. EXDEF2_WMS( SIMD_U4_1toU4_1 , Simd128_Neg_U4 , SIMDInt32x4Operation::OpNeg )
  565. EXDEF2_WMS( SIMD_U8_1toU8_1 , Simd128_Neg_U8 , SIMDInt16x8Operation::OpNeg )
  566. EXDEF2_WMS( SIMD_U16_1toU16_1 , Simd128_Neg_U16 , SIMDInt8x16Operation::OpNeg )
  567. #if 0
  568. EXDEF2_WMS(SIMD_D2toD2_1, Simd128_DoublesToD2, SIMDFloat64x2Operation::OpFloat64x2)
  569. EXDEF4_WMS(TEMPLATE_ASMJS, Simd128_LdSlot_D2, OP_LdSlotPrimitive, ElementSlot, AsmJsSIMDValue)
  570. EXDEF4_WMS(TEMPLATE_ASMJS, Simd128_StSlot_D2, OP_StSlotPrimitive, ElementSlot, AsmJsSIMDValue)
  571. EXDEF2_WMS(SIMD_D2_1toD2_1, Simd128_Return_D2, (AsmJsSIMDValue))
  572. EXDEF2_WMS(SIMD_D1toD2_1, Simd128_Splat_D2, Js::SIMDFloat64x2Operation::OpSplat)
  573. EXDEF2_WMS(SIMD_F4_1toD2_1, Simd128_FromFloat32x4_D2, SIMDFloat64x2Operation::OpFromFloat32x4)
  574. EXDEF2_WMS(SIMD_F4_1toD2_1, Simd128_FromFloat32x4Bits_D2, Js::FromSimdBits)
  575. EXDEF2_WMS(SIMD_I4_1toD2_1, Simd128_FromInt32x4_D2, SIMDFloat64x2Operation::OpFromInt32x4)
  576. EXDEF2_WMS(SIMD_I4_1toD2_1, Simd128_FromInt32x4Bits_D2, Js::FromSimdBits)
  577. EXDEF2_WMS(SIMD_D2_1toD2_1, Simd128_Abs_D2, SIMDFloat64x2Operation::OpAbs)
  578. EXDEF2_WMS(SIMD_D2_1toD2_1, Simd128_Neg_D2, SIMDFloat64x2Operation::OpNeg)
  579. EXDEF2_WMS(SIMD_D2_1toD2_1, Simd128_Rcp_D2, SIMDFloat64x2Operation::OpReciprocal)
  580. EXDEF2_WMS(SIMD_D2_1toD2_1, Simd128_RcpSqrt_D2, SIMDFloat64x2Operation::OpReciprocalSqrt)
  581. EXDEF2_WMS(SIMD_D2_1toD2_1, Simd128_Sqrt_D2, SIMDFloat64x2Operation::OpSqrt)
  582. EXDEF2_WMS(SIMD_D2_2toD2_1, Simd128_Add_D2, Js::SIMDFloat64x2Operation::OpAdd)
  583. EXDEF2_WMS(SIMD_D2_2toD2_1, Simd128_Sub_D2, Js::SIMDFloat64x2Operation::OpSub)
  584. EXDEF2_WMS(SIMD_D2_2toD2_1, Simd128_Mul_D2, Js::SIMDFloat64x2Operation::OpMul)
  585. EXDEF2_WMS(SIMD_D2_2toD2_1, Simd128_Div_D2, Js::SIMDFloat64x2Operation::OpDiv)
  586. EXDEF2_WMS(SIMD_D2_2toD2_1, Simd128_Min_D2, Js::SIMDFloat64x2Operation::OpMin)
  587. EXDEF2_WMS(SIMD_D2_2toD2_1, Simd128_Max_D2, Js::SIMDFloat64x2Operation::OpMax)
  588. EXDEF2_WMS(SIMD_D2_2toD2_1, Simd128_Lt_D2, Js::SIMDFloat64x2Operation::OpLessThan)
  589. EXDEF2_WMS(SIMD_D2_2toD2_1, Simd128_LtEq_D2, Js::SIMDFloat64x2Operation::OpLessThanOrEqual)
  590. EXDEF2_WMS(SIMD_D2_2toD2_1, Simd128_Eq_D2, Js::SIMDFloat64x2Operation::OpEqual)
  591. EXDEF2_WMS(SIMD_D2_2toD2_1, Simd128_Neq_D2, Js::SIMDFloat64x2Operation::OpNotEqual)
  592. EXDEF2_WMS(SIMD_D2_2toD2_1, Simd128_GtEq_D2, Js::SIMDFloat64x2Operation::OpGreaterThanOrEqual)
  593. EXDEF2_WMS(SIMD_D2_2toD2_1, Simd128_Gt_D2, Js::SIMDFloat64x2Operation::OpGreaterThan)
  594. EXDEF2_WMS(SIMD_I4_1D2_2toD2_1, Simd128_Select_D2, Js::SIMDFloat64x2Operation::OpSelect)
  595. EXDEF2_WMS(SIMD_D2_3toD2_1, Simd128_Clamp_D2, Js::SIMDFloat64x2Operation::OpClamp)
  596. EXDEF2_WMS(SIMD_D2_1toI1, Simd128_LdSignMask_D2, Js::SIMDFloat64x2Operation::OpGetSignMask)
  597. EXDEF2_WMS(SIMD_D2_1toR1Mem, Simd128_I_ArgOut_D2, OP_I_SetOutAsmSimd)
  598. EXDEF2_WMS(SIMD_D2_1toD2_1, Simd128_I_Conv_VTD2, (AsmJsSIMDValue))
  599. EXDEF2_WMS(SIMD_D2_1toD2_1, Simd128_Ld_D2, (AsmJsSIMDValue)
  600. EXDEF2_WMS(SIMD_D2_1I2toD2_1, Simd128_Swizzle_D2, SIMD128InnerShuffle)
  601. EXDE2_WMS(SIMD_D2_2I2toD2_1, Simd128_Shuffle_D2, SIMD128InnerShuffle)
  602. EXDEF3_WMS(CUSTOM_ASMJS, Simd128_StArr_D2, OP_SimdStArrGeneric, AsmSimdTypedArr)
  603. EXDEF3_WMS(CUSTOM_ASMJS, Simd128_LdArr_D2, OP_SimdLdArrGeneric, AsmSimdTypedArr)
  604. EXDEF3_WMS(CUSTOM_ASMJS, Simd128_LdArrConst_D2, OP_SimdLdArrConstIndex, AsmSimdTypedArr)
  605. EXDEF3_WMS(CUSTOM_ASMJS, Simd128_StArrConst_D2, OP_SimdStArrConstIndex, AsmSimdTypedArr)
  606. #endif // 0
  607. #endif