@@ -50,35 +50,33 @@ define i1 @lshr_ctlz_undef_cmpeq_one_i64(i64 %in) nounwind {
5050; X86-BSR-NEXT: xorl $31, %eax
5151; X86-BSR-NEXT: addl $32, %eax
5252; X86-BSR-NEXT: .LBB1_2:
53- ; X86-BSR-NEXT: testl $-64 , %eax
54- ; X86-BSR-NEXT: setne %al
53+ ; X86-BSR-NEXT: shrl $6 , %eax
54+ ; X86-BSR-NEXT: # kill: def $al killed $al killed $eax
5555; X86-BSR-NEXT: retl
5656;
5757; X86-LZCNT-LABEL: lshr_ctlz_undef_cmpeq_one_i64:
5858; X86-LZCNT: # %bb.0:
59- ; X86-LZCNT-NEXT: lzcntl {{[0-9]+}}(%esp), %eax
60- ; X86-LZCNT-NEXT: addl $32, %eax
61- ; X86-LZCNT-NEXT: xorl %ecx , %ecx
59+ ; X86-LZCNT-NEXT: lzcntl {{[0-9]+}}(%esp), %ecx
60+ ; X86-LZCNT-NEXT: addl $32, %ecx
61+ ; X86-LZCNT-NEXT: xorl %eax , %eax
6262; X86-LZCNT-NEXT: cmpl $0, {{[0-9]+}}(%esp)
63- ; X86-LZCNT-NEXT: cmovel %eax , %ecx
64- ; X86-LZCNT-NEXT: testb $64 , %cl
65- ; X86-LZCNT-NEXT: setne %al
63+ ; X86-LZCNT-NEXT: cmovel %ecx , %eax
64+ ; X86-LZCNT-NEXT: shrl $6 , %eax
65+ ; X86-LZCNT-NEXT: # kill: def $al killed $al killed $eax
6666; X86-LZCNT-NEXT: retl
6767;
6868; X64-BSR-LABEL: lshr_ctlz_undef_cmpeq_one_i64:
6969; X64-BSR: # %bb.0:
7070; X64-BSR-NEXT: bsrq %rdi, %rax
7171; X64-BSR-NEXT: shrl $6, %eax
72- ; X64-BSR-NEXT: cmpl $1, %eax
73- ; X64-BSR-NEXT: sete %al
72+ ; X64-BSR-NEXT: # kill: def $al killed $al killed $rax
7473; X64-BSR-NEXT: retq
7574;
7675; X64-LZCNT-LABEL: lshr_ctlz_undef_cmpeq_one_i64:
7776; X64-LZCNT: # %bb.0:
7877; X64-LZCNT-NEXT: lzcntq %rdi, %rax
7978; X64-LZCNT-NEXT: shrl $6, %eax
80- ; X64-LZCNT-NEXT: cmpl $1, %eax
81- ; X64-LZCNT-NEXT: sete %al
79+ ; X64-LZCNT-NEXT: # kill: def $al killed $al killed $rax
8280; X64-LZCNT-NEXT: retq
8381 %ctlz = call i64 @llvm.ctlz.i64 (i64 %in , i1 -1 )
8482 %lshr = lshr i64 %ctlz , 6
@@ -131,33 +129,33 @@ define i1 @lshr_ctlz_undef_cmpne_zero_i64(i64 %in) nounwind {
131129; X86-BSR-NEXT: xorl $31, %eax
132130; X86-BSR-NEXT: addl $32, %eax
133131; X86-BSR-NEXT: .LBB3_2:
134- ; X86-BSR-NEXT: testl $-64 , %eax
135- ; X86-BSR-NEXT: setne %al
132+ ; X86-BSR-NEXT: shrl $6 , %eax
133+ ; X86-BSR-NEXT: # kill: def $al killed $al killed $eax
136134; X86-BSR-NEXT: retl
137135;
138136; X86-LZCNT-LABEL: lshr_ctlz_undef_cmpne_zero_i64:
139137; X86-LZCNT: # %bb.0:
140- ; X86-LZCNT-NEXT: lzcntl {{[0-9]+}}(%esp), %eax
141- ; X86-LZCNT-NEXT: addl $32, %eax
142- ; X86-LZCNT-NEXT: xorl %ecx , %ecx
138+ ; X86-LZCNT-NEXT: lzcntl {{[0-9]+}}(%esp), %ecx
139+ ; X86-LZCNT-NEXT: addl $32, %ecx
140+ ; X86-LZCNT-NEXT: xorl %eax , %eax
143141; X86-LZCNT-NEXT: cmpl $0, {{[0-9]+}}(%esp)
144- ; X86-LZCNT-NEXT: cmovel %eax , %ecx
145- ; X86-LZCNT-NEXT: testb $64 , %cl
146- ; X86-LZCNT-NEXT: setne %al
142+ ; X86-LZCNT-NEXT: cmovel %ecx , %eax
143+ ; X86-LZCNT-NEXT: shrl $6 , %eax
144+ ; X86-LZCNT-NEXT: # kill: def $al killed $al killed $eax
147145; X86-LZCNT-NEXT: retl
148146;
149147; X64-BSR-LABEL: lshr_ctlz_undef_cmpne_zero_i64:
150148; X64-BSR: # %bb.0:
151149; X64-BSR-NEXT: bsrq %rdi, %rax
152- ; X64-BSR-NEXT: testl $-64 , %eax
153- ; X64-BSR-NEXT: setne %al
150+ ; X64-BSR-NEXT: shrl $6 , %eax
151+ ; X64-BSR-NEXT: # kill: def $al killed $al killed $rax
154152; X64-BSR-NEXT: retq
155153;
156154; X64-LZCNT-LABEL: lshr_ctlz_undef_cmpne_zero_i64:
157155; X64-LZCNT: # %bb.0:
158156; X64-LZCNT-NEXT: lzcntq %rdi, %rax
159- ; X64-LZCNT-NEXT: testb $64 , %al
160- ; X64-LZCNT-NEXT: setne %al
157+ ; X64-LZCNT-NEXT: shrl $6 , %eax
158+ ; X64-LZCNT-NEXT: # kill: def $al killed $al killed $rax
161159; X64-LZCNT-NEXT: retq
162160 %ctlz = call i64 @llvm.ctlz.i64 (i64 %in , i1 -1 )
163161 %lshr = lshr i64 %ctlz , 6
0 commit comments