llvm/clang/test/Driver/opencl_aot_save_temps.cl

// RUN: %clang -x cl --save-temps -c -### %s 2>&1 | FileCheck %s
// RUN: %clang -x cl -ccc-print-phases -c %s 2>&1 | FileCheck %s -check-prefix=CHECK-PHASES

// CHECK: "-o" "[[CLI_NAME:.+]].cli" "-x" "cl"
// CHECK-NEXT:  "-o" "[[CLI_NAME]].bc" "-x" "cl-cpp-output"{{.*}}"[[CLI_NAME:.+]].cli"

// CHECK-PHASES: 0: input, {{.*}}, cl
// CHECK-PHASES: 1: preprocessor, {0}, cl-cpp-output
// CHECK-PHASES: 2: compiler, {1}, ir

uint3 add(uint3 a, uint3 b) {
  ulong x = a.x + (ulong)b.x;
  ulong y = a.y + (ulong)b.y + (x >> 32);
  uint z = a.z + b.z + (y >> 32);
  return (uint3)(x, y, z);
}