xref: /aosp_15_r20/external/mesa3d/src/intel/shaders/memcpy.cl (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1*61046927SAndroid Build Coastguard Worker/* Copyright © 2023 Intel Corporation
2*61046927SAndroid Build Coastguard Worker * SPDX-License-Identifier: MIT
3*61046927SAndroid Build Coastguard Worker */
4*61046927SAndroid Build Coastguard Worker
5*61046927SAndroid Build Coastguard Workervoid
6*61046927SAndroid Build Coastguard WorkergenX(libanv_memcpy)(global void *dst_base,
7*61046927SAndroid Build Coastguard Worker                    global void *src_base,
8*61046927SAndroid Build Coastguard Worker                    uint num_dwords,
9*61046927SAndroid Build Coastguard Worker                    uint dword_offset)
10*61046927SAndroid Build Coastguard Worker{
11*61046927SAndroid Build Coastguard Worker   global void *dst = dst_base + 4 * dword_offset;
12*61046927SAndroid Build Coastguard Worker   global void *src = src_base + 4 * dword_offset;
13*61046927SAndroid Build Coastguard Worker
14*61046927SAndroid Build Coastguard Worker   if (dword_offset + 4 <= num_dwords) {
15*61046927SAndroid Build Coastguard Worker      *(global uint4 *)(dst) = *(global uint4 *)(src);
16*61046927SAndroid Build Coastguard Worker   } else if (dword_offset + 3 <= num_dwords) {
17*61046927SAndroid Build Coastguard Worker      *(global uint3 *)(dst) = *(global uint3 *)(src);
18*61046927SAndroid Build Coastguard Worker   } else if (dword_offset + 2 <= num_dwords) {
19*61046927SAndroid Build Coastguard Worker      *(global uint2 *)(dst) = *(global uint2 *)(src);
20*61046927SAndroid Build Coastguard Worker   } else if (dword_offset + 1 <= num_dwords) {
21*61046927SAndroid Build Coastguard Worker      *(global uint *)(dst) = *(global uint *)(src);
22*61046927SAndroid Build Coastguard Worker   }
23*61046927SAndroid Build Coastguard Worker}
24