If we're drawing a transform with a negative scale, we have to go
through the slow path since draw_scaled_bitmap() is unable to flip
images.
Fixes a regression from the 2nd commit in #24465.
Some assembly files were previously inconsistently formatted.
- Use 4 spaces for indentation
- Use `.L` as the local label prefix
- Remove trailing whitespace
We don't have any text relocations in the kernel anymore.
This linker argument was added in bd6dc5ccec as a temporary workaround.
Removing this argument won't cause text relocations to be reported for
aarch64 and riscv64, as we currently compile the kernel with `--no-pie`
on those architectures.
This pseudoinstruction causes text relocations, as it stores the target
address in literal pools inside .text.
The bss clearing code now also matches the RISC-V implementation.
This writes a bitmap that has pixels that are identical between
the two input images blended with 0.5 alpha against white, and
differing pixels are highlighted in red.
Use like so:
imgcmp --write-diff-image diff.webp image1.png image2.webp
This option causes the window to not resize automatically on guest
display resolution changes.
QEMU has this option enabled by default when using virtio-gpu.
Due to optimiser shenanigans in the tree alternative form, some
JumpNonEmpty ops might be moved before their Checkpoint instruction.
It is safe to assume the distance between the nonexistent checkpoint and
the current op is zero, so just do that.
(cherry picked from commit eee90f4aa23afd66ce6007faf4943d4ab56d4f22)
Repeat's 'offset' field is a bit odd in that it is treated as a negative
offset, causing a backwards jump when positive; the optimizer didn't
correctly model this behaviour, which caused crashes and misopts when
dealing with Repeats.
This commit fixes that behaviour.
(cherry picked from commit 358378c1c073440ef830a3485e7d6cb9382e0c92)
These were getting difficult to differentiate, now they each get a
comment on where they came from to aid with future debugging.
(cherry picked from commit 4a8d3e35a37cf94b6d076eec7b242d6924b17757)
This is similar to HashMap::get(key), which returns an Optional, empty
if the index is out of bounds for the vector.
(cherry picked from commit 44798f44ef1c112aa9dbee7abee7ff6a5568c4f4)
The motivation is to allow functions that use FloatExtractor to be
constexpr. Type punning through a union will never work in constexpr.
In practice, bit_cast<>()ing bit fields also does not yet work in clang,
but that's just a bug and it will work eventually (and it does already
work in gcc): https://github.com/llvm/llvm-project/issues/54018
No behavior change.
Most RISC-V floating-point operations only generate the canonical NaN,
so the sign bit was cleared in this test.
The sign injection instruction does keep the NaN payload and sign bit,
so doing `-v.f` to get a negative NaN works as expected.
RISC-V now works just as well as Arm and even passes more tests than it.
"riscv64" is not an official name for the RISC-V architecture and
just using the pretty-printed name for RISC-V looks weird, so use the
pretty name for all architectures instead.