Support for the macro fusion of simple ALU ops with branches for the Vulcan sub-target.
Patch by Meador Inge
Differential D22042
[AArch64] Macro fusion of simple ALU ops with branches for Broadcom's Vulcan pgode on Jul 6 2016, 6:31 AM. Authored by
Details Support for the macro fusion of simple ALU ops with branches for the Vulcan sub-target. Patch by Meador Inge
Diff Detail
Event Timeline
Comment Actions Redo the patch please and add llvm-commits as a subscriber before you
Comment Actions The approach of adding a new sub-feature for Macro-op fusion, by categorizing the instructions (my presumption) doesn't seem a good option. It will end up adding too many subfeature such as FeatureMacroOpFusionArith/FeatureMacroOpFusionLogical. Please correct me. I approached the table-gen option of adding instruction property, similar to adding CheapAsAMov property. In MCID(MCInstrDesc) Flags, there are already 32 flags, 'new flag MacroOpFusable' becomes the 33rd flag. Though Flags is 'uint64_t', still I see a warning message 'left shift count >= width of type'. I am thinking of submitting a 'new diff' on this review by just enabling 'FeatureMacroOpFusion' (AArch64.td file modification) for Vulcan and let only ADDS, SUBS, ANDS get fused (default Subtarget feature behavior) and work on table-gen part for complete solution. Please suggest. Comment Actions Hum, that's not good. We'll have to think about many of them, if we can turn them into properties, rather than features. There were some that could, maybe we need a larger re-factor than I was expecting.
I think you're right. This is the pragmatic approach and will give us time to work out a better way forward. Thanks! Comment Actions Updated diff. Comment Actions Right, that looks good, thanks! test/CodeGen/AArch64/misched-fusion.ll is already testing the flag itself, so we don't need additional tests. cheers, |