Anastasia added inline comments.
================ Comment at: clang/test/SemaOpenCLCXX/reinterpret-cast.clcpp:15 + int4 i4; + auto i4_to_i3 = reinterpret_cast<int3>(i4); // expected-error{{reinterpret_cast from vector 'int4' (vector of 4 'int' values) to vector 'int3' (vector of 3 'int' values) of different size}} + ---------------- I think in OpenCL vector 3 should be setup as vector 4 in memory with the 4th component being `undef` value. So this conversion should be permitted. For example you can reinterpret cast between 3 and 4 components vectors using as_typen functions. https://godbolt.org/z/sKqnYhnGe I don't think we have a comprehensive description but these are the quotes from OpenCL C: >For 3-component vector data types, the size of the data type is 4 * >sizeof(component). This means that a 3-component vector data type will be >aligned to a 4 * sizeof(component) boundary. The vload3 and vstore3 built-in >functions can be used to read and write, respectively, 3-component vector data >types from an array of packed scalar data type. > When the operand and result type contain a different number of elements, the > result shall be implementation-defined except if the operand is a 4-component > vector and the result is a 3-component vector. In this case, the bits in the > operand shall be returned directly without modification as the new type. > The suffixes .lo (or .even) and .hi (or .odd) for a 3-component vector type > operate as if the 3-component vector type is a 4-component vector type with > the value in the w component undefined. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D101519/new/ https://reviews.llvm.org/D101519 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits