@@ -440,8 +440,7 @@ void RecognizableInstr::adjustOperandEncoding(OperandEncoding &encoding) {
440
440
void RecognizableInstr::handleOperand (
441
441
bool optional, unsigned &operandIndex, unsigned &physicalOperandIndex,
442
442
unsigned numPhysicalOperands, const unsigned *operandMapping,
443
- OperandEncoding (*encodingFromString)(const std::string &,
444
- uint8_t OpSize)) {
443
+ OperandEncoding (*encodingFromString)(StringRef, uint8_t OpSize)) {
445
444
if (optional) {
446
445
if (physicalOperandIndex >= numPhysicalOperands)
447
446
return ;
@@ -458,12 +457,12 @@ void RecognizableInstr::handleOperand(
458
457
459
458
StringRef typeName = (*Operands)[operandIndex].Rec ->getName ();
460
459
461
- OperandEncoding encoding = encodingFromString (typeName. str () , OpSize);
460
+ OperandEncoding encoding = encodingFromString (typeName, OpSize);
462
461
// Adjust the encoding type for an operand based on the instruction.
463
462
adjustOperandEncoding (encoding);
464
463
Spec->operands [operandIndex].encoding = encoding;
465
464
Spec->operands [operandIndex].type =
466
- typeFromString (typeName. str () , HasREX_W, OpSize);
465
+ typeFromString (typeName, HasREX_W, OpSize);
467
466
468
467
++operandIndex;
469
468
++physicalOperandIndex;
@@ -1020,11 +1019,11 @@ void RecognizableInstr::emitDecodePath(DisassemblerTables &tables) const {
1020
1019
#undef MAP
1021
1020
}
1022
1021
1023
- #define TYPE (str, type ) \
1024
- if (s == str) \
1025
- return type ;
1026
- OperandType RecognizableInstr::typeFromString (const std::string &s ,
1027
- bool hasREX_W, uint8_t OpSize) {
1022
+ #define TYPE (Expected, Type ) \
1023
+ if (Str == Expected) \
1024
+ return Type ;
1025
+ OperandType RecognizableInstr::typeFromString (StringRef Str, bool hasREX_W ,
1026
+ uint8_t OpSize) {
1028
1027
if (hasREX_W) {
1029
1028
// For instructions with a REX_W prefix, a declared 32-bit register encoding
1030
1029
// is special.
@@ -1163,17 +1162,16 @@ OperandType RecognizableInstr::typeFromString(const std::string &s,
1163
1162
TYPE (" BNDR" , TYPE_BNDR)
1164
1163
TYPE (" TILE" , TYPE_TMM)
1165
1164
TYPE (" TILEPair" , TYPE_TMM_PAIR)
1166
- errs () << " Unhandled type string " << s << " \n " ;
1165
+ errs () << " Unhandled type string " << Str << " \n " ;
1167
1166
llvm_unreachable (" Unhandled type string" );
1168
1167
}
1169
1168
#undef TYPE
1170
1169
1171
- #define ENCODING (str, encoding ) \
1172
- if (s == str) \
1173
- return encoding;
1174
- OperandEncoding
1175
- RecognizableInstr::immediateEncodingFromString (const std::string &s,
1176
- uint8_t OpSize) {
1170
+ #define ENCODING (Expected, Encoding ) \
1171
+ if (Str == Expected) \
1172
+ return Encoding;
1173
+ OperandEncoding RecognizableInstr::immediateEncodingFromString (StringRef Str,
1174
+ uint8_t OpSize) {
1177
1175
if (OpSize != X86Local::OpSize16) {
1178
1176
// For instructions without an OpSize prefix, a declared 16-bit register or
1179
1177
// immediate encoding is special.
@@ -1208,13 +1206,12 @@ RecognizableInstr::immediateEncodingFromString(const std::string &s,
1208
1206
ENCODING (" VR256X" , ENCODING_IB)
1209
1207
ENCODING (" VR512" , ENCODING_IB)
1210
1208
ENCODING (" TILE" , ENCODING_IB)
1211
- errs () << " Unhandled immediate encoding " << s << " \n " ;
1209
+ errs () << " Unhandled immediate encoding " << Str << " \n " ;
1212
1210
llvm_unreachable (" Unhandled immediate encoding" );
1213
1211
}
1214
1212
1215
1213
OperandEncoding
1216
- RecognizableInstr::rmRegisterEncodingFromString (const std::string &s,
1217
- uint8_t OpSize) {
1214
+ RecognizableInstr::rmRegisterEncodingFromString (StringRef Str, uint8_t OpSize) {
1218
1215
ENCODING (" RST" , ENCODING_FP)
1219
1216
ENCODING (" RSTi" , ENCODING_FP)
1220
1217
ENCODING (" GR16" , ENCODING_RM)
@@ -1245,13 +1242,12 @@ RecognizableInstr::rmRegisterEncodingFromString(const std::string &s,
1245
1242
ENCODING (" BNDR" , ENCODING_RM)
1246
1243
ENCODING (" TILE" , ENCODING_RM)
1247
1244
ENCODING (" TILEPair" , ENCODING_RM)
1248
- errs () << " Unhandled R/M register encoding " << s << " \n " ;
1245
+ errs () << " Unhandled R/M register encoding " << Str << " \n " ;
1249
1246
llvm_unreachable (" Unhandled R/M register encoding" );
1250
1247
}
1251
1248
1252
1249
OperandEncoding
1253
- RecognizableInstr::roRegisterEncodingFromString (const std::string &s,
1254
- uint8_t OpSize) {
1250
+ RecognizableInstr::roRegisterEncodingFromString (StringRef Str, uint8_t OpSize) {
1255
1251
ENCODING (" GR16" , ENCODING_REG)
1256
1252
ENCODING (" GR16orGR32orGR64" , ENCODING_REG)
1257
1253
ENCODING (" GR32" , ENCODING_REG)
@@ -1295,12 +1291,12 @@ RecognizableInstr::roRegisterEncodingFromString(const std::string &s,
1295
1291
ENCODING (" BNDR" , ENCODING_REG)
1296
1292
ENCODING (" TILE" , ENCODING_REG)
1297
1293
ENCODING (" TILEPair" , ENCODING_REG)
1298
- errs () << " Unhandled reg/opcode register encoding " << s << " \n " ;
1294
+ errs () << " Unhandled reg/opcode register encoding " << Str << " \n " ;
1299
1295
llvm_unreachable (" Unhandled reg/opcode register encoding" );
1300
1296
}
1301
1297
1302
1298
OperandEncoding
1303
- RecognizableInstr::vvvvRegisterEncodingFromString (const std::string &s ,
1299
+ RecognizableInstr::vvvvRegisterEncodingFromString (StringRef Str ,
1304
1300
uint8_t OpSize) {
1305
1301
ENCODING (" GR8" , ENCODING_VVVV)
1306
1302
ENCODING (" GR16" , ENCODING_VVVV)
@@ -1326,12 +1322,12 @@ RecognizableInstr::vvvvRegisterEncodingFromString(const std::string &s,
1326
1322
ENCODING (" VK64" , ENCODING_VVVV)
1327
1323
ENCODING (" TILE" , ENCODING_VVVV)
1328
1324
ENCODING (" TILEPair" , ENCODING_VVVV)
1329
- errs () << " Unhandled VEX.vvvv register encoding " << s << " \n " ;
1325
+ errs () << " Unhandled VEX.vvvv register encoding " << Str << " \n " ;
1330
1326
llvm_unreachable (" Unhandled VEX.vvvv register encoding" );
1331
1327
}
1332
1328
1333
1329
OperandEncoding
1334
- RecognizableInstr::writemaskRegisterEncodingFromString (const std::string &s ,
1330
+ RecognizableInstr::writemaskRegisterEncodingFromString (StringRef Str ,
1335
1331
uint8_t OpSize) {
1336
1332
ENCODING (" VK1WM" , ENCODING_WRITEMASK)
1337
1333
ENCODING (" VK2WM" , ENCODING_WRITEMASK)
@@ -1340,13 +1336,12 @@ RecognizableInstr::writemaskRegisterEncodingFromString(const std::string &s,
1340
1336
ENCODING (" VK16WM" , ENCODING_WRITEMASK)
1341
1337
ENCODING (" VK32WM" , ENCODING_WRITEMASK)
1342
1338
ENCODING (" VK64WM" , ENCODING_WRITEMASK)
1343
- errs () << " Unhandled mask register encoding " << s << " \n " ;
1339
+ errs () << " Unhandled mask register encoding " << Str << " \n " ;
1344
1340
llvm_unreachable (" Unhandled mask register encoding" );
1345
1341
}
1346
1342
1347
- OperandEncoding
1348
- RecognizableInstr::memoryEncodingFromString (const std::string &s,
1349
- uint8_t OpSize) {
1343
+ OperandEncoding RecognizableInstr::memoryEncodingFromString (StringRef Str,
1344
+ uint8_t OpSize) {
1350
1345
ENCODING (" i16mem" , ENCODING_RM)
1351
1346
ENCODING (" i32mem" , ENCODING_RM)
1352
1347
ENCODING (" i64mem" , ENCODING_RM)
@@ -1384,13 +1379,12 @@ RecognizableInstr::memoryEncodingFromString(const std::string &s,
1384
1379
ENCODING (" vy64xmem" , ENCODING_VSIB)
1385
1380
ENCODING (" vz32mem" , ENCODING_VSIB)
1386
1381
ENCODING (" vz64mem" , ENCODING_VSIB)
1387
- errs () << " Unhandled memory encoding " << s << " \n " ;
1382
+ errs () << " Unhandled memory encoding " << Str << " \n " ;
1388
1383
llvm_unreachable (" Unhandled memory encoding" );
1389
1384
}
1390
1385
1391
1386
OperandEncoding
1392
- RecognizableInstr::relocationEncodingFromString (const std::string &s,
1393
- uint8_t OpSize) {
1387
+ RecognizableInstr::relocationEncodingFromString (StringRef Str, uint8_t OpSize) {
1394
1388
if (OpSize != X86Local::OpSize16) {
1395
1389
// For instructions without an OpSize prefix, a declared 16-bit register or
1396
1390
// immediate encoding is special.
@@ -1434,19 +1428,19 @@ RecognizableInstr::relocationEncodingFromString(const std::string &s,
1434
1428
ENCODING (" dstidx16" , ENCODING_DI)
1435
1429
ENCODING (" dstidx32" , ENCODING_DI)
1436
1430
ENCODING (" dstidx64" , ENCODING_DI)
1437
- errs () << " Unhandled relocation encoding " << s << " \n " ;
1431
+ errs () << " Unhandled relocation encoding " << Str << " \n " ;
1438
1432
llvm_unreachable (" Unhandled relocation encoding" );
1439
1433
}
1440
1434
1441
1435
OperandEncoding
1442
- RecognizableInstr::opcodeModifierEncodingFromString (const std::string &s ,
1436
+ RecognizableInstr::opcodeModifierEncodingFromString (StringRef Str ,
1443
1437
uint8_t OpSize) {
1444
1438
ENCODING (" GR32" , ENCODING_Rv)
1445
1439
ENCODING (" GR64" , ENCODING_RO)
1446
1440
ENCODING (" GR16" , ENCODING_Rv)
1447
1441
ENCODING (" GR8" , ENCODING_RB)
1448
1442
ENCODING (" ccode" , ENCODING_CC)
1449
- errs () << " Unhandled opcode modifier encoding " << s << " \n " ;
1443
+ errs () << " Unhandled opcode modifier encoding " << Str << " \n " ;
1450
1444
llvm_unreachable (" Unhandled opcode modifier encoding" );
1451
1445
}
1452
1446
#undef ENCODING
0 commit comments