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 MI->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}