brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.9 KiB · 10825bf Raw
64 lines · plain
1// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -ast-dump %s | FileCheck %s2 3// CHECK-LABEL: increment4void increment(inout int Arr[2]) {5  for (int I = 0; I < 2; I++)6    Arr[0] += 2;7}8 9// CHECK-LABEL: call10// CHECK: CallExpr 0x{{.*}} {{.*}} 'void'11// CHECK: ImplicitCastExpr 0x{{.*}} {{.*}} 'void (*)(inout int[2])' <FunctionToPointerDecay>12// CHECK: DeclRefExpr 0x{{.*}} {{.*}} 'void (inout int[2])' lvalue Function 0x{{.*}} 'increment' 'void (inout int[2])'13// CHECK: HLSLOutArgExpr 0x{{.*}} {{.*}} 'int[2]' lvalue inout14// CHECK: OpaqueValueExpr [[A:0x.*]] {{.*}} 'int[2]' lvalue15// CHECK: DeclRefExpr [[B:0x.*]] {{.*}} 'int[2]' lvalue Var [[E:0x.*]] 'A' 'int[2]'16// CHECK: OpaqueValueExpr [[C:0x.*]] {{.*}} 'int[2]' lvalue17// CHECK: ImplicitCastExpr [[D:0x.*]] {{.*}} 'int[2]' <HLSLArrayRValue>18// CHECK: OpaqueValueExpr [[A]] {{.*}} 'int[2]' lvalue19// CHECK: DeclRefExpr [[B]] {{.*}} 'int[2]' lvalue Var [[E]] 'A' 'int[2]'20// CHECK: BinaryOperator 0x{{.*}} {{.*}} 'int[2]' lvalue '='21// CHECK: OpaqueValueExpr [[A]] {{.*}} 'int[2]' lvalue22// CHECK: DeclRefExpr 0x{{.*}} {{.*}} 'int[2]' lvalue Var [[E]] 'A' 'int[2]'23// CHECK: ImplicitCastExpr 0x{{.*}} {{.*}} 'int[2]' <HLSLArrayRValue>24// CHECK: OpaqueValueExpr [[C]] {{.*}} 'int[2]' lvalue25// CHECK: ImplicitCastExpr [[D]] {{.*}} 'int[2]' <HLSLArrayRValue>26// CHECK: OpaqueValueExpr [[A]] {{.*}} 'int[2]' lvalue27// CHECK: DeclRefExpr [[B]] {{.*}} 'int[2]' lvalue Var [[E]] 'A' 'int[2]'28export int call() {29  int A[2] = { 0, 1 };30  increment(A);31  return A[0];32}33 34// CHECK-LABEL: fn235void fn2(out int Arr[2]) {36  Arr[0] += 5;37  Arr[1] += 6;38}39 40// CHECK-LABEL: call241// CHECK: CallExpr 0x{{.*}} {{.*}} 'void'42// CHECK: ImplicitCastExpr 0x{{.*}} {{.*}} 'void (*)(out int[2])' <FunctionToPointerDecay>43// CHECK: DeclRefExpr 0x{{.*}} {{.*}} 'void (out int[2])' lvalue Function 0x{{.*}} 'fn2' 'void (out int[2])'44// CHECK: HLSLOutArgExpr 0x{{.*}} {{.*}} 'int[2]' lvalue out45// CHECK: OpaqueValueExpr [[A:0x.*]] {{.*}} 'int[2]' lvalue46// CHECK: DeclRefExpr [[B:0x.*]] {{.*}} 'int[2]' lvalue Var [[E:0x.*]] 'A' 'int[2]'47// CHECK: OpaqueValueExpr [[C:0x.*]] {{.*}} 'int[2]' lvalue48// CHECK: ImplicitCastExpr [[D:0x.*]] {{.*}} 'int[2]' <HLSLArrayRValue>49// CHECK: OpaqueValueExpr [[A]] {{.*}} 'int[2]' lvalue50// CHECK: DeclRefExpr [[B]] {{.*}} 'int[2]' lvalue Var [[E]] 'A' 'int[2]'51// CHECK: BinaryOperator 0x{{.*}} {{.*}} 'int[2]' lvalue '='52// CHECK: OpaqueValueExpr [[A]] {{.*}} 'int[2]' lvalue53// CHECK: DeclRefExpr [[B]] {{.*}} 'int[2]' lvalue Var [[E]] 'A' 'int[2]'54// CHECK: ImplicitCastExpr 0x{{.*}} {{.*}} 'int[2]' <HLSLArrayRValue>55// CHECK: OpaqueValueExpr [[C]] {{.*}} 'int[2]' lvalue56// CHECK: ImplicitCastExpr [[D]] {{.*}} 'int[2]' <HLSLArrayRValue>57// CHECK: OpaqueValueExpr [[A]] {{.*}} 'int[2]' lvalue58// CHECK: DeclRefExpr [[B]] {{.*}} 'int[2]' lvalue Var [[E]] 'A' 'int[2]'59export int call2() {60  int A[2] = { 0, 1 };61  fn2(A);62  return 1;63}64