diff options
author | Kito Cheng <kito.cheng@sifive.com> | 2023-05-11 16:03:55 +0800 |
---|---|---|
committer | Kito Cheng <kito.cheng@sifive.com> | 2023-05-13 14:15:47 +0800 |
commit | ea7a9f361e71b0176ae7e6b6bdaaa95789cc7942 (patch) | |
tree | 34b8a18ab7d189e7b1673c623594c4327963c4a5 | |
parent | 99488a6048745a7b999c22f46e5814d02ebf88d9 (diff) | |
download | gcc-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.cc | 39 |
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 ()) |