mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-23 05:29:23 +00:00
Recommit "[mips] [IAS] Restore STI.FeatureBits in .set pop." (r239144).
Specified the llvm namespace for the 2 calls to make_unique() which caused compilation errors in Visual Studio 2013. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@239405 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
22debdcab6
commit
c154887856
@ -73,7 +73,9 @@ public:
|
|||||||
|
|
||||||
/// setFeatureBits - Set the feature bits.
|
/// setFeatureBits - Set the feature bits.
|
||||||
///
|
///
|
||||||
void setFeatureBits(FeatureBitset& FeatureBits_) { FeatureBits = FeatureBits_; }
|
void setFeatureBits(const FeatureBitset &FeatureBits_) {
|
||||||
|
FeatureBits = FeatureBits_;
|
||||||
|
}
|
||||||
|
|
||||||
/// InitMCProcessorInfo - Set or change the CPU (optionally supplemented with
|
/// InitMCProcessorInfo - Set or change the CPU (optionally supplemented with
|
||||||
/// feature string). Recompute feature bits and scheduling model.
|
/// feature string). Recompute feature bits and scheduling model.
|
||||||
|
@ -43,7 +43,7 @@ class MCInstrInfo;
|
|||||||
namespace {
|
namespace {
|
||||||
class MipsAssemblerOptions {
|
class MipsAssemblerOptions {
|
||||||
public:
|
public:
|
||||||
MipsAssemblerOptions(uint64_t Features_) :
|
MipsAssemblerOptions(const FeatureBitset &Features_) :
|
||||||
ATReg(1), Reorder(true), Macro(true), Features(Features_) {}
|
ATReg(1), Reorder(true), Macro(true), Features(Features_) {}
|
||||||
|
|
||||||
MipsAssemblerOptions(const MipsAssemblerOptions *Opts) {
|
MipsAssemblerOptions(const MipsAssemblerOptions *Opts) {
|
||||||
@ -70,8 +70,8 @@ public:
|
|||||||
void setMacro() { Macro = true; }
|
void setMacro() { Macro = true; }
|
||||||
void setNoMacro() { Macro = false; }
|
void setNoMacro() { Macro = false; }
|
||||||
|
|
||||||
uint64_t getFeatures() const { return Features; }
|
const FeatureBitset &getFeatures() const { return Features; }
|
||||||
void setFeatures(uint64_t Features_) { Features = Features_; }
|
void setFeatures(const FeatureBitset &Features_) { Features = Features_; }
|
||||||
|
|
||||||
// Set of features that are either architecture features or referenced
|
// Set of features that are either architecture features or referenced
|
||||||
// by them (e.g.: FeatureNaN2008 implied by FeatureMips32r6).
|
// by them (e.g.: FeatureNaN2008 implied by FeatureMips32r6).
|
||||||
@ -84,7 +84,7 @@ private:
|
|||||||
unsigned ATReg;
|
unsigned ATReg;
|
||||||
bool Reorder;
|
bool Reorder;
|
||||||
bool Macro;
|
bool Macro;
|
||||||
uint64_t Features;
|
FeatureBitset Features;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -327,23 +327,23 @@ class MipsAsmParser : public MCTargetAsmParser {
|
|||||||
STI.setFeatureBits(FeatureBits);
|
STI.setFeatureBits(FeatureBits);
|
||||||
setAvailableFeatures(
|
setAvailableFeatures(
|
||||||
ComputeAvailableFeatures(STI.ToggleFeature(ArchFeature)));
|
ComputeAvailableFeatures(STI.ToggleFeature(ArchFeature)));
|
||||||
AssemblerOptions.back()->setFeatures(getAvailableFeatures());
|
AssemblerOptions.back()->setFeatures(STI.getFeatureBits());
|
||||||
}
|
}
|
||||||
|
|
||||||
void setFeatureBits(uint64_t Feature, StringRef FeatureString) {
|
void setFeatureBits(uint64_t Feature, StringRef FeatureString) {
|
||||||
if (!(STI.getFeatureBits()[Feature])) {
|
if (!(STI.getFeatureBits()[Feature])) {
|
||||||
setAvailableFeatures(
|
setAvailableFeatures(
|
||||||
ComputeAvailableFeatures(STI.ToggleFeature(FeatureString)));
|
ComputeAvailableFeatures(STI.ToggleFeature(FeatureString)));
|
||||||
|
AssemblerOptions.back()->setFeatures(STI.getFeatureBits());
|
||||||
}
|
}
|
||||||
AssemblerOptions.back()->setFeatures(getAvailableFeatures());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void clearFeatureBits(uint64_t Feature, StringRef FeatureString) {
|
void clearFeatureBits(uint64_t Feature, StringRef FeatureString) {
|
||||||
if (STI.getFeatureBits()[Feature]) {
|
if (STI.getFeatureBits()[Feature]) {
|
||||||
setAvailableFeatures(
|
setAvailableFeatures(
|
||||||
ComputeAvailableFeatures(STI.ToggleFeature(FeatureString)));
|
ComputeAvailableFeatures(STI.ToggleFeature(FeatureString)));
|
||||||
|
AssemblerOptions.back()->setFeatures(STI.getFeatureBits());
|
||||||
}
|
}
|
||||||
AssemblerOptions.back()->setFeatures(getAvailableFeatures());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -369,11 +369,11 @@ public:
|
|||||||
|
|
||||||
// Remember the initial assembler options. The user can not modify these.
|
// Remember the initial assembler options. The user can not modify these.
|
||||||
AssemblerOptions.push_back(
|
AssemblerOptions.push_back(
|
||||||
make_unique<MipsAssemblerOptions>(getAvailableFeatures()));
|
llvm::make_unique<MipsAssemblerOptions>(STI.getFeatureBits()));
|
||||||
|
|
||||||
// Create an assembler options environment for the user to modify.
|
// Create an assembler options environment for the user to modify.
|
||||||
AssemblerOptions.push_back(
|
AssemblerOptions.push_back(
|
||||||
make_unique<MipsAssemblerOptions>(getAvailableFeatures()));
|
llvm::make_unique<MipsAssemblerOptions>(STI.getFeatureBits()));
|
||||||
|
|
||||||
getTargetStreamer().updateABIInfo(*this);
|
getTargetStreamer().updateABIInfo(*this);
|
||||||
|
|
||||||
@ -3603,7 +3603,9 @@ bool MipsAsmParser::parseSetPopDirective() {
|
|||||||
return reportParseError(Loc, ".set pop with no .set push");
|
return reportParseError(Loc, ".set pop with no .set push");
|
||||||
|
|
||||||
AssemblerOptions.pop_back();
|
AssemblerOptions.pop_back();
|
||||||
setAvailableFeatures(AssemblerOptions.back()->getFeatures());
|
setAvailableFeatures(
|
||||||
|
ComputeAvailableFeatures(AssemblerOptions.back()->getFeatures()));
|
||||||
|
STI.setFeatureBits(AssemblerOptions.back()->getFeatures());
|
||||||
|
|
||||||
getTargetStreamer().emitDirectiveSetPop();
|
getTargetStreamer().emitDirectiveSetPop();
|
||||||
return false;
|
return false;
|
||||||
@ -3673,7 +3675,9 @@ bool MipsAsmParser::parseSetMips0Directive() {
|
|||||||
return reportParseError("unexpected token, expected end of statement");
|
return reportParseError("unexpected token, expected end of statement");
|
||||||
|
|
||||||
// Reset assembler options to their initial values.
|
// Reset assembler options to their initial values.
|
||||||
setAvailableFeatures(AssemblerOptions.front()->getFeatures());
|
setAvailableFeatures(
|
||||||
|
ComputeAvailableFeatures(AssemblerOptions.front()->getFeatures()));
|
||||||
|
STI.setFeatureBits(AssemblerOptions.front()->getFeatures());
|
||||||
AssemblerOptions.back()->setFeatures(AssemblerOptions.front()->getFeatures());
|
AssemblerOptions.back()->setFeatures(AssemblerOptions.front()->getFeatures());
|
||||||
|
|
||||||
getTargetStreamer().emitDirectiveSetMips0();
|
getTargetStreamer().emitDirectiveSetMips0();
|
||||||
|
@ -12,3 +12,12 @@
|
|||||||
# CHECK: :[[@LINE-1]]:19: error: unexpected token, expected end of statement
|
# CHECK: :[[@LINE-1]]:19: error: unexpected token, expected end of statement
|
||||||
.set pop bar
|
.set pop bar
|
||||||
# CHECK: :[[@LINE-1]]:18: error: unexpected token, expected end of statement
|
# CHECK: :[[@LINE-1]]:18: error: unexpected token, expected end of statement
|
||||||
|
|
||||||
|
.set hardfloat
|
||||||
|
.set push
|
||||||
|
.set softfloat
|
||||||
|
add.s $f2, $f2, $f2
|
||||||
|
# CHECK: :[[@LINE-1]]:9: error: instruction requires a CPU feature not currently enabled
|
||||||
|
.set pop
|
||||||
|
add.s $f2, $f2, $f2
|
||||||
|
# CHECK-NOT: :[[@LINE-1]]:9: error: instruction requires a CPU feature not currently enabled
|
||||||
|
@ -51,3 +51,20 @@
|
|||||||
# CHECK: b 1336
|
# CHECK: b 1336
|
||||||
# CHECK: nop
|
# CHECK: nop
|
||||||
# CHECK: addvi.b $w15, $w13, 18
|
# CHECK: addvi.b $w15, $w13, 18
|
||||||
|
|
||||||
|
.set push
|
||||||
|
.set dsp
|
||||||
|
lbux $7, $10($11)
|
||||||
|
.set pop
|
||||||
|
|
||||||
|
.set push
|
||||||
|
.set dsp
|
||||||
|
lbux $7, $10($11)
|
||||||
|
# CHECK-NOT: :[[@LINE-1]]:5: error: instruction requires a CPU feature not currently enabled
|
||||||
|
.set pop
|
||||||
|
|
||||||
|
.set push
|
||||||
|
.set dsp
|
||||||
|
lbux $7, $10($11)
|
||||||
|
# CHECK-NOT: :[[@LINE-1]]:5: error: instruction requires a CPU feature not currently enabled
|
||||||
|
.set pop
|
||||||
|
Loading…
x
Reference in New Issue
Block a user