Home | History | Annotate | Download | only in priv

Lines Matching refs:am

217    AMD64AMode* am = LibVEX_Alloc(sizeof(AMD64AMode));
218 am->tag = Aam_IR;
219 am->Aam.IR.imm = imm32;
220 am->Aam.IR.reg = reg;
221 return am;
224 AMD64AMode* am = LibVEX_Alloc(sizeof(AMD64AMode));
225 am->tag = Aam_IRRS;
226 am->Aam.IRRS.imm = imm32;
227 am->Aam.IRRS.base = base;
228 am->Aam.IRRS.index = indEx;
229 am->Aam.IRRS.shift = shift;
231 return am;
234 //.. AMD64AMode* dopyAMD64AMode ( AMD64AMode* am ) {
235 //.. switch (am->tag) {
237 //.. return AMD64AMode_IR( am->Xam.IR.imm, am->Xam.IR.reg );
239 //.. return AMD64AMode_IRRS( am->Xam.IRRS.imm, am->Xam.IRRS.base,
240 //.. am->Xam.IRRS.index, am->Xam.IRRS.shift );
246 void ppAMD64AMode ( AMD64AMode* am ) {
247 switch (am->tag) {
249 if (am->Aam.IR.imm == 0)
252 vex_printf("0x%x(", am->Aam.IR.imm);
253 ppHRegAMD64(am->Aam.IR.reg);
257 vex_printf("0x%x(", am->Aam.IRRS.imm);
258 ppHRegAMD64(am->Aam.IRRS.base);
260 ppHRegAMD64(am->Aam.IRRS.index);
261 vex_printf(",%d)", 1 << am->Aam.IRRS.shift);
268 static void addRegUsage_AMD64AMode ( HRegUsage* u, AMD64AMode* am ) {
269 switch (am->tag) {
271 addHRegUse(u, HRmRead, am->Aam.IR.reg);
274 addHRegUse(u, HRmRead, am->Aam.IRRS.base);
275 addHRegUse(u, HRmRead, am->Aam.IRRS.index);
282 static void mapRegs_AMD64AMode ( HRegRemap* m, AMD64AMode* am ) {
283 switch (am->tag) {
285 am->Aam.IR.reg = lookupHRegRemap(m, am->Aam.IR.reg);
288 am->Aam.IRRS.base = lookupHRegRemap(m, am->Aam.IRRS.base);
289 am->Aam.IRRS.index = lookupHRegRemap(m, am->Aam.IRRS.index);
310 AMD64RMI* AMD64RMI_Mem ( AMD64AMode* am ) {
313 op->Armi.Mem.am = am;
326 ppAMD64AMode(op->Armi.Mem.am);
344 addRegUsage_AMD64AMode(u, op->Armi.Mem.am);
359 mapRegs_AMD64AMode(m, op->Armi.Mem.am);
431 AMD64RM* AMD64RM_Mem ( AMD64AMode* am ) {
434 op->Arm.Mem.am = am;
441 ppAMD64AMode(op->Arm.Mem.am);
459 addRegUsage_AMD64AMode(u, op->Arm.Mem.am);
475 mapRegs_AMD64AMode(m, op->Arm.Mem.am);
675 AMD64Instr* AMD64Instr_Lea64 ( AMD64AMode* am, HReg dst ) {
678 i->Ain.Lea64.am = am;
1082 ppAMD64AMode(i->Ain.Lea64.am);
1423 addRegUsage_AMD64AMode(u, i->Ain.Lea64.am);
1719 mapRegs_AMD64AMode(m, i->Ain.Lea64.am);
1911 AMD64AMode* am;
1916 am = AMD64AMode_IR(offsetB, hregAMD64_RBP());
1919 *i1 = AMD64Instr_Alu64M ( Aalu_MOV, AMD64RI_Reg(rreg), am );
1922 *i1 = AMD64Instr_SseLdSt ( False/*store*/, 16, rreg, am );
1933 AMD64AMode* am;
1938 am = AMD64AMode_IR(offsetB, hregAMD64_RBP());
1941 *i1 = AMD64Instr_Alu64R ( Aalu_MOV, AMD64RMI_Mem(am), rreg );
1944 *i1 = AMD64Instr_SseLdSt ( True/*load*/, 16, rreg, am );
2082 static UChar* doAMode_M ( UChar* p, HReg greg, AMD64AMode* am )
2084 if (am->tag == Aam_IR) {
2085 if (am->Aam.IR.imm == 0
2086 && am->Aam.IR.reg != hregAMD64_RSP()
2087 && am->Aam.IR.reg != hregAMD64_RBP()
2088 && am->Aam.IR.reg != hregAMD64_R12()
2089 && am->Aam.IR.reg != hregAMD64_R13()
2092 iregBits210(am->Aam.IR.reg));
2095 if (fits8bits(am->Aam.IR.imm)
2096 && am->Aam.IR.reg != hregAMD64_RSP()
2097 && am->Aam.IR.reg != hregAMD64_R12()
2100 iregBits210(am->Aam.IR.reg));
2101 *p++ = toUChar(am->Aam.IR.imm & 0xFF);
2104 if (am->Aam.IR.reg != hregAMD64_RSP()
2105 && am->Aam.IR.reg != hregAMD64_R12()
2108 iregBits210(am->Aam.IR.reg));
2109 p = emit32(p, am->Aam.IR.imm);
2112 if ((am->Aam.IR.reg == hregAMD64_RSP()
2113 || am->Aam.IR.reg == hregAMD64_R12())
2114 && fits8bits(am->Aam.IR.imm)) {
2117 *p++ = toUChar(am->Aam.IR.imm & 0xFF);
2120 if (/* (am->Aam.IR.reg == hregAMD64_RSP()
2122 am->Aam.IR.reg == hregAMD64_R12()) {
2125 p = emit32(p, am->Aam.IR.imm);
2128 ppAMD64AMode(am);
2132 if (am->tag == Aam_IRRS) {
2133 if (fits8bits(am->Aam.IRRS.imm)
2134 && am->Aam.IRRS.index != hregAMD64_RSP()) {
2136 *p++ = mkSIB(am->Aam.IRRS.shift, am->Aam.IRRS.index,
2137 am->Aam.IRRS.base);
2138 *p++ = toUChar(am->Aam.IRRS.imm & 0xFF);
2141 if (am->Aam.IRRS.index != hregAMD64_RSP()) {
2143 *p++ = mkSIB(am->Aam.IRRS.shift, am->Aam.IRRS.index,
2144 am->Aam.IRRS.base);
2145 p = emit32(p, am->Aam.IRRS.imm);
2148 ppAMD64AMode(am);
2174 static UChar rexAMode_M ( HReg greg, AMD64AMode* am )
2176 if (am->tag == Aam_IR) {
2180 UChar B = iregBit3(am->Aam.IR.reg);
2183 if (am->tag == Aam_IRRS) {
2186 UChar X = iregBit3(am->Aam.IRRS.index);
2187 UChar B = iregBit3(am->Aam.IRRS.base);
2368 i->Ain.Alu64R.src->Armi.Mem.am);
2371 i->Ain.Alu64R.src->Armi.Mem.am);
2390 i->Ain.Alu64R.src->Armi.Mem.am);
2394 i->Ain.Alu64R.src->Armi.Mem.am);
2463 i->Ain.Alu64R.src->Armi.Mem.am);
2466 i->Ain.Alu64R.src->Armi.Mem.am);
2571 *p++ = rexAMode_M(i->Ain.Lea64.dst, i->Ain.Lea64.am);
2573 p = doAMode_M(p, i->Ain.Lea64.dst, i->Ain.Lea64.am);
2581 i->Ain.MulL.src->Arm.Mem.am);
2584 i->Ain.MulL.src->Arm.Mem.am);
2607 i->Ain.Div.src->Arm.Mem.am);
2624 i->Ain.Div.src->Arm.Mem.am);
2627 i->Ain.Div.src->Arm.Mem.am);
2661 rexAMode_M(fake(0), i->Ain.Push.src->Armi.Mem.am));
2663 p = doAMode_M(p, fake(6), i->Ain.Push.src->Armi.Mem.am);
2829 *p++ = rexAMode_M(i->Ain.CMov64.dst, i->Ain.CMov64.src->Arm.Mem.am);
2832 p = doAMode_M(p, i->Ain.CMov64.dst, i->Ain.CMov64.src->Arm.Mem.am);