@@ -38,13 +38,13 @@ define i8 @cmov_bsf8_undef(i8 %x, i8 %y) nounwind {
38
38
; X86: # %bb.0:
39
39
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
40
40
; X86-NEXT: testb %al, %al
41
- ; X86-NEXT: je .LBB1_1
41
+ ; X86-NEXT: jne .LBB1_1
42
42
; X86-NEXT: # %bb.2:
43
- ; X86-NEXT: rep bsfl %eax , %eax
43
+ ; X86-NEXT: movzbl {{[0-9]+}}(%esp) , %eax
44
44
; X86-NEXT: # kill: def $al killed $al killed $eax
45
45
; X86-NEXT: retl
46
46
; X86-NEXT: .LBB1_1:
47
- ; X86-NEXT: movzbl {{[0-9]+}}(%esp) , %eax
47
+ ; X86-NEXT: rep bsfl %eax , %eax
48
48
; X86-NEXT: # kill: def $al killed $al killed $eax
49
49
; X86-NEXT: retl
50
50
;
@@ -56,8 +56,8 @@ define i8 @cmov_bsf8_undef(i8 %x, i8 %y) nounwind {
56
56
; X64-NEXT: # kill: def $al killed $al killed $eax
57
57
; X64-NEXT: retq
58
58
%1 = tail call i8 @llvm.cttz.i8 (i8 %x , i1 true )
59
- %2 = icmp eq i8 %x , 0
60
- %3 = select i1 %2 , i8 %y , i8 %1
59
+ %2 = icmp ne i8 %x , 0
60
+ %3 = select i1 %2 , i8 %1 , i8 %y
61
61
ret i8 %3
62
62
}
63
63
@@ -66,14 +66,14 @@ define i16 @cmov_bsf16(i16 %x, i16 %y) nounwind {
66
66
; X86: # %bb.0:
67
67
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
68
68
; X86-NEXT: testw %ax, %ax
69
- ; X86-NEXT: je .LBB2_1
69
+ ; X86-NEXT: jne .LBB2_1
70
70
; X86-NEXT: # %bb.2:
71
- ; X86-NEXT: orl $65536, %eax # imm = 0x10000
72
- ; X86-NEXT: rep bsfl %eax, %eax
71
+ ; X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax
73
72
; X86-NEXT: # kill: def $ax killed $ax killed $eax
74
73
; X86-NEXT: retl
75
74
; X86-NEXT: .LBB2_1:
76
- ; X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax
75
+ ; X86-NEXT: orl $65536, %eax # imm = 0x10000
76
+ ; X86-NEXT: rep bsfl %eax, %eax
77
77
; X86-NEXT: # kill: def $ax killed $ax killed $eax
78
78
; X86-NEXT: retl
79
79
;
@@ -87,8 +87,8 @@ define i16 @cmov_bsf16(i16 %x, i16 %y) nounwind {
87
87
; X64-NEXT: # kill: def $ax killed $ax killed $eax
88
88
; X64-NEXT: retq
89
89
%1 = tail call i16 @llvm.cttz.i16 (i16 %x , i1 false )
90
- %2 = icmp eq i16 %x , 0
91
- %3 = select i1 %2 , i16 %y , i16 %1
90
+ %2 = icmp ne i16 %x , 0
91
+ %3 = select i1 %2 , i16 %1 , i16 %y
92
92
ret i16 %3
93
93
}
94
94
@@ -157,12 +157,12 @@ define i32 @cmov_bsf32_undef(i32 %x, i32 %y) nounwind {
157
157
; X86: # %bb.0:
158
158
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
159
159
; X86-NEXT: testl %eax, %eax
160
- ; X86-NEXT: je .LBB5_1
160
+ ; X86-NEXT: jne .LBB5_1
161
161
; X86-NEXT: # %bb.2:
162
- ; X86-NEXT: rep bsfl %eax , %eax
162
+ ; X86-NEXT: movl {{[0-9]+}}(%esp) , %eax
163
163
; X86-NEXT: retl
164
164
; X86-NEXT: .LBB5_1:
165
- ; X86-NEXT: movl {{[0-9]+}}(%esp) , %eax
165
+ ; X86-NEXT: rep bsfl %eax , %eax
166
166
; X86-NEXT: retl
167
167
;
168
168
; X64-LABEL: cmov_bsf32_undef:
@@ -171,8 +171,8 @@ define i32 @cmov_bsf32_undef(i32 %x, i32 %y) nounwind {
171
171
; X64-NEXT: cmovel %esi, %eax
172
172
; X64-NEXT: retq
173
173
%1 = tail call i32 @llvm.cttz.i32 (i32 %x , i1 true )
174
- %2 = icmp eq i32 %x , 0
175
- %3 = select i1 %2 , i32 %y , i32 %1
174
+ %2 = icmp ne i32 %x , 0
175
+ %3 = select i1 %2 , i32 %1 , i32 %y
176
176
ret i32 %3
177
177
}
178
178
@@ -199,7 +199,7 @@ define i64 @cmov_bsf64(i64 %x, i64 %y) nounwind {
199
199
; X86-NEXT: movl $64, %eax
200
200
; X86-NEXT: orl %ecx, %esi
201
201
; X86-NEXT: jne .LBB6_7
202
- ; X86-NEXT: .LBB6_6:
202
+ ; X86-NEXT: .LBB6_6: # %cond.end
203
203
; X86-NEXT: movl {{[0-9]+}}(%esp), %edx
204
204
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
205
205
; X86-NEXT: .LBB6_7: # %cond.end
@@ -218,8 +218,8 @@ define i64 @cmov_bsf64(i64 %x, i64 %y) nounwind {
218
218
; X64-NEXT: cmoveq %rsi, %rax
219
219
; X64-NEXT: retq
220
220
%1 = tail call i64 @llvm.cttz.i64 (i64 %x , i1 false )
221
- %2 = icmp eq i64 %x , 0
222
- %3 = select i1 %2 , i64 %y , i64 %1
221
+ %2 = icmp ne i64 %x , 0
222
+ %3 = select i1 %2 , i64 %1 , i64 %y
223
223
ret i64 %3
224
224
}
225
225
@@ -375,10 +375,10 @@ define i128 @cmov_bsf128_undef(i128 %x, i128 %y) nounwind {
375
375
; X86-NEXT: orl %ebx, %ebp
376
376
; X86-NEXT: orl %edi, %ebp
377
377
; X86-NEXT: je .LBB9_11
378
- ; X86-NEXT: # %bb.1: # %select.false .sink
378
+ ; X86-NEXT: # %bb.1: # %select.true .sink
379
379
; X86-NEXT: testl %edx, %edx
380
380
; X86-NEXT: jne .LBB9_2
381
- ; X86-NEXT: # %bb.3: # %select.false .sink
381
+ ; X86-NEXT: # %bb.3: # %select.true .sink
382
382
; X86-NEXT: rep bsfl %ecx, %edi
383
383
; X86-NEXT: addl $32, %edi
384
384
; X86-NEXT: testl %ebx, %ebx
@@ -402,20 +402,20 @@ define i128 @cmov_bsf128_undef(i128 %x, i128 %y) nounwind {
402
402
; X86-NEXT: rep bsfl %edx, %edi
403
403
; X86-NEXT: testl %ebx, %ebx
404
404
; X86-NEXT: jne .LBB9_5
405
- ; X86-NEXT: .LBB9_6: # %select.false .sink
405
+ ; X86-NEXT: .LBB9_6: # %select.true .sink
406
406
; X86-NEXT: rep bsfl %esi, %esi
407
407
; X86-NEXT: addl $32, %esi
408
408
; X86-NEXT: orl %ecx, %edx
409
409
; X86-NEXT: jne .LBB9_9
410
- ; X86-NEXT: .LBB9_8: # %select.false .sink
410
+ ; X86-NEXT: .LBB9_8: # %select.true .sink
411
411
; X86-NEXT: addl $64, %esi
412
412
; X86-NEXT: movl %esi, %edi
413
- ; X86-NEXT: .LBB9_9: # %select.false .sink
413
+ ; X86-NEXT: .LBB9_9: # %select.true .sink
414
414
; X86-NEXT: movl %edi, (%eax)
415
415
; X86-NEXT: movl $0, 12(%eax)
416
416
; X86-NEXT: movl $0, 8(%eax)
417
417
; X86-NEXT: movl $0, 4(%eax)
418
- ; X86-NEXT: .LBB9_10: # %select.false .sink
418
+ ; X86-NEXT: .LBB9_10: # %select.true .sink
419
419
; X86-NEXT: popl %esi
420
420
; X86-NEXT: popl %edi
421
421
; X86-NEXT: popl %ebx
@@ -427,7 +427,7 @@ define i128 @cmov_bsf128_undef(i128 %x, i128 %y) nounwind {
427
427
; X64-NEXT: movq %rdi, %rax
428
428
; X64-NEXT: orq %rsi, %rax
429
429
; X64-NEXT: je .LBB9_2
430
- ; X64-NEXT: # %bb.1: # %select.false .sink
430
+ ; X64-NEXT: # %bb.1: # %select.true .sink
431
431
; X64-NEXT: rep bsfq %rdi, %rcx
432
432
; X64-NEXT: rep bsfq %rsi, %rax
433
433
; X64-NEXT: addq $64, %rax
@@ -440,8 +440,8 @@ define i128 @cmov_bsf128_undef(i128 %x, i128 %y) nounwind {
440
440
; X64-NEXT: movq %rcx, %rdx
441
441
; X64-NEXT: retq
442
442
%1 = tail call i128 @llvm.cttz.i128 (i128 %x , i1 true )
443
- %2 = icmp eq i128 %x , 0
444
- %3 = select i1 %2 , i128 %y , i128 %1
443
+ %2 = icmp ne i128 %x , 0
444
+ %3 = select i1 %2 , i128 %1 , i128 %y
445
445
ret i128 %3
446
446
}
447
447
0 commit comments