@@ -462,17 +462,14 @@ define void @add_32r_seq_cst(i32* %p, i32 %v) {
462
462
define void @sub_8r (i8* %p , i8 %v ) {
463
463
; X64-LABEL: sub_8r:
464
464
; X64: # %bb.0:
465
- ; X64-NEXT: movb (%rdi), %al
466
- ; X64-NEXT: subb %sil, %al
467
- ; X64-NEXT: movb %al, (%rdi)
465
+ ; X64-NEXT: subb %sil, (%rdi)
468
466
; X64-NEXT: retq
469
467
;
470
468
; X32-LABEL: sub_8r:
471
469
; X32: # %bb.0:
472
- ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
473
- ; X32-NEXT: movb (%eax), %cl
474
- ; X32-NEXT: subb {{[0-9]+}}(%esp), %cl
475
- ; X32-NEXT: movb %cl, (%eax)
470
+ ; X32-NEXT: movb {{[0-9]+}}(%esp), %al
471
+ ; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx
472
+ ; X32-NEXT: subb %al, (%ecx)
476
473
; X32-NEXT: retl
477
474
%1 = load atomic i8 , i8* %p seq_cst , align 1
478
475
%2 = sub i8 %1 , %v
@@ -485,17 +482,14 @@ define void @sub_16r(i16* %p, i16 %v) {
485
482
; treat 16 bit arithmetic as expensive on X86/X86_64.
486
483
; X64-LABEL: sub_16r:
487
484
; X64: # %bb.0:
488
- ; X64-NEXT: movzwl (%rdi), %eax
489
- ; X64-NEXT: subw %si, %ax
490
- ; X64-NEXT: movw %ax, (%rdi)
485
+ ; X64-NEXT: subw %si, (%rdi)
491
486
; X64-NEXT: retq
492
487
;
493
488
; X32-LABEL: sub_16r:
494
489
; X32: # %bb.0:
495
- ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
496
- ; X32-NEXT: movzwl (%eax), %ecx
497
- ; X32-NEXT: subw {{[0-9]+}}(%esp), %cx
498
- ; X32-NEXT: movw %cx, (%eax)
490
+ ; X32-NEXT: movzwl {{[0-9]+}}(%esp), %eax
491
+ ; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx
492
+ ; X32-NEXT: subw %ax, (%ecx)
499
493
; X32-NEXT: retl
500
494
%1 = load atomic i16 , i16* %p acquire , align 2
501
495
%2 = sub i16 %1 , %v
@@ -506,17 +500,14 @@ define void @sub_16r(i16* %p, i16 %v) {
506
500
define void @sub_32r (i32* %p , i32 %v ) {
507
501
; X64-LABEL: sub_32r:
508
502
; X64: # %bb.0:
509
- ; X64-NEXT: movl (%rdi), %eax
510
- ; X64-NEXT: subl %esi, %eax
511
- ; X64-NEXT: movl %eax, (%rdi)
503
+ ; X64-NEXT: subl %esi, (%rdi)
512
504
; X64-NEXT: retq
513
505
;
514
506
; X32-LABEL: sub_32r:
515
507
; X32: # %bb.0:
516
508
; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
517
- ; X32-NEXT: movl (%eax), %ecx
518
- ; X32-NEXT: subl {{[0-9]+}}(%esp), %ecx
519
- ; X32-NEXT: movl %ecx, (%eax)
509
+ ; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx
510
+ ; X32-NEXT: subl %eax, (%ecx)
520
511
; X32-NEXT: retl
521
512
%1 = load atomic i32 , i32* %p acquire , align 4
522
513
%2 = sub i32 %1 , %v
@@ -575,9 +566,7 @@ define i32 @sub_32r_ret_load(i32* %p, i32 %v) {
575
566
define void @sub_64r (i64* %p , i64 %v ) {
576
567
; X64-LABEL: sub_64r:
577
568
; X64: # %bb.0:
578
- ; X64-NEXT: movq (%rdi), %rax
579
- ; X64-NEXT: subq %rsi, %rax
580
- ; X64-NEXT: movq %rax, (%rdi)
569
+ ; X64-NEXT: subq %rsi, (%rdi)
581
570
; X64-NEXT: retq
582
571
;
583
572
; X32-LABEL: sub_64r:
0 commit comments