summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--llvm/lib/Target/X86/X86InstrFMA3Info.cpp11
-rw-r--r--llvm/lib/Target/X86/X86InstrFMA3Info.h18
2 files changed, 2 insertions, 27 deletions
diff --git a/llvm/lib/Target/X86/X86InstrFMA3Info.cpp b/llvm/lib/Target/X86/X86InstrFMA3Info.cpp
index 376aab7abe3..3819e5791d6 100644
--- a/llvm/lib/Target/X86/X86InstrFMA3Info.cpp
+++ b/llvm/lib/Target/X86/X86InstrFMA3Info.cpp
@@ -21,10 +21,6 @@
using namespace llvm;
-/// This flag is used in the method llvm::call_once() used below to make the
-/// initialization of the map 'OpcodeToGroup' thread safe.
-static llvm::once_flag InitGroupsOnceFlag;
-
static ManagedStatic<X86InstrFMA3Info> X86InstrFMA3InfoObj;
X86InstrFMA3Info *X86InstrFMA3Info::getX86InstrFMA3Info() {
return &*X86InstrFMA3InfoObj;
@@ -233,7 +229,7 @@ static const X86InstrFMA3Group Groups[] = {
FMA3_AVX512_VECTOR_GROUP(VFMSUBADD)
};
-void X86InstrFMA3Info::initGroupsOnceImpl() {
+X86InstrFMA3Info::X86InstrFMA3Info() {
for (const X86InstrFMA3Group &G : Groups) {
if (G.RegOpcodes[0])
OpcodeToGroup[G.RegOpcodes[0]] = &G;
@@ -249,8 +245,3 @@ void X86InstrFMA3Info::initGroupsOnceImpl() {
OpcodeToGroup[G.MemOpcodes[2]] = &G;
}
}
-
-void X86InstrFMA3Info::initGroupsOnce() {
- llvm::call_once(InitGroupsOnceFlag,
- []() { getX86InstrFMA3Info()->initGroupsOnceImpl(); });
-}
diff --git a/llvm/lib/Target/X86/X86InstrFMA3Info.h b/llvm/lib/Target/X86/X86InstrFMA3Info.h
index 3f8be850e65..2557d7919dc 100644
--- a/llvm/lib/Target/X86/X86InstrFMA3Info.h
+++ b/llvm/lib/Target/X86/X86InstrFMA3Info.h
@@ -151,31 +151,18 @@ private:
/// from the group.
DenseMap<unsigned, const X86InstrFMA3Group *> OpcodeToGroup;
- /// Creates groups of FMA opcodes and initializes Opcode-to-Group map.
- /// This method can be called many times, but the actual initialization is
- /// called only once.
- static void initGroupsOnce();
-
- /// Creates groups of FMA opcodes and initializes Opcode-to-Group map.
- /// This method must be called ONLY from initGroupsOnce(). Otherwise, such
- /// call is not thread safe.
- void initGroupsOnceImpl();
-
public:
/// Returns the reference to an object of this class. It is assumed that
/// only one object may exist.
static X86InstrFMA3Info *getX86InstrFMA3Info();
/// Constructor. Just creates an object of the class.
- X86InstrFMA3Info() = default;
+ X86InstrFMA3Info();
/// Returns a reference to a group of FMA3 opcodes to where the given
/// \p Opcode is included. If the given \p Opcode is not recognized as FMA3
/// and not included into any FMA3 group, then nullptr is returned.
static const X86InstrFMA3Group *getFMA3Group(unsigned Opcode) {
- // Ensure that the groups of opcodes are initialized.
- initGroupsOnce();
-
// Find the group including the given opcode.
const X86InstrFMA3Info *FMA3Info = getX86InstrFMA3Info();
auto I = FMA3Info->OpcodeToGroup.find(Opcode);
@@ -189,9 +176,6 @@ public:
static bool isFMA3(unsigned Opcode) {
return getFMA3Group(Opcode) != nullptr;
}
-
- /// Iterator that is used to walk on FMA register opcodes having memory
- /// form equivalents.
};
} // end namespace llvm
OpenPOWER on IntegriCloud