Office Hours Agenda Items
Feel free to drop in any agenda items for the monthly office hours.
Dec:
- vmvXr situation
- GCC is just treating this as a bug and has already been fixed
- Codegen impacts are expected to be trivial, requires vector regs to be live across calls to trigger which doesn't happen with the default ABI.
- LLVM is still deciding what to do
- May also be clarified at the ABI level
- gcc-15 development window closed
- Most of Robin & my work has been submitted and is working it way through reviews
- Mariam (RAU)'s CRC work had been submitted well in advance, bulk of work is in
- LLVM
- Separate shrink wrapping integrated upstream
- Stack clash protection being updated in response to Craig's feedback
- glibc:
- I still need to start pushing the mem* and str* patches
- BPI quirks
- Process hangs have been seen by others (golang project in particular), it's been reported and is in both the golang bug tracker and a spacemit tracker
- Rebuilt kernel (6.6.XX) with a modern GCC (Ventana's internal release, so gcc-14 + improvements) and I haven't seen a hang since!
Nov:
- What to do about the vmvXr situation
- Does it depend on vtype or not?
- If it does, then that implies we'll need a vsetvl at the start of each function with vector code
- Unclear at this point
- GCC 15 development window closing rapidly, will transition into bugfixing mode in ~2wks
- Key is that any new development must be posted for review by the deadline (Nov 17 IIRC)
- Robin and I have various internal patches to submit, mostly around vector performance for x264
- Patches already submitted have already met the deadline and are thus eligible for inclusion even if they're going through revisions
- Nov & December will be "general bugfixing", so any bug in bugzilla is eligible for fixing, though we reserve the right to reject things that are too risky or gaming the system
- Sometime in Jan we transition to regression fixes only
- LLVM
- Misha's separate shrinking wrapping posted upstream for review (I think). Should notably help 500.perlbench and 502.gcc
- Stack clash work is done, but engineer is engaged on other stuff right now
- Notable work that should be landing shortly
- ifunc'd mem* and str*. Andreas S. ACK'd memset with a minor fix, so I'll be submitting the rest shortly
- Based on work from SiFive and Rivos engineers
- My involvement is just the ifunc wiring
- CRC optimization needs minor fixes
- One chunk of generic code is goofy and apparently causes regressions for risc-v when fixed
- Looks like we need a way to check for zbkb dynamically in dejagnu harness. Probably zbc as well
- Function multi-versioning for GCC
- Various minor changes to improve vector codegen, scheduling, etc.
- ifunc'd mem* and str*. Andreas S. ACK'd memset with a minor fix, so I'll be submitting the rest shortly
- PSAs. BPI F3 in my tester, bootstrap & regression test every 2-3 days
- Right now it's always the same config, but considering alternating -march switch testing to broaden coverage (zvl)
- Experiencing process hangs, which look like kernel issues
Aug:
- Reminder of GCC patch coordination meeting every Tuesday (2:30pm UTC)
- GNU Cauldron Prague (Sept 14-16)
- RV Summit NA in Oct
- RFP009 is out for bidding (LLVM performance investigation)
- Stack Clash (GCC & LLVM)
- CRC Work (GCC)
- VRULL's work on narrow store feeding wider load
July:
- RFP008
- 2H2024 projects – especially LLVM
- GCC Coordination Branch Discussion
- Keeping RISC-V backend in sync with trunk
- Limited cherry-picking of generic code (when it's known to help RISC-V in meaningful ways)
- Question we'll be discussing in patchwork meeting – late-combine changes, to include or not
June:
- Unaligned vector loads/stores status
- Constant Synthesis revamp. Largely done for GCC. Need to see if there's any significant cases for LLVM after Craig's recent fixes
- Shrink Wrapping for LLVM
- Misha is diving into the EH issues and xz performance regression
- Stack clash, later than expected, but still moving forward
- LLVM – Major development appears to be done. Porting testcases from other archs to rv64 did expose one problem that Raphael is diving into now
- GCC – Going through internal review now
- RFP008 – Will go through review this week
- Flang – need a project page for LLVM. Do we want to propose this as a contractor project?
May:
- Jeff Law: Introduction
- Jeff Law: Constant Synthesis (both compilers)
- Jeff to get Craig examples of commonly missed cases (bseti, only consistently weak idiom for LLVM)
- GCC needs much more work (bseti, shNadd, "uw" forms, duplicated high/low)
- Both compilers probably need better support for pack)
- Concerns about overall structure of code, but may be inherent in the problem
- Jeff Law: Shrink Wrapping (LLVM)
- Just looking for high level sanity check right now
- Doesn't work with EH, but that's got to be an implementation detail, get the CFI notes right and it should work
- Interactions with push/pop?
- How many new code paths are showing up? Is the code getting harder to reason about?
- Jeff Law: Stack clash status (both compilers)
- External review probably 1-2 weeks out
- Testing with scanner to find vulnerable binaries, then test after rebuilding with new compiler
- RFP008
- New language. Jeff to review & comment
- Launch LLVM equivalent RFP (ADLR?)
- ADLR & Jeff to circle back with Baylibre folks WRT LTO (they think it doesn't work)
- IFUNCS. How to handle case where kernel claims V, but it's actually V0.7?
- We can't control where the kernel for these SBCs come from
- We should expect those kernels to occasionally mis-represent the hardware
- Make glibc, gcc & llvm ifunc resolvers be reasonably defensive for these cases
- Avoid crashing user code in these scenarios, bad user experience
- Fallback to sensible default when the syscall isn't available
- Frame pointers vs Zcmp – ABI implications and desire to unwind without CFI tables
- Known issue at the RVI level
- Distros (Fedora, Canonical, etc) likely aren't going to care. ABI for them is set, and they're likely rv64 only
- Would like to see ABI or extension fixed, but if that's not possible, they may do a vector extension.
- Flang
- new vs old flang
- General need to fix flang to be cross-buildable – contractor proposall
- LLVM Testing proposal
- Desire to add another configuration, who is the coordination point for this contract?
- Expectation is cost delta should be small (initial bring-up and ongoing resources)