// RUN: %clang_cc1 -finclude-default-header -triple dxil-pc-shadermodel6.6-library %s -fnative-half-type -fnative-int16-type -ast-dump -ast-dump-filter=case | FileCheck %s // CHECK-LABEL: FunctionDecl {{.*}} used case1 'uint32_t2 (uint32_t2)' // CHECK-NEXT: ParmVarDecl {{.*}} used b 'uint32_t2':'vector' // CHECK-NEXT: CompoundStmt // CHECK-NEXT: ReturnStmt // CHECK-NEXT: ImplicitCastExpr {{.*}} 'vector' // CHECK-NEXT: UnaryOperator {{.*}} 'vector' prefix '!' cannot overflow // CHECK-NEXT: ImplicitCastExpr {{.*}} 'vector' // CHECK-NEXT: ImplicitCastExpr {{.*}} 'uint32_t2':'vector' // CHECK-NEXT: DeclRefExpr {{.*}} 'uint32_t2':'vector' lvalue ParmVar {{.*}} 'b' 'uint32_t2':'vector' export uint32_t2 case1(uint32_t2 b) { return !b; } // CHECK-LABEL: FunctionDecl {{.*}} used case2 'int32_t3 (int32_t3)' // CHECK-NEXT: ParmVarDecl {{.*}} used b 'int32_t3':'vector' // CHECK-NEXT: CompoundStmt // CHECK-NEXT: ReturnStmt // CHECK-NEXT: ImplicitCastExpr {{.*}} 'vector' // CHECK-NEXT: UnaryOperator {{.*}} 'vector' prefix '!' cannot overflow // CHECK-NEXT: ImplicitCastExpr {{.*}} 'vector' // CHECK-NEXT: ImplicitCastExpr {{.*}} 'int32_t3':'vector' // CHECK-NEXT: DeclRefExpr {{.*}} 'int32_t3':'vector' lvalue ParmVar {{.*}} 'b' 'int32_t3':'vector' export int32_t3 case2(int32_t3 b) { return !b; } // CHECK-LABEL: FunctionDecl {{.*}} used case3 'float16_t (float16_t)' // CHECK-NEXT: ParmVarDecl {{.*}} used b 'float16_t':'half' // CHECK-NEXT: CompoundStmt // CHECK-NEXT: ReturnStmt // CHECK-NEXT: ImplicitCastExpr {{.*}} 'float16_t':'half' // CHECK-NEXT: UnaryOperator {{.*}} 'bool' prefix '!' cannot overflow // CHECK-NEXT: ImplicitCastExpr {{.*}} 'bool' // CHECK-NEXT: ImplicitCastExpr {{.*}} 'float16_t':'half' // CHECK-NEXT: DeclRefExpr {{.*}} 'float16_t':'half' lvalue ParmVar {{.*}} 'b' 'float16_t':'half' export float16_t case3(float16_t b) { return !b; } // CHECK-LABEL: FunctionDecl {{.*}} used case4 'float4 (float4)' // CHECK-NEXT: ParmVarDecl {{.*}} used b 'float4':'vector' // CHECK-NEXT: CompoundStmt // CHECK-NEXT: ReturnStmt // CHECK-NEXT: ImplicitCastExpr {{.*}} 'vector' // CHECK-NEXT: UnaryOperator {{.*}} 'vector' prefix '!' cannot overflow // CHECK-NEXT: ImplicitCastExpr {{.*}} 'vector' // CHECK-NEXT: ImplicitCastExpr {{.*}} 'float4':'vector' // CHECK-NEXT: DeclRefExpr {{.*}} 'float4':'vector' lvalue ParmVar {{.*}} 'b' 'float4':'vector' export float4 case4(float4 b) { return !b; }