Lines Matching refs:Prefix
76 Prefix"):
635 The top 8 bits of the prefix are 0x55, just as a hacky way to
636 ensure it really is a valid prefix.
638 Things you can safely assume about a well-formed prefix:
645 typedef UInt Prefix;
654 #define PFX_LOCK (1<<7) /* bus LOCK prefix present (0xF0) */
655 #define PFX_F2 (1<<8) /* REP/REPE/REPZ prefix present (0xF2) */
656 #define PFX_F3 (1<<9) /* REPNE/REPNZ prefix present (0xF3) */
657 #define PFX_CS (1<<10) /* CS segment prefix present (0x2E) */
658 #define PFX_DS (1<<11) /* DS segment prefix present (0x3E) */
659 #define PFX_ES (1<<12) /* ES segment prefix present (0x26) */
660 #define PFX_FS (1<<13) /* FS segment prefix present (0x64) */
661 #define PFX_GS (1<<14) /* GS segment prefix present (0x65) */
662 #define PFX_SS (1<<15) /* SS segment prefix present (0x36) */
663 #define PFX_VEX (1<<16) /* VEX prefix present (0xC4 or 0xC5) */
676 static Bool IS_VALID_PFX ( Prefix pfx ) {
680 static Bool haveREX ( Prefix pfx ) {
684 static Int getRexW ( Prefix pfx ) {
687 static Int getRexR ( Prefix pfx ) {
690 static Int getRexX ( Prefix pfx ) {
693 static Int getRexB ( Prefix pfx ) {
697 /* Check a prefix doesn't have F2 or F3 set in it, since usually that
699 static Bool haveF2orF3 ( Prefix pfx ) {
702 static Bool haveF2andF3 ( Prefix pfx ) {
705 static Bool haveF2 ( Prefix pfx ) {
708 static Bool haveF3 ( Prefix pfx ) {
712 static Bool have66 ( Prefix pfx ) {
715 static Bool haveASO ( Prefix pfx ) {
718 static Bool haveLOCK ( Prefix pfx ) {
723 static Bool have66noF2noF3 ( Prefix pfx )
730 static Bool haveF2no66noF3 ( Prefix pfx )
737 static Bool haveF3no66noF2 ( Prefix pfx )
744 static Bool haveF3noF2 ( Prefix pfx )
751 static Bool haveF2noF3 ( Prefix pfx )
758 static Bool haveNo66noF2noF3 ( Prefix pfx )
765 static Bool have66orF2orF3 ( Prefix pfx )
771 static Bool have66orF3 ( Prefix pfx )
776 /* Clear all the segment-override bits in a prefix. */
777 static Prefix clearSegBits ( Prefix p )
784 static UInt getVexNvvvv ( Prefix pfx ) {
790 static Bool haveVEX ( Prefix pfx ) {
794 static Int getVexL ( Prefix pfx ) {
807 overlap valid Prefix values, for sanity checking.
856 the same fashion that an 0x66 prefix indicates the operand size is
1157 static IRExpr* getIReg64rexX ( Prefix pfx, UInt lo3bits )
1164 static const HChar* nameIReg64rexX ( Prefix pfx, UInt lo3bits )
1171 static const HChar* nameIRegRexB ( Int sz, Prefix pfx, UInt lo3bits )
1180 static IRExpr* getIRegRexB ( Int sz, Prefix pfx, UInt lo3bits )
1203 static void putIRegRexB ( Int sz, Prefix pfx, UInt lo3bits, IRExpr* e )
1225 static UInt gregOfRexRM ( Prefix pfx, UChar mod_reg_rm )
1237 static UInt eregOfRexRM ( Prefix pfx, UChar mod_reg_rm )
1253 static UInt offsetIRegG ( Int sz, Prefix pfx, UChar mod_reg_rm )
1264 IRExpr* getIRegG ( Int sz, Prefix pfx, UChar mod_reg_rm )
1278 void putIRegG ( Int sz, Prefix pfx, UChar mod_reg_rm, IRExpr* e )
1288 const HChar* nameIRegG ( Int sz, Prefix pfx, UChar mod_reg_rm )
1296 IRExpr* getIRegV ( Int sz, Prefix pfx )
1310 void putIRegV ( Int sz, Prefix pfx, IRExpr* e )
1320 const HChar* nameIRegV ( Int sz, Prefix pfx )
1332 static UInt offsetIRegE ( Int sz, Prefix pfx, UChar mod_reg_rm )
1343 IRExpr* getIRegE ( Int sz, Prefix pfx, UChar mod_reg_rm )
1357 void putIRegE ( Int sz, Prefix pfx, UChar mod_reg_rm, IRExpr* e )
1367 const HChar* nameIRegE ( Int sz, Prefix pfx, UChar mod_reg_rm )
2306 const HChar* segRegTxt ( Prefix pfx )
2324 Prefix pfx, IRExpr* virtual )
2448 VexAbiInfo* vbi, Prefix pfx, Long delta,
2720 VexAbiInfo* vbi, Prefix pfx, Long delta,
2801 static UInt lengthAMode ( Prefix pfx, Long delta )
2909 Prefix pfx,
3025 Prefix pfx,
3158 Prefix pfx,
3205 Prefix pfx,
3292 Prefix pfx,
3396 Prefix pfx,
3506 Prefix pfx,
3780 Prefix pfx,
3990 Prefix pfx, Int sz, Long delta, Bool* decode_OK )
4168 Prefix pfx, Long delta, Bool* decode_OK )
4252 Prefix pfx, Int sz, Long delta,
4270 F2/CALL and F2/JMP may have bnd prefix. */
4294 if (haveF2(pfx)) DIP("bnd ; "); /* MPX bnd prefix. */
4310 if (haveF2(pfx)) DIP("bnd ; "); /* MPX bnd prefix. */
4387 if (haveF2(pfx)) DIP("bnd ; "); /* MPX bnd prefix. */
4403 if (haveF2(pfx)) DIP("bnd ; "); /* MPX bnd prefix. */
4463 void dis_string_op( void (*dis_OP)( Int, IRTemp, Prefix pfx ),
4464 Int sz, const HChar* name, Prefix pfx )
4476 void dis_MOVS ( Int sz, IRTemp t_inc, Prefix pfx )
4504 void dis_LODS ( Int sz, IRTemp t_inc, Prefix pfx )
4524 void dis_STOS ( Int sz, IRTemp t_inc, Prefix pfx )
4547 void dis_CMPS ( Int sz, IRTemp t_inc, Prefix pfx )
4581 void dis_SCAS ( Int sz, IRTemp t_inc, Prefix pfx )
4613 void (*dis_OP)(Int, IRTemp, Prefix),
4615 Prefix pfx )
4668 Prefix pfx,
4711 Prefix pfx,
5337 VexAbiInfo* vbi, Prefix pfx, Long delta )
7037 Prefix pfx,
7187 Prefix pfx, Long delta,
7319 VexAbiInfo* vbi, Prefix pfx, Int sz, Long delta )
7757 Prefix pfx,
7942 Prefix pfx, Int sz, Long delta, BtOp op,
8119 Prefix pfx, Int sz, Long delta, Bool fwds )
8236 void codegen_xchg_rAX_Reg ( Prefix pfx, Int sz, UInt regLo3 )
8320 Prefix pfx,
8339 reg-reg: ignore any lock prefix, generate sequence based
8342 reg-mem, not locked: ignore any lock prefix, generate sequence
8444 Prefix pfx,
8495 Prefix pfx, Int sz, Long delta0 )
8508 reg-reg: ignore any lock prefix,
8511 reg-mem, not locked: ignore any lock prefix, generate 'naive'
8702 Prefix pfx, Long delta,
8752 Prefix pfx, Long delta,
8762 Prefix pfx, Long delta,
8772 Prefix pfx, Long delta,
8808 Prefix pfx, Long delta,
8845 Prefix pfx, Long delta,
8876 Prefix pfx, Long delta,
8920 Prefix pfx, Long delta,
8966 Prefix pfx, Long delta,
9121 Prefix pfx, Long delta,
9197 Prefix pfx, Long delta,
9271 ULong dis_SSE_shiftE_imm ( Prefix pfx,
9813 byte) may validly be used with a LOCK prefix. The following insns
9948 static Long dis_COMISD ( VexAbiInfo* vbi, Prefix pfx,
9991 static Long dis_COMISS ( VexAbiInfo* vbi, Prefix pfx,
10036 static Long dis_PSHUFD_32x4 ( VexAbiInfo* vbi, Prefix pfx,
10082 static Long dis_PSHUFD_32x8 ( VexAbiInfo* vbi, Prefix pfx, Long delta )
10217 static Long dis_CVTxSD2SI ( VexAbiInfo* vbi, Prefix pfx,
10265 static Long dis_CVTxSS2SI ( VexAbiInfo* vbi, Prefix pfx,
10317 static Long dis_CVTPS2PD_128 ( VexAbiInfo* vbi, Prefix pfx,
10352 static Long dis_CVTPS2PD_256 ( VexAbiInfo* vbi, Prefix pfx,
10393 static Long dis_CVTPD2PS_128 ( VexAbiInfo* vbi, Prefix pfx,
10438 static Long dis_CVTxPS2DQ_128 ( VexAbiInfo* vbi, Prefix pfx,
10488 static Long dis_CVTxPS2DQ_256 ( VexAbiInfo* vbi, Prefix pfx,
10540 static Long dis_CVTxPD2DQ_128 ( VexAbiInfo* vbi, Prefix pfx,
10595 static Long dis_CVTxPD2DQ_256 ( VexAbiInfo* vbi, Prefix pfx,
10649 static Long dis_CVTDQ2PS_128 ( VexAbiInfo* vbi, Prefix pfx,
10697 static Long dis_CVTDQ2PS_256 ( VexAbiInfo* vbi, Prefix pfx,
10750 static Long dis_PMOVMSKB_128 ( VexAbiInfo* vbi, Prefix pfx,
10769 static Long dis_PMOVMSKB_256 ( VexAbiInfo* vbi, Prefix pfx,
11224 static Long dis_PSHUFxW_128 ( VexAbiInfo* vbi, Prefix pfx,
11279 static Long dis_PSHUFxW_256 ( VexAbiInfo* vbi, Prefix pfx,
11326 static Long dis_PEXTRW_128_EregOnly_toG ( VexAbiInfo* vbi, Prefix pfx,
11365 static Long dis_CVTDQ2PD_128 ( VexAbiInfo* vbi, Prefix pfx,
11400 static Long dis_STMXCSR ( VexAbiInfo* vbi, Prefix pfx,
11432 static Long dis_LDMXCSR ( VexAbiInfo* vbi, Prefix pfx,
11550 static Long dis_MASKMOVDQU ( VexAbiInfo* vbi, Prefix pfx,
11593 static Long dis_MOVMSKPS_128 ( VexAbiInfo* vbi, Prefix pfx,
11625 static Long dis_MOVMSKPS_256 ( VexAbiInfo* vbi, Prefix pfx, Long delta )
11675 static Long dis_MOVMSKPD_128 ( VexAbiInfo* vbi, Prefix pfx,
11697 static Long dis_MOVMSKPD_256 ( VexAbiInfo* vbi, Prefix pfx, Long delta )
11732 Prefix pfx, Int sz, Long deltaIN,
14629 static Long dis_MOVDDUP_128 ( VexAbiInfo* vbi, Prefix pfx,
14659 static Long dis_MOVDDUP_256 ( VexAbiInfo* vbi, Prefix pfx,
14691 static Long dis_MOVSxDUP_128 ( VexAbiInfo* vbi, Prefix pfx,
14725 static Long dis_MOVSxDUP_256 ( VexAbiInfo* vbi, Prefix pfx,
14806 Prefix pfx, Int sz, Long deltaIN )
15095 static Long dis_PHADD_128 ( VexAbiInfo* vbi, Prefix pfx, Long delta,
15169 static Long dis_PHADD_256 ( VexAbiInfo* vbi, Prefix pfx, Long delta, UChar opc )
15286 Prefix pfx, Int sz, Long deltaIN )
15805 Prefix pfx, Int sz, Long deltaIN )
15932 Prefix pfx, Int sz, Long deltaIN )
16184 static Long dis_VBLENDV_128 ( VexAbiInfo* vbi, Prefix pfx, Long delta,
16223 static Long dis_VBLENDV_256 ( VexAbiInfo* vbi, Prefix pfx, Long delta,
16362 static Long dis_xTESTy_128 ( VexAbiInfo* vbi, Prefix pfx,
16415 static Long dis_xTESTy_256 ( VexAbiInfo* vbi, Prefix pfx,
16473 static Long dis_PMOVxXBW_128 ( VexAbiInfo* vbi, Prefix pfx,
16516 static Long dis_PMOVxXBW_256 ( VexAbiInfo* vbi, Prefix pfx,
16556 static Long dis_PMOVxXWD_128 ( VexAbiInfo* vbi, Prefix pfx,
16595 static Long dis_PMOVxXWD_256 ( VexAbiInfo* vbi, Prefix pfx,
16634 static Long dis_PMOVSXWQ_128 ( VexAbiInfo* vbi, Prefix pfx,
16667 static Long dis_PMOVSXWQ_256 ( VexAbiInfo* vbi, Prefix pfx, Long delta )
16702 static Long dis_PMOVZXWQ_128 ( VexAbiInfo* vbi, Prefix pfx,
16738 static Long dis_PMOVZXWQ_256 ( VexAbiInfo* vbi, Prefix pfx,
16778 static Long dis_PMOVxXDQ_128 ( VexAbiInfo* vbi, Prefix pfx,
16825 static Long dis_PMOVxXDQ_256 ( VexAbiInfo* vbi, Prefix pfx,
16878 static Long dis_PMOVxXBD_128 ( VexAbiInfo* vbi, Prefix pfx,
16921 static Long dis_PMOVxXBD_256 ( VexAbiInfo* vbi, Prefix pfx,
16968 static Long dis_PMOVSXBQ_128 ( VexAbiInfo* vbi, Prefix pfx,
17001 static Long dis_PMOVSXBQ_256 ( VexAbiInfo* vbi, Prefix pfx,
17047 static Long dis_PMOVZXBQ_128 ( VexAbiInfo* vbi, Prefix pfx,
17086 static Long dis_PMOVZXBQ_256 ( VexAbiInfo* vbi, Prefix pfx,
17130 static Long dis_PHMINPOSUW_128 ( VexAbiInfo* vbi, Prefix pfx,
17170 static Long dis_AESx ( VexAbiInfo* vbi, Prefix pfx,
17262 static Long dis_AESKEYGENASSIST ( VexAbiInfo* vbi, Prefix pfx,
17331 Prefix pfx, Int sz, Long deltaIN )
17856 static Long dis_PEXTRW ( VexAbiInfo* vbi, Prefix pfx,
17911 static Long dis_PEXTRD ( VexAbiInfo* vbi, Prefix pfx,
17964 static Long dis_PEXTRQ ( VexAbiInfo* vbi, Prefix pfx,
18145 static Long dis_PCMPxSTRx ( VexAbiInfo* vbi, Prefix pfx,
18388 static Long dis_PEXTRB_128_GtoE ( VexAbiInfo* vbi, Prefix pfx,
18564 static Long dis_EXTRACTPS ( VexAbiInfo* vbi, Prefix pfx,
18644 Prefix pfx, Int sz, Long deltaIN )
19331 Prefix pfx, Int sz, Long deltaIN
19356 prefix is also present. Do this check by looking at the modrm
19733 if (haveF2(pfx)) DIP("bnd ; "); /* MPX bnd prefix. */
19843 prefix. Therefore, generate CAS regardless of the presence or
19844 otherwise of a LOCK prefix. */
19920 /* NOTE! this is the one place where a segment override prefix
20048 /* 24 July 06: has also been seen with a redundant REX prefix,
20278 case 0xAC: /* LODS, no REP prefix */
20387 if (haveF2(pfx)) DIP("bnd ; "); /* MPX bnd prefix. */
20397 if (haveF2(pfx)) DIP("bnd ; "); /* MPX bnd prefix. */
20633 the address size prefix can have an effect. It changes the
20802 if (haveF2(pfx)) DIP("bnd ; "); /* MPX bnd prefix. */
20828 if (haveF2(pfx)) DIP("bnd ; "); /* MPX bnd prefix. */
20845 if (haveF2(pfx)) DIP("bnd ; "); /* MPX bnd prefix. */
21042 Prefix pfx, Int sz, Long deltaIN
21264 if (haveF2(pfx)) DIP("bnd ; "); /* MPX bnd prefix. */
21669 prefix. Life is too short to bother with generating two
21670 different translations for the with/without-LOCK-prefix
21827 /* So there's no SIMD prefix. */
21976 Prefix pfx, Int sz, Long deltaIN
22061 Prefix pfx, Int sz, Long deltaIN
22108 Prefix pfx, Long delta, const HChar* name,
22176 Prefix pfx, Long delta, const HChar* name,
22191 Prefix pfx, Long delta, const HChar* name,
22204 Prefix pfx, Long delta,
22278 Prefix pfx, Long delta,
22354 Prefix pfx, Long delta,
22464 Long dis_AVX128_shiftE_to_V_imm( Prefix pfx,
22521 Long dis_AVX256_shiftE_to_V_imm( Prefix pfx,
22585 Prefix pfx, Long delta,
22628 Prefix pfx, Long delta,
22675 Prefix pfx, Long delta,
22722 Prefix pfx, Long delta,
22762 Prefix pfx, Long delta,
22778 Prefix pfx, Long delta,
22888 Prefix pfx, Long delta,
22958 Prefix pfx, Long delta,
22991 Prefix pfx, Long delta,
23021 Prefix pfx, Long delta, const HChar* name,
23088 Prefix pfx, Long delta,
23104 Prefix pfx, Long delta, const HChar* name,
23119 Prefix pfx, Long delta, const HChar* name,
23133 Prefix pfx, Long delta,
23166 Prefix pfx, Long delta,
23194 static Long dis_CVTDQ2PD_256 ( VexAbiInfo* vbi, Prefix pfx,
23230 static Long dis_CVTPD2PS_256 ( VexAbiInfo* vbi, Prefix pfx,
23364 Prefix pfx, Int sz, Long deltaIN
26977 VexAbiInfo* vbi, Prefix pfx, Long delta,
27012 static Long dis_FMA ( VexAbiInfo* vbi, Prefix pfx, Long delta, UChar opc )
27201 Prefix pfx, Long delta,
27262 Prefix pfx, Long delta,
27365 Prefix pfx, Int sz, Long deltaIN
29522 Prefix pfx, Int sz, Long deltaIN
31126 2 if an 0x66 prefix is seen and 8 if REX.W is 1. In case of
31131 Prefix pfx = PFX_EMPTY;
31263 VEX prefix if that's appropriate. */
31346 /* We have a %fs prefix. Reject it if there's no evidence in 'vbi'
31361 leading escapes. Check that any LOCK prefix is actually
31424 prefix that loads a YMM register operand ..." zeroes out bits
31447 /* The presence of a VEX prefix, by Intel definition,
31813 vpanic("disInstr_AMD64: inconsistency in LOCK prefix handling");