Exemplo n.º 1
0
def test_autophase_crc32_feature_vector(env: CompilerEnv):
    env.benchmark = "cBench-v0/crc32"
    env.reset()
    features = env.observation["Autophase"]
    assert features[0] == 0  # BBNumArgsHi
    assert features[1] == 0  # BBNumArgsLo
    assert features[2] == 16  # onePred
    assert features[3] == 12  # onePredOneSuc
    assert features[4] == 2  # onePredTwoSuc
    assert features[5] == 16  # oneSuccessor
    assert features[6] == 8  # twoPred
    assert features[7] == 2  # twoPredOneSuc
    assert features[8] == 4  # twoEach
    assert features[9] == 8  # twoSuccessor
    assert features[10] == 0  # morePreds
    assert features[11] == 0  # BB03Phi
    assert features[12] == 0  # BBHiPhi
    assert features[13] == 29  # BBNoPhi
    assert features[14] == 0  # BeginPhi
    assert features[15] == 24  # BranchCount
    assert features[16] == 9  # returnInt
    assert features[17] == 2  # CriticalCount
    assert features[18] == 32  # NumEdges
    assert features[19] == 38  # const32Bit
    assert features[20] == 21  # const64Bit
    assert features[21] == 14  # numConstZeroes
    assert features[22] == 30  # numConstOnes
    assert features[23] == 16  # UncondBranches
    assert features[24] == 13  # binaryConstArg
    assert features[25] == 0  # NumAShrInst
    assert features[26] == 5  # NumAddInst
    assert features[27] == 24  # NumAllocaInst
    assert features[28] == 3  # NumAndInst
    assert features[29] == 3  # BlockMid
    assert features[30] == 26  # BlockLow
    assert features[31] == 0  # NumBitCastInst
    assert features[32] == 24  # NumBrInst
    assert features[33] == 13  # NumCallInst
    assert features[34] == 5  # NumGetElementPtrInst
    assert features[35] == 10  # NumICmpInst
    assert features[36] == 3  # NumLShrInst
    assert features[37] == 51  # NumLoadInst
    assert features[38] == 0  # NumMulInst
    assert features[39] == 1  # NumOrInst
    assert features[40] == 0  # NumPHIInst
    assert features[41] == 5  # NumRetInst
    assert features[42] == 0  # NumSExtInst
    assert features[43] == 0  # NumSelectInst
    assert features[44] == 0  # NumShlInst
    assert features[45] == 38  # NumStoreInst
    assert features[46] == 0  # NumSubInst
    assert features[47] == 1  # NumTruncInst
    assert features[48] == 8  # NumXorInst
    assert features[49] == 5  # NumZExtInst
    assert features[50] == 29  # TotalBlocks
    assert features[51] == 196  # TotalInsts
    assert features[52] == 131  # TotalMemInst
    assert features[53] == 13  # TotalFuncs
    assert features[54] == 0  # ArgsPhi
    assert features[55] == 81  # testUnary
Exemplo n.º 2
0
def test_reset_to_force_benchmark(env: CompilerEnv):
    """Reset that calling reset() with a benchmark forces that benchmark to
    be used for every subsequent episode.
    """
    env.benchmark = None
    env.reset(benchmark="benchmark://cBench-v0/crc32")
    assert env.benchmark == "benchmark://cBench-v0/crc32"
    for _ in range(10):
        env.reset()
        assert env.benchmark == "benchmark://cBench-v0/crc32"
Exemplo n.º 3
0
def test_unset_forced_benchmark(env: CompilerEnv):
    """Test that setting benchmark to None "unsets" the user benchmark for
    every subsequent episode.
    """
    env.reset(benchmark="benchmark://cBench-v0/crc32")
    assert env.benchmark == "benchmark://cBench-v0/crc32"
    env.benchmark = None
    for _ in range(50):
        env.reset()
        if env.benchmark != "benchmark://cBench-v0/crc32":
            break
    else:
        pytest.fail("Improbably selected the same benchmark 50 times! "
                    "Expected random.")