[CIR][AMDGPU] Implement the clang::atomic statement attribute (#225364)
This patch implements support for the clang::atomic attribute for the
AMDGPU target. This attribute adjusts the atomic options in effect for
the statement it is attached to, which decides the AMDGPU metadata on
the resulting atomicrmw.
That also closes a gap the attribute exposed, as __hip_atomic_*
read-modify-writes carried no AMDGPU metadata at all. The "no.X"
metadata asserts the absence of a memory kind, so it is emitted when the
corresponding option is off, and amdgpu.no.fine.grained.memory,
amdgpu.no.remote.memory and amdgpu.ignore.denormal.mode now match
classic CodeGen.
Large parts of these changes correspond to CGAtomicOptionsRAII and
AMDGPUTargetCodeGenInfo::setTargetAtomicMetadata from OGCG.
Assisted-by: Claude Code Sonnet 5
[2 lines not shown]
rust199: on NetBSD/powerpc, only build LLVM for PowerPC and X86.
This avoids the build of particularly the RISCV LLVM CPU target
which causes g++ to want to exceed the available virtual space
when building natively on PowerPC.
[AArch64][GlobalISel] Common GISel and SDAG isEXTMask methods. NFC (#231376)
We had two of these methods, and want another in the cost model. Make
the two
existing version in GISel and SDAG equal.
[clang][Sema][NFC] Clean up `diagnoseMissingArgument` (#231072)
- Remove unused function parameter
- Change the return type to `void` since it always returned `true`
Allow selecting the VM video model
## Problem
VMs always got a QXL video adapter. QXL can deadlock a Linux guest during shutdown when the host stops releasing its memory, and it doesn't exist on aarch64, so aarch64 VMs with a display device couldn't start.
## Solution
Added `video_model` (`QXL`, `VGA`, `VIRTIO`) to VMs. New VMs default to `VGA`, or `VIRTIO` for aarch64 guests, which only accept `VIRTIO`. The migration keeps existing x86 VMs with a display on `QXL`, moves headless VMs from libvirt's implicit cirrus adapter to `VGA`, and sets aarch64 VMs to `VIRTIO`. This depends on the matching truenas_pylibvirt change, which has to land first.
[mlir][ArithToLLVM] Do not lower sitofp to unsupported float types (#230975)
The LLVM type converter maps float types with no LLVM equivalent (for
example
f8E4M3FN, f8E5M2 and f8E8M0FNU) to an integer of the same width. Unlike
`UIToFPOpLowering`, `FPToSIOpLowering` and `FPToUIOpLowering`,
`SIToFPOpLowering` did not set `FailOnUnsupportedFP`. As a result, it
produced an invalid op that the verifier rejects:
'llvm.sitofp' op result #0 must be floating point LLVM type or LLVM
dialect-compatible vector of floating point LLVM type, but got 'i8'
Reproducer (`mlir-opt --convert-arith-to-llvm`, or `--convert-to-llvm`):
%0 = arith.sitofp %arg0 : i32 to f8E4M3FN
Set `FailOnUnsupportedFP` so that the op stays unconverted, as the other
int/float conversions already do. Users can emulate the op first with
`arith-emulate-unsupported-floats`.
[5 lines not shown]
macppc: add MKREPRO support to mkhybrid and fix bugs
1) Fix overlapping strcpy which triggers fortify checks on some hosts
2) Add -timestamp option
2) Don't leak stack garbage into the generated image