From 302bb5b213e4d4305fbf145ee1d9d19ae41bf94a Mon Sep 17 00:00:00 2001 From: Anton Kirilov Date: Tue, 17 May 2022 17:38:05 +0100 Subject: [PATCH] Add notes for the Cranelift project meeting on 16.05.2022 (#4158) Copyright (c) 2022, Arm Limited. --- meetings/cranelift/2022/cranelift-05-16.md | 85 +++++++++++++++++++++- 1 file changed, 83 insertions(+), 2 deletions(-) diff --git a/meetings/cranelift/2022/cranelift-05-16.md b/meetings/cranelift/2022/cranelift-05-16.md index 5c49dc955e..9d821f6a93 100644 --- a/meetings/cranelift/2022/cranelift-05-16.md +++ b/meetings/cranelift/2022/cranelift-05-16.md @@ -9,12 +9,93 @@ 1. Please help take notes. 1. Thanks! 1. Announcements - 1. _Submit a PR to add your announcement here_ + 1. no announcements 1. Other agenda items - 1. _Submit a PR to add your item here_ + 1. no fixed agenda ## Notes ### Attendees +* Alexa VanHattum (avanhatt) +* Andrew Brown (abrown) +* Anton Kirilov (akirilov-arm) +* Benjamin Bouvier (bnjbvr) +* bjorn3 +* Chris Fallin (cfallin) +* Johnnie Birch (jlb6740) +* Nick Fitzgerald (fitzgen) +* Ulrich Weigand (uweigand) + ### Notes + +* regalloc2 regressions + * Ulrich Weigand: rebased the PR migrating call and return instructions to ISLE for s390x + * Ulrich Weigand: on top of regalloc2 and noticed regressions in the generated code, i.e. + * Ulrich Weigand: lower quality results + * Ulrich Weigand: old implementation would move directly into the output register + * Ulrich Weigand: the new one creates a new vreg that is aliased to the output register + * Chris Fallin: would like to have a look, is there a public branch to check out + * Chris Fallin: don't expect extra vregs and moves + * Ulrich Weigand: also, the register allocator uses callee-saved registers instead of + * Ulrich Weigand: caller-saved ones + * Ulrich Weigand: the second issue is that with the previous register allocator there was + * Ulrich Weigand: a way to influence the order in which registers are preferred + * Ulrich Weigand: s390x uses load and store multiple that accept ranges of registers and that + * Ulrich Weigand: become inefficient if successive registers are not used + * Chris Fallin: random choice of registers is a deliberate design decision that led to + * Chris Fallin: improvements on x86-64; is the issue that non-contiguous ranges are used? + * Ulrich Weigand: yes, the code saves and restores unnecessary registers to fill in the gaps +* Status updates + * Nick Fitzgerald: no Cranelift updates + * Chris Fallin: regalloc2 changes, many ISLE-related things - improvements such as if-let, + * Chris Fallin: changes to the build system (no checked-in generated source code), various small + * Chris Fallin: fixes; the major project right now is working on the middle end, e.g. machine- + * Chris Fallin: independent optimizations, starting with alias analysis; the hope is that by + * Chris Fallin: using ISLE we will enable interesting optimizations such as fusion, while + * Chris Fallin: making verification of the middle end easier + * Alexa VanHattum: working on ISLE verification, have a PR not to inline internal constructors, + * Alexa VanHattum: also looking into the ISA semantics of Arm and x86 to include one of them + * Alexa VanHattum: into the verification process + * Benjamin Bouvier: working on the incremental cache idea that has been discussed before, have a + * Benjamin Bouvier: heavy use case for hot reload - makes things much faster; the next step is + * Benjamin Bouvier: to open a GitHub issue for discussion; the implementation will need a + * Benjamin Bouvier: key-value store to keep compilation artifacts + * Ulrich Weigand: fixes for ISA feature flag handling and various logic errors in the bitwise + * Ulrich Weigand: operation implementations + * Andrew Brown: working mostly on the shared linear memory implementation in Wasmtime, which is + * Andrew Brown: expected to have some impact on Cranelift + * Johnnie Birch: started working with ISLE by implementing square root operations, looking + * Johnnie Birch: forward to do more + * bjorn3: looking into implementing exception handling (`eh_cleanup` branch on Wasmtime fork), + * bjorn3: but a bit stuck at how to deal with caller-saved registers + * Anton Kirilov: working on migrating `bitselect`, `vselect` and `splat` to ISLE; after the + * Anton Kirilov: associated RFC has been accepted, has finalized the forward-edge CFI + * Anton Kirilov: implementation, which is now ready for review +* sightglass discussion + * Andrew Brown: Docker had been introduced to sightglass to facilitate reproducible builds + * Andrew Brown: recently a PR on the handling of build metadata that failed CI testing led to + * Andrew Brown: the idea of getting rid of Docker + * Nick Fitzgerald: Docker is frequently a source of inconvenience + * Chris Fallin: Docker is also Linux-specific, which might be a problem in the future if we + * Chris Fallin: decide to support other platforms + * Johnnie Birch: another problematic use case - internal framework to run stuff everywhere, e.g. + * Johnnie Birch: in the cloud; it uses Docker within Docker, which has also caused trouble + * Andrew Brown: so let's remove Docker, but would be the replacement - something to encode a + * Andrew Brown: sequence of commands in an OS-agnostic way? + * Chris Fallin: what are we using Docker exactly for? + * Andrew Brown: cloning repositories and `cargo build`, but there are knobs for configuratrion + * Andrew Brown: parameters, so that it is possible to use your repository, for example + * Nick Fitzgerald: there are so many different ways to build something, so we should push back + * Nick Fitzgerald: on supporting everything, just the things we really need + * Nick Fitzgerald: How many knobs are there? If it is just a commit ID, then it is fine, but + * Nick Fitzgerald: adding support for more than that might open a can of worms + * Andrew Brown: repository location, commit ID, build flags + * Nick Fitzgerald: other engines have other settings - Make flags, `configure` flags, etc. + * Chris Fallin: environment variables as well + * Nick Fitzgerald: is there a use case for using non-default build flags? + * Andrew Brown: it is not huge + * Nick Fitzgerald: the feeling is that sightglass should be simpler than it is right now + * Nick Fitzgerald: currently we usually compare either two branches or compare commits over time + * Nick Fitzgerald: on the other hand, we should record enough metadata, so that a suitably + * Nick Fitzgerald: motivated individual could reproduce the environment manually