// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-compute -x hlsl -ast-dump -o - %s | FileCheck %s typedef float float4x2 __attribute__((matrix_type(4,2))); typedef float float2x2 __attribute__((matrix_type(2,2))); typedef int int4x4 __attribute__((matrix_type(4,4))); [numthreads(1,1,1)] void ok() { // CHECK: VarDecl 0x{{[0-9a-fA-F]+}} col:{{[0-9]+}} used m 'float4x2':'matrix' cinit // CHECK-NEXT: ExprWithCleanups 0x{{[0-9a-fA-F]+}} 'float4x2':'matrix' // CHECK-NEXT: InitListExpr 0x{{[0-9a-fA-F]+}} 'float4x2':'matrix' // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'float' // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'int' // CHECK-NEXT: ArraySubscriptExpr 0x{{[0-9a-fA-F]+}} 'int' xvalue vectorcomponent // CHECK-NEXT: MaterializeTemporaryExpr 0x{{[0-9a-fA-F]+}} 'vector' xvalue // CHECK-NEXT: ExtVectorElementExpr 0x{{[0-9a-fA-F]+}} 'vector' xxx // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'vector' // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 1 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} <> '__size_t':'unsigned long' 0 // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'float' // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'int' // CHECK-NEXT: ArraySubscriptExpr 0x{{[0-9a-fA-F]+}} 'int' xvalue vectorcomponent // CHECK-NEXT: MaterializeTemporaryExpr 0x{{[0-9a-fA-F]+}} 'vector' xvalue // CHECK-NEXT: ExtVectorElementExpr 0x{{[0-9a-fA-F]+}} 'vector' xxx // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'vector' // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 1 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} <> '__size_t':'unsigned long' 1 // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'float' // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'int' // CHECK-NEXT: ArraySubscriptExpr 0x{{[0-9a-fA-F]+}} 'int' xvalue vectorcomponent // CHECK-NEXT: MaterializeTemporaryExpr 0x{{[0-9a-fA-F]+}} 'vector' xvalue // CHECK-NEXT: ExtVectorElementExpr 0x{{[0-9a-fA-F]+}} 'vector' xxx // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'vector' // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 1 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} <> '__size_t':'unsigned long' 2 // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'float' // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'int' // CHECK-NEXT: ArraySubscriptExpr 0x{{[0-9a-fA-F]+}} 'int' xvalue vectorcomponent // CHECK-NEXT: MaterializeTemporaryExpr 0x{{[0-9a-fA-F]+}} 'vector' xvalue // CHECK-NEXT: ExtVectorElementExpr 0x{{[0-9a-fA-F]+}} 'vector' xx // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'vector' // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 2 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} <> '__size_t':'unsigned long' 0 // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'float' // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'int' // CHECK-NEXT: ArraySubscriptExpr 0x{{[0-9a-fA-F]+}} 'int' xvalue vectorcomponent // CHECK-NEXT: MaterializeTemporaryExpr 0x{{[0-9a-fA-F]+}} 'vector' xvalue // CHECK-NEXT: ExtVectorElementExpr 0x{{[0-9a-fA-F]+}} 'vector' xx // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'vector' // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 2 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} <> '__size_t':'unsigned long' 1 // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'float' // CHECK-NEXT: ExtVectorElementExpr 0x{{[0-9a-fA-F]+}} 'int' x // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'vector' // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 3 // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'float' // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'int' // CHECK-NEXT: ArraySubscriptExpr 0x{{[0-9a-fA-F]+}} 'int' xvalue vectorcomponent // CHECK-NEXT: MaterializeTemporaryExpr 0x{{[0-9a-fA-F]+}} 'vector' xvalue // CHECK-NEXT: ExtVectorElementExpr 0x{{[0-9a-fA-F]+}} 'vector' xx // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'vector' // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 4 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} <> '__size_t':'unsigned long' 0 // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'float' // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'int' // CHECK-NEXT: ArraySubscriptExpr 0x{{[0-9a-fA-F]+}} 'int' xvalue vectorcomponent // CHECK-NEXT: MaterializeTemporaryExpr 0x{{[0-9a-fA-F]+}} 'vector' xvalue // CHECK-NEXT: ExtVectorElementExpr 0x{{[0-9a-fA-F]+}} 'vector' xx // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'vector' // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 4 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} <> '__size_t':'unsigned long' 1 float4x2 m = {1.xxx, 2.xx, 3.x, 4.xx}; // CHECK: VarDecl 0x{{[0-9a-fA-F]+}} col:{{[0-9]+}} s 'S' cinit // CHECK-NEXT: InitListExpr 0x{{[0-9a-fA-F]+}} 'S' // CHECK-NEXT: InitListExpr 0x{{[0-9a-fA-F]+}} 'float2x2':'matrix' // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'float' // CHECK-NEXT: MatrixSubscriptExpr 0x{{[0-9a-fA-F]+}} 'float' lvalue matrixcomponent // CHECK-NEXT: DeclRefExpr 0x{{[0-9a-fA-F]+}} 'float4x2':'matrix' lvalue Var 0x{{[0-9a-fA-F]+}} 'm' 'float4x2':'matrix' // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 0 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 0 // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'float' // CHECK-NEXT: MatrixSubscriptExpr 0x{{[0-9a-fA-F]+}} 'float' lvalue matrixcomponent // CHECK-NEXT: DeclRefExpr 0x{{[0-9a-fA-F]+}} 'float4x2':'matrix' lvalue Var 0x{{[0-9a-fA-F]+}} 'm' 'float4x2':'matrix' // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 0 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 1 // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'float' // CHECK-NEXT: MatrixSubscriptExpr 0x{{[0-9a-fA-F]+}} 'float' lvalue matrixcomponent // CHECK-NEXT: DeclRefExpr 0x{{[0-9a-fA-F]+}} 'float4x2':'matrix' lvalue Var 0x{{[0-9a-fA-F]+}} 'm' 'float4x2':'matrix' // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 1 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 0 // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'float' // CHECK-NEXT: MatrixSubscriptExpr 0x{{[0-9a-fA-F]+}} 'float' lvalue matrixcomponent // CHECK-NEXT: DeclRefExpr 0x{{[0-9a-fA-F]+}} 'float4x2':'matrix' lvalue Var 0x{{[0-9a-fA-F]+}} 'm' 'float4x2':'matrix' // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 1 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 1 // CHECK-NEXT: InitListExpr 0x{{[0-9a-fA-F]+}} 'float2x2':'matrix' // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'float' // CHECK-NEXT: MatrixSubscriptExpr 0x{{[0-9a-fA-F]+}} 'float' lvalue matrixcomponent // CHECK-NEXT: DeclRefExpr 0x{{[0-9a-fA-F]+}} 'float4x2':'matrix' lvalue Var 0x{{[0-9a-fA-F]+}} 'm' 'float4x2':'matrix' // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 2 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 0 // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'float' // CHECK-NEXT: MatrixSubscriptExpr 0x{{[0-9a-fA-F]+}} 'float' lvalue matrixcomponent // CHECK-NEXT: DeclRefExpr 0x{{[0-9a-fA-F]+}} 'float4x2':'matrix' lvalue Var 0x{{[0-9a-fA-F]+}} 'm' 'float4x2':'matrix' // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 2 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 1 // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'float' // CHECK-NEXT: MatrixSubscriptExpr 0x{{[0-9a-fA-F]+}} 'float' lvalue matrixcomponent // CHECK-NEXT: DeclRefExpr 0x{{[0-9a-fA-F]+}} 'float4x2':'matrix' lvalue Var 0x{{[0-9a-fA-F]+}} 'm' 'float4x2':'matrix' // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 3 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 0 // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'float' // CHECK-NEXT: MatrixSubscriptExpr 0x{{[0-9a-fA-F]+}} 'float' lvalue matrixcomponent // CHECK-NEXT: DeclRefExpr 0x{{[0-9a-fA-F]+}} 'float4x2':'matrix' lvalue Var 0x{{[0-9a-fA-F]+}} 'm' 'float4x2':'matrix' // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 3 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 1 struct S { float2x2 x; float2x2 y;}; S s = {m}; // CHECK: VarDecl 0x{{[0-9a-fA-F]+}} col:{{[0-9]+}} used m2 'float2x2':'matrix' cinit // CHECK-NEXT: ExprWithCleanups 0x{{[0-9a-fA-F]+}} 'float2x2':'matrix' // CHECK-NEXT: InitListExpr 0x{{[0-9a-fA-F]+}} 'float2x2':'matrix' // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'float' // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'int' // CHECK-NEXT: ArraySubscriptExpr 0x{{[0-9a-fA-F]+}} 'int' xvalue vectorcomponent // CHECK-NEXT: MaterializeTemporaryExpr 0x{{[0-9a-fA-F]+}} 'vector' xvalue // CHECK-NEXT: ExtVectorElementExpr 0x{{[0-9a-fA-F]+}} 'vector' xxxx // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'vector' // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 0 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} <> '__size_t':'unsigned long' 0 // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'float' // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'int' // CHECK-NEXT: ArraySubscriptExpr 0x{{[0-9a-fA-F]+}} 'int' xvalue vectorcomponent // CHECK-NEXT: MaterializeTemporaryExpr 0x{{[0-9a-fA-F]+}} 'vector' xvalue // CHECK-NEXT: ExtVectorElementExpr 0x{{[0-9a-fA-F]+}} 'vector' xxxx // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'vector' // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 0 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} <> '__size_t':'unsigned long' 1 // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'float' // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'int' // CHECK-NEXT: ArraySubscriptExpr 0x{{[0-9a-fA-F]+}} 'int' xvalue vectorcomponent // CHECK-NEXT: MaterializeTemporaryExpr 0x{{[0-9a-fA-F]+}} 'vector' xvalue // CHECK-NEXT: ExtVectorElementExpr 0x{{[0-9a-fA-F]+}} 'vector' xxxx // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'vector' // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 0 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} <> '__size_t':'unsigned long' 2 // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'float' // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'int' // CHECK-NEXT: ArraySubscriptExpr 0x{{[0-9a-fA-F]+}} 'int' xvalue vectorcomponent // CHECK-NEXT: MaterializeTemporaryExpr 0x{{[0-9a-fA-F]+}} 'vector' xvalue // CHECK-NEXT: ExtVectorElementExpr 0x{{[0-9a-fA-F]+}} 'vector' xxxx // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'vector' // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 0 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} <> '__size_t':'unsigned long' 3 float2x2 m2 = {0.xxxx}; // CHECK: VarDecl 0x{{[0-9a-fA-F]+}} col:{{[0-9]+}} m3 'int4x4':'matrix' cinit // CHECK-NEXT: InitListExpr 0x{{[0-9a-fA-F]+}} 'int4x4':'matrix' // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'int' // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'float' // CHECK-NEXT: MatrixSubscriptExpr 0x{{[0-9a-fA-F]+}} 'float' lvalue matrixcomponent // CHECK-NEXT: DeclRefExpr 0x{{[0-9a-fA-F]+}} 'float2x2':'matrix' lvalue Var 0x{{[0-9a-fA-F]+}} 'm2' 'float2x2':'matrix' // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 0 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 0 // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'int' // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'float' // CHECK-NEXT: MatrixSubscriptExpr 0x{{[0-9a-fA-F]+}} 'float' lvalue matrixcomponent // CHECK-NEXT: DeclRefExpr 0x{{[0-9a-fA-F]+}} 'float2x2':'matrix' lvalue Var 0x{{[0-9a-fA-F]+}} 'm2' 'float2x2':'matrix' // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 0 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 1 // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'int' // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'float' // CHECK-NEXT: MatrixSubscriptExpr 0x{{[0-9a-fA-F]+}} 'float' lvalue matrixcomponent // CHECK-NEXT: DeclRefExpr 0x{{[0-9a-fA-F]+}} 'float2x2':'matrix' lvalue Var 0x{{[0-9a-fA-F]+}} 'm2' 'float2x2':'matrix' // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 1 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 0 // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'int' // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'float' // CHECK-NEXT: MatrixSubscriptExpr 0x{{[0-9a-fA-F]+}} 'float' lvalue matrixcomponent // CHECK-NEXT: DeclRefExpr 0x{{[0-9a-fA-F]+}} 'float2x2':'matrix' lvalue Var 0x{{[0-9a-fA-F]+}} 'm2' 'float2x2':'matrix' // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 1 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 1 // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'int' // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'float' // CHECK-NEXT: MatrixSubscriptExpr 0x{{[0-9a-fA-F]+}} 'float' lvalue matrixcomponent // CHECK-NEXT: DeclRefExpr 0x{{[0-9a-fA-F]+}} 'float2x2':'matrix' lvalue Var 0x{{[0-9a-fA-F]+}} 'm2' 'float2x2':'matrix' // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 0 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 0 // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'int' // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'float' // CHECK-NEXT: MatrixSubscriptExpr 0x{{[0-9a-fA-F]+}} 'float' lvalue matrixcomponent // CHECK-NEXT: DeclRefExpr 0x{{[0-9a-fA-F]+}} 'float2x2':'matrix' lvalue Var 0x{{[0-9a-fA-F]+}} 'm2' 'float2x2':'matrix' // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 0 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 1 // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'int' // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'float' // CHECK-NEXT: MatrixSubscriptExpr 0x{{[0-9a-fA-F]+}} 'float' lvalue matrixcomponent // CHECK-NEXT: DeclRefExpr 0x{{[0-9a-fA-F]+}} 'float2x2':'matrix' lvalue Var 0x{{[0-9a-fA-F]+}} 'm2' 'float2x2':'matrix' // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 1 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 0 // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'int' // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'float' // CHECK-NEXT: MatrixSubscriptExpr 0x{{[0-9a-fA-F]+}} 'float' lvalue matrixcomponent // CHECK-NEXT: DeclRefExpr 0x{{[0-9a-fA-F]+}} 'float2x2':'matrix' lvalue Var 0x{{[0-9a-fA-F]+}} 'm2' 'float2x2':'matrix' // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 1 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 1 // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'int' // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'float' // CHECK-NEXT: MatrixSubscriptExpr 0x{{[0-9a-fA-F]+}} 'float' lvalue matrixcomponent // CHECK-NEXT: DeclRefExpr 0x{{[0-9a-fA-F]+}} 'float2x2':'matrix' lvalue Var 0x{{[0-9a-fA-F]+}} 'm2' 'float2x2':'matrix' // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 0 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 0 // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'int' // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'float' // CHECK-NEXT: MatrixSubscriptExpr 0x{{[0-9a-fA-F]+}} 'float' lvalue matrixcomponent // CHECK-NEXT: DeclRefExpr 0x{{[0-9a-fA-F]+}} 'float2x2':'matrix' lvalue Var 0x{{[0-9a-fA-F]+}} 'm2' 'float2x2':'matrix' // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 0 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 1 // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'int' // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'float' // CHECK-NEXT: MatrixSubscriptExpr 0x{{[0-9a-fA-F]+}} 'float' lvalue matrixcomponent // CHECK-NEXT: DeclRefExpr 0x{{[0-9a-fA-F]+}} 'float2x2':'matrix' lvalue Var 0x{{[0-9a-fA-F]+}} 'm2' 'float2x2':'matrix' // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 1 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 0 // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'int' // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'float' // CHECK-NEXT: MatrixSubscriptExpr 0x{{[0-9a-fA-F]+}} 'float' lvalue matrixcomponent // CHECK-NEXT: DeclRefExpr 0x{{[0-9a-fA-F]+}} 'float2x2':'matrix' lvalue Var 0x{{[0-9a-fA-F]+}} 'm2' 'float2x2':'matrix' // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 1 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 1 // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'int' // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'float' // CHECK-NEXT: MatrixSubscriptExpr 0x{{[0-9a-fA-F]+}} 'float' lvalue matrixcomponent // CHECK-NEXT: DeclRefExpr 0x{{[0-9a-fA-F]+}} 'float2x2':'matrix' lvalue Var 0x{{[0-9a-fA-F]+}} 'm2' 'float2x2':'matrix' // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 0 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 0 // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'int' // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'float' // CHECK-NEXT: MatrixSubscriptExpr 0x{{[0-9a-fA-F]+}} 'float' lvalue matrixcomponent // CHECK-NEXT: DeclRefExpr 0x{{[0-9a-fA-F]+}} 'float2x2':'matrix' lvalue Var 0x{{[0-9a-fA-F]+}} 'm2' 'float2x2':'matrix' // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 0 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 1 // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'int' // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'float' // CHECK-NEXT: MatrixSubscriptExpr 0x{{[0-9a-fA-F]+}} 'float' lvalue matrixcomponent // CHECK-NEXT: DeclRefExpr 0x{{[0-9a-fA-F]+}} 'float2x2':'matrix' lvalue Var 0x{{[0-9a-fA-F]+}} 'm2' 'float2x2':'matrix' // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 1 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 0 // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'int' // CHECK-NEXT: ImplicitCastExpr 0x{{[0-9a-fA-F]+}} 'float' // CHECK-NEXT: MatrixSubscriptExpr 0x{{[0-9a-fA-F]+}} 'float' lvalue matrixcomponent // CHECK-NEXT: DeclRefExpr 0x{{[0-9a-fA-F]+}} 'float2x2':'matrix' lvalue Var 0x{{[0-9a-fA-F]+}} 'm2' 'float2x2':'matrix' // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 1 // CHECK-NEXT: IntegerLiteral 0x{{[0-9a-fA-F]+}} 'int' 1 int4x4 m3 = {m2, m2, m2, m2}; }