Does anyone know about how the FRV port does the VLIW pack?

mike@csdn.sign.idv.tw mike@csdn.sign.idv.tw
Tue Jun 1 10:03:00 GMT 2004


Hello,

    After I have studied the FRV gcc port, here is my guess about how
    the FRV port packs the vliw pack.

    The function "frv_function_prologue" does the vliw packing by
    calling frv_pack_insns() and sets the static variable
    "frv_insn_packing_flag" to TRUE.  

    The function "frv_pack_insn()" invoked by "frv_function_prologue"
    rescans the insn chain and does the vliw packing.

    Because frv_function_prologue is invoked at the begining of a
    function, VLIW packing is done at every begining of a function.

    And when outputing the insn code (asm code), the function
    "frv_asm_output_opcode" adds assembler insn code suffix .p according
    to the MACRO "PACKING_FLAG_USED_P()" which is defined as the
    following code:
    (optimize && flag_schedule_insns_after_reload && ISSUE_RATE > 1)

    and the static variable "frv_insn_packing_flag".
    

    The function "frv_final_prescan_insn" controls the static variable
    "frv_insn_packing_flag" and sets it to TRUE or FALSE according to
    the insn with TImode set by frv_pack_insn().

    Am I right? Thanks.

Mike Wu
    



More information about the Gcc mailing list