mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 11:42:57 +01:00
Introduce two new "add" intrinsics. These return the sum plus a bit indicating
that an overflow/carry occured. These are converted into ISD::[SU]ADDO nodes, which are lowered in a target-independent way into something sane. Eventually, each target can implement their own method of checking the overflow/carry flags. llvm-svn: 59756
This commit is contained in:
parent
cbfb4cf881
commit
d0bd6f6e73
@ -314,6 +314,15 @@ def int_init_trampoline : Intrinsic<[llvm_ptr_ty],
|
|||||||
[]>,
|
[]>,
|
||||||
GCCBuiltin<"__builtin_init_trampoline">;
|
GCCBuiltin<"__builtin_init_trampoline">;
|
||||||
|
|
||||||
|
//===------------------------ Overflow Intrinsics -------------------------===//
|
||||||
|
//
|
||||||
|
|
||||||
|
// Expose the carry flag from add operations on two integrals.
|
||||||
|
def int_sadd_with_overflow : Intrinsic<[llvm_anyint_ty, llvm_i1_ty],
|
||||||
|
[LLVMMatchType<0>, LLVMMatchType<0>]>;
|
||||||
|
def int_uadd_with_overflow : Intrinsic<[llvm_anyint_ty, llvm_i1_ty],
|
||||||
|
[LLVMMatchType<0>, LLVMMatchType<0>]>;
|
||||||
|
|
||||||
//===------------------------- Atomic Intrinsics --------------------------===//
|
//===------------------------- Atomic Intrinsics --------------------------===//
|
||||||
//
|
//
|
||||||
def int_memory_barrier : Intrinsic<[llvm_void_ty],
|
def int_memory_barrier : Intrinsic<[llvm_void_ty],
|
||||||
|
Loading…
Reference in New Issue
Block a user