================ @@ -1,109 +1,28 @@ // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.6-library -finclude-default-header -fnative-half-type -verify %s // expected-no-diagnostics -struct oneInt { - int i; -}; - -struct twoInt { - int aa; - int ab; -}; - -struct threeInts { - oneInt o; - twoInt t; -}; - -struct oneFloat { - float f; -}; -struct depthDiff { - int i; - oneInt o; - oneFloat f; -}; - -struct notHomogenous{ - int i; - float f; -}; - -struct EightElements { - twoInt x[2]; - twoInt y[2]; -}; - -struct EightHalves { -half x[8]; -}; - -struct intVec { - int2 i; -}; - -struct oneIntWithVec { - int i; - oneInt i2; - int2 i3; -}; - -struct weirdStruct { - int i; - intVec iv; -}; _Static_assert(__builtin_hlsl_is_typed_resource_element_compatible(int), ""); _Static_assert(__builtin_hlsl_is_typed_resource_element_compatible(float), ""); _Static_assert(__builtin_hlsl_is_typed_resource_element_compatible(float4), ""); _Static_assert(__builtin_hlsl_is_typed_resource_element_compatible(double2), ""); -_Static_assert(__builtin_hlsl_is_typed_resource_element_compatible(oneInt), ""); -_Static_assert(__builtin_hlsl_is_typed_resource_element_compatible(oneFloat), ""); -_Static_assert(__builtin_hlsl_is_typed_resource_element_compatible(twoInt), ""); -_Static_assert(__builtin_hlsl_is_typed_resource_element_compatible(threeInts), ""); -_Static_assert(!__builtin_hlsl_is_typed_resource_element_compatible(notHomogenous), ""); -_Static_assert(!__builtin_hlsl_is_typed_resource_element_compatible(depthDiff), ""); -_Static_assert(!__builtin_hlsl_is_typed_resource_element_compatible(EightElements), ""); -_Static_assert(!__builtin_hlsl_is_typed_resource_element_compatible(EightHalves), ""); -_Static_assert(__builtin_hlsl_is_typed_resource_element_compatible(oneIntWithVec), ""); -_Static_assert(__builtin_hlsl_is_typed_resource_element_compatible(weirdStruct), ""); -_Static_assert(!__builtin_hlsl_is_typed_resource_element_compatible(RWBuffer<int>), ""); - - -// arrays not allowed -_Static_assert(!__builtin_hlsl_is_typed_resource_element_compatible(half[4]), ""); - -template<typename T> struct TemplatedBuffer { - T a; - __hlsl_resource_t h; -}; -_Static_assert(!__builtin_hlsl_is_typed_resource_element_compatible(TemplatedBuffer<int>), ""); - -struct MyStruct1 : TemplatedBuffer<float> { - float x; -}; -_Static_assert(!__builtin_hlsl_is_typed_resource_element_compatible(MyStruct1), ""); -struct MyStruct2 { - const TemplatedBuffer<float> TB[10]; -}; -_Static_assert(!__builtin_hlsl_is_typed_resource_element_compatible(MyStruct2), ""); +_Static_assert(!__builtin_hlsl_is_typed_resource_element_compatible(RWBuffer<int>), ""); -template<typename T> struct SimpleTemplate { - T a; +struct s { + int x; }; -// though the element type is incomplete, the type trait should still technically return true -_Static_assert(__builtin_hlsl_is_typed_resource_element_compatible(SimpleTemplate<__hlsl_resource_t>), ""); - -_Static_assert(__builtin_hlsl_is_typed_resource_element_compatible(SimpleTemplate<float>), ""); +// structs not allowed +_Static_assert(!__builtin_hlsl_is_typed_resource_element_compatible(s), ""); +// arrays not allowed +_Static_assert(!__builtin_hlsl_is_typed_resource_element_compatible(half[4]), ""); -typedef int myInt; +typedef vector<int, 8> int8; +// too many elements +_Static_assert(!__builtin_hlsl_is_typed_resource_element_compatible(int8), ""); -struct TypeDefTest { - int x; - myInt y; -}; +// size exceeds 16 bytes, and exceeds element count limit after splitting 64 bit types into 32 bit types +_Static_assert(!__builtin_hlsl_is_typed_resource_element_compatible(double3), ""); -_Static_assert(__builtin_hlsl_is_typed_resource_element_compatible(TypeDefTest), ""); ---------------- bob80905 wrote:
They could be left in and switched to false, but it doesn't seem valuable. All structs are disallowed, so I think just one struct test would suffice. https://github.com/llvm/llvm-project/pull/115045 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits