@@ -15,50 +15,57 @@ define signext i32 @main() nounwind {
15
15
; CHECK-NEXT: stdu 1, -48(1)
16
16
; CHECK-NEXT: li 3, -32477
17
17
; CHECK-NEXT: std 0, 64(1)
18
- ; CHECK-NEXT: li 4, 234
19
- ; CHECK-NEXT: addi 6, 1, 46
20
18
; CHECK-NEXT: sth 3, 46(1)
21
- ; CHECK-NEXT: lis 3, 0
19
+ ; CHECK-NEXT: addi 3, 1, 46
20
+ ; CHECK-NEXT: lharx 4, 0, 3
21
+ ; CHECK-NEXT: clrlwi 4, 4, 16
22
+ ; CHECK-NEXT: cmplwi 4, 33059
23
+ ; CHECK-NEXT: bne 0, .LBB0_4
24
+ ; CHECK-NEXT: # %bb.1: # %cmpxchg.fencedstore
22
25
; CHECK-NEXT: sync
23
- ; CHECK-NEXT: ori 3, 3, 33059
24
- ; CHECK-NEXT: .LBB0_1: # %L.entry
25
- ; CHECK-NEXT: #
26
- ; CHECK-NEXT: lharx 5, 0, 6
27
- ; CHECK-NEXT: cmpw 5, 3
28
- ; CHECK-NEXT: bne 0, .LBB0_3
29
- ; CHECK-NEXT: # %bb.2: # %L.entry
30
- ; CHECK-NEXT: #
31
- ; CHECK-NEXT: sthcx. 4, 0, 6
32
- ; CHECK-NEXT: bne 0, .LBB0_1
33
- ; CHECK-NEXT: .LBB0_3: # %L.entry
34
- ; CHECK-NEXT: cmplwi 5, 33059
26
+ ; CHECK-NEXT: li 4, 234
27
+ ; CHECK-NEXT: .p2align 5
28
+ ; CHECK-NEXT: .LBB0_2: # %cmpxchg.trystore
29
+ ; CHECK-NEXT: # =>This Inner Loop Header: Depth=1
30
+ ; CHECK-NEXT: sthcx. 4, 0, 3
31
+ ; CHECK-NEXT: beq 0, .LBB0_7
32
+ ; CHECK-NEXT: # %bb.3: # %cmpxchg.releasedload
33
+ ; CHECK-NEXT: # in Loop: Header=BB0_2 Depth=1
34
+ ; CHECK-NEXT: lharx 5, 0, 3
35
+ ; CHECK-NEXT: clrlwi 5, 5, 16
36
+ ; CHECK-NEXT: cmplwi 5, 33059
37
+ ; CHECK-NEXT: beq 0, .LBB0_2
38
+ ; CHECK-NEXT: .LBB0_4: # %cmpxchg.nostore
35
39
; CHECK-NEXT: lwsync
36
- ; CHECK-NEXT: bne 0, .LBB0_6
37
- ; CHECK-NEXT: # %bb.4: # %L.B0000
40
+ ; CHECK-NEXT: b .LBB0_8
41
+ ; CHECK-NEXT: .LBB0_5: # %L.B0000
38
42
; CHECK-NEXT: lhz 3, 46(1)
39
- ; CHECK-NEXT: cmplwi 3, 234
40
- ; CHECK-NEXT: bne 0, .LBB0_7
41
- ; CHECK-NEXT: # %bb.5: # %L.B0001
43
+ ; CHECK-NEXT: cmplwi 3, 234
44
+ ; CHECK-NEXT: bne 0, .LBB0_9
45
+ ; CHECK-NEXT: # %bb.6: # %L.B0001
42
46
; CHECK-NEXT: addis 3, 2, .L_MergedGlobals@toc@ha
43
47
; CHECK-NEXT: addi 3, 3, .L_MergedGlobals@toc@l
44
48
; CHECK-NEXT: bl puts
45
49
; CHECK-NEXT: nop
46
50
; CHECK-NEXT: li 3, 0
47
- ; CHECK-NEXT: b .LBB0_9
48
- ; CHECK-NEXT: .LBB0_6: # %L.B0003
51
+ ; CHECK-NEXT: b .LBB0_11
52
+ ; CHECK-NEXT: .LBB0_7: # %cmpxchg.success
53
+ ; CHECK-NEXT: lwsync
54
+ ; CHECK-NEXT: b .LBB0_5
55
+ ; CHECK-NEXT: .LBB0_8: # %L.B0003
49
56
; CHECK-NEXT: addis 3, 2, .L_MergedGlobals@toc@ha
50
57
; CHECK-NEXT: addi 3, 3, .L_MergedGlobals@toc@l
51
58
; CHECK-NEXT: addi 3, 3, 16
52
- ; CHECK-NEXT: b .LBB0_8
53
- ; CHECK-NEXT: .LBB0_7: # %L.B0005
59
+ ; CHECK-NEXT: b .LBB0_10
60
+ ; CHECK-NEXT: .LBB0_9: # %L.B0005
54
61
; CHECK-NEXT: addis 3, 2, .L_MergedGlobals@toc@ha
55
62
; CHECK-NEXT: addi 3, 3, .L_MergedGlobals@toc@l
56
63
; CHECK-NEXT: addi 3, 3, 64
57
- ; CHECK-NEXT: .LBB0_8: # %L.B0003
64
+ ; CHECK-NEXT: .LBB0_10: # %L.B0003
58
65
; CHECK-NEXT: bl puts
59
66
; CHECK-NEXT: nop
60
67
; CHECK-NEXT: li 3, 1
61
- ; CHECK-NEXT: .LBB0_9: # %L.B0003
68
+ ; CHECK-NEXT: .LBB0_11: # %L.B0003
62
69
; CHECK-NEXT: addi 1, 1, 48
63
70
; CHECK-NEXT: ld 0, 16(1)
64
71
; CHECK-NEXT: mtlr 0
@@ -69,64 +76,69 @@ define signext i32 @main() nounwind {
69
76
; CHECK-P7-NEXT: mflr 0
70
77
; CHECK-P7-NEXT: stdu 1, -48(1)
71
78
; CHECK-P7-NEXT: li 3, -32477
72
- ; CHECK-P7-NEXT: std 0, 64(1)
73
79
; CHECK-P7-NEXT: addi 4, 1, 46
74
- ; CHECK-P7-NEXT: li 6, 234
80
+ ; CHECK-P7-NEXT: std 0, 64(1)
75
81
; CHECK-P7-NEXT: sth 3, 46(1)
76
- ; CHECK-P7-NEXT: lis 3, 0
82
+ ; CHECK-P7-NEXT: rldicr 3, 4, 0, 61
83
+ ; CHECK-P7-NEXT: rlwinm 4, 4, 3, 27, 27
84
+ ; CHECK-P7-NEXT: lwarx 5, 0, 3
85
+ ; CHECK-P7-NEXT: srw 6, 5, 4
86
+ ; CHECK-P7-NEXT: clrlwi 6, 6, 16
87
+ ; CHECK-P7-NEXT: cmplwi 6, 33059
88
+ ; CHECK-P7-NEXT: bne 0, .LBB0_4
89
+ ; CHECK-P7-NEXT: # %bb.1: # %cmpxchg.fencedstore
90
+ ; CHECK-P7-NEXT: lis 6, 0
91
+ ; CHECK-P7-NEXT: li 7, 234
77
92
; CHECK-P7-NEXT: sync
78
- ; CHECK-P7-NEXT: ori 5, 3, 33059
79
- ; CHECK-P7-NEXT: rlwinm 3, 4, 3, 27, 27
80
- ; CHECK-P7-NEXT: rldicr 4, 4, 0, 61
81
- ; CHECK-P7-NEXT: slw 7, 5, 3
82
- ; CHECK-P7-NEXT: li 5, 0
83
- ; CHECK-P7-NEXT: slw 6, 6, 3
84
- ; CHECK-P7-NEXT: ori 5, 5, 65535
85
- ; CHECK-P7-NEXT: slw 5, 5, 3
86
- ; CHECK-P7-NEXT: and 6, 6, 5
87
- ; CHECK-P7-NEXT: and 7, 7, 5
88
- ; CHECK-P7-NEXT: .LBB0_1: # %L.entry
89
- ; CHECK-P7-NEXT: #
90
- ; CHECK-P7-NEXT: lwarx 9, 0, 4
91
- ; CHECK-P7-NEXT: and 8, 9, 5
92
- ; CHECK-P7-NEXT: cmpw 8, 7
93
- ; CHECK-P7-NEXT: bne 0, .LBB0_3
94
- ; CHECK-P7-NEXT: # %bb.2: # %L.entry
95
- ; CHECK-P7-NEXT: #
96
- ; CHECK-P7-NEXT: andc 9, 9, 5
97
- ; CHECK-P7-NEXT: or 9, 9, 6
98
- ; CHECK-P7-NEXT: stwcx. 9, 0, 4
99
- ; CHECK-P7-NEXT: bne 0, .LBB0_1
100
- ; CHECK-P7-NEXT: .LBB0_3: # %L.entry
101
- ; CHECK-P7-NEXT: srw 3, 8, 3
93
+ ; CHECK-P7-NEXT: ori 6, 6, 65535
94
+ ; CHECK-P7-NEXT: slw 7, 7, 4
95
+ ; CHECK-P7-NEXT: slw 6, 6, 4
96
+ ; CHECK-P7-NEXT: not 6, 6
97
+ ; CHECK-P7-NEXT: .p2align 4
98
+ ; CHECK-P7-NEXT: .LBB0_2: # %cmpxchg.trystore
99
+ ; CHECK-P7-NEXT: # =>This Inner Loop Header: Depth=1
100
+ ; CHECK-P7-NEXT: and 5, 5, 6
101
+ ; CHECK-P7-NEXT: or 5, 5, 7
102
+ ; CHECK-P7-NEXT: stwcx. 5, 0, 3
103
+ ; CHECK-P7-NEXT: beq 0, .LBB0_7
104
+ ; CHECK-P7-NEXT: # %bb.3: # %cmpxchg.releasedload
105
+ ; CHECK-P7-NEXT: # in Loop: Header=BB0_2 Depth=1
106
+ ; CHECK-P7-NEXT: lwarx 5, 0, 3
107
+ ; CHECK-P7-NEXT: srw 8, 5, 4
108
+ ; CHECK-P7-NEXT: clrlwi 8, 8, 16
109
+ ; CHECK-P7-NEXT: cmplwi 8, 33059
110
+ ; CHECK-P7-NEXT: beq 0, .LBB0_2
111
+ ; CHECK-P7-NEXT: .LBB0_4: # %cmpxchg.nostore
102
112
; CHECK-P7-NEXT: lwsync
103
- ; CHECK-P7-NEXT: cmplwi 3, 33059
104
- ; CHECK-P7-NEXT: bne 0, .LBB0_6
105
- ; CHECK-P7-NEXT: # %bb.4: # %L.B0000
113
+ ; CHECK-P7-NEXT: b .LBB0_8
114
+ ; CHECK-P7-NEXT: .LBB0_5: # %L.B0000
106
115
; CHECK-P7-NEXT: lhz 3, 46(1)
107
- ; CHECK-P7-NEXT: cmplwi 3, 234
108
- ; CHECK-P7-NEXT: bne 0, .LBB0_7
109
- ; CHECK-P7-NEXT: # %bb.5: # %L.B0001
116
+ ; CHECK-P7-NEXT: cmplwi 3, 234
117
+ ; CHECK-P7-NEXT: bne 0, .LBB0_9
118
+ ; CHECK-P7-NEXT: # %bb.6: # %L.B0001
110
119
; CHECK-P7-NEXT: addis 3, 2, .L_MergedGlobals@toc@ha
111
120
; CHECK-P7-NEXT: addi 3, 3, .L_MergedGlobals@toc@l
112
121
; CHECK-P7-NEXT: bl puts
113
122
; CHECK-P7-NEXT: nop
114
123
; CHECK-P7-NEXT: li 3, 0
115
- ; CHECK-P7-NEXT: b .LBB0_9
116
- ; CHECK-P7-NEXT: .LBB0_6: # %L.B0003
124
+ ; CHECK-P7-NEXT: b .LBB0_11
125
+ ; CHECK-P7-NEXT: .LBB0_7: # %cmpxchg.success
126
+ ; CHECK-P7-NEXT: lwsync
127
+ ; CHECK-P7-NEXT: b .LBB0_5
128
+ ; CHECK-P7-NEXT: .LBB0_8: # %L.B0003
117
129
; CHECK-P7-NEXT: addis 3, 2, .L_MergedGlobals@toc@ha
118
130
; CHECK-P7-NEXT: addi 3, 3, .L_MergedGlobals@toc@l
119
131
; CHECK-P7-NEXT: addi 3, 3, 16
120
- ; CHECK-P7-NEXT: b .LBB0_8
121
- ; CHECK-P7-NEXT: .LBB0_7: # %L.B0005
132
+ ; CHECK-P7-NEXT: b .LBB0_10
133
+ ; CHECK-P7-NEXT: .LBB0_9: # %L.B0005
122
134
; CHECK-P7-NEXT: addis 3, 2, .L_MergedGlobals@toc@ha
123
135
; CHECK-P7-NEXT: addi 3, 3, .L_MergedGlobals@toc@l
124
136
; CHECK-P7-NEXT: addi 3, 3, 64
125
- ; CHECK-P7-NEXT: .LBB0_8: # %L.B0003
137
+ ; CHECK-P7-NEXT: .LBB0_10: # %L.B0003
126
138
; CHECK-P7-NEXT: bl puts
127
139
; CHECK-P7-NEXT: nop
128
140
; CHECK-P7-NEXT: li 3, 1
129
- ; CHECK-P7-NEXT: .LBB0_9: # %L.B0003
141
+ ; CHECK-P7-NEXT: .LBB0_11: # %L.B0003
130
142
; CHECK-P7-NEXT: addi 1, 1, 48
131
143
; CHECK-P7-NEXT: ld 0, 16(1)
132
144
; CHECK-P7-NEXT: mtlr 0
0 commit comments