[SystemZ] Support transactional execution on zEC12
[oota-llvm.git] / include / llvm / IR / IntrinsicsSystemZ.td
1 //===- IntrinsicsSystemZ.td - Defines SystemZ intrinsics ---*- tablegen -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This file defines all of the SystemZ-specific intrinsics.
11 //
12 //===----------------------------------------------------------------------===//
13
14 //===----------------------------------------------------------------------===//
15 //
16 // Transactional-execution intrinsics
17 //
18 //===----------------------------------------------------------------------===//
19
20 let TargetPrefix = "s390" in {
21   def int_s390_tbegin : Intrinsic<[llvm_i32_ty], [llvm_ptr_ty, llvm_i32_ty],
22                                   [IntrNoDuplicate]>;
23
24   def int_s390_tbegin_nofloat : Intrinsic<[llvm_i32_ty],
25                                           [llvm_ptr_ty, llvm_i32_ty],
26                                           [IntrNoDuplicate]>;
27
28   def int_s390_tbeginc : Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty],
29                                    [IntrNoDuplicate]>;
30
31   def int_s390_tabort : Intrinsic<[], [llvm_i64_ty],
32                                   [IntrNoReturn, Throws]>;
33
34   def int_s390_tend : GCCBuiltin<"__builtin_tend">,
35                       Intrinsic<[llvm_i32_ty], []>;
36
37   def int_s390_etnd : GCCBuiltin<"__builtin_tx_nesting_depth">,
38                       Intrinsic<[llvm_i32_ty], [], [IntrNoMem]>;
39
40   def int_s390_ntstg : Intrinsic<[], [llvm_i64_ty, llvm_ptr64_ty],
41                                  [IntrReadWriteArgMem]>;
42
43   def int_s390_ppa_txassist : GCCBuiltin<"__builtin_tx_assist">,
44                               Intrinsic<[], [llvm_i32_ty]>;
45 }
46