Lines Matching refs:reg

153 	LSEG,		/* for 3-bit seg reg encoding */
519 *bit pattern: 0000 1111 1100 1reg
1444 #define REX_R 0x04 /* high order bit extension of ModRM reg field */
1446 #define REX_B 0x01 /* extends ModRM r_m, SIB base, or opcode reg */
1467 #define MM_OPND 2 /* "value" used to indicate a mmx reg */
1468 #define XMM_OPND 3 /* "value" used to indicate a xmm reg */
1469 #define SEG_OPND 4 /* "value" used to indicate a segment reg */
1470 #define CONTROL_OPND 5 /* "value" used to indicate a control reg */
1471 #define DEBUG_OPND 6 /* "value" used to indicate a debug reg */
1472 #define TEST_OPND 7 /* "value" used to indicate a test reg */
1473 #define WORD_OPND 8 /* w-bit value indicating word size reg */
1529 dtrace_get_modrm(dis86_t *x, uint_t *mode, uint_t *reg, uint_t *r_m)
1534 dtrace_get_SIB(x, mode, reg, r_m);
1544 dtrace_rex_adjust(uint_t rex_prefix, uint_t mode, uint_t *reg, uint_t *r_m)
1547 if (reg != NULL && r_m == NULL) {
1549 *reg += 8;
1551 if (reg != NULL && (REX_R & rex_prefix) != 0)
1552 *reg += 8;
1660 * r_m = r_m (or reg if mode == 3) field from ModRM byte
1664 * the value of reg or r_m must have already been adjusted for any REX prefix.
1867 #define STANDARD_MODRM(x, mode, reg, r_m, rex_prefix, wbit, vbit) { \
1868 dtrace_get_modrm(x, &mode, &reg, &r_m); \
1869 dtrace_rex_adjust(rex_prefix, mode, &reg, &r_m); \
1871 dtrace_get_operand(x, REG_ONLY, reg, wbit, 1 - vbit); \
1878 * w2 is for the reg operand
1880 #define MIXED_MM(x, mode, reg, r_m, rex_prefix, wbit, w2, vbit) { \
1881 dtrace_get_modrm(x, &mode, &reg, &r_m); \
1882 dtrace_rex_adjust(rex_prefix, mode, &reg, &r_m); \
1884 dtrace_get_operand(x, REG_ONLY, reg, w2, 1 - vbit); \
1893 #define THREEOPERAND(x, mode, reg, r_m, rex_prefix, wbit, w2, immsize, vbit) { \
1894 dtrace_get_modrm(x, &mode, &reg, &r_m); \
1895 dtrace_rex_adjust(rex_prefix, mode, &reg, &r_m); \
1897 dtrace_get_operand(x, REG_ONLY, reg, w2, 1+vbit); \
1904 #define FOUROPERAND(x, mode, reg, r_m, rex_prefix, wbit, w2, immsize) { \
1905 dtrace_get_modrm(x, &mode, &reg, &r_m); \
1906 dtrace_rex_adjust(rex_prefix, mode, &reg, &r_m); \
1908 dtrace_get_operand(x, REG_ONLY, reg, w2, 3); \
1916 #define ONEOPERAND_TWOIMM(x, mode, reg, r_m, rex_prefix, wbit, immsize) { \
1917 dtrace_get_modrm(x, &mode, &reg, &r_m); \
1918 dtrace_rex_adjust(rex_prefix, mode, &reg, &r_m); \
1951 uint_t reg; /* reg value from ModRM byte */
2213 reg = opcode3;
2424 vbit = 0; /* initialize for mem/reg -> reg */
2427 * amd64 instruction to sign extend 32 bit reg/mem operands
2437 dtrace_get_modrm(x, &mode, &reg, &r_m);
2438 dtrace_rex_adjust(rex_prefix, mode, &reg, &r_m);
2440 dtrace_get_operand(x, REG_ONLY, reg, LONG_OPND, 1);
2457 dtrace_get_modrm(x, &mode, &reg, &r_m);
2458 dtrace_rex_adjust(rex_prefix, mode, &reg, &r_m);
2459 dtrace_get_operand(x, REG_ONLY, reg, LONG_OPND, 1);
2470 dtrace_get_modrm(x, &mode, &reg, &r_m);
2471 dtrace_rex_adjust(rex_prefix, mode, &reg, &r_m);
2472 dtrace_get_operand(x, REG_ONLY, reg, LONG_OPND, 1);
2485 THREEOPERAND(x, mode, reg, r_m, rex_prefix, wbit, LONG_OPND,
2492 STANDARD_MODRM(x, mode, reg, r_m, rex_prefix, wbit, 0);
2502 STANDARD_MODRM(x, mode, reg, r_m, rex_prefix, wbit, 1);
2508 STANDARD_MODRM(x, mode, reg, r_m, rex_prefix, wbit, 1);
2519 MIXED_MM(x, mode, reg, r_m, rex_prefix, wbit, MM_OPND, 1);
2524 dtrace_get_modrm(x, &mode, &reg, &r_m);
2528 MIXED_MM(x, mode, reg, r_m, rex_prefix, wbit, MM_OPND, 1);
2534 dtrace_get_modrm(x, &mode, &reg, &r_m);
2535 dtrace_rex_adjust(rex_prefix, mode, &reg, &r_m);
2537 dtrace_get_operand(x, REG_ONLY, reg, LONG_OPND, 1);
2546 STANDARD_MODRM(x, mode, reg, r_m, rex_prefix, wbit, 1);
2564 dtrace_get_modrm(x, &mode, &reg, &r_m);
2575 reg = REGNO(opcode2);
2576 dtrace_rex_adjust(rex_prefix, mode, &reg, NULL);
2578 r_m = reg;
2593 reg = REGNO(opcode7);
2594 dtrace_rex_adjust(rex_prefix, mode, &reg, NULL);
2595 dtrace_get_operand(x, REG_ONLY, reg, wbit, 1);
2623 dtrace_get_modrm(x, &mode, &reg, &r_m);
2626 dtrace_get_operand(x, REG_ONLY, reg, SEG_OPND, 1 - vbit);
2668 dtrace_get_modrm(x, &mode, &reg, &r_m);
2724 dtrace_get_modrm(x, &mode, &reg, &r_m);
2757 dtrace_get_modrm(x, &mode, &reg, &r_m);
2758 dtrace_rex_adjust(rex_prefix, mode, &reg, &r_m);
2759 dtrace_get_operand(x, REG_ONLY, reg, wbit, vbit);
2770 reg = REGNO(opcode5);
2772 reg = REGNO(opcode2);
2773 dtrace_rex_adjust(rex_prefix, mode, &reg, NULL);
2774 dtrace_get_operand(x, REG_ONLY, reg, LONG_OPND, 0);
2784 reg = REGNO(opcode2);
2785 dtrace_rex_adjust(rex_prefix, mode, &reg, NULL);
2786 dtrace_get_operand(x, REG_ONLY, reg, LONG_OPND, 0);
2796 reg = (x->d86_bytes[x->d86_len - 1] >> 3) & 0x3;
2797 dtrace_get_operand(x, REG_ONLY, reg, SEG_OPND, 0);
2806 /* long seg reg from opcode */
2807 reg = (x->d86_bytes[x->d86_len - 1] >> 3) & 0x7;
2808 dtrace_get_operand(x, REG_ONLY, reg, SEG_OPND, 0);
2814 STANDARD_MODRM(x, mode, reg, r_m, rex_prefix, wbit, 0);
2819 STANDARD_MODRM(x, mode, reg, r_m, rex_prefix, wbit, 1);
2822 /* MMX/SIMD-Int memory or mm reg to mm reg */
2830 MIXED_MM(x, mode, reg, r_m, rex_prefix, wbit, MM_OPND, 0);
2839 dtrace_get_modrm(x, &mode, &reg, &r_m);
2843 dtrace_rex_adjust(rex_prefix, mode, &reg, &r_m);
2845 dtrace_get_operand(x, REG_ONLY, reg, MM_OPND, 1);
2849 /* MMX/SIMD-Int and SIMD-FP predicated mm reg to r32 */
2856 dtrace_get_modrm(x, &mode, &reg, &r_m);
2860 THREEOPERAND(x, mode, reg, r_m, rex_prefix, wbit, LONG_OPND, 1,
2866 THREEOPERAND(x, mode, reg, r_m, rex_prefix, LONG_OPND, XMM_OPND,
2870 /* MMX/SIMD-Int predicated r32/mem to mm reg */
2880 THREEOPERAND(x, mode, reg, r_m, rex_prefix, wbit, w2, 1, 1);
2883 /* MMX/SIMD-Int predicated mm/mem to mm reg */
2889 /* MMX/SIMD-Int mm reg to r32 */
2892 dtrace_get_modrm(x, &mode, &reg, &r_m);
2896 MIXED_MM(x, mode, reg, r_m, rex_prefix, wbit, LONG_OPND, 0);
2899 /* SIMD memory or xmm reg operand to xmm reg */
2906 STANDARD_MODRM(x, mode, reg, r_m, rex_prefix, wbit, 0);
2931 /* SIMD xmm reg to memory or xmm reg */
2936 dtrace_get_modrm(x, &mode, &reg, &r_m);
2945 MIXED_MM(x, mode, reg, r_m, rex_prefix, wbit, XMM_OPND, 1);
2948 /* SIMD memory to xmm reg */
2953 dtrace_get_modrm(x, &mode, &reg, &r_m);
2963 MIXED_MM(x, mode, reg, r_m, rex_prefix, wbit, XMM_OPND, 0);
2966 /* SIMD memory or r32 to xmm reg */
2969 MIXED_MM(x, mode, reg, r_m, rex_prefix, wbit, XMM_OPND, 0);
2974 MIXED_MM(x, mode, reg, r_m, rex_prefix, wbit, XMM_OPND, 1);
2977 /* SIMD memory or mm reg to xmm reg */
2982 MIXED_MM(x, mode, reg, r_m, rex_prefix, wbit, XMM_OPND, 0);
2985 /* SIMD memory or xmm reg to mm reg */
2990 MIXED_MM(x, mode, reg, r_m, rex_prefix, wbit, MM_OPND, 0);
2994 /* SIMD memory or xmm reg to r32 */
2997 MIXED_MM(x, mode, reg, r_m, rex_prefix, wbit, LONG_OPND, 0);
3003 dtrace_get_modrm(x, &mode, &reg, &r_m);
3006 dtrace_rex_adjust(rex_prefix, mode, &reg, &r_m);
3008 dtrace_get_operand(x, REG_ONLY, reg, LONG_OPND, 1);
3012 /* SIMD predicated memory or xmm reg with/to xmm reg */
3018 THREEOPERAND(x, mode, reg, r_m, rex_prefix, wbit, XMM_OPND, 1,
3052 FOUROPERAND(x, mode, reg, r_m, rex_prefix, XMM_OPND, XMM_OPND,
3058 ONEOPERAND_TWOIMM(x, mode, reg, r_m, rex_prefix, XMM_OPND, 1);
3301 dtrace_get_modrm(x, &mode, &reg, &r_m);
3309 dtrace_rex_adjust(rex_prefix, mode, &reg, &r_m);
3315 dtrace_rex_adjust(rex_prefix, mode, &reg, &r_m);
3347 /* float reg */
3357 /* float reg to float reg, with ret bit present */