amd_address_space.hpp 1.33 KB
Newer Older
Umang Yadav's avatar
Umang Yadav committed
1
2
3

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Weverything"
Chao Liu's avatar
Chao Liu committed
4
// SPDX-License-Identifier: MIT
Illia Silin's avatar
Illia Silin committed
5
// Copyright (c) 2018-2023, Advanced Micro Devices, Inc. All rights reserved.
Chao Liu's avatar
Chao Liu committed
6

Chao Liu's avatar
Chao Liu committed
7
#pragma once
Chao Liu's avatar
tidy  
Chao Liu committed
8

Chao Liu's avatar
Chao Liu committed
9
#include "ck/ck.hpp"
Chao Liu's avatar
Chao Liu committed
10
#include "c_style_pointer_cast.hpp"
Chao Liu's avatar
tidy  
Chao Liu committed
11

Chao Liu's avatar
Chao Liu committed
12
13
14
// Address Space for AMDGCN
// https://llvm.org/docs/AMDGPUUsage.html#address-space

Chao Liu's avatar
tidy  
Chao Liu committed
15
16
namespace ck {

17
enum struct AddressSpaceEnum
Chao Liu's avatar
tidy  
Chao Liu committed
18
19
20
21
22
23
24
25
26
{
    Generic,
    Global,
    Lds,
    Sgpr,
    Vgpr,
};

template <typename T>
27
__device__ T* cast_pointer_to_generic_address_space(T CK_CONSTANT_ADDRESS_SPACE* p)
Chao Liu's avatar
tidy  
Chao Liu committed
28
{
Chao Liu's avatar
Chao Liu committed
29
    // cast a pointer in "Constant" address space (4) to "Generic" address space (0)
Chao Liu's avatar
Chao Liu committed
30
    // only c-style pointer cast seems be able to be compiled
Chao Liu's avatar
Chao Liu committed
31
#pragma clang diagnostic push
Chao Liu's avatar
Chao Liu committed
32
#pragma clang diagnostic ignored "-Wold-style-cast"
Chao Liu's avatar
Chao Liu committed
33
34
    return (T*)p; // NOLINT(old-style-cast)
#pragma clang diagnostic pop
Chao Liu's avatar
tidy  
Chao Liu committed
35
36
}

Chao Liu's avatar
tidy  
Chao Liu committed
37
template <typename T>
38
__host__ __device__ T CK_CONSTANT_ADDRESS_SPACE* cast_pointer_to_constant_address_space(T* p)
Chao Liu's avatar
tidy  
Chao Liu committed
39
{
Chao Liu's avatar
Chao Liu committed
40
    // cast a pointer in "Generic" address space (0) to "Constant" address space (4)
Chao Liu's avatar
Chao Liu committed
41
    // only c-style pointer cast seems be able to be compiled
Chao Liu's avatar
Chao Liu committed
42
#pragma clang diagnostic push
Chao Liu's avatar
Chao Liu committed
43
#pragma clang diagnostic ignored "-Wold-style-cast"
44
    return (T CK_CONSTANT_ADDRESS_SPACE*)p; // NOLINT(old-style-cast)
Chao Liu's avatar
Chao Liu committed
45
#pragma clang diagnostic pop
Chao Liu's avatar
tidy  
Chao Liu committed
46
47
}

Chao Liu's avatar
tidy  
Chao Liu committed
48
} // namespace ck
Umang Yadav's avatar
Umang Yadav committed
49
50

#pragma clang diagnostic pop