mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 03:02:36 +01:00
Move the Mips target to storing the ABI in the TargetMachine rather
than on MipsSubtargetInfo. This required a bit of massaging in the MC level to handle this since MC is a) largely a collection of disparate classes with no hierarchy, and b) there's no overarching equivalent to the TargetMachine, instead only the subtarget via MCSubtargetInfo (which is the base class of TargetSubtargetInfo). We're now storing the ABI in both the TargetMachine level and in the MC level because the AsmParser and the TargetStreamer both need to know what ABI we have to parse assembly and emit objects. The target streamer has a pointer to the one in the asm parser and is updated when the asm parser is created. This is fragile as the FIXME comment notes, but shouldn't be a problem in practice since we always create an asm parser before attempting to emit object code via the assembler. The TargetMachine now contains the ABI so that the DataLayout can be constructed dependent upon ABI. All testcases have been updated to use the -target-abi command line flag so that we can set the ABI without using a subtarget feature. Should be no change visible externally here. llvm-svn: 227102
This commit is contained in:
parent
656c45236a
commit
dbc13da8ec
@ -7,6 +7,7 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "MCTargetDesc/MipsABIInfo.h"
|
||||
#include "MCTargetDesc/MipsMCExpr.h"
|
||||
#include "MCTargetDesc/MipsMCTargetDesc.h"
|
||||
#include "MipsRegisterInfo.h"
|
||||
@ -95,6 +96,7 @@ class MipsAsmParser : public MCTargetAsmParser {
|
||||
}
|
||||
|
||||
MCSubtargetInfo &STI;
|
||||
MipsABIInfo ABI;
|
||||
SmallVector<std::unique_ptr<MipsAssemblerOptions>, 2> AssemblerOptions;
|
||||
MCSymbol *CurrentFn; // Pointer to the function being parsed. It may be a
|
||||
// nullptr, which indicates that no function is currently
|
||||
@ -315,7 +317,9 @@ public:
|
||||
|
||||
MipsAsmParser(MCSubtargetInfo &sti, MCAsmParser &parser,
|
||||
const MCInstrInfo &MII, const MCTargetOptions &Options)
|
||||
: MCTargetAsmParser(), STI(sti) {
|
||||
: MCTargetAsmParser(), STI(sti),
|
||||
ABI(MipsABIInfo::computeTargetABI(Triple(sti.getTargetTriple()),
|
||||
sti.getCPU(), Options)) {
|
||||
MCAsmParserExtension::Initialize(parser);
|
||||
|
||||
// Initialize the set of available features.
|
||||
@ -331,12 +335,6 @@ public:
|
||||
|
||||
getTargetStreamer().updateABIInfo(*this);
|
||||
|
||||
// Assert exactly one ABI was chosen.
|
||||
assert((((STI.getFeatureBits() & Mips::FeatureO32) != 0) +
|
||||
((STI.getFeatureBits() & Mips::FeatureEABI) != 0) +
|
||||
((STI.getFeatureBits() & Mips::FeatureN32) != 0) +
|
||||
((STI.getFeatureBits() & Mips::FeatureN64) != 0)) == 1);
|
||||
|
||||
if (!isABI_O32() && !useOddSPReg() != 0)
|
||||
report_fatal_error("-mno-odd-spreg requires the O32 ABI");
|
||||
|
||||
@ -348,9 +346,10 @@ public:
|
||||
|
||||
bool isGP64bit() const { return STI.getFeatureBits() & Mips::FeatureGP64Bit; }
|
||||
bool isFP64bit() const { return STI.getFeatureBits() & Mips::FeatureFP64Bit; }
|
||||
bool isABI_N32() const { return STI.getFeatureBits() & Mips::FeatureN32; }
|
||||
bool isABI_N64() const { return STI.getFeatureBits() & Mips::FeatureN64; }
|
||||
bool isABI_O32() const { return STI.getFeatureBits() & Mips::FeatureO32; }
|
||||
const MipsABIInfo &getABI() const { return ABI; }
|
||||
bool isABI_N32() const { return ABI.IsN32(); }
|
||||
bool isABI_N64() const { return ABI.IsN64(); }
|
||||
bool isABI_O32() const { return ABI.IsO32(); }
|
||||
bool isABI_FPXX() const { return STI.getFeatureBits() & Mips::FeatureFPXX; }
|
||||
|
||||
bool useOddSPReg() const {
|
||||
|
@ -9,6 +9,9 @@
|
||||
|
||||
#include "MipsABIInfo.h"
|
||||
#include "MipsRegisterInfo.h"
|
||||
#include "llvm/ADT/StringRef.h"
|
||||
#include "llvm/ADT/StringSwitch.h"
|
||||
#include "llvm/MC/MCTargetOptions.h"
|
||||
|
||||
using namespace llvm;
|
||||
|
||||
@ -43,3 +46,43 @@ unsigned MipsABIInfo::GetCalleeAllocdArgSizeInBytes(CallingConv::ID CC) const {
|
||||
return 0;
|
||||
llvm_unreachable("Unhandled ABI");
|
||||
}
|
||||
|
||||
MipsABIInfo MipsABIInfo::computeTargetABI(Triple TT, StringRef CPU,
|
||||
const MCTargetOptions &Options) {
|
||||
if (Options.getABIName().startswith("o32"))
|
||||
return MipsABIInfo::O32();
|
||||
else if (Options.getABIName().startswith("n32"))
|
||||
return MipsABIInfo::N32();
|
||||
else if (Options.getABIName().startswith("n64"))
|
||||
return MipsABIInfo::N64();
|
||||
else if (Options.getABIName().startswith("eabi"))
|
||||
return MipsABIInfo::EABI();
|
||||
else if (!Options.getABIName().empty())
|
||||
llvm_unreachable("Unknown ABI option for MIPS");
|
||||
|
||||
// FIXME: This shares code with the selectMipsCPU routine that's
|
||||
// used and not shared in a couple of other places. This needs unifying
|
||||
// at some level.
|
||||
if (CPU.empty() || CPU == "generic") {
|
||||
if (TT.getArch() == Triple::mips || TT.getArch() == Triple::mipsel)
|
||||
CPU = "mips32";
|
||||
else
|
||||
CPU = "mips64";
|
||||
}
|
||||
|
||||
return StringSwitch<MipsABIInfo>(CPU)
|
||||
.Case("mips1", MipsABIInfo::O32())
|
||||
.Case("mips2", MipsABIInfo::O32())
|
||||
.Case("mips32", MipsABIInfo::O32())
|
||||
.Case("mips32r2", MipsABIInfo::O32())
|
||||
.Case("mips32r6", MipsABIInfo::O32())
|
||||
.Case("mips16", MipsABIInfo::O32())
|
||||
.Case("mips3", MipsABIInfo::N64())
|
||||
.Case("mips4", MipsABIInfo::N64())
|
||||
.Case("mips5", MipsABIInfo::N64())
|
||||
.Case("mips64", MipsABIInfo::N64())
|
||||
.Case("mips64r2", MipsABIInfo::N64())
|
||||
.Case("mips64r6", MipsABIInfo::N64())
|
||||
.Case("octeon", MipsABIInfo::N64())
|
||||
.Default(MipsABIInfo::Unknown());
|
||||
}
|
||||
|
@ -11,11 +11,15 @@
|
||||
#define LLVM_LIB_TARGET_MIPS_MCTARGETDESC_MIPSABIINFO_H
|
||||
|
||||
#include "llvm/ADT/ArrayRef.h"
|
||||
#include "llvm/ADT/Triple.h"
|
||||
#include "llvm/IR/CallingConv.h"
|
||||
#include "llvm/MC/MCRegisterInfo.h"
|
||||
|
||||
namespace llvm {
|
||||
|
||||
class MCTargetOptions;
|
||||
class StringRef;
|
||||
|
||||
class MipsABIInfo {
|
||||
public:
|
||||
enum class ABI { Unknown, O32, N32, N64, EABI };
|
||||
@ -31,6 +35,8 @@ public:
|
||||
static MipsABIInfo N32() { return MipsABIInfo(ABI::N32); }
|
||||
static MipsABIInfo N64() { return MipsABIInfo(ABI::N64); }
|
||||
static MipsABIInfo EABI() { return MipsABIInfo(ABI::EABI); }
|
||||
static MipsABIInfo computeTargetABI(Triple TT, StringRef CPU,
|
||||
const MCTargetOptions &Options);
|
||||
|
||||
bool IsKnown() const { return ThisABI != ABI::Unknown; }
|
||||
bool IsO32() const { return ThisABI == ABI::O32; }
|
||||
|
@ -37,7 +37,7 @@ public:
|
||||
MCCodeEmitter *Emitter, const MCSubtargetInfo &STI)
|
||||
: MCELFStreamer(Context, MAB, OS, Emitter) {
|
||||
|
||||
RegInfoRecord = new MipsRegInfoRecord(this, Context, STI);
|
||||
RegInfoRecord = new MipsRegInfoRecord(this, Context);
|
||||
MipsOptionRecords.push_back(
|
||||
std::unique_ptr<MipsRegInfoRecord>(RegInfoRecord));
|
||||
}
|
||||
|
@ -8,6 +8,7 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "MipsOptionRecord.h"
|
||||
#include "MipsTargetStreamer.h"
|
||||
#include "MipsELFStreamer.h"
|
||||
#include "llvm/MC/MCSectionELF.h"
|
||||
|
||||
@ -15,8 +16,8 @@ using namespace llvm;
|
||||
|
||||
void MipsRegInfoRecord::EmitMipsOptionRecord() {
|
||||
MCAssembler &MCA = Streamer->getAssembler();
|
||||
Triple T(STI.getTargetTriple());
|
||||
uint64_t Features = STI.getFeatureBits();
|
||||
MipsTargetStreamer *MTS =
|
||||
static_cast<MipsTargetStreamer *>(Streamer->getTargetStreamer());
|
||||
|
||||
Streamer->PushSection();
|
||||
|
||||
@ -24,7 +25,7 @@ void MipsRegInfoRecord::EmitMipsOptionRecord() {
|
||||
// we don't emit .Mips.options for other ELFs other than N64.
|
||||
// Since .reginfo has the same information as .Mips.options (ODK_REGINFO),
|
||||
// we can use the same abstraction (MipsRegInfoRecord class) to handle both.
|
||||
if (Features & Mips::FeatureN64) {
|
||||
if (MTS->getABI().IsN64()) {
|
||||
// The EntrySize value of 1 seems strange since the records are neither
|
||||
// 1-byte long nor fixed length but it matches the value GAS emits.
|
||||
const MCSectionELF *Sec =
|
||||
@ -50,7 +51,7 @@ void MipsRegInfoRecord::EmitMipsOptionRecord() {
|
||||
Context.getELFSection(".reginfo", ELF::SHT_MIPS_REGINFO, ELF::SHF_ALLOC,
|
||||
SectionKind::getMetadata(), 24, "");
|
||||
MCA.getOrCreateSectionData(*Sec)
|
||||
.setAlignment(Features & Mips::FeatureN32 ? 8 : 4);
|
||||
.setAlignment(MTS->getABI().IsN32() ? 8 : 4);
|
||||
Streamer->SwitchSection(Sec);
|
||||
|
||||
Streamer->EmitIntValue(ri_gprmask, 4);
|
||||
|
@ -335,14 +335,25 @@ MipsTargetELFStreamer::MipsTargetELFStreamer(MCStreamer &S,
|
||||
const MCSubtargetInfo &STI)
|
||||
: MipsTargetStreamer(S), MicroMipsEnabled(false), STI(STI) {
|
||||
MCAssembler &MCA = getStreamer().getAssembler();
|
||||
uint64_t Features = STI.getFeatureBits();
|
||||
Triple T(STI.getTargetTriple());
|
||||
Pic = (MCA.getContext().getObjectFileInfo()->getRelocM() == Reloc::PIC_)
|
||||
? true
|
||||
: false;
|
||||
|
||||
// Update e_header flags
|
||||
unsigned EFlags = 0;
|
||||
uint64_t Features = STI.getFeatureBits();
|
||||
|
||||
// Set the header flags that we can in the constructor.
|
||||
// FIXME: This is a fairly terrible hack. We set the rest
|
||||
// of these in the destructor. The problem here is two-fold:
|
||||
//
|
||||
// a: Some of the eflags can be set/reset by directives.
|
||||
// b: There aren't any usage paths that initialize the ABI
|
||||
// pointer until after we initialize either an assembler
|
||||
// or the target machine.
|
||||
// We can fix this by making the target streamer construct
|
||||
// the ABI, but this is fraught with wide ranging dependency
|
||||
// issues as well.
|
||||
unsigned EFlags = MCA.getELFHeaderEFlags();
|
||||
|
||||
// Architecture
|
||||
if (Features & Mips::FeatureMips64r6)
|
||||
@ -368,19 +379,6 @@ MipsTargetELFStreamer::MipsTargetELFStreamer(MCStreamer &S,
|
||||
else
|
||||
EFlags |= ELF::EF_MIPS_ARCH_1;
|
||||
|
||||
// ABI
|
||||
// N64 does not require any ABI bits.
|
||||
if (Features & Mips::FeatureO32)
|
||||
EFlags |= ELF::EF_MIPS_ABI_O32;
|
||||
else if (Features & Mips::FeatureN32)
|
||||
EFlags |= ELF::EF_MIPS_ABI2;
|
||||
|
||||
if (Features & Mips::FeatureGP64Bit) {
|
||||
if (Features & Mips::FeatureO32)
|
||||
EFlags |= ELF::EF_MIPS_32BITMODE; /* Compatibility Mode */
|
||||
} else if (Features & Mips::FeatureMips64r2 || Features & Mips::FeatureMips64)
|
||||
EFlags |= ELF::EF_MIPS_32BITMODE;
|
||||
|
||||
// Other options.
|
||||
if (Features & Mips::FeatureNaN2008)
|
||||
EFlags |= ELF::EF_MIPS_NAN2008;
|
||||
@ -388,8 +386,6 @@ MipsTargetELFStreamer::MipsTargetELFStreamer(MCStreamer &S,
|
||||
// -mabicalls and -mplt are not implemented but we should act as if they were
|
||||
// given.
|
||||
EFlags |= ELF::EF_MIPS_CPIC;
|
||||
if (Features & Mips::FeatureN64)
|
||||
EFlags |= ELF::EF_MIPS_PIC;
|
||||
|
||||
MCA.setELFHeaderEFlags(EFlags);
|
||||
}
|
||||
@ -424,6 +420,32 @@ void MipsTargetELFStreamer::finish() {
|
||||
DataSectionData.setAlignment(std::max(16u, DataSectionData.getAlignment()));
|
||||
BSSSectionData.setAlignment(std::max(16u, BSSSectionData.getAlignment()));
|
||||
|
||||
uint64_t Features = STI.getFeatureBits();
|
||||
|
||||
// Update e_header flags. See the FIXME and comment above in
|
||||
// the constructor for a full rundown on this.
|
||||
unsigned EFlags = MCA.getELFHeaderEFlags();
|
||||
|
||||
// ABI
|
||||
// N64 does not require any ABI bits.
|
||||
if (getABI().IsO32())
|
||||
EFlags |= ELF::EF_MIPS_ABI_O32;
|
||||
else if (getABI().IsN32())
|
||||
EFlags |= ELF::EF_MIPS_ABI2;
|
||||
|
||||
if (Features & Mips::FeatureGP64Bit) {
|
||||
if (getABI().IsO32())
|
||||
EFlags |= ELF::EF_MIPS_32BITMODE; /* Compatibility Mode */
|
||||
} else if (Features & Mips::FeatureMips64r2 || Features & Mips::FeatureMips64)
|
||||
EFlags |= ELF::EF_MIPS_32BITMODE;
|
||||
|
||||
// If we've set the cpic eflag and we're n64, go ahead and set the pic
|
||||
// one as well.
|
||||
if (EFlags & ELF::EF_MIPS_CPIC && getABI().IsN64())
|
||||
EFlags |= ELF::EF_MIPS_PIC;
|
||||
|
||||
MCA.setELFHeaderEFlags(EFlags);
|
||||
|
||||
// Emit all the option records.
|
||||
// At the moment we are only emitting .Mips.options (ODK_REGINFO) and
|
||||
// .reginfo.
|
||||
@ -604,7 +626,7 @@ void MipsTargetELFStreamer::emitDirectiveCpLoad(unsigned RegNo) {
|
||||
// addui $gp, $gp, %lo(_gp_disp)
|
||||
// addu $gp, $gp, $reg
|
||||
// when support for position independent code is enabled.
|
||||
if (!Pic || (isN32() || isN64()))
|
||||
if (!Pic || (getABI().IsN32() || getABI().IsN64()))
|
||||
return;
|
||||
|
||||
// There's a GNU extension controlled by -mno-shared that allows
|
||||
@ -653,7 +675,7 @@ void MipsTargetELFStreamer::emitDirectiveCpsetup(unsigned RegNo,
|
||||
const MCSymbol &Sym,
|
||||
bool IsReg) {
|
||||
// Only N32 and N64 emit anything for .cpsetup iff PIC is set.
|
||||
if (!Pic || !(isN32() || isN64()))
|
||||
if (!Pic || !(getABI().IsN32() || getABI().IsN64()))
|
||||
return;
|
||||
|
||||
MCAssembler &MCA = getStreamer().getAssembler();
|
||||
|
@ -69,14 +69,6 @@ def FeatureNaN2008 : SubtargetFeature<"nan2008", "IsNaN2008bit", "true",
|
||||
"IEEE 754-2008 NaN encoding.">;
|
||||
def FeatureSingleFloat : SubtargetFeature<"single-float", "IsSingleFloat",
|
||||
"true", "Only supports single precision float">;
|
||||
def FeatureO32 : SubtargetFeature<"o32", "ABI", "MipsABIInfo::O32()",
|
||||
"Enable o32 ABI">;
|
||||
def FeatureN32 : SubtargetFeature<"n32", "ABI", "MipsABIInfo::N32()",
|
||||
"Enable n32 ABI">;
|
||||
def FeatureN64 : SubtargetFeature<"n64", "ABI", "MipsABIInfo::N64()",
|
||||
"Enable n64 ABI">;
|
||||
def FeatureEABI : SubtargetFeature<"eabi", "ABI", "MipsABIInfo::EABI()",
|
||||
"Enable eabi ABI">;
|
||||
def FeatureNoOddSPReg : SubtargetFeature<"nooddspreg", "UseOddSPReg", "false",
|
||||
"Disable odd numbered single-precision "
|
||||
"registers">;
|
||||
@ -162,20 +154,20 @@ def FeatureCnMips : SubtargetFeature<"cnmips", "HasCnMips",
|
||||
class Proc<string Name, list<SubtargetFeature> Features>
|
||||
: Processor<Name, MipsGenericItineraries, Features>;
|
||||
|
||||
def : Proc<"mips1", [FeatureMips1, FeatureO32]>;
|
||||
def : Proc<"mips2", [FeatureMips2, FeatureO32]>;
|
||||
def : Proc<"mips32", [FeatureMips32, FeatureO32]>;
|
||||
def : Proc<"mips32r2", [FeatureMips32r2, FeatureO32]>;
|
||||
def : Proc<"mips32r6", [FeatureMips32r6, FeatureO32]>;
|
||||
def : Proc<"mips1", [FeatureMips1]>;
|
||||
def : Proc<"mips2", [FeatureMips2]>;
|
||||
def : Proc<"mips32", [FeatureMips32]>;
|
||||
def : Proc<"mips32r2", [FeatureMips32r2]>;
|
||||
def : Proc<"mips32r6", [FeatureMips32r6]>;
|
||||
|
||||
def : Proc<"mips3", [FeatureMips3, FeatureN64]>;
|
||||
def : Proc<"mips4", [FeatureMips4, FeatureN64]>;
|
||||
def : Proc<"mips5", [FeatureMips5, FeatureN64]>;
|
||||
def : Proc<"mips64", [FeatureMips64, FeatureN64]>;
|
||||
def : Proc<"mips64r2", [FeatureMips64r2, FeatureN64]>;
|
||||
def : Proc<"mips64r6", [FeatureMips64r6, FeatureN64]>;
|
||||
def : Proc<"mips16", [FeatureMips16, FeatureO32]>;
|
||||
def : Proc<"octeon", [FeatureMips64r2, FeatureN64, FeatureCnMips]>;
|
||||
def : Proc<"mips3", [FeatureMips3]>;
|
||||
def : Proc<"mips4", [FeatureMips4]>;
|
||||
def : Proc<"mips5", [FeatureMips5]>;
|
||||
def : Proc<"mips64", [FeatureMips64]>;
|
||||
def : Proc<"mips64r2", [FeatureMips64r2]>;
|
||||
def : Proc<"mips64r6", [FeatureMips64r6]>;
|
||||
def : Proc<"mips16", [FeatureMips16]>;
|
||||
def : Proc<"octeon", [FeatureMips64r2, FeatureCnMips]>;
|
||||
|
||||
def MipsAsmParser : AsmParser {
|
||||
let ShouldEmitMatchRegisterName = 0;
|
||||
|
@ -19,6 +19,7 @@
|
||||
#include "MipsAsmPrinter.h"
|
||||
#include "MipsInstrInfo.h"
|
||||
#include "MipsMCInstLower.h"
|
||||
#include "MipsTargetMachine.h"
|
||||
#include "MipsTargetStreamer.h"
|
||||
#include "llvm/ADT/SmallString.h"
|
||||
#include "llvm/ADT/StringExtras.h"
|
||||
@ -319,7 +320,7 @@ void MipsAsmPrinter::emitFrameDirective() {
|
||||
|
||||
/// Emit Set directives.
|
||||
const char *MipsAsmPrinter::getCurrentABIString() const {
|
||||
switch (Subtarget->getABI().GetEnumValue()) {
|
||||
switch (static_cast<MipsTargetMachine &>(TM).getABI().GetEnumValue()) {
|
||||
case MipsABIInfo::ABI::O32: return "abi32";
|
||||
case MipsABIInfo::ABI::N32: return "abiN32";
|
||||
case MipsABIInfo::ABI::N64: return "abi64";
|
||||
|
@ -2524,7 +2524,8 @@ MipsTargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI,
|
||||
|
||||
// Allocate the reserved argument area. It seems strange to do this from the
|
||||
// caller side but removing it breaks the frame size calculation.
|
||||
const MipsABIInfo &ABI = Subtarget.getABI();
|
||||
const MipsABIInfo &ABI =
|
||||
static_cast<const MipsTargetMachine &>(MF.getTarget()).getABI();
|
||||
CCInfo.AllocateStack(ABI.GetCalleeAllocdArgSizeInBytes(CallConv), 1);
|
||||
|
||||
CCInfo.AnalyzeCallOperands(Outs, CC_Mips, CLI.getArgs(), Callee.getNode());
|
||||
@ -2888,7 +2889,8 @@ MipsTargetLowering::LowerFormalArguments(SDValue Chain,
|
||||
SmallVector<CCValAssign, 16> ArgLocs;
|
||||
MipsCCState CCInfo(CallConv, IsVarArg, DAG.getMachineFunction(), ArgLocs,
|
||||
*DAG.getContext());
|
||||
const MipsABIInfo &ABI = Subtarget.getABI();
|
||||
const MipsABIInfo &ABI =
|
||||
static_cast<const MipsTargetMachine &>(MF.getTarget()).getABI();
|
||||
CCInfo.AllocateStack(ABI.GetCalleeAllocdArgSizeInBytes(CallConv), 1);
|
||||
Function::const_arg_iterator FuncArg =
|
||||
DAG.getMachineFunction().getFunction()->arg_begin();
|
||||
@ -3539,7 +3541,8 @@ void MipsTargetLowering::copyByValRegs(
|
||||
unsigned RegAreaSize = NumRegs * GPRSizeInBytes;
|
||||
unsigned FrameObjSize = std::max(Flags.getByValSize(), RegAreaSize);
|
||||
int FrameObjOffset;
|
||||
const MipsABIInfo &ABI = Subtarget.getABI();
|
||||
const MipsABIInfo &ABI =
|
||||
static_cast<const MipsTargetMachine &>(MF.getTarget()).getABI();
|
||||
ArrayRef<MCPhysReg> ByValArgRegs = ABI.GetByValArgRegs();
|
||||
|
||||
if (RegAreaSize)
|
||||
@ -3591,7 +3594,10 @@ void MipsTargetLowering::passByValArg(
|
||||
unsigned NumRegs = LastReg - FirstReg;
|
||||
|
||||
if (NumRegs) {
|
||||
const ArrayRef<MCPhysReg> ArgRegs = Subtarget.getABI().GetByValArgRegs();
|
||||
const ArrayRef<MCPhysReg> ArgRegs =
|
||||
static_cast<const MipsTargetMachine &>(DAG.getTarget())
|
||||
.getABI()
|
||||
.GetByValArgRegs();
|
||||
bool LeftoverBytes = (NumRegs * RegSizeInBytes > ByValSizeInBytes);
|
||||
unsigned I = 0;
|
||||
|
||||
@ -3674,7 +3680,10 @@ void MipsTargetLowering::writeVarArgRegs(std::vector<SDValue> &OutChains,
|
||||
SDValue Chain, SDLoc DL,
|
||||
SelectionDAG &DAG,
|
||||
CCState &State) const {
|
||||
const ArrayRef<MCPhysReg> ArgRegs = Subtarget.getABI().GetVarArgRegs();
|
||||
const ArrayRef<MCPhysReg> ArgRegs =
|
||||
static_cast<const MipsTargetMachine &>(DAG.getTarget())
|
||||
.getABI()
|
||||
.GetVarArgRegs();
|
||||
unsigned Idx = State.getFirstUnallocated(ArgRegs.data(), ArgRegs.size());
|
||||
unsigned RegSizeInBytes = Subtarget.getGPRSizeInBytes();
|
||||
MVT RegTy = MVT::getIntegerVT(RegSizeInBytes * 8);
|
||||
@ -3690,7 +3699,8 @@ void MipsTargetLowering::writeVarArgRegs(std::vector<SDValue> &OutChains,
|
||||
VaArgOffset =
|
||||
RoundUpToAlignment(State.getNextStackOffset(), RegSizeInBytes);
|
||||
else {
|
||||
const MipsABIInfo &ABI = Subtarget.getABI();
|
||||
const MipsABIInfo &ABI =
|
||||
static_cast<const MipsTargetMachine &>(MF.getTarget()).getABI();
|
||||
VaArgOffset =
|
||||
(int)ABI.GetCalleeAllocdArgSizeInBytes(State.getCallingConv()) -
|
||||
(int)(RegSizeInBytes * (ArgRegs.size() - Idx));
|
||||
@ -3733,7 +3743,10 @@ void MipsTargetLowering::HandleByVal(CCState *State, unsigned &Size,
|
||||
|
||||
if (State->getCallingConv() != CallingConv::Fast) {
|
||||
unsigned RegSizeInBytes = Subtarget.getGPRSizeInBytes();
|
||||
const ArrayRef<MCPhysReg> IntArgRegs = Subtarget.getABI().GetByValArgRegs();
|
||||
const ArrayRef<MCPhysReg> IntArgRegs =
|
||||
static_cast<const MipsTargetMachine &>(MF.getTarget())
|
||||
.getABI()
|
||||
.GetByValArgRegs();
|
||||
// FIXME: The O32 case actually describes no shadow registers.
|
||||
const MCPhysReg *ShadowRegs =
|
||||
Subtarget.isABI_O32() ? IntArgRegs.data() : Mips64DPRegs;
|
||||
|
@ -63,11 +63,16 @@ namespace {
|
||||
public:
|
||||
static char ID;
|
||||
MipsLongBranch(TargetMachine &tm)
|
||||
: MachineFunctionPass(ID), TM(tm),
|
||||
IsPIC(TM.getRelocationModel() == Reloc::PIC_),
|
||||
ABI(TM.getSubtarget<MipsSubtarget>().getABI()),
|
||||
LongBranchSeqSize(!IsPIC ? 2 : (ABI.IsN64() ? 10 :
|
||||
(!TM.getSubtarget<MipsSubtarget>().isTargetNaCl() ? 9 : 10))) {}
|
||||
: MachineFunctionPass(ID), TM(tm),
|
||||
IsPIC(TM.getRelocationModel() == Reloc::PIC_),
|
||||
ABI(static_cast<const MipsTargetMachine &>(TM).getABI()),
|
||||
LongBranchSeqSize(
|
||||
!IsPIC ? 2
|
||||
: (ABI.IsN64()
|
||||
? 10
|
||||
: (!TM.getSubtarget<MipsSubtarget>().isTargetNaCl()
|
||||
? 9
|
||||
: 10))) {}
|
||||
|
||||
const char *getPassName() const override {
|
||||
return "Mips Long Branch";
|
||||
|
@ -36,9 +36,8 @@ public:
|
||||
|
||||
class MipsRegInfoRecord : public MipsOptionRecord {
|
||||
public:
|
||||
MipsRegInfoRecord(MipsELFStreamer *S, MCContext &Context,
|
||||
const MCSubtargetInfo &STI)
|
||||
: Streamer(S), Context(Context), STI(STI) {
|
||||
MipsRegInfoRecord(MipsELFStreamer *S, MCContext &Context)
|
||||
: Streamer(S), Context(Context) {
|
||||
ri_gprmask = 0;
|
||||
ri_cprmask[0] = ri_cprmask[1] = ri_cprmask[2] = ri_cprmask[3] = 0;
|
||||
ri_gp_value = 0;
|
||||
@ -61,7 +60,6 @@ public:
|
||||
private:
|
||||
MipsELFStreamer *Streamer;
|
||||
MCContext &Context;
|
||||
const MCSubtargetInfo &STI;
|
||||
const MCRegisterClass *GPR32RegClass;
|
||||
const MCRegisterClass *GPR64RegClass;
|
||||
const MCRegisterClass *FGR32RegClass;
|
||||
|
@ -62,18 +62,6 @@ static cl::opt<bool>
|
||||
GPOpt("mgpopt", cl::Hidden,
|
||||
cl::desc("MIPS: Enable gp-relative addressing of small data items"));
|
||||
|
||||
/// Select the Mips CPU for the given triple and cpu name.
|
||||
/// FIXME: Merge with the copy in MipsMCTargetDesc.cpp
|
||||
static StringRef selectMipsCPU(Triple TT, StringRef CPU) {
|
||||
if (CPU.empty() || CPU == "generic") {
|
||||
if (TT.getArch() == Triple::mips || TT.getArch() == Triple::mipsel)
|
||||
CPU = "mips32";
|
||||
else
|
||||
CPU = "mips64";
|
||||
}
|
||||
return CPU;
|
||||
}
|
||||
|
||||
void MipsSubtarget::anchor() { }
|
||||
|
||||
static std::string computeDataLayout(const MipsSubtarget &ST) {
|
||||
@ -110,11 +98,11 @@ MipsSubtarget::MipsSubtarget(const std::string &TT, const std::string &CPU,
|
||||
const std::string &FS, bool little,
|
||||
const MipsTargetMachine &TM)
|
||||
: MipsGenSubtargetInfo(TT, CPU, FS), MipsArchVersion(MipsDefault),
|
||||
ABI(MipsABIInfo::Unknown()), IsLittle(little), IsSingleFloat(false),
|
||||
IsFPXX(false), NoABICalls(false), IsFP64bit(false), UseOddSPReg(true),
|
||||
IsNaN2008bit(false), IsGP64bit(false), HasVFPU(false), HasCnMips(false),
|
||||
HasMips3_32(false), HasMips3_32r2(false), HasMips4_32(false),
|
||||
HasMips4_32r2(false), HasMips5_32r2(false), InMips16Mode(false),
|
||||
IsLittle(little), IsSingleFloat(false), IsFPXX(false), NoABICalls(false),
|
||||
IsFP64bit(false), UseOddSPReg(true), IsNaN2008bit(false),
|
||||
IsGP64bit(false), HasVFPU(false), HasCnMips(false), HasMips3_32(false),
|
||||
HasMips3_32r2(false), HasMips4_32(false), HasMips4_32r2(false),
|
||||
HasMips5_32r2(false), InMips16Mode(false),
|
||||
InMips16HardFloat(Mips16HardFloat), InMicroMipsMode(false), HasDSP(false),
|
||||
HasDSPR2(false), AllowMixed16_32(Mixed16_32 | Mips_Os16), Os16(Mips_Os16),
|
||||
HasMSA(false), TM(TM), TargetTriple(TT),
|
||||
@ -135,13 +123,6 @@ MipsSubtarget::MipsSubtarget(const std::string &TT, const std::string &CPU,
|
||||
if (MipsArchVersion == Mips5)
|
||||
report_fatal_error("Code generation for MIPS-V is not implemented", false);
|
||||
|
||||
// Assert exactly one ABI was chosen.
|
||||
assert(ABI.IsKnown());
|
||||
assert((((getFeatureBits() & Mips::FeatureO32) != 0) +
|
||||
((getFeatureBits() & Mips::FeatureEABI) != 0) +
|
||||
((getFeatureBits() & Mips::FeatureN32) != 0) +
|
||||
((getFeatureBits() & Mips::FeatureN64) != 0)) == 1);
|
||||
|
||||
// Check if Architecture and ABI are compatible.
|
||||
assert(((!isGP64bit() && (isABI_O32() || isABI_EABI())) ||
|
||||
(isGP64bit() && (isABI_N32() || isABI_N64()))) &&
|
||||
@ -192,6 +173,18 @@ CodeGenOpt::Level MipsSubtarget::getOptLevelToEnablePostRAScheduler() const {
|
||||
return CodeGenOpt::Aggressive;
|
||||
}
|
||||
|
||||
/// Select the Mips CPU for the given triple and cpu name.
|
||||
/// FIXME: Merge with the copy in MipsMCTargetDesc.cpp
|
||||
static StringRef selectMipsCPU(Triple TT, StringRef CPU) {
|
||||
if (CPU.empty() || CPU == "generic") {
|
||||
if (TT.getArch() == Triple::mips || TT.getArch() == Triple::mipsel)
|
||||
CPU = "mips32";
|
||||
else
|
||||
CPU = "mips64";
|
||||
}
|
||||
return CPU;
|
||||
}
|
||||
|
||||
MipsSubtarget &
|
||||
MipsSubtarget::initializeSubtargetDependencies(StringRef CPU, StringRef FS,
|
||||
const TargetMachine &TM) {
|
||||
@ -220,3 +213,9 @@ bool MipsSubtarget::useConstantIslands() {
|
||||
Reloc::Model MipsSubtarget::getRelocationModel() const {
|
||||
return TM.getRelocationModel();
|
||||
}
|
||||
|
||||
bool MipsSubtarget::isABI_EABI() const { return getABI().IsEABI(); }
|
||||
bool MipsSubtarget::isABI_N64() const { return getABI().IsN64(); }
|
||||
bool MipsSubtarget::isABI_N32() const { return getABI().IsN32(); }
|
||||
bool MipsSubtarget::isABI_O32() const { return getABI().IsO32(); }
|
||||
const MipsABIInfo &MipsSubtarget::getABI() const { return TM.getABI(); }
|
||||
|
@ -45,9 +45,6 @@ class MipsSubtarget : public MipsGenSubtargetInfo {
|
||||
// Mips architecture version
|
||||
MipsArchEnum MipsArchVersion;
|
||||
|
||||
// Selected ABI
|
||||
MipsABIInfo ABI;
|
||||
|
||||
// IsLittle - The target is Little Endian
|
||||
bool IsLittle;
|
||||
|
||||
@ -153,12 +150,12 @@ public:
|
||||
CodeGenOpt::Level getOptLevelToEnablePostRAScheduler() const override;
|
||||
|
||||
/// Only O32 and EABI supported right now.
|
||||
bool isABI_EABI() const { return ABI.IsEABI(); }
|
||||
bool isABI_N64() const { return ABI.IsN64(); }
|
||||
bool isABI_N32() const { return ABI.IsN32(); }
|
||||
bool isABI_O32() const { return ABI.IsO32(); }
|
||||
bool isABI_EABI() const;
|
||||
bool isABI_N64() const;
|
||||
bool isABI_N32() const;
|
||||
bool isABI_O32() const;
|
||||
const MipsABIInfo &getABI() const;
|
||||
bool isABI_FPXX() const { return isABI_O32() && IsFPXX; }
|
||||
const MipsABIInfo &getABI() const { return ABI; }
|
||||
|
||||
/// This constructor initializes the data members to match that
|
||||
/// of the specified triple.
|
||||
|
@ -57,10 +57,9 @@ MipsTargetMachine::MipsTargetMachine(const Target &T, StringRef TT,
|
||||
Reloc::Model RM, CodeModel::Model CM,
|
||||
CodeGenOpt::Level OL, bool isLittle)
|
||||
: LLVMTargetMachine(T, TT, CPU, FS, Options, RM, CM, OL),
|
||||
isLittle(isLittle),
|
||||
TLOF(make_unique<MipsTargetObjectFile>()),
|
||||
Subtarget(nullptr),
|
||||
DefaultSubtarget(TT, CPU, FS, isLittle, *this),
|
||||
isLittle(isLittle), TLOF(make_unique<MipsTargetObjectFile>()),
|
||||
ABI(MipsABIInfo::computeTargetABI(Triple(TT), CPU, Options.MCOptions)),
|
||||
Subtarget(nullptr), DefaultSubtarget(TT, CPU, FS, isLittle, *this),
|
||||
NoMips16Subtarget(TT, CPU, FS.empty() ? "-mips16" : FS.str() + ",-mips16",
|
||||
isLittle, *this),
|
||||
Mips16Subtarget(TT, CPU, FS.empty() ? "+mips16" : FS.str() + ",+mips16",
|
||||
|
@ -19,6 +19,7 @@
|
||||
#include "llvm/CodeGen/SelectionDAGISel.h"
|
||||
#include "llvm/Target/TargetFrameLowering.h"
|
||||
#include "llvm/Target/TargetMachine.h"
|
||||
#include "MCTargetDesc/MipsABIInfo.h"
|
||||
|
||||
namespace llvm {
|
||||
class formatted_raw_ostream;
|
||||
@ -27,6 +28,8 @@ class MipsRegisterInfo;
|
||||
class MipsTargetMachine : public LLVMTargetMachine {
|
||||
bool isLittle;
|
||||
std::unique_ptr<TargetLoweringObjectFile> TLOF;
|
||||
// Selected ABI
|
||||
MipsABIInfo ABI;
|
||||
MipsSubtarget *Subtarget;
|
||||
MipsSubtarget DefaultSubtarget;
|
||||
MipsSubtarget NoMips16Subtarget;
|
||||
@ -61,6 +64,7 @@ public:
|
||||
}
|
||||
|
||||
bool isLittleEndian() const { return isLittle; }
|
||||
const MipsABIInfo &getABI() const { return ABI; }
|
||||
};
|
||||
|
||||
/// MipsebTargetMachine - Mips32/64 big endian target machine.
|
||||
|
@ -11,6 +11,7 @@
|
||||
#define LLVM_LIB_TARGET_MIPS_MIPSTARGETSTREAMER_H
|
||||
|
||||
#include "MCTargetDesc/MipsABIFlagsSection.h"
|
||||
#include "MCTargetDesc/MipsABIInfo.h"
|
||||
#include "llvm/MC/MCELFStreamer.h"
|
||||
#include "llvm/MC/MCRegisterInfo.h"
|
||||
#include "llvm/MC/MCStreamer.h"
|
||||
@ -95,12 +96,18 @@ public:
|
||||
// structure values.
|
||||
template <class PredicateLibrary>
|
||||
void updateABIInfo(const PredicateLibrary &P) {
|
||||
ABI = &P.getABI();
|
||||
ABIFlagsSection.setAllFromPredicates(P);
|
||||
}
|
||||
|
||||
MipsABIFlagsSection &getABIFlagsSection() { return ABIFlagsSection; }
|
||||
const MipsABIInfo &getABI() const {
|
||||
assert(ABI && "ABI hasn't been set!");
|
||||
return *ABI;
|
||||
}
|
||||
|
||||
protected:
|
||||
const MipsABIInfo *ABI;
|
||||
MipsABIFlagsSection ABIFlagsSection;
|
||||
|
||||
bool GPRInfoSet;
|
||||
@ -224,11 +231,6 @@ public:
|
||||
// ABI Flags
|
||||
void emitDirectiveModuleOddSPReg(bool Enabled, bool IsO32ABI) override;
|
||||
void emitMipsAbiFlags() override;
|
||||
|
||||
protected:
|
||||
bool isO32() const { return STI.getFeatureBits() & Mips::FeatureO32; }
|
||||
bool isN32() const { return STI.getFeatureBits() & Mips::FeatureN32; }
|
||||
bool isN64() const { return STI.getFeatureBits() & Mips::FeatureN64; }
|
||||
};
|
||||
}
|
||||
#endif
|
||||
|
@ -1,9 +1,9 @@
|
||||
; RUN: llc -march=mipsel -relocation-model=pic < %s | FileCheck %s -check-prefix=PIC-O32
|
||||
; RUN: llc -march=mipsel -relocation-model=static < %s | FileCheck %s -check-prefix=STATIC-O32
|
||||
; RUN: llc -march=mips64el -mcpu=mips64r2 -mattr=-n64,n32 -relocation-model=pic < %s | FileCheck %s -check-prefix=PIC-N32
|
||||
; RUN: llc -march=mips64el -mcpu=mips64r2 -mattr=-n64,n32 -relocation-model=static < %s | FileCheck %s -check-prefix=STATIC-N32
|
||||
; RUN: llc -march=mips64el -mcpu=mips64r2 -mattr=-n64,n64 -relocation-model=pic < %s | FileCheck %s -check-prefix=PIC-N64
|
||||
; RUN: llc -march=mips64el -mcpu=mips64r2 -mattr=-n64,n64 -relocation-model=static < %s | FileCheck %s -check-prefix=STATIC-N64
|
||||
; RUN: llc -march=mips64el -mcpu=mips64r2 -target-abi n32 -relocation-model=pic < %s | FileCheck %s -check-prefix=PIC-N32
|
||||
; RUN: llc -march=mips64el -mcpu=mips64r2 -target-abi n32 -relocation-model=static < %s | FileCheck %s -check-prefix=STATIC-N32
|
||||
; RUN: llc -march=mips64el -mcpu=mips64r2 -target-abi n64 -relocation-model=pic < %s | FileCheck %s -check-prefix=PIC-N64
|
||||
; RUN: llc -march=mips64el -mcpu=mips64r2 -target-abi n64 -relocation-model=static < %s | FileCheck %s -check-prefix=STATIC-N64
|
||||
|
||||
define float @h() nounwind readnone {
|
||||
entry:
|
||||
|
@ -1,6 +1,6 @@
|
||||
; RUN: llc -filetype=asm -mtriple mipsel-unknown-linux -mcpu=mips32 %s -o - | FileCheck %s
|
||||
; RUN: llc -filetype=asm -mtriple mipsel-unknown-linux -mcpu=mips32 -mattr=fp64 %s -o - | FileCheck -check-prefix=CHECK-64 %s
|
||||
; RUN: llc -filetype=asm -mtriple mipsel-unknown-linux -mcpu=mips64 -mattr=-n64,n32 %s -o - | FileCheck -check-prefix=CHECK-64n %s
|
||||
; RUN: llc -filetype=asm -mtriple mipsel-unknown-linux -mcpu=mips64 -target-abi n32 %s -o - | FileCheck -check-prefix=CHECK-64n %s
|
||||
|
||||
; CHECK: .nan legacy
|
||||
; We don't emit '.module fp=32' for compatibility with binutils 2.24 which
|
||||
|
@ -1,9 +1,9 @@
|
||||
; RUN: llc -march=mipsel -relocation-model=pic < %s | FileCheck %s -check-prefix=PIC-O32
|
||||
; RUN: llc -march=mipsel -relocation-model=static < %s | FileCheck %s -check-prefix=STATIC-O32
|
||||
; RUN: llc -march=mips64el -mcpu=mips64r2 -mattr=-n64,n32 -relocation-model=pic < %s | FileCheck %s -check-prefix=PIC-N32
|
||||
; RUN: llc -march=mips64el -mcpu=mips64r2 -mattr=-n64,n32 -relocation-model=static < %s | FileCheck %s -check-prefix=STATIC-N32
|
||||
; RUN: llc -march=mips64el -mcpu=mips64r2 -mattr=-n64,n64 -relocation-model=pic < %s | FileCheck %s -check-prefix=PIC-N64
|
||||
; RUN: llc -march=mips64el -mcpu=mips64r2 -mattr=-n64,n64 -relocation-model=static < %s | FileCheck %s -check-prefix=STATIC-N64
|
||||
; RUN: llc -march=mips64el -mcpu=mips64r2 -target-abi n32 -relocation-model=pic < %s | FileCheck %s -check-prefix=PIC-N32
|
||||
; RUN: llc -march=mips64el -mcpu=mips64r2 -target-abi n32 -relocation-model=static < %s | FileCheck %s -check-prefix=STATIC-N32
|
||||
; RUN: llc -march=mips64el -mcpu=mips64r2 -target-abi n64 -relocation-model=pic < %s | FileCheck %s -check-prefix=PIC-N64
|
||||
; RUN: llc -march=mips64el -mcpu=mips64r2 -target-abi n64 -relocation-model=static < %s | FileCheck %s -check-prefix=STATIC-N64
|
||||
; RUN: llc -mtriple=mipsel-linux-gnu -march=mipsel -mcpu=mips32 -mattr=+mips16 -relocation-model=static < %s | FileCheck %s -check-prefix=STATIC-MIPS16-1
|
||||
; RUN: llc -mtriple=mipsel-linux-gnu -march=mipsel -mcpu=mips32 -mattr=+mips16 -relocation-model=static < %s | FileCheck %s -check-prefix=STATIC-MIPS16-2
|
||||
|
||||
|
@ -1,14 +1,14 @@
|
||||
; RUN: llc -march=mips -relocation-model=static -soft-float < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=O32 --check-prefix=O32BE %s
|
||||
; RUN: llc -march=mipsel -relocation-model=static -soft-float < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=O32 --check-prefix=O32LE %s
|
||||
|
||||
; RUN-TODO: llc -march=mips64 -relocation-model=static -soft-float -mattr=-n64,+o32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=O32 %s
|
||||
; RUN-TODO: llc -march=mips64el -relocation-model=static -soft-float -mattr=-n64,+o32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=O32 %s
|
||||
; RUN-TODO: llc -march=mips64 -relocation-model=static -soft-float -target-abi o32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=O32 %s
|
||||
; RUN-TODO: llc -march=mips64el -relocation-model=static -soft-float -target-abi o32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=O32 %s
|
||||
|
||||
; RUN: llc -march=mips64 -relocation-model=static -soft-float -mattr=-n64,+n32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=NEW %s
|
||||
; RUN: llc -march=mips64el -relocation-model=static -soft-float -mattr=-n64,+n32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=NEW %s
|
||||
; RUN: llc -march=mips64 -relocation-model=static -soft-float -target-abi n32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=NEW %s
|
||||
; RUN: llc -march=mips64el -relocation-model=static -soft-float -target-abi n32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=NEW %s
|
||||
|
||||
; RUN: llc -march=mips64 -relocation-model=static -soft-float -mattr=-n64,+n64 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM64 --check-prefix=NEW %s
|
||||
; RUN: llc -march=mips64el -relocation-model=static -soft-float -mattr=-n64,+n64 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM64 --check-prefix=NEW %s
|
||||
; RUN: llc -march=mips64 -relocation-model=static -soft-float -target-abi n64 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM64 --check-prefix=NEW %s
|
||||
; RUN: llc -march=mips64el -relocation-model=static -soft-float -target-abi n64 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM64 --check-prefix=NEW %s
|
||||
|
||||
; Test the floating point arguments for all ABI's and byte orders as specified
|
||||
; by section 5 of MD00305 (MIPS ABIs Described).
|
||||
|
@ -1,8 +1,8 @@
|
||||
; RUN: llc -march=mips64 -relocation-model=static -soft-float -mattr=-n64,+n32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 %s
|
||||
; RUN: llc -march=mips64el -relocation-model=static -soft-float -mattr=-n64,+n32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 %s
|
||||
; RUN: llc -march=mips64 -relocation-model=static -soft-float -target-abi n32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 %s
|
||||
; RUN: llc -march=mips64el -relocation-model=static -soft-float -target-abi n32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 %s
|
||||
|
||||
; RUN: llc -march=mips64 -relocation-model=static -soft-float -mattr=-n64,+n64 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM64 %s
|
||||
; RUN: llc -march=mips64el -relocation-model=static -soft-float -mattr=-n64,+n64 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM64 %s
|
||||
; RUN: llc -march=mips64 -relocation-model=static -soft-float -target-abi n64 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM64 %s
|
||||
; RUN: llc -march=mips64el -relocation-model=static -soft-float -target-abi n64 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM64 %s
|
||||
|
||||
; Test the fp128 arguments for all ABI's and byte orders as specified
|
||||
; by section 2 of the MIPSpro N32 Handbook.
|
||||
|
@ -1,14 +1,14 @@
|
||||
; RUN: llc -march=mips -relocation-model=static < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=O32 --check-prefix=O32BE %s
|
||||
; RUN: llc -march=mipsel -relocation-model=static < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=O32 --check-prefix=O32LE %s
|
||||
|
||||
; RUN-TODO: llc -march=mips64 -relocation-model=static -mattr=-n64,+o32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=O32 %s
|
||||
; RUN-TODO: llc -march=mips64el -relocation-model=static -mattr=-n64,+o32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=O32 %s
|
||||
; RUN-TODO: llc -march=mips64 -relocation-model=static -target-abi o32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=O32 %s
|
||||
; RUN-TODO: llc -march=mips64el -relocation-model=static -target-abi o32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=O32 %s
|
||||
|
||||
; RUN: llc -march=mips64 -relocation-model=static -mattr=-n64,+n32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=N32 --check-prefix=NEW --check-prefix=NEWBE %s
|
||||
; RUN: llc -march=mips64el -relocation-model=static -mattr=-n64,+n32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=N32 --check-prefix=NEW --check-prefix=NEWLE %s
|
||||
; RUN: llc -march=mips64 -relocation-model=static -target-abi n32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=N32 --check-prefix=NEW --check-prefix=NEWBE %s
|
||||
; RUN: llc -march=mips64el -relocation-model=static -target-abi n32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=N32 --check-prefix=NEW --check-prefix=NEWLE %s
|
||||
|
||||
; RUN: llc -march=mips64 -relocation-model=static -mattr=-n64,+n64 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM64 --check-prefix=N64 --check-prefix=NEW --check-prefix=NEWBE %s
|
||||
; RUN: llc -march=mips64el -relocation-model=static -mattr=-n64,+n64 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM64 --check-prefix=N64 --check-prefix=NEW --check-prefix=NEWLE %s
|
||||
; RUN: llc -march=mips64 -relocation-model=static -target-abi n64 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM64 --check-prefix=N64 --check-prefix=NEW --check-prefix=NEWBE %s
|
||||
; RUN: llc -march=mips64el -relocation-model=static -target-abi n64 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM64 --check-prefix=N64 --check-prefix=NEW --check-prefix=NEWLE %s
|
||||
|
||||
; Test the effect of varargs on floating point types in the non-variable part
|
||||
; of the argument list as specified by section 2 of the MIPSpro N32 Handbook.
|
||||
|
@ -1,14 +1,14 @@
|
||||
; RUN: llc -march=mips -relocation-model=static < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=O32 --check-prefix=O32BE %s
|
||||
; RUN: llc -march=mipsel -relocation-model=static < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=O32 --check-prefix=O32LE %s
|
||||
|
||||
; RUN-TODO: llc -march=mips64 -relocation-model=static -mattr=-n64,+o32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=O32 %s
|
||||
; RUN-TODO: llc -march=mips64el -relocation-model=static -mattr=-n64,+o32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=O32 %s
|
||||
; RUN-TODO: llc -march=mips64 -relocation-model=static -target-abi o32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=O32 %s
|
||||
; RUN-TODO: llc -march=mips64el -relocation-model=static -target-abi o32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=O32 %s
|
||||
|
||||
; RUN: llc -march=mips64 -relocation-model=static -mattr=-n64,+n32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=NEW %s
|
||||
; RUN: llc -march=mips64el -relocation-model=static -mattr=-n64,+n32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=NEW %s
|
||||
; RUN: llc -march=mips64 -relocation-model=static -target-abi n32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=NEW %s
|
||||
; RUN: llc -march=mips64el -relocation-model=static -target-abi n32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=NEW %s
|
||||
|
||||
; RUN: llc -march=mips64 -relocation-model=static -mattr=-n64,+n64 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM64 --check-prefix=NEW %s
|
||||
; RUN: llc -march=mips64el -relocation-model=static -mattr=-n64,+n64 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM64 --check-prefix=NEW %s
|
||||
; RUN: llc -march=mips64 -relocation-model=static -target-abi n64 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM64 --check-prefix=NEW %s
|
||||
; RUN: llc -march=mips64el -relocation-model=static -target-abi n64 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM64 --check-prefix=NEW %s
|
||||
|
||||
; Test the floating point arguments for all ABI's and byte orders as specified
|
||||
; by section 5 of MD00305 (MIPS ABIs Described).
|
||||
|
@ -1,8 +1,8 @@
|
||||
; RUN: llc -march=mips64 -relocation-model=static -mattr=-n64,+n32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 %s
|
||||
; RUN: llc -march=mips64el -relocation-model=static -mattr=-n64,+n32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 %s
|
||||
; RUN: llc -march=mips64 -relocation-model=static -target-abi n32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 %s
|
||||
; RUN: llc -march=mips64el -relocation-model=static -target-abi n32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 %s
|
||||
|
||||
; RUN: llc -march=mips64 -relocation-model=static -mattr=-n64,+n64 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM64 %s
|
||||
; RUN: llc -march=mips64el -relocation-model=static -mattr=-n64,+n64 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM64 %s
|
||||
; RUN: llc -march=mips64 -relocation-model=static -target-abi n64 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM64 %s
|
||||
; RUN: llc -march=mips64el -relocation-model=static -target-abi n64 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM64 %s
|
||||
|
||||
; Test the fp128 arguments for all ABI's and byte orders as specified
|
||||
; by section 2 of the MIPSpro N32 Handbook.
|
||||
|
@ -1,14 +1,14 @@
|
||||
; RUN: llc -mtriple=mips-unknown-linux-gnu -relocation-model=static < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=O32-BE %s
|
||||
; RUN: llc -mtriple=mipsel-unknown-linux-gnu -relocation-model=static < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=O32-LE %s
|
||||
|
||||
; RUN-TODO: llc -mtriple=mips64-unknown-linux-gnu -relocation-model=static -mattr=-n64,+o32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=O32-BE %s
|
||||
; RUN-TODO: llc -mtriple=mips64el-unknown-linux-gnu -relocation-model=static -mattr=-n64,+o32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=O32-LE %s
|
||||
; RUN-TODO: llc -mtriple=mips64-unknown-linux-gnu -relocation-model=static -target-abi n32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=O32-BE %s
|
||||
; RUN-TODO: llc -mtriple=mips64el-unknown-linux-gnu -relocation-model=static -target-abi n32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=O32-LE %s
|
||||
|
||||
; RUN: llc -mtriple=mips64-unknown-linux-gnu -relocation-model=static -mattr=-n64,+n32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=NEW-BE %s
|
||||
; RUN: llc -mtriple=mips64el-unknown-linux-gnu -relocation-model=static -mattr=-n64,+n32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=NEW-LE %s
|
||||
; RUN: llc -mtriple=mips64-unknown-linux-gnu -relocation-model=static -target-abi n32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=NEW-BE %s
|
||||
; RUN: llc -mtriple=mips64el-unknown-linux-gnu -relocation-model=static -target-abi n32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=NEW-LE %s
|
||||
|
||||
; RUN: llc -mtriple=mips64-unknown-linux-gnu -relocation-model=static -mattr=-n64,+n64 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM64 --check-prefix=NEW-BE %s
|
||||
; RUN: llc -mtriple=mips64el-unknown-linux-gnu -relocation-model=static -mattr=-n64,+n64 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM64 --check-prefix=NEW-LE %s
|
||||
; RUN: llc -mtriple=mips64-unknown-linux-gnu -relocation-model=static -target-abi n64 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM64 --check-prefix=NEW-BE %s
|
||||
; RUN: llc -mtriple=mips64el-unknown-linux-gnu -relocation-model=static -target-abi n64 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM64 --check-prefix=NEW-LE %s
|
||||
|
||||
; Test small structures for all ABI's and byte orders.
|
||||
;
|
||||
|
@ -1,14 +1,14 @@
|
||||
; RUN: llc -mtriple=mips-linux -relocation-model=static < %s | FileCheck --check-prefix=ALL --check-prefix=O32 --check-prefix=O32-BE %s
|
||||
; RUN: llc -mtriple=mipsel-linux -relocation-model=static < %s | FileCheck --check-prefix=ALL --check-prefix=O32 --check-prefix=O32-LE %s
|
||||
|
||||
; RUN-TODO: llc -march=mips64 -relocation-model=static -mattr=-n64,+o32 < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
; RUN-TODO: llc -march=mips64el -relocation-model=static -mattr=-n64,+o32 < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
; RUN-TODO: llc -march=mips64 -relocation-model=static -target-abi o32 < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
; RUN-TODO: llc -march=mips64el -relocation-model=static -target-abi o32 < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
|
||||
; RUN: llc -mtriple=mips64-linux -relocation-model=static -mattr=-n64,+n32 < %s | FileCheck --check-prefix=ALL --check-prefix=NEW --check-prefix=N32 --check-prefix=NEW-BE %s
|
||||
; RUN: llc -mtriple=mips64el-linux -relocation-model=static -mattr=-n64,+n32 < %s | FileCheck --check-prefix=ALL --check-prefix=NEW --check-prefix=N32 --check-prefix=NEW-LE %s
|
||||
; RUN: llc -mtriple=mips64-linux -relocation-model=static -target-abi n32 < %s | FileCheck --check-prefix=ALL --check-prefix=NEW --check-prefix=N32 --check-prefix=NEW-BE %s
|
||||
; RUN: llc -mtriple=mips64el-linux -relocation-model=static -target-abi n32 < %s | FileCheck --check-prefix=ALL --check-prefix=NEW --check-prefix=N32 --check-prefix=NEW-LE %s
|
||||
|
||||
; RUN: llc -march=mips64 -relocation-model=static -mattr=-n64,+n64 < %s | FileCheck --check-prefix=ALL --check-prefix=NEW --check-prefix=N64 --check-prefix=NEW-BE %s
|
||||
; RUN: llc -march=mips64el -relocation-model=static -mattr=-n64,+n64 < %s | FileCheck --check-prefix=ALL --check-prefix=NEW --check-prefix=N64 --check-prefix=NEW-LE %s
|
||||
; RUN: llc -march=mips64 -relocation-model=static -target-abi n64 < %s | FileCheck --check-prefix=ALL --check-prefix=NEW --check-prefix=N64 --check-prefix=NEW-BE %s
|
||||
; RUN: llc -march=mips64el -relocation-model=static -target-abi n64 < %s | FileCheck --check-prefix=ALL --check-prefix=NEW --check-prefix=N64 --check-prefix=NEW-LE %s
|
||||
|
||||
@hwords = global [3 x i16] zeroinitializer, align 1
|
||||
@words = global [3 x i32] zeroinitializer, align 1
|
||||
|
@ -1,14 +1,14 @@
|
||||
; RUN: llc -march=mips -relocation-model=static < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=O32 %s
|
||||
; RUN: llc -march=mipsel -relocation-model=static < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=O32 %s
|
||||
|
||||
; RUN-TODO: llc -march=mips64 -relocation-model=static -mattr=-n64,+o32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=O32 %s
|
||||
; RUN-TODO: llc -march=mips64el -relocation-model=static -mattr=-n64,+o32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=O32 %s
|
||||
; RUN-TODO: llc -march=mips64 -relocation-model=static -target-abi n32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=O32 %s
|
||||
; RUN-TODO: llc -march=mips64el -relocation-model=static -target-abi n32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=O32 %s
|
||||
|
||||
; RUN: llc -march=mips64 -relocation-model=static -mattr=-n64,+n32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=NEW %s
|
||||
; RUN: llc -march=mips64el -relocation-model=static -mattr=-n64,+n32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=NEW %s
|
||||
; RUN: llc -march=mips64 -relocation-model=static -target-abi n32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=NEW %s
|
||||
; RUN: llc -march=mips64el -relocation-model=static -target-abi n32 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM32 --check-prefix=NEW %s
|
||||
|
||||
; RUN: llc -march=mips64 -relocation-model=static -mattr=-n64,+n64 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM64 --check-prefix=NEW %s
|
||||
; RUN: llc -march=mips64el -relocation-model=static -mattr=-n64,+n64 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM64 --check-prefix=NEW %s
|
||||
; RUN: llc -march=mips64 -relocation-model=static -target-abi n64 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM64 --check-prefix=NEW %s
|
||||
; RUN: llc -march=mips64el -relocation-model=static -target-abi n64 < %s | FileCheck --check-prefix=ALL --check-prefix=SYM64 --check-prefix=NEW %s
|
||||
|
||||
; Test the integer arguments for all ABI's and byte orders as specified by
|
||||
; section 5 of MD00305 (MIPS ABIs Described).
|
||||
|
@ -3,20 +3,20 @@
|
||||
; RUN: llc -march=mips < %s | FileCheck --check-prefix=ALL --check-prefix=O32-INV %s
|
||||
; RUN: llc -march=mipsel < %s | FileCheck --check-prefix=ALL --check-prefix=O32-INV %s
|
||||
|
||||
; RUN-TODO: llc -march=mips64 -mattr=-n64,+o32 < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
; RUN-TODO: llc -march=mips64el -mattr=-n64,+o32 < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
; RUN-TODO: llc -march=mips64 -mattr=-n64,+o32 < %s | FileCheck --check-prefix=ALL --check-prefix=ALL-INV --check-prefix=O32-INV %s
|
||||
; RUN-TODO: llc -march=mips64el -mattr=-n64,+o32 < %s | FileCheck --check-prefix=ALL --check-prefix=ALL-INV --check-prefix=O32-INV %s
|
||||
; RUN-TODO: llc -march=mips64 -target-abi o32 < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
; RUN-TODO: llc -march=mips64el -target-abi o32 < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
; RUN-TODO: llc -march=mips64 -target-abi o32 < %s | FileCheck --check-prefix=ALL --check-prefix=ALL-INV --check-prefix=O32-INV %s
|
||||
; RUN-TODO: llc -march=mips64el -target-abi o32 < %s | FileCheck --check-prefix=ALL --check-prefix=ALL-INV --check-prefix=O32-INV %s
|
||||
|
||||
; RUN: llc -march=mips64 -mattr=-n64,+n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32 %s
|
||||
; RUN: llc -march=mips64el -mattr=-n64,+n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32 %s
|
||||
; RUN: llc -march=mips64 -mattr=-n64,+n32 < %s | FileCheck --check-prefix=ALL --check-prefix=ALL-INV --check-prefix=N32-INV %s
|
||||
; RUN: llc -march=mips64el -mattr=-n64,+n32 < %s | FileCheck --check-prefix=ALL --check-prefix=ALL-INV --check-prefix=N32-INV %s
|
||||
; RUN: llc -march=mips64 -target-abi n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32 %s
|
||||
; RUN: llc -march=mips64el -target-abi n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32 %s
|
||||
; RUN: llc -march=mips64 -target-abi n32 < %s | FileCheck --check-prefix=ALL --check-prefix=ALL-INV --check-prefix=N32-INV %s
|
||||
; RUN: llc -march=mips64el -target-abi n32 < %s | FileCheck --check-prefix=ALL --check-prefix=ALL-INV --check-prefix=N32-INV %s
|
||||
|
||||
; RUN: llc -march=mips64 -mattr=-n64,+n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64 %s
|
||||
; RUN: llc -march=mips64el -mattr=-n64,+n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64 %s
|
||||
; RUN: llc -march=mips64 -mattr=-n64,+n64 < %s | FileCheck --check-prefix=ALL --check-prefix=ALL-INV --check-prefix=N64-INV %s
|
||||
; RUN: llc -march=mips64el -mattr=-n64,+n64 < %s | FileCheck --check-prefix=ALL --check-prefix=ALL-INV --check-prefix=N64-INV %s
|
||||
; RUN: llc -march=mips64 -target-abi n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64 %s
|
||||
; RUN: llc -march=mips64el -target-abi n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64 %s
|
||||
; RUN: llc -march=mips64 -target-abi n64 < %s | FileCheck --check-prefix=ALL --check-prefix=ALL-INV --check-prefix=N64-INV %s
|
||||
; RUN: llc -march=mips64el -target-abi n64 < %s | FileCheck --check-prefix=ALL --check-prefix=ALL-INV --check-prefix=N64-INV %s
|
||||
|
||||
; Test the the callee-saved registers are callee-saved as specified by section
|
||||
; 2 of the MIPSpro N32 Handbook and section 3 of the SYSV ABI spec.
|
||||
|
@ -3,20 +3,20 @@
|
||||
; RUN: llc -march=mips < %s | FileCheck --check-prefix=ALL --check-prefix=O32-INV %s
|
||||
; RUN: llc -march=mipsel < %s | FileCheck --check-prefix=ALL --check-prefix=O32-INV %s
|
||||
|
||||
; RUN-TODO: llc -march=mips64 -mattr=-n64,+o32 < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
; RUN-TODO: llc -march=mips64el -mattr=-n64,+o32 < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
; RUN-TODO: llc -march=mips64 -mattr=-n64,+o32 < %s | FileCheck --check-prefix=ALL --check-prefix=O32-INV %s
|
||||
; RUN-TODO: llc -march=mips64el -mattr=-n64,+o32 < %s | FileCheck --check-prefix=ALL --check-prefix=O32-INV %s
|
||||
; RUN-TODO: llc -march=mips64 -target-abi o32 < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
; RUN-TODO: llc -march=mips64el -target-abi o32 < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
; RUN-TODO: llc -march=mips64 -target-abi o32 < %s | FileCheck --check-prefix=ALL --check-prefix=O32-INV %s
|
||||
; RUN-TODO: llc -march=mips64el -target-abi o32 < %s | FileCheck --check-prefix=ALL --check-prefix=O32-INV %s
|
||||
|
||||
; RUN: llc -march=mips64 -mattr=-n64,+n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32 %s
|
||||
; RUN: llc -march=mips64el -mattr=-n64,+n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32 %s
|
||||
; RUN: llc -march=mips64 -mattr=-n64,+n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32-INV %s
|
||||
; RUN: llc -march=mips64el -mattr=-n64,+n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32-INV %s
|
||||
; RUN: llc -march=mips64 -target-abi n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32 %s
|
||||
; RUN: llc -march=mips64el -target-abi n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32 %s
|
||||
; RUN: llc -march=mips64 -target-abi n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32-INV %s
|
||||
; RUN: llc -march=mips64el -target-abi n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32-INV %s
|
||||
|
||||
; RUN: llc -march=mips64 -mattr=-n64,+n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64 %s
|
||||
; RUN: llc -march=mips64el -mattr=-n64,+n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64 %s
|
||||
; RUN: llc -march=mips64 -mattr=-n64,+n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64-INV %s
|
||||
; RUN: llc -march=mips64el -mattr=-n64,+n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64-INV %s
|
||||
; RUN: llc -march=mips64 -target-abi n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64 %s
|
||||
; RUN: llc -march=mips64el -target-abi n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64 %s
|
||||
; RUN: llc -march=mips64 -target-abi n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64-INV %s
|
||||
; RUN: llc -march=mips64el -target-abi n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64-INV %s
|
||||
|
||||
; Test the the callee-saved registers are callee-saved as specified by section
|
||||
; 2 of the MIPSpro N32 Handbook and section 3 of the SYSV ABI spec.
|
||||
|
@ -1,14 +1,14 @@
|
||||
; RUN: llc -march=mips < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
; RUN: llc -march=mipsel < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
|
||||
; RUN-TODO: llc -march=mips64 -mattr=-n64,+o32 < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
; RUN-TODO: llc -march=mips64el -mattr=-n64,+o32 < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
; RUN-TODO: llc -march=mips64 -target-abi o32 < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
; RUN-TODO: llc -march=mips64el -target-abi o32 < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
|
||||
; RUN: llc -march=mips64 -mattr=-n64,+n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32 %s
|
||||
; RUN: llc -march=mips64el -mattr=-n64,+n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32 %s
|
||||
; RUN: llc -march=mips64 -target-abi n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32 %s
|
||||
; RUN: llc -march=mips64el -target-abi n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32 %s
|
||||
|
||||
; RUN: llc -march=mips64 -mattr=-n64,+n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64 %s
|
||||
; RUN: llc -march=mips64el -mattr=-n64,+n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64 %s
|
||||
; RUN: llc -march=mips64 -target-abi n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64 %s
|
||||
; RUN: llc -march=mips64el -target-abi n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64 %s
|
||||
|
||||
; Test the memory layout for all ABI's and byte orders as specified by section
|
||||
; 4 of MD00305 (MIPS ABIs Described).
|
||||
|
@ -1,14 +1,14 @@
|
||||
; RUN: llc -march=mips < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
; RUN: llc -march=mipsel < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
|
||||
; RUN-TODO: llc -march=mips64 -mattr=-n64,+o32 < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
; RUN-TODO: llc -march=mips64el -mattr=-n64,+o32 < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
; RUN-TODO: llc -march=mips64 -target-abi o32 < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
; RUN-TODO: llc -march=mips64el -target-abi o32 < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
|
||||
; RUN: llc -march=mips64 -mattr=-n64,+n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32 %s
|
||||
; RUN: llc -march=mips64el -mattr=-n64,+n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32 %s
|
||||
; RUN: llc -march=mips64 -target-abi n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32 %s
|
||||
; RUN: llc -march=mips64el -target-abi n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32 %s
|
||||
|
||||
; RUN: llc -march=mips64 -mattr=-n64,+n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64 %s
|
||||
; RUN: llc -march=mips64el -mattr=-n64,+n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64 %s
|
||||
; RUN: llc -march=mips64 -target-abi n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64 %s
|
||||
; RUN: llc -march=mips64el -target-abi n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64 %s
|
||||
|
||||
; Test that O32 correctly reserved space for the four arguments, even when
|
||||
; there aren't any as per section 5 of MD00305 (MIPS ABIs Described).
|
||||
|
@ -1,14 +1,14 @@
|
||||
; RUN: llc -mtriple=mips-linux-gnu -soft-float -relocation-model=static < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
; RUN: llc -mtriple=mipsel-linux-gnu -soft-float -relocation-model=static < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
|
||||
; RUN-TODO: llc -mtriple=mips64-linux-gnu -soft-float -relocation-model=static -mattr=-n64,+o32 < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
; RUN-TODO: llc -mtriple=mips64el-linux-gnu -soft-float -relocation-model=static -mattr=-n64,+o32 < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
; RUN-TODO: llc -mtriple=mips64-linux-gnu -soft-float -relocation-model=static -target-abi o32 < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
; RUN-TODO: llc -mtriple=mips64el-linux-gnu -soft-float -relocation-model=static -target-abi o32 < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
|
||||
; RUN: llc -mtriple=mips64-linux-gnu -soft-float -relocation-model=static -mattr=-n64,+n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32 %s
|
||||
; RUN: llc -mtriple=mips64el-linux-gnu -soft-float -relocation-model=static -mattr=-n64,+n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32 %s
|
||||
; RUN: llc -mtriple=mips64-linux-gnu -soft-float -relocation-model=static -target-abi n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32 %s
|
||||
; RUN: llc -mtriple=mips64el-linux-gnu -soft-float -relocation-model=static -target-abi n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32 %s
|
||||
|
||||
; RUN: llc -mtriple=mips64-linux-gnu -soft-float -relocation-model=static -mattr=-n64,+n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64 %s
|
||||
; RUN: llc -mtriple=mips64el-linux-gnu -soft-float -relocation-model=static -mattr=-n64,+n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64 %s
|
||||
; RUN: llc -mtriple=mips64-linux-gnu -soft-float -relocation-model=static -target-abi n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64 %s
|
||||
; RUN: llc -mtriple=mips64el-linux-gnu -soft-float -relocation-model=static -target-abi n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64 %s
|
||||
|
||||
; Test the float returns for all ABI's and byte orders as specified by
|
||||
; section 5 of MD00305 (MIPS ABIs Described).
|
||||
|
@ -1,14 +1,14 @@
|
||||
; RUN: llc -mtriple=mips-linux-gnu -relocation-model=static < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
; RUN: llc -mtriple=mipsel-linux-gnu -relocation-model=static < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
|
||||
; RUN-TODO: llc -mtriple=mips64-linux-gnu -relocation-model=static -mattr=-n64,+o32 < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
; RUN-TODO: llc -mtriple=mips64el-linux-gnu -relocation-model=static -mattr=-n64,+o32 < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
; RUN-TODO: llc -mtriple=mips64-linux-gnu -relocation-model=static -target-abi o32 < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
; RUN-TODO: llc -mtriple=mips64el-linux-gnu -relocation-model=static -target-abi o32 < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
|
||||
; RUN: llc -mtriple=mips64-linux-gnu -relocation-model=static -mattr=-n64,+n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32 %s
|
||||
; RUN: llc -mtriple=mips64el-linux-gnu -relocation-model=static -mattr=-n64,+n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32 %s
|
||||
; RUN: llc -mtriple=mips64-linux-gnu -relocation-model=static -target-abi n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32 %s
|
||||
; RUN: llc -mtriple=mips64el-linux-gnu -relocation-model=static -target-abi n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32 %s
|
||||
|
||||
; RUN: llc -mtriple=mips64-linux-gnu -relocation-model=static -mattr=-n64,+n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64 %s
|
||||
; RUN: llc -mtriple=mips64el-linux-gnu -relocation-model=static -mattr=-n64,+n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64 %s
|
||||
; RUN: llc -mtriple=mips64-linux-gnu -relocation-model=static -target-abi n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64 %s
|
||||
; RUN: llc -mtriple=mips64el-linux-gnu -relocation-model=static -target-abi n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64 %s
|
||||
|
||||
; RUN: llc -mtriple=mips-linux-gnu -relocation-model=static -mattr=+o32,+fp64 < %s | FileCheck --check-prefix=ALL --check-prefix=032FP64 %s
|
||||
; RUN: llc -mtriple=mipsel-linux-gnu -relocation-model=static -mattr=+o32,+fp64 < %s | FileCheck --check-prefix=ALL --check-prefix=032FP64 %s
|
||||
|
@ -1,8 +1,8 @@
|
||||
; RUN: llc -march=mips64 -relocation-model=static -mattr=-n64,+n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32 %s
|
||||
; RUN: llc -march=mips64el -relocation-model=static -mattr=-n64,+n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32 %s
|
||||
; RUN: llc -march=mips64 -relocation-model=static -target-abi n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32 %s
|
||||
; RUN: llc -march=mips64el -relocation-model=static -target-abi n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32 %s
|
||||
|
||||
; RUN: llc -march=mips64 -relocation-model=static -mattr=-n64,+n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64 %s
|
||||
; RUN: llc -march=mips64el -relocation-model=static -mattr=-n64,+n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64 %s
|
||||
; RUN: llc -march=mips64 -relocation-model=static -target-abi n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64 %s
|
||||
; RUN: llc -march=mips64el -relocation-model=static -target-abi n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64 %s
|
||||
|
||||
; Test the fp128 returns for N32/N64 and all byte orders as specified by
|
||||
; section 5 of MD00305 (MIPS ABIs Described).
|
||||
|
@ -1,8 +1,8 @@
|
||||
; RUN: llc -mtriple=mips64-linux-gnu -relocation-model=static -mattr=-n64,+n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32 %s
|
||||
; RUN: llc -mtriple=mips64el-linux-gnu -relocation-model=static -mattr=-n64,+n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32 %s
|
||||
; RUN: llc -mtriple=mips64-linux-gnu -relocation-model=static -target-abi n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32 %s
|
||||
; RUN: llc -mtriple=mips64el-linux-gnu -relocation-model=static -target-abi n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32 %s
|
||||
|
||||
; RUN: llc -mtriple=mips64-linux-gnu -relocation-model=static -mattr=-n64,+n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64 %s
|
||||
; RUN: llc -mtriple=mips64el-linux-gnu -relocation-model=static -mattr=-n64,+n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64 %s
|
||||
; RUN: llc -mtriple=mips64-linux-gnu -relocation-model=static -target-abi n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64 %s
|
||||
; RUN: llc -mtriple=mips64el-linux-gnu -relocation-model=static -target-abi n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64 %s
|
||||
|
||||
; Test return of {fp128} agrees with de-facto N32/N64 ABI.
|
||||
|
||||
|
@ -1,14 +1,14 @@
|
||||
; RUN: llc -mtriple=mips-linux-gnu -relocation-model=static < %s | FileCheck --check-prefix=ALL --check-prefix=O32 --check-prefix=O32-BE %s
|
||||
; RUN: llc -mtriple=mipsel-linux-gnu -relocation-model=static < %s | FileCheck --check-prefix=ALL --check-prefix=O32 --check-prefix=O32-LE %s
|
||||
|
||||
; RUN-TODO: llc -mtriple=mips64-linux-gnu -relocation-model=static -mattr=-n64,+o32 < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
; RUN-TODO: llc -mtriple=mips64el-linux-gnu -relocation-model=static -mattr=-n64,+o32 < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
; RUN-TODO: llc -mtriple=mips64-linux-gnu -relocation-model=static -target-abi o32 < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
; RUN-TODO: llc -mtriple=mips64el-linux-gnu -relocation-model=static -target-abi o32 < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
|
||||
; RUN: llc -mtriple=mips64-linux-gnu -relocation-model=static -mattr=-n64,+n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32 --check-prefix=N32-BE %s
|
||||
; RUN: llc -mtriple=mips64el-linux-gnu -relocation-model=static -mattr=-n64,+n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32 --check-prefix=N32-LE %s
|
||||
; RUN: llc -mtriple=mips64-linux-gnu -relocation-model=static -target-abi n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32 --check-prefix=N32-BE %s
|
||||
; RUN: llc -mtriple=mips64el-linux-gnu -relocation-model=static -target-abi n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32 --check-prefix=N32-LE %s
|
||||
|
||||
; RUN: llc -mtriple=mips64-linux-gnu -relocation-model=static -mattr=-n64,+n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64 --check-prefix=N64-BE %s
|
||||
; RUN: llc -mtriple=mips64el-linux-gnu -relocation-model=static -mattr=-n64,+n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64 --check-prefix=N64-LE %s
|
||||
; RUN: llc -mtriple=mips64-linux-gnu -relocation-model=static -target-abi n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64 --check-prefix=N64-BE %s
|
||||
; RUN: llc -mtriple=mips64el-linux-gnu -relocation-model=static -target-abi n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64 --check-prefix=N64-LE %s
|
||||
|
||||
; Test struct returns for all ABI's and byte orders.
|
||||
|
||||
|
@ -1,14 +1,14 @@
|
||||
; RUN: llc -mtriple=mips-linux-gnu -relocation-model=static < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
; RUN: llc -mtriple=mipsel-linux-gnu -relocation-model=static < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
|
||||
; RUN-TODO: llc -mtriple=mips64-linux-gnu -relocation-model=static -mattr=-n64,+o32 < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
; RUN-TODO: llc -mtriple=mips64el-linux-gnu -relocation-model=static -mattr=-n64,+o32 < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
; RUN-TODO: llc -mtriple=mips64-linux-gnu -relocation-model=static -target-abi o32 < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
; RUN-TODO: llc -mtriple=mips64el-linux-gnu -relocation-model=static -target-abi o32 < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
|
||||
; RUN: llc -mtriple=mips64-linux-gnu -relocation-model=static -mattr=-n64,+n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32 %s
|
||||
; RUN: llc -mtriple=mips64el-linux-gnu -relocation-model=static -mattr=-n64,+n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32 %s
|
||||
; RUN: llc -mtriple=mips64-linux-gnu -relocation-model=static -target-abi n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32 %s
|
||||
; RUN: llc -mtriple=mips64el-linux-gnu -relocation-model=static -target-abi n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32 %s
|
||||
|
||||
; RUN: llc -mtriple=mips64-linux-gnu -relocation-model=static -mattr=-n64,+n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64 %s
|
||||
; RUN: llc -mtriple=mips64el-linux-gnu -relocation-model=static -mattr=-n64,+n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64 %s
|
||||
; RUN: llc -mtriple=mips64-linux-gnu -relocation-model=static -target-abi n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64 %s
|
||||
; RUN: llc -mtriple=mips64el-linux-gnu -relocation-model=static -target-abi n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64 %s
|
||||
|
||||
; Test the integer returns for all ABI's and byte orders as specified by
|
||||
; section 5 of MD00305 (MIPS ABIs Described).
|
||||
|
@ -1,14 +1,14 @@
|
||||
; RUN: llc -march=mips < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
; RUN: llc -march=mipsel < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
|
||||
; RUN-TODO: llc -march=mips64 -mattr=-n64,+o32 < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
; RUN-TODO: llc -march=mips64el -mattr=-n64,+o32 < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
; RUN-TODO: llc -march=mips64 -target-abi o32 < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
; RUN-TODO: llc -march=mips64el -target-abi o32 < %s | FileCheck --check-prefix=ALL --check-prefix=O32 %s
|
||||
|
||||
; RUN: llc -march=mips64 -mattr=-n64,+n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32 %s
|
||||
; RUN: llc -march=mips64el -mattr=-n64,+n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32 %s
|
||||
; RUN: llc -march=mips64 -target-abi n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32 %s
|
||||
; RUN: llc -march=mips64el -target-abi n32 < %s | FileCheck --check-prefix=ALL --check-prefix=N32 %s
|
||||
|
||||
; RUN: llc -march=mips64 -mattr=-n64,+n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64 %s
|
||||
; RUN: llc -march=mips64el -mattr=-n64,+n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64 %s
|
||||
; RUN: llc -march=mips64 -target-abi n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64 %s
|
||||
; RUN: llc -march=mips64el -target-abi n64 < %s | FileCheck --check-prefix=ALL --check-prefix=N64 %s
|
||||
|
||||
; Test the stack alignment for all ABI's and byte orders as specified by
|
||||
; section 5 of MD00305 (MIPS ABIs Described).
|
||||
|
@ -10,11 +10,11 @@
|
||||
; RUN: llc -march=mips64 -mcpu=mips64 < %s | FileCheck %s -check-prefix=ALL -check-prefix=64-NOFPXX
|
||||
; RUN: not llc -march=mips64 -mcpu=mips64 -mattr=fpxx < %s 2>&1 | FileCheck %s -check-prefix=64-FPXX
|
||||
|
||||
; RUN-TODO: llc -march=mips64 -mcpu=mips4 -mattr=-n64,+o32 < %s | FileCheck %s -check-prefix=ALL -check-prefix=4-O32-NOFPXX
|
||||
; RUN-TODO: llc -march=mips64 -mcpu=mips4 -mattr=-n64,+o32 -mattr=fpxx < %s | FileCheck %s -check-prefix=ALL -check-prefix=4-O32-FPXX
|
||||
; RUN-TODO: llc -march=mips64 -mcpu=mips4 -target-abi o32 < %s | FileCheck %s -check-prefix=ALL -check-prefix=4-O32-NOFPXX
|
||||
; RUN-TODO: llc -march=mips64 -mcpu=mips4 -target-abi o32 -mattr=fpxx < %s | FileCheck %s -check-prefix=ALL -check-prefix=4-O32-FPXX
|
||||
|
||||
; RUN-TODO: llc -march=mips64 -mcpu=mips64 -mattr=-n64,+o32 < %s | FileCheck %s -check-prefix=ALL -check-prefix=64-O32-NOFPXX
|
||||
; RUN-TODO: llc -march=mips64 -mcpu=mips64 -mattr=-n64,+o32 -mattr=fpxx < %s | FileCheck %s -check-prefix=ALL -check-prefix=64-O32-FPXX
|
||||
; RUN-TODO: llc -march=mips64 -mcpu=mips64 -target-abi o32 < %s | FileCheck %s -check-prefix=ALL -check-prefix=64-O32-NOFPXX
|
||||
; RUN-TODO: llc -march=mips64 -mcpu=mips64 -target-abi o32 -mattr=fpxx < %s | FileCheck %s -check-prefix=ALL -check-prefix=64-O32-FPXX
|
||||
|
||||
declare double @dbl();
|
||||
|
||||
|
@ -1,9 +1,9 @@
|
||||
; RUN: llc -march=mipsel -relocation-model=pic < %s | FileCheck %s -check-prefix=PIC-O32
|
||||
; RUN: llc -march=mipsel -relocation-model=static -mtriple=mipsel-linux-gnu < %s | FileCheck %s -check-prefix=STATIC-O32
|
||||
; RUN: llc -march=mips64el -mcpu=mips64r2 -mattr=-n64,n32 -relocation-model=pic < %s | FileCheck %s -check-prefix=PIC-N32
|
||||
; RUN: llc -march=mips64el -mcpu=mips64r2 -mattr=-n64,n32 -relocation-model=static -mtriple=mipsel-linux-gnu < %s | FileCheck %s -check-prefix=STATIC-N32
|
||||
; RUN: llc -march=mips64el -mcpu=mips64r2 -mattr=-n64,n64 -relocation-model=pic < %s | FileCheck %s -check-prefix=PIC-N64
|
||||
; RUN: llc -march=mips64el -mcpu=mips64r2 -mattr=-n64,n64 -relocation-model=static < %s | FileCheck %s -check-prefix=STATIC-N64
|
||||
; RUN: llc -march=mips64el -mcpu=mips64r2 -target-abi n32 -relocation-model=pic < %s | FileCheck %s -check-prefix=PIC-N32
|
||||
; RUN: llc -march=mips64el -mcpu=mips64r2 -target-abi n32 -relocation-model=static -mtriple=mipsel-linux-gnu < %s | FileCheck %s -check-prefix=STATIC-N32
|
||||
; RUN: llc -march=mips64el -mcpu=mips64r2 -target-abi n64 -relocation-model=pic < %s | FileCheck %s -check-prefix=PIC-N64
|
||||
; RUN: llc -march=mips64el -mcpu=mips64r2 -target-abi n64 -relocation-model=static < %s | FileCheck %s -check-prefix=STATIC-N64
|
||||
|
||||
@s1 = internal unnamed_addr global i32 8, align 4
|
||||
@g1 = external global i32
|
||||
|
@ -1,7 +1,7 @@
|
||||
; RUN: llc < %s -march=mips64el -mcpu=mips4 -mattr=-n64,n64 | FileCheck %s -check-prefix=CHECK-N64
|
||||
; RUN: llc < %s -march=mips64el -mcpu=mips4 -mattr=-n64,n32 | FileCheck %s -check-prefix=CHECK-N32
|
||||
; RUN: llc < %s -march=mips64el -mcpu=mips64 -mattr=-n64,n64 | FileCheck %s -check-prefix=CHECK-N64
|
||||
; RUN: llc < %s -march=mips64el -mcpu=mips64 -mattr=-n64,n32 | FileCheck %s -check-prefix=CHECK-N32
|
||||
; RUN: llc < %s -march=mips64el -mcpu=mips4 -target-abi n64 | FileCheck %s -check-prefix=CHECK-N64
|
||||
; RUN: llc < %s -march=mips64el -mcpu=mips4 -target-abi n32 | FileCheck %s -check-prefix=CHECK-N32
|
||||
; RUN: llc < %s -march=mips64el -mcpu=mips64 -target-abi n64 | FileCheck %s -check-prefix=CHECK-N64
|
||||
; RUN: llc < %s -march=mips64el -mcpu=mips64 -target-abi n32 | FileCheck %s -check-prefix=CHECK-N32
|
||||
|
||||
@f0 = common global float 0.000000e+00, align 4
|
||||
@d0 = common global double 0.000000e+00, align 8
|
||||
|
@ -1,7 +1,7 @@
|
||||
; RUN: llc < %s -march=mips64el -mcpu=mips4 -mattr=-n64,n64 | FileCheck %s -check-prefix=CHECK-N64
|
||||
; RUN: llc < %s -march=mips64el -mcpu=mips4 -mattr=-n64,n32 | FileCheck %s -check-prefix=CHECK-N32
|
||||
; RUN: llc < %s -march=mips64el -mcpu=mips64 -mattr=-n64,n64 | FileCheck %s -check-prefix=CHECK-N64
|
||||
; RUN: llc < %s -march=mips64el -mcpu=mips64 -mattr=-n64,n32 | FileCheck %s -check-prefix=CHECK-N32
|
||||
; RUN: llc < %s -march=mips64el -mcpu=mips4 -target-abi n64 | FileCheck %s -check-prefix=CHECK-N64
|
||||
; RUN: llc < %s -march=mips64el -mcpu=mips4 -target-abi n32 | FileCheck %s -check-prefix=CHECK-N32
|
||||
; RUN: llc < %s -march=mips64el -mcpu=mips64 -target-abi n64 | FileCheck %s -check-prefix=CHECK-N64
|
||||
; RUN: llc < %s -march=mips64el -mcpu=mips64 -target-abi n32 | FileCheck %s -check-prefix=CHECK-N32
|
||||
|
||||
@c = common global i8 0, align 4
|
||||
@s = common global i16 0, align 4
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: llc -march=mips64 -relocation-model=static -mattr=+noabicalls,-n64,+n32 < %s | FileCheck %s
|
||||
; RUN: llc -march=mips64 -relocation-model=static -mattr=+noabicalls -target-abi n32 < %s | FileCheck %s
|
||||
|
||||
define i32* @get_gp() {
|
||||
entry:
|
||||
|
@ -19,36 +19,36 @@
|
||||
|
||||
; ### N32 ABI ###
|
||||
; RUN: llc -filetype=asm -mtriple mips64-unknown-linux -mcpu=mips64 \
|
||||
; RUN: -relocation-model=static -mattr=-n64,+n32 %s -o - | \
|
||||
; RUN: -relocation-model=static -target-abi n32 %s -o - | \
|
||||
; RUN: FileCheck -check-prefix=CHECK-STATIC-N32 -check-prefix=CHECK-STATIC-N32-NLEGACY %s
|
||||
|
||||
; RUN: llc -filetype=asm -mtriple mips64-unknown-linux -mcpu=mips64 \
|
||||
; RUN: -relocation-model=pic -mattr=-n64,+n32 %s -o - | \
|
||||
; RUN: -relocation-model=pic -target-abi n32 %s -o - | \
|
||||
; RUN: FileCheck -check-prefix=CHECK-PIC-N32 -check-prefix=CHECK-PIC-N32-NLEGACY %s
|
||||
|
||||
; RUN: llc -filetype=asm -mtriple mips64-unknown-linux -mcpu=mips64 \
|
||||
; RUN: -relocation-model=static -mattr=-n64,+n32,+nan2008 %s -o - | \
|
||||
; RUN: -relocation-model=static -target-abi n32 -mattr=+nan2008 %s -o - | \
|
||||
; RUN: FileCheck -check-prefix=CHECK-STATIC-N32 -check-prefix=CHECK-STATIC-N32-N2008 %s
|
||||
|
||||
; RUN: llc -filetype=asm -mtriple mips64-unknown-linux -mcpu=mips64 \
|
||||
; RUN: -relocation-model=pic -mattr=-n64,+n32,+nan2008 %s -o - | \
|
||||
; RUN: -relocation-model=pic -target-abi n32 -mattr=+nan2008 %s -o - | \
|
||||
; RUN: FileCheck -check-prefix=CHECK-PIC-N32 -check-prefix=CHECK-PIC-N32-N2008 %s
|
||||
|
||||
; ### N64 ABI ###
|
||||
; RUN: llc -filetype=asm -mtriple mips64-unknown-linux -mcpu=mips64 \
|
||||
; RUN: -relocation-model=static -mattr=+n64 %s -o - | \
|
||||
; RUN: -relocation-model=static -target-abi n64 %s -o - | \
|
||||
; RUN: FileCheck -check-prefix=CHECK-STATIC-N64 -check-prefix=CHECK-STATIC-N64-NLEGACY %s
|
||||
|
||||
; RUN: llc -filetype=asm -mtriple mips64-unknown-linux -mcpu=mips64 \
|
||||
; RUN: -relocation-model=pic -mattr=+n64 %s -o - | \
|
||||
; RUN: -relocation-model=pic -target-abi n64 %s -o - | \
|
||||
; RUN: FileCheck -check-prefix=CHECK-PIC-N64 -check-prefix=CHECK-PIC-N64-NLEGACY %s
|
||||
|
||||
; RUN: llc -filetype=asm -mtriple mips64-unknown-linux -mcpu=mips64 \
|
||||
; RUN: -relocation-model=static -mattr=+n64,+nan2008 %s -o - | \
|
||||
; RUN: -relocation-model=static -target-abi n64 -mattr=+nan2008 %s -o - | \
|
||||
; RUN: FileCheck -check-prefix=CHECK-STATIC-N64 -check-prefix=CHECK-STATIC-N64-N2008 %s
|
||||
|
||||
; RUN: llc -filetype=asm -mtriple mips64-unknown-linux -mcpu=mips64 \
|
||||
; RUN: -relocation-model=pic -mattr=+n64,+nan2008 %s -o - | \
|
||||
; RUN: -relocation-model=pic -target-abi n64 -mattr=+nan2008 %s -o - | \
|
||||
; RUN: FileCheck -check-prefix=CHECK-PIC-N64 -check-prefix=CHECK-PIC-N64-N2008 %s
|
||||
|
||||
; CHECK-STATIC-O32: .abicalls
|
||||
|
@ -4,7 +4,7 @@
|
||||
# RUN: llvm-objdump -d -r -arch=mips - | \
|
||||
# RUN: FileCheck %s -check-prefix=OBJ-O32
|
||||
|
||||
# RUN: llvm-mc %s -arch=mips64 -mcpu=mips64r2 -mattr=-n64,+n32 -filetype=obj -o -| \
|
||||
# RUN: llvm-mc %s -arch=mips64 -mcpu=mips64r2 -target-abi n32 -filetype=obj -o -| \
|
||||
# RUN: llvm-objdump -d -r -arch=mips - | \
|
||||
# RUN: FileCheck %s -check-prefix=OBJ-N32
|
||||
|
||||
|
@ -1,15 +1,15 @@
|
||||
# RUN: llvm-mc -triple mips64-unknown-unknown -mattr=-n64,+o32 -filetype=obj -o - %s | \
|
||||
# RUN: llvm-mc -triple mips64-unknown-unknown -target-abi o32 -filetype=obj -o - %s | \
|
||||
# RUN: llvm-objdump -d -r -arch=mips64 - | \
|
||||
# RUN: FileCheck -check-prefix=O32 %s
|
||||
|
||||
# RUN: llvm-mc -triple mips64-unknown-unknown -mattr=-n64,+o32 %s | \
|
||||
# RUN: llvm-mc -triple mips64-unknown-unknown -target-abi o32 %s | \
|
||||
# RUN: FileCheck -check-prefix=ASM %s
|
||||
|
||||
# RUN: llvm-mc -triple mips64-unknown-unknown -mattr=-n64,+n32 -filetype=obj -o - %s | \
|
||||
# RUN: llvm-mc -triple mips64-unknown-unknown -target-abi n32 -filetype=obj -o - %s | \
|
||||
# RUN: llvm-objdump -d -r -arch=mips64 - | \
|
||||
# RUN: FileCheck -check-prefix=NXX -check-prefix=N32 %s
|
||||
|
||||
# RUN: llvm-mc -triple mips64-unknown-unknown -mattr=-n64,+n32 %s | \
|
||||
# RUN: llvm-mc -triple mips64-unknown-unknown -target-abi n32 %s | \
|
||||
# RUN: FileCheck -check-prefix=ASM %s
|
||||
|
||||
# RUN: llvm-mc -triple mips64-unknown-unknown %s -filetype=obj -o - | \
|
||||
|
@ -37,35 +37,35 @@
|
||||
# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips32 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPSEL-MIPS32-NAN2008 %s
|
||||
# MIPSEL-MIPS32-NAN2008: Flags [ (0x50001404)
|
||||
|
||||
# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64r2 -mattr=-n64,n32 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64R2-N32 %s
|
||||
# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64r2 -mattr=-n64,n32 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64R2-N32 %s
|
||||
# RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux -mcpu=mips64r2 -target-abi n32 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64R2-N32 %s
|
||||
# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64r2 -target-abi n32 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64R2-N32 %s
|
||||
# MIPS64EL-MIPS64R2-N32: Flags [ (0x80000024)
|
||||
|
||||
# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64r2 -mattr=-n64,n32,+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64R2-N32-NAN2008 %s
|
||||
# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64r2 -target-abi n32 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64R2-N32-NAN2008 %s
|
||||
# MIPS64EL-MIPS64R2-N32-NAN2008: Flags [ (0x80000424)
|
||||
|
||||
# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64 -mattr=-n64,n32 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64-N32 %s
|
||||
# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64 -target-abi n32 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64-N32 %s
|
||||
# MIPS64EL-MIPS64-N32: Flags [ (0x60000024)
|
||||
|
||||
# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64 -mattr=-n64,n32,+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64-N32-NAN2008 %s
|
||||
# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64 -target-abi n32 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64-N32-NAN2008 %s
|
||||
# MIPS64EL-MIPS64-N32-NAN2008: Flags [ (0x60000424)
|
||||
|
||||
# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64r2 -mattr=n64 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64R2-N64 %s
|
||||
# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64r2 -target-abi n64 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64R2-N64 %s
|
||||
# MIPS64EL-MIPS64R2-N64: Flags [ (0x80000006)
|
||||
|
||||
# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64r2 -mattr=n64,+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64R2-N64-NAN2008 %s
|
||||
# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64r2 -target-abi n64 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64R2-N64-NAN2008 %s
|
||||
# MIPS64EL-MIPS64R2-N64-NAN2008: Flags [ (0x80000406)
|
||||
|
||||
# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64 %s -mattr=n64 -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64-N64 %s
|
||||
# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64 %s -target-abi n64 -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64-N64 %s
|
||||
# MIPS64EL-MIPS64-N64: Flags [ (0x60000006)
|
||||
|
||||
# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64 %s -mattr=n64,+nan2008 -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64-N64-NAN2008 %s
|
||||
# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64 %s -target-abi n64 -mattr=+nan2008 -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64-N64-NAN2008 %s
|
||||
# MIPS64EL-MIPS64-N64-NAN2008: Flags [ (0x60000406)
|
||||
|
||||
# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64r2 -mattr=-n64,o32 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64R2-O32 %s
|
||||
# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64r2 -target-abi o32 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64R2-O32 %s
|
||||
# MIPS64EL-MIPS64R2-O32: Flags [ (0x80001104)
|
||||
|
||||
# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64r2 -mattr=-n64,o32,+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64R2-O32-NAN2008 %s
|
||||
# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64r2 -target-abi o32 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64R2-O32-NAN2008 %s
|
||||
# MIPS64EL-MIPS64R2-O32-NAN2008: Flags [ (0x80001504)
|
||||
|
||||
# RUN: llvm-mc -filetype=obj -triple mips64-unknown-linux -mcpu=mips5 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS5 %s
|
||||
@ -98,10 +98,10 @@
|
||||
# RUN: llvm-mc -filetype=obj -triple mips-unknown-linux -mcpu=mips1 -mattr=+nan2008 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS1-NAN2008 %s
|
||||
# MIPS1-NAN2008: Flags [ (0x1404)
|
||||
|
||||
# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64 %s -mattr=-n64,o32 -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64-O32 %s
|
||||
# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64 %s -target-abi o32 -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64-O32 %s
|
||||
# MIPS64EL-MIPS64-O32: Flags [ (0x60001104)
|
||||
|
||||
# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64 %s -mattr=-n64,o32,+nan2008 -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64-O32-NAN2008 %s
|
||||
# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64 %s -target-abi o32 -mattr=+nan2008 -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64-O32-NAN2008 %s
|
||||
# MIPS64EL-MIPS64-O32-NAN2008: Flags [ (0x60001504)
|
||||
|
||||
# Default ABI for MIPS64 is N64 as opposed to GCC/GAS (N32)
|
||||
|
@ -1,9 +1,9 @@
|
||||
# These *MUST* match the output of gas compiled with the same triple and
|
||||
# corresponding options (-mabi=64 -> -mattr=+n64 for example).
|
||||
|
||||
# RUN: llvm-mc -filetype=obj -triple=mips64el-linux -mattr=-n64,+n64 %s -o - \
|
||||
# RUN: llvm-mc -filetype=obj -triple=mips64el-linux -target-abi n64 %s -o - \
|
||||
# RUN: | llvm-readobj -s | FileCheck --check-prefix=CHECK_64 %s
|
||||
# RUN: llvm-mc -filetype=obj -triple=mipsel %s -mattr=-o32,+n32 -o - \
|
||||
# RUN: llvm-mc -filetype=obj -triple=mipsel %s -target-abi n32 -o - \
|
||||
# RUN: | llvm-readobj -s | FileCheck --check-prefix=CHECK_32 %s
|
||||
|
||||
# Check for register information sections.
|
||||
|
@ -2,11 +2,11 @@
|
||||
# RUN: llvm-readobj -s -section-data | \
|
||||
# RUN: FileCheck %s -check-prefix=ELF32
|
||||
|
||||
# RUN: llvm-mc %s -arch=mips64 -mcpu=mips64r2 -mattr=+msa,+fp64,-n64,+n32 -filetype=obj -o - | \
|
||||
# RUN: llvm-mc %s -arch=mips64 -mcpu=mips64r2 -mattr=+msa,+fp64 -target-abi n32 -filetype=obj -o - | \
|
||||
# RUN: llvm-readobj -s -section-data | \
|
||||
# RUN: FileCheck %s -check-prefix=ELF32
|
||||
|
||||
# RUN: llvm-mc %s -arch=mips64 -mcpu=mips64r2 -mattr=+msa,+fp64,+n64 -filetype=obj -o - | \
|
||||
# RUN: llvm-mc %s -arch=mips64 -mcpu=mips64r2 -mattr=+msa,+fp64 -target-abi n64 -filetype=obj -o - | \
|
||||
# RUN: llvm-readobj -s -section-data | \
|
||||
# RUN: FileCheck %s -check-prefix=ELF64
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
# RUN: FileCheck -check-prefix=WARNING %s < %t0
|
||||
#
|
||||
# RUN: llvm-mc %s -triple=mips64-unknown-freebsd -show-encoding \
|
||||
# RUN: -mattr=-n64,+n32 2>%t1 | FileCheck %s
|
||||
# RUN: -target-abi n32 2>%t1 | FileCheck %s
|
||||
# RUN: FileCheck -check-prefix=WARNING %s < %t1
|
||||
#
|
||||
# Check that the register names are mapped to their correct numbers for n32/n64
|
||||
|
@ -1,5 +1,5 @@
|
||||
# RUN: llvm-mc %s -triple=mips64-unknown-freebsd -show-encoding \
|
||||
# RUN: -mattr=-n64,+o32 | FileCheck %s
|
||||
# RUN: -target-abi o32 | FileCheck %s
|
||||
|
||||
# Check that the register names are mapped to their correct numbers for o32
|
||||
# Second byte of daddiu with $zero at rt contains the number of the source
|
||||
|
@ -7,10 +7,10 @@
|
||||
# RUN: -mcpu=mips64r2 -arch=mips64 | FileCheck %s
|
||||
#
|
||||
# RUN: llvm-mc %s -triple=mipsel-unknown-linux -show-encoding \
|
||||
# RUN: -mcpu=mips64r2 -arch=mips64 -mattr=-n64,+n32 | FileCheck %s
|
||||
# RUN: -mcpu=mips64r2 -arch=mips64 -target-abi n32 | FileCheck %s
|
||||
#
|
||||
# RUN: llvm-mc %s -triple=mipsel-unknown-linux -show-encoding \
|
||||
# RUN: -mcpu=mips64r2 -arch=mips64 -mattr=-n64,+n64 | FileCheck %s
|
||||
# RUN: -mcpu=mips64r2 -arch=mips64 -target-abi n64 | FileCheck %s
|
||||
|
||||
.text
|
||||
foo:
|
||||
|
@ -5,7 +5,7 @@
|
||||
# RUN: llvm-readobj -sections -section-data -section-relocations - | \
|
||||
# RUN: FileCheck %s -check-prefix=CHECK-OBJ
|
||||
|
||||
# RUN: not llvm-mc %s -arch=mips -mcpu=mips64 -mattr=-n64,+n32,+nooddspreg 2> %t0
|
||||
# RUN: not llvm-mc %s -arch=mips -mcpu=mips64 -target-abi n32 -mattr=+nooddspreg 2> %t0
|
||||
# RUN: FileCheck %s -check-prefix=INVALID < %t0
|
||||
#
|
||||
# RUN: not llvm-mc %s -arch=mips -mcpu=mips64 -mattr=+nooddspreg 2> %t0
|
||||
|
@ -5,7 +5,7 @@
|
||||
# RUN: llvm-readobj -sections -section-data -section-relocations - | \
|
||||
# RUN: FileCheck %s -check-prefix=CHECK-OBJ
|
||||
|
||||
# RUN: not llvm-mc %s -arch=mips -mcpu=mips64 -mattr=-n64,n32 2> %t1
|
||||
# RUN: not llvm-mc %s -arch=mips -mcpu=mips64 -target-abi n32 2> %t1
|
||||
# RUN: FileCheck %s -check-prefix=INVALID < %t1
|
||||
#
|
||||
# RUN: not llvm-mc %s -arch=mips -mcpu=mips64 2> %t2
|
||||
|
@ -5,10 +5,10 @@
|
||||
# RUN: llvm-readobj -sections -section-data -section-relocations - | \
|
||||
# RUN: FileCheck %s -check-prefix=CHECK-OBJ-ALL -check-prefix=CHECK-OBJ-O32
|
||||
#
|
||||
# RUN: llvm-mc %s -arch=mips64 -mcpu=mips64 -mattr=-n64,+n32 | \
|
||||
# RUN: llvm-mc %s -arch=mips64 -mcpu=mips64 -target-abi n32 | \
|
||||
# RUN: FileCheck %s -check-prefix=CHECK-ASM
|
||||
#
|
||||
# RUN: llvm-mc %s -arch=mips64 -mcpu=mips64 -mattr=-n64,+n32 -filetype=obj -o - | \
|
||||
# RUN: llvm-mc %s -arch=mips64 -mcpu=mips64 -target-abi n32 -filetype=obj -o - | \
|
||||
# RUN: llvm-readobj -sections -section-data -section-relocations - | \
|
||||
# RUN: FileCheck %s -check-prefix=CHECK-OBJ-ALL -check-prefix=CHECK-OBJ-N32
|
||||
|
||||
@ -25,7 +25,7 @@
|
||||
# RUN: llvm-readobj -sections -section-data -section-relocations - | \
|
||||
# RUN: FileCheck %s -check-prefix=CHECK-OBJ-ALL -check-prefix=CHECK-OBJ-O32
|
||||
#
|
||||
# RUN: llvm-mc /dev/null -arch=mips64 -mcpu=mips64 -mattr=-n64,+n32 -filetype=obj -o - | \
|
||||
# RUN: llvm-mc /dev/null -arch=mips64 -mcpu=mips64 -target-abi n32 -filetype=obj -o - | \
|
||||
# RUN: llvm-readobj -sections -section-data -section-relocations - | \
|
||||
# RUN: FileCheck %s -check-prefix=CHECK-OBJ-ALL -check-prefix=CHECK-OBJ-N32
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user