@@ -159,10 +159,9 @@ define i32 @length3(ptr %X, ptr %Y) nounwind {
159159; X86-NEXT: popl %esi
160160; X86-NEXT: retl
161161; X86-NEXT: .LBB9_3: # %res_block
162- ; X86-NEXT: xorl %eax, %eax
163- ; X86-NEXT: cmpw %si, %dx
164- ; X86-NEXT: sbbl %eax, %eax
165- ; X86-NEXT: orl $1, %eax
162+ ; X86-NEXT: setae %al
163+ ; X86-NEXT: movzbl %al, %eax
164+ ; X86-NEXT: leal -1(%eax,%eax), %eax
166165; X86-NEXT: popl %esi
167166; X86-NEXT: retl
168167 %m = tail call i32 @memcmp (ptr %X , ptr %Y , i32 3 ) nounwind
@@ -284,10 +283,9 @@ define i32 @length5(ptr %X, ptr %Y) nounwind {
284283; X86-NEXT: popl %esi
285284; X86-NEXT: retl
286285; X86-NEXT: .LBB16_3: # %res_block
287- ; X86-NEXT: xorl %eax, %eax
288- ; X86-NEXT: cmpl %esi, %edx
289- ; X86-NEXT: sbbl %eax, %eax
290- ; X86-NEXT: orl $1, %eax
286+ ; X86-NEXT: setae %al
287+ ; X86-NEXT: movzbl %al, %eax
288+ ; X86-NEXT: leal -1(%eax,%eax), %eax
291289; X86-NEXT: popl %esi
292290; X86-NEXT: retl
293291 %m = tail call i32 @memcmp (ptr %X , ptr %Y , i32 5 ) nounwind
@@ -330,10 +328,9 @@ define i1 @length5_lt(ptr %X, ptr %Y) nounwind {
330328; X86-NEXT: subl %ecx, %eax
331329; X86-NEXT: jmp .LBB18_2
332330; X86-NEXT: .LBB18_3: # %res_block
333- ; X86-NEXT: xorl %eax, %eax
334- ; X86-NEXT: cmpl %esi, %edx
335- ; X86-NEXT: sbbl %eax, %eax
336- ; X86-NEXT: orl $1, %eax
331+ ; X86-NEXT: setae %al
332+ ; X86-NEXT: movzbl %al, %eax
333+ ; X86-NEXT: leal -1(%eax,%eax), %eax
337334; X86-NEXT: .LBB18_2: # %endblock
338335; X86-NEXT: shrl $31, %eax
339336; X86-NEXT: # kill: def $al killed $al killed $eax
@@ -367,8 +364,8 @@ define i32 @length7(ptr %X, ptr %Y) nounwind {
367364; X86-NEXT: .LBB19_2: # %res_block
368365; X86-NEXT: xorl %eax, %eax
369366; X86-NEXT: cmpl %edx, %ecx
370- ; X86-NEXT: sbbl %eax, %eax
371- ; X86-NEXT: orl $1 , %eax
367+ ; X86-NEXT: setae %al
368+ ; X86-NEXT: leal -1(%eax,%eax) , %eax
372369; X86-NEXT: .LBB19_3: # %endblock
373370; X86-NEXT: popl %esi
374371; X86-NEXT: retl
@@ -416,8 +413,8 @@ define i1 @length7_lt(ptr %X, ptr %Y) nounwind {
416413; X86-NEXT: .LBB21_2: # %res_block
417414; X86-NEXT: xorl %eax, %eax
418415; X86-NEXT: cmpl %edx, %ecx
419- ; X86-NEXT: sbbl %eax, %eax
420- ; X86-NEXT: orl $1 , %eax
416+ ; X86-NEXT: setae %al
417+ ; X86-NEXT: leal -1(%eax,%eax) , %eax
421418; X86-NEXT: .LBB21_3: # %endblock
422419; X86-NEXT: shrl $31, %eax
423420; X86-NEXT: # kill: def $al killed $al killed $eax
@@ -451,8 +448,8 @@ define i32 @length8(ptr %X, ptr %Y) nounwind {
451448; X86-NEXT: .LBB22_2: # %res_block
452449; X86-NEXT: xorl %eax, %eax
453450; X86-NEXT: cmpl %edx, %ecx
454- ; X86-NEXT: sbbl %eax, %eax
455- ; X86-NEXT: orl $1 , %eax
451+ ; X86-NEXT: setae %al
452+ ; X86-NEXT: leal -1(%eax,%eax) , %eax
456453; X86-NEXT: .LBB22_3: # %endblock
457454; X86-NEXT: popl %esi
458455; X86-NEXT: retl
@@ -613,8 +610,8 @@ define i32 @length12(ptr %X, ptr %Y) nounwind {
613610; X86-NEXT: .LBB29_3: # %res_block
614611; X86-NEXT: xorl %eax, %eax
615612; X86-NEXT: cmpl %edx, %ecx
616- ; X86-NEXT: sbbl %eax, %eax
617- ; X86-NEXT: orl $1 , %eax
613+ ; X86-NEXT: setae %al
614+ ; X86-NEXT: leal -1(%eax,%eax) , %eax
618615; X86-NEXT: .LBB29_4: # %endblock
619616; X86-NEXT: popl %esi
620617; X86-NEXT: retl
@@ -738,8 +735,8 @@ define i32 @length16(ptr %X, ptr %Y) nounwind {
738735; X86-NEXT: .LBB33_4: # %res_block
739736; X86-NEXT: xorl %eax, %eax
740737; X86-NEXT: cmpl %edx, %ecx
741- ; X86-NEXT: sbbl %eax, %eax
742- ; X86-NEXT: orl $1 , %eax
738+ ; X86-NEXT: setae %al
739+ ; X86-NEXT: leal -1(%eax,%eax) , %eax
743740; X86-NEXT: .LBB33_5: # %endblock
744741; X86-NEXT: popl %esi
745742; X86-NEXT: retl
@@ -852,8 +849,8 @@ define i1 @length16_lt(ptr %x, ptr %y) nounwind {
852849; X86-NEXT: .LBB35_4: # %res_block
853850; X86-NEXT: xorl %eax, %eax
854851; X86-NEXT: cmpl %edx, %ecx
855- ; X86-NEXT: sbbl %eax, %eax
856- ; X86-NEXT: orl $1 , %eax
852+ ; X86-NEXT: setae %al
853+ ; X86-NEXT: leal -1(%eax,%eax) , %eax
857854; X86-NEXT: .LBB35_5: # %endblock
858855; X86-NEXT: shrl $31, %eax
859856; X86-NEXT: # kill: def $al killed $al killed $eax
@@ -901,8 +898,8 @@ define i1 @length16_gt(ptr %x, ptr %y) nounwind {
901898; X86-NEXT: .LBB36_4: # %res_block
902899; X86-NEXT: xorl %edx, %edx
903900; X86-NEXT: cmpl %ecx, %eax
904- ; X86-NEXT: sbbl %edx, %edx
905- ; X86-NEXT: orl $1 , %edx
901+ ; X86-NEXT: setae %dl
902+ ; X86-NEXT: leal -1(%edx,%edx) , %edx
906903; X86-NEXT: .LBB36_5: # %endblock
907904; X86-NEXT: testl %edx, %edx
908905; X86-NEXT: setg %al
0 commit comments