================ @@ -0,0 +1,78 @@ +// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.6-library -x hlsl \ +// RUN: -finclude-default-header -ast-dump %s | FileCheck %s + + +// CHECK: ExtVectorElementExpr {{.*}} 'int __attribute__((ext_vector_type(2)))' xx +// CHECK-NEXT: ImplicitCastExpr {{.*}} 'int __attribute__((ext_vector_type(1)))' lvalue <VectorSplat> +// CHECK-NEXT: DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} 'V' 'int' + +int2 ToTwoInts(int V){ + return V.xx; +} + +// CHECK: ExtVectorElementExpr {{.*}} 'float __attribute__((ext_vector_type(4)))' rrrr +// CHECK-NEXT: ImplicitCastExpr {{.*}} 'float __attribute__((ext_vector_type(1)))' lvalue <VectorSplat> +// CHECK-NEXT: DeclRefExpr {{.*}} 'float' lvalue ParmVar {{.*}} 'V' 'float' + + +float4 ToThreeFloats(float V){ + return V.rrrr; +} + +// CHECK: ExtVectorElementExpr {{.*}} 'int __attribute__((ext_vector_type(2)))' xx +// CHECK-NEXT: ImplicitCastExpr {{.*}} 'int __attribute__((ext_vector_type(1)))' <VectorSplat> +// CHECK-NEXT: IntegerLiteral {{.*}} 'int' 1 + +int2 FillOne(){ + return 1.xx; +} + + +// CHECK: ExtVectorElementExpr {{.*}} 'unsigned int __attribute__((ext_vector_type(3)))' xxx +// CHECK-NEXT: ImplicitCastExpr {{.*}} 'unsigned int __attribute__((ext_vector_type(1)))' <VectorSplat> +// CHECK-NEXT: IntegerLiteral {{.*}} 'unsigned int' 1 + +uint3 FillOneUnsigned(){ + return 1u.xxx; +} ---------------- llvm-beanz wrote:
`HooBoy` fails because `wb` isn't a supported suffix in C++ mode (and all HLSL versions are C++-based). Also, even the most experimental HLSL version is only C++-11 based so the `auto` return type will always error. I've added a different integer test case: ```hlsl int64_t4 HooBoy() { return 4l.xxxx; } ``` `err()` works, which is also sadly expected despite the terrible syntax: [FXC on shader playground](https://shader-playground.timjones.io/9111b2b533b5665e679c777fe4e5123b) https://github.com/llvm/llvm-project/pull/67700 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits