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