Skip to content

Commit

Permalink
Merge pull request #118 from dyninst/release9.2/fixes/liveness-patch
Browse files Browse the repository at this point in the history
Release9.2/fixes/liveness patch
  • Loading branch information
John Detter committed Jul 12, 2016
2 parents f51f18a + e96fd83 commit 97eb582
Show file tree
Hide file tree
Showing 6 changed files with 373 additions and 345 deletions.
118 changes: 110 additions & 8 deletions common/h/dyn_regs.h
Original file line number Diff line number Diff line change
Expand Up @@ -265,14 +265,116 @@ namespace Dyninst
DEF_REGISTER(oeax, 0x0 | FULL | MISC | Arch_x86, "x86");
DEF_REGISTER(fsbase, 0x1 | FULL | MISC | Arch_x86, "x86");
DEF_REGISTER(gsbase, 0x2 | FULL | MISC | Arch_x86, "x86");
DEF_REGISTER(xmm0, 0x0 | OCT | XMM | Arch_x86, "x86");
DEF_REGISTER(xmm1, 0x1 | OCT | XMM | Arch_x86, "x86");
DEF_REGISTER(xmm2, 0x2 | OCT | XMM | Arch_x86, "x86");
DEF_REGISTER(xmm3, 0x3 | OCT | XMM | Arch_x86, "x86");
DEF_REGISTER(xmm4, 0x4 | OCT | XMM | Arch_x86, "x86");
DEF_REGISTER(xmm5, 0x5 | OCT | XMM | Arch_x86, "x86");
DEF_REGISTER(xmm6, 0x6 | OCT | XMM | Arch_x86, "x86");
DEF_REGISTER(xmm7, 0x7 | OCT | XMM | Arch_x86, "x86");

DEF_REGISTER(k0, 0x00 | OCT | KMASK| Arch_x86, "x86");
DEF_REGISTER(k1, 0x01 | OCT | KMASK| Arch_x86, "x86");
DEF_REGISTER(k2, 0x02 | OCT | KMASK| Arch_x86, "x86");
DEF_REGISTER(k3, 0x03 | OCT | KMASK| Arch_x86, "x86");
DEF_REGISTER(k4, 0x04 | OCT | KMASK| Arch_x86, "x86");
DEF_REGISTER(k5, 0x05 | OCT | KMASK| Arch_x86, "x86");
DEF_REGISTER(k6, 0x06 | OCT | KMASK| Arch_x86, "x86");
DEF_REGISTER(k7, 0x07 | OCT | KMASK| Arch_x86, "x86");

DEF_REGISTER(xmm0, 0x00 | OCT | XMM | Arch_x86, "x86");
DEF_REGISTER(xmm1, 0x01 | OCT | XMM | Arch_x86, "x86");
DEF_REGISTER(xmm2, 0x02 | OCT | XMM | Arch_x86, "x86");
DEF_REGISTER(xmm3, 0x03 | OCT | XMM | Arch_x86, "x86");
DEF_REGISTER(xmm4, 0x04 | OCT | XMM | Arch_x86, "x86");
DEF_REGISTER(xmm5, 0x05 | OCT | XMM | Arch_x86, "x86");
DEF_REGISTER(xmm6, 0x06 | OCT | XMM | Arch_x86, "x86");
DEF_REGISTER(xmm7, 0x07 | OCT | XMM | Arch_x86, "x86");
DEF_REGISTER(xmm8, 0x08 | OCT | XMM | Arch_x86, "x86");
DEF_REGISTER(xmm9, 0x09 | OCT | XMM | Arch_x86, "x86");
DEF_REGISTER(xmm10, 0x0A | OCT | XMM | Arch_x86, "x86");
DEF_REGISTER(xmm11, 0x0B | OCT | XMM | Arch_x86, "x86");
DEF_REGISTER(xmm12, 0x0C | OCT | XMM | Arch_x86, "x86");
DEF_REGISTER(xmm13, 0x0D | OCT | XMM | Arch_x86, "x86");
DEF_REGISTER(xmm14, 0x0E | OCT | XMM | Arch_x86, "x86");
DEF_REGISTER(xmm15, 0x0F | OCT | XMM | Arch_x86, "x86");
DEF_REGISTER(xmm16, 0x10 | OCT | XMM | Arch_x86, "x86");
DEF_REGISTER(xmm17, 0x11 | OCT | XMM | Arch_x86, "x86");
DEF_REGISTER(xmm18, 0x12 | OCT | XMM | Arch_x86, "x86");
DEF_REGISTER(xmm19, 0x13 | OCT | XMM | Arch_x86, "x86");
DEF_REGISTER(xmm20, 0x14 | OCT | XMM | Arch_x86, "x86");
DEF_REGISTER(xmm21, 0x15 | OCT | XMM | Arch_x86, "x86");
DEF_REGISTER(xmm22, 0x16 | OCT | XMM | Arch_x86, "x86");
DEF_REGISTER(xmm23, 0x17 | OCT | XMM | Arch_x86, "x86");
DEF_REGISTER(xmm24, 0x18 | OCT | XMM | Arch_x86, "x86");
DEF_REGISTER(xmm25, 0x19 | OCT | XMM | Arch_x86, "x86");
DEF_REGISTER(xmm26, 0x1A | OCT | XMM | Arch_x86, "x86");
DEF_REGISTER(xmm27, 0x1B | OCT | XMM | Arch_x86, "x86");
DEF_REGISTER(xmm28, 0x1C | OCT | XMM | Arch_x86, "x86");
DEF_REGISTER(xmm29, 0x1D | OCT | XMM | Arch_x86, "x86");
DEF_REGISTER(xmm30, 0x1E | OCT | XMM | Arch_x86, "x86");
DEF_REGISTER(xmm31, 0x1F | OCT | XMM | Arch_x86, "x86");


