1 # RUN: llc -mtriple=aarch64-none-linux-android -run-pass aarch64-ldst-opt -o - %s | FileCheck %s
4 target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
5 target triple = "aarch64-unknown-linux-android"
7 define void @f(i64* nocapture %x) "target-features"="+mte" {
9 store i64 1, i64* %x, align 8
10 %0 = tail call i8* @llvm.aarch64.irg(i8* null, i64 0)
11 %1 = tail call i8* @llvm.aarch64.irg.sp(i64 0)
12 %arrayidx1 = getelementptr inbounds i64, i64* %x, i64 1
13 store i64 1, i64* %arrayidx1, align 8
17 declare i8* @llvm.aarch64.irg(i8*, i64) nounwind
18 declare i8* @llvm.aarch64.irg.sp(i64) nounwind
23 exposesReturnsTwice: false
25 regBankSelected: false
28 tracksRegLiveness: true
32 - { reg: '$x0', virtual-reg: '' }
34 isFrameAddressTaken: false
35 isReturnAddressTaken: false
45 cvBytesOfCalleeSavedRegisters: 0
46 hasOpaqueSPAdjustment: false
48 hasMustTailInVarArgFunc: false
56 machineFunctionInfo: {}
61 $x8 = ORRXrs $xzr, $xzr, 0
62 $w9 = MOVZWi 1, 0, implicit-def $x9
64 ; Check that stores are merged across IRG.
65 ; CHECK: STPXi renamable $x9, renamable $x9, renamable $x0, 0
67 STRXui renamable $x9, renamable $x0, 0 :: (store (s64) into %ir.x)
68 dead renamable $x10 = IRG renamable $x8, $xzr
69 dead renamable $x8 = IRG $sp, $xzr
70 STRXui killed renamable $x9, killed renamable $x0, 1 :: (store (s64) into %ir.arrayidx1)