LLVM: lib/Target/X86/MCTargetDesc/X86ATTInstPrinter.cpp Source File (original) (raw)
44 {
46 MAI.printExpr(SOS, E);
47 }
49 OS << '(' << S << ')';
50 else
51 OS << S;
52}
61
64
66
67
68
69
70
71
72
73 if (MI->getOpcode() == X86::CALLpcrel32 &&
75 OS << "\tcallq\t";
77 }
78
79
80
81
82
83 else if (MI->getOpcode() == X86::DATA16_PREFIX &&
85 OS << "\tdata32";
86 }
87
90
91
93}
97 if (MI->getNumOperands() == 0 ||
98 ->getOperand(MI->getNumOperands() - 1).isImm())
99 return false;
100
101 int64_t Imm = MI->getOperand(MI->getNumOperands() - 1).getImm();
102
104
105
106
107 switch (MI->getOpcode()) {
108 case X86::CMPPDrmi: case X86::CMPPDrri:
109 case X86::CMPPSrmi: case X86::CMPPSrri:
110 case X86::CMPSDrmi: case X86::CMPSDrri:
111 case X86::CMPSDrmi_Int: case X86::CMPSDrri_Int:
112 case X86::CMPSSrmi: case X86::CMPSSrri:
113 case X86::CMPSSrmi_Int: case X86::CMPSSrri_Int:
114 if (Imm >= 0 && Imm <= 7) {
115 OS << '\t';
117
123 else
125 } else
127
128
129
130 OS << ", ";
132 return true;
133 }
134 break;
135
136 case X86::VCMPPDrmi: case X86::VCMPPDrri:
137 case X86::VCMPPDYrmi: case X86::VCMPPDYrri:
138 case X86::VCMPPDZ128rmi: case X86::VCMPPDZ128rri:
139 case X86::VCMPPDZ256rmi: case X86::VCMPPDZ256rri:
140 case X86::VCMPPDZrmi: case X86::VCMPPDZrri:
141 case X86::VCMPPSrmi: case X86::VCMPPSrri:
142 case X86::VCMPPSYrmi: case X86::VCMPPSYrri:
143 case X86::VCMPPSZ128rmi: case X86::VCMPPSZ128rri:
144 case X86::VCMPPSZ256rmi: case X86::VCMPPSZ256rri:
145 case X86::VCMPPSZrmi: case X86::VCMPPSZrri:
146 case X86::VCMPSDrmi: case X86::VCMPSDrri:
147 case X86::VCMPSDZrmi: case X86::VCMPSDZrri:
148 case X86::VCMPSDrmi_Int: case X86::VCMPSDrri_Int:
149 case X86::VCMPSDZrmi_Int: case X86::VCMPSDZrri_Int:
150 case X86::VCMPSSrmi: case X86::VCMPSSrri:
151 case X86::VCMPSSZrmi: case X86::VCMPSSZrri:
152 case X86::VCMPSSrmi_Int: case X86::VCMPSSrri_Int:
153 case X86::VCMPSSZrmi_Int: case X86::VCMPSSZrri_Int:
154 case X86::VCMPPDZ128rmik: case X86::VCMPPDZ128rrik:
155 case X86::VCMPPDZ256rmik: case X86::VCMPPDZ256rrik:
156 case X86::VCMPPDZrmik: case X86::VCMPPDZrrik:
157 case X86::VCMPPSZ128rmik: case X86::VCMPPSZ128rrik:
158 case X86::VCMPPSZ256rmik: case X86::VCMPPSZ256rrik:
159 case X86::VCMPPSZrmik: case X86::VCMPPSZrrik:
160 case X86::VCMPSDZrmik_Int: case X86::VCMPSDZrrik_Int:
161 case X86::VCMPSSZrmik_Int: case X86::VCMPSSZrrik_Int:
162 case X86::VCMPPDZ128rmbi: case X86::VCMPPDZ128rmbik:
163 case X86::VCMPPDZ256rmbi: case X86::VCMPPDZ256rmbik:
164 case X86::VCMPPDZrmbi: case X86::VCMPPDZrmbik:
165 case X86::VCMPPSZ128rmbi: case X86::VCMPPSZ128rmbik:
166 case X86::VCMPPSZ256rmbi: case X86::VCMPPSZ256rmbik:
167 case X86::VCMPPSZrmbi: case X86::VCMPPSZrmbik:
168 case X86::VCMPPDZrrib: case X86::VCMPPDZrribk:
169 case X86::VCMPPSZrrib: case X86::VCMPPSZrribk:
170 case X86::VCMPSDZrrib_Int: case X86::VCMPSDZrribk_Int:
171 case X86::VCMPSSZrrib_Int: case X86::VCMPSSZrribk_Int:
172 case X86::VCMPPHZ128rmi: case X86::VCMPPHZ128rri:
173 case X86::VCMPPHZ256rmi: case X86::VCMPPHZ256rri:
174 case X86::VCMPPHZrmi: case X86::VCMPPHZrri:
175 case X86::VCMPSHZrmi: case X86::VCMPSHZrri:
176 case X86::VCMPSHZrmi_Int: case X86::VCMPSHZrri_Int:
177 case X86::VCMPPHZ128rmik: case X86::VCMPPHZ128rrik:
178 case X86::VCMPPHZ256rmik: case X86::VCMPPHZ256rrik:
179 case X86::VCMPPHZrmik: case X86::VCMPPHZrrik:
180 case X86::VCMPSHZrmik_Int: case X86::VCMPSHZrrik_Int:
181 case X86::VCMPPHZ128rmbi: case X86::VCMPPHZ128rmbik:
182 case X86::VCMPPHZ256rmbi: case X86::VCMPPHZ256rmbik:
183 case X86::VCMPPHZrmbi: case X86::VCMPPHZrmbik:
184 case X86::VCMPPHZrrib: case X86::VCMPPHZrribk:
185 case X86::VCMPSHZrrib_Int: case X86::VCMPSHZrribk_Int:
186 case X86::VCMPBF16Z128rmi: case X86::VCMPBF16Z128rri:
187 case X86::VCMPBF16Z256rmi: case X86::VCMPBF16Z256rri:
188 case X86::VCMPBF16Zrmi: case X86::VCMPBF16Zrri:
189 case X86::VCMPBF16Z128rmik: case X86::VCMPBF16Z128rrik:
190 case X86::VCMPBF16Z256rmik: case X86::VCMPBF16Z256rrik:
191 case X86::VCMPBF16Zrmik: case X86::VCMPBF16Zrrik:
192 case X86::VCMPBF16Z128rmbi: case X86::VCMPBF16Z128rmbik:
193 case X86::VCMPBF16Z256rmbi: case X86::VCMPBF16Z256rmbik:
194 case X86::VCMPBF16Zrmbi: case X86::VCMPBF16Zrmbik:
195 if (Imm >= 0 && Imm <= 31) {
196 OS << '\t';
198
200
203
204
210 } else {
212 }
213
214
215 unsigned NumElts;
220 else
224 NumElts *= 2;
225 }
226 OS << "{1to" << NumElts << "}";
227 } else {
231 else
240 } else {
242 }
243 }
244 } else {
246 OS << "{sae}, ";
248 }
249
250 OS << ", ";
252 OS << ", ";
254 if (CurOp > 0) {
255
256 OS << " {";
258 OS << "}";
259 }
260
261 return true;
262 }
263 break;
264
265 case X86::VPCOMBmi: case X86::VPCOMBri:
266 case X86::VPCOMDmi: case X86::VPCOMDri:
267 case X86::VPCOMQmi: case X86::VPCOMQri:
268 case X86::VPCOMUBmi: case X86::VPCOMUBri:
269 case X86::VPCOMUDmi: case X86::VPCOMUDri:
270 case X86::VPCOMUQmi: case X86::VPCOMUQri:
271 case X86::VPCOMUWmi: case X86::VPCOMUWri:
272 case X86::VPCOMWmi: case X86::VPCOMWri:
273 if (Imm >= 0 && Imm <= 7) {
274 OS << '\t';
276
279 else
281
282 OS << ", ";
284 OS << ", ";
286 return true;
287 }
288 break;
289
290 case X86::VPCMPBZ128rmi: case X86::VPCMPBZ128rri:
291 case X86::VPCMPBZ256rmi: case X86::VPCMPBZ256rri:
292 case X86::VPCMPBZrmi: case X86::VPCMPBZrri:
293 case X86::VPCMPDZ128rmi: case X86::VPCMPDZ128rri:
294 case X86::VPCMPDZ256rmi: case X86::VPCMPDZ256rri:
295 case X86::VPCMPDZrmi: case X86::VPCMPDZrri:
296 case X86::VPCMPQZ128rmi: case X86::VPCMPQZ128rri:
297 case X86::VPCMPQZ256rmi: case X86::VPCMPQZ256rri:
298 case X86::VPCMPQZrmi: case X86::VPCMPQZrri:
299 case X86::VPCMPUBZ128rmi: case X86::VPCMPUBZ128rri:
300 case X86::VPCMPUBZ256rmi: case X86::VPCMPUBZ256rri:
301 case X86::VPCMPUBZrmi: case X86::VPCMPUBZrri:
302 case X86::VPCMPUDZ128rmi: case X86::VPCMPUDZ128rri:
303 case X86::VPCMPUDZ256rmi: case X86::VPCMPUDZ256rri:
304 case X86::VPCMPUDZrmi: case X86::VPCMPUDZrri:
305 case X86::VPCMPUQZ128rmi: case X86::VPCMPUQZ128rri:
306 case X86::VPCMPUQZ256rmi: case X86::VPCMPUQZ256rri:
307 case X86::VPCMPUQZrmi: case X86::VPCMPUQZrri:
308 case X86::VPCMPUWZ128rmi: case X86::VPCMPUWZ128rri:
309 case X86::VPCMPUWZ256rmi: case X86::VPCMPUWZ256rri:
310 case X86::VPCMPUWZrmi: case X86::VPCMPUWZrri:
311 case X86::VPCMPWZ128rmi: case X86::VPCMPWZ128rri:
312 case X86::VPCMPWZ256rmi: case X86::VPCMPWZ256rri:
313 case X86::VPCMPWZrmi: case X86::VPCMPWZrri:
314 case X86::VPCMPBZ128rmik: case X86::VPCMPBZ128rrik:
315 case X86::VPCMPBZ256rmik: case X86::VPCMPBZ256rrik:
316 case X86::VPCMPBZrmik: case X86::VPCMPBZrrik:
317 case X86::VPCMPDZ128rmik: case X86::VPCMPDZ128rrik:
318 case X86::VPCMPDZ256rmik: case X86::VPCMPDZ256rrik:
319 case X86::VPCMPDZrmik: case X86::VPCMPDZrrik:
320 case X86::VPCMPQZ128rmik: case X86::VPCMPQZ128rrik:
321 case X86::VPCMPQZ256rmik: case X86::VPCMPQZ256rrik:
322 case X86::VPCMPQZrmik: case X86::VPCMPQZrrik:
323 case X86::VPCMPUBZ128rmik: case X86::VPCMPUBZ128rrik:
324 case X86::VPCMPUBZ256rmik: case X86::VPCMPUBZ256rrik:
325 case X86::VPCMPUBZrmik: case X86::VPCMPUBZrrik:
326 case X86::VPCMPUDZ128rmik: case X86::VPCMPUDZ128rrik:
327 case X86::VPCMPUDZ256rmik: case X86::VPCMPUDZ256rrik:
328 case X86::VPCMPUDZrmik: case X86::VPCMPUDZrrik:
329 case X86::VPCMPUQZ128rmik: case X86::VPCMPUQZ128rrik:
330 case X86::VPCMPUQZ256rmik: case X86::VPCMPUQZ256rrik:
331 case X86::VPCMPUQZrmik: case X86::VPCMPUQZrrik:
332 case X86::VPCMPUWZ128rmik: case X86::VPCMPUWZ128rrik:
333 case X86::VPCMPUWZ256rmik: case X86::VPCMPUWZ256rrik:
334 case X86::VPCMPUWZrmik: case X86::VPCMPUWZrrik:
335 case X86::VPCMPWZ128rmik: case X86::VPCMPWZ128rrik:
336 case X86::VPCMPWZ256rmik: case X86::VPCMPWZ256rrik:
337 case X86::VPCMPWZrmik: case X86::VPCMPWZrrik:
338 case X86::VPCMPDZ128rmbi: case X86::VPCMPDZ128rmbik:
339 case X86::VPCMPDZ256rmbi: case X86::VPCMPDZ256rmbik:
340 case X86::VPCMPDZrmbi: case X86::VPCMPDZrmbik:
341 case X86::VPCMPQZ128rmbi: case X86::VPCMPQZ128rmbik:
342 case X86::VPCMPQZ256rmbi: case X86::VPCMPQZ256rmbik:
343 case X86::VPCMPQZrmbi: case X86::VPCMPQZrmbik:
344 case X86::VPCMPUDZ128rmbi: case X86::VPCMPUDZ128rmbik:
345 case X86::VPCMPUDZ256rmbi: case X86::VPCMPUDZ256rmbik:
346 case X86::VPCMPUDZrmbi: case X86::VPCMPUDZrmbik:
347 case X86::VPCMPUQZ128rmbi: case X86::VPCMPUQZ128rmbik:
348 case X86::VPCMPUQZ256rmbi: case X86::VPCMPUQZ256rmbik:
349 case X86::VPCMPUQZrmbi: case X86::VPCMPUQZrmbik:
350 if ((Imm >= 0 && Imm <= 2) || (Imm >= 4 && Imm <= 6)) {
351 OS << '\t';
353
355
358
359
362 else
364
365
366 unsigned NumElts;
371 else
373 OS << "{1to" << NumElts << "}";
374 } else {
379 else
381 }
382 } else {
384 }
385
386 OS << ", ";
388 OS << ", ";
390 if (CurOp > 0) {
391
392 OS << " {";
394 OS << "}";
395 }
396
397 return true;
398 }
399 break;
400 }
401
402 return false;
403}
408 if (Op.isReg()) {
410 } else if (Op.isImm()) {
411
412 int64_t Imm = Op.getImm();
414
415
416
417
418
419
420
421 if (CommentStream && !HasCustomInstComment && (Imm > 255 || Imm < -256)) {
422
423 if (Imm == (int16_t)(Imm))
425 else if (Imm == (int32_t)(Imm))
427 else
429 }
430 } else {
431 assert(Op.isExpr() && "unknown operand kind in printOperand");
433 O << '$';
434 MAI.printExpr(O, *Op.getExpr());
435 }
436}
440
441
444 if (MIA->evaluateBranch(*MI, 0, 0, Target))
445 return;
446 if (MIA->evaluateMemoryOperandAddress(*MI, nullptr, 0, 0))
447 return;
448 }
449
453
455
456
458
459 if (DispSpec.isImm()) {
460 int64_t DispVal = DispSpec.getImm();
461 if (DispVal || (!IndexReg.getReg() && !BaseReg.getReg()))
463 } else {
464 assert(DispSpec.isExpr() && "non-immediate displacement for LEA?");
466 }
467
468 if (IndexReg.getReg() || BaseReg.getReg()) {
469 O << '(';
470 if (BaseReg.getReg())
472
473 if (IndexReg.getReg()) {
474 O << ',';
477 if (ScaleVal != 1) {
478 O << ',';
480 }
481 }
482 O << ')';
483 }
484}
489
490
492
493 O << "(";
495 O << ")";
496}
501
502 O << "%es:(";
504 O << ")";
505}
510
512
513
515
516 if (DispSpec.isImm()) {
518 } else {
519 assert(DispSpec.isExpr() && "non-immediate displacement?");
521 }
522}
526 if (MI->getOperand(Op).isExpr())
528
530 << '$' << formatImm(MI->getOperand(Op).getImm() & 0xff);
531}
535 MCRegister Reg = MI->getOperand(OpNo).getReg();
536
537 if (Reg == X86::ST0)
539 else
541}