DEF_REGISTER(ymm0, 0x00 | OCT | YMM | Arch_x86, "x86");
DEF_REGISTER(ymm1, 0x01 | OCT | YMM | Arch_x86, "x86");
DEF_REGISTER(ymm2, 0x02 | OCT | YMM | Arch_x86, "x86");
DEF_REGISTER(ymm3, 0x03 | OCT | YMM | Arch_x86, "x86");
DEF_REGISTER(ymm4, 0x04 | OCT | YMM | Arch_x86, "x86");
DEF_REGISTER(ymm5, 0x05 | OCT | YMM | Arch_x86, "x86");
DEF_REGISTER(ymm6, 0x06 | OCT | YMM | Arch_x86, "x86");
DEF_REGISTER(ymm7, 0x07 | OCT | YMM | Arch_x86, "x86");
DEF_REGISTER(ymm8, 0x08 | OCT | YMM | Arch_x86, "x86");
DEF_REGISTER(ymm9, 0x09 | OCT | YMM | Arch_x86, "x86");
DEF_REGISTER(ymm10, 0x0A | OCT | YMM | Arch_x86, "x86");
DEF_REGISTER(ymm11, 0x0B | OCT | YMM | Arch_x86, "x86");
DEF_REGISTER(ymm12, 0x0C | OCT | YMM | Arch_x86, "x86");
DEF_REGISTER(ymm13, 0x0D | OCT | YMM | Arch_x86, "x86");
DEF_REGISTER(ymm14, 0x0E | OCT | YMM | Arch_x86, "x86");
DEF_REGISTER(ymm15, 0x0F | OCT | YMM | Arch_x86, "x86");
DEF_REGISTER(ymm16, 0x10 | OCT | YMM | Arch_x86, "x86");
DEF_REGISTER(ymm17, 0x11 | OCT | YMM | Arch_x86, "x86");
DEF_REGISTER(ymm18, 0x12 | OCT | YMM | Arch_x86, "x86");
DEF_REGISTER(ymm19, 0x13 | OCT | YMM | Arch_x86, "x86");
DEF_REGISTER(ymm20, 0x14 | OCT | YMM | Arch_x86, "x86");
DEF_REGISTER(ymm21, 0x15 | OCT | YMM | Arch_x86, "x86");
DEF_REGISTER(ymm22, 0x16 | OCT | YMM | Arch_x86, "x86");
DEF_REGISTER(ymm23, 0x17 | OCT | YMM | Arch_x86, "x86");
DEF_REGISTER(ymm24, 0x18 | OCT | YMM | Arch_x86, "x86");
DEF_REGISTER(ymm25, 0x19 | OCT | YMM | Arch_x86, "x86");
DEF_REGISTER(ymm26, 0x1A | OCT | YMM | Arch_x86, "x86");
DEF_REGISTER(ymm27, 0x1B | OCT | YMM | Arch_x86, "x86");
DEF_REGISTER(ymm28, 0x1C | OCT | YMM | Arch_x86, "x86");
DEF_REGISTER(ymm29, 0x1D | OCT | YMM | Arch_x86, "x86");
DEF_REGISTER(ymm30, 0x1E | OCT | YMM | Arch_x86, "x86");
DEF_REGISTER(ymm31, 0x1F | OCT | YMM | Arch_x86, "x86");

