Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / AArch64 / ptrauth-intrinsic-sign.ll
blob01fdc05a5aa099278320e95c27de0bdf7068f9a0
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s -mtriple arm64e-apple-darwin             -verify-machineinstrs -global-isel=0 | FileCheck %s
3 ; RUN: llc < %s -mtriple arm64e-apple-darwin             -verify-machineinstrs -global-isel=1 -global-isel-abort=1 | FileCheck %s
4 ; RUN: llc < %s -mtriple aarch64-linux-gnu -mattr=+pauth -verify-machineinstrs -global-isel=0 | FileCheck %s
5 ; RUN: llc < %s -mtriple aarch64-linux-gnu -mattr=+pauth -verify-machineinstrs -global-isel=1 -global-isel-abort=1 | FileCheck %s
7 define i64 @test_sign_ia(i64 %arg, i64 %arg1) {
8 ; CHECK-LABEL: test_sign_ia:
9 ; CHECK:       %bb.0:
10 ; CHECK-NEXT:    pacia x0, x1
11 ; CHECK-NEXT:    ret
12   %tmp = call i64 @llvm.ptrauth.sign(i64 %arg, i32 0, i64 %arg1)
13   ret i64 %tmp
16 define i64 @test_sign_ia_zero(i64 %arg) {
17 ; CHECK-LABEL: test_sign_ia_zero:
18 ; CHECK:       %bb.0:
19 ; CHECK-NEXT:    paciza x0
20 ; CHECK-NEXT:    ret
21   %tmp = call i64 @llvm.ptrauth.sign(i64 %arg, i32 0, i64 0)
22   ret i64 %tmp
25 define i64 @test_sign_ib(i64 %arg, i64 %arg1) {
26 ; CHECK-LABEL: test_sign_ib:
27 ; CHECK:       %bb.0:
28 ; CHECK-NEXT:    pacib x0, x1
29 ; CHECK-NEXT:    ret
30   %tmp = call i64 @llvm.ptrauth.sign(i64 %arg, i32 1, i64 %arg1)
31   ret i64 %tmp
34 define i64 @test_sign_ib_zero(i64 %arg) {
35 ; CHECK-LABEL: test_sign_ib_zero:
36 ; CHECK:       %bb.0:
37 ; CHECK-NEXT:    pacizb x0
38 ; CHECK-NEXT:    ret
39   %tmp = call i64 @llvm.ptrauth.sign(i64 %arg, i32 1, i64 0)
40   ret i64 %tmp
43 define i64 @test_sign_da(i64 %arg, i64 %arg1) {
44 ; CHECK-LABEL: test_sign_da:
45 ; CHECK:       %bb.0:
46 ; CHECK-NEXT:    pacda x0, x1
47 ; CHECK-NEXT:    ret
48   %tmp = call i64 @llvm.ptrauth.sign(i64 %arg, i32 2, i64 %arg1)
49   ret i64 %tmp
52 define i64 @test_sign_da_zero(i64 %arg) {
53 ; CHECK-LABEL: test_sign_da_zero:
54 ; CHECK:       %bb.0:
55 ; CHECK-NEXT:    pacdza x0
56 ; CHECK-NEXT:    ret
57   %tmp = call i64 @llvm.ptrauth.sign(i64 %arg, i32 2, i64 0)
58   ret i64 %tmp
61 define i64 @test_sign_db(i64 %arg, i64 %arg1) {
62 ; CHECK-LABEL: test_sign_db:
63 ; CHECK:       %bb.0:
64 ; CHECK-NEXT:    pacdb x0, x1
65 ; CHECK-NEXT:    ret
66   %tmp = call i64 @llvm.ptrauth.sign(i64 %arg, i32 3, i64 %arg1)
67   ret i64 %tmp
70 define i64 @test_sign_db_zero(i64 %arg) {
71 ; CHECK-LABEL: test_sign_db_zero:
72 ; CHECK:       %bb.0:
73 ; CHECK-NEXT:    pacdzb x0
74 ; CHECK-NEXT:    ret
75   %tmp = call i64 @llvm.ptrauth.sign(i64 %arg, i32 3, i64 0)
76   ret i64 %tmp
79 declare i64 @llvm.ptrauth.sign(i64, i32, i64)