#skip amdgcn-amdhsa-none-baseline-whole-llvm-debug-lld

#skip bpfeb-freestanding-none-baseline-whole-llvm-debug-lld

#skip bpfel-freestanding-none-baseline-whole-llvm-debug-lld

#skip csky-freestanding-eabi-baseline-whole-llvm-debug-lld
#skip csky-freestanding-eabihf-baseline-whole-llvm-debug-lld
#skip csky-linux-eabi-baseline-whole-llvm-debug-lld
#skip csky-linux-eabihf-baseline-whole-llvm-debug-lld
#skip csky-linux-gnueabi-baseline-whole-llvm-debug-lld
#skip csky-linux-gnueabihf-baseline-whole-llvm-debug-lld

#skip nvptx-cuda-none-baseline-whole-llvm-debug-lld
#skip nvptx-nvcl-none-baseline-whole-llvm-debug-lld

#skip nvptx64-cuda-none-baseline-whole-llvm-debug-lld
#skip nvptx64-nvcl-none-baseline-whole-llvm-debug-lld

#skip x86_64-linux-gnux32-baseline-whole-llvm-debug-new
#skip x86_64-linux-muslx32-baseline-whole-llvm-debug-new
#skip x86_64-linux-x32-baseline-whole-llvm-debug-new

#zig build-obj {
--name test -ofmt=llvmir -fno-lld -fno-new-linker
-Mroot=test.zig
#}

#write test.zig {
export fn foo(a: *bool, b: *align(2) bool) void {
    const tmp = a.*;
    a.* = b.*;
    b.* = tmp;
}
#}
#update
#check llvm {
...
define ... void @test.foo(ptr ... %a, ptr ... %b) ... {
  ...
  %a.load = load i8, ptr %a, align 1, !...
  %a.trunc = trunc nuw i8 %a.load to i1, !...
  ...
  %b.load = load i8, ptr %b, align 2, !...
  %b.trunc = trunc nuw i8 %b.load to i1, !...
  %b.ext = zext i1 %b.trunc to i8, !...
  store i8 %b.ext, ptr %a, align 1, !...
  %a.zext = zext i1 %a.trunc to i8, !...
  store i8 %a.zext, ptr %b, align 2, !...
  ret void, !...
}

...
#}
