This Month in PLCT: Issue 37 (September 1, 2022)
Preface
At the PLCT lab and the TAISIER team, we had a busy August preparing and hosting the second RISC-V Summit in China. Due to the ongoing pandemic, we have decided to hold the summit remotely, with over 12 sessions held concurrently in different cities in China. We would like to thank everyone for making this year’s summit our largest one yet and a successful example for concurrent sessions in different local venues.
Last month also saw significant growth in our TAISIER. We grew our roster to 20 full-time staff members, began work on a RISC-V port for a distro named OpenAnolis, awarded title to our first LV4 intern, and commenced work with our BJ67 operating system observation project with over 8 interns.
In September, the PLCT lab will experiment with building an > 1,024-node RISC-V cluster. We look forward to working with you in this new project.
Featured Topics
- Successful conclusion to the second RISC-V Summit in China.
- SpiderMonkey JIT support projected to see end-of-year completion with help from the V8 porting work group. Some baseline code already upstreamed.
- Graphical interface, Firefox, LibreOffice, etc. now available for OpenAnolis’ RISC-V port.
- Zhang Xiang (章翔) to work on backporting RISC-V support to OpenJDK8 with a 16-week projected timeframe.
V8 for RISC-V
General updates.
- 3811139: [riscv64] disable fp multiply and accumulate instructions | https://chromium-review.googlesource.com/c/v8/v8/+/3811139
- 3813425: [riscv] Fix native build | https://chromium-review.googlesource.com/c/v8/v8/+/3813425
- 3815774: [riscv] Fix asm atomic op test case failed | https://chromium-review.googlesource.com/c/v8/v8/+/3815774
- 3815778: [riscv] Fix wasm/externref-globals-liftoff failed | https://chromium-review.googlesource.com/c/v8/v8/+/3815778
- 3819043: [riscv][ext-code-space] Add InterpreterEntryTrampolineForProfiling builtin | https://chromium-review.googlesource.com/c/v8/v8/+/3819043
- 3823859: [riscv][masm][cleanup] Refactor call related assembler options | https://chromium-review.googlesource.com/c/v8/v8/+/3823859
- 3824663: [riscv32] fix wasm-spec-test/i64.js | https://chromium-review.googlesource.com/c/v8/v8/+/3824663
- 3826517: [riscv][masm] Move tiering logic to macro-assembler | https://chromium-review.googlesource.com/c/v8/v8/+/3826517
- 3830281: [riscv]Fix temporary register reuse | https://chromium-review.googlesource.com/c/v8/v8/+/3830281
- 3822761: [riscv] Fix wasm/generic-wrapper test failed | https://chromium-review.googlesource.com/c/v8/v8/+/3822761
- 3844663: [riscv64][wasm-relaxed-simd] Implement relaxed i16x8.q15mulr_s | https://chromium-review.googlesource.com/c/v8/v8/+/3844663
- 3854435: [riscv] Port [heap] Add shared barrier to RecordWrite builtin | https://chromium-review.googlesource.com/c/v8/v8/+/3854435
- 3854435: [riscv] Port [heap] Add shared barrier to RecordWrite builtin | https://chromium-review.googlesource.com/c/v8/v8/+/3854435
OpenJDK for RV32GC (Shi Ningning [史宁宁])
- Fix some reg num problems https://github.com/openjdk-riscv/jdk11u/pull/464
- clean the code in sharedRuntime_riscv32.cpp https://github.com/openjdk-riscv/jdk11u/pull/466
- rewrite the long_move() https://github.com/openjdk-riscv/jdk11u/pull/469
- Fix the bug of regname https://github.com/openjdk-riscv/jdk11u/pull/471
- change the relationship between j_rargx and c_rargx https://github.com/openjdk-riscv/jdk11u/pull/472
- Fix the instructions offset in vtableStubs_riscv32.cpp https://github.com/openjdk-riscv/jdk11u/pull/473
- Fix the instructs in riscv32.ad
- Fix the subL_reg_reg https://github.com/openjdk-riscv/jdk11u/pull/474
- Fix the mulL() https://github.com/openjdk-riscv/jdk11u/pull/475
- Fix the loadConL https://github.com/openjdk-riscv/jdk11u/pull/476
- Fix the divL/modL https://github.com/openjdk-riscv/jdk11u/pull/479
- Fix the storeL and storeimmL0 https://github.com/openjdk-riscv/jdk11u/pull/480
- Fix loadConD0 https://github.com/openjdk-riscv/jdk11u/pull/482
- Fix the storeLConditional https://github.com/openjdk-riscv/jdk11u/pull/485
- Fix the compareAndSwapL https://github.com/openjdk-riscv/jdk11u/pull/487
- Fix the compareAndSwapLAcq() https://github.com/openjdk-riscv/jdk11u/pull/488
- Fix the compareAndExchangeL https://github.com/openjdk-riscv/jdk11u/pull/489
- Fix the compareAndExchangeLAcq https://github.com/openjdk-riscv/jdk11u/pull/490
- Fix the weakCompareAndSwapL https://github.com/openjdk-riscv/jdk11u/pull/492
- Fix the weakCompareAndSwapLAcq https://github.com/openjdk-riscv/jdk11u/pull/493
- Fix the get_and_setI/F https://github.com/openjdk-riscv/jdk11u/pull/494
- Fix the get_and_setIAcq/setLAcq https://github.com/openjdk-riscv/jdk11u/pull/495
- Improve the div system https://github.com/openjdk-riscv/jdk11u/pull/478
- Improve the code style of loadUS2L https://github.com/openjdk-riscv/jdk11u/pull/486
- Improve the xchg system https://github.com/openjdk-riscv/jdk11u/pull/496
- Improve the atomic_add system https://github.com/openjdk-riscv/jdk11u/pull/497
OpenJDK upstream (Mostly RV64-related)
-
JDK mainline regression testing on SiFive Unmatched.
- Tier 1-3 tests clean.
- Need more testing for Tier 4.
-
Pull requests merged into mainline:
- https://github.com/openjdk/jdk/pull/9766 (8291952: riscv: Remove PRAGMA_NONNULL_IGNORED)
- https://github.com/openjdk/jdk/pull/9872 (8292338: aarch64: Use cbnz instruction in gen_continuation_enter when possible)
- https://github.com/openjdk/jdk/pull/10079 (8293050: RISC-V: Remove redundant non-null assertions about macro-assembler)
-
Pull requests approved/under review for mainline:
- https://github.com/openjdk/jdk/pull/9770 (8291893: riscv: remove fence.i used in user space)
- https://github.com/openjdk/jdk/pull/9763 (8291947: riscv: fail to build after JDK-8290840)
- https://github.com/openjdk/jdk/pull/9889 (8292407: Improve Weak CAS VarHandle/Unsafe tests resilience under spurious failures)
- https://github.com/openjdk/jdk/pull/9970 (8292713: Unsafe.allocateInstance should be intrinsified without UseUnalignedAccesses)
- https://github.com/openjdk/jdk/pull/9889 (8292867: RISC-V: Simplify weak CAS return value handling)
- https://github.com/openjdk/jdk/pull/10056 (8293007: riscv: failed to build after JDK-8290025)
- https://github.com/openjdk/jdk/pull/9936 (8292575: riscv: Represent Registers as values)
- https://github.com/openjdk/jdk/pull/10057 (8293011: riscv: Duplicated stubs to interpreter for static calls)
- https://github.com/openjdk/jdk/pull/10075 (8293065: Zero build failure on AArch64 and RISCV64 after JDK-8293007)
- https://github.com/openjdk/jdk/pull/10065 (8293035: Cleanup MacroAssembler::movoop code patching logic aarch64 riscv)
-
JBS issues reported:
- https://bugs.openjdk.org/browse/JDK-8292859 (test/hotspot/jtreg/gc/shenandoah/compiler/BarrierInInfiniteLoop.java timeouts after JDK-8292285)
-
Sponsored pull requests to mainline:
- https://github.com/openjdk/jdk/pull/9821 (8292187: aarch64: Remove duplicate header files)
- https://github.com/openjdk/jdk/pull/10057 (8293011: riscv: Duplicated stubs to interpreter for static calls)
-
Commits for the RV64 Loom port:
- https://github.com/RealFYang/jdk/commit/48b13a13f19b38ba70e8e61c3739bdc659e7776c (riscv: Implement TemplateInterpreterGenerator::generate_Continuation_doYield_entry)
- https://github.com/RealFYang/jdk/commit/f19e4ea5c3e4345e0f074c0d538ccbe1d5b2e956 (riscv: Implement gen_continuation_enter)
- https://github.com/RealFYang/jdk/commit/e10bb9ecde9471950ae5d2c407474115ee71407f (riscv: Implement continuation_enter_setup, fill_continuation_entry and continuation_enter_cleanup)
- https://github.com/RealFYang/jdk/commit/dc3d4c991d04f5c90fdada6c7b19b66477c3335e (Remove check_emit_size parameter from MacroAssembler::trampoline_call)
- https://github.com/RealFYang/jdk/commit/f27df4a679e9298c1349d3e4a0a016fb4aea9bfd (Add new parameter check_emit_size for MacroAssembler::trampoline_call)
- https://github.com/RealFYang/jdk/commit/d903bbc277f6f7f8f76f01acaa95a41c0c653a2c (Implement NativePostCallNop and NativeDeoptInstruction for riscv)
- https://github.com/RealFYang/jdk/commit/01f4bc1e0f3c019eb0e2e48aedde5f0fa1a7fbd0 (Implement SmallRegisterMap for riscv)
- https://github.com/RealFYang/jdk/commit/f19f79ef813e46fff809ab5b81ee592e4fde3293 (Implement stackChunkOopDesc::relativize_frame_pd and stackChunkOopDesc::derelativize_frame_pd for riscv)
- https://github.com/RealFYang/jdk/commit/8a615c8bd45102689d5a0a471aef18c12f1625a3 (Implement LIRGenerator::do_continuation_doYield for riscv)
- https://github.com/RealFYang/jdk/commit/5d2fe824e3f5c09bff940d67deef709716cb0d03 (Small refactoring for AbstractInterpreter::layout_activation)
-
GHA support for RISC-V (based on Ubuntu 22.04):
- https://github.com/openjdk/jdk/pull/10086 (8283929: GHA: Add RISC-V build config)
OpenJDK Upstreaming (Zhang Dingli [张定立])
- A new featured article posted on Zhihu.
- Code submissions.
OpenJDK Upstreaming (Cao Gui [曹贵])
- Code submissions.
OpenJDK8 Backporting (Zhang Xiang [章翔])
- Build support.
- https://github.com/zhangxiang-plct/jdk8u/pull/1
- https://github.com/zhangxiang-plct/jdk8u/pull/4
- https://github.com/zhangxiang-plct/jdk8u/pull/5
- Build routine, https://github.com/zhangxiang-plct/jdk8u/issues/2
- Build fixes.
- https://github.com/zhangxiang-plct/jdk8u/pull/13
- https://github.com/zhangxiang-plct/jdk8u/pull/14
- https://github.com/zhangxiang-plct/jdk8u/pull/15
- https://github.com/zhangxiang-plct/jdk8u/pull/17
- https://github.com/zhangxiang-plct/jdk8u/pull/19
- https://github.com/zhangxiang-plct/jdk8u/pull/20
- https://github.com/zhangxiang-plct/jdk8u/pull/22
- https://github.com/zhangxiang-plct/jdk8u/pull/23
- https://github.com/zhangxiang-plct/jdk8u/pull/24
- https://github.com/zhangxiang-plct/jdk8u/pull/26
- https://github.com/zhangxiang-plct/jdk8u/pull/27
- https://github.com/zhangxiang-plct/jdk8u/pull/29
- https://github.com/zhangxiang-plct/jdk8u/pull/30
Clang/LLVM for RISC-V
- Upstreamed patches.
- [RISCV] Add zihintntl instructions, https://reviews.llvm.org/D121670
- [RISCV] Add MC support of RISCV Zca Extension,https://reviews.llvm.org/D130141
- [RISCV] Fold (sub constant, (setcc x, y, eq/neq)) -> (add constant - 1, (setcc x, y, neq/eq)), https://reviews.llvm.org/D131471
- [RISCV] Optimize x > 1 ? x : 1 -> x > 0 ? x : 1, https://reviews.llvm.org/D132211
- [LLDB][RISCV] Add riscv register definition and read/write, https://reviews.llvm.org/D130342
- [LLDB][RISCV] Add riscv software breakpoint trap code, https://reviews.llvm.org/D131566
- [LLDB][RISCV] Fix risc-v target build, https://reviews.llvm.org/D131667
- [LLDB] Fix possible nullptr exception, https://reviews.llvm.org/D131945
- [LLDB] Handle possible resume thread error, https://reviews.llvm.org/D131946
- [LLDB][RISCV] Make software single stepping work, https://reviews.llvm.org/D131759
- [LLDB] Fix: make m_target_arch private, https://reviews.llvm.org/D132353
- [clang] fix frontend crash when evaluating type trait, https://reviews.llvm.org/D131423
- [clang] add APValue type check in `TryPrintAsStringLiteral`, https://reviews.llvm.org/D131466
- [Sema] fix false -Wcomma being emitted from void returning functions, https://reviews.llvm.org/D131892
- [clang] format string checking for conpile-time evaluated str literal, https://reviews.llvm.org/D130906
- [clang] better error message for while loops outside of control flow, https://reviews.llvm.org/D129573
- [clang][Sema] check default argument promotions for printf, https://reviews.llvm.org/D132568
- New patches submitted to upstream.
- [DSE] Eliminate noop store even through has clobbering between LoadI and StoreI https://reviews.llvm.org/D132657
- [RISCV] Do tail call when parameters are passed by stack. https://reviews.llvm.org/D131263
- Patches reviewed.
- [DSE] Add value type checks for masked store candidates in Dead Store Elimination https://reviews.llvm.org/D132700
- [RISCV] Re-enable JIT support https://reviews.llvm.org/D131617
- [RISCV] Generate correct ELF abi flag when empty .ll file has target-abi attribute https://reviews.llvm.org/D132204
gollvm
- (Merged) gollvm: add support for crosscompiling, https://go-review.googlesource.com/c/gollvm/+/425199?usp=dashboard
- Two test cases still fails (possibly RISC-V specific), see:https://github.com/plctlab/gollvm/issues/16
mold
- Upstreamed RV32 support for mold.
- [RV32] Fix PLT header
- [RV32] Skip all test cases not applicable to RV32
- [RV64] Fix jalr assemble error
- [RISCV] Relax AUIPC+JALR to C.JAL or C.J
- Add MOLD_ENABLE_RV32_QEMU_TESTS option
- Add tail call test
Note: Further testing pending.
GNU Toolchain for RISC-V
-
Binutils’ Zc extension support merged into OpenHWGroup’s corev-binutils-gdb repo (support for GCC under review), https://github.com/openhwgroup/corev-binutils-gdb/pull/43
-
Helped updating submodules in the riscv-gnu-toolchain repo, upgraded GCC to 12.1, updated and tested allowlists.
-
Helped fixing RV32 GCC build with Zbs extension enabled.
-
Planned implementation for the -m{,no}-csr-check options, upstream patch to be submitted next month.
-
Ongoing implementation for a GCC option to print all RISC-V extensions supported by the current toolchain, https://github.com/riscv-non-isa/riscv-toolchain-conventions/issues/24
-
Fixed errors found in upstream regression tests, https://gcc.gnu.org/pipermail/gcc-patches/2022-August/600473.html
-
Slides from the RISC-V GNU Toolchain Biweekly sync-up, https://docs.google.com/presentation/d/1QHaTuNLeSmIr2WeXpD_ZmHvAuziLYT0OWQ7jsoKUaTs/edit#slide=id.g143c5f13251_0_0
AOSP for RISC-V
- Pull requests to the RVI upstream.
- Skip ptrace testing cases, https://github.com/riscv-android-src/platform-bionic/pull/35
- Backport commits to support fe_getround and fe_raise_inexact in builtins, https://github.com/riscv-android-src/toolchain-llvm-project/pull/6
- Bionic/CTS testing (emulation).
- Resolved: Rounding issue in math library, https://gitee.com/aosp-riscv/working-group/issues/I5BV63
- Issues with signal stack unwinding, https://gitee.com/aosp-riscv/working-group/issues/I5D6NY
- Caused by unimplemented RISC-V signal frame unwinding in LLVM/libunwind. Upon reporting this issue to RVI, T-Head proposed an upstream patch - to revisit this issue after upstream tags a new release.
- Issue with sprinting “-nan,” https://gitee.com/aosp-riscv/working-group/issues/I5CKA4
- Root cause has been identified but not acted upon due to lower priority. Issue reported to Google, awaiting comments.
- Resolved: sys_ptrace tests failed, https://gitee.com/aosp-riscv/working-group/issues/I5NL9M
- Technical references and presentations.
- Slides from the presentation with Mao Han (毛晗), Chair of RVI Android SIG, at the second RISC-V Summit in China, https://github.com/aosp-riscv/working-group/blob/master/docs/slides/202208-rvsc2022-rvi-aosp-report.pdf
- Chinese: “聊一聊 Linux 上信号处理过程中的信号栈帧,” https://zhuanlan.zhihu.com/p/555659009
- Chinese: “用于栈回溯的一些库,” <ttps://zhuanlan.zhihu.com/p/556211455
- Chinese: “和 ptrace 有关的一些笔记,” https://zhuanlan.zhihu.com/p/559140687
Arch Linux for RISC-V
- Arch Linux RISC-V bring-up progress, see Arch Linux RISC-V.
- [core] 252 / 260 (96.92%)
- [extra] 2670 / 3032 (88.06%)
- [community] 8164 / 9415 (86.71%)
- RISC-V patches for Arch Linux packages, archriscv-packages, with 100 pull requests merged into archriscv.
- Pull requests.
- LLVM
- D131587 [CodeGen] Deduplicate restore blocks in branch relaxation
- D131549 [ADT] Make SmallSet::insert(const T &) return const_iterator
- D131863 [CodeGen] Fix restore blocks’ BasicBlock information in branch relaxation
- D132625 [RISCV][test][NFC] Update branch-relaxation.ll with update_llc_test_checks.py
- lprint
- brltty
- mkinitcpio
- Linux kernel
- python-nodeenv
- nodejs-lzma-native
- LLVM
- Issues.
- bind
- x264
- dhcp
- mxml
- most
- lvm2
- glibc
- cmake
- efivar
- elinks
- gnu-efi
- autoconf
- libffado
- libspatialite
- matrix-synapse
- libretro-common
- python-pyhamcrest
- system-config-printer
- SVT-VP9: [BUILD FAILED] Looking for some alternatives about
immintrin.h
- SVT-HEVC: [BUILD FAILED] Looking for some alternatives about
immintrin.h
- Other.
- Arch Linux RISC-V Bootloader reproducible build and automation, upstream pull request
- Arch RISC-V Maintenance Toolchain (image and rootfs).
- Blog posts.
Gentoo for RISC-V
- A total of 100 keywording commits (including those from non-PLCT team members), https://whale.plctlab.org/riscv/stats/2022_08.txt
- dev-util/crash: add riscv support
- dev-util/bcc-0.25 released, support RISC-V now
- media-rv/kodi: fix atomic issue and keyword
- deepin-overlay
- other deepin apps riscv keywording: https://github.com/deepin-community/deepin-overlay/pull/24
- RISC-V overlay
- dev-qt/qtwebengine updated
- sys-apps/kexec-tools, fix memory location issue
- www-firefox/firefox updated
Nixpkgs for RISC-V
- zabbix.proxy-sqlite: fix cross compilation https://github.com/NixOS/nixpkgs/pull/187558
- systemd: fix cross compilation with libbpf enabled https://github.com/NixOS/nixpkgs/pull/188291
- rapidjson: add gtest to buildInputs, fix cross compilation https://github.com/NixOS/nixpkgs/pull/186559
- capnproto: add optional deps, cleanup cmakeFlags https://github.com/NixOS/nixpkgs/pull/186558
- sqlitecpp: move gtest from checkInputs to buildInputs https://github.com/NixOS/nixpkgs/pull/186440
- python3Packages.recursivePthLoader: fix cross compilation https://github.com/NixOS/nixpkgs/pull/185635
- netplan: fix cross compilation by replacing hardcoded pkg-config https://github.com/NixOS/nixpkgs/pull/186444
- velero: disable shell completion generation when cross compiling https://github.com/NixOS/nixpkgs/pull/186436
- wlr-protocols: move wayland-scanner from checkInputs to nativeBuildInputs https://github.com/NixOS/nixpkgs/pull/186434
- x11vnc: remove extraneous preConfigure https://github.com/NixOS/nixpkgs/pull/186432
- althttpd: unstable-2022-01-10 -> unstable-2022-08-12, fix cross https://github.com/NixOS/nixpkgs/pull/186430
- AMB-plugins: fix cross compilation by replacing hardcoded g++ with CXX https://github.com/NixOS/nixpkgs/pull/186428
- harePackages.hare: fix evaluation for riscv https://github.com/NixOS/nixpkgs/pull/186427
- nixos/systemd-boot: Use pkgsBuildHost.mypy https://github.com/NixOS/nixpkgs/pull/184547
- grub2: Add support for riscv{32,64}-linux https://github.com/NixOS/nixpkgs/pull/184526
- lib/systems/inspect.nix: Add riscv to isEfi https://github.com/NixOS/nixpkgs/pull/184521
Firefox (SpiderMonkey) on RV64GCV
With help from the V8 work group.
- Started porting SpiderMonkey to RISC-V, https://github.com/plctlab/gecko-dev-riscv/commits/riscv64-spidermonkey
- jit-test status, https://github.com/plctlab/gecko-dev-riscv/issues/27
DynamoRIO RV64GC Enablement
Preliminary support for RV64GC implemented in DynamoRIO, which will now build on RV64GC (no additional feature supported).
Current five-stage road map for DyanmoRIO’s RV64GC support:
- Introduce RISC-V platform-specific functions, frameworks, definitions, etc., allowing DynamoRIO to build on RISC-V. (Done)
- Setup RISC-V CI for automated compilation and testing. (In Progress)
- Refine RISC-V platform-specific functions and definitions, make DynamoRIO’s built-in example tools functional.
- Refine RISC-V unit- and feature-tests, setup CI for automated testing and instruments for long-term maintenance.
- Continue RISC-V feature enablement for more complex programs, prepare for long-term maintenance.
See https://gist.github.com/bekcpear/7c9e710ee5b674888fcf5e5d8445dc16 for a more detailed to-do list.
OpenCV for RV64GCV
As part of our GSoC 2022 project, we are currently implementing a new Universal Intrinsic backend for RVV (RISC-V Vector), making the existing Universal Intrinsic framework compatible with scalable (variable-length) backends.
Previously, we have already finished implementing the aforementioned changes to the Universal Intrinsic framework. In August, we have implemented all platform-specific Universal Intrinsic functions and introduced respective unit tests and submitted relevant patches to upstream:
- PR #22353: Add more universal intrinsic implementations for RVV
- PR #22429: Add remaining universal intrinsic implementations for RVV
As a result, the new Universal Intrinsic backend for RVV not only supports variable register lengths, it also improves performance significantly over the original backend design, which had an issue where it generated redundant Load/Store instructions. As a next step, we plan to optimize hot-spot functions OpenCV’s image processing module and acquire RVV-enabled devices for performance testing.
For more details on this project:
Experimental SIMD in LIBCXX
- Implemented
aligned_tag
interfaces. - Implemented
mask
type for 128-bit elements. - Fixed ‘&=’ and ‘|=’ operators in the
reference
class. - Fixed implementation for the
where
expression. - Optimized
masked
operations, usingmasked_assign
and non-masked versions to replace the original scalar implementation. - Optimized
hmin/hmax
implementations by using LLVM’s builtin vector reduction in place of the original scalar implementation.
LuaJIT RV64G porting
Our intern has unfortunated resigned. We are currently in search for a new intern.
gem5
- Progression for RVV bring-up.
- Current draft patch, https://gem5-review.googlesource.com/c/public/gem5/+/59789
- Introduced support for Vector Integer Extension instructions.
- Introduced support for Single-Width Floating-Point/Integer Type-Convert instructions.
- Introduced support for Widening Floating-Point/Integer Type-Convert instructions.
- Introduced support for Narrowing Floating-Point/Integer Type-Convert instructions.
- Introduced support for Vector Mask instructions.
- Introduced support for Vector Narrowing instructions.
- Introduced support for Vector Single-Width Averaging instructions.
- Introduced support for Vector Single-Width Fractional Multiply with Rounding and Saturation instructions.
- Introduced support for Square-Root instructions.
- Introduced support for Vector Floating-Point Classify instructions.
- Introduced support for Vector Narrowing Fixed-Point Clip instructions.
- Introduced support for Vector Register Gather instructions.
- Fixed various known issues.
- Others.
- Unit tests for RVV, https://github.com/plctlab/PLCT-Weekly/blob/master/2022
- Added unit tests for the aforementioned instructions implemented in gem5.
Spike
- Optimization for Vector implementation.
- Merged: Remove unused code in vsmul*
- Merged: Remove dead code in VI_VV_EXT macro
- Fixes for CSR (Control and Status Registers) checks.
- Fixes for non-functional issues.
- Updates and refinements to Zfinx support.
- Updates and refinements to Sscofpmf support.
QEMU
- Optimization for Vector implementation.
- Fixes for CSR (Control and Status Registers) checks.
- Implementation and optimization for core-v-mcu support.
Other Support for RISC-V International
Please stay tuned.
SAIL/ACT
Please stay tuned.
OpenArkCompiler Community
Shi Ninging (史宁宁) continues to work on compiling the OpenArkCompiler Weekly, which received the 128th edition.
You may find new weekly editions of the OpenArkCompiler Weekly on Sundays on…
- GitHub: https://github.com/isrc-cas/arkcompiler-materials
- Zhihu: https://zhuanlan.zhihu.com/openarkcompiler
- Bilibili: https://www.bilibili.com/read/readlist/rl199373
- Mailing list and other channels: https://gitee.com/openarkcompiler/OpenArkCompiler/issues/I1EWAX
MLIR
Please stay tuned.
Upstream RVV Dialect Proposal
Google’s IREE partner Diego proposed an RFC for a generic Vector Masking Representation in MLIR, https://discourse.llvm.org/t/rfc-vector-masking-representation-in-mlir/64964
References
- RFC patch, https://reviews.llvm.org/D108536
- RFC discussion, https://discourse.llvm.org/t/rfc-add-risc-v-vector-extension-rvv-dialect/4146/32
- Documentation on deploying an MLIR + RVV integrated test environment, https://gist.github.com/zhanghb97/ad44407e169de298911b8a4235e68497
- Documentation on deploying an MLIR + RVV enironment, https://github.com/buddy-compiler/buddy-mlir/blob/main/thirdparty/build-rvv-env.sh
- Sample code for MLIR + RVV, https://github.com/buddy-compiler/buddy-mlir/tree/main/examples/RVVExperiment
- Preliminary demo vector config operations, https://github.com/buddy-compiler/buddy-mlir/blob/main/examples/RVVExperiment/rvv-vp-intrinsic.mlir#L37
OSPP Mentorship
- Buddy Compiler hosted five projects at OSPP 2022, https://summer-ospp.ac.cn/#/org/orgdetail/8d995d4c-b188-4690-9a53-c022dc7c19e3/
Buddy Compiler
Website
- Homepage, https://buddy-compiler.github.io/
buddy-mlir
- GitHub repo, https://github.com/buddy-compiler/buddy-mlir
New features:
- Add function to Toy DSL examples.
- Add struct support to Toy DSL examples.
- Infer operation data type based on its params for Corr2D.
- Add more VP intrinsic examples.
- Add the example for dialect interface: BudInlinerInterface.
- Refactor image traversal with boundary extrapolation for efficient reuse.
buddy-benchmark
- GitHub repo, https://github.com/buddy-compiler/buddy-benchmark
New features:
- Add basic comparision plots function.
Chisel / FIRRTL (CAAT Work Group)
coreboot for riscv
Please stay tuned.
openocd
- Setting SIZE when using triggers as watchpoints. Currently under deliberation and review.
opensbi
Submitted various patches to upstream.
- [PATCH v2 0/5] Set hstatus.GVA for traps going to HS-mode, ref
- [PATCH v1] lib: sbi_illegal_insn: Fix FENCE.TSO emulation infinite trap loop, ref
- [PATCH v2 0/5] Add support for T-HEAD C9xx PMU extensions, ref
- [PATCH v3] lib: utils: serial: Add Cadence UART driver, ref
- [PATCH v8 00/17] OpenSBI Kconfig Support, ref
- [PATCH] lib: sbi: Use the official extension name for AIA M-mode CSRs, ref
- [PATCH] include: Remove sideleg and sedeleg, ref
- [PATCH 0/7] OpenSBI PMU improvements, ref
- Documentation fixes for Unmatched PMU.
- [PATCH 1/2] docs: pmu: fix Unmatched example typo, [ref]](https://lists.infradead.org/pipermail/opensbi/2022-August/003292.html)
- [PATCH 2/2] docs: pmu: extend bindings example for Unmatched, ref
U-Boot
- [PATCH] virtio: pci: fix bug of virtio_pci_map_capability, ref
The Aya Theorem Prover
👉View current pull requests here👈
- Implemented path types, PR #447, PR #446
- Improved VSCode extension, PR #460
- Fixed various bugs, PR #457, PR #454, PR #445, PR #442
- Refactored old code, PR #455, PR #453, PR #444, PR #441, PR #427
You may find the full list of August changes here.
RISC-V Platform Evaluation
RVLab
- Created a frontend for RVLab’s hardware management platform using Vue.js.
- Learning to make of Vue.js’ parent and child component functionalities - using value passing and function calls in various dialog interfaces.
- Completed device distribution, device editing, relay listing, new/delete relays, and delete device pages in the hardware management interface.
- Completed user management, user roles, role listing, new/delete roles, delete user pages.
- Completed the User Profile interface, as well as a functional Change Password page.
- Successfully deployed the RVLab hardware management platform locally on a Ubuntu 22.04 system using Dockerfile and
docker compose
. This platform will be deployed for production in a virtual machine. Due to the fact that the MQTT server was deployed in the RVLab’s internal network, the virtual machine will require both Internet and intranet access. - Revised Flask backend code to adapt to the Vue frontend.
- RVLab infrastructure provisioning.
- Installed the latest Debian image on one Unmatched board.
openEuler for RISC-V
See TAISIER’s bi-weekly reports, https://github.com/isrc-cas/tarsier-oerv/
Debian for RISC-V
Now published in a bi-weekly format, please find these reports at the debian-riscv mailing list.
Useful Links
- PLCT’s 2022 Roadmap, https://github.com/plctlab/PLCT-Weekly/blob/master/PLCT-Roadmap-2022.md
- Open job positions at the PLCT Lab, https://github.com/plctlab/PLCT-Weekly/blob/master/Jobs.md
- Open intern positions at the PLCT Lab, https://github.com/plctlab/weloveinterns/blob/master/open-internships.md
- PLCT Weekly Reports, https://github.com/isrc-cas/PLCT-Weekly
- PLCT Open Reports (incomplete), https://github.com/isrc-cas/PLCT-Open-Reports