I tend to keep quite a lot of notes on the development related (sometimes at work, sometimes not) I do on a week-by-week basis, and thought it might be fun to write up the parts that were public. This may or may not be of wider interest, but it aims to be a useful aide-mémoire for my purposes at least. Weeks with few entries might be due to focusing on downstream work (or perhaps just a less productive week - I am only human!).
llvm-objdump (and related tools) when encountering
unrecognised RISC-V base or ISA extension versions, or unrecognised ISA
extension names.Zicond (integer conditional operations) extension
(D146946,
D147147). This is essentially the same
as the XVentanaCondOps extension.seq_cst atomic ops to
RISC-V lr/sc loops was slightly stronger than required by the mapping table
in the ISA manual. Specifically, sc.{w|d}.rl is sufficient rather than
sc.{w|d}.aqrl. Fixed with D146933.zfbfmin and zfa respectively)._Float16 lowering on RISC-V
(D142326,
D145074).z*inx[min] extensions.PseudoQuietFCMP.m constraint was
generating worse code on LLVM vs GCC, finding that LLVM conservatively
lowers this to a single register, while GCC treats m as reg+imm, relying
on users indicating A when using a memory operand with an instruction that
can't take an immediate offset. Worked with a colleague who posted
D146245 to fix this.-Oz, bisecting it to
the commit that enabled machine copy propagation by default. I found the
issue was due to machine copy propagation running after the machine
outliner, and incorrectly determining that some register writes in outlined
functions were not live-out. I posted and
landed D146037 to fix this by running
machine copy propagation earlier in the pipeline, though a more principled
fix would be desirable.*inx twin.RISCVISAInfo test
coverage and fix an issue that surfaced through that.parseNormalizedArchString function I introduced to fix a similar issue
in LLD. This built on some directly committed work to expand
testing.-fexceptions in follow-up to
discussion in issue
61216._Float16 ABI
lowering fixes, GP relaxation in LLD, my recent RISC-V buildbot, and some
vectorisation related issues._Float16 for RISC-V. Primarily, we weren't handling the cases where a
GPR+FPR or a pair of FPRs are used to pass small structs including
_Float16.
update_cc_test_check.py --function-signature (required for the refactor)
landed as part of D144963, this can
hopefully be completed._Float16 ABI lowering, and
D145074 to fix it. Also
D145071 to set the HasLegalHalfType
property, but the semantics of that are less clear.__bf16, needed for the RISC-V bfloat16 extension.traverse() helper in mistletoe
where merged upstream, I
removed
my downstream version.___pthread_mutex_lock when executing
ccache. Setting inode_cache=false in the local ccache config seems
to avoid this.Zicclsm
terminology introduced in the RISC-V profiles.