yum-mirror/glslang
git clone https://git.yummers.dev/yum-mirror/glslang
f3234432
main
1// 2// Copyright (C) 2025 Jan Kelemen 3// 4// All rights reserved. 5// 6// Redistribution and use in source and binary forms, with or without 7// modification, are permitted provided that the following conditions 8// are met: 9// 10// Redistributions of source code must retain the above copyright 11// notice, this list of conditions and the following disclaimer. 12// 13// Redistributions in binary form must reproduce the above 14// copyright notice, this list of conditions and the following 15// disclaimer in the documentation and/or other materials provided 16// with the distribution. 17// 18// Neither the name of 3Dlabs Inc. Ltd. nor the names of its 19// contributors may be used to endorse or promote products derived 20// from this software without specific prior written permission. 21// 22// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 23// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 24// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 25// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 26// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 27// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 28// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 29// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 30// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 31// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 32// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 33// POSSIBILITY OF SUCH DAMAGE. 34// 35#pragma once 36#ifndef spvUtil_H 37#define spvUtil_H 38 39#include <cstdint> 40#include <type_traits> 41 42#include "spirv.hpp11" 43 44namespace spv { 45__inlineuint32_t operator & (uint32_t value ,spv ::MemoryAccessMask mask ) {return value & (unsigned )mask ; } 46 47__inlinebool operator == (uint32_t word ,spv ::FPEncoding encoding ) {return word == (unsigned )encoding ; } 48__inlinebool operator != (uint32_t word ,spv ::FPEncoding encoding ) {return !(word == encoding ); } 49 50__inlinebool operator == (uint32_t word ,spv ::Decoration decoration ) {return word == (unsigned )decoration ; } 51__inlinebool operator != (uint32_t word ,spv ::Decoration decoration ) {return !(word == decoration ); } 52 53__inlinebool operator == (uint32_t word ,spv ::Op op ) {return word == (unsigned )op ; } 54__inlinebool operator != (uint32_t word ,spv ::Op op ) {return !(word == op ); } 55 56__inlinebool operator == (uint32_t word ,spv ::StorageClass storage ) {return word == (unsigned )storage ; } 57__inlinebool operator != (uint32_t word ,spv ::StorageClass storage ) {return !(word == storage ); } 58 59__inlinebool anySet (spv ::MemoryAccessMask value ,spv ::MemoryAccessMask mask ) 60{ 61return (value & mask )!= spv ::MemoryAccessMask ::MaskNone ; 62} 63 64__inlinebool anySet (spv ::ImageOperandsMask value ,spv ::ImageOperandsMask mask ) 65{ 66return (value & mask )!= spv ::ImageOperandsMask ::MaskNone ; 67} 68 69__inlinebool anySet (spv ::MemorySemanticsMask value ,spv ::MemorySemanticsMask mask ) 70{ 71return (value & mask )!= spv ::MemorySemanticsMask ::MaskNone ; 72} 73 74__inlinevoid addMask (uint32_t & word ,spv ::TensorAddressingOperandsMask mask ) {word |= (unsigned )mask ; } 75 76__inlinevoid addMask (spv ::CooperativeMatrixOperandsMask & word ,spv ::CooperativeMatrixOperandsMask mask ) 77{ 78word = word |mask ; 79} 80 81template < typename Enum ,typename To = std ::underlying_type_t < Enum >> 82__inline To enumCast (Enum value ) 83{ 84return static_cast < To > (value ); 85} 86} 87 88#endif // spvUtil_H