xref: /llvm-project/clang/test/CodeGenOpenCL/amdgpu-sizeof-alignof.cl (revision 78463ebde2f8a1b8ce984c1ae7c6da0c2d323005)
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