From 4e7a0b3d1376e675fe76b9421d680e0343526828 Mon Sep 17 00:00:00 2001 From: Arseniy Obolenskiy Date: Mon, 13 Jul 2026 20:14:13 +0200 Subject: [PATCH] [val] Count AliasScopeINTELMask/NoAliasINTELMask memory access words --- source/val/validate_memory.cpp | 2 ++ test/val/val_memory_test.cpp | 29 +++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/source/val/validate_memory.cpp b/source/val/validate_memory.cpp index cbede225ab..8a825c1d34 100644 --- a/source/val/validate_memory.cpp +++ b/source/val/validate_memory.cpp @@ -247,6 +247,8 @@ int MemoryAccessNumWords(uint32_t mask) { if (mask & uint32_t(spv::MemoryAccessMask::Aligned)) ++result; if (mask & uint32_t(spv::MemoryAccessMask::MakePointerAvailableKHR)) ++result; if (mask & uint32_t(spv::MemoryAccessMask::MakePointerVisibleKHR)) ++result; + if (mask & uint32_t(spv::MemoryAccessMask::AliasScopeINTELMask)) ++result; + if (mask & uint32_t(spv::MemoryAccessMask::NoAliasINTELMask)) ++result; return result; } diff --git a/test/val/val_memory_test.cpp b/test/val/val_memory_test.cpp index 1c4de4a53b..ab15b593ca 100644 --- a/test/val/val_memory_test.cpp +++ b/test/val/val_memory_test.cpp @@ -1942,6 +1942,35 @@ OpFunctionEnd EXPECT_EQ(SPV_SUCCESS, ValidateInstructions(SPV_ENV_VULKAN_1_2)); } +TEST_F(ValidateMemory, CopyMemoryAliasScopeINTELMaskSuccess) { + const std::string body = R"( +OpCapability Shader +OpCapability MemoryAccessAliasingINTEL +OpExtension "SPV_INTEL_memory_access_aliasing" +OpMemoryModel Logical GLSL450 +OpEntryPoint Fragment %main "main" +OpExecutionMode %main OriginUpperLeft +%alias_domain = OpAliasDomainDeclINTEL +%alias_scope = OpAliasScopeDeclINTEL %alias_domain +%alias_list = OpAliasScopeListDeclINTEL %alias_scope +%void = OpTypeVoid +%uint = OpTypeInt 32 0 +%ptr_uint = OpTypePointer Function %uint +%func_type = OpTypeFunction %void +%main = OpFunction %void None %func_type +%entry = OpLabel +%var1 = OpVariable %ptr_uint Function +%var2 = OpVariable %ptr_uint Function +OpCopyMemory %var1 %var2 Aligned|AliasScopeINTELMask 4 %alias_list +OpCopyMemory %var1 %var2 Aligned|NoAliasINTELMask 4 %alias_list +OpReturn +OpFunctionEnd +)"; + + CompileSuccessfully(body.c_str()); + EXPECT_EQ(SPV_SUCCESS, ValidateInstructions()); +} + TEST_F(ValidateMemory, PSBCopyMemoryAlignedMissingTarget) { const std::string body = R"( OpCapability PhysicalStorageBufferAddresses