[LLVMdev] Combining physical registers

Krzysztof Parzyszek kparzysz at codeaurora.org
Thu May 16 09:35:21 PDT 2013


On 5/16/2013 11:17 AM, Jakob Stoklund Olesen wrote:
>
> Would this TRI function solve your problem?
>[...]
>    ///
>    ///   Covering = getCoveringLanes();
>    ///   MaskA = getSubRegIndexLaneMask(SubA);
>    ///   MaskB = getSubRegIndexLaneMask(SubB);
>    ///
>    /// If (MaskA & ~(MaskB & Covering)) == 0, then SubA is completely covered by
>    /// SubB.
>    unsigned getCoveringLanes() const { return CoveringLanes; }

Yes, this would solve my problem.  I'm assuming that if I have 
subregisters Sub0..SubN (where Sub0 could be 0, i.e. the register 
itself), and corresponding masks Mask0..MaskN, and
   Mask0 & ~((Mask1|Mask2|..|MaskN) & Covering) == 0,
this will imply that the subregisters Sub1..SubN cover Sub0.

Thanks,
-Krzysztof


-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, 
hosted by The Linux Foundation



More information about the llvm-dev mailing list