[InstCombine] Signed saturation patterns
[llvm-core.git] / test / CodeGen / AArch64 / irg.ll
blob31a018e18362348e2ef311fe765e0adb8a7c17d7
1 ; RUN: llc < %s -mtriple=aarch64 -mattr=+mte | FileCheck %s
3 define i8* @irg_imm16(i8* %p) {
4 entry:
5 ; CHECK-LABEL: irg_imm16:
6 ; CHECK: mov w[[R:[0-9]+]], #16
7 ; CHECK: irg x0, x0, x[[R]]
8 ; CHECK: ret
9   %q = call i8* @llvm.aarch64.irg(i8* %p, i64 16)
10   ret i8* %q
13 define i8* @irg_imm0(i8* %p) {
14 entry:
15 ; CHECK-LABEL: irg_imm0:
16 ; CHECK: irg x0, x0{{$}}
17 ; CHECK: ret
18   %q = call i8* @llvm.aarch64.irg(i8* %p, i64 0)
19   ret i8* %q
22 define i8* @irg_reg(i8* %p, i64 %ex) {
23 entry:
24 ; CHECK-LABEL: irg_reg:
25 ; CHECK: irg x0, x0, x1
26 ; CHECK: ret
27   %q = call i8* @llvm.aarch64.irg(i8* %p, i64 %ex)
28   ret i8* %q
31 ; undef argument in irg is treated specially
32 define i8* @irg_sp() {
33 entry:
34 ; CHECK-LABEL: irg_sp:
35 ; CHECK: irg x0, sp{{$}}
36 ; CHECK: ret
37   %q = call i8* @llvm.aarch64.irg.sp(i64 0)
38   ret i8* %q
41 declare i8* @llvm.aarch64.irg(i8* %p, i64 %exclude)
42 declare i8* @llvm.aarch64.irg.sp(i64 %exclude)