xref: /aosp_15_r20/external/llvm/test/CodeGen/MIR/AArch64/machine-scheduler.mir (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker# RUN: llc -mtriple=aarch64-none-linux-gnu -run-pass machine-scheduler  -verify-machineinstrs  -o - %s | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Worker--- |
4*9880d681SAndroid Build Coastguard Worker  define i64 @load_imp-def(i64* nocapture %P, i32 %v) {
5*9880d681SAndroid Build Coastguard Worker  entry:
6*9880d681SAndroid Build Coastguard Worker    %0 = bitcast i64* %P to i32*
7*9880d681SAndroid Build Coastguard Worker    %1 = load i32, i32* %0
8*9880d681SAndroid Build Coastguard Worker    %conv = zext i32 %1 to i64
9*9880d681SAndroid Build Coastguard Worker    %arrayidx19 = getelementptr inbounds i64, i64* %P, i64 1
10*9880d681SAndroid Build Coastguard Worker    %arrayidx1 = bitcast i64* %arrayidx19 to i32*
11*9880d681SAndroid Build Coastguard Worker    store i32 %v, i32* %arrayidx1
12*9880d681SAndroid Build Coastguard Worker    %2 = load i64, i64* %arrayidx19
13*9880d681SAndroid Build Coastguard Worker    %and = and i64 %2, 4294967295
14*9880d681SAndroid Build Coastguard Worker    %add = add nuw nsw i64 %and, %conv
15*9880d681SAndroid Build Coastguard Worker    ret i64 %add
16*9880d681SAndroid Build Coastguard Worker  }
17*9880d681SAndroid Build Coastguard Worker...
18*9880d681SAndroid Build Coastguard Worker---
19*9880d681SAndroid Build Coastguard Worker# CHECK-LABEL: name: load_imp-def
20*9880d681SAndroid Build Coastguard Worker# CHECK: bb.0.entry:
21*9880d681SAndroid Build Coastguard Worker# CHECK: LDRWui %x0, 0
22*9880d681SAndroid Build Coastguard Worker# CHECK: LDRWui %x0, 1
23*9880d681SAndroid Build Coastguard Worker# CHECK: STRWui %w1, %x0, 2
24*9880d681SAndroid Build Coastguard Workername:            load_imp-def
25*9880d681SAndroid Build Coastguard WorkerisSSA:           true
26*9880d681SAndroid Build Coastguard Workerbody:             |
27*9880d681SAndroid Build Coastguard Worker  bb.0.entry:
28*9880d681SAndroid Build Coastguard Worker    liveins: %w1, %x0
29*9880d681SAndroid Build Coastguard Worker    %w8 = LDRWui %x0, 1, implicit-def %x8  :: (load 4 from %ir.0)
30*9880d681SAndroid Build Coastguard Worker    STRWui killed %w1, %x0, 2 :: (store 4 into %ir.arrayidx1)
31*9880d681SAndroid Build Coastguard Worker    %w9 = LDRWui killed %x0, 0, implicit-def %x9  :: (load 4 from %ir.arrayidx19, align 8)
32*9880d681SAndroid Build Coastguard Worker    %x0 = ADDXrr killed %x9, killed %x8
33*9880d681SAndroid Build Coastguard Worker    RET_ReallyLR implicit %x0
34*9880d681SAndroid Build Coastguard Worker...
35*9880d681SAndroid Build Coastguard Worker
36