| Index: src/IceIntrinsics.cpp
|
| diff --git a/src/IceIntrinsics.cpp b/src/IceIntrinsics.cpp
|
| index 16d07e12fe4c974943478fc1af10a8cc7934df9c..29b8ad2cabc571e49b65510986684c6056b37e61 100644
|
| --- a/src/IceIntrinsics.cpp
|
| +++ b/src/IceIntrinsics.cpp
|
| @@ -28,7 +28,8 @@ static_assert(sizeof(Intrinsics::IntrinsicInfo) == 4,
|
|
|
| namespace {
|
|
|
| -#define INTRIN(ID, SE, RT) { Intrinsics::ID, Intrinsics::SE, Intrinsics::RT }
|
| +#define INTRIN(ID, SE, RT) \
|
| + { Intrinsics::ID, Intrinsics::SE, Intrinsics::RT }
|
|
|
| // Build list of intrinsics with their attributes and expected prototypes.
|
| // List is sorted alphabetically.
|
| @@ -40,163 +41,169 @@ const struct IceIntrinsicsEntry_ {
|
| #define AtomicCmpxchgInit(Overload, NameSuffix) \
|
| { \
|
| { \
|
| - INTRIN(AtomicCmpxchg, SideEffects_T, ReturnsTwice_F), \
|
| - { Overload, IceType_i32, Overload, Overload, IceType_i32, IceType_i32 }, \
|
| - 6 }, \
|
| - "nacl.atomic.cmpxchg." NameSuffix \
|
| + INTRIN(AtomicCmpxchg, SideEffects_T, ReturnsTwice_F), {Overload, \
|
| + IceType_i32, \
|
| + Overload, \
|
| + Overload, \
|
| + IceType_i32, \
|
| + IceType_i32}, \
|
| + 6 \
|
| + } \
|
| + , "nacl.atomic.cmpxchg." NameSuffix \
|
| }
|
| - AtomicCmpxchgInit(IceType_i8, "i8"),
|
| - AtomicCmpxchgInit(IceType_i16, "i16"),
|
| - AtomicCmpxchgInit(IceType_i32, "i32"),
|
| - AtomicCmpxchgInit(IceType_i64, "i64"),
|
| + AtomicCmpxchgInit(IceType_i8, "i8"),
|
| + AtomicCmpxchgInit(IceType_i16, "i16"),
|
| + AtomicCmpxchgInit(IceType_i32, "i32"),
|
| + AtomicCmpxchgInit(IceType_i64, "i64"),
|
| #undef AtomicCmpxchgInit
|
|
|
| - { { INTRIN(AtomicFence, SideEffects_T, ReturnsTwice_F),
|
| - { IceType_void, IceType_i32 }, 2 },
|
| - "nacl.atomic.fence" },
|
| - { { INTRIN(AtomicFenceAll, SideEffects_T, ReturnsTwice_F),
|
| - { IceType_void }, 1 },
|
| - "nacl.atomic.fence.all" },
|
| - { { INTRIN(AtomicIsLockFree, SideEffects_F, ReturnsTwice_F),
|
| - { IceType_i1, IceType_i32, IceType_i32 }, 3 },
|
| - "nacl.atomic.is.lock.free" },
|
| + {{INTRIN(AtomicFence, SideEffects_T, ReturnsTwice_F),
|
| + {IceType_void, IceType_i32},
|
| + 2},
|
| + "nacl.atomic.fence"},
|
| + {{INTRIN(AtomicFenceAll, SideEffects_T, ReturnsTwice_F),
|
| + {IceType_void},
|
| + 1},
|
| + "nacl.atomic.fence.all"},
|
| + {{INTRIN(AtomicIsLockFree, SideEffects_F, ReturnsTwice_F),
|
| + {IceType_i1, IceType_i32, IceType_i32},
|
| + 3},
|
| + "nacl.atomic.is.lock.free"},
|
|
|
| #define AtomicLoadInit(Overload, NameSuffix) \
|
| { \
|
| { \
|
| INTRIN(AtomicLoad, SideEffects_T, ReturnsTwice_F), \
|
| - { Overload, IceType_i32, IceType_i32 }, 3 }, \
|
| - "nacl.atomic.load." NameSuffix \
|
| + {Overload, IceType_i32, IceType_i32}, 3 \
|
| + } \
|
| + , "nacl.atomic.load." NameSuffix \
|
| }
|
| - AtomicLoadInit(IceType_i8, "i8"),
|
| - AtomicLoadInit(IceType_i16, "i16"),
|
| - AtomicLoadInit(IceType_i32, "i32"),
|
| - AtomicLoadInit(IceType_i64, "i64"),
|
| + AtomicLoadInit(IceType_i8, "i8"),
|
| + AtomicLoadInit(IceType_i16, "i16"),
|
| + AtomicLoadInit(IceType_i32, "i32"),
|
| + AtomicLoadInit(IceType_i64, "i64"),
|
| #undef AtomicLoadInit
|
|
|
| #define AtomicRMWInit(Overload, NameSuffix) \
|
| { \
|
| { \
|
| INTRIN(AtomicRMW, SideEffects_T, ReturnsTwice_F) \
|
| - , { Overload, IceType_i32, IceType_i32, Overload, IceType_i32 }, 5 \
|
| + , {Overload, IceType_i32, IceType_i32, Overload, IceType_i32}, 5 \
|
| } \
|
| , "nacl.atomic.rmw." NameSuffix \
|
| }
|
| - AtomicRMWInit(IceType_i8, "i8"),
|
| - AtomicRMWInit(IceType_i16, "i16"),
|
| - AtomicRMWInit(IceType_i32, "i32"),
|
| - AtomicRMWInit(IceType_i64, "i64"),
|
| + AtomicRMWInit(IceType_i8, "i8"),
|
| + AtomicRMWInit(IceType_i16, "i16"),
|
| + AtomicRMWInit(IceType_i32, "i32"),
|
| + AtomicRMWInit(IceType_i64, "i64"),
|
| #undef AtomicRMWInit
|
|
|
| #define AtomicStoreInit(Overload, NameSuffix) \
|
| { \
|
| { \
|
| INTRIN(AtomicStore, SideEffects_T, ReturnsTwice_F) \
|
| - , { IceType_void, Overload, IceType_i32, IceType_i32 }, 4 \
|
| + , {IceType_void, Overload, IceType_i32, IceType_i32}, 4 \
|
| } \
|
| , "nacl.atomic.store." NameSuffix \
|
| }
|
| - AtomicStoreInit(IceType_i8, "i8"),
|
| - AtomicStoreInit(IceType_i16, "i16"),
|
| - AtomicStoreInit(IceType_i32, "i32"),
|
| - AtomicStoreInit(IceType_i64, "i64"),
|
| + AtomicStoreInit(IceType_i8, "i8"),
|
| + AtomicStoreInit(IceType_i16, "i16"),
|
| + AtomicStoreInit(IceType_i32, "i32"),
|
| + AtomicStoreInit(IceType_i64, "i64"),
|
| #undef AtomicStoreInit
|
|
|
| #define BswapInit(Overload, NameSuffix) \
|
| { \
|
| { \
|
| INTRIN(Bswap, SideEffects_F, ReturnsTwice_F) \
|
| - , { Overload, Overload }, 2 \
|
| + , {Overload, Overload}, 2 \
|
| } \
|
| , "bswap." NameSuffix \
|
| }
|
| - BswapInit(IceType_i16, "i16"),
|
| - BswapInit(IceType_i32, "i32"),
|
| - BswapInit(IceType_i64, "i64"),
|
| + BswapInit(IceType_i16, "i16"),
|
| + BswapInit(IceType_i32, "i32"),
|
| + BswapInit(IceType_i64, "i64"),
|
| #undef BswapInit
|
|
|
| #define CtlzInit(Overload, NameSuffix) \
|
| { \
|
| { \
|
| INTRIN(Ctlz, SideEffects_F, ReturnsTwice_F) \
|
| - , { Overload, Overload, IceType_i1 }, 3 \
|
| + , {Overload, Overload, IceType_i1}, 3 \
|
| } \
|
| , "ctlz." NameSuffix \
|
| }
|
| - CtlzInit(IceType_i32, "i32"),
|
| - CtlzInit(IceType_i64, "i64"),
|
| + CtlzInit(IceType_i32, "i32"),
|
| + CtlzInit(IceType_i64, "i64"),
|
| #undef CtlzInit
|
|
|
| #define CtpopInit(Overload, NameSuffix) \
|
| { \
|
| { \
|
| INTRIN(Ctpop, SideEffects_F, ReturnsTwice_F) \
|
| - , { Overload, Overload }, 2 \
|
| + , {Overload, Overload}, 2 \
|
| } \
|
| , "ctpop." NameSuffix \
|
| }
|
| - CtpopInit(IceType_i32, "i32"),
|
| - CtpopInit(IceType_i64, "i64"),
|
| + CtpopInit(IceType_i32, "i32"),
|
| + CtpopInit(IceType_i64, "i64"),
|
| #undef CtpopInit
|
|
|
| #define CttzInit(Overload, NameSuffix) \
|
| { \
|
| { \
|
| INTRIN(Cttz, SideEffects_F, ReturnsTwice_F) \
|
| - , { Overload, Overload, IceType_i1 }, 3 \
|
| + , {Overload, Overload, IceType_i1}, 3 \
|
| } \
|
| , "cttz." NameSuffix \
|
| }
|
| - CttzInit(IceType_i32, "i32"),
|
| - CttzInit(IceType_i64, "i64"),
|
| + CttzInit(IceType_i32, "i32"),
|
| + CttzInit(IceType_i64, "i64"),
|
| #undef CttzInit
|
|
|
| - { { INTRIN(Longjmp, SideEffects_T, ReturnsTwice_F),
|
| - { IceType_void, IceType_i32, IceType_i32 }, 3 },
|
| - "nacl.longjmp" },
|
| - { { INTRIN(Memcpy, SideEffects_T, ReturnsTwice_F),
|
| - { IceType_void, IceType_i32, IceType_i32, IceType_i32, IceType_i32,
|
| - IceType_i1},
|
| - 6 },
|
| - "memcpy.p0i8.p0i8.i32" },
|
| - { { INTRIN(Memmove, SideEffects_T, ReturnsTwice_F),
|
| - { IceType_void, IceType_i32, IceType_i32, IceType_i32, IceType_i32,
|
| - IceType_i1 },
|
| - 6 },
|
| - "memmove.p0i8.p0i8.i32" },
|
| - { { INTRIN(Memset, SideEffects_T, ReturnsTwice_F),
|
| - { IceType_void, IceType_i32, IceType_i8, IceType_i32, IceType_i32,
|
| - IceType_i1 },
|
| - 6 },
|
| - "memset.p0i8.i32" },
|
| - { { INTRIN(NaClReadTP, SideEffects_F, ReturnsTwice_F),
|
| - { IceType_i32 }, 1 },
|
| - "nacl.read.tp" },
|
| - { { INTRIN(Setjmp, SideEffects_T, ReturnsTwice_T),
|
| - { IceType_i32, IceType_i32 }, 2 },
|
| - "nacl.setjmp" },
|
| + {{INTRIN(Longjmp, SideEffects_T, ReturnsTwice_F),
|
| + {IceType_void, IceType_i32, IceType_i32},
|
| + 3},
|
| + "nacl.longjmp"},
|
| + {{INTRIN(Memcpy, SideEffects_T, ReturnsTwice_F),
|
| + {IceType_void, IceType_i32, IceType_i32, IceType_i32, IceType_i32,
|
| + IceType_i1},
|
| + 6},
|
| + "memcpy.p0i8.p0i8.i32"},
|
| + {{INTRIN(Memmove, SideEffects_T, ReturnsTwice_F),
|
| + {IceType_void, IceType_i32, IceType_i32, IceType_i32, IceType_i32,
|
| + IceType_i1},
|
| + 6},
|
| + "memmove.p0i8.p0i8.i32"},
|
| + {{INTRIN(Memset, SideEffects_T, ReturnsTwice_F),
|
| + {IceType_void, IceType_i32, IceType_i8, IceType_i32, IceType_i32,
|
| + IceType_i1},
|
| + 6},
|
| + "memset.p0i8.i32"},
|
| + {{INTRIN(NaClReadTP, SideEffects_F, ReturnsTwice_F), {IceType_i32}, 1},
|
| + "nacl.read.tp"},
|
| + {{INTRIN(Setjmp, SideEffects_T, ReturnsTwice_T),
|
| + {IceType_i32, IceType_i32},
|
| + 2},
|
| + "nacl.setjmp"},
|
|
|
| #define SqrtInit(Overload, NameSuffix) \
|
| { \
|
| - { \
|
| - INTRIN(Sqrt, SideEffects_F, ReturnsTwice_F), \
|
| - { Overload, Overload }, 2 }, \
|
| - "sqrt." NameSuffix \
|
| + { INTRIN(Sqrt, SideEffects_F, ReturnsTwice_F), {Overload, Overload}, 2 } \
|
| + , "sqrt." NameSuffix \
|
| }
|
| - SqrtInit(IceType_f32, "f32"),
|
| - SqrtInit(IceType_f64, "f64"),
|
| + SqrtInit(IceType_f32, "f32"),
|
| + SqrtInit(IceType_f64, "f64"),
|
| #undef SqrtInit
|
|
|
| - { { INTRIN(Stacksave, SideEffects_T, ReturnsTwice_F),
|
| - { IceType_i32 }, 1 },
|
| - "stacksave" },
|
| - { { INTRIN(Stackrestore, SideEffects_T, ReturnsTwice_F),
|
| - { IceType_void, IceType_i32 }, 2 },
|
| - "stackrestore" },
|
| - { { INTRIN(Trap, SideEffects_T, ReturnsTwice_F),
|
| - { IceType_void }, 1 },
|
| - "trap" }
|
| -};
|
| + {{INTRIN(Stacksave, SideEffects_T, ReturnsTwice_F), {IceType_i32}, 1},
|
| + "stacksave"},
|
| + {{INTRIN(Stackrestore, SideEffects_T, ReturnsTwice_F),
|
| + {IceType_void, IceType_i32},
|
| + 2},
|
| + "stackrestore"},
|
| + {{INTRIN(Trap, SideEffects_T, ReturnsTwice_F), {IceType_void}, 1},
|
| + "trap"}};
|
| const size_t IceIntrinsicsTableSize = llvm::array_lengthof(IceIntrinsicsTable);
|
|
|
| #undef INTRIN
|
|
|