| Index: include/llvm/IR/NaCl.h
|
| diff --git a/include/llvm/IR/NaCl.h b/include/llvm/IR/NaCl.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..5fc79f83226db17b5e98ce7d1185aee542f11b0f
|
| --- /dev/null
|
| +++ b/include/llvm/IR/NaCl.h
|
| @@ -0,0 +1,72 @@
|
| +//===-- llvm/IR/NaCl.h - NaCl Intrinsic Function Handling -------*- C++ -*-===//
|
| +//
|
| +// The LLVM Compiler Infrastructure
|
| +//
|
| +// This file is distributed under the University of Illinois Open Source
|
| +// License. See LICENSE.TXT for details.
|
| +//
|
| +//===----------------------------------------------------------------------===//
|
| +//
|
| +// This file defines a set of enums which allow processing of intrinsic
|
| +// functions that are specific to NaCl. The order of these enums should
|
| +// not change: they offer forward compatibility of bitcode targeted to
|
| +// NaCl.
|
| +//
|
| +//===----------------------------------------------------------------------===//
|
| +
|
| +#ifndef LLVM_IR_NACL_H
|
| +#define LLVM_IR_NACL_H
|
| +
|
| +#include "llvm/IR/Intrinsics.h"
|
| +
|
| +namespace llvm {
|
| +
|
| +namespace NaCl {
|
| +
|
| +const struct {
|
| + Intrinsic::ID ID;
|
| + unsigned BitSize;
|
| +} AtomicIntrinsics[] = {
|
| + { Intrinsic::nacl_atomic_8, 8 },
|
| + { Intrinsic::nacl_atomic_16, 16 },
|
| + { Intrinsic::nacl_atomic_32, 32 },
|
| + { Intrinsic::nacl_atomic_64, 64 }
|
| +};
|
| +
|
| +enum {
|
| + NumAtomicIntrinsics = sizeof(AtomicIntrinsics) / sizeof(AtomicIntrinsics[0])
|
| +};
|
| +
|
| +// Operations that can be represented by the nacl.atomic.<size> intrinsics.
|
| +enum AtomicOperation {
|
| + AtomicInvalid = 0, // Invalid, keep first.
|
| + AtomicLoad,
|
| + AtomicStore,
|
| + AtomicAdd,
|
| + AtomicSub,
|
| + AtomicOr,
|
| + AtomicAnd,
|
| + AtomicXor,
|
| + AtomicXchg,
|
| + AtomicCmpXchg,
|
| + AtomicFence,
|
| + AtomicNum // Invalid, keep last.
|
| +};
|
| +
|
| +// Memory orderings supported by C11/C++11.
|
| +enum MemoryOrder {
|
| + MemoryOrderInvalid = 0, // Invalid, keep first.
|
| + MemoryOrderRelaxed,
|
| + MemoryOrderConsume,
|
| + MemoryOrderAcquire,
|
| + MemoryOrderRelease,
|
| + MemoryOrderAcquireRelease,
|
| + MemoryOrderSequentiallyConsistent,
|
| + MemoryOrderNum // Invalid, keep last.
|
| +};
|
| +
|
| +} // End NaCl namespace
|
| +
|
| +} // End llvm namespace
|
| +
|
| +#endif
|
|
|