@@ -87,46 +87,17 @@ entry:
87
87
}
88
88
89
89
define void @memset_10_zeroval_volatile (ptr %dst ) {
90
- ; GISel-WITHOUT-MOPS-O0-LABEL: memset_10_zeroval_volatile:
91
- ; GISel-WITHOUT-MOPS-O0: // %bb.0: // %entry
92
- ; GISel-WITHOUT-MOPS-O0-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
93
- ; GISel-WITHOUT-MOPS-O0-NEXT: .cfi_def_cfa_offset 16
94
- ; GISel-WITHOUT-MOPS-O0-NEXT: .cfi_offset w30, -16
95
- ; GISel-WITHOUT-MOPS-O0-NEXT: mov w8, #10 // =0xa
96
- ; GISel-WITHOUT-MOPS-O0-NEXT: mov w2, w8
97
- ; GISel-WITHOUT-MOPS-O0-NEXT: mov w1, wzr
98
- ; GISel-WITHOUT-MOPS-O0-NEXT: bl memset
99
- ; GISel-WITHOUT-MOPS-O0-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
100
- ; GISel-WITHOUT-MOPS-O0-NEXT: ret
101
- ;
102
- ; GISel-WITHOUT-MOPS-O3-LABEL: memset_10_zeroval_volatile:
103
- ; GISel-WITHOUT-MOPS-O3: // %bb.0: // %entry
104
- ; GISel-WITHOUT-MOPS-O3-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
105
- ; GISel-WITHOUT-MOPS-O3-NEXT: .cfi_def_cfa_offset 16
106
- ; GISel-WITHOUT-MOPS-O3-NEXT: .cfi_offset w30, -16
107
- ; GISel-WITHOUT-MOPS-O3-NEXT: mov w1, wzr
108
- ; GISel-WITHOUT-MOPS-O3-NEXT: mov w2, #10 // =0xa
109
- ; GISel-WITHOUT-MOPS-O3-NEXT: bl memset
110
- ; GISel-WITHOUT-MOPS-O3-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
111
- ; GISel-WITHOUT-MOPS-O3-NEXT: ret
112
- ;
113
- ; GISel-MOPS-O0-LABEL: memset_10_zeroval_volatile:
114
- ; GISel-MOPS-O0: // %bb.0: // %entry
115
- ; GISel-MOPS-O0-NEXT: mov w8, #10 // =0xa
116
- ; GISel-MOPS-O0-NEXT: // kill: def $x8 killed $w8
117
- ; GISel-MOPS-O0-NEXT: mov x9, xzr
118
- ; GISel-MOPS-O0-NEXT: setp [x0]!, x8!, x9
119
- ; GISel-MOPS-O0-NEXT: setm [x0]!, x8!, x9
120
- ; GISel-MOPS-O0-NEXT: sete [x0]!, x8!, x9
121
- ; GISel-MOPS-O0-NEXT: ret
90
+ ; GISel-WITHOUT-MOPS-LABEL: memset_10_zeroval_volatile:
91
+ ; GISel-WITHOUT-MOPS: // %bb.0: // %entry
92
+ ; GISel-WITHOUT-MOPS-NEXT: str xzr, [x0]
93
+ ; GISel-WITHOUT-MOPS-NEXT: strh wzr, [x0, #8]
94
+ ; GISel-WITHOUT-MOPS-NEXT: ret
122
95
;
123
- ; GISel-MOPS-O3-LABEL: memset_10_zeroval_volatile:
124
- ; GISel-MOPS-O3: // %bb.0: // %entry
125
- ; GISel-MOPS-O3-NEXT: mov w8, #10 // =0xa
126
- ; GISel-MOPS-O3-NEXT: setp [x0]!, x8!, xzr
127
- ; GISel-MOPS-O3-NEXT: setm [x0]!, x8!, xzr
128
- ; GISel-MOPS-O3-NEXT: sete [x0]!, x8!, xzr
129
- ; GISel-MOPS-O3-NEXT: ret
96
+ ; GISel-MOPS-LABEL: memset_10_zeroval_volatile:
97
+ ; GISel-MOPS: // %bb.0: // %entry
98
+ ; GISel-MOPS-NEXT: str xzr, [x0]
99
+ ; GISel-MOPS-NEXT: strh wzr, [x0, #8]
100
+ ; GISel-MOPS-NEXT: ret
130
101
;
131
102
; SDAG-WITHOUT-MOPS-O2-LABEL: memset_10_zeroval_volatile:
132
103
; SDAG-WITHOUT-MOPS-O2: // %bb.0: // %entry
@@ -490,43 +461,46 @@ entry:
490
461
define void @memset_10_volatile (ptr %dst , i32 %value ) {
491
462
; GISel-WITHOUT-MOPS-O0-LABEL: memset_10_volatile:
492
463
; GISel-WITHOUT-MOPS-O0: // %bb.0: // %entry
493
- ; GISel-WITHOUT-MOPS-O0-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
494
- ; GISel-WITHOUT-MOPS-O0-NEXT: .cfi_def_cfa_offset 16
495
- ; GISel-WITHOUT-MOPS-O0-NEXT: .cfi_offset w30, -16
496
- ; GISel-WITHOUT-MOPS-O0-NEXT: mov w8, #10 // =0xa
497
- ; GISel-WITHOUT-MOPS-O0-NEXT: mov w2, w8
498
- ; GISel-WITHOUT-MOPS-O0-NEXT: bl memset
499
- ; GISel-WITHOUT-MOPS-O0-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
464
+ ; GISel-WITHOUT-MOPS-O0-NEXT: // implicit-def: $x8
465
+ ; GISel-WITHOUT-MOPS-O0-NEXT: mov w8, w1
466
+ ; GISel-WITHOUT-MOPS-O0-NEXT: and x8, x8, #0xff
467
+ ; GISel-WITHOUT-MOPS-O0-NEXT: mov x9, #72340172838076673 // =0x101010101010101
468
+ ; GISel-WITHOUT-MOPS-O0-NEXT: mul x8, x8, x9
469
+ ; GISel-WITHOUT-MOPS-O0-NEXT: str x8, [x0]
470
+ ; GISel-WITHOUT-MOPS-O0-NEXT: // kill: def $w8 killed $w8 killed $x8
471
+ ; GISel-WITHOUT-MOPS-O0-NEXT: strh w8, [x0, #8]
500
472
; GISel-WITHOUT-MOPS-O0-NEXT: ret
501
473
;
502
474
; GISel-WITHOUT-MOPS-O3-LABEL: memset_10_volatile:
503
475
; GISel-WITHOUT-MOPS-O3: // %bb.0: // %entry
504
- ; GISel-WITHOUT-MOPS-O3-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
505
- ; GISel-WITHOUT-MOPS-O3-NEXT: .cfi_def_cfa_offset 16
506
- ; GISel-WITHOUT-MOPS-O3-NEXT: .cfi_offset w30, -16
507
- ; GISel-WITHOUT-MOPS-O3-NEXT: mov w2, #10 // =0xa
508
- ; GISel-WITHOUT-MOPS-O3-NEXT: bl memset
509
- ; GISel-WITHOUT-MOPS-O3-NEXT: ldr x30 , [sp] , #16 // 8-byte Folded Reload
476
+ ; GISel-WITHOUT-MOPS-O3-NEXT: // kill: def $w1 killed $w1 def $x1
477
+ ; GISel-WITHOUT-MOPS-O3-NEXT: mov x8, #72340172838076673 // =0x101010101010101
478
+ ; GISel-WITHOUT-MOPS-O3-NEXT: and x9, x1, #0xff
479
+ ; GISel-WITHOUT-MOPS-O3-NEXT: mul x8, x9, x8
480
+ ; GISel-WITHOUT-MOPS-O3-NEXT: str x8, [x0]
481
+ ; GISel-WITHOUT-MOPS-O3-NEXT: strh w8 , [x0 , #8]
510
482
; GISel-WITHOUT-MOPS-O3-NEXT: ret
511
483
;
512
484
; GISel-MOPS-O0-LABEL: memset_10_volatile:
513
485
; GISel-MOPS-O0: // %bb.0: // %entry
514
- ; GISel-MOPS-O0-NEXT: mov w8, #10 // =0xa
515
- ; GISel-MOPS-O0-NEXT: // kill: def $x8 killed $w8
516
- ; GISel-MOPS-O0-NEXT: // implicit-def: $x9
517
- ; GISel-MOPS-O0-NEXT: mov w9, w1
518
- ; GISel-MOPS-O0-NEXT: setp [x0]!, x8!, x9
519
- ; GISel-MOPS-O0-NEXT: setm [x0]!, x8!, x9
520
- ; GISel-MOPS-O0-NEXT: sete [x0]!, x8!, x9
486
+ ; GISel-MOPS-O0-NEXT: // implicit-def: $x8
487
+ ; GISel-MOPS-O0-NEXT: mov w8, w1
488
+ ; GISel-MOPS-O0-NEXT: and x8, x8, #0xff
489
+ ; GISel-MOPS-O0-NEXT: mov x9, #72340172838076673 // =0x101010101010101
490
+ ; GISel-MOPS-O0-NEXT: mul x8, x8, x9
491
+ ; GISel-MOPS-O0-NEXT: str x8, [x0]
492
+ ; GISel-MOPS-O0-NEXT: // kill: def $w8 killed $w8 killed $x8
493
+ ; GISel-MOPS-O0-NEXT: strh w8, [x0, #8]
521
494
; GISel-MOPS-O0-NEXT: ret
522
495
;
523
496
; GISel-MOPS-O3-LABEL: memset_10_volatile:
524
497
; GISel-MOPS-O3: // %bb.0: // %entry
525
- ; GISel-MOPS-O3-NEXT: mov w8, #10 // =0xa
526
498
; GISel-MOPS-O3-NEXT: // kill: def $w1 killed $w1 def $x1
527
- ; GISel-MOPS-O3-NEXT: setp [x0]!, x8!, x1
528
- ; GISel-MOPS-O3-NEXT: setm [x0]!, x8!, x1
529
- ; GISel-MOPS-O3-NEXT: sete [x0]!, x8!, x1
499
+ ; GISel-MOPS-O3-NEXT: mov x8, #72340172838076673 // =0x101010101010101
500
+ ; GISel-MOPS-O3-NEXT: and x9, x1, #0xff
501
+ ; GISel-MOPS-O3-NEXT: mul x8, x9, x8
502
+ ; GISel-MOPS-O3-NEXT: str x8, [x0]
503
+ ; GISel-MOPS-O3-NEXT: strh w8, [x0, #8]
530
504
; GISel-MOPS-O3-NEXT: ret
531
505
;
532
506
; SDAG-WITHOUT-MOPS-O2-LABEL: memset_10_volatile:
@@ -905,43 +879,21 @@ entry:
905
879
}
906
880
907
881
define void @memcpy_10_volatile (ptr %dst , ptr %src , i32 %value ) {
908
- ; GISel-WITHOUT-MOPS-O0-LABEL: memcpy_10_volatile:
909
- ; GISel-WITHOUT-MOPS-O0: // %bb.0: // %entry
910
- ; GISel-WITHOUT-MOPS-O0-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
911
- ; GISel-WITHOUT-MOPS-O0-NEXT: .cfi_def_cfa_offset 16
912
- ; GISel-WITHOUT-MOPS-O0-NEXT: .cfi_offset w30, -16
913
- ; GISel-WITHOUT-MOPS-O0-NEXT: mov w8, #10 // =0xa
914
- ; GISel-WITHOUT-MOPS-O0-NEXT: mov w2, w8
915
- ; GISel-WITHOUT-MOPS-O0-NEXT: bl memcpy
916
- ; GISel-WITHOUT-MOPS-O0-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
917
- ; GISel-WITHOUT-MOPS-O0-NEXT: ret
918
- ;
919
- ; GISel-WITHOUT-MOPS-O3-LABEL: memcpy_10_volatile:
920
- ; GISel-WITHOUT-MOPS-O3: // %bb.0: // %entry
921
- ; GISel-WITHOUT-MOPS-O3-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
922
- ; GISel-WITHOUT-MOPS-O3-NEXT: .cfi_def_cfa_offset 16
923
- ; GISel-WITHOUT-MOPS-O3-NEXT: .cfi_offset w30, -16
924
- ; GISel-WITHOUT-MOPS-O3-NEXT: mov w2, #10 // =0xa
925
- ; GISel-WITHOUT-MOPS-O3-NEXT: bl memcpy
926
- ; GISel-WITHOUT-MOPS-O3-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
927
- ; GISel-WITHOUT-MOPS-O3-NEXT: ret
928
- ;
929
- ; GISel-MOPS-O0-LABEL: memcpy_10_volatile:
930
- ; GISel-MOPS-O0: // %bb.0: // %entry
931
- ; GISel-MOPS-O0-NEXT: mov w8, #10 // =0xa
932
- ; GISel-MOPS-O0-NEXT: // kill: def $x8 killed $w8
933
- ; GISel-MOPS-O0-NEXT: cpyfp [x0]!, [x1]!, x8!
934
- ; GISel-MOPS-O0-NEXT: cpyfm [x0]!, [x1]!, x8!
935
- ; GISel-MOPS-O0-NEXT: cpyfe [x0]!, [x1]!, x8!
936
- ; GISel-MOPS-O0-NEXT: ret
882
+ ; GISel-WITHOUT-MOPS-LABEL: memcpy_10_volatile:
883
+ ; GISel-WITHOUT-MOPS: // %bb.0: // %entry
884
+ ; GISel-WITHOUT-MOPS-NEXT: ldr x8, [x1]
885
+ ; GISel-WITHOUT-MOPS-NEXT: str x8, [x0]
886
+ ; GISel-WITHOUT-MOPS-NEXT: ldrh w8, [x1, #8]
887
+ ; GISel-WITHOUT-MOPS-NEXT: strh w8, [x0, #8]
888
+ ; GISel-WITHOUT-MOPS-NEXT: ret
937
889
;
938
- ; GISel-MOPS-O3- LABEL: memcpy_10_volatile:
939
- ; GISel-MOPS-O3 : // %bb.0: // %entry
940
- ; GISel-MOPS-O3- NEXT: mov w8, #10 // =0xa
941
- ; GISel-MOPS-O3- NEXT: cpyfp [x0]! , [x1]!, x8!
942
- ; GISel-MOPS-O3- NEXT: cpyfm [x0]! , [x1]!, x8!
943
- ; GISel-MOPS-O3- NEXT: cpyfe [x0]! , [x1]!, x8!
944
- ; GISel-MOPS-O3- NEXT: ret
890
+ ; GISel-MOPS-LABEL: memcpy_10_volatile:
891
+ ; GISel-MOPS: // %bb.0: // %entry
892
+ ; GISel-MOPS-NEXT: ldr x8, [x1]
893
+ ; GISel-MOPS-NEXT: str x8 , [x0]
894
+ ; GISel-MOPS-NEXT: ldrh w8 , [x1, #8]
895
+ ; GISel-MOPS-NEXT: strh w8 , [x0, #8]
896
+ ; GISel-MOPS-NEXT: ret
945
897
;
946
898
; SDAG-WITHOUT-MOPS-O2-LABEL: memcpy_10_volatile:
947
899
; SDAG-WITHOUT-MOPS-O2: // %bb.0: // %entry
@@ -1736,40 +1688,34 @@ entry:
1736
1688
define void @memmove_10_volatile (ptr %dst , ptr %src , i32 %value ) {
1737
1689
; GISel-WITHOUT-MOPS-O0-LABEL: memmove_10_volatile:
1738
1690
; GISel-WITHOUT-MOPS-O0: // %bb.0: // %entry
1739
- ; GISel-WITHOUT-MOPS-O0-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
1740
- ; GISel-WITHOUT-MOPS-O0-NEXT: .cfi_def_cfa_offset 16
1741
- ; GISel-WITHOUT-MOPS-O0-NEXT: .cfi_offset w30, -16
1742
- ; GISel-WITHOUT-MOPS-O0-NEXT: mov w8, #10 // =0xa
1743
- ; GISel-WITHOUT-MOPS-O0-NEXT: mov w2, w8
1744
- ; GISel-WITHOUT-MOPS-O0-NEXT: bl memmove
1745
- ; GISel-WITHOUT-MOPS-O0-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
1691
+ ; GISel-WITHOUT-MOPS-O0-NEXT: ldr x9, [x1]
1692
+ ; GISel-WITHOUT-MOPS-O0-NEXT: ldrh w8, [x1, #8]
1693
+ ; GISel-WITHOUT-MOPS-O0-NEXT: str x9, [x0]
1694
+ ; GISel-WITHOUT-MOPS-O0-NEXT: strh w8, [x0, #8]
1746
1695
; GISel-WITHOUT-MOPS-O0-NEXT: ret
1747
1696
;
1748
1697
; GISel-WITHOUT-MOPS-O3-LABEL: memmove_10_volatile:
1749
1698
; GISel-WITHOUT-MOPS-O3: // %bb.0: // %entry
1750
- ; GISel-WITHOUT-MOPS-O3-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
1751
- ; GISel-WITHOUT-MOPS-O3-NEXT: .cfi_def_cfa_offset 16
1752
- ; GISel-WITHOUT-MOPS-O3-NEXT: .cfi_offset w30, -16
1753
- ; GISel-WITHOUT-MOPS-O3-NEXT: mov w2, #10 // =0xa
1754
- ; GISel-WITHOUT-MOPS-O3-NEXT: bl memmove
1755
- ; GISel-WITHOUT-MOPS-O3-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
1699
+ ; GISel-WITHOUT-MOPS-O3-NEXT: ldr x8, [x1]
1700
+ ; GISel-WITHOUT-MOPS-O3-NEXT: ldrh w9, [x1, #8]
1701
+ ; GISel-WITHOUT-MOPS-O3-NEXT: str x8, [x0]
1702
+ ; GISel-WITHOUT-MOPS-O3-NEXT: strh w9, [x0, #8]
1756
1703
; GISel-WITHOUT-MOPS-O3-NEXT: ret
1757
1704
;
1758
1705
; GISel-MOPS-O0-LABEL: memmove_10_volatile:
1759
1706
; GISel-MOPS-O0: // %bb.0: // %entry
1760
- ; GISel-MOPS-O0-NEXT: mov w8, #10 // =0xa
1761
- ; GISel-MOPS-O0-NEXT: // kill: def $x8 killed $w8
1762
- ; GISel-MOPS-O0-NEXT: cpyp [x0]!, [x1]!, x8!
1763
- ; GISel-MOPS-O0-NEXT: cpym [x0]!, [x1]!, x8!
1764
- ; GISel-MOPS-O0-NEXT: cpye [x0]!, [x1]!, x8!
1707
+ ; GISel-MOPS-O0-NEXT: ldr x9, [x1]
1708
+ ; GISel-MOPS-O0-NEXT: ldrh w8, [x1, #8]
1709
+ ; GISel-MOPS-O0-NEXT: str x9, [x0]
1710
+ ; GISel-MOPS-O0-NEXT: strh w8, [x0, #8]
1765
1711
; GISel-MOPS-O0-NEXT: ret
1766
1712
;
1767
1713
; GISel-MOPS-O3-LABEL: memmove_10_volatile:
1768
1714
; GISel-MOPS-O3: // %bb.0: // %entry
1769
- ; GISel-MOPS-O3-NEXT: mov w8, #10 // =0xa
1770
- ; GISel-MOPS-O3-NEXT: cpyp [x0]! , [x1]!, x8!
1771
- ; GISel-MOPS-O3-NEXT: cpym [x0]! , [x1]!, x8!
1772
- ; GISel-MOPS-O3-NEXT: cpye [x0]! , [x1]!, x8!
1715
+ ; GISel-MOPS-O3-NEXT: ldr x8, [x1]
1716
+ ; GISel-MOPS-O3-NEXT: ldrh w9 , [x1, #8]
1717
+ ; GISel-MOPS-O3-NEXT: str x8 , [x0]
1718
+ ; GISel-MOPS-O3-NEXT: strh w9 , [x0, #8]
1773
1719
; GISel-MOPS-O3-NEXT: ret
1774
1720
;
1775
1721
; SDAG-WITHOUT-MOPS-O2-LABEL: memmove_10_volatile:
0 commit comments