@@ -62,18 +62,13 @@ define i64 @read_flags_reg_pressure() nounwind {
62
62
; CHECK-NEXT: pushq %r13
63
63
; CHECK-NEXT: pushq %r12
64
64
; CHECK-NEXT: pushq %rbx
65
- ; CHECK-NEXT: subq $16, %rsp
66
65
; CHECK-NEXT: #APP
67
66
; CHECK-NEXT: #NO_APP
68
- ; CHECK-NEXT: movq %rdx, (%rsp) # 8-byte Spill
69
67
; CHECK-NEXT: pushfq
70
- ; CHECK-NEXT: popq %rdx
71
- ; CHECK-NEXT: movq %rdx, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
72
- ; CHECK-NEXT: movq (%rsp), %rdx # 8-byte Reload
68
+ ; CHECK-NEXT: popq %rbp
73
69
; CHECK-NEXT: #APP
74
70
; CHECK-NEXT: #NO_APP
75
- ; CHECK-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload
76
- ; CHECK-NEXT: addq $16, %rsp
71
+ ; CHECK-NEXT: movq %rbp, %rax
77
72
; CHECK-NEXT: popq %rbx
78
73
; CHECK-NEXT: popq %r12
79
74
; CHECK-NEXT: popq %r13
@@ -94,8 +89,6 @@ define i64 @read_flags_reg_pressure() nounwind {
94
89
; WIN64-NEXT: pushq %rbx
95
90
; WIN64-NEXT: subq $16, %rsp
96
91
; WIN64-NEXT: leaq {{[0-9]+}}(%rsp), %rbp
97
- ; WIN64-NEXT: pushq %rbp
98
- ; WIN64-NEXT: pushq %rax
99
92
; WIN64-NEXT: #APP
100
93
; WIN64-NEXT: #NO_APP
101
94
; WIN64-NEXT: movq %rdx, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
@@ -105,8 +98,6 @@ define i64 @read_flags_reg_pressure() nounwind {
105
98
; WIN64-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rdx # 8-byte Reload
106
99
; WIN64-NEXT: #APP
107
100
; WIN64-NEXT: #NO_APP
108
- ; WIN64-NEXT: addq $8, %rsp
109
- ; WIN64-NEXT: popq %rbp
110
101
; WIN64-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload
111
102
; WIN64-NEXT: addq $16, %rsp
112
103
; WIN64-NEXT: popq %rbx
@@ -118,25 +109,24 @@ define i64 @read_flags_reg_pressure() nounwind {
118
109
; WIN64-NEXT: popq %r15
119
110
; WIN64-NEXT: popq %rbp
120
111
; WIN64-NEXT: retq
121
- %1 = tail call { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } asm sideeffect "" , "={ax},={bx},={cx},={dx},={si},={di},={bp},={r8},={r9},={r10},={r11},={r12},={r13},={r14},={r15},~{dirflag},~{fpsr},~{flags}" ()
122
- %2 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %1 , 0
123
- %3 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %1 , 1
124
- %4 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %1 , 2
125
- %5 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %1 , 3
126
- %6 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %1 , 4
127
- %7 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %1 , 5
128
- %8 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %1 , 6
129
- %9 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %1 , 7
130
- %10 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %1 , 8
131
- %11 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %1 , 9
132
- %12 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %1 , 10
133
- %13 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %1 , 11
134
- %14 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %1 , 12
135
- %15 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %1 , 13
136
- %16 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %1 , 14
137
- %17 = tail call i64 @llvm.x86.flags.read.u64 ()
138
- tail call void asm sideeffect "" , "{ax},{bx},{cx},{dx},{si},{di},{bp},{r8},{r9},{r10},{r11},{r12},{r13},{r14},{r15},~{dirflag},~{fpsr},~{flags}" (i64 %2 , i64 %3 , i64 %4 , i64 %5 , i64 %6 , i64 %7 , i64 %8 , i64 %9 , i64 %10 , i64 %11 , i64 %12 , i64 %13 , i64 %14 , i64 %15 , i64 %16 )
139
- ret i64 %17
112
+ %1 = tail call { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } asm sideeffect "" , "={ax},={bx},={cx},={dx},={si},={di},={r8},={r9},={r10},={r11},={r12},={r13},={r14},={r15},~{dirflag},~{fpsr},~{flags}" ()
113
+ %2 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %1 , 0
114
+ %3 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %1 , 1
115
+ %4 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %1 , 2
116
+ %5 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %1 , 3
117
+ %6 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %1 , 4
118
+ %7 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %1 , 5
119
+ %8 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %1 , 6
120
+ %9 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %1 , 7
121
+ %10 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %1 , 8
122
+ %11 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %1 , 9
123
+ %12 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %1 , 10
124
+ %13 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %1 , 11
125
+ %14 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %1 , 12
126
+ %15 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %1 , 13
127
+ %flags = tail call i64 @llvm.x86.flags.read.u64 ()
128
+ tail call void asm sideeffect "" , "{ax},{bx},{cx},{dx},{si},{di},{r8},{r9},{r10},{r11},{r12},{r13},{r14},{r15},~{dirflag},~{fpsr},~{flags}" (i64 %2 , i64 %3 , i64 %4 , i64 %5 , i64 %6 , i64 %7 , i64 %8 , i64 %9 , i64 %10 , i64 %11 , i64 %12 , i64 %13 , i64 %14 , i64 %15 )
129
+ ret i64 %flags
140
130
}
141
131
142
132
define void @write_flags_reg_pressure (i64 noundef %0 ) nounwind {
@@ -148,18 +138,13 @@ define void @write_flags_reg_pressure(i64 noundef %0) nounwind {
148
138
; CHECK-NEXT: pushq %r13
149
139
; CHECK-NEXT: pushq %r12
150
140
; CHECK-NEXT: pushq %rbx
151
- ; CHECK-NEXT: subq $16, %rsp
152
- ; CHECK-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
141
+ ; CHECK-NEXT: movq %rdi, %rbp
153
142
; CHECK-NEXT: #APP
154
143
; CHECK-NEXT: #NO_APP
155
- ; CHECK-NEXT: movq %rdx, (%rsp) # 8-byte Spill
156
- ; CHECK-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rdx # 8-byte Reload
157
- ; CHECK-NEXT: pushq %rdx
144
+ ; CHECK-NEXT: pushq %rbp
158
145
; CHECK-NEXT: popfq
159
- ; CHECK-NEXT: movq (%rsp), %rdx # 8-byte Reload
160
146
; CHECK-NEXT: #APP
161
147
; CHECK-NEXT: #NO_APP
162
- ; CHECK-NEXT: addq $16, %rsp
163
148
; CHECK-NEXT: popq %rbx
164
149
; CHECK-NEXT: popq %r12
165
150
; CHECK-NEXT: popq %r13
@@ -181,8 +166,6 @@ define void @write_flags_reg_pressure(i64 noundef %0) nounwind {
181
166
; WIN64-NEXT: subq $16, %rsp
182
167
; WIN64-NEXT: leaq {{[0-9]+}}(%rsp), %rbp
183
168
; WIN64-NEXT: movq %rcx, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
184
- ; WIN64-NEXT: pushq %rbp
185
- ; WIN64-NEXT: pushq %rax
186
169
; WIN64-NEXT: #APP
187
170
; WIN64-NEXT: #NO_APP
188
171
; WIN64-NEXT: movq %rdx, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
@@ -192,8 +175,6 @@ define void @write_flags_reg_pressure(i64 noundef %0) nounwind {
192
175
; WIN64-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rdx # 8-byte Reload
193
176
; WIN64-NEXT: #APP
194
177
; WIN64-NEXT: #NO_APP
195
- ; WIN64-NEXT: popq %rax
196
- ; WIN64-NEXT: popq %rbp
197
178
; WIN64-NEXT: addq $16, %rsp
198
179
; WIN64-NEXT: popq %rbx
199
180
; WIN64-NEXT: popq %rdi
@@ -204,23 +185,22 @@ define void @write_flags_reg_pressure(i64 noundef %0) nounwind {
204
185
; WIN64-NEXT: popq %r15
205
186
; WIN64-NEXT: popq %rbp
206
187
; WIN64-NEXT: retq
207
- %2 = tail call { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } asm sideeffect "" , "={ax},={bx},={cx},={dx},={si},={di},={bp},={r8},={r9},={r10},={r11},={r12},={r13},={r14},={r15},~{dirflag},~{fpsr},~{flags}" ()
208
- %3 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %2 , 0
209
- %4 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %2 , 1
210
- %5 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %2 , 2
211
- %6 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %2 , 3
212
- %7 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %2 , 4
213
- %8 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %2 , 5
214
- %9 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %2 , 6
215
- %10 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %2 , 7
216
- %11 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %2 , 8
217
- %12 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %2 , 9
218
- %13 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %2 , 10
219
- %14 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %2 , 11
220
- %15 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %2 , 12
221
- %16 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %2 , 13
222
- %17 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %2 , 14
188
+ %2 = tail call { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } asm sideeffect "" , "={ax},={bx},={cx},={dx},={si},={di},={r8},={r9},={r10},={r11},={r12},={r13},={r14},={r15},~{dirflag},~{fpsr},~{flags}" ()
189
+ %3 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %2 , 0
190
+ %4 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %2 , 1
191
+ %5 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %2 , 2
192
+ %6 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %2 , 3
193
+ %7 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %2 , 4
194
+ %8 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %2 , 5
195
+ %9 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %2 , 6
196
+ %10 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %2 , 7
197
+ %11 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %2 , 8
198
+ %12 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %2 , 9
199
+ %13 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %2 , 10
200
+ %14 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %2 , 11
201
+ %15 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %2 , 12
202
+ %16 = extractvalue { i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 , i64 } %2 , 13
223
203
tail call void @llvm.x86.flags.write.u64 (i64 %0 )
224
- tail call void asm sideeffect "" , "{ax},{bx},{cx},{dx},{si},{di},{bp},{ r8},{r9},{r10},{r11},{r12},{r13},{r14},{r15},~{dirflag},~{fpsr},~{flags}" (i64 %3 , i64 %4 , i64 %5 , i64 %6 , i64 %7 , i64 %8 , i64 %9 , i64 %10 , i64 %11 , i64 %12 , i64 %13 , i64 %14 , i64 %15 , i64 %16 , i64 %17 )
204
+ tail call void asm sideeffect "" , "{ax},{bx},{cx},{dx},{si},{di},{r8},{r9},{r10},{r11},{r12},{r13},{r14},{r15},~{dirflag},~{fpsr},~{flags}" (i64 %3 , i64 %4 , i64 %5 , i64 %6 , i64 %7 , i64 %8 , i64 %9 , i64 %10 , i64 %11 , i64 %12 , i64 %13 , i64 %14 , i64 %15 , i64 %16 )
225
205
ret void
226
206
}
0 commit comments