ab53583c61ce15f66bf24a1a40570cbb9223ccd4
1 /****************************************************************************
2 * Copyright (C) 2014-2018 Intel Corporation. All Rights Reserved.
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
11 * The above copyright notice and this permission notice (including the next
12 * paragraph) shall be included in all copies or substantial portions of the
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
18 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
23 * @file builder_gfx_mem.h
25 * @brief Definition of the builder to support different translation types for gfx memory access
29 ******************************************************************************/
38 class BuilderGfxMem
: public Builder
41 BuilderGfxMem(JitManager
* pJitMgr
);
42 virtual ~BuilderGfxMem() {}
44 virtual LoadInst
* LOAD(Value
*Ptr
, const char *Name
, JIT_MEM_CLIENT usage
= MEM_CLIENT_INTERNAL
);
45 virtual LoadInst
* LOAD(Value
*Ptr
, const Twine
&Name
= "", JIT_MEM_CLIENT usage
= MEM_CLIENT_INTERNAL
);
46 virtual LoadInst
* LOAD(Type
*Ty
, Value
*Ptr
, const Twine
&Name
= "", JIT_MEM_CLIENT usage
= MEM_CLIENT_INTERNAL
);
47 virtual LoadInst
* LOAD(Value
*Ptr
, bool isVolatile
, const Twine
&Name
= "", JIT_MEM_CLIENT usage
= MEM_CLIENT_INTERNAL
);
48 virtual LoadInst
* LOAD(Value
*BasePtr
, const std::initializer_list
<uint32_t> &offset
, const llvm::Twine
& Name
= "", JIT_MEM_CLIENT usage
= MEM_CLIENT_INTERNAL
);
50 virtual Value
*GATHERPS(Value
*src
, Value
*pBase
, Value
*indices
, Value
*mask
, uint8_t scale
= 1, JIT_MEM_CLIENT usage
= MEM_CLIENT_INTERNAL
);
52 virtual Value
*GATHERDD(Value
* src
, Value
* pBase
, Value
* indices
, Value
* mask
, uint8_t scale
= 1, JIT_MEM_CLIENT usage
= MEM_CLIENT_INTERNAL
);
54 Value
* TranslateGfxAddress(Value
* xpGfxAddress
);
59 void AssertGFXMemoryParams(Value
* ptr
, Builder::JIT_MEM_CLIENT usage
);
61 virtual void NotifyPrivateContextSet();
63 virtual Value
* OFFSET_TO_NEXT_COMPONENT(Value
* base
, Constant
*offset
);
67 Value
* mpfnTranslateGfxAddress
;