aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Blanchard <antonb@tenstorrent.com>2025-01-14 22:11:13 -0700
committerJeff Law <jlaw@ventanamicro.com>2025-01-14 22:17:07 -0700
commitd6f1961e68092fda35ce064ef45d1dbec780c624 (patch)
tree25862e52c87f2fef39f8fb8fde680ba0922249ac
parentcab2e12362287bd50f9abdd7fb5a775138e02d1b (diff)
downloadgcc-d6f1961e68092fda35ce064ef45d1dbec780c624.zip
gcc-d6f1961e68092fda35ce064ef45d1dbec780c624.tar.gz
gcc-d6f1961e68092fda35ce064ef45d1dbec780c624.tar.bz2
[RISC-V][PR target/118170] Add HF div/sqrt reservation
Clearly an oversight in the generic-ooo model caught by the checking code. I should have realized it was generic-ooo as we don't have a pipeline description for the tenstorrent design yet, just the costing model. The patch was extracted from the BZ which indicated Anton was the author, so I kept that. I'm listed as co-author just in case someone wants to complain about the testcase in the future. I didn't do any notable lifting here. Thanks Peter and Anton! PR target/118170 gcc/ * config/riscv/generic-ooo.md (generic_ooo_float_div_half): New reservation. gcc/testsuite * gcc.target/riscv/pr118170.c: New test. Co-authored-by: Jeff Law <jlaw@ventanamicro.com>
-rw-r--r--gcc/config/riscv/generic-ooo.md6
-rw-r--r--gcc/testsuite/gcc.target/riscv/pr118170.c9
2 files changed, 15 insertions, 0 deletions
diff --git a/gcc/config/riscv/generic-ooo.md b/gcc/config/riscv/generic-ooo.md
index 6cf3463..ae9430e 100644
--- a/gcc/config/riscv/generic-ooo.md
+++ b/gcc/config/riscv/generic-ooo.md
@@ -145,6 +145,12 @@
"generic_ooo_issue,generic_ooo_fxu")
;; Assume float division and sqrt are not pipelined.
+(define_insn_reservation "generic_ooo_float_div_half" 10
+ (and (eq_attr "tune" "generic_ooo")
+ (and (eq_attr "type" "fdiv,fsqrt")
+ (eq_attr "mode" "HF")))
+ "generic_ooo_issue,generic_ooo_fxu,generic_ooo_div,generic_ooo_div*3")
+
(define_insn_reservation "generic_ooo_float_div_single" 12
(and (eq_attr "tune" "generic_ooo")
(and (eq_attr "type" "fdiv,fsqrt")
diff --git a/gcc/testsuite/gcc.target/riscv/pr118170.c b/gcc/testsuite/gcc.target/riscv/pr118170.c
new file mode 100644
index 0000000..306ff88
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/pr118170.c
@@ -0,0 +1,9 @@
+/* { dg-do "compile" } */
+/* { dg-options "-O2 -mcpu=tt-ascalon-d8" } */
+_Float16 f;
+
+void
+foo ()
+{
+ f /= 3;
+}