mirror of
https://codeberg.org/ziglang/zig.git
synced 2026-10-29 03:06:10 +08:00
* mesa3d is for internal use in Mesa's shader compilation pipeline. This never really made sense to have in Zig. * amdpal is for LLPC, part of AMDVLK, which AMD discontinued development of in favor of RADV in 2025. Follow-up work: Removing the amdgcn_cs calling convention.
104 lines
2.4 KiB
Plaintext
104 lines
2.4 KiB
Plaintext
#skip amdgcn-amdhsa-none-baseline-whole-llvm-lld-pic
|
|
|
|
#skip bpfeb-freestanding-none-baseline-whole-llvm-lld-pic
|
|
|
|
#skip bpfel-freestanding-none-baseline-whole-llvm-lld-pic
|
|
|
|
#skip csky-freestanding-eabi-baseline-whole-llvm-lld-pic
|
|
#skip csky-freestanding-eabihf-baseline-whole-llvm-lld-pic
|
|
#skip csky-linux-eabi-baseline-whole-llvm-lld-pic
|
|
#skip csky-linux-eabihf-baseline-whole-llvm-lld-pic
|
|
#skip csky-linux-gnueabi-baseline-whole-llvm-lld-pic
|
|
#skip csky-linux-gnueabihf-baseline-whole-llvm-lld-pic
|
|
|
|
#skip nvptx-cuda-none-baseline-whole-llvm-lld-pic
|
|
#skip nvptx-nvcl-none-baseline-whole-llvm-lld-pic
|
|
|
|
#skip nvptx64-cuda-none-baseline-whole-llvm-lld-pic
|
|
#skip nvptx64-nvcl-none-baseline-whole-llvm-lld-pic
|
|
|
|
#skip spirv32-opencl-none-baseline-whole-llvm-lld-pic
|
|
#skip spirv32-opengl-none-baseline-whole-llvm-lld-pic
|
|
#skip spirv32-vulkan-none-baseline-whole-llvm-lld-pic
|
|
|
|
#skip spirv64-amdhsa-none-baseline-whole-llvm-lld-pic
|
|
#skip spirv64-opencl-none-baseline-whole-llvm-lld-pic
|
|
#skip spirv64-vulkan-none-baseline-whole-llvm-lld-pic
|
|
|
|
#skip x86_64-linux-gnux32-baseline-whole-llvm-new-pic
|
|
#skip x86_64-linux-muslx32-baseline-whole-llvm-new-pic
|
|
#skip x86_64-linux-x32-baseline-whole-llvm-new-pic
|
|
|
|
#obj {
|
|
--name test -fno-lld -fno-new-linker -ofmt=llvmir
|
|
-Mroot=test.zig
|
|
#}
|
|
|
|
#write test.zig {
|
|
export fn entry(ptr: *allowzero i16) i16 {
|
|
return ptr.*;
|
|
}
|
|
#}
|
|
#update "load"
|
|
#check llvm {
|
|
define #...@test.entry(ptr #...%0) #...#0 #...{
|
|
#...load i16, ptr %0#...
|
|
}
|
|
|
|
#...
|
|
attributes #0 = {#... null_pointer_is_valid #...}
|
|
#}
|
|
|
|
#write test.zig {
|
|
export fn entry(ptr: *allowzero i16) void {
|
|
ptr.* = 42;
|
|
}
|
|
#}
|
|
#update "store"
|
|
#check llvm {
|
|
define #...@test.entry(ptr #...%0) #...#0 #...{
|
|
#...store i16 42, ptr %0#...
|
|
}
|
|
|
|
#...
|
|
attributes #0 = {#... null_pointer_is_valid #...}
|
|
#}
|
|
|
|
#write test.zig {
|
|
export fn entry(ptr: *allowzero i16) i16 {
|
|
return entry2(ptr[0..1]);
|
|
}
|
|
fn entry2(slice: []allowzero i16) i16 {
|
|
@setRuntimeSafety(false);
|
|
return slice[0];
|
|
}
|
|
#}
|
|
#update "slice load"
|
|
#check llvm {
|
|
define #...@test.entry2(#..., ptr #...%1, #...) #...#2 #...{
|
|
#...load i16, ptr %#...
|
|
}
|
|
|
|
#...
|
|
attributes #2 = {#... null_pointer_is_valid #...}
|
|
#}
|
|
|
|
#write test.zig {
|
|
export fn entry(ptr: *allowzero i16) void {
|
|
entry2(ptr[0..1]);
|
|
}
|
|
fn entry2(slice: []allowzero i16) void {
|
|
@setRuntimeSafety(false);
|
|
slice[0] = 42;
|
|
}
|
|
#}
|
|
#update "slice store"
|
|
#check llvm {
|
|
define #...@test.entry2(#..., ptr #...%1, #...) #...#2 #...{
|
|
#...store i16 42, ptr %#...
|
|
}
|
|
|
|
#...
|
|
attributes #2 = {#... null_pointer_is_valid #...}
|
|
#}
|