@@ -87,46 +87,17 @@ entry:
8787}
8888
8989define 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
12295;
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
130101;
131102; SDAG-WITHOUT-MOPS-O2-LABEL: memset_10_zeroval_volatile:
132103; SDAG-WITHOUT-MOPS-O2: // %bb.0: // %entry
@@ -490,43 +461,46 @@ entry:
490461define void @memset_10_volatile (ptr %dst , i32 %value ) {
491462; GISel-WITHOUT-MOPS-O0-LABEL: memset_10_volatile:
492463; 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]
500472; GISel-WITHOUT-MOPS-O0-NEXT: ret
501473;
502474; GISel-WITHOUT-MOPS-O3-LABEL: memset_10_volatile:
503475; 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]
510482; GISel-WITHOUT-MOPS-O3-NEXT: ret
511483;
512484; GISel-MOPS-O0-LABEL: memset_10_volatile:
513485; 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]
521494; GISel-MOPS-O0-NEXT: ret
522495;
523496; GISel-MOPS-O3-LABEL: memset_10_volatile:
524497; GISel-MOPS-O3: // %bb.0: // %entry
525- ; GISel-MOPS-O3-NEXT: mov w8, #10 // =0xa
526498; 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]
530504; GISel-MOPS-O3-NEXT: ret
531505;
532506; SDAG-WITHOUT-MOPS-O2-LABEL: memset_10_volatile:
@@ -905,43 +879,21 @@ entry:
905879}
906880
907881define 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
937889;
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
945897;
946898; SDAG-WITHOUT-MOPS-O2-LABEL: memcpy_10_volatile:
947899; SDAG-WITHOUT-MOPS-O2: // %bb.0: // %entry
@@ -1736,40 +1688,34 @@ entry:
17361688define void @memmove_10_volatile (ptr %dst , ptr %src , i32 %value ) {
17371689; GISel-WITHOUT-MOPS-O0-LABEL: memmove_10_volatile:
17381690; 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]
17461695; GISel-WITHOUT-MOPS-O0-NEXT: ret
17471696;
17481697; GISel-WITHOUT-MOPS-O3-LABEL: memmove_10_volatile:
17491698; 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]
17561703; GISel-WITHOUT-MOPS-O3-NEXT: ret
17571704;
17581705; GISel-MOPS-O0-LABEL: memmove_10_volatile:
17591706; 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]
17651711; GISel-MOPS-O0-NEXT: ret
17661712;
17671713; GISel-MOPS-O3-LABEL: memmove_10_volatile:
17681714; 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]
17731719; GISel-MOPS-O3-NEXT: ret
17741720;
17751721; SDAG-WITHOUT-MOPS-O2-LABEL: memmove_10_volatile:
0 commit comments