On Thu, Mar 09, 2017 at 06:22:33AM +0000, Hurugalawadi, Naveen wrote: > Hi James, > > Thanks for the review and your comments. > > >> I'd need more detail on what types of instruction pairs you > >> are trying to fuse. > > The documentation mentions it as follows:- > Single uop ALU instruction may fuse with adjacent branch instruction in the > same bundle > > >> This comment looks incorrect - there is no vulcan_alu_basic reservation > > Modified as per comment. > > Please let us know if the description is sufficient?
My reason for asking is that the instruction fusion implemented in LLVM ( lib/Target/AArch64/AArch64MacroFusion.cpp::shouldScheduleAdjacent ) is between ALU instructions and conditional branches, while this patch fuses ALU instructions and unconditional branches. I'm trying to understand why there is a discrepancy, and consequently whether this patch is correct. Your clarification helps, but it would be useful to know which sort of branches you are actually targeting and to fix the disagreement between this patch and LLVM. Thanks, James