74 lines · plain
1; RUN: llc < %s -O0 -mtriple=aarch64-none-linux-gnu -mattr=+pauth | FileCheck --check-prefixes=CHECK,O0 %s2; RUN: llc < %s -O2 -mtriple=aarch64-none-linux-gnu -mattr=+pauth | FileCheck --check-prefixes=CHECK,O2 %s3 4@ds = external global i85 6declare void @f(ptr %p)7 8; CHECK: call:9define void @call(ptr %p) {10 ; CHECK: [[LABEL:.L.*]]:11 ; CHECK-NEXT: .reloc [[LABEL]], R_AARCH64_PATCHINST, ds12 ; CHECK-NEXT: bl f13 notail call void @f(ptr %p) [ "deactivation-symbol"(ptr @ds) ]14 ret void15}16 17; CHECK: pauth_sign_zero:18define i64 @pauth_sign_zero(i64 %p) {19 ; O0: mov x8, xzr20 ; CHECK: [[LABEL:.L.*]]:21 ; CHECK-NEXT: .reloc [[LABEL]], R_AARCH64_PATCHINST, ds22 ; O0-NEXT: pacia x0, x823 ; O2-NEXT: paciza x024 %signed = call i64 @llvm.ptrauth.sign(i64 %p, i32 0, i64 0) [ "deactivation-symbol"(ptr @ds) ]25 ret i64 %signed26}27 28; CHECK: pauth_sign_const:29define i64 @pauth_sign_const(i64 %p) {30 ; CHECK: mov x16, #1234531 ; CHECK-NEXT: [[LABEL:.L.*]]:32 ; CHECK-NEXT: .reloc [[LABEL]], R_AARCH64_PATCHINST, ds33 ; CHECK-NEXT: pacia x0, x1634 %signed = call i64 @llvm.ptrauth.sign(i64 %p, i32 0, i64 12345) [ "deactivation-symbol"(ptr @ds) ]35 ret i64 %signed36}37 38; CHECK: pauth_sign:39define i64 @pauth_sign(i64 %p, i64 %d) {40 ; CHECK: [[LABEL:.L.*]]:41 ; CHECK-NEXT: .reloc [[LABEL]], R_AARCH64_PATCHINST, ds42 ; CHECK-NEXT: pacia x0, x143 %signed = call i64 @llvm.ptrauth.sign(i64 %p, i32 0, i64 %d) [ "deactivation-symbol"(ptr @ds) ]44 ret i64 %signed45}46 47; CHECK: pauth_auth_zero:48define i64 @pauth_auth_zero(i64 %p) {49 ; CHECK: [[LABEL:.L.*]]:50 ; CHECK-NEXT: .reloc [[LABEL]], R_AARCH64_PATCHINST, ds51 ; CHECK-NEXT: autiza x052 %authed = call i64 @llvm.ptrauth.auth(i64 %p, i32 0, i64 0) [ "deactivation-symbol"(ptr @ds) ]53 ret i64 %authed54}55 56; CHECK: pauth_auth_const:57define i64 @pauth_auth_const(i64 %p) {58 ; CHECK: mov x8, #1234559 ; CHECK-NEXT: [[LABEL:.L.*]]:60 ; CHECK-NEXT: .reloc [[LABEL]], R_AARCH64_PATCHINST, ds61 ; CHECK-NEXT: autia x0, x862 %authed = call i64 @llvm.ptrauth.auth(i64 %p, i32 0, i64 12345) [ "deactivation-symbol"(ptr @ds) ]63 ret i64 %authed64}65 66; CHECK: pauth_auth:67define i64 @pauth_auth(i64 %p, i64 %d) {68 ; CHECK: [[LABEL:.L.*]]:69 ; CHECK-NEXT: .reloc [[LABEL]], R_AARCH64_PATCHINST, ds70 ; CHECK-NEXT: autia x0, x171 %authed = call i64 @llvm.ptrauth.auth(i64 %p, i32 0, i64 %d) [ "deactivation-symbol"(ptr @ds) ]72 ret i64 %authed73}74