xref: /aosp_15_r20/external/llvm/test/CodeGen/ARM/2011-02-07-AntidepClobber.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -asm-verbose=false -O3  -mtriple=armv5e-none-linux-gnueabi | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker; PR8986: PostRA antidependence breaker must respect "earlyclobber".
3*9880d681SAndroid Build Coastguard Worker; armv5e generates mulv5 that cannot used the same reg for src/dest.
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Worker; ModuleID = '<stdin>'
6*9880d681SAndroid Build Coastguard Workertarget datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:64-n32"
7*9880d681SAndroid Build Coastguard Workertarget triple = "armv5e-none-linux-gnueabi"
8*9880d681SAndroid Build Coastguard Worker
9*9880d681SAndroid Build Coastguard Workerdefine hidden fastcc void @storeAtts() nounwind {
10*9880d681SAndroid Build Coastguard Workerentry:
11*9880d681SAndroid Build Coastguard Worker  %.SV116 = alloca i8**
12*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %meshBB520, label %meshBB464
13*9880d681SAndroid Build Coastguard Worker
14*9880d681SAndroid Build Coastguard Workerbb15:                                             ; preds = %meshBB424
15*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %bb216, label %meshBB396
16*9880d681SAndroid Build Coastguard Worker
17*9880d681SAndroid Build Coastguard Workerbb22:                                             ; preds = %meshBB396
18*9880d681SAndroid Build Coastguard Worker  br label %cBB564
19*9880d681SAndroid Build Coastguard Worker
20*9880d681SAndroid Build Coastguard WorkercBB564:                                           ; preds = %cBB564, %bb22
21*9880d681SAndroid Build Coastguard Worker  br label %cBB564
22*9880d681SAndroid Build Coastguard Worker
23*9880d681SAndroid Build Coastguard WorkerpoolStoreString.exit.thread:                      ; preds = %meshBB424
24*9880d681SAndroid Build Coastguard Worker  ret void
25*9880d681SAndroid Build Coastguard Worker
26*9880d681SAndroid Build Coastguard Workerbb78:                                             ; preds = %meshBB412
27*9880d681SAndroid Build Coastguard Worker  unreachable
28*9880d681SAndroid Build Coastguard Worker
29*9880d681SAndroid Build Coastguard Workerbb129:                                            ; preds = %meshBB540
30*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %bb131.loopexit, label %meshBB540
31*9880d681SAndroid Build Coastguard Worker
32*9880d681SAndroid Build Coastguard Workerbb131.loopexit:                                   ; preds = %bb129
33*9880d681SAndroid Build Coastguard Worker  br label %bb131
34*9880d681SAndroid Build Coastguard Worker
35*9880d681SAndroid Build Coastguard Workerbb131:                                            ; preds = %bb135, %bb131.loopexit
36*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %bb134, label %meshBB396
37*9880d681SAndroid Build Coastguard Worker
38*9880d681SAndroid Build Coastguard Workerbb134:                                            ; preds = %bb131
39*9880d681SAndroid Build Coastguard Worker  unreachable
40*9880d681SAndroid Build Coastguard Worker
41*9880d681SAndroid Build Coastguard Workerbb135:                                            ; preds = %meshBB396
42*9880d681SAndroid Build Coastguard Worker  %uriHash.1.phi.load = load i32, i32* undef
43*9880d681SAndroid Build Coastguard Worker  %.load120 = load i8**, i8*** %.SV116
44*9880d681SAndroid Build Coastguard Worker  %.phi24 = load i8, i8* null
45*9880d681SAndroid Build Coastguard Worker  %.phi26 = load i8*, i8** null
46*9880d681SAndroid Build Coastguard Worker  store i8 %.phi24, i8* %.phi26, align 1
47*9880d681SAndroid Build Coastguard Worker  %0 = getelementptr inbounds i8, i8* %.phi26, i32 1
48*9880d681SAndroid Build Coastguard Worker  store i8* %0, i8** %.load120, align 4
49*9880d681SAndroid Build Coastguard Worker  ; CHECK: mul [[REGISTER:lr|r[0-9]+]],
50*9880d681SAndroid Build Coastguard Worker  ; CHECK-NOT: [[REGISTER]],
51*9880d681SAndroid Build Coastguard Worker  ; CHECK: {{(lr|r[0-9]+)$}}
52*9880d681SAndroid Build Coastguard Worker  %1 = mul i32 %uriHash.1.phi.load, 1000003
53*9880d681SAndroid Build Coastguard Worker  %2 = xor i32 0, %1
54*9880d681SAndroid Build Coastguard Worker  store i32 %2, i32* null
55*9880d681SAndroid Build Coastguard Worker  %3 = load i8, i8* null, align 1
56*9880d681SAndroid Build Coastguard Worker  %4 = icmp eq i8 %3, 0
57*9880d681SAndroid Build Coastguard Worker  store i8* %0, i8** undef
58*9880d681SAndroid Build Coastguard Worker  br i1 %4, label %meshBB472, label %bb131
59*9880d681SAndroid Build Coastguard Worker
60*9880d681SAndroid Build Coastguard Workerbb212:                                            ; preds = %meshBB540
61*9880d681SAndroid Build Coastguard Worker  unreachable
62*9880d681SAndroid Build Coastguard Worker
63*9880d681SAndroid Build Coastguard Workerbb216:                                            ; preds = %bb15
64*9880d681SAndroid Build Coastguard Worker  ret void
65*9880d681SAndroid Build Coastguard Worker
66*9880d681SAndroid Build Coastguard WorkermeshBB396:                                        ; preds = %bb131, %bb15
67*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %bb135, label %bb22
68*9880d681SAndroid Build Coastguard Worker
69*9880d681SAndroid Build Coastguard WorkermeshBB412:                                        ; preds = %meshBB464
70*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %meshBB504, label %bb78
71*9880d681SAndroid Build Coastguard Worker
72*9880d681SAndroid Build Coastguard WorkermeshBB424:                                        ; preds = %meshBB464
73*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %poolStoreString.exit.thread, label %bb15
74*9880d681SAndroid Build Coastguard Worker
75*9880d681SAndroid Build Coastguard WorkermeshBB464:                                        ; preds = %entry
76*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %meshBB424, label %meshBB412
77*9880d681SAndroid Build Coastguard Worker
78*9880d681SAndroid Build Coastguard WorkermeshBB472:                                        ; preds = %meshBB504, %bb135
79*9880d681SAndroid Build Coastguard Worker  unreachable
80*9880d681SAndroid Build Coastguard Worker
81*9880d681SAndroid Build Coastguard WorkermeshBB504:                                        ; preds = %meshBB412
82*9880d681SAndroid Build Coastguard Worker  br label %meshBB472
83*9880d681SAndroid Build Coastguard Worker
84*9880d681SAndroid Build Coastguard WorkermeshBB520:                                        ; preds = %entry
85*9880d681SAndroid Build Coastguard Worker  br label %meshBB540
86*9880d681SAndroid Build Coastguard Worker
87*9880d681SAndroid Build Coastguard WorkermeshBB540:                                        ; preds = %meshBB520, %bb129
88*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %bb212, label %bb129
89*9880d681SAndroid Build Coastguard Worker}
90