DEF_REGISTER(zmm0, 0x00 | OCT | ZMM | Arch_x86, "x86");
DEF_REGISTER(zmm1, 0x01 | OCT | ZMM | Arch_x86, "x86");
DEF_REGISTER(zmm2, 0x02 | OCT | ZMM | Arch_x86, "x86");
DEF_REGISTER(zmm3, 0x03 | OCT | ZMM | Arch_x86, "x86");
DEF_REGISTER(zmm4, 0x04 | OCT | ZMM | Arch_x86, "x86");
DEF_REGISTER(zmm5, 0x05 | OCT | ZMM | Arch_x86, "x86");
DEF_REGISTER(zmm6, 0x06 | OCT | ZMM | Arch_x86, "x86");
DEF_REGISTER(zmm7, 0x07 | OCT | ZMM | Arch_x86, "x86");
DEF_REGISTER(zmm8, 0x08 | OCT | ZMM | Arch_x86, "x86");
DEF_REGISTER(zmm9, 0x09 | OCT | ZMM | Arch_x86, "x86");
DEF_REGISTER(zmm10, 0x0A | OCT | ZMM | Arch_x86, "x86");
DEF_REGISTER(zmm11, 0x0B | OCT | ZMM | Arch_x86, "x86");
DEF_REGISTER(zmm12, 0x0C | OCT | ZMM | Arch_x86, "x86");
DEF_REGISTER(zmm13, 0x0D | OCT | ZMM | Arch_x86, "x86");
DEF_REGISTER(zmm14, 0x0E | OCT | ZMM | Arch_x86, "x86");
DEF_REGISTER(zmm15, 0x0F | OCT | ZMM | Arch_x86, "x86");
DEF_REGISTER(zmm16, 0x10 | OCT | ZMM | Arch_x86, "x86");
DEF_REGISTER(zmm17, 0x11 | OCT | ZMM | Arch_x86, "x86");
DEF_REGISTER(zmm18, 0x12 | OCT | ZMM | Arch_x86, "x86");
DEF_REGISTER(zmm19, 0x13 | OCT | ZMM | Arch_x86, "x86");
DEF_REGISTER(zmm20, 0x14 | OCT | ZMM | Arch_x86, "x86");
DEF_REGISTER(zmm21, 0x15 | OCT | ZMM | Arch_x86, "x86");
DEF_REGISTER(zmm22, 0x16 | OCT | ZMM | Arch_x86, "x86");
DEF_REGISTER(zmm23, 0x17 | OCT | ZMM | Arch_x86, "x86");
DEF_REGISTER(zmm24, 0x18 | OCT | ZMM | Arch_x86, "x86");
DEF_REGISTER(zmm25, 0x19 | OCT | ZMM | Arch_x86, "x86");
DEF_REGISTER(zmm26, 0x1A | OCT | ZMM | Arch_x86, "x86");
DEF_REGISTER(zmm27, 0x1B | OCT | ZMM | Arch_x86, "x86");
DEF_REGISTER(zmm28, 0x1C | OCT | ZMM | Arch_x86, "x86");
DEF_REGISTER(zmm29, 0x1D | OCT | ZMM | Arch_x86, "x86");
DEF_REGISTER(zmm30, 0x1E | OCT | ZMM | Arch_x86, "x86");
DEF_REGISTER(zmm31, 0x1F | OCT | ZMM | Arch_x86, "x86");

