Skip to content
This repository was archived by the owner on Apr 23, 2020. It is now read-only.

OCL12AdapterPass #29

Closed
wants to merge 33 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
c601de3
Add addPreLinkPasses to target machine to allow pre-linking passes. (#2)
yxsamliu Jun 27, 2016
8b2172e
Merge branch 'amd-master' of git.amd.com:lightning/er/llvm into amd-c…
Jun 28, 2016
7afd988
Merge branch 'amd-master' of git.amd.com:lightning/er/llvm into amd-c…
Jun 29, 2016
ffd44f9
Merge branch amd-master into amd-common
Jul 4, 2016
f79e604
Merge branch amd-master into amd-common
Jul 5, 2016
d665f09
Merge branch amd-master into amd-common
Jul 13, 2016
093ba70
Merge branch amd-master into amd-common
Jul 13, 2016
db923ee
Merge branch amd-master into amd-common
Jul 14, 2016
ae2aeb0
Merge branch 'amd-master' into amd-common
tstellarAMD Jul 18, 2016
6fca976
Merge branch 'amd-master' into amd-common
tstellarAMD Jul 22, 2016
2628742
Merge branch amd-master into amd-common
Jul 23, 2016
5a71ace
Merge branch amd-master into amd-common
Jul 23, 2016
eec8a07
Merge branch amd-master into amd-common
Jul 24, 2016
549f2a1
Merge branch amd-master into amd-common
Jul 25, 2016
3d4ad3b
Merge branch amd-master into amd-common
Jul 27, 2016
c37c4c0
Merge branch amd-master into amd-common
Jul 28, 2016
32032f3
Merge branch amd-master into amd-common
Aug 8, 2016
ac28522
Merge branch amd-master into amd-common
Aug 10, 2016
8ebc332
Merge branch amd-master into amd-common
Aug 11, 2016
e6aec93
Merge branch amd-master into amd-common
Aug 12, 2016
78d4f10
AMDGPU/SI: implements image load/store intrinsics
Aug 15, 2016
7ac9638
Merge pull request #4 from changpeng/mimg-intrinsics
tstellarAMD Aug 16, 2016
d7b59cb
Enhance synchscope
kzhuravl Aug 16, 2016
ef41da7
Merge branch amd-master into amd-common
Aug 19, 2016
02d5177
Merge pull request #5 from kzhuravl/synchscopes
tstellarAMD Aug 19, 2016
0196f0a
Merge branch amd-master into amd-common
Aug 23, 2016
4a89a15
Merge branch 'amd-master' into amd-common
kzhuravl Aug 25, 2016
1ce4433
Merge branch amd-master into amd-common
Aug 26, 2016
1f5ea9b
Merge branch amd-master into amd-common
Aug 29, 2016
884f280
Merge branch amd-master into amd-common
Aug 30, 2016
e0c8835
Merge branch amd-master into amd-common
Aug 31, 2016
03fe5fa
AMDGPU OCL 12 adapter pass
alex-t Aug 31, 2016
3625db0
Making wrapper 'externalWeakLinkage' to prevent linker complains when…
alex-t Sep 8, 2016
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions include/llvm/Bitcode/LLVMBitCodes.h
Original file line number Diff line number Diff line change
Expand Up @@ -370,9 +370,15 @@ enum AtomicOrderingCodes {
};

/// Encoded SynchronizationScope values.
enum AtomicSynchScopeCodes {
enum AtomicSynchScopeCodes : unsigned {
/// Encoded value for SingleThread synchronization scope.
SYNCHSCOPE_SINGLETHREAD = 0,
SYNCHSCOPE_CROSSTHREAD = 1

/// Encoded value for CrossThread synchronization scope.
SYNCHSCOPE_CROSSTHREAD = 1,

/// First encoded value for target specific synchronization scope.
SYNCHSCOPE_FIRSTTARGETSPECIFIC = 2
};

/// Markers and flags for call instruction.
Expand Down
25 changes: 17 additions & 8 deletions include/llvm/CodeGen/SelectionDAGNodes.h
Original file line number Diff line number Diff line change
Expand Up @@ -431,7 +431,6 @@ class SDNode : public FoldingSetNode, public ilist_node<SDNode> {
uint16_t IsVolatile : 1;
uint16_t IsNonTemporal : 1;
uint16_t IsInvariant : 1;
uint16_t SynchScope : 1; // enum SynchronizationScope
uint16_t Ordering : 4; // enum AtomicOrdering
};
enum { NumMemSDNodeBits = NumSDNodeBits + 8 };
Expand Down Expand Up @@ -1075,6 +1074,11 @@ class MemSDNode : public SDNode {
/// Memory reference information.
MachineMemOperand *MMO;

/// The synchronization scope of this atomic operation. Not quite enough room
/// in SubclassData for everything, so synchronization scope gets its own
/// field.
SynchronizationScope SynchScope;

public:
MemSDNode(unsigned Opc, unsigned Order, const DebugLoc &dl, SDVTList VTs,
EVT MemoryVT, MachineMemOperand *MMO);
Expand Down Expand Up @@ -1107,11 +1111,14 @@ class MemSDNode : public SDNode {
bool isNonTemporal() const { return MemSDNodeBits.IsNonTemporal; }
bool isInvariant() const { return MemSDNodeBits.IsInvariant; }

/// Returns the ordering of this atomic operation.
AtomicOrdering getOrdering() const {
return static_cast<AtomicOrdering>(MemSDNodeBits.Ordering);
}

/// Returns the synchronization scope of this atomic operation.
SynchronizationScope getSynchScope() const {
return static_cast<SynchronizationScope>(MemSDNodeBits.SynchScope);
return SynchScope;
}

// Returns the offset from the location of the access.
Expand Down Expand Up @@ -1185,18 +1192,18 @@ class MemSDNode : public SDNode {

/// This is an SDNode representing atomic operations.
class AtomicSDNode : public MemSDNode {
/// For cmpxchg instructions, the ordering requirements when a store does not
/// occur.
/// For cmpxchg operations, the ordering requirements when a store does not
/// occur. Not quite enough room in SubclassData for everything, so failure
/// gets its own field.
AtomicOrdering FailureOrdering;

void InitAtomic(AtomicOrdering SuccessOrdering,
AtomicOrdering FailureOrdering,
SynchronizationScope SynchScope) {
MemSDNodeBits.Ordering = static_cast<uint16_t>(SuccessOrdering);
assert(getOrdering() == SuccessOrdering && "Value truncated");
MemSDNodeBits.SynchScope = static_cast<uint16_t>(SynchScope);
assert(getSynchScope() == SynchScope && "Value truncated");
this->FailureOrdering = FailureOrdering;
this->SynchScope = SynchScope;
}

public:
Expand All @@ -1211,12 +1218,14 @@ class AtomicSDNode : public MemSDNode {
const SDValue &getBasePtr() const { return getOperand(1); }
const SDValue &getVal() const { return getOperand(2); }

/// For cmpxchg operations, returns the ordering requirements when store
/// occurs.
AtomicOrdering getSuccessOrdering() const {
return getOrdering();
}

// Not quite enough room in SubclassData for everything, so failure gets its
// own field.
/// For cmpxchg operations, returns the ordering requirements when store does
/// not occur.
AtomicOrdering getFailureOrdering() const {
return FailureOrdering;
}
Expand Down
Loading