diff options
author | Steven Bosscher <steven@gcc.gnu.org> | 2012-07-31 18:24:40 +0000 |
---|---|---|
committer | Steven Bosscher <steven@gcc.gnu.org> | 2012-07-31 18:24:40 +0000 |
commit | ab6d55ef6209019d4268546aa030928b72f59b49 (patch) | |
tree | d4c1b9e1c166a450c3a93ea86fe2a4026d093df5 /gcc | |
parent | aa36f90b55f5f77036c6032f7f4de39fc88690c2 (diff) | |
download | gcc-ab6d55ef6209019d4268546aa030928b72f59b49.zip gcc-ab6d55ef6209019d4268546aa030928b72f59b49.tar.gz gcc-ab6d55ef6209019d4268546aa030928b72f59b49.tar.bz2 |
sched-vis.c (print_exp): Handle FMA explicitly.
* sched-vis.c (print_exp): Handle FMA explicitly. Simplify handling
of RTX_UNARY function-like operations. Print unknown expression
RTX classes as pseudo-functions.
(print_pattern): Simplify return pattern printing.
(dump_insn_slim): Print the value of notes as a pattern for proper
printing of CFA notes.
From-SVN: r190016
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/sched-vis.c | 89 |
2 files changed, 54 insertions, 44 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c2df9d3..968cc1c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2012-07-31 Steven Bosscher <steven@gcc.gnu.org> + + * sched-vis.c (print_exp): Handle FMA explicitly. Simplify handling + of RTX_UNARY function-like operations. Print unknown expression + RTX classes as pseudo-functions. + (print_pattern): Simplify return pattern printing. + (dump_insn_slim): Print the value of notes as a pattern for proper + printing of CFA notes. + 2012-07-31 Dehao Chen <dehao@google.com> * predict.c (tree_estimate_probability_driver): Normalize the diff --git a/gcc/sched-vis.c b/gcc/sched-vis.c index 7a07b3f..abd8344 100644 --- a/gcc/sched-vis.c +++ b/gcc/sched-vis.c @@ -114,6 +114,15 @@ print_exp (char *buf, const_rtx x, int verbose) st[0] = "-"; op[0] = XEXP (x, 0); break; + case FMA: + st[0] = "{"; + op[0] = XEXP (x, 0); + st[1] = "*"; + op[1] = XEXP (x, 1); + st[2] = "+"; + op[2] = XEXP (x, 2); + st[3] = "}"; + break; case MULT: op[0] = XEXP (x, 0); st[1] = "*"; @@ -203,46 +212,14 @@ print_exp (char *buf, const_rtx x, int verbose) st[1] = ">->"; op[1] = XEXP (x, 1); break; - case ABS: - fun = "abs"; - op[0] = XEXP (x, 0); - break; - case SQRT: - fun = "sqrt"; - op[0] = XEXP (x, 0); - break; - case FFS: - fun = "ffs"; - op[0] = XEXP (x, 0); - break; - case EQ: - op[0] = XEXP (x, 0); - st[1] = "=="; - op[1] = XEXP (x, 1); - break; case NE: op[0] = XEXP (x, 0); st[1] = "!="; op[1] = XEXP (x, 1); break; - case GT: - op[0] = XEXP (x, 0); - st[1] = ">"; - op[1] = XEXP (x, 1); - break; - case GTU: - fun = "gtu"; - op[0] = XEXP (x, 0); - op[1] = XEXP (x, 1); - break; - case LT: - op[0] = XEXP (x, 0); - st[1] = "<"; - op[1] = XEXP (x, 1); - break; - case LTU: - fun = "ltu"; + case EQ: op[0] = XEXP (x, 0); + st[1] = "=="; op[1] = XEXP (x, 1); break; case GE: @@ -250,9 +227,9 @@ print_exp (char *buf, const_rtx x, int verbose) st[1] = ">="; op[1] = XEXP (x, 1); break; - case GEU: - fun = "geu"; + case GT: op[0] = XEXP (x, 0); + st[1] = ">"; op[1] = XEXP (x, 1); break; case LE: @@ -260,9 +237,9 @@ print_exp (char *buf, const_rtx x, int verbose) st[1] = "<="; op[1] = XEXP (x, 1); break; - case LEU: - fun = "leu"; + case LT: op[0] = XEXP (x, 0); + st[1] = "<"; op[1] = XEXP (x, 1); break; case SIGN_EXTRACT: @@ -390,8 +367,33 @@ print_exp (char *buf, const_rtx x, int verbose) } break; default: - /* If (verbose) debug_rtx (x); */ - st[0] = GET_RTX_NAME (GET_CODE (x)); + { + /* Most unhandled codes can be printed as pseudo-functions. */ + if (GET_RTX_CLASS (GET_CODE (x)) == RTX_UNARY) + { + fun = GET_RTX_NAME (GET_CODE (x)); + op[0] = XEXP (x, 0); + } + else if (GET_RTX_CLASS (GET_CODE (x)) == RTX_COMPARE + || GET_RTX_CLASS (GET_CODE (x)) == RTX_COMM_COMPARE + || GET_RTX_CLASS (GET_CODE (x)) == RTX_BIN_ARITH + || GET_RTX_CLASS (GET_CODE (x)) == RTX_COMM_ARITH) + { + fun = GET_RTX_NAME (GET_CODE (x)); + op[0] = XEXP (x, 0); + op[1] = XEXP (x, 1); + } + else if (GET_RTX_CLASS (GET_CODE (x)) == RTX_TERNARY) + { + fun = GET_RTX_NAME (GET_CODE (x)); + op[0] = XEXP (x, 0); + op[1] = XEXP (x, 1); + op[2] = XEXP (x, 2); + } + else + /* Give up, just print the RTX name. */ + st[0] = GET_RTX_NAME (GET_CODE (x)); + } break; } @@ -559,10 +561,9 @@ print_pattern (char *buf, const_rtx x, int verbose) sprintf (buf, "%s=%s", t1, t2); break; case RETURN: - sprintf (buf, "return"); - break; case SIMPLE_RETURN: - sprintf (buf, "simple_return"); + case EH_RETURN: + sprintf (buf, GET_RTX_NAME (GET_CODE (x))); break; case CALL: print_exp (buf, x, verbose); @@ -774,7 +775,7 @@ dump_insn_slim (FILE *f, const_rtx x) for (note = REG_NOTES (x); note; note = XEXP (note, 1)) { fputs (print_rtx_head, f); - print_value (t, XEXP (note, 0), 1); + print_pattern (t, XEXP (note, 0), 1); fprintf (f, " %s: %s\n", GET_REG_NOTE_NAME (REG_NOTE_KIND (note)), t); } |