// the plugin being loaded acts identically to the default inliner
TEST(PluginInlineAdvisorTest, PluginLoad) {
#if !defined(LLVM_ENABLE_PLUGINS)
- // Disable the test if plugins are disabled.
- return;
+ // Skip the test if plugins are disabled.
+ GTEST_SKIP();
#endif
CompilerInstance CI{};
CI.setupPlugin();
TEST_F(AArch64GISelMITest, TestCSE) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
LLT s16{LLT::scalar(16)};
LLT s32{LLT::scalar(32)};
TEST_F(AArch64GISelMITest, TestCSEConstantConfig) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
LLT s16{LLT::scalar(16)};
auto MIBInput = B.buildInstr(TargetOpcode::G_TRUNC, {s16}, {Copies[0]});
TEST_F(AArch64GISelMITest, TestCSEImmediateNextCSE) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
LLT s32{LLT::scalar(32)};
// We want to check that when the CSE hit is on the next instruction, i.e. at
TEST_F(AArch64GISelMITest, TestConstantFoldCTL) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
LLT s32 = LLT::scalar(32);
TEST_F(AArch64GISelMITest, FoldWithBuilder) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Try to use the FoldableInstructionsBuilder to build binary ops.
CSEMIRBuilder CFB(B.getState());
LLT s32 = LLT::scalar(32);
TEST_F(AArch64GISelMITest, FoldBinOp) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
LLT s32{LLT::scalar(32)};
auto MIBCst1 = B.buildConstant(s32, 16);
TEST_F(AArch64GISelMITest, SimpleAlias) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
LLT S64 = LLT::scalar(64);
LLT P0 = LLT::pointer(0, 64);
TEST_F(AArch64GISelMITest, OffsetAliasing) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
LLT S64 = LLT::scalar(64);
LLT P0 = LLT::pointer(0, 64);
TEST_F(AArch64GISelMITest, FrameIndexAliasing) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
LLT S64 = LLT::scalar(64);
LLT P0 = LLT::pointer(0, 64);
TEST_F(AArch64GISelMITest, ConstFalseTest) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
const auto &TLI = *B.getMF().getSubtarget().getTargetLowering();
bool BooleanChoices[2] = {true, false};
" %4:_(s8) = COPY %3\n";
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
unsigned CopyReg = Copies[Copies.size() - 1];
MachineInstr *FinalCopy = MRI->getVRegDef(CopyReg);
unsigned SrcReg = FinalCopy->getOperand(1).getReg();
" %4:_(s32) = COPY %10\n";
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
unsigned CopyReg = Copies[Copies.size() - 1];
MachineInstr *FinalCopy = MRI->getVRegDef(CopyReg);
unsigned SrcReg = FinalCopy->getOperand(1).getReg();
" %14:_(s8) = COPY %13\n";
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyReg = Copies[Copies.size() - 1];
MachineInstr *FinalCopy = MRI->getVRegDef(CopyReg);
Register SrcReg = FinalCopy->getOperand(1).getReg();
" %14:_(s8) = COPY %13\n";
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyReg = Copies[Copies.size() - 1];
MachineInstr *FinalCopy = MRI->getVRegDef(CopyReg);
Register SrcReg = FinalCopy->getOperand(1).getReg();
" %14:_(s64) = COPY %13\n";
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyReg = Copies[Copies.size() - 1];
MachineInstr *FinalCopy = MRI->getVRegDef(CopyReg);
Register SrcReg = FinalCopy->getOperand(1).getReg();
" G_BR %bb.12\n";
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyReg = Copies[Copies.size() - 1];
MachineInstr *FinalCopy = MRI->getVRegDef(CopyReg);
Register SrcReg = FinalCopy->getOperand(1).getReg();
" G_BR %bb.12\n";
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyReg = Copies[Copies.size() - 1];
MachineInstr *FinalCopy = MRI->getVRegDef(CopyReg);
Register SrcReg = FinalCopy->getOperand(1).getReg();
" %6:_(s32) = COPY %5\n";
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
unsigned CopyReg = Copies[Copies.size() - 1];
MachineInstr *FinalCopy = MRI->getVRegDef(CopyReg);
unsigned SrcReg = FinalCopy->getOperand(1).getReg();
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyReg = Copies[Copies.size() - 1];
MachineInstr *FinalCopy = MRI->getVRegDef(CopyReg);
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyReg = Copies[Copies.size() - 1];
MachineInstr *FinalCopy = MRI->getVRegDef(CopyReg);
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyReg = Copies[Copies.size() - 1];
MachineInstr *FinalCopy = MRI->getVRegDef(CopyReg);
" %6:_(s8) = COPY %5\n";
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
unsigned CopyReg = Copies[Copies.size() - 1];
MachineInstr *FinalCopy = MRI->getVRegDef(CopyReg);
unsigned SrcReg = FinalCopy->getOperand(1).getReg();
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyReg0 = Copies[Copies.size() - 2];
MachineInstr *FinalCopy0 = MRI->getVRegDef(CopyReg0);
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyReg0 = Copies[Copies.size() - 2];
MachineInstr *FinalCopy0 = MRI->getVRegDef(CopyReg0);
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyReg = Copies[Copies.size() - 1];
MachineInstr *FinalCopy = MRI->getVRegDef(CopyReg);
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyReg = Copies[Copies.size() - 1];
MachineInstr *FinalCopy = MRI->getVRegDef(CopyReg);
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyReg = Copies[Copies.size() - 1];
MachineInstr *FinalCopy = MRI->getVRegDef(CopyReg);
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyReg = Copies[Copies.size() - 1];
MachineInstr *FinalCopy = MRI->getVRegDef(CopyReg);
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyReg = Copies[Copies.size() - 1];
MachineInstr *FinalCopy = MRI->getVRegDef(CopyReg);
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyReg = Copies[Copies.size() - 1];
MachineInstr *FinalCopy = MRI->getVRegDef(CopyReg);
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyReg = Copies[Copies.size() - 1];
MachineInstr *FinalCopy = MRI->getVRegDef(CopyReg);
" %13:_(s32) = COPY %12\n";
setUp(MIR);
if (!TM)
- return;
+ GTEST_SKIP();
unsigned CopyReg = Copies[Copies.size() - 1];
MachineInstr *FinalCopy = MRI->getVRegDef(CopyReg);
unsigned SrcReg = FinalCopy->getOperand(1).getReg();
TEST_F(AArch64GISelMITest, TestSignBitIsZero) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
const LLT S32 = LLT::scalar(32);
auto SignBit = B.buildConstant(S32, 0x80000000);
" %12:_(s8) = COPY %11\n";
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyReg1 = Copies[Copies.size() - 5];
Register CopyRegNeg1 = Copies[Copies.size() - 4];
Register CopyReg127 = Copies[Copies.size() - 3];
" %9:_(s32) = COPY %8\n";
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopySextLoad = Copies[Copies.size() - 2];
Register CopySextNeg1 = Copies[Copies.size() - 1];
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyInReg7 = Copies[Copies.size() - 9];
Register CopyInReg8 = Copies[Copies.size() - 8];
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyInReg1 = Copies[Copies.size() - 10];
Register CopyInReg7 = Copies[Copies.size() - 9];
" %12:_(s8) = COPY %11\n";
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyTruncLoad = Copies[Copies.size() - 3];
Register CopyTruncNeg1 = Copies[Copies.size() - 2];
Register CopyTrunc7 = Copies[Copies.size() - 1];
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyVecFCMP = Copies[Copies.size() - 4];
Register CopyVecICMP = Copies[Copies.size() - 3];
Register CopyScalarFCMP = Copies[Copies.size() - 2];
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyLoadUByte = Copies[Copies.size() - 4];
Register CopyLoadSByte = Copies[Copies.size() - 3];
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyDispatchPtr = Copies[Copies.size() - 5];
Register CopyQueuePtr = Copies[Copies.size() - 4];
)MIR";
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
GISelKnownBits KB(*MF);
" %copy:_(s32) = COPY %and(s32)\n";
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyReg = Copies[Copies.size() - 1];
MachineInstr *FinalCopy = MRI->getVRegDef(CopyReg);
" %r3:_(s32) = COPY %sext\n";
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyRegAny = Copies[Copies.size() - 3];
Register CopyRegZ = Copies[Copies.size() - 2];
Register CopyRegS = Copies[Copies.size() - 1];
)";
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
GISelKnownBits Info(*MF);
KnownBits Res;
auto GetKB = [&](unsigned Idx) {
)";
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
GISelKnownBits Info(*MF);
KnownBits Res;
auto GetKB = [&](unsigned Idx) {
)";
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
const uint64_t TestVal = UINT64_C(0xabcd123344568998);
Register CopyMerge = Copies[Copies.size() - 1];
)";
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
const uint64_t TestVal = UINT64_C(0xabcd123344568998);
GISelKnownBits Info(*MF);
)";
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
const uint32_t ByteSwappedVal = 0x44332211;
const uint32_t BitSwappedVal = 0x22cc4488;
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyReg0 = Copies[Copies.size() - 2];
MachineInstr *FinalCopy0 = MRI->getVRegDef(CopyReg0);
)";
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyUMax = Copies[Copies.size() - 1];
GISelKnownBits Info(*MF);
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyReg0 = Copies[Copies.size() - 1];
MachineInstr *FinalCopy0 = MRI->getVRegDef(CopyReg0);
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyReg0 = Copies[Copies.size() - 1];
MachineInstr *FinalCopy0 = MRI->getVRegDef(CopyReg0);
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyReg0 = Copies[Copies.size() - 1];
MachineInstr *FinalCopy0 = MRI->getVRegDef(CopyReg0);
)";
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register EqSizedCopyReg = Copies[Copies.size() - 2];
MachineInstr *EqSizedCopy = MRI->getVRegDef(EqSizedCopyReg);
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyAssert8 = Copies[Copies.size() - 4];
Register CopyAssert1 = Copies[Copies.size() - 3];
)";
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register UnknownCopy = Copies[Copies.size() - 4];
Register ThirtytwoCopy = Copies[Copies.size() - 3];
" %ubfx_copy_unk_width:_(s32) = COPY %13\n";
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyBfxReg = Copies[Copies.size() - 5];
Register CopyValBfxReg = Copies[Copies.size() - 4];
Register CopyUnkBfxReg = Copies[Copies.size() - 3];
" %sbfx_copy_unk_width:_(s32) = COPY %13\n";
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyBfxReg = Copies[Copies.size() - 5];
Register CopyValBfxReg = Copies[Copies.size() - 4];
Register CopyNegValBfxReg = Copies[Copies.size() - 3];
" %ubfx_copy_unk_width:_(s32) = COPY %13\n";
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyUnkBfxReg = Copies[Copies.size() - 5];
Register CopyPosBfxReg = Copies[Copies.size() - 4];
Register CopyNegBfxReg = Copies[Copies.size() - 3];
" %sbfx_copy_unk_off:_(s32) = COPY %13\n";
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyNegBfxReg = Copies[Copies.size() - 5];
Register CopyPosBfxReg = Copies[Copies.size() - 4];
Register CopyHiSetBfxReg = Copies[Copies.size() - 3];
)MIR";
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
GISelKnownBits Info(*MF);
KnownBits Res;
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyOverflow = Copies[Copies.size() - 1];
GISelKnownBits Info(*MF);
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyReg = Copies[Copies.size() - 1];
MachineInstr *FinalCopy = MRI->getVRegDef(CopyReg);
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyReg = Copies[Copies.size() - 1];
MachineInstr *FinalCopy = MRI->getVRegDef(CopyReg);
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyReg = Copies[Copies.size() - 1];
MachineInstr *FinalCopy = MRI->getVRegDef(CopyReg);
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyReg = Copies[Copies.size() - 1];
MachineInstr *FinalCopy = MRI->getVRegDef(CopyReg);
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyReg = Copies[Copies.size() - 1];
MachineInstr *FinalCopy = MRI->getVRegDef(CopyReg);
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyReg = Copies[Copies.size() - 1];
MachineInstr *FinalCopy = MRI->getVRegDef(CopyReg);
Register SrcReg = FinalCopy->getOperand(1).getReg();
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyReg = Copies[Copies.size() - 1];
MachineInstr *FinalCopy = MRI->getVRegDef(CopyReg);
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyReg = Copies[Copies.size() - 1];
MachineInstr *FinalCopy = MRI->getVRegDef(CopyReg);
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyReg = Copies[Copies.size() - 1];
MachineInstr *FinalCopy = MRI->getVRegDef(CopyReg);
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
GISelKnownBits Info(*MF);
Register CopySplatReg = Copies[Copies.size() - 2];
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyReg0 = Copies[Copies.size() - 2];
MachineInstr *FinalCopy0 = MRI->getVRegDef(CopyReg0);
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyReg0 = Copies[Copies.size() - 2];
MachineInstr *FinalCopy0 = MRI->getVRegDef(CopyReg0);
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyReg = Copies[Copies.size() - 1];
MachineInstr *FinalCopy = MRI->getVRegDef(CopyReg);
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyReg = Copies[Copies.size() - 1];
MachineInstr *FinalCopy = MRI->getVRegDef(CopyReg);
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyReg = Copies[Copies.size() - 1];
MachineInstr *FinalCopy = MRI->getVRegDef(CopyReg);
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyReg = Copies[Copies.size() - 1];
MachineInstr *FinalCopy = MRI->getVRegDef(CopyReg);
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyReg = Copies[Copies.size() - 1];
MachineInstr *FinalCopy = MRI->getVRegDef(CopyReg);
TEST_F(AArch64GISelMITest, TestVectorSignBitIsZero) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
const LLT V2S32 = LLT::fixed_vector(2, 32);
// Vector buildConstant makes splat G_BUILD_VECTOR instruction.
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyReg1 = Copies[Copies.size() - 7];
Register CopyRegNeg1 = Copies[Copies.size() - 6];
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopySextLoad = Copies[Copies.size() - 3];
Register CopySextNeg1 = Copies[Copies.size() - 2];
Register CopySextNonSplat = Copies[Copies.size() - 1];
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyInReg7 = Copies[Copies.size() - 9];
Register CopyInReg8 = Copies[Copies.size() - 8];
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyInReg1 = Copies[Copies.size() - 10];
Register CopyInReg7 = Copies[Copies.size() - 9];
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyTruncLoad = Copies[Copies.size() - 3];
Register CopyTruncNeg1 = Copies[Copies.size() - 2];
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
GISelKnownBits KB(*MF);
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyReg = Copies[Copies.size() - 1];
MachineInstr *FinalCopy = MRI->getVRegDef(CopyReg);
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyRegAny = Copies[Copies.size() - 3];
Register CopyRegZ = Copies[Copies.size() - 2];
Register CopyRegS = Copies[Copies.size() - 1];
)";
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
GISelKnownBits Info(*MF);
KnownBits Res;
auto GetKB = [&](unsigned Idx) {
)";
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
GISelKnownBits Info(*MF);
KnownBits Res;
auto GetKB = [&](unsigned Idx) {
)";
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
const uint32_t ByteSwappedVal = 0x44332211;
const uint32_t BitSwappedVal = 0x22cc4488;
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyReg0 = Copies[Copies.size() - 2];
MachineInstr *FinalCopy0 = MRI->getVRegDef(CopyReg0);
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyUMax = Copies[Copies.size() - 1];
GISelKnownBits Info(*MF);
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyReg0 = Copies[Copies.size() - 1];
MachineInstr *FinalCopy0 = MRI->getVRegDef(CopyReg0);
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyReg0 = Copies[Copies.size() - 1];
MachineInstr *FinalCopy0 = MRI->getVRegDef(CopyReg0);
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyReg0 = Copies[Copies.size() - 1];
MachineInstr *FinalCopy0 = MRI->getVRegDef(CopyReg0);
)";
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register EqSizedCopyReg = Copies[Copies.size() - 2];
MachineInstr *EqSizedCopy = MRI->getVRegDef(EqSizedCopyReg);
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyAssert8 = Copies[Copies.size() - 4];
Register CopyAssert1 = Copies[Copies.size() - 3];
setUp(MIRString);
if (!TM)
- return;
+ GTEST_SKIP();
Register CopyOverflow = Copies[Copies.size() - 1];
TEST_F(AArch64GISelMITest, LowerRotates) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, LowerRotatesNonPow2) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, LowerRotatesVector) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, LowerBitCountingCTTZ0) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, LowerBitCountingCTTZ1) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, NarrowScalarCTLZ) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, NarrowScalarCTTZ) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, LowerBitCountingCTTZ2) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, WidenBitCountingCTPOP1) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, WidenBitCountingCTPOP2) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, LowerBitCountingCTTZ3) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, LowerBitCountingCTLZ0) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, LowerBitCountingCTLZLibcall) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, LowerBitCountingCTLZ1) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, WidenBitCountingCTLZ) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, WidenBitCountingCTLZZeroUndef) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, WidenBitCountingCTPOP) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, WidenBitCountingCTTZ_ZERO_UNDEF) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, WidenBitCountingCTTZ) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, WidenUADDO) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, WidenUSUBO) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, WidenSADDO) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, WidenSSUBO) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, WidenUADDE) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, WidenUSUBE) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, WidenSADDE) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, WidenSSUBE) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, WidenUMULOCondition) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, NarrowUADDO) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
LLT S1 = LLT::scalar(1);
LLT S32 = LLT::scalar(32);
TEST_F(AArch64GISelMITest, NarrowUSUBO) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
LLT S1 = LLT::scalar(1);
LLT S32 = LLT::scalar(32);
TEST_F(AArch64GISelMITest, NarrowSADDO) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
LLT S1 = LLT::scalar(1);
LLT S32 = LLT::scalar(32);
TEST_F(AArch64GISelMITest, NarrowSSUBO) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
LLT S1 = LLT::scalar(1);
LLT S32 = LLT::scalar(32);
TEST_F(AArch64GISelMITest, NarrowUADDE) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
LLT S1 = LLT::scalar(1);
LLT S32 = LLT::scalar(32);
TEST_F(AArch64GISelMITest, NarrowUSUBE) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
LLT S1 = LLT::scalar(1);
LLT S32 = LLT::scalar(32);
TEST_F(AArch64GISelMITest, NarrowSADDE) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
LLT S1 = LLT::scalar(1);
LLT S32 = LLT::scalar(32);
TEST_F(AArch64GISelMITest, NarrowSSUBE) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
LLT S1 = LLT::scalar(1);
LLT S32 = LLT::scalar(32);
TEST_F(AArch64GISelMITest, FewerElementsAnd) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
const LLT V2S32 = LLT::fixed_vector(2, 32);
const LLT V5S32 = LLT::fixed_vector(5, 32);
TEST_F(AArch64GISelMITest, MoreElementsAnd) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
LLT s32 = LLT::scalar(32);
LLT v2s32 = LLT::fixed_vector(2, 32);
TEST_F(AArch64GISelMITest, FewerElementsPhi) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
LLT s1 = LLT::scalar(1);
LLT s32 = LLT::scalar(32);
TEST_F(AArch64GISelMITest, LowerFNEG) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, LowerMinMax) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
LLT s64 = LLT::scalar(64);
LLT v2s32 = LLT::fixed_vector(2, 32);
TEST_F(AArch64GISelMITest, WidenScalarBuildVector) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
LLT S32 = LLT::scalar(32);
LLT S16 = LLT::scalar(16);
TEST_F(AArch64GISelMITest, LowerMergeValues) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
const LLT S32 = LLT::scalar(32);
const LLT S24 = LLT::scalar(24);
TEST_F(AArch64GISelMITest, WidenScalarMergeValuesPointer) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
DefineLegalizerInfo(A, {});
TEST_F(AArch64GISelMITest, WidenSEXTINREG) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, NarrowSEXTINREG) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info, these aren't actually relevant to the test.
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, NarrowSEXTINREG2) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info, these aren't actually relevant to the test.
DefineLegalizerInfo(
TEST_F(AArch64GISelMITest, LowerSEXTINREG) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info, these aren't actually relevant to the test.
DefineLegalizerInfo(
TEST_F(AArch64GISelMITest, LibcallFPExt) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, LibcallFPTrunc) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, LibcallSimple) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, LibcallMul) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, LibcallSRem) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, LibcallURem) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, LibcallCtlzZeroUndef) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, LibcallFAdd) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, LibcallFSub) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, LibcallFMul) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, LibcallFDiv) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, LibcallFExp) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, LibcallFExp2) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, LibcallFRem) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, LibcallFPow) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, LibcallFMa) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, LibcallFCeil) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, LibcallFFloor) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, LibcallFMinNum) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, LibcallFMaxNum) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, LibcallFSqrt) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, LibcallFRint) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, LibcallFNearbyInt) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, NarrowScalarExtract) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {
TEST_F(AArch64GISelMITest, LowerInsert) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, { getActionDefinitionsBuilder(G_INSERT).lower(); });
TEST_F(AArch64GISelMITest, LowerFFloor) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(A, {});
TEST_F(AArch64GISelMITest, LowerBSWAP) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
DefineLegalizerInfo(A, {});
TEST_F(AArch64GISelMITest, LowerSDIVREM) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(
TEST_F(AArch64GISelMITest, LowerUDIVREM) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Declare your legalization info
DefineLegalizerInfo(
TEST_F(AArch64GISelMITest, WidenUnmerge) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
DefineLegalizerInfo(A, {});
TEST_F(AArch64GISelMITest, BitcastLoad) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
LLT P0 = LLT::pointer(0, 64);
LLT S32 = LLT::scalar(32);
TEST_F(AArch64GISelMITest, BitcastStore) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
LLT P0 = LLT::pointer(0, 64);
LLT S32 = LLT::scalar(32);
TEST_F(AArch64GISelMITest, BitcastSelect) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
LLT S1 = LLT::scalar(1);
LLT S32 = LLT::scalar(32);
TEST_F(AArch64GISelMITest, BitcastBitOps) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
LLT S32 = LLT::scalar(32);
LLT V4S8 = LLT::fixed_vector(4, 8);
TEST_F(AArch64GISelMITest, CreateLibcall) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
DefineLegalizerInfo(A, {});
TEST_F(AArch64GISelMITest, NarrowImplicitDef) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
DefineLegalizerInfo(A, {});
TEST_F(AArch64GISelMITest, WidenFreeze) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
DefineLegalizerInfo(A, {});
TEST_F(AArch64GISelMITest, NarrowFreeze) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
DefineLegalizerInfo(A, {});
TEST_F(AArch64GISelMITest, FewerElementsFreeze) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
DefineLegalizerInfo(A, {});
TEST_F(AArch64GISelMITest, MoreElementsFreeze) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
DefineLegalizerInfo(A, {});
TEST_F(AArch64GISelMITest, FewerElementsInsertVectorElt) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
DefineLegalizerInfo(A, {});
TEST_F(AArch64GISelMITest, widenScalarUnmerge) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
DefineLegalizerInfo(A, {});
TEST_F(AArch64GISelMITest, moreElementsShuffle) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
DefineLegalizerInfo(A, {});
TEST_F(AArch64GISelMITest, narrowScalarShiftByConstant) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
DefineLegalizerInfo(A, {});
TEST_F(AArch64GISelMITest, MoreElementsSelect) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
LLT s1 = LLT::scalar(1);
LLT s64 = LLT::scalar(64);
)";
setUp(MIRString.rtrim(' '));
if (!TM)
- return;
+ GTEST_SKIP();
ALegalizerInfo LI(MF->getSubtarget());
LostDebugLocObserver LocObserver(DEBUG_TYPE);
)";
setUp(MIRString.rtrim(' '));
if (!TM)
- return;
+ GTEST_SKIP();
ALegalizerInfo LI(MF->getSubtarget());
LostDebugLocObserver LocObserver(DEBUG_TYPE);
)";
setUp(MIRString.rtrim(' '));
if (!TM)
- return;
+ GTEST_SKIP();
ALegalizerInfo LI(MF->getSubtarget());
LostDebugLocObserver LocObserver(DEBUG_TYPE);
TEST_F(AArch64GISelMITest, TestBuildConstantFConstant) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
B.buildConstant(LLT::scalar(32), 42);
B.buildFConstant(LLT::scalar(32), 1.0);
TEST_F(AArch64GISelMITest, TestBuildConstantFConstantDeath) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
LLVMContext &Ctx = MF->getFunction().getContext();
APInt APV32(32, 12345);
TEST_F(AArch64GISelMITest, DstOpSrcOp) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
SmallVector<Register, 4> Copies;
collectCopies(Copies, MF);
TEST_F(AArch64GISelMITest, BuildUnmerge) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
SmallVector<Register, 4> Copies;
collectCopies(Copies, MF);
TEST_F(AArch64GISelMITest, TestBuildFPInsts) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
SmallVector<Register, 4> Copies;
collectCopies(Copies, MF);
TEST_F(AArch64GISelMITest, BuildIntrinsic) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
LLT S64 = LLT::scalar(64);
SmallVector<Register, 4> Copies;
TEST_F(AArch64GISelMITest, BuildXor) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
LLT S64 = LLT::scalar(64);
LLT S128 = LLT::scalar(128);
TEST_F(AArch64GISelMITest, BuildBitCounts) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
LLT S32 = LLT::scalar(32);
SmallVector<Register, 4> Copies;
TEST_F(AArch64GISelMITest, BuildCasts) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
LLT S32 = LLT::scalar(32);
SmallVector<Register, 4> Copies;
TEST_F(AArch64GISelMITest, BuildMinMaxAbs) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
LLT S64 = LLT::scalar(64);
SmallVector<Register, 4> Copies;
TEST_F(AArch64GISelMITest, BuildAtomicRMW) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
LLT S64 = LLT::scalar(64);
LLT P0 = LLT::pointer(0, 64);
TEST_F(AArch64GISelMITest, BuildMergeLikeInstr) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
LLT S32 = LLT::scalar(32);
Register RegC0 = B.buildConstant(S32, 0).getReg(0);
TEST_F(MachineIRBuilderDeathTest, BuildMergeValues) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
LLT S32 = LLT::scalar(32);
Register RegC0 = B.buildConstant(S32, 0).getReg(0);
TEST_F(AArch64GISelMITest, BuildAddoSubo) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
LLT S1 = LLT::scalar(1);
LLT S64 = LLT::scalar(64);
TEST_F(AArch64GISelMITest, BuildBitfieldExtract) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
LLT S64 = LLT::scalar(64);
SmallVector<Register, 4> Copies;
collectCopies(Copies, MF);
TEST_F(AArch64GISelMITest, MatchIntConstant) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
auto MIBCst = B.buildConstant(LLT::scalar(64), 42);
int64_t Cst;
bool match = mi_match(MIBCst.getReg(0), *MRI, m_ICst(Cst));
TEST_F(AArch64GISelMITest, MatchIntConstantRegister) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
auto MIBCst = B.buildConstant(LLT::scalar(64), 42);
std::optional<ValueAndVReg> Src0;
bool match = mi_match(MIBCst.getReg(0), *MRI, m_GCst(Src0));
TEST_F(AArch64GISelMITest, MatchIntConstantSplat) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
LLT s64 = LLT::scalar(64);
LLT v2s64 = LLT::fixed_vector(2, s64);
TEST_F(AArch64GISelMITest, MachineInstrPtrBind) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
auto MIBAdd = B.buildAdd(LLT::scalar(64), Copies[0], Copies[1]);
// Test 'MachineInstr *' bind.
// Default mi_match.
TEST_F(AArch64GISelMITest, MatchBinaryOp) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
LLT s32 = LLT::scalar(32);
LLT s64 = LLT::scalar(64);
LLT p0 = LLT::pointer(0, 64);
TEST_F(AArch64GISelMITest, MatchICmp) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
const LLT s1 = LLT::scalar(1);
auto CmpEq = B.buildICmp(CmpInst::ICMP_EQ, s1, Copies[0], Copies[1]);
TEST_F(AArch64GISelMITest, MatchFCmp) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
const LLT s1 = LLT::scalar(1);
auto CmpEq = B.buildFCmp(CmpInst::FCMP_OEQ, s1, Copies[0], Copies[1]);
TEST_F(AArch64GISelMITest, MatcCommutativeICmp) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
const LLT s1 = LLT::scalar(1);
Register LHS = Copies[0];
Register RHS = Copies[1];
TEST_F(AArch64GISelMITest, MatcCommutativeFCmp) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
const LLT s1 = LLT::scalar(1);
Register LHS = Copies[0];
Register RHS = Copies[1];
TEST_F(AArch64GISelMITest, MatchFPUnaryOp) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Truncate s64 to s32.
LLT s32 = LLT::scalar(32);
TEST_F(AArch64GISelMITest, MatchExtendsTrunc) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
LLT s64 = LLT::scalar(64);
LLT s32 = LLT::scalar(32);
TEST_F(AArch64GISelMITest, MatchSpecificType) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Try to match a 64bit add.
LLT s64 = LLT::scalar(64);
TEST_F(AArch64GISelMITest, MatchCombinators) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
LLT s64 = LLT::scalar(64);
LLT s32 = LLT::scalar(32);
TEST_F(AArch64GISelMITest, MatchMiscellaneous) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
LLT s64 = LLT::scalar(64);
auto MIBAdd = B.buildAdd(s64, Copies[0], Copies[1]);
TEST_F(AArch64GISelMITest, MatchSpecificConstant) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
// Basic case: Can we match a G_CONSTANT with a specific value?
auto FortyTwo = B.buildConstant(LLT::scalar(64), 42);
TEST_F(AArch64GISelMITest, MatchSpecificConstantSplat) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
LLT s64 = LLT::scalar(64);
LLT v4s64 = LLT::fixed_vector(4, s64);
TEST_F(AArch64GISelMITest, MatchSpecificConstantOrSplat) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
LLT s64 = LLT::scalar(64);
LLT v4s64 = LLT::fixed_vector(4, s64);
TEST_F(AArch64GISelMITest, MatchZeroInt) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
auto Zero = B.buildConstant(LLT::scalar(64), 0);
EXPECT_TRUE(mi_match(Zero.getReg(0), *MRI, m_ZeroInt()));
TEST_F(AArch64GISelMITest, MatchAllOnesInt) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
auto AllOnes = B.buildConstant(LLT::scalar(64), -1);
EXPECT_TRUE(mi_match(AllOnes.getReg(0), *MRI, m_AllOnesInt()));
TEST_F(AArch64GISelMITest, MatchFPOrIntConst) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
Register IntOne = B.buildConstant(LLT::scalar(64), 1).getReg(0);
Register FPOne = B.buildFConstant(LLT::scalar(64), 1.0).getReg(0);
TEST_F(AArch64GISelMITest, MatchConstantSplat) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
LLT s64 = LLT::scalar(64);
LLT v2s64 = LLT::fixed_vector(2, 64);
TEST_F(AArch64GISelMITest, MatchNeg) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
LLT s64 = LLT::scalar(64);
auto Zero = B.buildConstant(LLT::scalar(64), 0);
TEST_F(AArch64GISelMITest, MatchNot) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
LLT s64 = LLT::scalar(64);
auto AllOnes = B.buildConstant(LLT::scalar(64), -1);
TEST_F(AArch64GISelMITest, MatchSpecificReg) {
setUp();
if (!TM)
- return;
+ GTEST_SKIP();
auto Cst1 = B.buildConstant(LLT::scalar(64), 42);
auto Cst2 = B.buildConstant(LLT::scalar(64), 314);
Register Reg = Cst1.getReg(0);
std::string TargetLookupError;
if (!TargetRegistry::lookupTarget(std::string(TT.str()), TargetLookupError))
- return;
+ GTEST_SKIP();
SmallString<128> InputsDir = unittest::getInputFileDirectory(TestMainArgv0);
// This test is also not supported on non-x86 platforms.
if (Triple(HostTriple).getArch() != Triple::x86_64)
- return;
+ GTEST_SKIP();
buildFunctionThatUsesStackmap();
buildMCJITOptions();
#define SKIP_UNSUPPORTED_PLATFORM \
do \
if (!ArchSupportsMCJIT() || !OSSupportsMCJIT() || !HostCanBeTargeted()) \
- return; \
+ GTEST_SKIP(); \
while(0)
namespace llvm {
// Bail out if we can not detect the host.
if (!JTMB) {
consumeError(JTMB.takeError());
- return;
+ GTEST_SKIP();
}
// Bail out if we can not build a local call-through manager.
auto LCTM = createLocalLazyCallThroughManager(JTMB->getTargetTriple(), ES, 0);
if (!LCTM) {
consumeError(LCTM.takeError());
- return;
+ GTEST_SKIP();
}
auto DummyTarget = ES.intern("DummyTarget");
std::unique_ptr<TargetMachine> TM(EngineBuilder().selectTarget(
Triple(M->getTargetTriple()), "", "", SmallVector<std::string, 1>()));
if (!TM)
- return;
+ GTEST_SKIP();
auto Obj = cantFail(SimpleCompiler(*TM)(*M));
SmallVector<std::string, 1>()));
if (!TM)
- return;
+ GTEST_SKIP();
// Our compiler is going to modify symbol visibility settings without telling
// ORC. This will test our ability to override the flags later.
SmallVector<std::string, 1>()));
if (!TM)
- return;
+ GTEST_SKIP();
// Our compiler is going to add a new symbol without telling ORC.
// This will test our ability to auto-claim responsibility later.
LLVMDisasmContextRef DCR = LLVMCreateDisasm("x86_64-pc-linux", nullptr, 0,
nullptr, symbolLookupCallback);
if (!DCR)
- return;
+ GTEST_SKIP();
size_t InstSize;
unsigned NumBytes = sizeof(Bytes);
LLVMDisasmContextRef DCR = LLVMCreateDisasm("wasm32-unknown-unknown", nullptr,
0, nullptr, symbolLookupCallback);
if (!DCR)
- return;
+ GTEST_SKIP();
size_t InstSize;
unsigned NumBytes = sizeof(Bytes);
TEST_F(DwarfLineTableHeaders, TestDWARF4HeaderEmission) {
if (!MRI)
- return;
+ GTEST_SKIP();
SmallString<0> EmittedBinContents;
raw_svector_ostream VecOS(EmittedBinContents);
TEST_F(DwarfLineTableHeaders, TestDWARF5HeaderEmission) {
if (!MRI)
- return;
+ GTEST_SKIP();
SmallString<0> EmittedBinContents;
raw_svector_ostream VecOS(EmittedBinContents);
TEST(DwarfLineTables, TestDefaultParams) {
if (!getContext())
- return;
+ GTEST_SKIP();
MCDwarfLineTableParams Params;
TEST(DwarfLineTables, TestCustomParams) {
if (!getContext())
- return;
+ GTEST_SKIP();
// Some tests against the example values given in the standard.
MCDwarfLineTableParams Params;
TEST(DwarfLineTables, TestCustomParams2) {
if (!getContext())
- return;
+ GTEST_SKIP();
// Corner case param values.
MCDwarfLineTableParams Params;
TEST_F(MCInstPrinterTest, formatHex) {
if (!Printer)
- return;
+ GTEST_SKIP();
EXPECT_EQ("0x1", formatHex<int64_t>(1));
EXPECT_EQ("0x7fffffffffffffff",
// This test relies on a StringRef being able to hold the appropriate amount
// of data.
if (std::numeric_limits<StringRef::size_type>::max() < MemberSize)
- return;
+ GTEST_SKIP();
auto Child = createChild(ArchiveWithMember);
ASSERT_THAT_EXPECTED(Child, Succeeded());
// This test relies on a StringRef being able to hold the appropriate amount
// of data.
if (std::numeric_limits<StringRef::size_type>::max() < MemberSize)
- return;
+ GTEST_SKIP();
auto Child = createChild(ArchiveWithMember);
ASSERT_THAT_EXPECTED(Child, Succeeded());
// Tests for error paths of the ELFFile::decodeBBAddrMap API.
TEST(ELFObjectFileTest, InvalidDecodeBBAddrMap) {
- if (IsHostWindows()) return;
+ if (IsHostWindows())
+ GTEST_SKIP();
StringRef CommonYamlString(R"(
--- !ELF
FileHeader:
// Test for the ELFObjectFile::readBBAddrMap API.
TEST(ELFObjectFileTest, ReadBBAddrMap) {
- if (IsHostWindows()) return;
+ if (IsHostWindows())
+ GTEST_SKIP();
StringRef CommonYamlString(R"(
--- !ELF
FileHeader:
TEST(PluginsTests, LoadPlugin) {
#if !defined(LLVM_ENABLE_PLUGINS)
- // Disable the test if plugins are disabled.
- return;
+ // Skip the test if plugins are disabled.
+ GTEST_SKIP();
#endif
auto PluginPath = LibPath();
// -fpass-plugin=DoublerPlugin.
TEST(PluginsTests, LoadMultiplePlugins) {
#if !defined(LLVM_ENABLE_PLUGINS)
- // Disable the test if plugins are disabled.
- return;
+ // Skip the test if plugins are disabled.
+ GTEST_SKIP();
#endif
auto DoublerPluginPath = LibPath("DoublerPlugin");
auto RawProfile = WritableMemoryBuffer::getNewUninitMemBuffer(LargeSize);
if (!RawProfile)
- return;
+ GTEST_SKIP();
auto RawProfileReaderOrErr = InstrProfReader::create(std::move(RawProfile));
ASSERT_TRUE(InstrProfError::take(RawProfileReaderOrErr.takeError()) ==
instrprof_error::unrecognized_format);
auto IndexedProfile = WritableMemoryBuffer::getNewUninitMemBuffer(LargeSize);
if (!IndexedProfile)
- return;
+ GTEST_SKIP();
auto IndexedReaderOrErr =
IndexedInstrProfReader::create(std::move(IndexedProfile), nullptr);
ASSERT_TRUE(InstrProfError::take(IndexedReaderOrErr.takeError()) ==
size_t TestSize = (size_t)UINT32_MAX + 42;
uint8_t *TestData = (uint8_t*)calloc(TestSize, 1);
if (!TestData)
- return;
+ GTEST_SKIP();
// Test expectation generated with:
// $ truncate --size=`echo 2^32-1+42 | bc` /tmp/foo
do { \
if ((Flags & Memory::MF_WRITE) && (Flags & Memory::MF_EXEC) && \
IsMPROTECT()) \
- return; \
+ GTEST_SKIP(); \
} while (0)
TEST_P(MappedMemoryTest, AllocAndRelease) {
// This test applies only to readable and writeable combinations
if (Flags &&
!((Flags & Memory::MF_READ) && (Flags & Memory::MF_WRITE)))
- return;
+ GTEST_SKIP();
CHECK_UNSUPPORTED();
std::error_code EC;
// This test applies only to readable and writeable combinations
if (Flags &&
!((Flags & Memory::MF_READ) && (Flags & Memory::MF_WRITE)))
- return;
+ GTEST_SKIP();
CHECK_UNSUPPORTED();
std::error_code EC;
// MPROTECT prevents W+X, and since this test always adds W we need
// to block any variant with X.
if ((Flags & Memory::MF_EXEC) && IsMPROTECT())
- return;
+ GTEST_SKIP();
std::error_code EC;
MemoryBlock M1 = Memory::allocateMappedMemory(2 * sizeof(int), nullptr, Flags,
// Don't run the test if we have nothing to compare against.
struct passwd *pw = getpwuid(getuid());
- if (!pw || !pw->pw_dir) return;
+ if (!pw || !pw->pw_dir)
+ GTEST_SKIP();
std::string PwDir = pw->pw_dir;
SmallString<128> HomeDir;
// might block a thread until all tasks in group1 finish.
ThreadPoolStrategy S = hardware_concurrency(2);
if (S.compute_thread_count() < 2)
- return;
+ GTEST_SKIP();
ThreadPool Pool(S);
PhaseResetHelper Helper(this);
ThreadPoolTaskGroup Group1(Pool);
CHECK_UNSUPPORTED();
ThreadPoolStrategy S = hardware_concurrency(2);
if (S.compute_thread_count() < 2)
- return;
+ GTEST_SKIP();
ThreadPool Pool(S);
PhaseResetHelper Helper(this);
ThreadPoolTaskGroup Group(Pool);
// We cannot relibly ensure that all thread affinity mask are covered,
// therefore this test should not run.
if (llvm::RunningWindows11OrGreater())
- return;
+ GTEST_SKIP();
std::vector<llvm::BitVector> ThreadsUsed = RunOnAllSockets({});
ASSERT_EQ(llvm::get_cpus(), ThreadsUsed.size());
}
// We cannot relibly ensure that all thread affinity mask are covered,
// therefore this test should not run.
if (llvm::RunningWindows11OrGreater())
- return;
+ GTEST_SKIP();
std::vector<llvm::BitVector> ThreadsUsed =
RunOnAllSockets(llvm::heavyweight_hardware_concurrency());
ASSERT_EQ(llvm::get_cpus(), ThreadsUsed.size());
TEST(AMDGPU, ExecMayBeModifiedBeforeAnyUse) {
auto TM = createAMDGPUTargetMachine("amdgcn-amd-", "gfx906", "");
if (!TM)
- return;
+ GTEST_SKIP();
GCNSubtarget ST(TM->getTargetTriple(), std::string(TM->getTargetCPU()),
std::string(TM->getTargetFeatureString()), *TM);
const Target *T = TargetRegistry::lookupTarget(TT, Error);
if (!T) {
dbgs() << Error;
- return;
+ GTEST_SKIP();
}
TargetOptions Options;
const Target *T = TargetRegistry::lookupTarget(TT, Error);
if (!T) {
dbgs() << Error;
- return;
+ GTEST_SKIP();
}
TargetOptions Options;
const Target *T = TargetRegistry::lookupTarget(TT, Error);
if (!T) {
dbgs() << Error;
- return;
+ GTEST_SKIP();
}
TargetOptions Options;
const Target *T = TargetRegistry::lookupTarget(TT, Error);
if (!T) {
dbgs() << Error;
- return;
+ GTEST_SKIP();
}
TargetOptions Options;
const Target *T = TargetRegistry::lookupTarget(TT, Error);
if (!T) {
dbgs() << Error;
- return;
+ GTEST_SKIP();
}
TargetOptions Options;
const Target *T = TargetRegistry::lookupTarget(TT, Error);
if (!T) {
dbgs() << Error;
- return;
+ GTEST_SKIP();
}
TargetOptions Options;
const Target *T = TargetRegistry::lookupTarget(TT, Error);
if (!T) {
dbgs() << Error;
- return;
+ GTEST_SKIP();
}
TargetOptions Options;
TEST_F(BasicX86FileAnalysisTest, BasicDisassemblyTraversalTest) {
if (!SuccessfullyInitialised)
- return;
+ GTEST_SKIP();
Analysis.parseSectionContents(
{
0x90, // 0: nop
TEST_F(BasicX86FileAnalysisTest, PrevAndNextFromBadInst) {
if (!SuccessfullyInitialised)
- return;
+ GTEST_SKIP();
Analysis.parseSectionContents(
{
0x90, // 0: nop
TEST_F(BasicX86FileAnalysisTest, CFITrapTest) {
if (!SuccessfullyInitialised)
- return;
+ GTEST_SKIP();
Analysis.parseSectionContents(
{
0x90, // 0: nop
TEST_F(BasicX86FileAnalysisTest, FallThroughTest) {
if (!SuccessfullyInitialised)
- return;
+ GTEST_SKIP();
Analysis.parseSectionContents(
{
0x90, // 0: nop
TEST_F(BasicX86FileAnalysisTest, DefiniteNextInstructionTest) {
if (!SuccessfullyInitialised)
- return;
+ GTEST_SKIP();
Analysis.parseSectionContents(
{
0x90, // 0: nop
TEST_F(BasicX86FileAnalysisTest, ControlFlowXRefsTest) {
if (!SuccessfullyInitialised)
- return;
+ GTEST_SKIP();
Analysis.parseSectionContents(
{
0x90, // 0: nop
TEST_F(BasicX86FileAnalysisTest, CFIProtectionInvalidTargets) {
if (!SuccessfullyInitialised)
- return;
+ GTEST_SKIP();
Analysis.parseSectionContents(
{
0x90, // 0: nop
TEST_F(BasicX86FileAnalysisTest, CFIProtectionBasicFallthroughToUd2) {
if (!SuccessfullyInitialised)
- return;
+ GTEST_SKIP();
Analysis.parseSectionContents(
{
0x75, 0x02, // 0: jne 4 [+2]
TEST_F(BasicX86FileAnalysisTest, CFIProtectionBasicJumpToUd2) {
if (!SuccessfullyInitialised)
- return;
+ GTEST_SKIP();
Analysis.parseSectionContents(
{
0x75, 0x02, // 0: jne 4 [+2]
TEST_F(BasicX86FileAnalysisTest, CFIProtectionDualPathUd2) {
if (!SuccessfullyInitialised)
- return;
+ GTEST_SKIP();
Analysis.parseSectionContents(
{
0x75, 0x03, // 0: jne 5 [+3]
TEST_F(BasicX86FileAnalysisTest, CFIProtectionDualPathSingleUd2) {
if (!SuccessfullyInitialised)
- return;
+ GTEST_SKIP();
Analysis.parseSectionContents(
{
0x75, 0x05, // 0: jne 7 [+5]
TEST_F(BasicX86FileAnalysisTest, CFIProtectionDualFailLimitUpwards) {
if (!SuccessfullyInitialised)
- return;
+ GTEST_SKIP();
Analysis.parseSectionContents(
{
0x75, 0x06, // 0: jne 8 [+6]
TEST_F(BasicX86FileAnalysisTest, CFIProtectionDualFailLimitDownwards) {
if (!SuccessfullyInitialised)
- return;
+ GTEST_SKIP();
Analysis.parseSectionContents(
{
0x75, 0x02, // 0: jne 4 [+2]
TEST_F(BasicX86FileAnalysisTest, CFIProtectionGoodAndBadPaths) {
if (!SuccessfullyInitialised)
- return;
+ GTEST_SKIP();
Analysis.parseSectionContents(
{
0xeb, 0x02, // 0: jmp 4 [+2]
TEST_F(BasicX86FileAnalysisTest, CFIProtectionWithUnconditionalJumpInFallthrough) {
if (!SuccessfullyInitialised)
- return;
+ GTEST_SKIP();
Analysis.parseSectionContents(
{
0x75, 0x04, // 0: jne 6 [+4]
TEST_F(BasicX86FileAnalysisTest, CFIProtectionComplexExample) {
if (!SuccessfullyInitialised)
- return;
+ GTEST_SKIP();
// See unittests/GraphBuilder.cpp::BuildFlowGraphComplexExample for this
// graph.
Analysis.parseSectionContents(
TEST_F(BasicX86FileAnalysisTest, CFIProtectionClobberSinglePathExplicit) {
if (!SuccessfullyInitialised)
- return;
+ GTEST_SKIP();
Analysis.parseSectionContents(
{
0x75, 0x02, // 0: jne 4 [+2]
TEST_F(BasicX86FileAnalysisTest, CFIProtectionClobberSinglePathExplicit2) {
if (!SuccessfullyInitialised)
- return;
+ GTEST_SKIP();
Analysis.parseSectionContents(
{
0x75, 0x02, // 0: jne 4 [+2]
TEST_F(BasicX86FileAnalysisTest, CFIProtectionClobberSinglePathImplicit) {
if (!SuccessfullyInitialised)
- return;
+ GTEST_SKIP();
Analysis.parseSectionContents(
{
0x75, 0x02, // 0: jne 4 [+2]
TEST_F(BasicX86FileAnalysisTest, CFIProtectionClobberDualPathImplicit) {
if (!SuccessfullyInitialised)
- return;
+ GTEST_SKIP();
Analysis.parseSectionContents(
{
0x75, 0x04, // 0: jne 6 [+4]
TEST_F(BasicAArch64FileAnalysisTest, AArch64BasicUnprotected) {
if (!SuccessfullyInitialised)
- return;
+ GTEST_SKIP();
Analysis.parseSectionContents(
{
0x00, 0x01, 0x3f, 0xd6, // 0: blr x8
TEST_F(BasicAArch64FileAnalysisTest, AArch64BasicProtected) {
if (!SuccessfullyInitialised)
- return;
+ GTEST_SKIP();
Analysis.parseSectionContents(
{
0x49, 0x00, 0x00, 0x54, // 0: b.ls 8
TEST_F(BasicAArch64FileAnalysisTest, AArch64ClobberBasic) {
if (!SuccessfullyInitialised)
- return;
+ GTEST_SKIP();
Analysis.parseSectionContents(
{
0x49, 0x00, 0x00, 0x54, // 0: b.ls 8
TEST_F(BasicAArch64FileAnalysisTest, AArch64ClobberOneLoad) {
if (!SuccessfullyInitialised)
- return;
+ GTEST_SKIP();
Analysis.parseSectionContents(
{
0x49, 0x00, 0x00, 0x54, // 0: b.ls 8
TEST_F(BasicAArch64FileAnalysisTest, AArch64ClobberLoadAddGood) {
if (!SuccessfullyInitialised)
- return;
+ GTEST_SKIP();
Analysis.parseSectionContents(
{
0x49, 0x00, 0x00, 0x54, // 0: b.ls 8
TEST_F(BasicAArch64FileAnalysisTest, AArch64ClobberLoadAddBad) {
if (!SuccessfullyInitialised)
- return;
+ GTEST_SKIP();
Analysis.parseSectionContents(
{
0x49, 0x00, 0x00, 0x54, // 0: b.ls 8
TEST_F(BasicAArch64FileAnalysisTest, AArch64ClobberLoadAddBad2) {
if (!SuccessfullyInitialised)
- return;
+ GTEST_SKIP();
Analysis.parseSectionContents(
{
0x49, 0x00, 0x00, 0x54, // 0: b.ls 8
TEST_F(BasicAArch64FileAnalysisTest, AArch64ClobberTwoLoads) {
if (!SuccessfullyInitialised)
- return;
+ GTEST_SKIP();
Analysis.parseSectionContents(
{
0x49, 0x00, 0x00, 0x54, // 0: b.ls 8
TEST_F(BasicAArch64FileAnalysisTest, AArch64ClobberUnrelatedSecondLoad) {
if (!SuccessfullyInitialised)
- return;
+ GTEST_SKIP();
Analysis.parseSectionContents(
{
0x49, 0x00, 0x00, 0x54, // 0: b.ls 8
TEST_F(BasicAArch64FileAnalysisTest, AArch64ClobberUnrelatedLoads) {
if (!SuccessfullyInitialised)
- return;
+ GTEST_SKIP();
Analysis.parseSectionContents(
{
0x49, 0x00, 0x00, 0x54, // 0: b.ls 8
TEST_F(BasicAArch64FileAnalysisTest, AArch64GoodAndBadPaths) {
if (!SuccessfullyInitialised)
- return;
+ GTEST_SKIP();
Analysis.parseSectionContents(
{
0x03, 0x00, 0x00, 0x14, // 0: b 12
TEST_F(BasicAArch64FileAnalysisTest, AArch64TwoPaths) {
if (!SuccessfullyInitialised)
- return;
+ GTEST_SKIP();
Analysis.parseSectionContents(
{
0xc9, 0x00, 0x00, 0x54, // 0: b.ls 24
TEST_F(BasicAArch64FileAnalysisTest, AArch64TwoPathsBadLoad1) {
if (!SuccessfullyInitialised)
- return;
+ GTEST_SKIP();
Analysis.parseSectionContents(
{
0xe9, 0x00, 0x00, 0x54, // 0: b.ls 28
TEST_F(BasicAArch64FileAnalysisTest, AArch64TwoPathsBadLoad2) {
if (!SuccessfullyInitialised)
- return;
+ GTEST_SKIP();
Analysis.parseSectionContents(
{
0xe9, 0x00, 0x00, 0x54, // 0: b.ls 28
TEST_F(BasicGraphBuilderTest, BuildFlowGraphTestSinglePathFallthroughUd2) {
if (!SuccessfullyInitialised)
- return;
+ GTEST_SKIP();
Analysis.parseSectionContents(
{
0x75, 0x02, // 0: jne 4 [+2]
TEST_F(BasicGraphBuilderTest, BuildFlowGraphTestSinglePathJumpUd2) {
if (!SuccessfullyInitialised)
- return;
+ GTEST_SKIP();
Analysis.parseSectionContents(
{
0x75, 0x02, // 0: jne 4 [+2]
TEST_F(BasicGraphBuilderTest, BuildFlowGraphTestDualPathDualUd2) {
if (!SuccessfullyInitialised)
- return;
+ GTEST_SKIP();
Analysis.parseSectionContents(
{
0x75, 0x03, // 0: jne 5 [+3]
TEST_F(BasicGraphBuilderTest, BuildFlowGraphTestDualPathSingleUd2) {
if (!SuccessfullyInitialised)
- return;
+ GTEST_SKIP();
Analysis.parseSectionContents(
{
0x75, 0x05, // 0: jne 7 [+5]
TEST_F(BasicGraphBuilderTest, BuildFlowGraphFailures) {
if (!SuccessfullyInitialised)
- return;
+ GTEST_SKIP();
Analysis.parseSectionContents(
{
0x90, // 0: nop
TEST_F(BasicGraphBuilderTest, BuildFlowGraphNoXrefs) {
if (!SuccessfullyInitialised)
- return;
+ GTEST_SKIP();
Analysis.parseSectionContents(
{
0xeb, 0xfe, // 0: jmp 0 [-2]
TEST_F(BasicGraphBuilderTest, BuildFlowGraphConditionalInfiniteLoop) {
if (!SuccessfullyInitialised)
- return;
+ GTEST_SKIP();
Analysis.parseSectionContents(
{
0x75, 0xfe, // 0: jne 0 [-2]
TEST_F(BasicGraphBuilderTest, BuildFlowGraphUnconditionalInfiniteLoop) {
if (!SuccessfullyInitialised)
- return;
+ GTEST_SKIP();
Analysis.parseSectionContents(
{
0x75, 0x02, // 0: jne 4 [+2]
TEST_F(BasicGraphBuilderTest, BuildFlowGraphNoFlowsToIndirection) {
if (!SuccessfullyInitialised)
- return;
+ GTEST_SKIP();
Analysis.parseSectionContents(
{
0x75, 0x00, // 0: jne 2 [+0]
TEST_F(BasicGraphBuilderTest, BuildFlowGraphLengthExceededUpwards) {
if (!SuccessfullyInitialised)
- return;
+ GTEST_SKIP();
Analysis.parseSectionContents(
{
0x75, 0x06, // 0: jne 8 [+6]
TEST_F(BasicGraphBuilderTest, BuildFlowGraphLengthExceededDownwards) {
if (!SuccessfullyInitialised)
- return;
+ GTEST_SKIP();
Analysis.parseSectionContents(
{
0x75, 0x02, // 0: jne 4 [+2]
// should only need to be generated once.
TEST_F(BasicGraphBuilderTest, BuildFlowGraphWithRepeatedWork) {
if (!SuccessfullyInitialised)
- return;
+ GTEST_SKIP();
Analysis.parseSectionContents(
{
0x75, 0x05, // 0: jne 7 [+5]
TEST_F(BasicGraphBuilderTest, BuildFlowGraphComplexExample) {
if (!SuccessfullyInitialised)
- return;
+ GTEST_SKIP();
// The following code has this graph:
// +----------+ +--------------+
// | 20 | <--- | 0 |