125d1b434SYaxun Liu// RUN: %clang_cc1 -triple r600 -cl-std=CL1.2 %s -emit-llvm -o - | FileCheck %s 225d1b434SYaxun Liu// RUN: %clang_cc1 -triple amdgcn-mesa-mesa3d -cl-std=CL1.2 %s -emit-llvm -o - | FileCheck %s 325d1b434SYaxun Liu// RUN: %clang_cc1 -triple amdgcn---opencl -cl-std=CL1.2 %s -emit-llvm -o - | FileCheck %s 425d1b434SYaxun Liu// RUN: %clang_cc1 -triple amdgcn---opencl -cl-std=CL2.0 %s -emit-llvm -o - | FileCheck %s 525d1b434SYaxun Liu// RUN: %clang_cc1 -triple amdgcn---amdgizcl -cl-std=CL1.2 %s -emit-llvm -o - | FileCheck %s 625d1b434SYaxun Liu// RUN: %clang_cc1 -triple amdgcn---amdgizcl -cl-std=CL2.0 %s -emit-llvm -o - | FileCheck %s 725d1b434SYaxun Liu 8*78463ebdSAnton Zabaznov// RUN: %clang_cc1 -triple r600 -cl-std=CL3.0 %s -emit-llvm -o - | FileCheck %s 9*78463ebdSAnton Zabaznov// RUN: %clang_cc1 -triple amdgcn-mesa-mesa3d -cl-std=CL3.0 %s -emit-llvm -o - | FileCheck %s 10*78463ebdSAnton Zabaznov// RUN: %clang_cc1 -triple amdgcn---opencl -cl-std=CL3.0 %s -emit-llvm -o - | FileCheck %s 11*78463ebdSAnton Zabaznov// RUN: %clang_cc1 -triple amdgcn---amdgizcl -cl-std=CL3.0 %s -emit-llvm -o - | FileCheck %s 12*78463ebdSAnton Zabaznov// RUN: %clang_cc1 -triple amdgcn-mesa-mesa3d -cl-ext=+__opencl_c_generic_address_space -cl-std=CL3.0 %s -emit-llvm -o - | FileCheck %s 13*78463ebdSAnton Zabaznov// RUN: %clang_cc1 -triple amdgcn---opencl -cl-ext=+__opencl_c_generic_address_space -cl-std=CL3.0 %s -emit-llvm -o - | FileCheck %s 14*78463ebdSAnton Zabaznov// RUN: %clang_cc1 -triple amdgcn---amdgizcl -cl-ext=+__opencl_c_generic_address_space -cl-std=CL3.0 %s -emit-llvm -o - | FileCheck %s 15*78463ebdSAnton Zabaznov// RUN: %clang_cc1 -triple r600 -cl-ext=+cl_khr_fp64,+__opencl_c_fp64 -cl-std=CL3.0 %s -emit-llvm -o - | FileCheck %s 16*78463ebdSAnton Zabaznov// RUN: %clang_cc1 -triple amdgcn-mesa-mesa3d -cl-ext=+cl_khr_fp64,+__opencl_c_fp64 -cl-std=CL3.0 %s -emit-llvm -o - | FileCheck %s 17*78463ebdSAnton Zabaznov// RUN: %clang_cc1 -triple amdgcn---opencl -cl-ext=+cl_khr_fp64,+__opencl_c_fp64 -cl-std=CL3.0 %s -emit-llvm -o - | FileCheck %s 18*78463ebdSAnton Zabaznov// RUN: %clang_cc1 -triple amdgcn---amdgizcl -cl-ext=+cl_khr_fp64,+__opencl_c_fp64 -cl-std=CL3.0 %s -emit-llvm -o - | FileCheck %s 19*78463ebdSAnton Zabaznov 2025d1b434SYaxun Liu#ifdef __AMDGCN__ 2125d1b434SYaxun Liu#define PTSIZE 8 2225d1b434SYaxun Liu#else 2325d1b434SYaxun Liu#define PTSIZE 4 2425d1b434SYaxun Liu#endif 2525d1b434SYaxun Liu 2625d1b434SYaxun Liu#ifdef cl_khr_fp64 2725d1b434SYaxun Liu#pragma OPENCL EXTENSION cl_khr_fp64 : enable 2825d1b434SYaxun Liu#endif 2925d1b434SYaxun Liu#ifdef cl_khr_fp16 3025d1b434SYaxun Liu#pragma OPENCL EXTENSION cl_khr_fp16 : enable 3125d1b434SYaxun Liu#endif 3225d1b434SYaxun Liu 3325d1b434SYaxun Liutypedef __SIZE_TYPE__ size_t; 3425d1b434SYaxun Liutypedef __PTRDIFF_TYPE__ ptrdiff_t; 3525d1b434SYaxun Liutypedef __INTPTR_TYPE__ intptr_t; 3625d1b434SYaxun Liutypedef __UINTPTR_TYPE__ uintptr_t; 3725d1b434SYaxun Liutypedef global void *global_ptr_t; 3825d1b434SYaxun Liutypedef constant void *constant_ptr_t; 3925d1b434SYaxun Liutypedef local void *local_ptr_t; 4025d1b434SYaxun Liutypedef private void *private_ptr_t; 4125d1b434SYaxun Liu 4225d1b434SYaxun Liuvoid check(bool); 4325d1b434SYaxun Liu 4425d1b434SYaxun Liuvoid test() { 4525d1b434SYaxun Liu // CHECK-NOT: call void @check(i1 zeroext false) 4625d1b434SYaxun Liu check(sizeof(size_t) == PTSIZE); 4725d1b434SYaxun Liu check(__alignof__(size_t) == PTSIZE); 4825d1b434SYaxun Liu check(sizeof(intptr_t) == PTSIZE); 4925d1b434SYaxun Liu check(__alignof__(intptr_t) == PTSIZE); 5025d1b434SYaxun Liu check(sizeof(uintptr_t) == PTSIZE); 5125d1b434SYaxun Liu check(__alignof__(uintptr_t) == PTSIZE); 5225d1b434SYaxun Liu check(sizeof(ptrdiff_t) == PTSIZE); 5325d1b434SYaxun Liu check(__alignof__(ptrdiff_t) == PTSIZE); 5425d1b434SYaxun Liu 5525d1b434SYaxun Liu check(sizeof(char) == 1); 5625d1b434SYaxun Liu check(__alignof__(char) == 1); 5725d1b434SYaxun Liu check(sizeof(short) == 2); 5825d1b434SYaxun Liu check(__alignof__(short) == 2); 5925d1b434SYaxun Liu check(sizeof(int) == 4); 6025d1b434SYaxun Liu check(__alignof__(int) == 4); 6125d1b434SYaxun Liu check(sizeof(long) == 8); 6225d1b434SYaxun Liu check(__alignof__(long) == 8); 6325d1b434SYaxun Liu#ifdef cl_khr_fp16 6425d1b434SYaxun Liu check(sizeof(half) == 2); 6525d1b434SYaxun Liu check(__alignof__(half) == 2); 6625d1b434SYaxun Liu#endif 6725d1b434SYaxun Liu check(sizeof(float) == 4); 6825d1b434SYaxun Liu check(__alignof__(float) == 4); 6925d1b434SYaxun Liu#ifdef cl_khr_fp64 7025d1b434SYaxun Liu check(sizeof(double) == 8); 7125d1b434SYaxun Liu check(__alignof__(double) == 8); 7225d1b434SYaxun Liu#endif 73*78463ebdSAnton Zabaznov check(sizeof(private void*) == 4); 74*78463ebdSAnton Zabaznov check(__alignof__(private void*) == 4); 75*78463ebdSAnton Zabaznov#if (__OPENCL_C_VERSION__ == 200) || defined(__opencl_c_generic_address_space) 76*78463ebdSAnton Zabaznov check(sizeof(generic void*) == 8); 77*78463ebdSAnton Zabaznov check(__alignof__(generic void*) == 8); 78*78463ebdSAnton Zabaznov#endif 7925d1b434SYaxun Liu check(sizeof(global_ptr_t) == PTSIZE); 8025d1b434SYaxun Liu check(__alignof__(global_ptr_t) == PTSIZE); 8125d1b434SYaxun Liu check(sizeof(constant_ptr_t) == PTSIZE); 8225d1b434SYaxun Liu check(__alignof__(constant_ptr_t) == PTSIZE); 8325d1b434SYaxun Liu check(sizeof(local_ptr_t) == 4); 8425d1b434SYaxun Liu check(__alignof__(private_ptr_t) == 4); 8525d1b434SYaxun Liu} 86