On 8/3/23 16:15, Jeff Law wrote:
On 8/3/23 16:26, Vineet Gupta wrote:
As discussed in Tue call, I definitely have 1 fix to riscv_rtx_costs
(), which is worth pondering. It adjusts the cost of consts and helps
Hoist GCSE constants (which granted kicks in only at -Os). However it
does affect codegen in subtle ways since CSE1 now for some cases
generates additional REG_EQUAL note.
Yea, we'll definitely want to take a look. It's not likely affecting
my work, but definitely want to evaluate as part of the overall
costing question.
OK, I'll spin it and post to the list after a testsuite run.
On a different but slightly related note, I was playing with Zicond
this morning (enabling by default in toolchain build and qemu) and I
was surprised to see that glibc build currently doesn't have a single
czero* insn - although gcc has bene configured with
Probably costing ;-) That little hunk that snuck through is part of
how I arrange to get more czero instructions when running the GCC
testsuite.
Also note that if you're disassembling with binutils, I think it just
dumps it out as a .word or something similar.
Yeah something was off, I was building /using the latest binutils but
then my fancy over-engineered objdump helper was pointing to an a
non-zicond binutils :-)
Point being, I can help with riscv_rtx_costs and friends, if you have
something specific, but seems like you are in the thick of it and
have that handled so I'll stay out of the way and refrain from zicond
work/testing for the time being.
;-) Actually if you wanted to poke at zicond, the most interesting
unexplored area I've come across is the COND_EXPR handling in gimple.
When we expand a COND_EXPR into RTL the first approach we take is to
try mov<mode>cc in RTL.
Unfortunately we don't create COND_EXPRs all that often in gimple.
Some simple match.pd patterns would likely really help here.
The problem is RTL expansion when mov<mode>cc FAILs is usually poor at
best. So if we're going to add those match.pd patterns, we probably
need to beef up the RTL expansion code to do a better job when the
target doesn't have a mov<mode>cc RTL pattern.
Ok, I'll add that to my todo list.
Thx,
-Vineet