aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKito Cheng <kito.cheng@sifive.com>2023-05-11 16:03:55 +0800
committerKito Cheng <kito.cheng@sifive.com>2023-05-13 14:15:47 +0800
commitea7a9f361e71b0176ae7e6b6bdaaa95789cc7942 (patch)
tree34b8a18ab7d189e7b1673c623594c4327963c4a5
parent99488a6048745a7b999c22f46e5814d02ebf88d9 (diff)
downloadgcc-ea7a9f361e71b0176ae7e6b6bdaaa95789cc7942.zip
gcc-ea7a9f361e71b0176ae7e6b6bdaaa95789cc7942.tar.gz
gcc-ea7a9f361e71b0176ae7e6b6bdaaa95789cc7942.tar.bz2
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.
-rw-r--r--gcc/config/riscv/riscv-vsetvl.cc39
1 files changed, 36 insertions, 3 deletions
diff --git a/gcc/config/riscv/riscv-vsetvl.cc b/gcc/config/riscv/riscv-vsetvl.cc
index f1c47e8..5c4b349 100644
--- a/gcc/config/riscv/riscv-vsetvl.cc
+++ b/gcc/config/riscv/riscv-vsetvl.cc
@@ -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 ())