DEF_REGISTER(mm0, 0x0 | FPDBL | MMX | Arch_x86, "x86");
DEF_REGISTER(mm1, 0x1 | FPDBL | MMX | Arch_x86, "x86");
DEF_REGISTER(mm2, 0x2 | FPDBL | MMX | Arch_x86, "x86");
Expand Down
162 changes: 129 additions & 33 deletions dataflowAPI/src/RegisterMap.C
Original file line number Diff line number Diff line change
Expand Up @@ -86,39 +86,135 @@ RegisterMap &machRegIndex_x86() {
{x86::oeax, 32},
{x86::fsbase, 33},
{x86::gsbase, 34},
{x86::xmm0, 35},
{x86::xmm1, 36},
{x86::xmm2, 37},
{x86::xmm3, 38},
{x86::xmm4, 39},
{x86::xmm5, 40},
{x86::xmm6, 41},
{x86::xmm7, 42},
{x86::mm0, 43}, // mm0 to mm7 and st0 to st7 collapse to mm0
{x86::cr0, 44},
{x86::cr1, 45},
{x86::cr2, 46},
{x86::cr3, 47},
{x86::cr4, 48},
{x86::cr5, 49},
{x86::cr6, 50},
{x86::cr7, 51},
{x86::dr0, 52},
{x86::dr1, 53},
{x86::dr2, 54},
{x86::dr3, 55},
{x86::dr4, 56},
{x86::dr5, 57},
{x86::dr6, 58},
{x86::dr7, 59},
{x86::tr0, 60},
{x86::tr1, 61},
{x86::tr2, 62},
{x86::tr3, 63},
{x86::tr4, 64},
{x86::tr5, 65},
{x86::tr6, 66},
{x86::tr7, 67} };
{x86::k0, 35},
{x86::k1, 36},
{x86::k2, 37},
{x86::k3, 38},
{x86::k4, 39},
{x86::k5, 40},
{x86::k6, 41},
{x86::k7, 42},
{x86::zmm0, 43},
{x86::zmm1, 44},
{x86::zmm2, 45},
{x86::zmm3, 46},
{x86::zmm4, 47},
{x86::zmm5, 48},
{x86::zmm6, 49},
{x86::zmm7, 50},
{x86::zmm8, 51},
{x86::zmm9, 52},
{x86::zmm10, 53},
{x86::zmm11, 54},
{x86::zmm12, 55},
{x86::zmm13, 56},
{x86::zmm14, 57},
{x86::zmm15, 58},
{x86::zmm16, 59},
{x86::zmm17, 60},
{x86::zmm18, 61},
{x86::zmm19, 62},
{x86::zmm20, 63},
{x86::zmm21, 64},
{x86::zmm22, 65},
{x86::zmm23, 66},
{x86::zmm24, 67},
{x86::zmm25, 68},
{x86::zmm26, 69},
{x86::zmm27, 70},
{x86::zmm28, 71},
{x86::zmm29, 72},
{x86::zmm30, 73},
{x86::zmm31, 74},
{x86::ymm0, 75},
{x86::ymm1, 76},
{x86::ymm2, 77},
{x86::ymm3, 78},
{x86::ymm4, 79},
{x86::ymm5, 80},
{x86::ymm6, 81},
{x86::ymm7, 82},
{x86::ymm8, 83},
{x86::ymm9, 84},
{x86::ymm10, 85},
{x86::ymm11, 86},
{x86::ymm12, 87},
{x86::ymm13, 88},
{x86::ymm14, 89},
{x86::ymm15, 90},
{x86::ymm16, 91},
{x86::ymm17, 92},
{x86::ymm18, 93},
{x86::ymm19, 94},
{x86::ymm20, 95},
{x86::ymm21, 96},
{x86::ymm22, 97},
{x86::ymm23, 98},
{x86::ymm24, 99},
{x86::ymm25, 100},
{x86::ymm26, 101},
{x86::ymm27, 102},
{x86::ymm28, 103},
{x86::ymm29, 104},
{x86::ymm30, 105},
{x86::ymm31, 106},
{x86::xmm0, 107},
{x86::xmm1, 108},
{x86::xmm2, 109},
{x86::xmm3, 110},
{x86::xmm4, 111},
{x86::xmm5, 112},
{x86::xmm6, 113},
{x86::xmm7, 114},
{x86::xmm8, 115},
{x86::xmm9, 116},
{x86::xmm10, 117},
{x86::xmm11, 118},
{x86::xmm12, 119},
{x86::xmm13, 120},
{x86::xmm14, 121},
{x86::xmm15, 122},
{x86::xmm16, 123},
{x86::xmm17, 124},
{x86::xmm18, 125},
{x86::xmm19, 126},
{x86::xmm20, 127},
{x86::xmm21, 128},
{x86::xmm22, 129},
{x86::xmm23, 130},
{x86::xmm24, 131},
{x86::xmm25, 132},
{x86::xmm26, 133},
{x86::xmm27, 134},
{x86::xmm28, 135},
{x86::xmm29, 136},
{x86::xmm30, 137},
{x86::xmm31, 138},
{x86::mm0, 139}, // mm0 to mm7 and st0 to st7 collapse to mm0
{x86::cr0, 140},
{x86::cr1, 141},
{x86::cr2, 142},
{x86::cr3, 143},
{x86::cr4, 144},
{x86::cr5, 145},
{x86::cr6, 146},
{x86::cr7, 147},
{x86::dr0, 148},
{x86::dr1, 149},
{x86::dr2, 150},
{x86::dr3, 151},
{x86::dr4, 152},
{x86::dr5, 153},
{x86::dr6, 154},
{x86::dr7, 155},
{x86::tr0, 156},
{x86::tr1, 157},
{x86::tr2, 158},
{x86::tr3, 159},
{x86::tr4, 160},
{x86::tr5, 161},
{x86::tr6, 162},
{x86::tr7, 163} };
}
return mrmap;
}
Expand Down
32 changes: 0 additions & 32 deletions dyninstAPI/src/RegisterConversion-x86.C
Original file line number Diff line number Diff line change
Expand Up @@ -292,22 +292,6 @@ multimap<Register, MachRegister> regToMachReg64 = map_list_of
(REGNUM_IGNORED,x86_64::dr5)
(REGNUM_IGNORED,x86_64::dr6)
(REGNUM_IGNORED,x86_64::dr7)
(REGNUM_YMM0,x86_64::ymm0)
(REGNUM_YMM1,x86_64::ymm1)
(REGNUM_YMM2,x86_64::ymm2)
(REGNUM_YMM3,x86_64::ymm3)
(REGNUM_YMM4,x86_64::ymm4)
(REGNUM_YMM5,x86_64::ymm5)
(REGNUM_YMM6,x86_64::ymm6)
(REGNUM_YMM7,x86_64::ymm7)
(REGNUM_YMM8,x86_64::ymm8)
(REGNUM_YMM9,x86_64::ymm9)
(REGNUM_YMM10,x86_64::ymm10)
(REGNUM_YMM11,x86_64::ymm11)
(REGNUM_YMM12,x86_64::ymm12)
(REGNUM_YMM13,x86_64::ymm13)
(REGNUM_YMM14,x86_64::ymm14)
(REGNUM_YMM15,x86_64::ymm15)
;


