xref: /aosp_15_r20/external/mesa3d/src/intel/vulkan/grl/gpu/libs/lsc_intrinsics.h (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1 //
2 // Copyright (C) 2009-2021 Intel Corporation
3 //
4 // SPDX-License-Identifier: MIT
5 //
6 //
7 
8 // LSC Loads
9 uint load_uchar_to_uint_L1UC_L3UC(global uchar* it, int offset);
10 uint load_uchar_to_uint_L1UC_L3C(global uchar* it, int offset);
11 uint load_uchar_to_uint_L1C_L3UC(global uchar* it, int offset);
12 uint load_uchar_to_uint_L1C_L3C(global uchar* it, int offset);
13 uint load_uchar_to_uint_L1S_L3UC(global uchar* it, int offset);
14 uint load_uchar_to_uint_L1S_L3C(global uchar* it, int offset);
15 uint load_uchar_to_uint_L1IAR_L3C(global uchar* it, int offset);
16 
17 uint load_ushort_to_uint_L1UC_L3UC(global ushort* it, int offset);
18 uint load_ushort_to_uint_L1UC_L3C(global ushort* it, int offset);
19 uint load_ushort_to_uint_L1C_L3UC(global ushort* it, int offset);
20 uint load_ushort_to_uint_L1C_L3C(global ushort* it, int offset);
21 uint load_ushort_to_uint_L1S_L3UC(global ushort* it, int offset);
22 uint load_ushort_to_uint_L1S_L3C(global ushort* it, int offset);
23 uint load_ushort_to_uint_L1IAR_L3C(global ushort* it, int offset);
24 
25 uint load_uint_L1UC_L3UC(global uint* it, int offset);
26 uint load_uint_L1UC_L3C(global uint* it, int offset);
27 uint load_uint_L1C_L3UC(global uint* it, int offset);
28 uint load_uint_L1C_L3C(global uint* it, int offset);
29 uint load_uint_L1S_L3UC(global uint* it, int offset);
30 uint load_uint_L1S_L3C(global uint* it, int offset);
31 uint load_uint_L1IAR_L3C(global uint* it, int offset);
32 
33 uint2 load_uint2_L1UC_L3UC(global uint2* it, int offset);
34 uint2 load_uint2_L1UC_L3C(global uint2* it, int offset);
35 uint2 load_uint2_L1C_L3UC(global uint2* it, int offset);
36 uint2 load_uint2_L1C_L3C(global uint2* it, int offset);
37 uint2 load_uint2_L1S_L3UC(global uint2* it, int offset);
38 uint2 load_uint2_L1S_L3C(global uint2* it, int offset);
39 uint2 load_uint2_L1IAR_L3C(global uint2* it, int offset);
40 
41 uint3 load_uint3_L1UC_L3UC(global uint3* it, int offset);
42 uint3 load_uint3_L1UC_L3C(global uint3* it, int offset);
43 uint3 load_uint3_L1C_L3UC(global uint3* it, int offset);
44 uint3 load_uint3_L1C_L3C(global uint3* it, int offset);
45 uint3 load_uint3_L1S_L3UC(global uint3* it, int offset);
46 uint3 load_uint3_L1S_L3C(global uint3* it, int offset);
47 uint3 load_uint3_L1IAR_L3C(global uint3* it, int offset);
48 
49 uint4 load_uint4_L1UC_L3UC(global uint4* it, int offset);
50 uint4 load_uint4_L1UC_L3C(global uint4* it, int offset);
51 uint4 load_uint4_L1C_L3UC(global uint4* it, int offset);
52 uint4 load_uint4_L1C_L3C(global uint4* it, int offset);
53 uint4 load_uint4_L1S_L3UC(global uint4* it, int offset);
54 uint4 load_uint4_L1S_L3C(global uint4* it, int offset);
55 uint4 load_uint4_L1IAR_L3C(global uint4* it, int offset);
56 
57 uint8 load_uint8_L1UC_L3UC(global uint8* it, int offset);
58 uint8 load_uint8_L1UC_L3C(global uint8* it, int offset);
59 uint8 load_uint8_L1C_L3UC(global uint8* it, int offset);
60 uint8 load_uint8_L1C_L3C(global uint8* it, int offset);
61 uint8 load_uint8_L1S_L3UC(global uint8* it, int offset);
62 uint8 load_uint8_L1S_L3C(global uint8* it, int offset);
63 uint8 load_uint8_L1IAR_L3C(global uint8* it, int offset);
64 
65 ulong load_ulong_L1UC_L3UC(global ulong* it, int offset);
66 ulong load_ulong_L1UC_L3C(global ulong* it, int offset);
67 ulong load_ulong_L1C_L3UC(global ulong* it, int offset);
68 ulong load_ulong_L1C_L3C(global ulong* it, int offset);
69 ulong load_ulong_L1S_L3UC(global ulong* it, int offset);
70 ulong load_ulong_L1S_L3C(global ulong* it, int offset);
71 ulong load_ulong_L1IAR_L3C(global ulong* it, int offset);
72 
73 ulong2 load_ulong2_L1UC_L3UC(global ulong2* it, int offset);
74 ulong2 load_ulong2_L1UC_L3C(global ulong2* it, int offset);
75 ulong2 load_ulong2_L1C_L3UC(global ulong2* it, int offset);
76 ulong2 load_ulong2_L1C_L3C(global ulong2* it, int offset);
77 ulong2 load_ulong2_L1S_L3UC(global ulong2* it, int offset);
78 ulong2 load_ulong2_L1S_L3C(global ulong2* it, int offset);
79 ulong2 load_ulong2_L1IAR_L3C(global ulong2* it, int offset);
80 
81 ulong3 load_ulong3_L1UC_L3UC(global ulong3* it, int offset);
82 ulong3 load_ulong3_L1UC_L3C(global ulong3* it, int offset);
83 ulong3 load_ulong3_L1C_L3UC(global ulong3* it, int offset);
84 ulong3 load_ulong3_L1C_L3C(global ulong3* it, int offset);
85 ulong3 load_ulong3_L1S_L3UC(global ulong3* it, int offset);
86 ulong3 load_ulong3_L1S_L3C(global ulong3* it, int offset);
87 ulong3 load_ulong3_L1IAR_L3C(global ulong3* it, int offset);
88 
89 ulong4 load_ulong4_L1UC_L3UC(global ulong4* it, int offset);
90 ulong4 load_ulong4_L1UC_L3C(global ulong4* it, int offset);
91 ulong4 load_ulong4_L1C_L3UC(global ulong4* it, int offset);
92 ulong4 load_ulong4_L1C_L3C(global ulong4* it, int offset);
93 ulong4 load_ulong4_L1S_L3UC(global ulong4* it, int offset);
94 ulong4 load_ulong4_L1S_L3C(global ulong4* it, int offset);
95 ulong4 load_ulong4_L1IAR_L3C(global ulong4* it, int offset);
96 
97 ulong8 load_ulong8_L1UC_L3UC(global ulong8* it, int offset);
98 ulong8 load_ulong8_L1UC_L3C(global ulong8* it, int offset);
99 ulong8 load_ulong8_L1C_L3UC(global ulong8* it, int offset);
100 ulong8 load_ulong8_L1C_L3C(global ulong8* it, int offset);
101 ulong8 load_ulong8_L1S_L3UC(global ulong8* it, int offset);
102 ulong8 load_ulong8_L1S_L3C(global ulong8* it, int offset);
103 ulong8 load_ulong8_L1IAR_L3C(global ulong8* it, int offset);
104 
105 // LSC Stores
106 void store_uchar_from_uint_L1UC_L3UC(global uchar* it, int offset, uint value);
107 void store_uchar_from_uint_L1UC_L3WB(global uchar* it, int offset, uint value);
108 void store_uchar_from_uint_L1WT_L3UC(global uchar* it, int offset, uint value);
109 void store_uchar_from_uint_L1WT_L3WB(global uchar* it, int offset, uint value);
110 void store_uchar_from_uint_L1S_L3UC(global uchar* it, int offset, uint value);
111 void store_uchar_from_uint_L1S_L3WB(global uchar* it, int offset, uint value);
112 void store_uchar_from_uint_L1WB_L3WB(global uchar* it, int offset, uint value);
113 
114 void store_ushort_from_uint_L1UC_L3UC(global ushort* it, int offset, uint value);
115 void store_ushort_from_uint_L1UC_L3WB(global ushort* it, int offset, uint value);
116 void store_ushort_from_uint_L1WT_L3UC(global ushort* it, int offset, uint value);
117 void store_ushort_from_uint_L1WT_L3WB(global ushort* it, int offset, uint value);
118 void store_ushort_from_uint_L1S_L3UC(global ushort* it, int offset, uint value);
119 void store_ushort_from_uint_L1S_L3WB(global ushort* it, int offset, uint value);
120 void store_ushort_from_uint_L1WB_L3WB(global ushort* it, int offset, uint value);
121 
122 void store_uint_L1UC_L3UC(global uint* it, int offset, uint value);
123 void store_uint_L1UC_L3WB(global uint* it, int offset, uint value);
124 void store_uint_L1WT_L3UC(global uint* it, int offset, uint value);
125 void store_uint_L1WT_L3WB(global uint* it, int offset, uint value);
126 void store_uint_L1S_L3UC(global uint* it, int offset, uint value);
127 void store_uint_L1S_L3WB(global uint* it, int offset, uint value);
128 void store_uint_L1WB_L3WB(global uint* it, int offset, uint value);
129 
130 void store_uint2_L1UC_L3UC(global uint2* it, int offset, uint2 value);
131 void store_uint2_L1UC_L3WB(global uint2* it, int offset, uint2 value);
132 void store_uint2_L1WT_L3UC(global uint2* it, int offset, uint2 value);
133 void store_uint2_L1WT_L3WB(global uint2* it, int offset, uint2 value);
134 void store_uint2_L1S_L3UC(global uint2* it, int offset, uint2 value);
135 void store_uint2_L1S_L3WB(global uint2* it, int offset, uint2 value);
136 void store_uint2_L1WB_L3WB(global uint2* it, int offset, uint2 value);
137 
138 void store_uint3_L1UC_L3UC(global uint3* it, int offset, uint3 value);
139 void store_uint3_L1UC_L3WB(global uint3* it, int offset, uint3 value);
140 void store_uint3_L1WT_L3UC(global uint3* it, int offset, uint3 value);
141 void store_uint3_L1WT_L3WB(global uint3* it, int offset, uint3 value);
142 void store_uint3_L1S_L3UC(global uint3* it, int offset, uint3 value);
143 void store_uint3_L1S_L3WB(global uint3* it, int offset, uint3 value);
144 void store_uint3_L1WB_L3WB(global uint3* it, int offset, uint3 value);
145 
146 void store_uint4_L1UC_L3UC(global uint4* it, int offset, uint4 value);
147 void store_uint4_L1UC_L3WB(global uint4* it, int offset, uint4 value);
148 void store_uint4_L1WT_L3UC(global uint4* it, int offset, uint4 value);
149 void store_uint4_L1WT_L3WB(global uint4* it, int offset, uint4 value);
150 void store_uint4_L1S_L3UC(global uint4* it, int offset, uint4 value);
151 void store_uint4_L1S_L3WB(global uint4* it, int offset, uint4 value);
152 void store_uint4_L1WB_L3WB(global uint4* it, int offset, uint4 value);
153 
154 void store_uint8_L1UC_L3UC(global uint8* it, int offset, uint8 value);
155 void store_uint8_L1UC_L3WB(global uint8* it, int offset, uint8 value);
156 void store_uint8_L1WT_L3UC(global uint8* it, int offset, uint8 value);
157 void store_uint8_L1WT_L3WB(global uint8* it, int offset, uint8 value);
158 void store_uint8_L1S_L3UC(global uint8* it, int offset, uint8 value);
159 void store_uint8_L1S_L3WB(global uint8* it, int offset, uint8 value);
160 void store_uint8_L1WB_L3WB(global uint8* it, int offset, uint8 value);
161 
162 void store_ulong_L1UC_L3UC(global ulong* it, int offset, ulong value);
163 void store_ulong_L1UC_L3WB(global ulong* it, int offset, ulong value);
164 void store_ulong_L1WT_L3UC(global ulong* it, int offset, ulong value);
165 void store_ulong_L1WT_L3WB(global ulong* it, int offset, ulong value);
166 void store_ulong_L1S_L3UC(global ulong* it, int offset, ulong value);
167 void store_ulong_L1S_L3WB(global ulong* it, int offset, ulong value);
168 void store_ulong_L1WB_L3WB(global ulong* it, int offset, ulong value);
169 
170 void store_ulong2_L1UC_L3UC(global ulong2* it, int offset, ulong2 value);
171 void store_ulong2_L1UC_L3WB(global ulong2* it, int offset, ulong2 value);
172 void store_ulong2_L1WT_L3UC(global ulong2* it, int offset, ulong2 value);
173 void store_ulong2_L1WT_L3WB(global ulong2* it, int offset, ulong2 value);
174 void store_ulong2_L1S_L3UC(global ulong2* it, int offset, ulong2 value);
175 void store_ulong2_L1S_L3WB(global ulong2* it, int offset, ulong2 value);
176 void store_ulong2_L1WB_L3WB(global ulong2* it, int offset, ulong2 value);
177 
178 void store_ulong3_L1UC_L3UC(global ulong3* it, int offset, ulong3 value);
179 void store_ulong3_L1UC_L3WB(global ulong3* it, int offset, ulong3 value);
180 void store_ulong3_L1WT_L3UC(global ulong3* it, int offset, ulong3 value);
181 void store_ulong3_L1WT_L3WB(global ulong3* it, int offset, ulong3 value);
182 void store_ulong3_L1S_L3UC(global ulong3* it, int offset, ulong3 value);
183 void store_ulong3_L1S_L3WB(global ulong3* it, int offset, ulong3 value);
184 void store_ulong3_L1WB_L3WB(global ulong3* it, int offset, ulong3 value);
185 
186 void store_ulong4_L1UC_L3UC(global ulong4* it, int offset, ulong4 value);
187 void store_ulong4_L1UC_L3WB(global ulong4* it, int offset, ulong4 value);
188 void store_ulong4_L1WT_L3UC(global ulong4* it, int offset, ulong4 value);
189 void store_ulong4_L1WT_L3WB(global ulong4* it, int offset, ulong4 value);
190 void store_ulong4_L1S_L3UC(global ulong4* it, int offset, ulong4 value);
191 void store_ulong4_L1S_L3WB(global ulong4* it, int offset, ulong4 value);
192 void store_ulong4_L1WB_L3WB(global ulong4* it, int offset, ulong4 value);
193 
194 void store_ulong8_L1UC_L3UC(global ulong8* it, int offset, ulong8 value);
195 void store_ulong8_L1UC_L3WB(global ulong8* it, int offset, ulong8 value);
196 void store_ulong8_L1WT_L3UC(global ulong8* it, int offset, ulong8 value);
197 void store_ulong8_L1WT_L3WB(global ulong8* it, int offset, ulong8 value);
198 void store_ulong8_L1S_L3UC(global ulong8* it, int offset, ulong8 value);
199 void store_ulong8_L1S_L3WB(global ulong8* it, int offset, ulong8 value);
200 void store_ulong8_L1WB_L3WB(global ulong8* it, int offset, ulong8 value);
201 
202 // LSC Fence support
203 void mem_fence_gpu_default();
204 void mem_fence_workgroup_default();
205 void mem_fence_gpu_invalidate();
206 void mem_fence_gpu_evict();
207 void mem_fence_evict_to_memory();
208