def iaca_analysis(self, micro_architecture, asm_block='<STR_LIT>',<EOL>pointer_increment='<STR_LIT>', verbose=False):
asm_filename = self.compile_kernel(assembly=True, verbose=verbose)<EOL>asm_marked_filename = os.path.splitext(asm_filename)[<NUM_LIT:0>]+'<STR_LIT>'<EOL>with open(asm_filename, '<STR_LIT:r>') as in_file, open(asm_marked_filename, '<STR_LIT:w>') as out_file:<EOL><INDENT>self.asm_block = iaca.iaca_instrumentation(<EOL>in_file, out_file,<EOL>block_selection=asm_block,<EOL>pointer_increment=pointer_increment)<EOL><DEDENT>obj_name = self.assemble_to_object(asm_marked_filename, verbose=verbose)<EOL>return iaca.iaca_analyse_instrumented_binary(obj_name, micro_architecture), self.asm_block<EOL>
Run an IACA analysis and return its outcome.

*asm_block* controls how the to-be-marked block is chosen. "auto" (default) results in
the largest block, "manual" results in interactive and a number in the according block.

*pointer_increment* is the number of bytes the pointer is incremented after the loop or
   - 'auto': automatic detection, RuntimeError is raised in case of failure
   - 'auto_with_manual_fallback': automatic detection, fallback to manual input
   - 'manual': prompt user