RISC-V: Improve vector_insn_info::dump for LMUL and policy

Convert vlmul and policy to human readable string, some example below:

Before:
[VALID,Demand field={1(VL),0(DEMAND_NONZERO_AVL),1(SEW),0(DEMAND_GE_SEW),1(LMUL),0(RATIO),0(TAIL_POLICY),0(MASK_POLICY)}
AVL=(reg:DI 0 zero)
SEW=16,VLMUL=3,RATIO=2,TAIL_POLICY=1,MASK_POLICY=1]
             ^                     ^             ^

After:
[VALID,Demand field={1(VL),0(DEMAND_NONZERO_AVL),1(SEW),0(DEMAND_GE_SEW),1(LMUL),0(RATIO),0(TAIL_POLICY),0(MASK_POLICY)}
AVL=(reg:DI 0 zero)
SEW=16,VLMUL=m8,RATIO=2,TAIL_POLICY=agnostic,MASK_POLICY=agnostic]
             ^^                     ^^^^^^^^             ^^^^^^^^

gcc/ChangeLog:

	* config/riscv/riscv-vsetvl.cc (vlmul_to_str): New.
	(policy_to_str): New.
	(vector_insn_info::dump): Use vlmul_to_str and policy_to_str.
This commit is contained in:
Kito Cheng 2023-05-11 16:03:55 +08:00
parent 99488a6048
commit ea7a9f361e

View file

@ -2241,6 +2241,39 @@ vector_insn_info::update_fault_first_load_avl (insn_info *insn)
return false;
}
static const char *
vlmul_to_str (vlmul_type vlmul)
{
switch (vlmul)
{
case LMUL_1:
return "m1";
case LMUL_2:
return "m2";
case LMUL_4:
return "m4";
case LMUL_8:
return "m8";
case LMUL_RESERVED:
return "INVALID LMUL";
case LMUL_F8:
return "mf8";
case LMUL_F4:
return "mf4";
case LMUL_F2:
return "mf2";
default:
gcc_unreachable ();
}
}
static const char *
policy_to_str (bool agnostic_p)
{
return agnostic_p ? "agnostic" : "undisturbed";
}
void
vector_insn_info::dump (FILE *file) const
{
@ -2272,10 +2305,10 @@ vector_insn_info::dump (FILE *file) const
fprintf (file, "AVL=");
print_rtl_single (file, get_avl ());
fprintf (file, "SEW=%d,", get_sew ());
fprintf (file, "VLMUL=%d,", get_vlmul ());
fprintf (file, "VLMUL=%s,", vlmul_to_str (get_vlmul ()));
fprintf (file, "RATIO=%d,", get_ratio ());
fprintf (file, "TAIL_POLICY=%d,", get_ta ());
fprintf (file, "MASK_POLICY=%d", get_ma ());
fprintf (file, "TAIL_POLICY=%s,", policy_to_str (get_ta ()));
fprintf (file, "MASK_POLICY=%s", policy_to_str (get_ma ()));
fprintf (file, "]\n");
if (valid_p ())