From 01e139213946eb4d18edd80a818d2cba189b500e Mon Sep 17 00:00:00 2001 From: Karol Herbst Date: Fri, 16 Jan 2026 15:18:02 +0100 Subject: [PATCH] clc: support some atomic and generic address space features Cc: mesa-stable Acked-by: Alyssa Rosenzweig Part-of: --- src/compiler/clc/clc.h | 3 +++ src/compiler/clc/clc_helpers.cpp | 9 +++++++++ 2 files changed, 12 insertions(+) diff --git a/src/compiler/clc/clc.h b/src/compiler/clc/clc.h index 73588a31ad5..69fb02b3410 100644 --- a/src/compiler/clc/clc.h +++ b/src/compiler/clc/clc.h @@ -50,9 +50,12 @@ enum clc_spirv_version { }; struct clc_optional_features { + bool atomic_order_seq_cst; + bool atomic_scope_device; bool extended_bit_ops; bool fp16; bool fp64; + bool generic_address_space; bool int64; bool images; bool images_depth; diff --git a/src/compiler/clc/clc_helpers.cpp b/src/compiler/clc/clc_helpers.cpp index a53de675c3e..79643981141 100644 --- a/src/compiler/clc/clc_helpers.cpp +++ b/src/compiler/clc/clc_helpers.cpp @@ -963,6 +963,12 @@ clc_compile_to_llvm_module(LLVMContext &llvm_ctx, c->getPreprocessorOpts().addMacroDef("cl_khr_expect_assume=1"); bool needs_opencl_c_h = false; + if (args->features.atomic_order_seq_cst) { + c->getTargetOpts().OpenCLExtensionsAsWritten.push_back("+__opencl_c_atomic_order_seq_cst"); + } + if (args->features.atomic_scope_device) { + c->getTargetOpts().OpenCLExtensionsAsWritten.push_back("+__opencl_c_atomic_scope_device"); + } if (args->features.extended_bit_ops) { c->getPreprocessorOpts().addMacroDef("cl_khr_extended_bit_ops=1"); } @@ -973,6 +979,9 @@ clc_compile_to_llvm_module(LLVMContext &llvm_ctx, c->getTargetOpts().OpenCLExtensionsAsWritten.push_back("+cl_khr_fp64"); c->getTargetOpts().OpenCLExtensionsAsWritten.push_back("+__opencl_c_fp64"); } + if (args->features.generic_address_space) { + c->getTargetOpts().OpenCLExtensionsAsWritten.push_back("+__opencl_c_generic_address_space"); + } if (args->features.int64) { c->getTargetOpts().OpenCLExtensionsAsWritten.push_back("+cles_khr_int64"); c->getTargetOpts().OpenCLExtensionsAsWritten.push_back("+__opencl_c_int64");