Ejemplo n.º 1
0
    def test_empty_function_at_file_end(self):
        output = '''
    .directive
function_name:
'''

        self.assertEqual([AsmFunction('function_name')],
                         parse_compiler_asm_output(output))
Ejemplo n.º 2
0
    def test_function_with_trash_after_name(self):
        output = '''
function_name: @ some characters
    insn
'''

        expected = [
            AsmFunction('function_name', ['insn']),
        ]
        self.assertEqual(expected, parse_compiler_asm_output(output))
Ejemplo n.º 3
0
    def test_function_with_directive(self):
        output = '''
function_name:
    .directive
'''

        expected = [
            AsmFunction('function_name'),
        ]
        self.assertEqual(expected, parse_compiler_asm_output(output))
Ejemplo n.º 4
0
    def test_empty_function(self):
        output = '''
function_name:
function_name2:
'''

        expected = [
            AsmFunction('function_name'),
            AsmFunction('function_name2'),
        ]
        self.assertEqual(expected, parse_compiler_asm_output(output))
Ejemplo n.º 5
0
    def test_function_with_instructions(self):
        output = '''
function_name:
    insn1
    insn2 param
    insn3 param param
'''

        expected = [
            AsmFunction('function_name', ['insn1', 'insn2', 'insn3']),
        ]
        self.assertEqual(expected, parse_compiler_asm_output(output))
Ejemplo n.º 6
0
    def test_no_function(self):
        output = '''
    .directive
    .directive
'''
        self.assertEqual([], parse_compiler_asm_output(output))

        output = '''
    .directive
    insn
    .directive
    insn
'''
        self.assertEqual([], parse_compiler_asm_output(output))

        output = '''
    .directive
    insn
directive_at_line_begin
    .directive
    insn
'''
        self.assertEqual([], parse_compiler_asm_output(output))
Ejemplo n.º 7
0
def parse_supported_capabilities(asm, capabilities):
    functions = parse_compiler_asm_output(asm)
    function_names = [f.name for f in functions]

    supported_capabilities = []

    for cap in capabilities:
        if 'has_{0}_cap'.format(cap) in function_names:
            supported_capabilities.append(cap)
        elif 'has_no_{0}_cap'.format(cap) in function_names:
            pass
        else:
            raise Exception('Unknown capability {0}'.format(cap))
    return supported_capabilities
Ejemplo n.º 8
0
def parse_test_insns(asm_output, test_list, baseline_test_list):
    # The result is stored to the insns member of each object in test_list
    functions = parse_compiler_asm_output(asm_output)

    for test in test_list + baseline_test_list:
        function_name = 'test_id_{0}_end'.format(test.ident)
        found_function = None
        for fun in functions:
            if function_name in fun.name:
                found_function = fun
                break
        if found_function is None:
            raise Exception('Could not find ident {0}'.format(test.ident))
        test.insns = InsnCount.from_insn_list(found_function.insns)

    # subtract baseline
    for i, (test, baseline_test) in \
            enumerate(zip(test_list, baseline_test_list)):

        test.insns.sub(baseline_test.insns)
        merge_equivalent_insns(test.insns)
Ejemplo n.º 9
0
 def test_empty(self):
     self.assertEqual([], parse_compiler_asm_output(''))
     self.assertEqual([], parse_compiler_asm_output('\n\n'))