| //===--- ModRef.cpp - Memory effect modeling --------------------*- C++ -*-===// |
| // |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| // See https://llvm.org/LICENSE.txt for license information. |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| // |
| //===----------------------------------------------------------------------===// |
| // |
| // This file implements ModRef and MemoryEffects misc functions. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #include "llvm/Support/ModRef.h" |
| #include "llvm/ADT/STLExtras.h" |
| |
| using namespace llvm; |
| |
| raw_ostream &llvm::operator<<(raw_ostream &OS, ModRefInfo MR) { |
| switch (MR) { |
| case ModRefInfo::NoModRef: |
| OS << "NoModRef"; |
| break; |
| case ModRefInfo::Ref: |
| OS << "Ref"; |
| break; |
| case ModRefInfo::Mod: |
| OS << "Mod"; |
| break; |
| case ModRefInfo::ModRef: |
| OS << "ModRef"; |
| break; |
| } |
| return OS; |
| } |
| |
| raw_ostream &llvm::operator<<(raw_ostream &OS, MemoryEffects ME) { |
| interleaveComma(MemoryEffects::locations(), OS, [&](IRMemLocation Loc) { |
| switch (Loc) { |
| case IRMemLocation::ArgMem: |
| OS << "ArgMem: "; |
| break; |
| case IRMemLocation::InaccessibleMem: |
| OS << "InaccessibleMem: "; |
| break; |
| case IRMemLocation::Other: |
| OS << "Other: "; |
| break; |
| } |
| OS << ME.getModRef(Loc); |
| }); |
| return OS; |
| } |