xref: /aosp_15_r20/external/llvm/test/CodeGen/PowerPC/aantidep-def-ec.mir (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker# RUN: llc -o - %s -start-after=if-converter | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Worker--- |
4*9880d681SAndroid Build Coastguard Worker  target datalayout = "E-m:e-i64:64-n32:64"
5*9880d681SAndroid Build Coastguard Worker  target triple = "powerpc64-unknown-linux-gnu"
6*9880d681SAndroid Build Coastguard Worker
7*9880d681SAndroid Build Coastguard Worker  %struct.rwlock_t.0.22.58.68.242.244 = type {}
8*9880d681SAndroid Build Coastguard Worker
9*9880d681SAndroid Build Coastguard Worker  @tasklist_lock = external global %struct.rwlock_t.0.22.58.68.242.244, align 1
10*9880d681SAndroid Build Coastguard Worker
11*9880d681SAndroid Build Coastguard Worker  ; Function Attrs: nounwind
12*9880d681SAndroid Build Coastguard Worker  define void @mm_update_next_owner(i8** %p1, i32* %p2) #0 {
13*9880d681SAndroid Build Coastguard Worker  entry:
14*9880d681SAndroid Build Coastguard Worker    %0 = load i8*, i8** %p1, align 8
15*9880d681SAndroid Build Coastguard Worker    br i1 undef, label %do.body.92, label %for.body.21
16*9880d681SAndroid Build Coastguard Worker
17*9880d681SAndroid Build Coastguard Worker  for.body.21:                                      ; preds = %entry
18*9880d681SAndroid Build Coastguard Worker    unreachable
19*9880d681SAndroid Build Coastguard Worker
20*9880d681SAndroid Build Coastguard Worker  do.body.92:                                       ; preds = %entry
21*9880d681SAndroid Build Coastguard Worker    %usage = getelementptr inbounds i8, i8* %0, i64 -48
22*9880d681SAndroid Build Coastguard Worker    %counter.i = bitcast i8* %usage to i32*
23*9880d681SAndroid Build Coastguard Worker    %call95 = tail call signext i32 bitcast (i32 (...)* @__raw_read_unlock to i32 (%struct.rwlock_t.0.22.58.68.242.244*)*)(%struct.rwlock_t.0.22.58.68.242.244* nonnull @tasklist_lock) #1
24*9880d681SAndroid Build Coastguard Worker    store volatile i32 0, i32* %p2, align 4
25*9880d681SAndroid Build Coastguard Worker    tail call void asm sideeffect "#compiler barrier", "~{memory}"() #1
26*9880d681SAndroid Build Coastguard Worker    %1 = tail call i32 asm sideeffect "\0Alwsync \0A1:\09lwarx\09$0,0,$1\09\09# atomic_dec_return\0A\09addic\09$0,$0,-1\0A\09stwcx.\09$0,0,$1\0A\09bne-\091b\0Async \0A", "=&r,r,~{cc},~{xer},~{memory}"(i32* %counter.i) #1
27*9880d681SAndroid Build Coastguard Worker    %cmp.i = icmp eq i32 %1, 0
28*9880d681SAndroid Build Coastguard Worker    br i1 %cmp.i, label %if.then.i, label %put_task_struct.exit
29*9880d681SAndroid Build Coastguard Worker
30*9880d681SAndroid Build Coastguard Worker  if.then.i:                                        ; preds = %do.body.92
31*9880d681SAndroid Build Coastguard Worker    unreachable
32*9880d681SAndroid Build Coastguard Worker
33*9880d681SAndroid Build Coastguard Worker  put_task_struct.exit:                             ; preds = %do.body.92
34*9880d681SAndroid Build Coastguard Worker    ret void
35*9880d681SAndroid Build Coastguard Worker  }
36*9880d681SAndroid Build Coastguard Worker
37*9880d681SAndroid Build Coastguard Worker  declare signext i32 @__raw_read_unlock(...)
38*9880d681SAndroid Build Coastguard Worker
39*9880d681SAndroid Build Coastguard Worker  attributes #0 = { nounwind "target-cpu"="pwr7" }
40*9880d681SAndroid Build Coastguard Worker  attributes #1 = { nounwind }
41*9880d681SAndroid Build Coastguard Worker
42*9880d681SAndroid Build Coastguard Worker...
43*9880d681SAndroid Build Coastguard Worker---
44*9880d681SAndroid Build Coastguard Workername:            mm_update_next_owner
45*9880d681SAndroid Build Coastguard Workeralignment:       4
46*9880d681SAndroid Build Coastguard WorkerexposesReturnsTwice: false
47*9880d681SAndroid Build Coastguard WorkerhasInlineAsm:    true
48*9880d681SAndroid Build Coastguard WorkerallVRegsAllocated: true
49*9880d681SAndroid Build Coastguard WorkerisSSA:           false
50*9880d681SAndroid Build Coastguard WorkertracksRegLiveness: true
51*9880d681SAndroid Build Coastguard WorkertracksSubRegLiveness: false
52*9880d681SAndroid Build Coastguard Workerliveins:
53*9880d681SAndroid Build Coastguard Worker  - { reg: '%x3' }
54*9880d681SAndroid Build Coastguard Worker  - { reg: '%x4' }
55*9880d681SAndroid Build Coastguard WorkercalleeSavedRegisters: [ '%cr2', '%cr3', '%cr4', '%f14', '%f15', '%f16',
56*9880d681SAndroid Build Coastguard Worker                        '%f17', '%f18', '%f19', '%f20', '%f21', '%f22',
57*9880d681SAndroid Build Coastguard Worker                        '%f23', '%f24', '%f25', '%f26', '%f27', '%f28',
58*9880d681SAndroid Build Coastguard Worker                        '%f29', '%f30', '%f31', '%r14', '%r15', '%r16',
59*9880d681SAndroid Build Coastguard Worker                        '%r17', '%r18', '%r19', '%r20', '%r21', '%r22',
60*9880d681SAndroid Build Coastguard Worker                        '%r23', '%r24', '%r25', '%r26', '%r27', '%r28',
61*9880d681SAndroid Build Coastguard Worker                        '%r29', '%r30', '%r31', '%v20', '%v21', '%v22',
62*9880d681SAndroid Build Coastguard Worker                        '%v23', '%v24', '%v25', '%v26', '%v27', '%v28',
63*9880d681SAndroid Build Coastguard Worker                        '%v29', '%v30', '%v31', '%vf20', '%vf21', '%vf22',
64*9880d681SAndroid Build Coastguard Worker                        '%vf23', '%vf24', '%vf25', '%vf26', '%vf27', '%vf28',
65*9880d681SAndroid Build Coastguard Worker                        '%vf29', '%vf30', '%vf31', '%x14', '%x15', '%x16',
66*9880d681SAndroid Build Coastguard Worker                        '%x17', '%x18', '%x19', '%x20', '%x21', '%x22',
67*9880d681SAndroid Build Coastguard Worker                        '%x23', '%x24', '%x25', '%x26', '%x27', '%x28',
68*9880d681SAndroid Build Coastguard Worker                        '%x29', '%x30', '%x31', '%cr2eq', '%cr3eq', '%cr4eq',
69*9880d681SAndroid Build Coastguard Worker                        '%cr2gt', '%cr3gt', '%cr4gt', '%cr2lt', '%cr3lt',
70*9880d681SAndroid Build Coastguard Worker                        '%cr4lt', '%cr2un', '%cr3un', '%cr4un' ]
71*9880d681SAndroid Build Coastguard WorkerframeInfo:
72*9880d681SAndroid Build Coastguard Worker  isFrameAddressTaken: false
73*9880d681SAndroid Build Coastguard Worker  isReturnAddressTaken: false
74*9880d681SAndroid Build Coastguard Worker  hasStackMap:     false
75*9880d681SAndroid Build Coastguard Worker  hasPatchPoint:   false
76*9880d681SAndroid Build Coastguard Worker  stackSize:       144
77*9880d681SAndroid Build Coastguard Worker  offsetAdjustment: 0
78*9880d681SAndroid Build Coastguard Worker  maxAlignment:    0
79*9880d681SAndroid Build Coastguard Worker  adjustsStack:    true
80*9880d681SAndroid Build Coastguard Worker  hasCalls:        true
81*9880d681SAndroid Build Coastguard Worker  maxCallFrameSize: 112
82*9880d681SAndroid Build Coastguard Worker  hasOpaqueSPAdjustment: false
83*9880d681SAndroid Build Coastguard Worker  hasVAStart:      false
84*9880d681SAndroid Build Coastguard Worker  hasMustTailInVarArgFunc: false
85*9880d681SAndroid Build Coastguard WorkerfixedStack:
86*9880d681SAndroid Build Coastguard Worker  - { id: 0, type: spill-slot, offset: -16, size: 8, alignment: 16, callee-saved-register: '%x30' }
87*9880d681SAndroid Build Coastguard Worker  - { id: 1, type: spill-slot, offset: -24, size: 8, alignment: 8, callee-saved-register: '%x29' }
88*9880d681SAndroid Build Coastguard Workerbody:             |
89*9880d681SAndroid Build Coastguard Worker  bb.0.entry:
90*9880d681SAndroid Build Coastguard Worker    liveins: %x3, %x4, %x29, %x30, %x29, %x30
91*9880d681SAndroid Build Coastguard Worker
92*9880d681SAndroid Build Coastguard Worker    %x0 = MFLR8 implicit %lr8
93*9880d681SAndroid Build Coastguard Worker    STD %x0, 16, %x1
94*9880d681SAndroid Build Coastguard Worker    %x1 = STDU %x1, -144, %x1
95*9880d681SAndroid Build Coastguard Worker    STD killed %x29, 120, %x1 :: (store 8 into %fixed-stack.1)
96*9880d681SAndroid Build Coastguard Worker    STD killed %x30, 128, %x1 :: (store 8 into %fixed-stack.0, align 16)
97*9880d681SAndroid Build Coastguard Worker    %x30 = OR8 %x4, %x4
98*9880d681SAndroid Build Coastguard Worker    %x3 = LD 0, killed %x3 :: (load 8 from %ir.p1)
99*9880d681SAndroid Build Coastguard Worker    %x29 = ADDI8 killed %x3, -48
100*9880d681SAndroid Build Coastguard Worker    %x3 = ADDIStocHA %x2, @tasklist_lock
101*9880d681SAndroid Build Coastguard Worker    %x3 = LDtocL @tasklist_lock, killed %x3, implicit %x2 :: (load 8 from got)
102*9880d681SAndroid Build Coastguard Worker    BL8_NOP @__raw_read_unlock, csr_svr464_altivec, implicit-def %lr8, implicit %rm, implicit %x3, implicit %x2, implicit-def %r1, implicit-def dead %x3
103*9880d681SAndroid Build Coastguard Worker    %r3 = LI 0
104*9880d681SAndroid Build Coastguard Worker    STW killed %r3, 0, killed %x30 :: (volatile store 4 into %ir.p2)
105*9880d681SAndroid Build Coastguard Worker    INLINEASM $"#compiler barrier", 25
106*9880d681SAndroid Build Coastguard Worker    INLINEASM $"\0Alwsync \0A1:\09lwarx\09$0,0,$1\09\09# atomic_dec_return\0A\09addic\09$0,$0,-1\0A\09stwcx.\09$0,0,$1\0A\09bne-\091b\0Async \0A", 25, 131083, def early-clobber %r3, 851977, killed %x29, 12, implicit-def dead early-clobber %cr0
107*9880d681SAndroid Build Coastguard Worker    ; CHECK-LABEL: @mm_update_next_owner
108*9880d681SAndroid Build Coastguard Worker    ; CHECK-NOT: lwarx 29, 0, 29
109*9880d681SAndroid Build Coastguard Worker    ; CHECK-NOT: stwcx. 29, 0, 29
110*9880d681SAndroid Build Coastguard Worker    %cr0 = CMPLWI killed %r3, 0
111*9880d681SAndroid Build Coastguard Worker    %x30 = LD 128, %x1 :: (load 8 from %fixed-stack.0, align 16)
112*9880d681SAndroid Build Coastguard Worker    %x29 = LD 120, %x1 :: (load 8 from %fixed-stack.1)
113*9880d681SAndroid Build Coastguard Worker    %x1 = ADDI8 %x1, 144
114*9880d681SAndroid Build Coastguard Worker    %x0 = LD 16, %x1
115*9880d681SAndroid Build Coastguard Worker    MTLR8 %x0, implicit-def %lr8
116*9880d681SAndroid Build Coastguard Worker    BLR8 implicit %lr8, implicit %rm
117*9880d681SAndroid Build Coastguard Worker
118*9880d681SAndroid Build Coastguard Worker...
119