-def int_memory_barrier : Intrinsic<[llvm_void_ty, llvm_i1_ty, llvm_i1_ty,
- llvm_i1_ty, llvm_i1_ty, llvm_i1_ty], []>;
-
-def int_atomic_lcs : Intrinsic<[llvm_anyint_ty,
- LLVMPointerType<LLVMMatchType<0>>,
- LLVMMatchType<0>, LLVMMatchType<0>],
- [IntrWriteArgMem]>,
- GCCBuiltin<"__sync_val_compare_and_swap">;
-def int_atomic_las : Intrinsic<[llvm_anyint_ty,
- LLVMPointerType<LLVMMatchType<0>>,
- LLVMMatchType<0>],
- [IntrWriteArgMem]>,
- GCCBuiltin<"__sync_fetch_and_add">;
-def int_atomic_swap : Intrinsic<[llvm_anyint_ty,
- LLVMPointerType<LLVMMatchType<0>>,
- LLVMMatchType<0>],
- [IntrWriteArgMem]>,
- GCCBuiltin<"__sync_lock_test_and_set">;
+def int_memory_barrier : Intrinsic<[],
+ [llvm_i1_ty, llvm_i1_ty,
+ llvm_i1_ty, llvm_i1_ty, llvm_i1_ty], []>,
+ GCCBuiltin<"__builtin_llvm_memory_barrier">;
+
+def int_atomic_cmp_swap : Intrinsic<[llvm_anyint_ty],
+ [LLVMAnyPointerType<LLVMMatchType<0>>,
+ LLVMMatchType<0>, LLVMMatchType<0>],
+ [IntrReadWriteArgMem, NoCapture<0>]>,
+ GCCBuiltin<"__sync_val_compare_and_swap">;
+def int_atomic_load_add : Intrinsic<[llvm_anyint_ty],
+ [LLVMAnyPointerType<LLVMMatchType<0>>,
+ LLVMMatchType<0>],
+ [IntrReadWriteArgMem, NoCapture<0>]>,
+ GCCBuiltin<"__sync_fetch_and_add">;
+def int_atomic_swap : Intrinsic<[llvm_anyint_ty],
+ [LLVMAnyPointerType<LLVMMatchType<0>>,
+ LLVMMatchType<0>],
+ [IntrReadWriteArgMem, NoCapture<0>]>,
+ GCCBuiltin<"__sync_lock_test_and_set">;
+def int_atomic_load_sub : Intrinsic<[llvm_anyint_ty],
+ [LLVMAnyPointerType<LLVMMatchType<0>>,
+ LLVMMatchType<0>],
+ [IntrReadWriteArgMem, NoCapture<0>]>,
+ GCCBuiltin<"__sync_fetch_and_sub">;
+def int_atomic_load_and : Intrinsic<[llvm_anyint_ty],
+ [LLVMAnyPointerType<LLVMMatchType<0>>,
+ LLVMMatchType<0>],
+ [IntrReadWriteArgMem, NoCapture<0>]>,
+ GCCBuiltin<"__sync_fetch_and_and">;
+def int_atomic_load_or : Intrinsic<[llvm_anyint_ty],
+ [LLVMAnyPointerType<LLVMMatchType<0>>,
+ LLVMMatchType<0>],
+ [IntrReadWriteArgMem, NoCapture<0>]>,
+ GCCBuiltin<"__sync_fetch_and_or">;
+def int_atomic_load_xor : Intrinsic<[llvm_anyint_ty],
+ [LLVMAnyPointerType<LLVMMatchType<0>>,
+ LLVMMatchType<0>],
+ [IntrReadWriteArgMem, NoCapture<0>]>,
+ GCCBuiltin<"__sync_fetch_and_xor">;
+def int_atomic_load_nand : Intrinsic<[llvm_anyint_ty],
+ [LLVMAnyPointerType<LLVMMatchType<0>>,
+ LLVMMatchType<0>],
+ [IntrReadWriteArgMem, NoCapture<0>]>,
+ GCCBuiltin<"__sync_fetch_and_nand">;
+def int_atomic_load_min : Intrinsic<[llvm_anyint_ty],
+ [LLVMAnyPointerType<LLVMMatchType<0>>,
+ LLVMMatchType<0>],
+ [IntrReadWriteArgMem, NoCapture<0>]>,
+ GCCBuiltin<"__sync_fetch_and_min">;
+def int_atomic_load_max : Intrinsic<[llvm_anyint_ty],
+ [LLVMAnyPointerType<LLVMMatchType<0>>,
+ LLVMMatchType<0>],
+ [IntrReadWriteArgMem, NoCapture<0>]>,
+ GCCBuiltin<"__sync_fetch_and_max">;
+def int_atomic_load_umin : Intrinsic<[llvm_anyint_ty],
+ [LLVMAnyPointerType<LLVMMatchType<0>>,
+ LLVMMatchType<0>],
+ [IntrReadWriteArgMem, NoCapture<0>]>,
+ GCCBuiltin<"__sync_fetch_and_umin">;
+def int_atomic_load_umax : Intrinsic<[llvm_anyint_ty],
+ [LLVMAnyPointerType<LLVMMatchType<0>>,
+ LLVMMatchType<0>],
+ [IntrReadWriteArgMem, NoCapture<0>]>,
+ GCCBuiltin<"__sync_fetch_and_umax">;
+
+//===------------------------- Memory Use Markers -------------------------===//
+//
+def int_lifetime_start : Intrinsic<[],
+ [llvm_i64_ty, llvm_ptr_ty],
+ [IntrReadWriteArgMem, NoCapture<1>]>;
+def int_lifetime_end : Intrinsic<[],
+ [llvm_i64_ty, llvm_ptr_ty],
+ [IntrReadWriteArgMem, NoCapture<1>]>;
+def int_invariant_start : Intrinsic<[llvm_descriptor_ty],
+ [llvm_i64_ty, llvm_ptr_ty],
+ [IntrReadArgMem, NoCapture<1>]>;
+def int_invariant_end : Intrinsic<[],
+ [llvm_descriptor_ty, llvm_i64_ty,
+ llvm_ptr_ty],
+ [IntrReadWriteArgMem, NoCapture<2>]>;