5#ifndef V8_CODEGEN_S390_CONSTANTS_S390_H_
6#define V8_CODEGEN_S390_CONSTANTS_S390_H_
9#ifndef __STDC_FORMAT_MACROS
10#define __STDC_FORMAT_MACROS
22#define UNIMPLEMENTED_S390() \
23 v8::internal::PrintF("%s, \tline %d: \tfunction %s not implemented. \n", \
24 __FILE__, __LINE__, __func__)
26#define UNIMPLEMENTED_S390()
30#define ABI_USES_FUNCTION_DESCRIPTORS 1
31#define ABI_PASSES_HANDLES_IN_REGS 1
32#define ABI_RETURNS_OBJECTPAIR_IN_REGS 1
39#define ABI_USES_FUNCTION_DESCRIPTORS 0
40#define ABI_PASSES_HANDLES_IN_REGS 1
48#define ABI_RETURNS_OBJECTPAIR_IN_REGS 0
51#define ABI_CALL_VIA_IP 1
81#define SIGN_EXT_IMM16(imm) ((static_cast<int>(imm) << 16) >> 16)
84#define SIGN_EXT_IMM26(imm) ((static_cast<int>(imm) << 6) >> 6)
251#define S390_RSY_A_OPCODE_LIST(V) \
252 V(lmg, LMG, 0xEB04) \
253 V(srag, SRAG, 0xEB0A) \
254 V(slag, SLAG, 0xEB0B) \
255 V(srlg, SRLG, 0xEB0C) \
256 V(sllg, SLLG, 0xEB0D) \
257 V(tracg, TRACG, 0xEB0F) \
258 V(csy, CSY, 0xEB14) \
259 V(rllg, RLLG, 0xEB1C) \
260 V(rll, RLL, 0xEB1D) \
261 V(stmg, STMG, 0xEB24) \
262 V(stctg, STCTG, 0xEB25) \
263 V(stmh, STMH, 0xEB26) \
264 V(lctlg, LCTLG, 0xEB2F) \
265 V(csg, CSG, 0xEB30) \
266 V(cdsy, CDSY, 0xEB31) \
267 V(cdsg, CDSG, 0xEB3E) \
268 V(bxhg, BXHG, 0xEB44) \
269 V(bxleg, BXLEG, 0xEB45) \
270 V(ecag, ECAG, 0xEB4C) \
271 V(mvclu, MVCLU, 0xEB8E) \
272 V(clclu, CLCLU, 0xEB8F) \
273 V(stmy, STMY, 0xEB90) \
274 V(lmh, LMH, 0xEB96) \
275 V(lmy, LMY, 0xEB98) \
276 V(lamy, LAMY, 0xEB9A) \
277 V(stamy, STAMY, 0xEB9B) \
278 V(srak, SRAK, 0xEBDC) \
279 V(slak, SLAK, 0xEBDD) \
280 V(srlk, SRLK, 0xEBDE) \
281 V(sllk, SLLK, 0xEBDF) \
282 V(lang, LANG, 0xEBE4) \
283 V(laog, LAOG, 0xEBE6) \
284 V(laxg, LAXG, 0xEBE7) \
285 V(laag, LAAG, 0xEBE8) \
286 V(laalg, LAALG, 0xEBEA) \
287 V(lan, LAN, 0xEBF4) \
288 V(lao, LAO, 0xEBF6) \
289 V(lax, LAX, 0xEBF7) \
290 V(laa, LAA, 0xEBF8) \
291 V(laal, LAAL, 0xEBFA)
293#define S390_RSY_B_OPCODE_LIST(V) \
298 V(clt, CLT, 0xEB23) \
299 V(clgt, CLGT, 0xEB2B) \
302 V(stcmy, STCMY, 0xEB2D) \
303 V(icmh, ICMH, 0xEB80) \
304 V(icmy, ICMY, 0xEB81) \
305 V(locfh, LOCFH, 0xEBE0) \
306 V(stocfh, STOCFH, 0xEBE1) \
307 V(locg, LOCG, 0xEBE2) \
308 V(stocg, STOCG, 0xEBE3) \
309 V(loc, LOC, 0xEBF2) \
310 V(stoc, STOC, 0xEBF3)
312#define S390_RXE_OPCODE_LIST(V) \
313 V(lcbb, LCBB, 0xE727) \
314 V(ldeb, LDEB, 0xED04) \
319 V(mxdb, MXDB, 0xED07) \
320 V(keb, KEB, 0xED08) \
321 V(ceb, CEB, 0xED09) \
322 V(aeb, AEB, 0xED0A) \
323 V(seb, SEB, 0xED0B) \
324 V(mdeb, MDEB, 0xED0C) \
325 V(deb, DEB, 0xED0D) \
326 V(tceb, TCEB, 0xED10) \
327 V(tcdb, TCDB, 0xED11) \
328 V(tcxb, TCXB, 0xED12) \
329 V(sqeb, SQEB, 0xED14) \
330 V(sqdb, SQDB, 0xED15) \
331 V(meeb, MEEB, 0xED17) \
332 V(kdb, KDB, 0xED18) \
333 V(cdb, CDB, 0xED19) \
334 V(adb, ADB, 0xED1A) \
335 V(sdb, SDB, 0xED1B) \
336 V(mdb, MDB, 0xED1C) \
337 V(ddb, DDB, 0xED1D) \
338 V(lde, LDE, 0xED24) \
343 V(sqe, SQE, 0xED34) \
344 V(sqd, SQD, 0xED35) \
345 V(mee, MEE, 0xED37) \
346 V(tdcet, TDCET, 0xED50) \
347 V(tdget, TDGET, 0xED51) \
348 V(tdcdt, TDCDT, 0xED54) \
349 V(tdgdt, TDGDT, 0xED55) \
350 V(tdcxt, TDCXT, 0xED58) \
351 V(tdgxt, TDGXT, 0xED59)
353#define S390_RRF_A_OPCODE_LIST(V) \
354 V(ipte, IPTE, 0xB221) \
355 V(mdtra, MDTRA, 0xB3D0) \
356 V(ddtra, DDTRA, 0xB3D1) \
357 V(adtra, ADTRA, 0xB3D2) \
358 V(sdtra, SDTRA, 0xB3D3) \
359 V(mxtra, MXTRA, 0xB3D8) \
360 V(msrkc, MSRKC, 0xB9FD) \
361 V(msgrkc, MSGRKC, 0xB9ED) \
362 V(dxtra, DXTRA, 0xB3D9) \
363 V(axtra, AXTRA, 0xB3DA) \
364 V(sxtra, SXTRA, 0xB3DB) \
365 V(ahhhr, AHHHR, 0xB9C8) \
366 V(shhhr, SHHHR, 0xB9C9) \
367 V(alhhhr, ALHHHR, 0xB9CA) \
368 V(slhhhr, SLHHHR, 0xB9CB) \
369 V(ahhlr, AHHLR, 0xB9D8) \
370 V(shhlr, SHHLR, 0xB9D9) \
371 V(alhhlr, ALHHLR, 0xB9DA) \
372 V(slhhlr, SLHHLR, 0xB9DB) \
373 V(ngrk, NGRK, 0xB9E4) \
374 V(ogrk, OGRK, 0xB9E6) \
375 V(xgrk, XGRK, 0xB9E7) \
376 V(agrk, AGRK, 0xB9E8) \
377 V(sgrk, SGRK, 0xB9E9) \
378 V(mgrk, MGRK, 0xB9EC) \
379 V(algrk, ALGRK, 0xB9EA) \
380 V(slgrk, SLGRK, 0xB9EB) \
381 V(nrk, NRK, 0xB9F4) \
382 V(ork, ORK, 0xB9F6) \
383 V(xrk, XRK, 0xB9F7) \
384 V(ark, ARK, 0xB9F8) \
385 V(srk, SRK, 0xB9F9) \
386 V(alrk, ALRK, 0xB9FA) \
387 V(slrk, SLRK, 0xB9FB)
389#define S390_RXF_OPCODE_LIST(V) \
390 V(maeb, MAEB, 0xED0E) \
391 V(mseb, MSEB, 0xED0F) \
392 V(madb, MADB, 0xED1E) \
393 V(msdb, MSDB, 0xED1F) \
394 V(mae, MAE, 0xED2E) \
395 V(mse, MSE, 0xED2F) \
408 V(mad, MAD, 0xED3E) \
409 V(msd, MSD, 0xED3F) \
410 V(sldt, SLDT, 0xED40) \
411 V(srdt, SRDT, 0xED41) \
417#define S390_IE_OPCODE_LIST(V) \
418 V(niai, NIAI, 0xB2FA)
420#define S390_RRF_B_OPCODE_LIST(V) \
421 V(diebr, DIEBR, 0xB353) \
422 V(didbr, DIDBR, 0xB35B) \
423 V(cpsdr, CPSDR, 0xB372) \
424 V(qadtr, QADTR, 0xB3F5) \
427 V(rrdtr, RRDTR, 0xB3F7) \
428 V(qaxtr, QAXTR, 0xB3FD) \
431 V(rrxtr, RRXTR, 0xB3FF) \
432 V(kmctr, KMCTR, 0xB92D) \
433 V(idte, IDTE, 0xB98E) \
436 V(lptea, LPTEA, 0xB9AA)
438#define S390_RRF_C_OPCODE_LIST(V) \
439 V(sske, SSKE, 0xB22B) \
440 V(cu21, CU21, 0xB2A6) \
441 V(cu12, CU12, 0xB2A7) \
442 V(ppa, PPA, 0xB2E8) \
443 V(cgrt, CGRT, 0xB960) \
444 V(clgrt, CLGRT, 0xB961) \
445 V(crt, CRT, 0xB972) \
446 V(clrt, CLRT, 0xB973) \
447 V(trtt, TRTT, 0xB990) \
448 V(trto, TRTO, 0xB991) \
449 V(trot, TROT, 0xB992) \
450 V(troo, TROO, 0xB993) \
451 V(cu14, CU14, 0xB9B0) \
452 V(cu24, CU24, 0xB9B1) \
455 V(trte, TRTE, 0xB9BF) \
456 V(locfhr, LOCFHR, 0xB9E0) \
457 V(locgr, LOCGR, 0xB9E2) \
458 V(locr, LOCR, 0xB9F2)
460#define S390_MII_OPCODE_LIST(V) \
463#define S390_RRF_D_OPCODE_LIST(V) \
473#define S390_RRF_E_OPCODE_LIST(V) \
480 V(fixbra, FIXBRA, 0xB347) \
483 V(tbdr, TBDR, 0xB351) \
484 V(fiebra, FIEBRA, 0xB357) \
485 V(fidbra, FIDBRA, 0xB35F) \
534 V(cfer, CFER, 0xB3B8) \
535 V(cfdr, CFDR, 0xB3B9) \
538 V(cger, CGER, 0xB3C8) \
539 V(cgdr, CGDR, 0xB3C9) \
542 V(ledtr, LEDTR, 0xB3D5) \
543 V(fidtr, FIDTR, 0xB3D7) \
546 V(fixtr, FIXTR, 0xB3DF) \
555 V(cfdtr, CFDTR, 0xB941) \
575#define S390_VRR_A_OPCODE_LIST(V) \
576 V(vpopct, VPOPCT, 0xE750) \
577 V(vctz, VCTZ, 0xE752) \
578 V(vclz, VCLZ, 0xE753) \
579 V(vlr, VLR, 0xE756) \
580 V(vistr, VISTR, 0xE75C) \
581 V(vseg, VSEG, 0xE75F) \
586 V(vcgd, VCGD, 0xE7C2) \
587 V(vcdg, VCDG, 0xE7C3) \
588 V(vlde, VLDE, 0xE7C4) \
589 V(vled, VLED, 0xE7C5) \
590 V(vfi, VFI, 0xE7C7) \
591 V(wfk, WFK, 0xE7CA) \
592 V(wfc, WFC, 0xE7CB) \
593 V(vfpso, VFPSO, 0xE7CC) \
594 V(vfsq, VFSQ, 0xE7CE) \
595 V(vupll, VUPLL, 0xE7D4) \
596 V(vuplh, VUPLH, 0xE7D5) \
597 V(vupl, VUPL, 0xE7D6) \
598 V(vuph, VUPH, 0xE7D7) \
599 V(vtm, VTM, 0xE7D8) \
600 V(vecl, VECL, 0xE7D9) \
601 V(vec, VEC, 0xE7DB) \
602 V(vlc, VLC, 0xE7DE) \
605#define S390_VRR_B_OPCODE_LIST(V) \
606 V(vfee, VFEE, 0xE780) \
607 V(vfene, VFENE, 0xE781) \
608 V(vfae, VFAE, 0xE782) \
609 V(vpkls, VPKLS, 0xE795) \
610 V(vpks, VPKS, 0xE797) \
611 V(vceq, VCEQ, 0xE7F8) \
612 V(vchl, VCHL, 0xE7F9) \
615#define S390_VRR_C_OPCODE_LIST(V) \
616 V(vmrl, VMRL, 0xE760) \
617 V(vmrh, VMRH, 0xE761) \
618 V(vsum, VSUM, 0xE764) \
619 V(vsumg, VSUMG, 0xE765) \
620 V(vcksm, VCKSM, 0xE766) \
621 V(vsumq, VSUMQ, 0xE767) \
623 V(vnc, VNC, 0xE769) \
625 V(vno, VNO, 0xE76B) \
627 V(veslv, VESLV, 0xE770) \
630 V(vsl, VSL, 0xE774) \
631 V(vslb, VSLB, 0xE775) \
636 V(vsrl, VSRL, 0xE77C) \
639 V(vsra, VSRA, 0xE77E) \
642 V(vpdi, VPDI, 0xE784) \
643 V(vpk, VPK, 0xE794) \
644 V(vmlh, VMLH, 0xE7A1) \
645 V(vml, VML, 0xE7A2) \
646 V(vmh, VMH, 0xE7A3) \
647 V(vmle, VMLE, 0xE7A4) \
648 V(vmlo, VMLO, 0xE7A5) \
649 V(vme, VME, 0xE7A6) \
650 V(vmo, VMO, 0xE7A7) \
651 V(vgfm, VGFM, 0xE7B4) \
652 V(vfs, VFS, 0xE7E2) \
653 V(vfa, VFA, 0xE7E3) \
654 V(vfd, VFD, 0xE7E5) \
655 V(vfm, VFM, 0xE7E7) \
656 V(vfce, VFCE, 0xE7E8) \
657 V(vfche, VFCHE, 0xE7EA) \
658 V(vfch, VFCH, 0xE7EB) \
659 V(vfmax, VFMAX, 0xE7EF) \
660 V(vfmin, VFMIN, 0xE7EE) \
661 V(vavgl, VAVGL, 0xE7F0) \
662 V(vacc, VACC, 0xE7F1) \
663 V(vavg, VAVG, 0xE7F2) \
668 V(vmnl, VMNL, 0xE7FC) \
669 V(vmxl, VMXL, 0xE7FD) \
670 V(vmn, VMN, 0xE7FE) \
671 V(vmx, VMX, 0xE7FF) \
672 V(vbperm, VBPERM, 0xE785)
674#define S390_VRI_A_OPCODE_LIST(V) \
675 V(vleib, VLEIB, 0xE740) \
682 V(vgbm, VGBM, 0xE744) \
683 V(vrepi, VREPI, 0xE745)
685#define S390_VRR_D_OPCODE_LIST(V) \
686 V(vstrc, VSTRC, 0xE78A) \
689 V(vmal, VMAL, 0xE7AA) \
690 V(vmah, VMAH, 0xE7AB) \
695 V(vmae, VMAE, 0xE7AE) \
696 V(vmao, VMAO, 0xE7AF) \
699 V(vac, VAC, 0xE7BB) \
702 V(vsbcbi, VSBCBI, 0xE7BD) \
707#define S390_VRI_B_OPCODE_LIST(V) \
710#define S390_VRR_E_OPCODE_LIST(V) \
711 V(vperm, VPERM, 0xE78C) \
712 V(vsel, VSEL, 0xE78D) \
713 V(vfms, VFMS, 0xE78E) \
716 V(vfma, VFMA, 0xE78F)
718#define S390_VRI_C_OPCODE_LIST(V) \
719 V(vrep, VREP, 0xE74D)
721#define S390_VRI_D_OPCODE_LIST(V) \
724 V(vsldb, VSLDB, 0xE777)
726#define S390_VRR_F_OPCODE_LIST(V) \
727 V(vlvgp, VLVGP, 0xE762)
729#define S390_RIS_OPCODE_LIST(V) \
734 V(cib, CIB, 0xECFE) \
738#define S390_VRI_E_OPCODE_LIST(V) \
742#define S390_RSL_A_OPCODE_LIST(V) \
745#define S390_RSL_B_OPCODE_LIST(V) \
746 V(cpdt, CPDT, 0xEDAC) \
749 V(cdpt, CDPT, 0xEDAE) \
752 V(czdt, CZDT, 0xEDA8) \
753 V(czxt, CZXT, 0xEDA9) \
754 V(cdzt, CDZT, 0xEDAA) \
755 V(cxzt, CXZT, 0xEDAB)
757#define S390_SI_OPCODE_LIST(V) \
764 V(stnsm, STNSM, 0xAC) \
765 V(stosm, STOSM, 0xAD) \
768#define S390_SIL_OPCODE_LIST(V) \
769 V(mvhhi, MVHHI, 0xE544) \
770 V(mvghi, MVGHI, 0xE548) \
771 V(mvhi, MVHI, 0xE54C) \
780 V(chsi, CHSI, 0xE55C) \
785 V(tbeginc, TBEGINC, \
788#define S390_VRS_A_OPCODE_LIST(V) \
789 V(vesl, VESL, 0xE730) \
792 V(vlm, VLM, 0xE736) \
797 V(vstm, VSTM, 0xE73E)
799#define S390_RIL_A_OPCODE_LIST(V) \
800 V(lgfi, LGFI, 0xC01) \
801 V(xihf, XIHF, 0xC06) \
802 V(xilf, XILF, 0xC07) \
803 V(iihf, IIHF, 0xC08) \
804 V(iilf, IILF, 0xC09) \
805 V(nihf, NIHF, 0xC0A) \
806 V(nilf, NILF, 0xC0B) \
807 V(oihf, OIHF, 0xC0C) \
808 V(oilf, OILF, 0xC0D) \
809 V(llihf, LLIHF, 0xC0E) \
810 V(llilf, LLILF, 0xC0F) \
811 V(msgfi, MSGFI, 0xC20) \
812 V(msfi, MSFI, 0xC21) \
815 V(slfi, SLFI, 0xC25) \
816 V(agfi, AGFI, 0xC28) \
818 V(algfi, ALGFI, 0xC2A) \
819 V(alfi, ALFI, 0xC2B) \
820 V(cgfi, CGFI, 0xC2C) \
822 V(clgfi, CLGFI, 0xC2E) \
823 V(clfi, CLFI, 0xC2F) \
832#define S390_RIL_B_OPCODE_LIST(V) \
833 V(larl, LARL, 0xC00) \
834 V(brasl, BRASL, 0xC05) \
839 V(lhrl, LHRL, 0xC45) \
842 V(sthrl, STHRL, 0xC47) \
843 V(lgrl, LGRL, 0xC48) \
844 V(stgrl, STGRL, 0xC4B) \
845 V(lgfrl, LGFRL, 0xC4C) \
849 V(strl, STRL, 0xC4F) \
850 V(exrl, EXRL, 0xC60) \
859 V(cgrl, CGRL, 0xC68) \
860 V(clgrl, CLGRL, 0xC6A) \
861 V(cgfrl, CGFRL, 0xC6C) \
865 V(clrl, CLRL, 0xC6F) \
866 V(brcth, BRCTH, 0xCC6)
868#define S390_VRS_B_OPCODE_LIST(V) \
869 V(vlvg, VLVG, 0xE722) \
870 V(vll, VLL, 0xE737) \
871 V(vstl, VSTL, 0xE73F)
873#define S390_RIL_C_OPCODE_LIST(V) \
874 V(brcl, BRCL, 0xC04) \
875 V(pfdrl, PFDRL, 0xC62)
877#define S390_VRS_C_OPCODE_LIST(V) \
878 V(vlgv, VLGV, 0xE721)
880#define S390_RI_A_OPCODE_LIST(V) \
881 V(iihh, IIHH, 0xA50) \
882 V(iihl, IIHL, 0xA51) \
883 V(iilh, IILH, 0xA52) \
884 V(iill, IILL, 0xA53) \
885 V(nihh, NIHH, 0xA54) \
886 V(nihl, NIHL, 0xA55) \
887 V(nilh, NILH, 0xA56) \
888 V(nill, NILL, 0xA57) \
889 V(oihh, OIHH, 0xA58) \
890 V(oihl, OIHL, 0xA59) \
891 V(oilh, OILH, 0xA5A) \
892 V(oill, OILL, 0xA5B) \
893 V(llihh, LLIHH, 0xA5C) \
894 V(llihl, LLIHL, 0xA5D) \
895 V(llilh, LLILH, 0xA5E) \
896 V(llill, LLILL, 0xA5F) \
897 V(tmlh, TMLH, 0xA70) \
898 V(tmll, TMLL, 0xA71) \
899 V(tmhh, TMHH, 0xA72) \
900 V(tmhl, TMHL, 0xA73) \
902 V(lghi, LGHI, 0xA79) \
904 V(aghi, AGHI, 0xA7B) \
906 V(mghi, MGHI, 0xA7D) \
910#define S390_RSI_OPCODE_LIST(V) \
911 V(brxh, BRXH, 0x84) \
915#define S390_RI_B_OPCODE_LIST(V) \
916 V(bras, BRAS, 0xA75) \
917 V(brct, BRCT, 0xA76) \
918 V(brctg, BRCTG, 0xA77)
920#define S390_RI_C_OPCODE_LIST(V) \
923#define S390_SMI_OPCODE_LIST(V) \
926#define S390_RXY_A_OPCODE_LIST(V) \
927 V(ltg, LTG, 0xE302) \
928 V(lrag, LRAG, 0xE303) \
930 V(cvby, CVBY, 0xE306) \
933 V(alg, ALG, 0xE30A) \
934 V(slg, SLG, 0xE30B) \
935 V(msg, MSG, 0xE30C) \
936 V(dsg, DSG, 0xE30D) \
937 V(cvbg, CVBG, 0xE30E) \
938 V(lrvg, LRVG, 0xE30F) \
939 V(lt_z, LT, 0xE312) \
940 V(lray, LRAY, 0xE313) \
941 V(lgf, LGF, 0xE314) \
942 V(lgh, LGH, 0xE315) \
943 V(llgf, LLGF, 0xE316) \
946 V(agf, AGF, 0xE318) \
947 V(sgf, SGF, 0xE319) \
948 V(algf, ALGF, 0xE31A) \
949 V(slgf, SLGF, 0xE31B) \
950 V(msgf, MSGF, 0xE31C) \
951 V(dsgf, DSGF, 0xE31D) \
952 V(lrv, LRV, 0xE31E) \
953 V(lrvh, LRVH, 0xE31F) \
955 V(clg, CLG, 0xE321) \
956 V(stg, STG, 0xE324) \
957 V(ntstg, NTSTG, 0xE325) \
958 V(cvdy, CVDY, 0xE326) \
959 V(lzrg, LZRG, 0xE32A) \
960 V(cvdg, CVDG, 0xE32E) \
961 V(strvg, STRVG, 0xE32F) \
962 V(cgf, CGF, 0xE330) \
963 V(clgf, CLGF, 0xE331) \
964 V(ltgf, LTGF, 0xE332) \
965 V(cgh, CGH, 0xE334) \
968 V(lzrf, LZRF, 0xE33B) \
969 V(strv, STRV, 0xE33E) \
970 V(strvh, STRVH, 0xE33F) \
971 V(bctg, BCTG, 0xE346) \
972 V(sty, STY, 0xE350) \
973 V(msy, MSY, 0xE351) \
975 V(cly, CLY, 0xE355) \
982 V(mfy, MFY, 0xE35C) \
984 V(aly, ALY, 0xE35E) \
985 V(sly, SLY, 0xE35F) \
986 V(sthy, STHY, 0xE370) \
987 V(lay, LAY, 0xE371) \
988 V(stcy, STCY, 0xE372) \
989 V(icy, ICY, 0xE373) \
990 V(laey, LAEY, 0xE375) \
992 V(lgb, LGB, 0xE377) \
993 V(lhy, LHY, 0xE378) \
994 V(chy, CHY, 0xE379) \
995 V(ahy, AHY, 0xE37A) \
996 V(shy, SHY, 0xE37B) \
997 V(mhy, MHY, 0xE37C) \
1001 V(lgat, LGAT, 0xE385) \
1002 V(mlg, MLG, 0xE386) \
1003 V(dlg, DLG, 0xE387) \
1004 V(alcg, ALCG, 0xE388) \
1005 V(slbg, SLBG, 0xE389) \
1006 V(stpq, STPQ, 0xE38E) \
1007 V(lpq, LPQ, 0xE38F) \
1008 V(llgc, LLGC, 0xE390) \
1009 V(llgh, LLGH, 0xE391) \
1010 V(llc, LLC, 0xE394) \
1011 V(llh, LLH, 0xE395) \
1014 V(alc, ALC, 0xE398) \
1015 V(slb, SLB, 0xE399) \
1018 V(llgfat, LLGFAT, 0xE39D) \
1019 V(lat, LAT, 0xE39F) \
1020 V(lbh, LBH, 0xE3C0) \
1021 V(llch, LLCH, 0xE3C2) \
1022 V(stch, STCH, 0xE3C3) \
1023 V(lhh, LHH, 0xE3C4) \
1024 V(llhh, LLHH, 0xE3C6) \
1025 V(sthh, STHH, 0xE3C7) \
1026 V(lfhat, LFHAT, 0xE3C8) \
1027 V(lfh, LFH, 0xE3CA) \
1028 V(stfh, STFH, 0xE3CB) \
1029 V(chf, CHF, 0xE3CD) \
1030 V(clhf, CLHF, 0xE3CF) \
1031 V(ley, LEY, 0xED64) \
1032 V(ldy, LDY, 0xED65) \
1033 V(stey, STEY, 0xED66) \
1034 V(stdy, STDY, 0xED67) \
1035 V(msc, MSC, 0xE353) \
1036 V(msgc, MSGC, 0xE383)
1038#define S390_RXY_B_OPCODE_LIST(V) \
1041#define S390_SIY_OPCODE_LIST(V) \
1042 V(tmy, TMY, 0xEB51) \
1043 V(mviy, MVIY, 0xEB52) \
1044 V(niy, NIY, 0xEB54) \
1045 V(cliy, CLIY, 0xEB55) \
1046 V(oiy, OIY, 0xEB56) \
1047 V(xiy, XIY, 0xEB57) \
1048 V(asi, ASI, 0xEB6A) \
1051 V(agsi, AGSI, 0xEB7A) \
1055#define S390_SS_A_OPCODE_LIST(V) \
1056 V(trtr, TRTR, 0xD0) \
1067 V(edmk, EDMK, 0xDF) \
1068 V(unpku, UNPKU, 0xE2) \
1069 V(mvcin, MVCIN, 0xE8) \
1070 V(unpka, UNPKA, 0xEA)
1072#define S390_E_OPCODE_LIST(V) \
1074 V(upt, UPT, 0x0102) \
1075 V(ptff, PTFF, 0x0104) \
1076 V(sckpf, SCKPF, 0x0107) \
1077 V(pfpo, PFPO, 0x010A) \
1078 V(tam, TAM, 0x010B) \
1079 V(sam24, SAM24, 0x010C) \
1080 V(sam31, SAM31, 0x010D) \
1081 V(sam64, SAM64, 0x010E) \
1082 V(trap2, TRAP2, 0x01FF)
1084#define S390_SS_B_OPCODE_LIST(V) \
1086 V(pack, PACK, 0xF2) \
1087 V(unpk, UNPK, 0xF3) \
1095#define S390_SS_C_OPCODE_LIST(V) \
1098#define S390_SS_D_OPCODE_LIST(V) \
1099 V(mvck, MVCK, 0xD9) \
1100 V(mvcp, MVCP, 0xDA) \
1103#define S390_SS_E_OPCODE_LIST(V) \
1107#define S390_I_OPCODE_LIST(V) \
1110#define S390_SS_F_OPCODE_LIST(V) \
1114#define S390_SSE_OPCODE_LIST(V) \
1115 V(lasp, LASP, 0xE500) \
1116 V(tprot, TPROT, 0xE501) \
1117 V(strag, STRAG, 0xE502) \
1118 V(mvcsk, MVCSK, 0xE50E) \
1119 V(mvcdk, MVCDK, 0xE50F)
1121#define S390_SSF_OPCODE_LIST(V) \
1122 V(mvcos, MVCOS, 0xC80) \
1123 V(ectg, ECTG, 0xC81) \
1124 V(csst, CSST, 0xC82) \
1125 V(lpd, LPD, 0xC84) \
1126 V(lpdg, LPDG, 0xC85)
1128#define S390_RS_A_OPCODE_LIST(V) \
1130 V(bxle, BXLE, 0x87) \
1135 V(srdl, SRDL, 0x8C) \
1136 V(sldl, SLDL, 0x8D) \
1137 V(srda, SRDA, 0x8E) \
1138 V(slda, SLDA, 0x8F) \
1141 V(trace, TRACE, 0x99) \
1143 V(stam, STAM, 0x9B) \
1144 V(mvcle, MVCLE, 0xA8) \
1145 V(clcle, CLCLE, 0xA9) \
1146 V(sigp, SIGP, 0xAE) \
1147 V(stctl, STCTL, 0xB6) \
1148 V(lctl, LCTL, 0xB7) \
1152#define S390_RS_B_OPCODE_LIST(V) \
1154 V(stcm, STCM, 0xBE) \
1157#define S390_S_OPCODE_LIST(V) \
1158 V(lpsw, LPSW, 0x82) \
1159 V(diagnose, DIAGNOSE, 0x83) \
1161 V(stidp, STIDP, 0xB202) \
1162 V(sck, SCK, 0xB204) \
1163 V(stck, STCK, 0xB205) \
1164 V(sckc, SCKC, 0xB206) \
1165 V(stckc, STCKC, 0xB207) \
1166 V(spt, SPT, 0xB208) \
1167 V(stpt, STPT, 0xB209) \
1168 V(spka, SPKA, 0xB20A) \
1169 V(ipk, IPK, 0xB20B) \
1170 V(ptlb, PTLB, 0xB20D) \
1171 V(spx, SPX, 0xB210) \
1172 V(stpx, STPX, 0xB211) \
1173 V(stap, STAP, 0xB212) \
1175 V(sac, SAC, 0xB219) \
1176 V(cfc, CFC, 0xB21A) \
1177 V(csch, CSCH, 0xB230) \
1178 V(hsch, HSCH, 0xB231) \
1179 V(msch, MSCH, 0xB232) \
1180 V(ssch, SSCH, 0xB233) \
1181 V(stsch, STSCH, 0xB234) \
1182 V(tsch, TSCH, 0xB235) \
1183 V(tpi, TPI, 0xB236) \
1184 V(sal, SAL, 0xB237) \
1185 V(rsch, RSCH, 0xB238) \
1186 V(stcrw, STCRW, 0xB239) \
1187 V(stcps, STCPS, 0xB23A) \
1188 V(rchp, RCHP, 0xB23B) \
1189 V(schm, SCHM, 0xB23C) \
1190 V(xsch, XSCH, 0xB276) \
1191 V(rp, RP_Z, 0xB277) \
1192 V(stcke, STCKE, 0xB278) \
1193 V(sacf, SACF, 0xB279) \
1194 V(stckf, STCKF, 0xB27C) \
1195 V(stsi, STSI, 0xB27D) \
1196 V(srnm, SRNM, 0xB299) \
1197 V(stfpc, STFPC, 0xB29C) \
1198 V(lfpc, LFPC, 0xB29D) \
1199 V(stfle, STFLE, 0xB2B0) \
1200 V(stfl, STFL, 0xB2B1) \
1201 V(lpswe, LPSWE, 0xB2B2) \
1202 V(srnmb, SRNMB, 0xB2B8) \
1203 V(srnmt, SRNMT, 0xB2B9) \
1204 V(lfas, LFAS, 0xB2BD) \
1205 V(tend, TEND, 0xB2F8) \
1206 V(tabort, TABORT, 0xB2FC) \
1207 V(trap4, TRAP4, 0xB2FF)
1209#define S390_RX_A_OPCODE_LIST(V) \
1212 V(ic_z, IC_z, 0x43) \
1262#define S390_RX_B_OPCODE_LIST(V) \
1265#define S390_RIE_A_OPCODE_LIST(V) \
1266 V(cgit, CGIT, 0xEC70) \
1269 V(cit, CIT, 0xEC72) \
1273#define S390_RRD_OPCODE_LIST(V) \
1274 V(maebr, MAEBR, 0xB30E) \
1275 V(msebr, MSEBR, 0xB30F) \
1276 V(madbr, MADBR, 0xB31E) \
1277 V(msdbr, MSDBR, 0xB31F) \
1278 V(maer, MAER, 0xB32E) \
1279 V(mser, MSER, 0xB32F) \
1292 V(madr, MADR, 0xB33E) \
1293 V(msdr, MSDR, 0xB33F)
1295#define S390_RIE_B_OPCODE_LIST(V) \
1296 V(cgrj, CGRJ, 0xEC64) \
1299 V(crj, CRJ, 0xEC76) \
1303#define S390_RRE_OPCODE_LIST(V) \
1304 V(ipm, IPM, 0xB222) \
1305 V(ivsk, IVSK, 0xB223) \
1306 V(iac, IAC, 0xB224) \
1307 V(ssar, SSAR, 0xB225) \
1308 V(epar, EPAR, 0xB226) \
1309 V(esar, ESAR, 0xB227) \
1311 V(iske, ISKE, 0xB229) \
1312 V(rrbe, RRBE, 0xB22A) \
1313 V(tb, TB_, 0xB22C) \
1314 V(dxr, DXR, 0xB22D) \
1315 V(pgin, PGIN, 0xB22E) \
1316 V(pgout, PGOUT, 0xB22F) \
1317 V(bakr, BAKR, 0xB240) \
1318 V(cksm, CKSM, 0xB241) \
1319 V(sqdr, SQDR, 0xB244) \
1320 V(sqer, SQER, 0xB245) \
1321 V(stura, STURA, 0xB246) \
1322 V(msta, MSTA, 0xB247) \
1323 V(palb, PALB, 0xB248) \
1324 V(ereg, EREG, 0xB249) \
1325 V(esta, ESTA, 0xB24A) \
1326 V(lura, LURA, 0xB24B) \
1327 V(tar, TAR, 0xB24C) \
1328 V(cpya, CPYA, 0xB24D) \
1329 V(sar, SAR, 0xB24E) \
1330 V(ear, EAR, 0xB24F) \
1331 V(csp, CSP, 0xB250) \
1332 V(msr, MSR, 0xB252) \
1333 V(mvpg, MVPG, 0xB254) \
1334 V(mvst, MVST, 0xB255) \
1335 V(cuse, CUSE, 0xB257) \
1336 V(bsg, BSG, 0xB258) \
1337 V(bsa, BSA, 0xB25A) \
1338 V(clst, CLST, 0xB25D) \
1339 V(srst, SRST, 0xB25E) \
1340 V(cmpsc, CMPSC, 0xB263) \
1341 V(tre, TRE, 0xB2A5) \
1342 V(etnd, ETND, 0xB2EC) \
1343 V(lpebr, LPEBR, 0xB300) \
1344 V(lnebr, LNEBR, 0xB301) \
1345 V(ltebr, LTEBR, 0xB302) \
1346 V(lcebr, LCEBR, 0xB303) \
1353 V(mxdbr, MXDBR, 0xB307) \
1354 V(kebr, KEBR, 0xB308) \
1355 V(cebr, CEBR, 0xB309) \
1356 V(aebr, AEBR, 0xB30A) \
1357 V(sebr, SEBR, 0xB30B) \
1358 V(mdebr, MDEBR, 0xB30C) \
1359 V(debr, DEBR, 0xB30D) \
1360 V(lpdbr, LPDBR, 0xB310) \
1361 V(lndbr, LNDBR, 0xB311) \
1362 V(ltdbr, LTDBR, 0xB312) \
1363 V(lcdbr, LCDBR, 0xB313) \
1364 V(sqebr, SQEBR, 0xB314) \
1365 V(sqdbr, SQDBR, 0xB315) \
1366 V(sqxbr, SQXBR, 0xB316) \
1367 V(meebr, MEEBR, 0xB317) \
1368 V(kdbr, KDBR, 0xB318) \
1369 V(cdbr, CDBR, 0xB319) \
1370 V(adbr, ADBR, 0xB31A) \
1371 V(sdbr, SDBR, 0xB31B) \
1372 V(mdbr, MDBR, 0xB31C) \
1373 V(ddbr, DDBR, 0xB31D) \
1374 V(lder, LDER, 0xB324) \
1379 V(sqxr, SQXR, 0xB336) \
1380 V(meer, MEER, 0xB337) \
1381 V(lpxbr, LPXBR, 0xB340) \
1382 V(lnxbr, LNXBR, 0xB341) \
1383 V(ltxbr, LTXBR, 0xB342) \
1384 V(lcxbr, LCXBR, 0xB343) \
1385 V(kxbr, KXBR, 0xB348) \
1386 V(cxbr, CXBR, 0xB349) \
1387 V(axbr, AXBR, 0xB34A) \
1388 V(sxbr, SXBR, 0xB34B) \
1389 V(mxbr, MXBR, 0xB34C) \
1390 V(dxbr, DXBR, 0xB34D) \
1393 V(thdr, THDR, 0xB359) \
1394 V(lpxr, LPXR, 0xB360) \
1395 V(lnxr, LNXR, 0xB361) \
1396 V(ltxr, LTXR, 0xB362) \
1397 V(lcxr, LCXR, 0xB363) \
1398 V(lxr, LXR, 0xB365) \
1401 V(fixr, FIXR, 0xB367) \
1402 V(cxr, CXR, 0xB369) \
1403 V(lpdfr, LPDFR, 0xB370) \
1404 V(lndfr, LNDFR, 0xB371) \
1405 V(lcdfr, LCDFR, 0xB373) \
1406 V(lzer, LZER, 0xB374) \
1407 V(lzdr, LZDR, 0xB375) \
1408 V(lzxr, LZXR, 0xB376) \
1409 V(fier, FIER, 0xB377) \
1410 V(fidr, FIDR, 0xB37F) \
1411 V(sfpc, SFPC, 0xB384) \
1412 V(sfasr, SFASR, 0xB385) \
1413 V(efpc, EFPC, 0xB38C) \
1416 V(cdfr, CDFR, 0xB3B5) \
1419 V(ldgr, LDGR, 0xB3C1) \
1422 V(cdgr, CDGR, 0xB3C5) \
1425 V(lgdr, LGDR, 0xB3CD) \
1426 V(ltdtr, LTDTR, 0xB3D6) \
1427 V(ltxtr, LTXTR, 0xB3DE) \
1428 V(kdtr, KDTR, 0xB3E0) \
1429 V(cudtr, CUDTR, 0xB3E2) \
1431 V(cdtr, CDTR, 0xB3E4) \
1436 V(kxtr, KXTR, 0xB3E8) \
1440 V(cxtr, CXTR, 0xB3EC) \
1453 V(cxstr, CXSTR, 0xB3FB) \
1457 V(lpgr, LPGR, 0xB900) \
1458 V(lngr, LNGR, 0xB901) \
1459 V(ltgr, LTGR, 0xB902) \
1460 V(lcgr, LCGR, 0xB903) \
1461 V(lgr, LGR, 0xB904) \
1462 V(lurag, LURAG, 0xB905) \
1463 V(lgbr, LGBR, 0xB906) \
1464 V(lghr, LGHR, 0xB907) \
1465 V(agr, AGR, 0xB908) \
1466 V(sgr, SGR, 0xB909) \
1467 V(algr, ALGR, 0xB90A) \
1468 V(slgr, SLGR, 0xB90B) \
1469 V(msgr, MSGR, 0xB90C) \
1470 V(dsgr, DSGR, 0xB90D) \
1471 V(eregg, EREGG, 0xB90E) \
1472 V(lrvgr, LRVGR, 0xB90F) \
1473 V(lpgfr, LPGFR, 0xB910) \
1474 V(lngfr, LNGFR, 0xB911) \
1475 V(ltgfr, LTGFR, 0xB912) \
1476 V(lcgfr, LCGFR, 0xB913) \
1477 V(lgfr, LGFR, 0xB914) \
1478 V(llgfr, LLGFR, 0xB916) \
1481 V(agfr, AGFR, 0xB918) \
1482 V(sgfr, SGFR, 0xB919) \
1483 V(algfr, ALGFR, 0xB91A) \
1484 V(slgfr, SLGFR, 0xB91B) \
1485 V(msgfr, MSGFR, 0xB91C) \
1486 V(dsgfr, DSGFR, 0xB91D) \
1487 V(kmac, KMAC, 0xB91E) \
1488 V(lrvr, LRVR, 0xB91F) \
1489 V(cgr, CGR, 0xB920) \
1490 V(clgr, CLGR, 0xB921) \
1491 V(sturg, STURG, 0xB925) \
1492 V(lbr, LBR, 0xB926) \
1493 V(lhr, LHR, 0xB927) \
1496 V(kmf, KMF, 0xB92A) \
1497 V(kmo, KMO, 0xB92B) \
1498 V(pcc, PCC, 0xB92C) \
1500 V(kmc, KMC, 0xB92F) \
1501 V(cgfr, CGFR, 0xB930) \
1502 V(clgfr, CLGFR, 0xB931) \
1505 V(kimd, KIMD, 0xB93E) \
1506 V(klmd, KLMD, 0xB93F) \
1507 V(bctgr, BCTGR, 0xB946) \
1512 V(ngr, NGR, 0xB980) \
1513 V(ogr, OGR, 0xB981) \
1514 V(xgr, XGR, 0xB982) \
1515 V(flogr, FLOGR, 0xB983) \
1516 V(llgcr, LLGCR, 0xB984) \
1517 V(llghr, LLGHR, 0xB985) \
1518 V(mlgr, MLGR, 0xB986) \
1519 V(dlgr, DLGR, 0xB987) \
1520 V(alcgr, ALCGR, 0xB988) \
1521 V(slbgr, SLBGR, 0xB989) \
1522 V(cspg, CSPG, 0xB98A) \
1523 V(epsw, EPSW, 0xB98D) \
1524 V(llcr, LLCR, 0xB994) \
1525 V(llhr, LLHR, 0xB995) \
1526 V(mlr, MLR, 0xB996) \
1527 V(dlr, DLR, 0xB997) \
1528 V(alcr, ALCR, 0xB998) \
1529 V(slbr, SLBR, 0xB999) \
1530 V(epair, EPAIR, 0xB99A) \
1533 V(esea, ESEA, 0xB99D) \
1534 V(pti, PTI, 0xB99E) \
1535 V(ssair, SSAIR, 0xB99F) \
1536 V(ptf, PTF, 0xB9A2) \
1537 V(rrbm, RRBM, 0xB9AE) \
1538 V(pfmf, PFMF, 0xB9AF) \
1539 V(cu41, CU41, 0xB9B2) \
1540 V(cu42, CU42, 0xB9B3) \
1541 V(srstu, SRSTU, 0xB9BE) \
1542 V(chhr, CHHR, 0xB9CD) \
1543 V(clhhr, CLHHR, 0xB9CF) \
1544 V(chlr, CHLR, 0xB9DD) \
1545 V(clhlr, CLHLR, 0xB9DF) \
1546 V(popcnt, POPCNT_Z, 0xB9E1)
1548#define S390_RIE_C_OPCODE_LIST(V) \
1556 V(clij, CLIJ, 0xEC7F) \
1559#define S390_RIE_D_OPCODE_LIST(V) \
1560 V(ahik, AHIK, 0xECD8) \
1561 V(aghik, AGHIK, 0xECD9) \
1564 V(alghsik, ALGHSIK, \
1567#define S390_VRV_OPCODE_LIST(V) \
1568 V(vgeg, VGEG, 0xE712) \
1569 V(vgef, VGEF, 0xE713) \
1570 V(vsceg, VSCEG, 0xE71A) \
1571 V(vscef, VSCEF, 0xE71B)
1573#define S390_RIE_E_OPCODE_LIST(V) \
1579#define S390_RR_OPCODE_LIST(V) \
1582 V(balr, BALR, 0x05) \
1583 V(bctr, BCTR, 0x06) \
1586 V(bassm, BASSM, 0x0C) \
1587 V(basr, BASR, 0x0D) \
1588 V(mvcl, MVCL, 0x0E) \
1589 V(clcl, CLCL, 0x0F) \
1606 V(lpdr, LPDR, 0x20) \
1607 V(lndr, LNDR, 0x21) \
1608 V(ltdr, LTDR, 0x22) \
1609 V(lcdr, LCDR, 0x23) \
1611 V(ldxr, LDXR, 0x25) \
1613 V(mxdr, MXDR, 0x27) \
1621 V(lper, LPER, 0x30) \
1622 V(lner, LNER, 0x31) \
1623 V(lter, LTER, 0x32) \
1624 V(lcer, LCER, 0x33) \
1625 V(her_z, HER_Z, 0x34) \
1626 V(ledr, LEDR, 0x35) \
1633 V(mder, MDER, 0x3C) \
1638#define S390_RIE_F_OPCODE_LIST(V) \
1645 V(rosbg, ROSBG, 0xEC56) \
1653#define S390_VRX_OPCODE_LIST(V) \
1654 V(vleb, VLEB, 0xE700) \
1655 V(vleh, VLEH, 0xE701) \
1656 V(vleg, VLEG, 0xE702) \
1657 V(vlef, VLEF, 0xE703) \
1660 V(vlrep, VLREP, 0xE705) \
1662 V(vlbb, VLBB, 0xE707) \
1663 V(vlbr, VLBR, 0xE606) \
1664 V(vlbrrep, VLBRREP, \
1672 V(vsteb, VSTEB, 0xE708) \
1673 V(vsteh, VSTEH, 0xE709) \
1674 V(vsteg, VSTEG, 0xE70A) \
1675 V(vstef, VSTEF, 0xE70B) \
1676 V(vst, VST, 0xE70E) \
1679 V(vstebrh, VSTEBRH, \
1681 V(vstebrf, VSTEBRF, \
1683 V(vstebrg, VSTEBRG, \
1686#define S390_RIE_G_OPCODE_LIST(V) \
1691 V(lochhi, LOCHHI, 0xEC4E) \
1694#define S390_RRS_OPCODE_LIST(V) \
1695 V(cgrb, CGRB, 0xECE4) \
1696 V(clgrb, CLGRB, 0xECE5) \
1697 V(crb, CRB, 0xECF6) \
1698 V(clrb, CLRB, 0xECF7)
1700#define S390_OPCODE_LIST(V) \
1701 S390_RSY_A_OPCODE_LIST(V) \
1702 S390_RSY_B_OPCODE_LIST(V) \
1703 S390_RXE_OPCODE_LIST(V) \
1704 S390_RRF_A_OPCODE_LIST(V) \
1705 S390_RXF_OPCODE_LIST(V) \
1706 S390_IE_OPCODE_LIST(V) \
1707 S390_RRF_B_OPCODE_LIST(V) \
1708 S390_RRF_C_OPCODE_LIST(V) \
1709 S390_MII_OPCODE_LIST(V) \
1710 S390_RRF_D_OPCODE_LIST(V) \
1711 S390_RRF_E_OPCODE_LIST(V) \
1712 S390_VRR_A_OPCODE_LIST(V) \
1713 S390_VRR_B_OPCODE_LIST(V) \
1714 S390_VRR_C_OPCODE_LIST(V) \
1715 S390_VRI_A_OPCODE_LIST(V) \
1716 S390_VRR_D_OPCODE_LIST(V) \
1717 S390_VRI_B_OPCODE_LIST(V) \
1718 S390_VRR_E_OPCODE_LIST(V) \
1719 S390_VRI_C_OPCODE_LIST(V) \
1720 S390_VRI_D_OPCODE_LIST(V) \
1721 S390_VRR_F_OPCODE_LIST(V) \
1722 S390_RIS_OPCODE_LIST(V) \
1723 S390_VRI_E_OPCODE_LIST(V) \
1724 S390_RSL_A_OPCODE_LIST(V) \
1725 S390_RSL_B_OPCODE_LIST(V) \
1726 S390_SI_OPCODE_LIST(V) \
1727 S390_SIL_OPCODE_LIST(V) \
1728 S390_VRS_A_OPCODE_LIST(V) \
1729 S390_RIL_A_OPCODE_LIST(V) \
1730 S390_RIL_B_OPCODE_LIST(V) \
1731 S390_VRS_B_OPCODE_LIST(V) \
1732 S390_RIL_C_OPCODE_LIST(V) \
1733 S390_VRS_C_OPCODE_LIST(V) \
1734 S390_RI_A_OPCODE_LIST(V) \
1735 S390_RSI_OPCODE_LIST(V) \
1736 S390_RI_B_OPCODE_LIST(V) \
1737 S390_RI_C_OPCODE_LIST(V) \
1738 S390_SMI_OPCODE_LIST(V) \
1739 S390_RXY_A_OPCODE_LIST(V) \
1740 S390_RXY_B_OPCODE_LIST(V) \
1741 S390_SIY_OPCODE_LIST(V) \
1742 S390_SS_A_OPCODE_LIST(V) \
1743 S390_E_OPCODE_LIST(V) \
1744 S390_SS_B_OPCODE_LIST(V) \
1745 S390_SS_C_OPCODE_LIST(V) \
1746 S390_SS_D_OPCODE_LIST(V) \
1747 S390_SS_E_OPCODE_LIST(V) \
1748 S390_I_OPCODE_LIST(V) \
1749 S390_SS_F_OPCODE_LIST(V) \
1750 S390_SSE_OPCODE_LIST(V) \
1751 S390_SSF_OPCODE_LIST(V) \
1752 S390_RS_A_OPCODE_LIST(V) \
1753 S390_RS_B_OPCODE_LIST(V) \
1754 S390_S_OPCODE_LIST(V) \
1755 S390_RX_A_OPCODE_LIST(V) \
1756 S390_RX_B_OPCODE_LIST(V) \
1757 S390_RIE_A_OPCODE_LIST(V) \
1758 S390_RRD_OPCODE_LIST(V) \
1759 S390_RIE_B_OPCODE_LIST(V) \
1760 S390_RRE_OPCODE_LIST(V) \
1761 S390_RIE_C_OPCODE_LIST(V) \
1762 S390_RIE_D_OPCODE_LIST(V) \
1763 S390_VRV_OPCODE_LIST(V) \
1764 S390_RIE_E_OPCODE_LIST(V) \
1765 S390_RR_OPCODE_LIST(V) \
1766 S390_RIE_F_OPCODE_LIST(V) \
1767 S390_VRX_OPCODE_LIST(V) \
1768 S390_RIE_G_OPCODE_LIST(V) \
1769 S390_RRS_OPCODE_LIST(V)
1773#define DECLARE_OPCODES(name, opcode_name, opcode_value) \
1774 opcode_name = opcode_value,
1776#undef DECLARE_OPCODES
1831#define B32 ((uint64_t)1 << 32)
1832#define B36 ((uint64_t)1 << 36)
1833#define B40 ((uint64_t)1 << 40)
1949 template <
typename T>
1952 reinterpret_cast<const uint8_t*
>(
this));
1955 return *
reinterpret_cast<const Instr*
>(
this);
1959 template <
typename T>
1963 value, jit_allocation);
1977 template <
typename T,
typename U>
1990 reinterpret_cast<const uint8_t*
>(
this));
2018 uint8_t topNibble = (*
instr >> 4) & 0xF;
2021 else if (topNibble <= 0xB)
2031 else if (4 == length)
2038 template <
typename T>
2040#if !V8_TARGET_LITTLE_ENDIAN
2041 if (
sizeof(T) <= 4) {
2042 return *
reinterpret_cast<const T*
>(
instr);
2047 uint64_t fourBytes = *
reinterpret_cast<const uint32_t*
>(
instr);
2048 uint16_t twoBytes = *
reinterpret_cast<const uint16_t*
>(
instr + 4);
2049 return (fourBytes << 16 | twoBytes);
2058 uint32_t size = (
sizeof(
T) == 8) ? 6 :
sizeof(
T);
2060 for (T
i = 0;
i <
size;
i++) {
2062 instr_bits |= *(
instr +
i);
2069 template <
typename T>
2071 uint8_t*
instr, T value,
2073#if V8_TARGET_LITTLE_ENDIAN
2079 if (
sizeof(T) == 2) {
2081 value = ((value & 0x00FF) << 8) | ((value & 0xFF00) >> 8);
2082 }
else if (
sizeof(T) == 4) {
2084 value = ((value & 0x000000FF) << 24) | ((value & 0x0000FF00) << 8) |
2085 ((value & 0x00FF0000) >> 8) | ((value & 0xFF000000) >> 24);
2086 }
else if (
sizeof(T) == 8) {
2088 uint64_t orig_value =
static_cast<uint64_t
>(
value);
2089 value = (
static_cast<uint64_t
>(orig_value & 0xFF) << 40) |
2090 (
static_cast<uint64_t
>((orig_value >> 8) & 0xFF) << 32) |
2091 (
static_cast<uint64_t
>((orig_value >> 16) & 0xFF) << 24) |
2092 (
static_cast<uint64_t
>((orig_value >> 24) & 0xFF) << 16) |
2093 (
static_cast<uint64_t
>((orig_value >> 32) & 0xFF) << 8) |
2094 (
static_cast<uint64_t
>((orig_value >> 40) & 0xFF));
2097 if (
sizeof(T) <= 4) {
2098 if (jit_allocation) {
2099 jit_allocation->WriteUnalignedValue(
reinterpret_cast<Address>(
instr),
2102 *
reinterpret_cast<T*
>(
instr) = value;
2105#if V8_TARGET_LITTLE_ENDIAN
2106 uint64_t orig_value =
static_cast<uint64_t
>(
value);
2107 if (jit_allocation) {
2108 jit_allocation->WriteUnalignedValue(
reinterpret_cast<Address>(
instr),
2109 static_cast<uint32_t
>(value));
2110 jit_allocation->WriteUnalignedValue(
2112 static_cast<uint16_t
>((orig_value >> 32) & 0xFFFF));
2114 *
reinterpret_cast<uint32_t*
>(
instr) =
static_cast<uint32_t
>(value);
2115 *
reinterpret_cast<uint16_t*
>(
instr + 4) =
2116 static_cast<uint16_t
>((orig_value >> 32) & 0xFFFF);
2119 if (jit_allocation) {
2120 jit_allocation->WriteUnalignedValue(
reinterpret_cast<Address>(
instr),
2121 static_cast<uint32_t
>(value >> 16));
2122 jit_allocation->WriteUnalignedValue(
2124 static_cast<uint16_t
>(value & 0xFFFF));
2126 *
reinterpret_cast<uint32_t*
>(
instr) =
2127 static_cast<uint32_t
>(value >> 16);
2128 *
reinterpret_cast<uint16_t*
>(
instr + 4) =
2129 static_cast<uint16_t
>(value & 0xFFFF);
2137 const uint8_t firstByte = *
instr;
2148 switch (opcodeType) {
2151 return static_cast<Opcode>(*instr);
2185#define DECLARE_FIELD_FOR_TWO_BYTE_INSTR(name, T, lo, hi) \
2186 inline int name() const { \
2187 return Bits<TwoByteInstr, T>(15 - (lo), 15 - (hi) + 1); \
2190#define DECLARE_FIELD_FOR_FOUR_BYTE_INSTR(name, T, lo, hi) \
2191 inline int name() const { \
2192 return Bits<FourByteInstr, T>(31 - (lo), 31 - (hi) + 1); \
2195#define DECLARE_FIELD_FOR_SIX_BYTE_INSTR(name, T, lo, hi) \
2196 inline int name() const { \
2197 return Bits<SixByteInstr, T>(47 - (lo), 47 - (hi) + 1); \
2202 inline int size()
const {
return 2; }
2207 inline int size()
const {
return 4; }
2212 inline int size()
const {
return 6; }
2261 inline int size()
const {
return 2; }
2271 inline int size()
const {
return 4; }
2282 inline int size()
const {
return 4; }
2291 inline int size()
const {
return 4; }
2303 inline int size()
const {
return 4; }
2314 inline int size()
const {
return 4; }
2328 inline int size()
const {
return 6; }
2340 inline int size()
const {
return 4; }
2354 inline int size()
const {
return 6; }
2365 inline int size()
const {
return 6; }
2378 inline int size()
const {
return 4; }
2391 inline int size()
const {
return 6; }
2400 inline int size()
const {
return 6; }
2411 inline int size()
const {
return 6; }
2421 inline int size()
const {
return 6; }
2435 inline int size()
const {
return 6; }
static const char * names_[kNumDoubleRegisters]
static int Number(const char *name)
Instr InstructionBits() const
int BitField(int hi, int lo) const
static int BitField(Instr instr, int hi, int lo)
static Instruction * At(uint8_t *pc)
U Bits(int hi, int lo) const
static OpcodeFormatType getOpcodeFormatType(const uint8_t *instr)
void SetInstructionBits(T value, WritableJitAllocation *jit_allocation=nullptr) const
SoftwareInterruptCodes SvcValue() const
static int Bit(Instr instr, int nr)
static void SetInstructionBits(uint8_t *instr, T value, WritableJitAllocation *jit_allocation=nullptr)
int Bits(int hi, int lo) const
static uint64_t InstructionBits(const uint8_t *instr)
static T InstructionBits(const uint8_t *instr)
T InstructionBits() const
static OpcodeFormatType OpcodeFormatTable[256]
@ TWO_BYTE_DISJOINT_OPCODE
V8_EXPORT_PRIVATE void SetInstructionBits(Instr value, WritableJitAllocation *jit_allocation=nullptr)
static Opcode S390OpcodeValue(const uint8_t *instr)
DISALLOW_IMPLICIT_CONSTRUCTORS(Instruction)
static int Bits(Instr instr, int hi, int lo)
static int InstructionLength(const uint8_t *instr)
uint32_t I2UnsignedValue() const
Condition M1Value() const
unsigned int D2Value() const
static int Number(const char *name)
static const char * names_[kNumRegisters]
#define DECLARE_OPCODES(name, opcode_name, opcode_value)
#define S390_OPCODE_LIST(V)
#define DECLARE_FIELD_FOR_SIX_BYTE_INSTR(name, T, lo, hi)
#define DECLARE_FIELD_FOR_FOUR_BYTE_INSTR(name, T, lo, hi)
#define DECLARE_FIELD_FOR_TWO_BYTE_INSTR(name, T, lo, hi)
constexpr VFPRoundingMode kRoundToNearest
constexpr int32_t kDefaultStopCode
constexpr VFPRoundingMode kRoundToMinusInf
@ kUnsignedGreaterThanEqual
CheckForInexactConversion
@ kCheckForInexactConversion
@ kDontCheckForInexactConversion
constexpr SoftwareInterruptCodes kStopCode
const Instr rtCallRedirInstr
constexpr uint32_t kMaxStopCode
const int kNumDoubleRegisters
const FourByteInstr kFourByteBrCondMask
constexpr MiscInstructionsBits74 BKPT
constexpr SoftwareInterruptCodes kBreakpoint
@ ROUND_TO_NEAREST_TO_EVEN
@ ROUND_TO_NEAREST_AWAY_FROM_0
constexpr VFPRoundingMode kRoundToPlusInf
constexpr SoftwareInterruptCodes kCallRtRedirected
const SixByteInstr kSixByteBrCondMask
const uint32_t kFPRoundingModeMask
constexpr int kNoRegister
Condition NegateCondition(Condition cond)
constexpr size_t kMaxPCRelativeCodeRangeInMB
constexpr int kHasFunctionDescriptorBitShift
constexpr int kHasFunctionDescriptorBitMask
constexpr VFPRoundingMode kRoundToZero
constexpr int kRootRegisterBias
Condition to_condition(Condition cond)
bool is_signed(Condition cond)
constexpr uint32_t kStopCodeMask
constexpr int kNumRegisters
#define DCHECK(condition)
#define V8_EXPORT_PRIVATE