[llvm] [test][PAC][AArch64] Add ELF tests for subtarget-neutral codegen (PR #98020)
Daniil Kovalev via llvm-commits
llvm-commits at lists.llvm.org
Mon Jul 8 06:26:04 PDT 2024
https://github.com/kovdan01 created https://github.com/llvm/llvm-project/pull/98020
Many parts of PAuth-related codegen are not MachO- or ELF-specific. Add RUN lines against ELF targets to ensure that codegen works for ELF as well as for MachO.
>From 30e11d2ca4debd6f7f751b78f0fbc70d663f9a5e Mon Sep 17 00:00:00 2001
From: Daniil Kovalev <dkovalev at accesssoftek.com>
Date: Mon, 8 Jul 2024 16:16:42 +0300
Subject: [PATCH] [test][PAC][AArch64] Add ELF tests for subtarget-neutral
codegen
---
llvm/test/CodeGen/AArch64/ptrauth-bti-call.ll | 123 +++++++++++-------
.../AArch64/ptrauth-intrinsic-blend.ll | 56 +++++---
.../AArch64/ptrauth-intrinsic-sign-generic.ll | 20 ++-
.../CodeGen/AArch64/ptrauth-intrinsic-sign.ll | 90 ++++++++-----
.../AArch64/ptrauth-intrinsic-strip.ll | 52 +++++---
5 files changed, 212 insertions(+), 129 deletions(-)
diff --git a/llvm/test/CodeGen/AArch64/ptrauth-bti-call.ll b/llvm/test/CodeGen/AArch64/ptrauth-bti-call.ll
index 3a992929a8003..90a72a8f6ee07 100644
--- a/llvm/test/CodeGen/AArch64/ptrauth-bti-call.ll
+++ b/llvm/test/CodeGen/AArch64/ptrauth-bti-call.ll
@@ -1,101 +1,128 @@
-; RUN: llc -mtriple arm64e-apple-darwin -mattr=+bti -asm-verbose=false -o - %s | FileCheck %s
-; RUN: llc -mtriple arm64e-apple-darwin -mattr=+bti -global-isel -asm-verbose=false -o - %s | FileCheck %s
-; RUN: llc -mtriple arm64e-apple-darwin -mattr=+bti -fast-isel -asm-verbose=false -o - %s | FileCheck %s
+; RUN: llc -mtriple arm64e-apple-darwin -mattr=+bti -asm-verbose=false \
+; RUN: -o - %s | FileCheck %s --check-prefixes=DARWIN,CHECK
+; RUN: llc -mtriple arm64e-apple-darwin -mattr=+bti -global-isel -asm-verbose=false \
+; RUN: -o - %s | FileCheck %s --check-prefixes=DARWIN,CHECK
+; RUN: llc -mtriple arm64e-apple-darwin -mattr=+bti -fast-isel -asm-verbose=false \
+; RUN: -o - %s | FileCheck %s --check-prefixes=DARWIN,CHECK
+; RUN: llc -mtriple aarch64-linux-gnu -mattr=+bti -mattr=+pauth -asm-verbose=false \
+; RUN: -o - %s | FileCheck %s --check-prefixes=ELF,CHECK
+; RUN: llc -mtriple aarch64-linux-gnu -mattr=+bti -mattr=+pauth -global-isel -asm-verbose=false \
+; RUN: -o - %s | FileCheck %s --check-prefixes=ELF,CHECK
+; RUN: llc -mtriple aarch64-linux-gnu -mattr=+bti -mattr=+pauth -fast-isel -asm-verbose=false \
+; RUN: -o - %s | FileCheck %s --check-prefixes=ELF,CHECK
-; ptrauth tail-calls can only use x16/x17 with BTI.
+;; ptrauth tail-calls can only use x16/x17 with BTI.
-; CHECK-LABEL: _test_tailcall_ia_0:
-; CHECK-NEXT: bti c
-; CHECK-NEXT: mov x16, x0
-; CHECK-NEXT: braaz x16
+; DARWIN-LABEL: _test_tailcall_ia_0:
+; ELF-LABEL: test_tailcall_ia_0:
+; CHECK-NEXT: bti c
+; CHECK-NEXT: mov x16, x0
+; CHECK-NEXT: braaz x16
define i32 @test_tailcall_ia_0(i32 ()* %arg0) #0 {
%tmp0 = tail call i32 %arg0() [ "ptrauth"(i32 0, i64 0) ]
ret i32 %tmp0
}
-; CHECK-LABEL: _test_tailcall_ib_0:
-; CHECK-NEXT: bti c
-; CHECK-NEXT: mov x16, x0
-; CHECK-NEXT: brabz x16
+; DARWIN-LABEL: _test_tailcall_ib_0:
+; ELF-LABEL: test_tailcall_ib_0:
+; CHECK-NEXT: bti c
+; CHECK-NEXT: mov x16, x0
+; CHECK-NEXT: brabz x16
define i32 @test_tailcall_ib_0(i32 ()* %arg0) #0 {
%tmp0 = tail call i32 %arg0() [ "ptrauth"(i32 1, i64 0) ]
ret i32 %tmp0
}
-; CHECK-LABEL: _test_tailcall_ia_imm:
-; CHECK-NEXT: bti c
-; CHECK-NEXT: mov x16, x0
-; CHECK-NEXT: mov x17, #42
-; CHECK-NEXT: braa x16, x17
+; DARWIN-LABEL: _test_tailcall_ia_imm:
+; ELF-LABEL: test_tailcall_ia_imm:
+; CHECK-NEXT: bti c
+; CHECK-NEXT: mov x16, x0
+; CHECK-NEXT: mov x17, #42
+; CHECK-NEXT: braa x16, x17
define i32 @test_tailcall_ia_imm(i32 ()* %arg0) #0 {
%tmp0 = tail call i32 %arg0() [ "ptrauth"(i32 0, i64 42) ]
ret i32 %tmp0
}
-; CHECK-LABEL: _test_tailcall_ib_imm:
-; CHECK-NEXT: bti c
-; CHECK-NEXT: mov x16, x0
-; CHECK-NEXT: mov x17, #42
-; CHECK-NEXT: brab x16, x17
+; DARWIN-LABEL: _test_tailcall_ib_imm:
+; ELF-LABEL: test_tailcall_ib_imm:
+; CHECK-NEXT: bti c
+; CHECK-NEXT: mov x16, x0
+; CHECK-NEXT: mov x17, #42
+; CHECK-NEXT: brab x16, x17
define i32 @test_tailcall_ib_imm(i32 ()* %arg0) #0 {
%tmp0 = tail call i32 %arg0() [ "ptrauth"(i32 1, i64 42) ]
ret i32 %tmp0
}
-; CHECK-LABEL: _test_tailcall_ia_var:
-; CHECK-NEXT: bti c
-; CHECK-NEXT: mov x16, x0
-; CHECK-NEXT: ldr x0, [x1]
-; CHECK-NEXT: braa x16, x0
+; DARWIN-LABEL: _test_tailcall_ia_var:
+; DARWIN-NEXT: bti c
+; DARWIN-NEXT: mov x16, x0
+; DARWIN-NEXT: ldr x0, [x1]
+; DARWIN-NEXT: braa x16, x0
+; ELF-LABEL: test_tailcall_ia_var:
+; ELF-NEXT: bti c
+; ELF-NEXT: ldr x1, [x1]
+; ELF-NEXT: mov x16, x0
+; ELF-NEXT: braa x16, x1
define i32 @test_tailcall_ia_var(i32 ()* %arg0, i64* %arg1) #0 {
%tmp0 = load i64, i64* %arg1
%tmp1 = tail call i32 %arg0() [ "ptrauth"(i32 0, i64 %tmp0) ]
ret i32 %tmp1
}
-; CHECK-LABEL: _test_tailcall_ib_var:
-; CHECK-NEXT: bti c
-; CHECK-NEXT: mov x16, x0
-; CHECK-NEXT: ldr x0, [x1]
-; CHECK-NEXT: brab x16, x0
+; DARWIN-LABEL: _test_tailcall_ib_var:
+; DARWIN-NEXT: bti c
+; DARWIN-NEXT: mov x16, x0
+; DARWIN-NEXT: ldr x0, [x1]
+; DARWIN-NEXT: brab x16, x0
+; ELF-LABEL: test_tailcall_ib_var:
+; ELF-NEXT: bti c
+; ELF-NEXT: ldr x1, [x1]
+; ELF-NEXT: mov x16, x0
+; ELF-NEXT: brab x16, x1
define i32 @test_tailcall_ib_var(i32 ()* %arg0, i64* %arg1) #0 {
%tmp0 = load i64, i64* %arg1
%tmp1 = tail call i32 %arg0() [ "ptrauth"(i32 1, i64 %tmp0) ]
ret i32 %tmp1
}
-; CHECK-LABEL: _test_tailcall_ia_arg:
-; CHECK-NEXT: bti c
-; CHECK-NEXT: mov x16, x0
-; CHECK-NEXT: braa x16, x1
+; DARWIN-LABEL: _test_tailcall_ia_arg:
+; ELF-LABEL: test_tailcall_ia_arg:
+; CHECK-NEXT: bti c
+; CHECK-NEXT: mov x16, x0
+; CHECK-NEXT: braa x16, x1
define i32 @test_tailcall_ia_arg(i32 ()* %arg0, i64 %arg1) #0 {
%tmp0 = tail call i32 %arg0() [ "ptrauth"(i32 0, i64 %arg1) ]
ret i32 %tmp0
}
-; CHECK-LABEL: _test_tailcall_ib_arg:
-; CHECK-NEXT: bti c
-; CHECK-NEXT: mov x16, x0
-; CHECK-NEXT: brab x16, x1
+; DARWIN-LABEL: _test_tailcall_ib_arg:
+; ELF-LABEL: test_tailcall_ib_arg:
+; CHECK-NEXT: bti c
+; CHECK-NEXT: mov x16, x0
+; CHECK-NEXT: brab x16, x1
define i32 @test_tailcall_ib_arg(i32 ()* %arg0, i64 %arg1) #0 {
%tmp0 = tail call i32 %arg0() [ "ptrauth"(i32 1, i64 %arg1) ]
ret i32 %tmp0
}
-; CHECK-LABEL: _test_tailcall_ia_arg_ind:
-; CHECK-NEXT: bti c
-; CHECK-NEXT: ldr x16, [x0]
-; CHECK-NEXT: braa x16, x1
+; DARWIN-LABEL: _test_tailcall_ia_arg_ind:
+; ELF-LABEL: test_tailcall_ia_arg_ind:
+; CHECK-NEXT: bti c
+; CHECK-NEXT: ldr x16, [x0]
+; CHECK-NEXT: braa x16, x1
define i32 @test_tailcall_ia_arg_ind(i32 ()** %arg0, i64 %arg1) #0 {
%tmp0 = load i32 ()*, i32 ()** %arg0
%tmp1 = tail call i32 %tmp0() [ "ptrauth"(i32 0, i64 %arg1) ]
ret i32 %tmp1
}
-; CHECK-LABEL: _test_tailcall_ib_arg_ind:
-; CHECK-NEXT: bti c
-; CHECK-NEXT: ldr x16, [x0]
-; CHECK-NEXT: brab x16, x1
+; DARWIN-LABEL: _test_tailcall_ib_arg_ind:
+; ELF-LABEL: test_tailcall_ib_arg_ind:
+; CHECK-NEXT: bti c
+; CHECK-NEXT: ldr x16, [x0]
+; CHECK-NEXT: brab x16, x1
define i32 @test_tailcall_ib_arg_ind(i32 ()** %arg0, i64 %arg1) #0 {
%tmp0 = load i32 ()*, i32 ()** %arg0
%tmp1 = tail call i32 %tmp0() [ "ptrauth"(i32 1, i64 %arg1) ]
diff --git a/llvm/test/CodeGen/AArch64/ptrauth-intrinsic-blend.ll b/llvm/test/CodeGen/AArch64/ptrauth-intrinsic-blend.ll
index e60b3dfeaf225..ecb1ab76189bd 100644
--- a/llvm/test/CodeGen/AArch64/ptrauth-intrinsic-blend.ll
+++ b/llvm/test/CodeGen/AArch64/ptrauth-intrinsic-blend.ll
@@ -1,44 +1,58 @@
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
-; RUN: llc < %s -mtriple arm64e-apple-darwin -verify-machineinstrs -global-isel=0 | FileCheck %s
-; RUN: llc < %s -mtriple arm64e-apple-darwin -verify-machineinstrs -global-isel=1 -global-isel-abort=1 | FileCheck %s
+; RUN: llc < %s -mtriple arm64e-apple-darwin -verify-machineinstrs \
+; RUN: -global-isel=0 | FileCheck %s --check-prefixes=DARWIN,CHECK
+; RUN: llc < %s -mtriple arm64e-apple-darwin -verify-machineinstrs \
+; RUN: -global-isel=1 -global-isel-abort=1 | FileCheck %s --check-prefixes=DARWIN,CHECK
+; RUN: llc < %s -mtriple aarch64-linux-gnu -mattr=+pauth -verify-machineinstrs \
+; RUN: -global-isel=0 | FileCheck %s --check-prefixes=ELF,CHECK
+; RUN: llc < %s -mtriple aarch64-linux-gnu -mattr=+pauth -verify-machineinstrs \
+; RUN: -global-isel=1 -global-isel-abort=1 | FileCheck %s --check-prefixes=ELF,CHECK
define i64 @test_blend(i64 %arg, i64 %arg1) {
-; CHECK-LABEL: test_blend:
-; CHECK: ; %bb.0:
-; CHECK-NEXT: bfi x0, x1, #48, #16
-; CHECK-NEXT: ret
+; DARWIN-LABEL: _test_blend:
+; ELF-LABEL: test_blend:
+; DARWIN: ; %bb.0:
+; ELF: // %bb.0:
+; CHECK-NEXT: bfi x0, x1, #48, #16
+; CHECK-NEXT: ret
%tmp = call i64 @llvm.ptrauth.blend(i64 %arg, i64 %arg1)
ret i64 %tmp
}
define i64 @test_blend_constant(i64 %arg) {
-; CHECK-LABEL: test_blend_constant:
-; CHECK: ; %bb.0:
-; CHECK-NEXT: movk x0, #12345, lsl #48
-; CHECK-NEXT: ret
+; DARWIN-LABEL: _test_blend_constant:
+; ELF-LABEL: test_blend_constant:
+; DARWIN: ; %bb.0:
+; ELF: // %bb.0:
+; CHECK-NEXT: movk x0, #12345, lsl #48
+; CHECK-NEXT: ret
%tmp = call i64 @llvm.ptrauth.blend(i64 %arg, i64 12345)
ret i64 %tmp
}
; Blend isn't commutative.
define i64 @test_blend_constant_swapped(i64 %arg) {
-; CHECK-LABEL: test_blend_constant_swapped:
-; CHECK: ; %bb.0:
-; CHECK-NEXT: mov w8, #12345
-; CHECK-NEXT: bfi x8, x0, #48, #16
-; CHECK-NEXT: mov x0, x8
-; CHECK-NEXT: ret
+; DARWIN-LABEL: _test_blend_constant_swapped:
+; ELF-LABEL: test_blend_constant_swapped:
+; DARWIN: ; %bb.0:
+; ELF: // %bb.0:
+; CHECK-NEXT: mov w8, #12345
+; CHECK-NEXT: bfi x8, x0, #48, #16
+; CHECK-NEXT: mov x0, x8
+; CHECK-NEXT: ret
%tmp = call i64 @llvm.ptrauth.blend(i64 12345, i64 %arg)
ret i64 %tmp
}
; Blends of constants wider than 16 bits truncate the constant.
define i64 @test_blend_constant_wide(i64 %arg) {
-; CHECK-LABEL: test_blend_constant_wide:
-; CHECK: ; %bb.0:
-; CHECK-NEXT: mov w8, #65536
-; CHECK-NEXT: bfi x0, x8, #48, #16
-; CHECK-NEXT: ret
+; DARWIN-LABEL: _test_blend_constant_wide:
+; ELF-LABEL: test_blend_constant_wide:
+; DARWIN: ; %bb.0:
+; ELF: // %bb.0:
+; CHECK-NEXT: mov w8, #65536
+; CHECK-NEXT: bfi x0, x8, #48, #16
+; CHECK-NEXT: ret
%tmp = call i64 @llvm.ptrauth.blend(i64 %arg, i64 65536)
ret i64 %tmp
}
diff --git a/llvm/test/CodeGen/AArch64/ptrauth-intrinsic-sign-generic.ll b/llvm/test/CodeGen/AArch64/ptrauth-intrinsic-sign-generic.ll
index 1f14f67926f77..721325df726ab 100644
--- a/llvm/test/CodeGen/AArch64/ptrauth-intrinsic-sign-generic.ll
+++ b/llvm/test/CodeGen/AArch64/ptrauth-intrinsic-sign-generic.ll
@@ -1,12 +1,20 @@
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
-; RUN: llc < %s -mtriple arm64e-apple-darwin -verify-machineinstrs -global-isel=0 | FileCheck %s
-; RUN: llc < %s -mtriple arm64e-apple-darwin -verify-machineinstrs -global-isel=1 -global-isel-abort=1 | FileCheck %s
+; RUN: llc < %s -mtriple arm64e-apple-darwin -verify-machineinstrs \
+; RUN: -global-isel=0 | FileCheck %s --check-prefixes=DARWIN,CHECK
+; RUN: llc < %s -mtriple arm64e-apple-darwin -verify-machineinstrs \
+; RUN: -global-isel=1 -global-isel-abort=1 | FileCheck %s --check-prefixes=DARWIN,CHECK
+; RUN: llc < %s -mtriple aarch64-linux-gnu -mattr=+pauth -verify-machineinstrs \
+; RUN: -global-isel=0 | FileCheck %s --check-prefixes=ELF,CHECK
+; RUN: llc < %s -mtriple aarch64-linux-gnu -mattr=+pauth -verify-machineinstrs \
+; RUN: -global-isel=1 -global-isel-abort=1 | FileCheck %s --check-prefixes=ELF,CHECK
define i64 @test_sign_generic(i64 %arg, i64 %arg1) {
-; CHECK-LABEL: test_sign_generic:
-; CHECK: ; %bb.0:
-; CHECK-NEXT: pacga x0, x0, x1
-; CHECK-NEXT: ret
+; DARWIN-LABEL: _test_sign_generic:
+; ELF-LABEL: test_sign_generic:
+; DARWIN: ; %bb.0:
+; ELF: // %bb.0:
+; CHECK-NEXT: pacga x0, x0, x1
+; CHECK-NEXT: ret
%tmp = call i64 @llvm.ptrauth.sign.generic(i64 %arg, i64 %arg1)
ret i64 %tmp
}
diff --git a/llvm/test/CodeGen/AArch64/ptrauth-intrinsic-sign.ll b/llvm/test/CodeGen/AArch64/ptrauth-intrinsic-sign.ll
index 340a3530a5f5b..1a3e36a296232 100644
--- a/llvm/test/CodeGen/AArch64/ptrauth-intrinsic-sign.ll
+++ b/llvm/test/CodeGen/AArch64/ptrauth-intrinsic-sign.ll
@@ -1,75 +1,97 @@
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
-; RUN: llc < %s -mtriple arm64e-apple-darwin -verify-machineinstrs -global-isel=0 | FileCheck %s
-; RUN: llc < %s -mtriple arm64e-apple-darwin -verify-machineinstrs -global-isel=1 -global-isel-abort=1 | FileCheck %s
+; RUN: llc < %s -mtriple arm64e-apple-darwin -verify-machineinstrs \
+; RUN: -global-isel=0 | FileCheck %s --check-prefixes=DARWIN,CHECK
+; RUN: llc < %s -mtriple arm64e-apple-darwin -verify-machineinstrs \
+; RUN: -global-isel=1 -global-isel-abort=1 | FileCheck %s --check-prefixes=DARWIN,CHECK
+; RUN: llc < %s -mtriple aarch64-linux-gnu -mattr=+pauth -verify-machineinstrs \
+; RUN: -global-isel=0 | FileCheck %s --check-prefixes=ELF,CHECK
+; RUN: llc < %s -mtriple aarch64-linux-gnu -mattr=+pauth -verify-machineinstrs \
+; RUN: -global-isel=1 -global-isel-abort=1 | FileCheck %s --check-prefixes=ELF,CHECK
define i64 @test_sign_ia(i64 %arg, i64 %arg1) {
-; CHECK-LABEL: test_sign_ia:
-; CHECK: ; %bb.0:
-; CHECK-NEXT: pacia x0, x1
-; CHECK-NEXT: ret
+; DARWIN-LABEL: _test_sign_ia:
+; ELF-LABEL: test_sign_ia:
+; DARWIN: ; %bb.0:
+; ELF: // %bb.0:
+; CHECK-NEXT: pacia x0, x1
+; CHECK-NEXT: ret
%tmp = call i64 @llvm.ptrauth.sign(i64 %arg, i32 0, i64 %arg1)
ret i64 %tmp
}
define i64 @test_sign_ia_zero(i64 %arg) {
-; CHECK-LABEL: test_sign_ia_zero:
-; CHECK: ; %bb.0:
-; CHECK-NEXT: paciza x0
-; CHECK-NEXT: ret
+; DARWIN-LABEL: _test_sign_ia_zero:
+; ELF-LABEL: test_sign_ia_zero:
+; DARWIN: ; %bb.0:
+; ELF: // %bb.0:
+; CHECK-NEXT: paciza x0
+; CHECK-NEXT: ret
%tmp = call i64 @llvm.ptrauth.sign(i64 %arg, i32 0, i64 0)
ret i64 %tmp
}
define i64 @test_sign_ib(i64 %arg, i64 %arg1) {
-; CHECK-LABEL: test_sign_ib:
-; CHECK: ; %bb.0:
-; CHECK-NEXT: pacib x0, x1
-; CHECK-NEXT: ret
+; DARWIN-LABEL: _test_sign_ib:
+; ELF-LABEL: test_sign_ib:
+; DARWIN: ; %bb.0:
+; ELF: // %bb.0:
+; CHECK-NEXT: pacib x0, x1
+; CHECK-NEXT: ret
%tmp = call i64 @llvm.ptrauth.sign(i64 %arg, i32 1, i64 %arg1)
ret i64 %tmp
}
define i64 @test_sign_ib_zero(i64 %arg) {
-; CHECK-LABEL: test_sign_ib_zero:
-; CHECK: ; %bb.0:
-; CHECK-NEXT: pacizb x0
-; CHECK-NEXT: ret
+; DARWIN-LABEL: _test_sign_ib_zero:
+; ELF-LABEL: test_sign_ib_zero:
+; DARWIN: ; %bb.0:
+; ELF: // %bb.0:
+; CHECK-NEXT: pacizb x0
+; CHECK-NEXT: ret
%tmp = call i64 @llvm.ptrauth.sign(i64 %arg, i32 1, i64 0)
ret i64 %tmp
}
define i64 @test_sign_da(i64 %arg, i64 %arg1) {
-; CHECK-LABEL: test_sign_da:
-; CHECK: ; %bb.0:
-; CHECK-NEXT: pacda x0, x1
-; CHECK-NEXT: ret
+; DARWIN-LABEL: _test_sign_da:
+; ELF: test_sign_da:
+; DARWIN: ; %bb.0:
+; ELF: // %bb.0:
+; CHECK-NEXT: pacda x0, x1
+; CHECK-NEXT: ret
%tmp = call i64 @llvm.ptrauth.sign(i64 %arg, i32 2, i64 %arg1)
ret i64 %tmp
}
define i64 @test_sign_da_zero(i64 %arg) {
-; CHECK-LABEL: test_sign_da_zero:
-; CHECK: ; %bb.0:
-; CHECK-NEXT: pacdza x0
-; CHECK-NEXT: ret
+; DARWIN-LABEL: _test_sign_da_zero:
+; ELF-LABEL: test_sign_da_zero:
+; DARWIN: ; %bb.0:
+; ELF: // %bb.0:
+; CHECK-NEXT: pacdza x0
+; CHECK-NEXT: ret
%tmp = call i64 @llvm.ptrauth.sign(i64 %arg, i32 2, i64 0)
ret i64 %tmp
}
define i64 @test_sign_db(i64 %arg, i64 %arg1) {
-; CHECK-LABEL: test_sign_db:
-; CHECK: ; %bb.0:
-; CHECK-NEXT: pacdb x0, x1
-; CHECK-NEXT: ret
+; DARWIN-LABEL: _test_sign_db:
+; ELF-LABEL: test_sign_db:
+; DARWIN: ; %bb.0:
+; ELF: // %bb.0:
+; CHECK-NEXT: pacdb x0, x1
+; CHECK-NEXT: ret
%tmp = call i64 @llvm.ptrauth.sign(i64 %arg, i32 3, i64 %arg1)
ret i64 %tmp
}
define i64 @test_sign_db_zero(i64 %arg) {
-; CHECK-LABEL: test_sign_db_zero:
-; CHECK: ; %bb.0:
-; CHECK-NEXT: pacdzb x0
-; CHECK-NEXT: ret
+; DARWIN-LABEL: _test_sign_db_zero:
+; ELF-LABEL: test_sign_db_zero:
+; DARWIN: ; %bb.0:
+; ELF: // %bb.0:
+; CHECK-NEXT: pacdzb x0
+; CHECK-NEXT: ret
%tmp = call i64 @llvm.ptrauth.sign(i64 %arg, i32 3, i64 0)
ret i64 %tmp
}
diff --git a/llvm/test/CodeGen/AArch64/ptrauth-intrinsic-strip.ll b/llvm/test/CodeGen/AArch64/ptrauth-intrinsic-strip.ll
index a99c046a89551..a1319a4496a91 100644
--- a/llvm/test/CodeGen/AArch64/ptrauth-intrinsic-strip.ll
+++ b/llvm/test/CodeGen/AArch64/ptrauth-intrinsic-strip.ll
@@ -1,41 +1,53 @@
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
-; RUN: llc < %s -mtriple arm64e-apple-darwin -verify-machineinstrs -global-isel=0 | FileCheck %s
-; RUN: llc < %s -mtriple arm64e-apple-darwin -verify-machineinstrs -global-isel=1 -global-isel-abort=1 | FileCheck %s
-
-target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
+; RUN: llc < %s -mtriple arm64e-apple-darwin -verify-machineinstrs \
+; RUN: -global-isel=0 | FileCheck %s --check-prefixes=DARWIN,CHECK
+; RUN: llc < %s -mtriple arm64e-apple-darwin -verify-machineinstrs \
+; RUN: -global-isel=1 -global-isel-abort=1 | FileCheck %s --check-prefixes=DARWIN,CHECK
+; RUN: llc < %s -mtriple aarch64-linux-gnu -mattr=+pauth -verify-machineinstrs \
+; RUN: -global-isel=0 | FileCheck %s --check-prefixes=ELF,CHECK
+; RUN: llc < %s -mtriple aarch64-linux-gnu -mattr=+pauth -verify-machineinstrs \
+; RUN: -global-isel=1 -global-isel-abort=1 | FileCheck %s --check-prefixes=ELF,CHECK
define i64 @test_strip_ia(i64 %arg) {
-; CHECK-LABEL: test_strip_ia:
-; CHECK: ; %bb.0:
-; CHECK-NEXT: xpaci x0
-; CHECK-NEXT: ret
+; DARWIN-LABEL: _test_strip_ia:
+; ELF-LABEL: test_strip_ia:
+; DARWIN: ; %bb.0:
+; ELF: // %bb.0:
+; CHECK-NEXT: xpaci x0
+; CHECK-NEXT: ret
%tmp = call i64 @llvm.ptrauth.strip(i64 %arg, i32 0)
ret i64 %tmp
}
define i64 @test_strip_ib(i64 %arg) {
-; CHECK-LABEL: test_strip_ib:
-; CHECK: ; %bb.0:
-; CHECK-NEXT: xpaci x0
-; CHECK-NEXT: ret
+; DARWIN-LABEL: _test_strip_ib:
+; ELF-LABEL: test_strip_ib:
+; DARWIN: ; %bb.0:
+; ELF: // %bb.0:
+; CHECK-NEXT: xpaci x0
+; CHECK-NEXT: ret
%tmp = call i64 @llvm.ptrauth.strip(i64 %arg, i32 1)
ret i64 %tmp
}
define i64 @test_strip_da(i64 %arg) {
-; CHECK-LABEL: test_strip_da:
-; CHECK: ; %bb.0:
-; CHECK-NEXT: xpacd x0
-; CHECK-NEXT: ret
+; DARWIN-LABEL: _test_strip_da:
+; ELF-LABEL: test_strip_da:
+; DARWIN: ; %bb.0:
+; ELF: // %bb.0:
+; CHECK-NEXT: xpacd x0
+; CHECK-NEXT: ret
%tmp = call i64 @llvm.ptrauth.strip(i64 %arg, i32 2)
ret i64 %tmp
}
define i64 @test_strip_db(i64 %arg) {
-; CHECK-LABEL: test_strip_db:
-; CHECK: ; %bb.0:
-; CHECK-NEXT: xpacd x0
-; CHECK-NEXT: ret
+; DARWIN-LABEL: _test_strip_db:
+; ELF-LABEL: test_strip_db:
+; DARWIN: ; %bb.0:
+; ELF: // %bb.0:
+; CHECK-NEXT: xpacd x0
+; CHECK-NEXT: ret
%tmp = call i64 @llvm.ptrauth.strip(i64 %arg, i32 3)
ret i64 %tmp
}
More information about the llvm-commits
mailing list