vm: implement SQRT opcode

This commit is contained in:
Evgeniy Stratonikov 2021-03-01 12:26:15 +03:00
parent 6496782736
commit d255c4a517
5 changed files with 59 additions and 38 deletions

View file

@ -160,6 +160,7 @@ func _() {
_ = x[DIV-161]
_ = x[MOD-162]
_ = x[POW-163]
_ = x[SQRT-164]
_ = x[SHL-168]
_ = x[SHR-169]
_ = x[NOT-170]
@ -199,7 +200,7 @@ func _() {
_ = x[CONVERT-219]
}
const _Opcode_name = "PUSHINT8PUSHINT16PUSHINT32PUSHINT64PUSHINT128PUSHINT256PUSHAPUSHNULLPUSHDATA1PUSHDATA2PUSHDATA4PUSHM1PUSH0PUSH1PUSH2PUSH3PUSH4PUSH5PUSH6PUSH7PUSH8PUSH9PUSH10PUSH11PUSH12PUSH13PUSH14PUSH15PUSH16NOPJMPJMP_LJMPIFJMPIF_LJMPIFNOTJMPIFNOT_LJMPEQJMPEQ_LJMPNEJMPNE_LJMPGTJMPGT_LJMPGEJMPGE_LJMPLTJMPLT_LJMPLEJMPLE_LCALLCALL_LCALLACALLTABORTASSERTTHROWTRYTRY_LENDTRYENDTRY_LENDFINALLYRETSYSCALLDEPTHDROPNIPXDROPCLEARDUPOVERPICKTUCKSWAPROTROLLREVERSE3REVERSE4REVERSENINITSSLOTINITSLOTLDSFLD0LDSFLD1LDSFLD2LDSFLD3LDSFLD4LDSFLD5LDSFLD6LDSFLDSTSFLD0STSFLD1STSFLD2STSFLD3STSFLD4STSFLD5STSFLD6STSFLDLDLOC0LDLOC1LDLOC2LDLOC3LDLOC4LDLOC5LDLOC6LDLOCSTLOC0STLOC1STLOC2STLOC3STLOC4STLOC5STLOC6STLOCLDARG0LDARG1LDARG2LDARG3LDARG4LDARG5LDARG6LDARGSTARG0STARG1STARG2STARG3STARG4STARG5STARG6STARGNEWBUFFERMEMCPYCATSUBSTRLEFTRIGHTINVERTANDORXOREQUALNOTEQUALSIGNABSNEGATEINCDECADDSUBMULDIVMODPOWSHLSHRNOTBOOLANDBOOLORNZNUMEQUALNUMNOTEQUALLTLTEGTGTEMINMAXWITHINPACKUNPACKNEWARRAY0NEWARRAYNEWARRAY_TNEWSTRUCT0NEWSTRUCTNEWMAPSIZEHASKEYKEYSVALUESPICKITEMAPPENDSETITEMREVERSEITEMSREMOVECLEARITEMSPOPITEMISNULLISTYPECONVERT"
const _Opcode_name = "PUSHINT8PUSHINT16PUSHINT32PUSHINT64PUSHINT128PUSHINT256PUSHAPUSHNULLPUSHDATA1PUSHDATA2PUSHDATA4PUSHM1PUSH0PUSH1PUSH2PUSH3PUSH4PUSH5PUSH6PUSH7PUSH8PUSH9PUSH10PUSH11PUSH12PUSH13PUSH14PUSH15PUSH16NOPJMPJMP_LJMPIFJMPIF_LJMPIFNOTJMPIFNOT_LJMPEQJMPEQ_LJMPNEJMPNE_LJMPGTJMPGT_LJMPGEJMPGE_LJMPLTJMPLT_LJMPLEJMPLE_LCALLCALL_LCALLACALLTABORTASSERTTHROWTRYTRY_LENDTRYENDTRY_LENDFINALLYRETSYSCALLDEPTHDROPNIPXDROPCLEARDUPOVERPICKTUCKSWAPROTROLLREVERSE3REVERSE4REVERSENINITSSLOTINITSLOTLDSFLD0LDSFLD1LDSFLD2LDSFLD3LDSFLD4LDSFLD5LDSFLD6LDSFLDSTSFLD0STSFLD1STSFLD2STSFLD3STSFLD4STSFLD5STSFLD6STSFLDLDLOC0LDLOC1LDLOC2LDLOC3LDLOC4LDLOC5LDLOC6LDLOCSTLOC0STLOC1STLOC2STLOC3STLOC4STLOC5STLOC6STLOCLDARG0LDARG1LDARG2LDARG3LDARG4LDARG5LDARG6LDARGSTARG0STARG1STARG2STARG3STARG4STARG5STARG6STARGNEWBUFFERMEMCPYCATSUBSTRLEFTRIGHTINVERTANDORXOREQUALNOTEQUALSIGNABSNEGATEINCDECADDSUBMULDIVMODPOWSQRTSHLSHRNOTBOOLANDBOOLORNZNUMEQUALNUMNOTEQUALLTLTEGTGTEMINMAXWITHINPACKUNPACKNEWARRAY0NEWARRAYNEWARRAY_TNEWSTRUCT0NEWSTRUCTNEWMAPSIZEHASKEYKEYSVALUESPICKITEMAPPENDSETITEMREVERSEITEMSREMOVECLEARITEMSPOPITEMISNULLISTYPECONVERT"
var _Opcode_map = map[Opcode]string{
0: _Opcode_name[0:8],
@ -352,43 +353,44 @@ var _Opcode_map = map[Opcode]string{
161: _Opcode_name[859:862],
162: _Opcode_name[862:865],
163: _Opcode_name[865:868],
168: _Opcode_name[868:871],
169: _Opcode_name[871:874],
170: _Opcode_name[874:877],
171: _Opcode_name[877:884],
172: _Opcode_name[884:890],
177: _Opcode_name[890:892],
179: _Opcode_name[892:900],
180: _Opcode_name[900:911],
181: _Opcode_name[911:913],
182: _Opcode_name[913:916],
183: _Opcode_name[916:918],
184: _Opcode_name[918:921],
185: _Opcode_name[921:924],
186: _Opcode_name[924:927],
187: _Opcode_name[927:933],
192: _Opcode_name[933:937],
193: _Opcode_name[937:943],
194: _Opcode_name[943:952],
195: _Opcode_name[952:960],
196: _Opcode_name[960:970],
197: _Opcode_name[970:980],
198: _Opcode_name[980:989],
200: _Opcode_name[989:995],
202: _Opcode_name[995:999],
203: _Opcode_name[999:1005],
204: _Opcode_name[1005:1009],
205: _Opcode_name[1009:1015],
206: _Opcode_name[1015:1023],
207: _Opcode_name[1023:1029],
208: _Opcode_name[1029:1036],
209: _Opcode_name[1036:1048],
210: _Opcode_name[1048:1054],
211: _Opcode_name[1054:1064],
212: _Opcode_name[1064:1071],
216: _Opcode_name[1071:1077],
217: _Opcode_name[1077:1083],
219: _Opcode_name[1083:1090],
164: _Opcode_name[868:872],
168: _Opcode_name[872:875],
169: _Opcode_name[875:878],
170: _Opcode_name[878:881],
171: _Opcode_name[881:888],
172: _Opcode_name[888:894],
177: _Opcode_name[894:896],
179: _Opcode_name[896:904],
180: _Opcode_name[904:915],
181: _Opcode_name[915:917],
182: _Opcode_name[917:920],
183: _Opcode_name[920:922],
184: _Opcode_name[922:925],
185: _Opcode_name[925:928],
186: _Opcode_name[928:931],
187: _Opcode_name[931:937],
192: _Opcode_name[937:941],
193: _Opcode_name[941:947],
194: _Opcode_name[947:956],
195: _Opcode_name[956:964],
196: _Opcode_name[964:974],
197: _Opcode_name[974:984],
198: _Opcode_name[984:993],
200: _Opcode_name[993:999],
202: _Opcode_name[999:1003],
203: _Opcode_name[1003:1009],
204: _Opcode_name[1009:1013],
205: _Opcode_name[1013:1019],
206: _Opcode_name[1019:1027],
207: _Opcode_name[1027:1033],
208: _Opcode_name[1033:1040],
209: _Opcode_name[1040:1052],
210: _Opcode_name[1052:1058],
211: _Opcode_name[1058:1068],
212: _Opcode_name[1068:1075],
216: _Opcode_name[1075:1081],
217: _Opcode_name[1081:1087],
219: _Opcode_name[1087:1094],
}
func (i Opcode) String() string {