Home | History | Annotate | Download | only in priv

Lines Matching refs:am

161    X86AMode* am = LibVEX_Alloc_inline(sizeof(X86AMode));
162 am->tag = Xam_IR;
163 am->Xam.IR.imm = imm32;
164 am->Xam.IR.reg = reg;
165 return am;
168 X86AMode* am = LibVEX_Alloc_inline(sizeof(X86AMode));
169 am->tag = Xam_IRRS;
170 am->Xam.IRRS.imm = imm32;
171 am->Xam.IRRS.base = base;
172 am->Xam.IRRS.index = indEx;
173 am->Xam.IRRS.shift = shift;
175 return am;
178 X86AMode* dopyX86AMode ( X86AMode* am ) {
179 switch (am->tag) {
181 return X86AMode_IR( am->Xam.IR.imm, am->Xam.IR.reg );
183 return X86AMode_IRRS( am->Xam.IRRS.imm, am->Xam.IRRS.base,
184 am->Xam.IRRS.index, am->Xam.IRRS.shift );
190 void ppX86AMode ( X86AMode* am ) {
191 switch (am->tag) {
193 if (am->Xam.IR.imm == 0)
196 vex_printf("0x%x(", am->Xam.IR.imm);
197 ppHRegX86(am->Xam.IR.reg);
201 vex_printf("0x%x(", am->Xam.IRRS.imm);
202 ppHRegX86(am->Xam.IRRS.base);
204 ppHRegX86(am->Xam.IRRS.index);
205 vex_printf(",%d)", 1 << am->Xam.IRRS.shift);
212 static void addRegUsage_X86AMode ( HRegUsage* u, X86AMode* am ) {
213 switch (am->tag) {
215 addHRegUse(u, HRmRead, am->Xam.IR.reg);
218 addHRegUse(u, HRmRead, am->Xam.IRRS.base);
219 addHRegUse(u, HRmRead, am->Xam.IRRS.index);
226 static void mapRegs_X86AMode ( HRegRemap* m, X86AMode* am ) {
227 switch (am->tag) {
229 am->Xam.IR.reg = lookupHRegRemap(m, am->Xam.IR.reg);
232 am->Xam.IRRS.base = lookupHRegRemap(m, am->Xam.IRRS.base);
233 am->Xam.IRRS.index = lookupHRegRemap(m, am->Xam.IRRS.index);
254 X86RMI* X86RMI_Mem ( X86AMode* am ) {
257 op->Xrmi.Mem.am = am;
270 ppX86AMode(op->Xrmi.Mem.am);
288 addRegUsage_X86AMode(u, op->Xrmi.Mem.am);
303 mapRegs_X86AMode(m, op->Xrmi.Mem.am);
375 X86RM* X86RM_Mem ( X86AMode* am ) {
378 op->Xrm.Mem.am = am;
385 ppX86AMode(op->Xrm.Mem.am);
403 addRegUsage_X86AMode(u, op->Xrm.Mem.am);
419 mapRegs_X86AMode(m, op->Xrm.Mem.am);
603 X86Instr* X86Instr_Lea32 ( X86AMode* am, HReg dst ) {
606 i->Xin.Lea32.am = am;
959 ppX86AMode(i->Xin.Lea32.am);
1256 addRegUsage_X86AMode(u, i->Xin.Lea32.am);
1520 mapRegs_X86AMode(m, i->Xin.Lea32.am);
1708 X86AMode* am;
1713 am = X86AMode_IR(offsetB, hregX86_EBP());
1716 *i1 = X86Instr_Alu32M ( Xalu_MOV, X86RI_Reg(rreg), am );
1719 *i1 = X86Instr_FpLdSt ( False/*store*/, 10, rreg, am );
1722 *i1 = X86Instr_SseLdSt ( False/*store*/, rreg, am );
1733 X86AMode* am;
1738 am = X86AMode_IR(offsetB, hregX86_EBP());
1741 *i1 = X86Instr_Alu32R ( Xalu_MOV, X86RMI_Mem(am), rreg );
1744 *i1 = X86Instr_FpLdSt ( True/*load*/, 10, rreg, am );
1747 *i1 = X86Instr_SseLdSt ( True/*load*/, rreg, am );
1919 static UChar* doAMode_M__wrk ( UChar* p, UInt gregEnc, X86AMode* am )
1921 if (am->tag == Xam_IR) {
1922 if (am->Xam.IR.imm == 0
1923 && ! sameHReg(am->Xam.IR.reg, hregX86_ESP())
1924 && ! sameHReg(am->Xam.IR.reg, hregX86_EBP()) ) {
1925 *p++ = mkModRegRM(0, gregEnc, iregEnc(am->Xam.IR.reg));
1928 if (fits8bits(am->Xam.IR.imm)
1929 && ! sameHReg(am->Xam.IR.reg, hregX86_ESP())) {
1930 *p++ = mkModRegRM(1, gregEnc, iregEnc(am->Xam.IR.reg));
1931 *p++ = toUChar(am->Xam.IR.imm & 0xFF);
1934 if (! sameHReg(am->Xam.IR.reg, hregX86_ESP())) {
1935 *p++ = mkModRegRM(2, gregEnc, iregEnc(am->Xam.IR.reg));
1936 p = emit32(p, am->Xam.IR.imm);
1939 if (sameHReg(am->Xam.IR.reg, hregX86_ESP())
1940 && fits8bits(am->Xam.IR.imm)) {
1943 *p++ = toUChar(am->Xam.IR.imm & 0xFF);
1946 ppX86AMode(am);
1950 if (am->tag == Xam_IRRS) {
1951 if (fits8bits(am->Xam.IRRS.imm)
1952 && ! sameHReg(am->Xam.IRRS.index, hregX86_ESP())) {
1954 *p++ = mkSIB(am->Xam.IRRS.shift, iregEnc(am->Xam.IRRS.index),
1955 iregEnc(am->Xam.IRRS.base));
1956 *p++ = toUChar(am->Xam.IRRS.imm & 0xFF);
1959 if (! sameHReg(am->Xam.IRRS.index, hregX86_ESP())) {
1961 *p++ = mkSIB(am->Xam.IRRS.shift, iregEnc(am->Xam.IRRS.index),
1962 iregEnc(am->Xam.IRRS.base));
1963 p = emit32(p, am->Xam.IRRS.imm);
1966 ppX86AMode(am);
1974 static UChar* doAMode_M ( UChar* p, HReg greg, X86AMode* am )
1976 return doAMode_M__wrk(p, iregEnc(greg), am);
1979 am )
1982 return doAMode_M__wrk(p, gregEnc, am);
2160 i->Xin.Alu32R.src->Xrmi.Mem.am);
2179 i->Xin.Alu32R.src->Xrmi.Mem.am);
2242 i->Xin.Alu32R.src->Xrmi.Mem.am);
2327 p = doAMode_M_enc(p, 0, i->Xin.Test32.dst->Xrm.Mem.am);
2347 p = doAMode_M(p, i->Xin.Lea32.dst, i->Xin.Lea32.am);
2355 p = doAMode_M_enc(p, subopc, i->Xin.MulL.src->Xrm.Mem.am);
2370 p = doAMode_M_enc(p, subopc, i->Xin.Div.src->Xrm.Mem.am);
2399 p = doAMode_M_enc(p, 6, i->Xin.Push.src->Xrmi.Mem.am);
2615 p = doAMode_M(p, i->Xin.CMov32.dst, i->Xin.CMov32.src->Xrm.Mem.am);
2640 i->Xin.CMov32.src->Xrm.Mem.am);