Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(486)

Side by Side Diff: lib/IR/NaClAtomicIntrinsics.cpp

Issue 22474008: Add the new @llvm.nacl.atomic.fence.all intrinsic (Closed) Base URL: http://git.chromium.org/native_client/pnacl-llvm.git@master
Patch Set: Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 //=== llvm/IR/NaClAtomicIntrinsics.cpp - NaCl Atomic Intrinsics -*- C++ -*-===// 1 //=== llvm/IR/NaClAtomicIntrinsics.cpp - NaCl Atomic Intrinsics -*- C++ -*-===//
2 // 2 //
3 // The LLVM Compiler Infrastructure 3 // The LLVM Compiler Infrastructure
4 // 4 //
5 // This file is distributed under the University of Illinois Open Source 5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details. 6 // License. See LICENSE.TXT for details.
7 // 7 //
8 //===----------------------------------------------------------------------===// 8 //===----------------------------------------------------------------------===//
9 // 9 //
10 // This file describes atomic intrinsic functions that are specific to NaCl. 10 // This file describes atomic intrinsic functions that are specific to NaCl.
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 I[CurIntrin][CurType].ParamType[Param++] = P3; \ 47 I[CurIntrin][CurType].ParamType[Param++] = P3; \
48 I[CurIntrin][CurType].ParamType[Param++] = P4; \ 48 I[CurIntrin][CurType].ParamType[Param++] = P4; \
49 } \ 49 } \
50 ++CurIntrin; \ 50 ++CurIntrin; \
51 } while (0) 51 } while (0)
52 52
53 INIT(Ptr, Mem, NoP, NoP, NoP, load); 53 INIT(Ptr, Mem, NoP, NoP, NoP, load);
54 INIT(Ptr, Int, Mem, NoP, NoP, store); 54 INIT(Ptr, Int, Mem, NoP, NoP, store);
55 INIT(RMW, Ptr, Int, Mem, NoP, rmw); 55 INIT(RMW, Ptr, Int, Mem, NoP, rmw);
56 INIT(Ptr, Int, Int, Mem, Mem, cmpxchg); 56 INIT(Ptr, Int, Int, Mem, Mem, cmpxchg);
57 INIT(Mem, NoP, NoP, NoP, NoP, fence); 57 INIT(Mem, NoP, NoP, NoP, NoP, fence);
jvoung (off chromium) 2013/08/07 19:38:40 I think I brought this up before -- it seems a bit
JF 2013/08/07 19:55:21 I can make a "default overload type" for the funct
jvoung (off chromium) 2013/08/07 22:32:11 ok that's fine
JF 2013/08/07 22:47:41 https://code.google.com/p/nativeclient/issues/deta
58 INIT(NoP, NoP, NoP, NoP, NoP, fence_all);
58 } 59 }
59 60
60 AtomicIntrinsics::View AtomicIntrinsics::allIntrinsicsAndOverloads() const { 61 AtomicIntrinsics::View AtomicIntrinsics::allIntrinsicsAndOverloads() const {
61 return View(&I[0][0], NumAtomicIntrinsics * NumAtomicIntrinsicOverloadTypes); 62 return View(&I[0][0], NumAtomicIntrinsics * NumAtomicIntrinsicOverloadTypes);
62 } 63 }
63 64
64 AtomicIntrinsics::View AtomicIntrinsics::overloadsFor(Intrinsic::ID ID) const { 65 AtomicIntrinsics::View AtomicIntrinsics::overloadsFor(Intrinsic::ID ID) const {
65 // Overloads are stored consecutively. 66 // Overloads are stored consecutively.
66 View R = allIntrinsicsAndOverloads(); 67 View R = allIntrinsicsAndOverloads();
67 for (const AtomicIntrinsic *AI = R.begin(), *E = R.end(); AI != E; ++AI) 68 for (const AtomicIntrinsic *AI = R.begin(), *E = R.end(); AI != E; ++AI)
68 if (AI->ID == ID) 69 if (AI->ID == ID)
69 return View(AI, NumAtomicIntrinsicOverloadTypes); 70 return View(AI, NumAtomicIntrinsicOverloadTypes);
70 llvm_unreachable("unhandled atomic intrinsic"); 71 llvm_unreachable("unhandled atomic intrinsic");
71 } 72 }
72 73
73 const AtomicIntrinsics::AtomicIntrinsic * 74 const AtomicIntrinsics::AtomicIntrinsic *
74 AtomicIntrinsics::find(Intrinsic::ID ID, Type *OverloadedType) const { 75 AtomicIntrinsics::find(Intrinsic::ID ID, Type *OverloadedType) const {
75 View R = allIntrinsicsAndOverloads(); 76 View R = allIntrinsicsAndOverloads();
76 for (const AtomicIntrinsic *AI = R.begin(), *E = R.end(); AI != E; ++AI) 77 for (const AtomicIntrinsic *AI = R.begin(), *E = R.end(); AI != E; ++AI)
77 if (AI->ID == ID && AI->OverloadedType == OverloadedType) 78 if (AI->ID == ID && AI->OverloadedType == OverloadedType)
78 return AI; 79 return AI;
79 llvm_unreachable("unhandled atomic intrinsic"); 80 llvm_unreachable("unhandled atomic intrinsic");
80 } 81 }
81 82
82 } // End NaCl namespace 83 } // End NaCl namespace
83 84
84 } // End llvm namespace 85 } // End llvm namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698