@@ -159,10 +159,9 @@ define i32 @length3(ptr %X, ptr %Y) nounwind {
159
159
; X86-NEXT: popl %esi
160
160
; X86-NEXT: retl
161
161
; 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
166
165
; X86-NEXT: popl %esi
167
166
; X86-NEXT: retl
168
167
%m = tail call i32 @memcmp (ptr %X , ptr %Y , i32 3 ) nounwind
@@ -284,10 +283,9 @@ define i32 @length5(ptr %X, ptr %Y) nounwind {
284
283
; X86-NEXT: popl %esi
285
284
; X86-NEXT: retl
286
285
; 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
291
289
; X86-NEXT: popl %esi
292
290
; X86-NEXT: retl
293
291
%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 {
330
328
; X86-NEXT: subl %ecx, %eax
331
329
; X86-NEXT: jmp .LBB18_2
332
330
; 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
337
334
; X86-NEXT: .LBB18_2: # %endblock
338
335
; X86-NEXT: shrl $31, %eax
339
336
; X86-NEXT: # kill: def $al killed $al killed $eax
@@ -367,8 +364,8 @@ define i32 @length7(ptr %X, ptr %Y) nounwind {
367
364
; X86-NEXT: .LBB19_2: # %res_block
368
365
; X86-NEXT: xorl %eax, %eax
369
366
; 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
372
369
; X86-NEXT: .LBB19_3: # %endblock
373
370
; X86-NEXT: popl %esi
374
371
; X86-NEXT: retl
@@ -416,8 +413,8 @@ define i1 @length7_lt(ptr %X, ptr %Y) nounwind {
416
413
; X86-NEXT: .LBB21_2: # %res_block
417
414
; X86-NEXT: xorl %eax, %eax
418
415
; 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
421
418
; X86-NEXT: .LBB21_3: # %endblock
422
419
; X86-NEXT: shrl $31, %eax
423
420
; X86-NEXT: # kill: def $al killed $al killed $eax
@@ -451,8 +448,8 @@ define i32 @length8(ptr %X, ptr %Y) nounwind {
451
448
; X86-NEXT: .LBB22_2: # %res_block
452
449
; X86-NEXT: xorl %eax, %eax
453
450
; 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
456
453
; X86-NEXT: .LBB22_3: # %endblock
457
454
; X86-NEXT: popl %esi
458
455
; X86-NEXT: retl
@@ -613,8 +610,8 @@ define i32 @length12(ptr %X, ptr %Y) nounwind {
613
610
; X86-NEXT: .LBB29_3: # %res_block
614
611
; X86-NEXT: xorl %eax, %eax
615
612
; 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
618
615
; X86-NEXT: .LBB29_4: # %endblock
619
616
; X86-NEXT: popl %esi
620
617
; X86-NEXT: retl
@@ -738,8 +735,8 @@ define i32 @length16(ptr %X, ptr %Y) nounwind {
738
735
; X86-NEXT: .LBB33_4: # %res_block
739
736
; X86-NEXT: xorl %eax, %eax
740
737
; 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
743
740
; X86-NEXT: .LBB33_5: # %endblock
744
741
; X86-NEXT: popl %esi
745
742
; X86-NEXT: retl
@@ -852,8 +849,8 @@ define i1 @length16_lt(ptr %x, ptr %y) nounwind {
852
849
; X86-NEXT: .LBB35_4: # %res_block
853
850
; X86-NEXT: xorl %eax, %eax
854
851
; 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
857
854
; X86-NEXT: .LBB35_5: # %endblock
858
855
; X86-NEXT: shrl $31, %eax
859
856
; X86-NEXT: # kill: def $al killed $al killed $eax
@@ -901,8 +898,8 @@ define i1 @length16_gt(ptr %x, ptr %y) nounwind {
901
898
; X86-NEXT: .LBB36_4: # %res_block
902
899
; X86-NEXT: xorl %edx, %edx
903
900
; 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
906
903
; X86-NEXT: .LBB36_5: # %endblock
907
904
; X86-NEXT: testl %edx, %edx
908
905
; X86-NEXT: setg %al
0 commit comments