Clang Project

clang_source_code/test/CodeGenOpenCL/intel-subgroups-avc-ext-types.cl
1// RUN: %clang_cc1 %s -triple spir-unknown-unknown -cl-std=CL1.2 -cl-ext=+cl_intel_device_side_avc_motion_estimation -emit-llvm -o - -O0 | FileCheck %s
2
3// CHECK: %opencl.intel_sub_group_avc_mce_payload_t = type opaque
4// CHECK: %opencl.intel_sub_group_avc_ime_payload_t = type opaque
5// CHECK: %opencl.intel_sub_group_avc_ref_payload_t = type opaque
6// CHECK: %opencl.intel_sub_group_avc_sic_payload_t = type opaque
7
8// CHECK: %opencl.intel_sub_group_avc_mce_result_t = type opaque
9// CHECK: %opencl.intel_sub_group_avc_ime_result_t = type opaque
10// CHECK: %opencl.intel_sub_group_avc_ref_result_t = type opaque
11// CHECK: %opencl.intel_sub_group_avc_sic_result_t = type opaque
12
13// CHECK: %opencl.intel_sub_group_avc_ime_result_single_reference_streamout_t = type opaque
14// CHECK: %opencl.intel_sub_group_avc_ime_result_dual_reference_streamout_t = type opaque
15// CHECK: %opencl.intel_sub_group_avc_ime_single_reference_streamin_t = type opaque
16// CHECK: %opencl.intel_sub_group_avc_ime_dual_reference_streamin_t = type opaque
17
18// CHECK: store %opencl.intel_sub_group_avc_ime_payload_t* null,
19// CHECK: store %opencl.intel_sub_group_avc_ref_payload_t* null,
20// CHECK: store %opencl.intel_sub_group_avc_sic_payload_t* null,
21
22// CHECK: store %opencl.intel_sub_group_avc_ime_result_t* null,
23// CHECK: store %opencl.intel_sub_group_avc_ref_result_t* null,
24// CHECK: store %opencl.intel_sub_group_avc_sic_result_t* null,
25
26// CHECK: store %opencl.intel_sub_group_avc_ime_result_single_reference_streamout_t* null,
27// CHECK: store %opencl.intel_sub_group_avc_ime_result_dual_reference_streamout_t* null,
28// CHECK: store %opencl.intel_sub_group_avc_ime_single_reference_streamin_t* null,
29// CHECK: store %opencl.intel_sub_group_avc_ime_dual_reference_streamin_t* null,
30//
31// CHECK: store %opencl.intel_sub_group_avc_ime_payload_t* null,
32// CHECK: store %opencl.intel_sub_group_avc_ref_payload_t* null,
33// CHECK: store %opencl.intel_sub_group_avc_sic_payload_t* null,
34
35// CHECK: store %opencl.intel_sub_group_avc_ime_result_t* null,
36// CHECK: store %opencl.intel_sub_group_avc_ref_result_t* null,
37// CHECK: store %opencl.intel_sub_group_avc_sic_result_t* null,
38
39// CHECK: store %opencl.intel_sub_group_avc_ime_result_single_reference_streamout_t* null,
40// CHECK: store %opencl.intel_sub_group_avc_ime_result_dual_reference_streamout_t* null,
41// CHECK: store %opencl.intel_sub_group_avc_ime_single_reference_streamin_t* null,
42// CHECK: store %opencl.intel_sub_group_avc_ime_dual_reference_streamin_t* null,
43
44#pragma OPENCL EXTENSION cl_intel_device_side_avc_motion_estimation : enable
45
46// Using 0x0 directly allows us not to include opencl-c.h header and not to
47// redefine all of these CLK_AVC_*_INTITIALIZE_INTEL macro. '0x0' value must
48// be in sync with ones defined in opencl-c.h
49
50void foo() {
51  intel_sub_group_avc_mce_payload_t payload_mce; // No literal initializer for mce types
52  intel_sub_group_avc_ime_payload_t payload_ime = 0x0;
53  intel_sub_group_avc_ref_payload_t payload_ref = 0x0;
54  intel_sub_group_avc_sic_payload_t payload_sic = 0x0;
55
56  intel_sub_group_avc_mce_result_t result_mce; // No literal initializer for mce types
57  intel_sub_group_avc_ime_result_t result_ime = 0x0;
58  intel_sub_group_avc_ref_result_t result_ref = 0x0;
59  intel_sub_group_avc_sic_result_t result_sic = 0x0;
60
61  intel_sub_group_avc_ime_result_single_reference_streamout_t sstreamout = 0x0;
62  intel_sub_group_avc_ime_result_dual_reference_streamout_t dstreamout = 0x0;
63  intel_sub_group_avc_ime_single_reference_streamin_t sstreamin = 0x0;
64  intel_sub_group_avc_ime_dual_reference_streamin_t dstreamin = 0x0;
65
66  // Initialization with initializer list was supported in the first version
67  // of the extension. So we check for backward compatibility here.
68  intel_sub_group_avc_ime_payload_t payload_ime_list = {0};
69  intel_sub_group_avc_ref_payload_t payload_ref_list = {0};
70  intel_sub_group_avc_sic_payload_t payload_sic_list = {0};
71
72  intel_sub_group_avc_ime_result_t result_ime_list = {0};
73  intel_sub_group_avc_ref_result_t result_ref_list = {0};
74  intel_sub_group_avc_sic_result_t result_sic_list = {0};
75
76  intel_sub_group_avc_ime_result_single_reference_streamout_t sstreamout_list = {0};
77  intel_sub_group_avc_ime_result_dual_reference_streamout_t dstreamout_list = {0};
78  intel_sub_group_avc_ime_single_reference_streamin_t sstreamin_list = {0};
79  intel_sub_group_avc_ime_dual_reference_streamin_t dstreamin_list = {0};
80}
81
82