Expand Down Expand Up @@ -474,22 +458,6 @@ map<MachRegister, Register> reverseRegisterMap = map_list_of
(x86_64::st5, REGNUM_DUMMYFPR)
(x86_64::st6, REGNUM_DUMMYFPR)
(x86_64::st7, REGNUM_DUMMYFPR)
(x86_64::ymm0, REGNUM_YMM0)
(x86_64::ymm1, REGNUM_YMM1)
(x86_64::ymm2, REGNUM_YMM2)
(x86_64::ymm3, REGNUM_YMM3)
(x86_64::ymm4, REGNUM_YMM4)
(x86_64::ymm5, REGNUM_YMM5)
(x86_64::ymm6, REGNUM_YMM6)
(x86_64::ymm7, REGNUM_YMM7)
(x86_64::ymm8, REGNUM_YMM8)
(x86_64::ymm9, REGNUM_YMM9)
(x86_64::ymm10, REGNUM_YMM10)
(x86_64::ymm11, REGNUM_YMM11)
(x86_64::ymm12, REGNUM_YMM12)
(x86_64::ymm13, REGNUM_YMM13)
(x86_64::ymm14, REGNUM_YMM14)
(x86_64::ymm15, REGNUM_YMM15)
;

Register convertRegID(MachRegister reg, bool &wasUpcast) {
Expand Down

0 comments on commit 97eb582

Please sign in to comment.