brintos

brintos / llvm-project-archived public Read only

0
0
Text · 78.2 KiB · 1710fad Raw
1936 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2 3; RUN: llc %s -o - -mtriple=aarch64 -O0 -global-isel=1 -global-isel-abort=1                    | FileCheck %s --check-prefixes=GISel-WITHOUT-MOPS,GISel-WITHOUT-MOPS-O04; RUN: llc %s -o - -mtriple=aarch64     -global-isel=1 -global-isel-abort=1                    | FileCheck %s --check-prefixes=GISel-WITHOUT-MOPS,GISel-WITHOUT-MOPS-O35; RUN: llc %s -o - -mtriple=aarch64 -O0 -global-isel=1 -global-isel-abort=1 -mattr=+mops       | FileCheck %s --check-prefixes=GISel-MOPS,GISel-MOPS-O06; RUN: llc %s -o - -mtriple=aarch64     -global-isel=1 -global-isel-abort=1 -mattr=+mops       | FileCheck %s --check-prefixes=GISel-MOPS,GISel-MOPS-O37; RUN: llc %s -o - -mtriple=aarch64 -O2                    | FileCheck %s --check-prefix=SDAG-WITHOUT-MOPS-O28; RUN: llc %s -o - -mtriple=aarch64 -O2 -mattr=+mops       | FileCheck %s --check-prefix=SDAG-MOPS-O29 10declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg)11 12declare void @llvm.memcpy.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg)13 14declare void @llvm.memcpy.inline.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg)15 16declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg)17 18define void @memset_0_zeroval(ptr %dst) {19; GISel-WITHOUT-MOPS-LABEL: memset_0_zeroval:20; GISel-WITHOUT-MOPS:       // %bb.0: // %entry21; GISel-WITHOUT-MOPS-NEXT:    ret22;23; GISel-MOPS-LABEL: memset_0_zeroval:24; GISel-MOPS:       // %bb.0: // %entry25; GISel-MOPS-NEXT:    ret26;27; SDAG-WITHOUT-MOPS-O2-LABEL: memset_0_zeroval:28; SDAG-WITHOUT-MOPS-O2:       // %bb.0: // %entry29; SDAG-WITHOUT-MOPS-O2-NEXT:    ret30;31; SDAG-MOPS-O2-LABEL: memset_0_zeroval:32; SDAG-MOPS-O2:       // %bb.0: // %entry33; SDAG-MOPS-O2-NEXT:    ret34entry:35  call void @llvm.memset.p0.i64(ptr align 1 %dst, i8 0, i64 0, i1 false)36  ret void37}38 39define void @memset_0_zeroval_volatile(ptr %dst) {40; GISel-WITHOUT-MOPS-LABEL: memset_0_zeroval_volatile:41; GISel-WITHOUT-MOPS:       // %bb.0: // %entry42; GISel-WITHOUT-MOPS-NEXT:    ret43;44; GISel-MOPS-LABEL: memset_0_zeroval_volatile:45; GISel-MOPS:       // %bb.0: // %entry46; GISel-MOPS-NEXT:    ret47;48; SDAG-WITHOUT-MOPS-O2-LABEL: memset_0_zeroval_volatile:49; SDAG-WITHOUT-MOPS-O2:       // %bb.0: // %entry50; SDAG-WITHOUT-MOPS-O2-NEXT:    ret51;52; SDAG-MOPS-O2-LABEL: memset_0_zeroval_volatile:53; SDAG-MOPS-O2:       // %bb.0: // %entry54; SDAG-MOPS-O2-NEXT:    ret55entry:56  call void @llvm.memset.p0.i64(ptr align 1 %dst, i8 0, i64 0, i1 true)57  ret void58}59 60define void @memset_10_zeroval(ptr %dst) {61; GISel-WITHOUT-MOPS-LABEL: memset_10_zeroval:62; GISel-WITHOUT-MOPS:       // %bb.0: // %entry63; GISel-WITHOUT-MOPS-NEXT:    str xzr, [x0]64; GISel-WITHOUT-MOPS-NEXT:    strh wzr, [x0, #8]65; GISel-WITHOUT-MOPS-NEXT:    ret66;67; GISel-MOPS-LABEL: memset_10_zeroval:68; GISel-MOPS:       // %bb.0: // %entry69; GISel-MOPS-NEXT:    str xzr, [x0]70; GISel-MOPS-NEXT:    strh wzr, [x0, #8]71; GISel-MOPS-NEXT:    ret72;73; SDAG-WITHOUT-MOPS-O2-LABEL: memset_10_zeroval:74; SDAG-WITHOUT-MOPS-O2:       // %bb.0: // %entry75; SDAG-WITHOUT-MOPS-O2-NEXT:    strh wzr, [x0, #8]76; SDAG-WITHOUT-MOPS-O2-NEXT:    str xzr, [x0]77; SDAG-WITHOUT-MOPS-O2-NEXT:    ret78;79; SDAG-MOPS-O2-LABEL: memset_10_zeroval:80; SDAG-MOPS-O2:       // %bb.0: // %entry81; SDAG-MOPS-O2-NEXT:    strh wzr, [x0, #8]82; SDAG-MOPS-O2-NEXT:    str xzr, [x0]83; SDAG-MOPS-O2-NEXT:    ret84entry:85  call void @llvm.memset.p0.i64(ptr align 1 %dst, i8 0, i64 10, i1 false)86  ret void87}88 89define void @memset_10_zeroval_volatile(ptr %dst) {90; GISel-WITHOUT-MOPS-LABEL: memset_10_zeroval_volatile:91; GISel-WITHOUT-MOPS:       // %bb.0: // %entry92; GISel-WITHOUT-MOPS-NEXT:    str xzr, [x0]93; GISel-WITHOUT-MOPS-NEXT:    strh wzr, [x0, #8]94; GISel-WITHOUT-MOPS-NEXT:    ret95;96; GISel-MOPS-LABEL: memset_10_zeroval_volatile:97; GISel-MOPS:       // %bb.0: // %entry98; GISel-MOPS-NEXT:    str xzr, [x0]99; GISel-MOPS-NEXT:    strh wzr, [x0, #8]100; GISel-MOPS-NEXT:    ret101;102; SDAG-WITHOUT-MOPS-O2-LABEL: memset_10_zeroval_volatile:103; SDAG-WITHOUT-MOPS-O2:       // %bb.0: // %entry104; SDAG-WITHOUT-MOPS-O2-NEXT:    strh wzr, [x0, #8]105; SDAG-WITHOUT-MOPS-O2-NEXT:    str xzr, [x0]106; SDAG-WITHOUT-MOPS-O2-NEXT:    ret107;108; SDAG-MOPS-O2-LABEL: memset_10_zeroval_volatile:109; SDAG-MOPS-O2:       // %bb.0: // %entry110; SDAG-MOPS-O2-NEXT:    strh wzr, [x0, #8]111; SDAG-MOPS-O2-NEXT:    str xzr, [x0]112; SDAG-MOPS-O2-NEXT:    ret113entry:114  call void @llvm.memset.p0.i64(ptr align 1 %dst, i8 0, i64 10, i1 true)115  ret void116}117 118define void @memset_10000_zeroval(ptr %dst) {119; GISel-WITHOUT-MOPS-O0-LABEL: memset_10000_zeroval:120; GISel-WITHOUT-MOPS-O0:       // %bb.0: // %entry121; GISel-WITHOUT-MOPS-O0-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill122; GISel-WITHOUT-MOPS-O0-NEXT:    .cfi_def_cfa_offset 16123; GISel-WITHOUT-MOPS-O0-NEXT:    .cfi_offset w30, -16124; GISel-WITHOUT-MOPS-O0-NEXT:    mov w8, #10000 // =0x2710125; GISel-WITHOUT-MOPS-O0-NEXT:    mov w2, w8126; GISel-WITHOUT-MOPS-O0-NEXT:    mov w1, wzr127; GISel-WITHOUT-MOPS-O0-NEXT:    bl memset128; GISel-WITHOUT-MOPS-O0-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload129; GISel-WITHOUT-MOPS-O0-NEXT:    ret130;131; GISel-WITHOUT-MOPS-O3-LABEL: memset_10000_zeroval:132; GISel-WITHOUT-MOPS-O3:       // %bb.0: // %entry133; GISel-WITHOUT-MOPS-O3-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill134; GISel-WITHOUT-MOPS-O3-NEXT:    .cfi_def_cfa_offset 16135; GISel-WITHOUT-MOPS-O3-NEXT:    .cfi_offset w30, -16136; GISel-WITHOUT-MOPS-O3-NEXT:    mov w1, wzr137; GISel-WITHOUT-MOPS-O3-NEXT:    mov w2, #10000 // =0x2710138; GISel-WITHOUT-MOPS-O3-NEXT:    bl memset139; GISel-WITHOUT-MOPS-O3-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload140; GISel-WITHOUT-MOPS-O3-NEXT:    ret141;142; GISel-MOPS-O0-LABEL: memset_10000_zeroval:143; GISel-MOPS-O0:       // %bb.0: // %entry144; GISel-MOPS-O0-NEXT:    mov w8, #10000 // =0x2710145; GISel-MOPS-O0-NEXT:    // kill: def $x8 killed $w8146; GISel-MOPS-O0-NEXT:    mov x9, xzr147; GISel-MOPS-O0-NEXT:    setp [x0]!, x8!, x9148; GISel-MOPS-O0-NEXT:    setm [x0]!, x8!, x9149; GISel-MOPS-O0-NEXT:    sete [x0]!, x8!, x9150; GISel-MOPS-O0-NEXT:    ret151;152; GISel-MOPS-O3-LABEL: memset_10000_zeroval:153; GISel-MOPS-O3:       // %bb.0: // %entry154; GISel-MOPS-O3-NEXT:    mov w8, #10000 // =0x2710155; GISel-MOPS-O3-NEXT:    setp [x0]!, x8!, xzr156; GISel-MOPS-O3-NEXT:    setm [x0]!, x8!, xzr157; GISel-MOPS-O3-NEXT:    sete [x0]!, x8!, xzr158; GISel-MOPS-O3-NEXT:    ret159;160; SDAG-WITHOUT-MOPS-O2-LABEL: memset_10000_zeroval:161; SDAG-WITHOUT-MOPS-O2:       // %bb.0: // %entry162; SDAG-WITHOUT-MOPS-O2-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill163; SDAG-WITHOUT-MOPS-O2-NEXT:    .cfi_def_cfa_offset 16164; SDAG-WITHOUT-MOPS-O2-NEXT:    .cfi_offset w30, -16165; SDAG-WITHOUT-MOPS-O2-NEXT:    mov w1, wzr166; SDAG-WITHOUT-MOPS-O2-NEXT:    mov w2, #10000 // =0x2710167; SDAG-WITHOUT-MOPS-O2-NEXT:    bl memset168; SDAG-WITHOUT-MOPS-O2-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload169; SDAG-WITHOUT-MOPS-O2-NEXT:    ret170;171; SDAG-MOPS-O2-LABEL: memset_10000_zeroval:172; SDAG-MOPS-O2:       // %bb.0: // %entry173; SDAG-MOPS-O2-NEXT:    mov w8, #10000 // =0x2710174; SDAG-MOPS-O2-NEXT:    setp [x0]!, x8!, xzr175; SDAG-MOPS-O2-NEXT:    setm [x0]!, x8!, xzr176; SDAG-MOPS-O2-NEXT:    sete [x0]!, x8!, xzr177; SDAG-MOPS-O2-NEXT:    ret178entry:179  call void @llvm.memset.p0.i64(ptr align 1 %dst, i8 0, i64 10000, i1 false)180  ret void181}182 183define void @memset_10000_zeroval_volatile(ptr %dst) {184; GISel-WITHOUT-MOPS-O0-LABEL: memset_10000_zeroval_volatile:185; GISel-WITHOUT-MOPS-O0:       // %bb.0: // %entry186; GISel-WITHOUT-MOPS-O0-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill187; GISel-WITHOUT-MOPS-O0-NEXT:    .cfi_def_cfa_offset 16188; GISel-WITHOUT-MOPS-O0-NEXT:    .cfi_offset w30, -16189; GISel-WITHOUT-MOPS-O0-NEXT:    mov w8, #10000 // =0x2710190; GISel-WITHOUT-MOPS-O0-NEXT:    mov w2, w8191; GISel-WITHOUT-MOPS-O0-NEXT:    mov w1, wzr192; GISel-WITHOUT-MOPS-O0-NEXT:    bl memset193; GISel-WITHOUT-MOPS-O0-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload194; GISel-WITHOUT-MOPS-O0-NEXT:    ret195;196; GISel-WITHOUT-MOPS-O3-LABEL: memset_10000_zeroval_volatile:197; GISel-WITHOUT-MOPS-O3:       // %bb.0: // %entry198; GISel-WITHOUT-MOPS-O3-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill199; GISel-WITHOUT-MOPS-O3-NEXT:    .cfi_def_cfa_offset 16200; GISel-WITHOUT-MOPS-O3-NEXT:    .cfi_offset w30, -16201; GISel-WITHOUT-MOPS-O3-NEXT:    mov w1, wzr202; GISel-WITHOUT-MOPS-O3-NEXT:    mov w2, #10000 // =0x2710203; GISel-WITHOUT-MOPS-O3-NEXT:    bl memset204; GISel-WITHOUT-MOPS-O3-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload205; GISel-WITHOUT-MOPS-O3-NEXT:    ret206;207; GISel-MOPS-O0-LABEL: memset_10000_zeroval_volatile:208; GISel-MOPS-O0:       // %bb.0: // %entry209; GISel-MOPS-O0-NEXT:    mov w8, #10000 // =0x2710210; GISel-MOPS-O0-NEXT:    // kill: def $x8 killed $w8211; GISel-MOPS-O0-NEXT:    mov x9, xzr212; GISel-MOPS-O0-NEXT:    setp [x0]!, x8!, x9213; GISel-MOPS-O0-NEXT:    setm [x0]!, x8!, x9214; GISel-MOPS-O0-NEXT:    sete [x0]!, x8!, x9215; GISel-MOPS-O0-NEXT:    ret216;217; GISel-MOPS-O3-LABEL: memset_10000_zeroval_volatile:218; GISel-MOPS-O3:       // %bb.0: // %entry219; GISel-MOPS-O3-NEXT:    mov w8, #10000 // =0x2710220; GISel-MOPS-O3-NEXT:    setp [x0]!, x8!, xzr221; GISel-MOPS-O3-NEXT:    setm [x0]!, x8!, xzr222; GISel-MOPS-O3-NEXT:    sete [x0]!, x8!, xzr223; GISel-MOPS-O3-NEXT:    ret224;225; SDAG-WITHOUT-MOPS-O2-LABEL: memset_10000_zeroval_volatile:226; SDAG-WITHOUT-MOPS-O2:       // %bb.0: // %entry227; SDAG-WITHOUT-MOPS-O2-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill228; SDAG-WITHOUT-MOPS-O2-NEXT:    .cfi_def_cfa_offset 16229; SDAG-WITHOUT-MOPS-O2-NEXT:    .cfi_offset w30, -16230; SDAG-WITHOUT-MOPS-O2-NEXT:    mov w1, wzr231; SDAG-WITHOUT-MOPS-O2-NEXT:    mov w2, #10000 // =0x2710232; SDAG-WITHOUT-MOPS-O2-NEXT:    bl memset233; SDAG-WITHOUT-MOPS-O2-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload234; SDAG-WITHOUT-MOPS-O2-NEXT:    ret235;236; SDAG-MOPS-O2-LABEL: memset_10000_zeroval_volatile:237; SDAG-MOPS-O2:       // %bb.0: // %entry238; SDAG-MOPS-O2-NEXT:    mov w8, #10000 // =0x2710239; SDAG-MOPS-O2-NEXT:    setp [x0]!, x8!, xzr240; SDAG-MOPS-O2-NEXT:    setm [x0]!, x8!, xzr241; SDAG-MOPS-O2-NEXT:    sete [x0]!, x8!, xzr242; SDAG-MOPS-O2-NEXT:    ret243entry:244  call void @llvm.memset.p0.i64(ptr align 1 %dst, i8 0, i64 10000, i1 true)245  ret void246}247 248define void @memset_size_zeroval(ptr %dst, i64 %size) {249; GISel-WITHOUT-MOPS-LABEL: memset_size_zeroval:250; GISel-WITHOUT-MOPS:       // %bb.0: // %entry251; GISel-WITHOUT-MOPS-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill252; GISel-WITHOUT-MOPS-NEXT:    .cfi_def_cfa_offset 16253; GISel-WITHOUT-MOPS-NEXT:    .cfi_offset w30, -16254; GISel-WITHOUT-MOPS-NEXT:    mov x2, x1255; GISel-WITHOUT-MOPS-NEXT:    mov w1, wzr256; GISel-WITHOUT-MOPS-NEXT:    bl memset257; GISel-WITHOUT-MOPS-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload258; GISel-WITHOUT-MOPS-NEXT:    ret259;260; GISel-MOPS-O0-LABEL: memset_size_zeroval:261; GISel-MOPS-O0:       // %bb.0: // %entry262; GISel-MOPS-O0-NEXT:    mov x8, xzr263; GISel-MOPS-O0-NEXT:    setp [x0]!, x1!, x8264; GISel-MOPS-O0-NEXT:    setm [x0]!, x1!, x8265; GISel-MOPS-O0-NEXT:    sete [x0]!, x1!, x8266; GISel-MOPS-O0-NEXT:    ret267;268; GISel-MOPS-O3-LABEL: memset_size_zeroval:269; GISel-MOPS-O3:       // %bb.0: // %entry270; GISel-MOPS-O3-NEXT:    setp [x0]!, x1!, xzr271; GISel-MOPS-O3-NEXT:    setm [x0]!, x1!, xzr272; GISel-MOPS-O3-NEXT:    sete [x0]!, x1!, xzr273; GISel-MOPS-O3-NEXT:    ret274;275; SDAG-WITHOUT-MOPS-O2-LABEL: memset_size_zeroval:276; SDAG-WITHOUT-MOPS-O2:       // %bb.0: // %entry277; SDAG-WITHOUT-MOPS-O2-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill278; SDAG-WITHOUT-MOPS-O2-NEXT:    .cfi_def_cfa_offset 16279; SDAG-WITHOUT-MOPS-O2-NEXT:    .cfi_offset w30, -16280; SDAG-WITHOUT-MOPS-O2-NEXT:    mov x2, x1281; SDAG-WITHOUT-MOPS-O2-NEXT:    mov w1, wzr282; SDAG-WITHOUT-MOPS-O2-NEXT:    bl memset283; SDAG-WITHOUT-MOPS-O2-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload284; SDAG-WITHOUT-MOPS-O2-NEXT:    ret285;286; SDAG-MOPS-O2-LABEL: memset_size_zeroval:287; SDAG-MOPS-O2:       // %bb.0: // %entry288; SDAG-MOPS-O2-NEXT:    setp [x0]!, x1!, xzr289; SDAG-MOPS-O2-NEXT:    setm [x0]!, x1!, xzr290; SDAG-MOPS-O2-NEXT:    sete [x0]!, x1!, xzr291; SDAG-MOPS-O2-NEXT:    ret292entry:293  call void @llvm.memset.p0.i64(ptr align 1 %dst, i8 0, i64 %size, i1 false)294  ret void295}296 297define void @memset_size_zeroval_volatile(ptr %dst, i64 %size) {298; GISel-WITHOUT-MOPS-LABEL: memset_size_zeroval_volatile:299; GISel-WITHOUT-MOPS:       // %bb.0: // %entry300; GISel-WITHOUT-MOPS-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill301; GISel-WITHOUT-MOPS-NEXT:    .cfi_def_cfa_offset 16302; GISel-WITHOUT-MOPS-NEXT:    .cfi_offset w30, -16303; GISel-WITHOUT-MOPS-NEXT:    mov x2, x1304; GISel-WITHOUT-MOPS-NEXT:    mov w1, wzr305; GISel-WITHOUT-MOPS-NEXT:    bl memset306; GISel-WITHOUT-MOPS-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload307; GISel-WITHOUT-MOPS-NEXT:    ret308;309; GISel-MOPS-O0-LABEL: memset_size_zeroval_volatile:310; GISel-MOPS-O0:       // %bb.0: // %entry311; GISel-MOPS-O0-NEXT:    mov x8, xzr312; GISel-MOPS-O0-NEXT:    setp [x0]!, x1!, x8313; GISel-MOPS-O0-NEXT:    setm [x0]!, x1!, x8314; GISel-MOPS-O0-NEXT:    sete [x0]!, x1!, x8315; GISel-MOPS-O0-NEXT:    ret316;317; GISel-MOPS-O3-LABEL: memset_size_zeroval_volatile:318; GISel-MOPS-O3:       // %bb.0: // %entry319; GISel-MOPS-O3-NEXT:    setp [x0]!, x1!, xzr320; GISel-MOPS-O3-NEXT:    setm [x0]!, x1!, xzr321; GISel-MOPS-O3-NEXT:    sete [x0]!, x1!, xzr322; GISel-MOPS-O3-NEXT:    ret323;324; SDAG-WITHOUT-MOPS-O2-LABEL: memset_size_zeroval_volatile:325; SDAG-WITHOUT-MOPS-O2:       // %bb.0: // %entry326; SDAG-WITHOUT-MOPS-O2-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill327; SDAG-WITHOUT-MOPS-O2-NEXT:    .cfi_def_cfa_offset 16328; SDAG-WITHOUT-MOPS-O2-NEXT:    .cfi_offset w30, -16329; SDAG-WITHOUT-MOPS-O2-NEXT:    mov x2, x1330; SDAG-WITHOUT-MOPS-O2-NEXT:    mov w1, wzr331; SDAG-WITHOUT-MOPS-O2-NEXT:    bl memset332; SDAG-WITHOUT-MOPS-O2-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload333; SDAG-WITHOUT-MOPS-O2-NEXT:    ret334;335; SDAG-MOPS-O2-LABEL: memset_size_zeroval_volatile:336; SDAG-MOPS-O2:       // %bb.0: // %entry337; SDAG-MOPS-O2-NEXT:    setp [x0]!, x1!, xzr338; SDAG-MOPS-O2-NEXT:    setm [x0]!, x1!, xzr339; SDAG-MOPS-O2-NEXT:    sete [x0]!, x1!, xzr340; SDAG-MOPS-O2-NEXT:    ret341entry:342  call void @llvm.memset.p0.i64(ptr align 1 %dst, i8 0, i64 %size, i1 true)343  ret void344}345 346 347define void @memset_0(ptr %dst, i32 %value) {348; GISel-WITHOUT-MOPS-LABEL: memset_0:349; GISel-WITHOUT-MOPS:       // %bb.0: // %entry350; GISel-WITHOUT-MOPS-NEXT:    ret351;352; GISel-MOPS-LABEL: memset_0:353; GISel-MOPS:       // %bb.0: // %entry354; GISel-MOPS-NEXT:    ret355;356; SDAG-WITHOUT-MOPS-O2-LABEL: memset_0:357; SDAG-WITHOUT-MOPS-O2:       // %bb.0: // %entry358; SDAG-WITHOUT-MOPS-O2-NEXT:    ret359;360; SDAG-MOPS-O2-LABEL: memset_0:361; SDAG-MOPS-O2:       // %bb.0: // %entry362; SDAG-MOPS-O2-NEXT:    ret363entry:364  %value_trunc = trunc i32 %value to i8365  call void @llvm.memset.p0.i64(ptr align 1 %dst, i8 0, i64 0, i1 false)366  ret void367}368 369define void @memset_0_volatile(ptr %dst, i32 %value) {370; GISel-WITHOUT-MOPS-LABEL: memset_0_volatile:371; GISel-WITHOUT-MOPS:       // %bb.0: // %entry372; GISel-WITHOUT-MOPS-NEXT:    ret373;374; GISel-MOPS-LABEL: memset_0_volatile:375; GISel-MOPS:       // %bb.0: // %entry376; GISel-MOPS-NEXT:    ret377;378; SDAG-WITHOUT-MOPS-O2-LABEL: memset_0_volatile:379; SDAG-WITHOUT-MOPS-O2:       // %bb.0: // %entry380; SDAG-WITHOUT-MOPS-O2-NEXT:    ret381;382; SDAG-MOPS-O2-LABEL: memset_0_volatile:383; SDAG-MOPS-O2:       // %bb.0: // %entry384; SDAG-MOPS-O2-NEXT:    ret385entry:386  %value_trunc = trunc i32 %value to i8387  call void @llvm.memset.p0.i64(ptr align 1 %dst, i8 0, i64 0, i1 true)388  ret void389}390 391define void @memset_10(ptr %dst, i32 %value) {392; GISel-WITHOUT-MOPS-O0-LABEL: memset_10:393; GISel-WITHOUT-MOPS-O0:       // %bb.0: // %entry394; GISel-WITHOUT-MOPS-O0-NEXT:    // implicit-def: $x8395; GISel-WITHOUT-MOPS-O0-NEXT:    mov w8, w1396; GISel-WITHOUT-MOPS-O0-NEXT:    and x8, x8, #0xff397; GISel-WITHOUT-MOPS-O0-NEXT:    mov x9, #72340172838076673 // =0x101010101010101398; GISel-WITHOUT-MOPS-O0-NEXT:    mul x8, x8, x9399; GISel-WITHOUT-MOPS-O0-NEXT:    str x8, [x0]400; GISel-WITHOUT-MOPS-O0-NEXT:    // kill: def $w8 killed $w8 killed $x8401; GISel-WITHOUT-MOPS-O0-NEXT:    strh w8, [x0, #8]402; GISel-WITHOUT-MOPS-O0-NEXT:    ret403;404; GISel-WITHOUT-MOPS-O3-LABEL: memset_10:405; GISel-WITHOUT-MOPS-O3:       // %bb.0: // %entry406; GISel-WITHOUT-MOPS-O3-NEXT:    // kill: def $w1 killed $w1 def $x1407; GISel-WITHOUT-MOPS-O3-NEXT:    mov x8, #72340172838076673 // =0x101010101010101408; GISel-WITHOUT-MOPS-O3-NEXT:    and x9, x1, #0xff409; GISel-WITHOUT-MOPS-O3-NEXT:    mul x8, x9, x8410; GISel-WITHOUT-MOPS-O3-NEXT:    str x8, [x0]411; GISel-WITHOUT-MOPS-O3-NEXT:    strh w8, [x0, #8]412; GISel-WITHOUT-MOPS-O3-NEXT:    ret413;414; GISel-MOPS-O0-LABEL: memset_10:415; GISel-MOPS-O0:       // %bb.0: // %entry416; GISel-MOPS-O0-NEXT:    // implicit-def: $x8417; GISel-MOPS-O0-NEXT:    mov w8, w1418; GISel-MOPS-O0-NEXT:    and x8, x8, #0xff419; GISel-MOPS-O0-NEXT:    mov x9, #72340172838076673 // =0x101010101010101420; GISel-MOPS-O0-NEXT:    mul x8, x8, x9421; GISel-MOPS-O0-NEXT:    str x8, [x0]422; GISel-MOPS-O0-NEXT:    // kill: def $w8 killed $w8 killed $x8423; GISel-MOPS-O0-NEXT:    strh w8, [x0, #8]424; GISel-MOPS-O0-NEXT:    ret425;426; GISel-MOPS-O3-LABEL: memset_10:427; GISel-MOPS-O3:       // %bb.0: // %entry428; GISel-MOPS-O3-NEXT:    // kill: def $w1 killed $w1 def $x1429; GISel-MOPS-O3-NEXT:    mov x8, #72340172838076673 // =0x101010101010101430; GISel-MOPS-O3-NEXT:    and x9, x1, #0xff431; GISel-MOPS-O3-NEXT:    mul x8, x9, x8432; GISel-MOPS-O3-NEXT:    str x8, [x0]433; GISel-MOPS-O3-NEXT:    strh w8, [x0, #8]434; GISel-MOPS-O3-NEXT:    ret435;436; SDAG-WITHOUT-MOPS-O2-LABEL: memset_10:437; SDAG-WITHOUT-MOPS-O2:       // %bb.0: // %entry438; SDAG-WITHOUT-MOPS-O2-NEXT:    // kill: def $w1 killed $w1 def $x1439; SDAG-WITHOUT-MOPS-O2-NEXT:    mov x8, #72340172838076673 // =0x101010101010101440; SDAG-WITHOUT-MOPS-O2-NEXT:    and x9, x1, #0xff441; SDAG-WITHOUT-MOPS-O2-NEXT:    mul x8, x9, x8442; SDAG-WITHOUT-MOPS-O2-NEXT:    str x8, [x0]443; SDAG-WITHOUT-MOPS-O2-NEXT:    strh w8, [x0, #8]444; SDAG-WITHOUT-MOPS-O2-NEXT:    ret445;446; SDAG-MOPS-O2-LABEL: memset_10:447; SDAG-MOPS-O2:       // %bb.0: // %entry448; SDAG-MOPS-O2-NEXT:    // kill: def $w1 killed $w1 def $x1449; SDAG-MOPS-O2-NEXT:    mov x8, #72340172838076673 // =0x101010101010101450; SDAG-MOPS-O2-NEXT:    and x9, x1, #0xff451; SDAG-MOPS-O2-NEXT:    mul x8, x9, x8452; SDAG-MOPS-O2-NEXT:    str x8, [x0]453; SDAG-MOPS-O2-NEXT:    strh w8, [x0, #8]454; SDAG-MOPS-O2-NEXT:    ret455entry:456  %value_trunc = trunc i32 %value to i8457  call void @llvm.memset.p0.i64(ptr align 1 %dst, i8 %value_trunc, i64 10, i1 false)458  ret void459}460 461define void @memset_10_volatile(ptr %dst, i32 %value) {462; GISel-WITHOUT-MOPS-O0-LABEL: memset_10_volatile:463; GISel-WITHOUT-MOPS-O0:       // %bb.0: // %entry464; GISel-WITHOUT-MOPS-O0-NEXT:    // implicit-def: $x8465; GISel-WITHOUT-MOPS-O0-NEXT:    mov w8, w1466; GISel-WITHOUT-MOPS-O0-NEXT:    and x8, x8, #0xff467; GISel-WITHOUT-MOPS-O0-NEXT:    mov x9, #72340172838076673 // =0x101010101010101468; GISel-WITHOUT-MOPS-O0-NEXT:    mul x8, x8, x9469; GISel-WITHOUT-MOPS-O0-NEXT:    str x8, [x0]470; GISel-WITHOUT-MOPS-O0-NEXT:    // kill: def $w8 killed $w8 killed $x8471; GISel-WITHOUT-MOPS-O0-NEXT:    strh w8, [x0, #8]472; GISel-WITHOUT-MOPS-O0-NEXT:    ret473;474; GISel-WITHOUT-MOPS-O3-LABEL: memset_10_volatile:475; GISel-WITHOUT-MOPS-O3:       // %bb.0: // %entry476; GISel-WITHOUT-MOPS-O3-NEXT:    // kill: def $w1 killed $w1 def $x1477; GISel-WITHOUT-MOPS-O3-NEXT:    mov x8, #72340172838076673 // =0x101010101010101478; GISel-WITHOUT-MOPS-O3-NEXT:    and x9, x1, #0xff479; GISel-WITHOUT-MOPS-O3-NEXT:    mul x8, x9, x8480; GISel-WITHOUT-MOPS-O3-NEXT:    str x8, [x0]481; GISel-WITHOUT-MOPS-O3-NEXT:    strh w8, [x0, #8]482; GISel-WITHOUT-MOPS-O3-NEXT:    ret483;484; GISel-MOPS-O0-LABEL: memset_10_volatile:485; GISel-MOPS-O0:       // %bb.0: // %entry486; GISel-MOPS-O0-NEXT:    // implicit-def: $x8487; GISel-MOPS-O0-NEXT:    mov w8, w1488; GISel-MOPS-O0-NEXT:    and x8, x8, #0xff489; GISel-MOPS-O0-NEXT:    mov x9, #72340172838076673 // =0x101010101010101490; GISel-MOPS-O0-NEXT:    mul x8, x8, x9491; GISel-MOPS-O0-NEXT:    str x8, [x0]492; GISel-MOPS-O0-NEXT:    // kill: def $w8 killed $w8 killed $x8493; GISel-MOPS-O0-NEXT:    strh w8, [x0, #8]494; GISel-MOPS-O0-NEXT:    ret495;496; GISel-MOPS-O3-LABEL: memset_10_volatile:497; GISel-MOPS-O3:       // %bb.0: // %entry498; GISel-MOPS-O3-NEXT:    // kill: def $w1 killed $w1 def $x1499; GISel-MOPS-O3-NEXT:    mov x8, #72340172838076673 // =0x101010101010101500; GISel-MOPS-O3-NEXT:    and x9, x1, #0xff501; GISel-MOPS-O3-NEXT:    mul x8, x9, x8502; GISel-MOPS-O3-NEXT:    str x8, [x0]503; GISel-MOPS-O3-NEXT:    strh w8, [x0, #8]504; GISel-MOPS-O3-NEXT:    ret505;506; SDAG-WITHOUT-MOPS-O2-LABEL: memset_10_volatile:507; SDAG-WITHOUT-MOPS-O2:       // %bb.0: // %entry508; SDAG-WITHOUT-MOPS-O2-NEXT:    // kill: def $w1 killed $w1 def $x1509; SDAG-WITHOUT-MOPS-O2-NEXT:    mov x8, #72340172838076673 // =0x101010101010101510; SDAG-WITHOUT-MOPS-O2-NEXT:    and x9, x1, #0xff511; SDAG-WITHOUT-MOPS-O2-NEXT:    mul x8, x9, x8512; SDAG-WITHOUT-MOPS-O2-NEXT:    str x8, [x0]513; SDAG-WITHOUT-MOPS-O2-NEXT:    strh w8, [x0, #8]514; SDAG-WITHOUT-MOPS-O2-NEXT:    ret515;516; SDAG-MOPS-O2-LABEL: memset_10_volatile:517; SDAG-MOPS-O2:       // %bb.0: // %entry518; SDAG-MOPS-O2-NEXT:    // kill: def $w1 killed $w1 def $x1519; SDAG-MOPS-O2-NEXT:    mov x8, #72340172838076673 // =0x101010101010101520; SDAG-MOPS-O2-NEXT:    and x9, x1, #0xff521; SDAG-MOPS-O2-NEXT:    mul x8, x9, x8522; SDAG-MOPS-O2-NEXT:    str x8, [x0]523; SDAG-MOPS-O2-NEXT:    strh w8, [x0, #8]524; SDAG-MOPS-O2-NEXT:    ret525entry:526  %value_trunc = trunc i32 %value to i8527  call void @llvm.memset.p0.i64(ptr align 1 %dst, i8 %value_trunc, i64 10, i1 true)528  ret void529}530 531define void @memset_10000(ptr %dst, i32 %value) {532; GISel-WITHOUT-MOPS-O0-LABEL: memset_10000:533; GISel-WITHOUT-MOPS-O0:       // %bb.0: // %entry534; GISel-WITHOUT-MOPS-O0-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill535; GISel-WITHOUT-MOPS-O0-NEXT:    .cfi_def_cfa_offset 16536; GISel-WITHOUT-MOPS-O0-NEXT:    .cfi_offset w30, -16537; GISel-WITHOUT-MOPS-O0-NEXT:    mov w8, #10000 // =0x2710538; GISel-WITHOUT-MOPS-O0-NEXT:    mov w2, w8539; GISel-WITHOUT-MOPS-O0-NEXT:    bl memset540; GISel-WITHOUT-MOPS-O0-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload541; GISel-WITHOUT-MOPS-O0-NEXT:    ret542;543; GISel-WITHOUT-MOPS-O3-LABEL: memset_10000:544; GISel-WITHOUT-MOPS-O3:       // %bb.0: // %entry545; GISel-WITHOUT-MOPS-O3-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill546; GISel-WITHOUT-MOPS-O3-NEXT:    .cfi_def_cfa_offset 16547; GISel-WITHOUT-MOPS-O3-NEXT:    .cfi_offset w30, -16548; GISel-WITHOUT-MOPS-O3-NEXT:    mov w2, #10000 // =0x2710549; GISel-WITHOUT-MOPS-O3-NEXT:    bl memset550; GISel-WITHOUT-MOPS-O3-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload551; GISel-WITHOUT-MOPS-O3-NEXT:    ret552;553; GISel-MOPS-O0-LABEL: memset_10000:554; GISel-MOPS-O0:       // %bb.0: // %entry555; GISel-MOPS-O0-NEXT:    mov w8, #10000 // =0x2710556; GISel-MOPS-O0-NEXT:    // kill: def $x8 killed $w8557; GISel-MOPS-O0-NEXT:    // implicit-def: $x9558; GISel-MOPS-O0-NEXT:    mov w9, w1559; GISel-MOPS-O0-NEXT:    setp [x0]!, x8!, x9560; GISel-MOPS-O0-NEXT:    setm [x0]!, x8!, x9561; GISel-MOPS-O0-NEXT:    sete [x0]!, x8!, x9562; GISel-MOPS-O0-NEXT:    ret563;564; GISel-MOPS-O3-LABEL: memset_10000:565; GISel-MOPS-O3:       // %bb.0: // %entry566; GISel-MOPS-O3-NEXT:    mov w8, #10000 // =0x2710567; GISel-MOPS-O3-NEXT:    // kill: def $w1 killed $w1 def $x1568; GISel-MOPS-O3-NEXT:    setp [x0]!, x8!, x1569; GISel-MOPS-O3-NEXT:    setm [x0]!, x8!, x1570; GISel-MOPS-O3-NEXT:    sete [x0]!, x8!, x1571; GISel-MOPS-O3-NEXT:    ret572;573; SDAG-WITHOUT-MOPS-O2-LABEL: memset_10000:574; SDAG-WITHOUT-MOPS-O2:       // %bb.0: // %entry575; SDAG-WITHOUT-MOPS-O2-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill576; SDAG-WITHOUT-MOPS-O2-NEXT:    .cfi_def_cfa_offset 16577; SDAG-WITHOUT-MOPS-O2-NEXT:    .cfi_offset w30, -16578; SDAG-WITHOUT-MOPS-O2-NEXT:    mov w2, #10000 // =0x2710579; SDAG-WITHOUT-MOPS-O2-NEXT:    bl memset580; SDAG-WITHOUT-MOPS-O2-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload581; SDAG-WITHOUT-MOPS-O2-NEXT:    ret582;583; SDAG-MOPS-O2-LABEL: memset_10000:584; SDAG-MOPS-O2:       // %bb.0: // %entry585; SDAG-MOPS-O2-NEXT:    mov w8, #10000 // =0x2710586; SDAG-MOPS-O2-NEXT:    // kill: def $w1 killed $w1 def $x1587; SDAG-MOPS-O2-NEXT:    setp [x0]!, x8!, x1588; SDAG-MOPS-O2-NEXT:    setm [x0]!, x8!, x1589; SDAG-MOPS-O2-NEXT:    sete [x0]!, x8!, x1590; SDAG-MOPS-O2-NEXT:    ret591entry:592  %value_trunc = trunc i32 %value to i8593  call void @llvm.memset.p0.i64(ptr align 1 %dst, i8 %value_trunc, i64 10000, i1 false)594  ret void595}596 597define void @memset_10000_volatile(ptr %dst, i32 %value) {598; GISel-WITHOUT-MOPS-O0-LABEL: memset_10000_volatile:599; GISel-WITHOUT-MOPS-O0:       // %bb.0: // %entry600; GISel-WITHOUT-MOPS-O0-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill601; GISel-WITHOUT-MOPS-O0-NEXT:    .cfi_def_cfa_offset 16602; GISel-WITHOUT-MOPS-O0-NEXT:    .cfi_offset w30, -16603; GISel-WITHOUT-MOPS-O0-NEXT:    mov w8, #10000 // =0x2710604; GISel-WITHOUT-MOPS-O0-NEXT:    mov w2, w8605; GISel-WITHOUT-MOPS-O0-NEXT:    bl memset606; GISel-WITHOUT-MOPS-O0-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload607; GISel-WITHOUT-MOPS-O0-NEXT:    ret608;609; GISel-WITHOUT-MOPS-O3-LABEL: memset_10000_volatile:610; GISel-WITHOUT-MOPS-O3:       // %bb.0: // %entry611; GISel-WITHOUT-MOPS-O3-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill612; GISel-WITHOUT-MOPS-O3-NEXT:    .cfi_def_cfa_offset 16613; GISel-WITHOUT-MOPS-O3-NEXT:    .cfi_offset w30, -16614; GISel-WITHOUT-MOPS-O3-NEXT:    mov w2, #10000 // =0x2710615; GISel-WITHOUT-MOPS-O3-NEXT:    bl memset616; GISel-WITHOUT-MOPS-O3-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload617; GISel-WITHOUT-MOPS-O3-NEXT:    ret618;619; GISel-MOPS-O0-LABEL: memset_10000_volatile:620; GISel-MOPS-O0:       // %bb.0: // %entry621; GISel-MOPS-O0-NEXT:    mov w8, #10000 // =0x2710622; GISel-MOPS-O0-NEXT:    // kill: def $x8 killed $w8623; GISel-MOPS-O0-NEXT:    // implicit-def: $x9624; GISel-MOPS-O0-NEXT:    mov w9, w1625; GISel-MOPS-O0-NEXT:    setp [x0]!, x8!, x9626; GISel-MOPS-O0-NEXT:    setm [x0]!, x8!, x9627; GISel-MOPS-O0-NEXT:    sete [x0]!, x8!, x9628; GISel-MOPS-O0-NEXT:    ret629;630; GISel-MOPS-O3-LABEL: memset_10000_volatile:631; GISel-MOPS-O3:       // %bb.0: // %entry632; GISel-MOPS-O3-NEXT:    mov w8, #10000 // =0x2710633; GISel-MOPS-O3-NEXT:    // kill: def $w1 killed $w1 def $x1634; GISel-MOPS-O3-NEXT:    setp [x0]!, x8!, x1635; GISel-MOPS-O3-NEXT:    setm [x0]!, x8!, x1636; GISel-MOPS-O3-NEXT:    sete [x0]!, x8!, x1637; GISel-MOPS-O3-NEXT:    ret638;639; SDAG-WITHOUT-MOPS-O2-LABEL: memset_10000_volatile:640; SDAG-WITHOUT-MOPS-O2:       // %bb.0: // %entry641; SDAG-WITHOUT-MOPS-O2-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill642; SDAG-WITHOUT-MOPS-O2-NEXT:    .cfi_def_cfa_offset 16643; SDAG-WITHOUT-MOPS-O2-NEXT:    .cfi_offset w30, -16644; SDAG-WITHOUT-MOPS-O2-NEXT:    mov w2, #10000 // =0x2710645; SDAG-WITHOUT-MOPS-O2-NEXT:    bl memset646; SDAG-WITHOUT-MOPS-O2-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload647; SDAG-WITHOUT-MOPS-O2-NEXT:    ret648;649; SDAG-MOPS-O2-LABEL: memset_10000_volatile:650; SDAG-MOPS-O2:       // %bb.0: // %entry651; SDAG-MOPS-O2-NEXT:    mov w8, #10000 // =0x2710652; SDAG-MOPS-O2-NEXT:    // kill: def $w1 killed $w1 def $x1653; SDAG-MOPS-O2-NEXT:    setp [x0]!, x8!, x1654; SDAG-MOPS-O2-NEXT:    setm [x0]!, x8!, x1655; SDAG-MOPS-O2-NEXT:    sete [x0]!, x8!, x1656; SDAG-MOPS-O2-NEXT:    ret657entry:658  %value_trunc = trunc i32 %value to i8659  call void @llvm.memset.p0.i64(ptr align 1 %dst, i8 %value_trunc, i64 10000, i1 true)660  ret void661}662 663define void @memset_size(ptr %dst, i64 %size, i32 %value) {664; GISel-WITHOUT-MOPS-O0-LABEL: memset_size:665; GISel-WITHOUT-MOPS-O0:       // %bb.0: // %entry666; GISel-WITHOUT-MOPS-O0-NEXT:    sub sp, sp, #32667; GISel-WITHOUT-MOPS-O0-NEXT:    str x30, [sp, #16] // 8-byte Spill668; GISel-WITHOUT-MOPS-O0-NEXT:    .cfi_def_cfa_offset 32669; GISel-WITHOUT-MOPS-O0-NEXT:    .cfi_offset w30, -16670; GISel-WITHOUT-MOPS-O0-NEXT:    str x1, [sp, #8] // 8-byte Spill671; GISel-WITHOUT-MOPS-O0-NEXT:    mov w1, w2672; GISel-WITHOUT-MOPS-O0-NEXT:    ldr x2, [sp, #8] // 8-byte Reload673; GISel-WITHOUT-MOPS-O0-NEXT:    bl memset674; GISel-WITHOUT-MOPS-O0-NEXT:    ldr x30, [sp, #16] // 8-byte Reload675; GISel-WITHOUT-MOPS-O0-NEXT:    add sp, sp, #32676; GISel-WITHOUT-MOPS-O0-NEXT:    ret677;678; GISel-WITHOUT-MOPS-O3-LABEL: memset_size:679; GISel-WITHOUT-MOPS-O3:       // %bb.0: // %entry680; GISel-WITHOUT-MOPS-O3-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill681; GISel-WITHOUT-MOPS-O3-NEXT:    .cfi_def_cfa_offset 16682; GISel-WITHOUT-MOPS-O3-NEXT:    .cfi_offset w30, -16683; GISel-WITHOUT-MOPS-O3-NEXT:    mov x3, x1684; GISel-WITHOUT-MOPS-O3-NEXT:    mov w1, w2685; GISel-WITHOUT-MOPS-O3-NEXT:    mov x2, x3686; GISel-WITHOUT-MOPS-O3-NEXT:    bl memset687; GISel-WITHOUT-MOPS-O3-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload688; GISel-WITHOUT-MOPS-O3-NEXT:    ret689;690; GISel-MOPS-O0-LABEL: memset_size:691; GISel-MOPS-O0:       // %bb.0: // %entry692; GISel-MOPS-O0-NEXT:    // implicit-def: $x8693; GISel-MOPS-O0-NEXT:    mov w8, w2694; GISel-MOPS-O0-NEXT:    setp [x0]!, x1!, x8695; GISel-MOPS-O0-NEXT:    setm [x0]!, x1!, x8696; GISel-MOPS-O0-NEXT:    sete [x0]!, x1!, x8697; GISel-MOPS-O0-NEXT:    ret698;699; GISel-MOPS-O3-LABEL: memset_size:700; GISel-MOPS-O3:       // %bb.0: // %entry701; GISel-MOPS-O3-NEXT:    // kill: def $w2 killed $w2 def $x2702; GISel-MOPS-O3-NEXT:    setp [x0]!, x1!, x2703; GISel-MOPS-O3-NEXT:    setm [x0]!, x1!, x2704; GISel-MOPS-O3-NEXT:    sete [x0]!, x1!, x2705; GISel-MOPS-O3-NEXT:    ret706;707; SDAG-WITHOUT-MOPS-O2-LABEL: memset_size:708; SDAG-WITHOUT-MOPS-O2:       // %bb.0: // %entry709; SDAG-WITHOUT-MOPS-O2-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill710; SDAG-WITHOUT-MOPS-O2-NEXT:    .cfi_def_cfa_offset 16711; SDAG-WITHOUT-MOPS-O2-NEXT:    .cfi_offset w30, -16712; SDAG-WITHOUT-MOPS-O2-NEXT:    mov x8, x1713; SDAG-WITHOUT-MOPS-O2-NEXT:    mov w1, w2714; SDAG-WITHOUT-MOPS-O2-NEXT:    mov x2, x8715; SDAG-WITHOUT-MOPS-O2-NEXT:    bl memset716; SDAG-WITHOUT-MOPS-O2-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload717; SDAG-WITHOUT-MOPS-O2-NEXT:    ret718;719; SDAG-MOPS-O2-LABEL: memset_size:720; SDAG-MOPS-O2:       // %bb.0: // %entry721; SDAG-MOPS-O2-NEXT:    // kill: def $w2 killed $w2 def $x2722; SDAG-MOPS-O2-NEXT:    setp [x0]!, x1!, x2723; SDAG-MOPS-O2-NEXT:    setm [x0]!, x1!, x2724; SDAG-MOPS-O2-NEXT:    sete [x0]!, x1!, x2725; SDAG-MOPS-O2-NEXT:    ret726entry:727  %value_trunc = trunc i32 %value to i8728  call void @llvm.memset.p0.i64(ptr align 1 %dst, i8 %value_trunc, i64 %size, i1 false)729  ret void730}731 732define void @memset_size_volatile(ptr %dst, i64 %size, i32 %value) {733; GISel-WITHOUT-MOPS-O0-LABEL: memset_size_volatile:734; GISel-WITHOUT-MOPS-O0:       // %bb.0: // %entry735; GISel-WITHOUT-MOPS-O0-NEXT:    sub sp, sp, #32736; GISel-WITHOUT-MOPS-O0-NEXT:    str x30, [sp, #16] // 8-byte Spill737; GISel-WITHOUT-MOPS-O0-NEXT:    .cfi_def_cfa_offset 32738; GISel-WITHOUT-MOPS-O0-NEXT:    .cfi_offset w30, -16739; GISel-WITHOUT-MOPS-O0-NEXT:    str x1, [sp, #8] // 8-byte Spill740; GISel-WITHOUT-MOPS-O0-NEXT:    mov w1, w2741; GISel-WITHOUT-MOPS-O0-NEXT:    ldr x2, [sp, #8] // 8-byte Reload742; GISel-WITHOUT-MOPS-O0-NEXT:    bl memset743; GISel-WITHOUT-MOPS-O0-NEXT:    ldr x30, [sp, #16] // 8-byte Reload744; GISel-WITHOUT-MOPS-O0-NEXT:    add sp, sp, #32745; GISel-WITHOUT-MOPS-O0-NEXT:    ret746;747; GISel-WITHOUT-MOPS-O3-LABEL: memset_size_volatile:748; GISel-WITHOUT-MOPS-O3:       // %bb.0: // %entry749; GISel-WITHOUT-MOPS-O3-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill750; GISel-WITHOUT-MOPS-O3-NEXT:    .cfi_def_cfa_offset 16751; GISel-WITHOUT-MOPS-O3-NEXT:    .cfi_offset w30, -16752; GISel-WITHOUT-MOPS-O3-NEXT:    mov x3, x1753; GISel-WITHOUT-MOPS-O3-NEXT:    mov w1, w2754; GISel-WITHOUT-MOPS-O3-NEXT:    mov x2, x3755; GISel-WITHOUT-MOPS-O3-NEXT:    bl memset756; GISel-WITHOUT-MOPS-O3-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload757; GISel-WITHOUT-MOPS-O3-NEXT:    ret758;759; GISel-MOPS-O0-LABEL: memset_size_volatile:760; GISel-MOPS-O0:       // %bb.0: // %entry761; GISel-MOPS-O0-NEXT:    // implicit-def: $x8762; GISel-MOPS-O0-NEXT:    mov w8, w2763; GISel-MOPS-O0-NEXT:    setp [x0]!, x1!, x8764; GISel-MOPS-O0-NEXT:    setm [x0]!, x1!, x8765; GISel-MOPS-O0-NEXT:    sete [x0]!, x1!, x8766; GISel-MOPS-O0-NEXT:    ret767;768; GISel-MOPS-O3-LABEL: memset_size_volatile:769; GISel-MOPS-O3:       // %bb.0: // %entry770; GISel-MOPS-O3-NEXT:    // kill: def $w2 killed $w2 def $x2771; GISel-MOPS-O3-NEXT:    setp [x0]!, x1!, x2772; GISel-MOPS-O3-NEXT:    setm [x0]!, x1!, x2773; GISel-MOPS-O3-NEXT:    sete [x0]!, x1!, x2774; GISel-MOPS-O3-NEXT:    ret775;776; SDAG-WITHOUT-MOPS-O2-LABEL: memset_size_volatile:777; SDAG-WITHOUT-MOPS-O2:       // %bb.0: // %entry778; SDAG-WITHOUT-MOPS-O2-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill779; SDAG-WITHOUT-MOPS-O2-NEXT:    .cfi_def_cfa_offset 16780; SDAG-WITHOUT-MOPS-O2-NEXT:    .cfi_offset w30, -16781; SDAG-WITHOUT-MOPS-O2-NEXT:    mov x8, x1782; SDAG-WITHOUT-MOPS-O2-NEXT:    mov w1, w2783; SDAG-WITHOUT-MOPS-O2-NEXT:    mov x2, x8784; SDAG-WITHOUT-MOPS-O2-NEXT:    bl memset785; SDAG-WITHOUT-MOPS-O2-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload786; SDAG-WITHOUT-MOPS-O2-NEXT:    ret787;788; SDAG-MOPS-O2-LABEL: memset_size_volatile:789; SDAG-MOPS-O2:       // %bb.0: // %entry790; SDAG-MOPS-O2-NEXT:    // kill: def $w2 killed $w2 def $x2791; SDAG-MOPS-O2-NEXT:    setp [x0]!, x1!, x2792; SDAG-MOPS-O2-NEXT:    setm [x0]!, x1!, x2793; SDAG-MOPS-O2-NEXT:    sete [x0]!, x1!, x2794; SDAG-MOPS-O2-NEXT:    ret795entry:796  %value_trunc = trunc i32 %value to i8797  call void @llvm.memset.p0.i64(ptr align 1 %dst, i8 %value_trunc, i64 %size, i1 true)798  ret void799}800 801 802define void @memcpy_0(ptr %dst, ptr %src, i32 %value) {803; GISel-WITHOUT-MOPS-LABEL: memcpy_0:804; GISel-WITHOUT-MOPS:       // %bb.0: // %entry805; GISel-WITHOUT-MOPS-NEXT:    ret806;807; GISel-MOPS-LABEL: memcpy_0:808; GISel-MOPS:       // %bb.0: // %entry809; GISel-MOPS-NEXT:    ret810;811; SDAG-WITHOUT-MOPS-O2-LABEL: memcpy_0:812; SDAG-WITHOUT-MOPS-O2:       // %bb.0: // %entry813; SDAG-WITHOUT-MOPS-O2-NEXT:    ret814;815; SDAG-MOPS-O2-LABEL: memcpy_0:816; SDAG-MOPS-O2:       // %bb.0: // %entry817; SDAG-MOPS-O2-NEXT:    ret818entry:819  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %dst, ptr align 1 %src, i64 0, i1 false)820  ret void821}822 823define void @memcpy_0_volatile(ptr %dst, ptr %src, i32 %value) {824; GISel-WITHOUT-MOPS-LABEL: memcpy_0_volatile:825; GISel-WITHOUT-MOPS:       // %bb.0: // %entry826; GISel-WITHOUT-MOPS-NEXT:    ret827;828; GISel-MOPS-LABEL: memcpy_0_volatile:829; GISel-MOPS:       // %bb.0: // %entry830; GISel-MOPS-NEXT:    ret831;832; SDAG-WITHOUT-MOPS-O2-LABEL: memcpy_0_volatile:833; SDAG-WITHOUT-MOPS-O2:       // %bb.0: // %entry834; SDAG-WITHOUT-MOPS-O2-NEXT:    ret835;836; SDAG-MOPS-O2-LABEL: memcpy_0_volatile:837; SDAG-MOPS-O2:       // %bb.0: // %entry838; SDAG-MOPS-O2-NEXT:    ret839entry:840  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %dst, ptr align 1 %src, i64 0, i1 true)841  ret void842}843 844define void @memcpy_10(ptr %dst, ptr %src, i32 %value) {845; GISel-WITHOUT-MOPS-LABEL: memcpy_10:846; GISel-WITHOUT-MOPS:       // %bb.0: // %entry847; GISel-WITHOUT-MOPS-NEXT:    ldr x8, [x1]848; GISel-WITHOUT-MOPS-NEXT:    str x8, [x0]849; GISel-WITHOUT-MOPS-NEXT:    ldrh w8, [x1, #8]850; GISel-WITHOUT-MOPS-NEXT:    strh w8, [x0, #8]851; GISel-WITHOUT-MOPS-NEXT:    ret852;853; GISel-MOPS-LABEL: memcpy_10:854; GISel-MOPS:       // %bb.0: // %entry855; GISel-MOPS-NEXT:    ldr x8, [x1]856; GISel-MOPS-NEXT:    str x8, [x0]857; GISel-MOPS-NEXT:    ldrh w8, [x1, #8]858; GISel-MOPS-NEXT:    strh w8, [x0, #8]859; GISel-MOPS-NEXT:    ret860;861; SDAG-WITHOUT-MOPS-O2-LABEL: memcpy_10:862; SDAG-WITHOUT-MOPS-O2:       // %bb.0: // %entry863; SDAG-WITHOUT-MOPS-O2-NEXT:    ldrh w8, [x1, #8]864; SDAG-WITHOUT-MOPS-O2-NEXT:    ldr x9, [x1]865; SDAG-WITHOUT-MOPS-O2-NEXT:    strh w8, [x0, #8]866; SDAG-WITHOUT-MOPS-O2-NEXT:    str x9, [x0]867; SDAG-WITHOUT-MOPS-O2-NEXT:    ret868;869; SDAG-MOPS-O2-LABEL: memcpy_10:870; SDAG-MOPS-O2:       // %bb.0: // %entry871; SDAG-MOPS-O2-NEXT:    ldrh w8, [x1, #8]872; SDAG-MOPS-O2-NEXT:    ldr x9, [x1]873; SDAG-MOPS-O2-NEXT:    strh w8, [x0, #8]874; SDAG-MOPS-O2-NEXT:    str x9, [x0]875; SDAG-MOPS-O2-NEXT:    ret876entry:877  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %dst, ptr align 1 %src, i64 10, i1 false)878  ret void879}880 881define void @memcpy_10_volatile(ptr %dst, ptr %src, i32 %value) {882; GISel-WITHOUT-MOPS-LABEL: memcpy_10_volatile:883; GISel-WITHOUT-MOPS:       // %bb.0: // %entry884; 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:    ret889;890; GISel-MOPS-LABEL: memcpy_10_volatile:891; GISel-MOPS:       // %bb.0: // %entry892; 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:    ret897;898; SDAG-WITHOUT-MOPS-O2-LABEL: memcpy_10_volatile:899; SDAG-WITHOUT-MOPS-O2:       // %bb.0: // %entry900; SDAG-WITHOUT-MOPS-O2-NEXT:    ldr x8, [x1]901; SDAG-WITHOUT-MOPS-O2-NEXT:    ldrh w9, [x1, #8]902; SDAG-WITHOUT-MOPS-O2-NEXT:    strh w9, [x0, #8]903; SDAG-WITHOUT-MOPS-O2-NEXT:    str x8, [x0]904; SDAG-WITHOUT-MOPS-O2-NEXT:    ret905;906; SDAG-MOPS-O2-LABEL: memcpy_10_volatile:907; SDAG-MOPS-O2:       // %bb.0: // %entry908; SDAG-MOPS-O2-NEXT:    ldr x8, [x1]909; SDAG-MOPS-O2-NEXT:    ldrh w9, [x1, #8]910; SDAG-MOPS-O2-NEXT:    strh w9, [x0, #8]911; SDAG-MOPS-O2-NEXT:    str x8, [x0]912; SDAG-MOPS-O2-NEXT:    ret913entry:914  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %dst, ptr align 1 %src, i64 10, i1 true)915  ret void916}917 918define void @memcpy_1000(ptr %dst, ptr %src, i32 %value) {919; GISel-WITHOUT-MOPS-O0-LABEL: memcpy_1000:920; GISel-WITHOUT-MOPS-O0:       // %bb.0: // %entry921; GISel-WITHOUT-MOPS-O0-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill922; GISel-WITHOUT-MOPS-O0-NEXT:    .cfi_def_cfa_offset 16923; GISel-WITHOUT-MOPS-O0-NEXT:    .cfi_offset w30, -16924; GISel-WITHOUT-MOPS-O0-NEXT:    mov w8, #1000 // =0x3e8925; GISel-WITHOUT-MOPS-O0-NEXT:    mov w2, w8926; GISel-WITHOUT-MOPS-O0-NEXT:    bl memcpy927; GISel-WITHOUT-MOPS-O0-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload928; GISel-WITHOUT-MOPS-O0-NEXT:    ret929;930; GISel-WITHOUT-MOPS-O3-LABEL: memcpy_1000:931; GISel-WITHOUT-MOPS-O3:       // %bb.0: // %entry932; GISel-WITHOUT-MOPS-O3-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill933; GISel-WITHOUT-MOPS-O3-NEXT:    .cfi_def_cfa_offset 16934; GISel-WITHOUT-MOPS-O3-NEXT:    .cfi_offset w30, -16935; GISel-WITHOUT-MOPS-O3-NEXT:    mov w2, #1000 // =0x3e8936; GISel-WITHOUT-MOPS-O3-NEXT:    bl memcpy937; GISel-WITHOUT-MOPS-O3-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload938; GISel-WITHOUT-MOPS-O3-NEXT:    ret939;940; GISel-MOPS-O0-LABEL: memcpy_1000:941; GISel-MOPS-O0:       // %bb.0: // %entry942; GISel-MOPS-O0-NEXT:    mov w8, #1000 // =0x3e8943; GISel-MOPS-O0-NEXT:    // kill: def $x8 killed $w8944; GISel-MOPS-O0-NEXT:    cpyfp [x0]!, [x1]!, x8!945; GISel-MOPS-O0-NEXT:    cpyfm [x0]!, [x1]!, x8!946; GISel-MOPS-O0-NEXT:    cpyfe [x0]!, [x1]!, x8!947; GISel-MOPS-O0-NEXT:    ret948;949; GISel-MOPS-O3-LABEL: memcpy_1000:950; GISel-MOPS-O3:       // %bb.0: // %entry951; GISel-MOPS-O3-NEXT:    mov w8, #1000 // =0x3e8952; GISel-MOPS-O3-NEXT:    cpyfp [x0]!, [x1]!, x8!953; GISel-MOPS-O3-NEXT:    cpyfm [x0]!, [x1]!, x8!954; GISel-MOPS-O3-NEXT:    cpyfe [x0]!, [x1]!, x8!955; GISel-MOPS-O3-NEXT:    ret956;957; SDAG-WITHOUT-MOPS-O2-LABEL: memcpy_1000:958; SDAG-WITHOUT-MOPS-O2:       // %bb.0: // %entry959; SDAG-WITHOUT-MOPS-O2-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill960; SDAG-WITHOUT-MOPS-O2-NEXT:    .cfi_def_cfa_offset 16961; SDAG-WITHOUT-MOPS-O2-NEXT:    .cfi_offset w30, -16962; SDAG-WITHOUT-MOPS-O2-NEXT:    mov w2, #1000 // =0x3e8963; SDAG-WITHOUT-MOPS-O2-NEXT:    bl memcpy964; SDAG-WITHOUT-MOPS-O2-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload965; SDAG-WITHOUT-MOPS-O2-NEXT:    ret966;967; SDAG-MOPS-O2-LABEL: memcpy_1000:968; SDAG-MOPS-O2:       // %bb.0: // %entry969; SDAG-MOPS-O2-NEXT:    mov w8, #1000 // =0x3e8970; SDAG-MOPS-O2-NEXT:    cpyfp [x0]!, [x1]!, x8!971; SDAG-MOPS-O2-NEXT:    cpyfm [x0]!, [x1]!, x8!972; SDAG-MOPS-O2-NEXT:    cpyfe [x0]!, [x1]!, x8!973; SDAG-MOPS-O2-NEXT:    ret974entry:975  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %dst, ptr align 1 %src, i64 1000, i1 false)976  ret void977}978 979define void @memcpy_1000_volatile(ptr %dst, ptr %src, i32 %value) {980; GISel-WITHOUT-MOPS-O0-LABEL: memcpy_1000_volatile:981; GISel-WITHOUT-MOPS-O0:       // %bb.0: // %entry982; GISel-WITHOUT-MOPS-O0-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill983; GISel-WITHOUT-MOPS-O0-NEXT:    .cfi_def_cfa_offset 16984; GISel-WITHOUT-MOPS-O0-NEXT:    .cfi_offset w30, -16985; GISel-WITHOUT-MOPS-O0-NEXT:    mov w8, #1000 // =0x3e8986; GISel-WITHOUT-MOPS-O0-NEXT:    mov w2, w8987; GISel-WITHOUT-MOPS-O0-NEXT:    bl memcpy988; GISel-WITHOUT-MOPS-O0-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload989; GISel-WITHOUT-MOPS-O0-NEXT:    ret990;991; GISel-WITHOUT-MOPS-O3-LABEL: memcpy_1000_volatile:992; GISel-WITHOUT-MOPS-O3:       // %bb.0: // %entry993; GISel-WITHOUT-MOPS-O3-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill994; GISel-WITHOUT-MOPS-O3-NEXT:    .cfi_def_cfa_offset 16995; GISel-WITHOUT-MOPS-O3-NEXT:    .cfi_offset w30, -16996; GISel-WITHOUT-MOPS-O3-NEXT:    mov w2, #1000 // =0x3e8997; GISel-WITHOUT-MOPS-O3-NEXT:    bl memcpy998; GISel-WITHOUT-MOPS-O3-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload999; GISel-WITHOUT-MOPS-O3-NEXT:    ret1000;1001; GISel-MOPS-O0-LABEL: memcpy_1000_volatile:1002; GISel-MOPS-O0:       // %bb.0: // %entry1003; GISel-MOPS-O0-NEXT:    mov w8, #1000 // =0x3e81004; GISel-MOPS-O0-NEXT:    // kill: def $x8 killed $w81005; GISel-MOPS-O0-NEXT:    cpyfp [x0]!, [x1]!, x8!1006; GISel-MOPS-O0-NEXT:    cpyfm [x0]!, [x1]!, x8!1007; GISel-MOPS-O0-NEXT:    cpyfe [x0]!, [x1]!, x8!1008; GISel-MOPS-O0-NEXT:    ret1009;1010; GISel-MOPS-O3-LABEL: memcpy_1000_volatile:1011; GISel-MOPS-O3:       // %bb.0: // %entry1012; GISel-MOPS-O3-NEXT:    mov w8, #1000 // =0x3e81013; GISel-MOPS-O3-NEXT:    cpyfp [x0]!, [x1]!, x8!1014; GISel-MOPS-O3-NEXT:    cpyfm [x0]!, [x1]!, x8!1015; GISel-MOPS-O3-NEXT:    cpyfe [x0]!, [x1]!, x8!1016; GISel-MOPS-O3-NEXT:    ret1017;1018; SDAG-WITHOUT-MOPS-O2-LABEL: memcpy_1000_volatile:1019; SDAG-WITHOUT-MOPS-O2:       // %bb.0: // %entry1020; SDAG-WITHOUT-MOPS-O2-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill1021; SDAG-WITHOUT-MOPS-O2-NEXT:    .cfi_def_cfa_offset 161022; SDAG-WITHOUT-MOPS-O2-NEXT:    .cfi_offset w30, -161023; SDAG-WITHOUT-MOPS-O2-NEXT:    mov w2, #1000 // =0x3e81024; SDAG-WITHOUT-MOPS-O2-NEXT:    bl memcpy1025; SDAG-WITHOUT-MOPS-O2-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload1026; SDAG-WITHOUT-MOPS-O2-NEXT:    ret1027;1028; SDAG-MOPS-O2-LABEL: memcpy_1000_volatile:1029; SDAG-MOPS-O2:       // %bb.0: // %entry1030; SDAG-MOPS-O2-NEXT:    mov w8, #1000 // =0x3e81031; SDAG-MOPS-O2-NEXT:    cpyfp [x0]!, [x1]!, x8!1032; SDAG-MOPS-O2-NEXT:    cpyfm [x0]!, [x1]!, x8!1033; SDAG-MOPS-O2-NEXT:    cpyfe [x0]!, [x1]!, x8!1034; SDAG-MOPS-O2-NEXT:    ret1035entry:1036  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %dst, ptr align 1 %src, i64 1000, i1 true)1037  ret void1038}1039 1040define void @memcpy_n(ptr %dst, ptr %src, i64 %size, i32 %value) {1041; GISel-WITHOUT-MOPS-LABEL: memcpy_n:1042; GISel-WITHOUT-MOPS:       // %bb.0: // %entry1043; GISel-WITHOUT-MOPS-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill1044; GISel-WITHOUT-MOPS-NEXT:    .cfi_def_cfa_offset 161045; GISel-WITHOUT-MOPS-NEXT:    .cfi_offset w30, -161046; GISel-WITHOUT-MOPS-NEXT:    bl memcpy1047; GISel-WITHOUT-MOPS-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload1048; GISel-WITHOUT-MOPS-NEXT:    ret1049;1050; GISel-MOPS-LABEL: memcpy_n:1051; GISel-MOPS:       // %bb.0: // %entry1052; GISel-MOPS-NEXT:    cpyfp [x0]!, [x1]!, x2!1053; GISel-MOPS-NEXT:    cpyfm [x0]!, [x1]!, x2!1054; GISel-MOPS-NEXT:    cpyfe [x0]!, [x1]!, x2!1055; GISel-MOPS-NEXT:    ret1056;1057; SDAG-WITHOUT-MOPS-O2-LABEL: memcpy_n:1058; SDAG-WITHOUT-MOPS-O2:       // %bb.0: // %entry1059; SDAG-WITHOUT-MOPS-O2-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill1060; SDAG-WITHOUT-MOPS-O2-NEXT:    .cfi_def_cfa_offset 161061; SDAG-WITHOUT-MOPS-O2-NEXT:    .cfi_offset w30, -161062; SDAG-WITHOUT-MOPS-O2-NEXT:    bl memcpy1063; SDAG-WITHOUT-MOPS-O2-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload1064; SDAG-WITHOUT-MOPS-O2-NEXT:    ret1065;1066; SDAG-MOPS-O2-LABEL: memcpy_n:1067; SDAG-MOPS-O2:       // %bb.0: // %entry1068; SDAG-MOPS-O2-NEXT:    cpyfp [x0]!, [x1]!, x2!1069; SDAG-MOPS-O2-NEXT:    cpyfm [x0]!, [x1]!, x2!1070; SDAG-MOPS-O2-NEXT:    cpyfe [x0]!, [x1]!, x2!1071; SDAG-MOPS-O2-NEXT:    ret1072entry:1073  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %dst, ptr align 1 %src, i64 %size, i1 false)1074  ret void1075}1076 1077define void @memcpy_n_volatile(ptr %dst, ptr %src, i64 %size, i32 %value) {1078; GISel-WITHOUT-MOPS-LABEL: memcpy_n_volatile:1079; GISel-WITHOUT-MOPS:       // %bb.0: // %entry1080; GISel-WITHOUT-MOPS-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill1081; GISel-WITHOUT-MOPS-NEXT:    .cfi_def_cfa_offset 161082; GISel-WITHOUT-MOPS-NEXT:    .cfi_offset w30, -161083; GISel-WITHOUT-MOPS-NEXT:    bl memcpy1084; GISel-WITHOUT-MOPS-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload1085; GISel-WITHOUT-MOPS-NEXT:    ret1086;1087; GISel-MOPS-LABEL: memcpy_n_volatile:1088; GISel-MOPS:       // %bb.0: // %entry1089; GISel-MOPS-NEXT:    cpyfp [x0]!, [x1]!, x2!1090; GISel-MOPS-NEXT:    cpyfm [x0]!, [x1]!, x2!1091; GISel-MOPS-NEXT:    cpyfe [x0]!, [x1]!, x2!1092; GISel-MOPS-NEXT:    ret1093;1094; SDAG-WITHOUT-MOPS-O2-LABEL: memcpy_n_volatile:1095; SDAG-WITHOUT-MOPS-O2:       // %bb.0: // %entry1096; SDAG-WITHOUT-MOPS-O2-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill1097; SDAG-WITHOUT-MOPS-O2-NEXT:    .cfi_def_cfa_offset 161098; SDAG-WITHOUT-MOPS-O2-NEXT:    .cfi_offset w30, -161099; SDAG-WITHOUT-MOPS-O2-NEXT:    bl memcpy1100; SDAG-WITHOUT-MOPS-O2-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload1101; SDAG-WITHOUT-MOPS-O2-NEXT:    ret1102;1103; SDAG-MOPS-O2-LABEL: memcpy_n_volatile:1104; SDAG-MOPS-O2:       // %bb.0: // %entry1105; SDAG-MOPS-O2-NEXT:    cpyfp [x0]!, [x1]!, x2!1106; SDAG-MOPS-O2-NEXT:    cpyfm [x0]!, [x1]!, x2!1107; SDAG-MOPS-O2-NEXT:    cpyfe [x0]!, [x1]!, x2!1108; SDAG-MOPS-O2-NEXT:    ret1109entry:1110  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %dst, ptr align 1 %src, i64 %size, i1 true)1111  ret void1112}1113 1114 1115define void @memcpy_inline_0(ptr %dst, ptr %src, i32 %value) {1116; GISel-WITHOUT-MOPS-LABEL: memcpy_inline_0:1117; GISel-WITHOUT-MOPS:       // %bb.0: // %entry1118; GISel-WITHOUT-MOPS-NEXT:    ret1119;1120; GISel-MOPS-LABEL: memcpy_inline_0:1121; GISel-MOPS:       // %bb.0: // %entry1122; GISel-MOPS-NEXT:    ret1123;1124; SDAG-WITHOUT-MOPS-O2-LABEL: memcpy_inline_0:1125; SDAG-WITHOUT-MOPS-O2:       // %bb.0: // %entry1126; SDAG-WITHOUT-MOPS-O2-NEXT:    ret1127;1128; SDAG-MOPS-O2-LABEL: memcpy_inline_0:1129; SDAG-MOPS-O2:       // %bb.0: // %entry1130; SDAG-MOPS-O2-NEXT:    ret1131entry:1132  call void @llvm.memcpy.inline.p0.p0.i64(ptr align 1 %dst, ptr align 1 %src, i64 0, i1 false)1133  ret void1134}1135 1136define void @memcpy_inline_0_volatile(ptr %dst, ptr %src, i32 %value) {1137; GISel-WITHOUT-MOPS-LABEL: memcpy_inline_0_volatile:1138; GISel-WITHOUT-MOPS:       // %bb.0: // %entry1139; GISel-WITHOUT-MOPS-NEXT:    ret1140;1141; GISel-MOPS-LABEL: memcpy_inline_0_volatile:1142; GISel-MOPS:       // %bb.0: // %entry1143; GISel-MOPS-NEXT:    ret1144;1145; SDAG-WITHOUT-MOPS-O2-LABEL: memcpy_inline_0_volatile:1146; SDAG-WITHOUT-MOPS-O2:       // %bb.0: // %entry1147; SDAG-WITHOUT-MOPS-O2-NEXT:    ret1148;1149; SDAG-MOPS-O2-LABEL: memcpy_inline_0_volatile:1150; SDAG-MOPS-O2:       // %bb.0: // %entry1151; SDAG-MOPS-O2-NEXT:    ret1152entry:1153  call void @llvm.memcpy.inline.p0.p0.i64(ptr align 1 %dst, ptr align 1 %src, i64 0, i1 true)1154  ret void1155}1156 1157define void @memcpy_inline_10(ptr %dst, ptr %src, i32 %value) {1158; GISel-WITHOUT-MOPS-LABEL: memcpy_inline_10:1159; GISel-WITHOUT-MOPS:       // %bb.0: // %entry1160; GISel-WITHOUT-MOPS-NEXT:    ldr x8, [x1]1161; GISel-WITHOUT-MOPS-NEXT:    str x8, [x0]1162; GISel-WITHOUT-MOPS-NEXT:    ldrh w8, [x1, #8]1163; GISel-WITHOUT-MOPS-NEXT:    strh w8, [x0, #8]1164; GISel-WITHOUT-MOPS-NEXT:    ret1165;1166; GISel-MOPS-LABEL: memcpy_inline_10:1167; GISel-MOPS:       // %bb.0: // %entry1168; GISel-MOPS-NEXT:    ldr x8, [x1]1169; GISel-MOPS-NEXT:    str x8, [x0]1170; GISel-MOPS-NEXT:    ldrh w8, [x1, #8]1171; GISel-MOPS-NEXT:    strh w8, [x0, #8]1172; GISel-MOPS-NEXT:    ret1173;1174; SDAG-WITHOUT-MOPS-O2-LABEL: memcpy_inline_10:1175; SDAG-WITHOUT-MOPS-O2:       // %bb.0: // %entry1176; SDAG-WITHOUT-MOPS-O2-NEXT:    ldrh w8, [x1, #8]1177; SDAG-WITHOUT-MOPS-O2-NEXT:    ldr x9, [x1]1178; SDAG-WITHOUT-MOPS-O2-NEXT:    strh w8, [x0, #8]1179; SDAG-WITHOUT-MOPS-O2-NEXT:    str x9, [x0]1180; SDAG-WITHOUT-MOPS-O2-NEXT:    ret1181;1182; SDAG-MOPS-O2-LABEL: memcpy_inline_10:1183; SDAG-MOPS-O2:       // %bb.0: // %entry1184; SDAG-MOPS-O2-NEXT:    ldrh w8, [x1, #8]1185; SDAG-MOPS-O2-NEXT:    ldr x9, [x1]1186; SDAG-MOPS-O2-NEXT:    strh w8, [x0, #8]1187; SDAG-MOPS-O2-NEXT:    str x9, [x0]1188; SDAG-MOPS-O2-NEXT:    ret1189entry:1190  call void @llvm.memcpy.inline.p0.p0.i64(ptr align 1 %dst, ptr align 1 %src, i64 10, i1 false)1191  ret void1192}1193 1194define void @memcpy_inline_10_volatile(ptr %dst, ptr %src, i32 %value) {1195; GISel-WITHOUT-MOPS-LABEL: memcpy_inline_10_volatile:1196; GISel-WITHOUT-MOPS:       // %bb.0: // %entry1197; GISel-WITHOUT-MOPS-NEXT:    ldr x8, [x1]1198; GISel-WITHOUT-MOPS-NEXT:    str x8, [x0]1199; GISel-WITHOUT-MOPS-NEXT:    ldrh w8, [x1, #8]1200; GISel-WITHOUT-MOPS-NEXT:    strh w8, [x0, #8]1201; GISel-WITHOUT-MOPS-NEXT:    ret1202;1203; GISel-MOPS-LABEL: memcpy_inline_10_volatile:1204; GISel-MOPS:       // %bb.0: // %entry1205; GISel-MOPS-NEXT:    ldr x8, [x1]1206; GISel-MOPS-NEXT:    str x8, [x0]1207; GISel-MOPS-NEXT:    ldrh w8, [x1, #8]1208; GISel-MOPS-NEXT:    strh w8, [x0, #8]1209; GISel-MOPS-NEXT:    ret1210;1211; SDAG-WITHOUT-MOPS-O2-LABEL: memcpy_inline_10_volatile:1212; SDAG-WITHOUT-MOPS-O2:       // %bb.0: // %entry1213; SDAG-WITHOUT-MOPS-O2-NEXT:    ldr x8, [x1]1214; SDAG-WITHOUT-MOPS-O2-NEXT:    ldrh w9, [x1, #8]1215; SDAG-WITHOUT-MOPS-O2-NEXT:    strh w9, [x0, #8]1216; SDAG-WITHOUT-MOPS-O2-NEXT:    str x8, [x0]1217; SDAG-WITHOUT-MOPS-O2-NEXT:    ret1218;1219; SDAG-MOPS-O2-LABEL: memcpy_inline_10_volatile:1220; SDAG-MOPS-O2:       // %bb.0: // %entry1221; SDAG-MOPS-O2-NEXT:    ldr x8, [x1]1222; SDAG-MOPS-O2-NEXT:    ldrh w9, [x1, #8]1223; SDAG-MOPS-O2-NEXT:    strh w9, [x0, #8]1224; SDAG-MOPS-O2-NEXT:    str x8, [x0]1225; SDAG-MOPS-O2-NEXT:    ret1226entry:1227  call void @llvm.memcpy.inline.p0.p0.i64(ptr align 1 %dst, ptr align 1 %src, i64 10, i1 true)1228  ret void1229}1230 1231define void @memcpy_inline_300(ptr %dst, ptr %src, i32 %value) {1232; GISel-WITHOUT-MOPS-O0-LABEL: memcpy_inline_300:1233; GISel-WITHOUT-MOPS-O0:       // %bb.0: // %entry1234; GISel-WITHOUT-MOPS-O0-NEXT:    ldr q0, [x1]1235; GISel-WITHOUT-MOPS-O0-NEXT:    str q0, [x0]1236; GISel-WITHOUT-MOPS-O0-NEXT:    ldr q0, [x1, #16]1237; GISel-WITHOUT-MOPS-O0-NEXT:    str q0, [x0, #16]1238; GISel-WITHOUT-MOPS-O0-NEXT:    ldr q0, [x1, #32]1239; GISel-WITHOUT-MOPS-O0-NEXT:    str q0, [x0, #32]1240; GISel-WITHOUT-MOPS-O0-NEXT:    ldr q0, [x1, #48]1241; GISel-WITHOUT-MOPS-O0-NEXT:    str q0, [x0, #48]1242; GISel-WITHOUT-MOPS-O0-NEXT:    ldr q0, [x1, #64]1243; GISel-WITHOUT-MOPS-O0-NEXT:    str q0, [x0, #64]1244; GISel-WITHOUT-MOPS-O0-NEXT:    ldr q0, [x1, #80]1245; GISel-WITHOUT-MOPS-O0-NEXT:    str q0, [x0, #80]1246; GISel-WITHOUT-MOPS-O0-NEXT:    ldr q0, [x1, #96]1247; GISel-WITHOUT-MOPS-O0-NEXT:    str q0, [x0, #96]1248; GISel-WITHOUT-MOPS-O0-NEXT:    ldr q0, [x1, #112]1249; GISel-WITHOUT-MOPS-O0-NEXT:    str q0, [x0, #112]1250; GISel-WITHOUT-MOPS-O0-NEXT:    ldr q0, [x1, #128]1251; GISel-WITHOUT-MOPS-O0-NEXT:    str q0, [x0, #128]1252; GISel-WITHOUT-MOPS-O0-NEXT:    ldr q0, [x1, #144]1253; GISel-WITHOUT-MOPS-O0-NEXT:    str q0, [x0, #144]1254; GISel-WITHOUT-MOPS-O0-NEXT:    ldr q0, [x1, #160]1255; GISel-WITHOUT-MOPS-O0-NEXT:    str q0, [x0, #160]1256; GISel-WITHOUT-MOPS-O0-NEXT:    ldr q0, [x1, #176]1257; GISel-WITHOUT-MOPS-O0-NEXT:    str q0, [x0, #176]1258; GISel-WITHOUT-MOPS-O0-NEXT:    ldr q0, [x1, #192]1259; GISel-WITHOUT-MOPS-O0-NEXT:    str q0, [x0, #192]1260; GISel-WITHOUT-MOPS-O0-NEXT:    ldr q0, [x1, #208]1261; GISel-WITHOUT-MOPS-O0-NEXT:    str q0, [x0, #208]1262; GISel-WITHOUT-MOPS-O0-NEXT:    ldr q0, [x1, #224]1263; GISel-WITHOUT-MOPS-O0-NEXT:    str q0, [x0, #224]1264; GISel-WITHOUT-MOPS-O0-NEXT:    ldr q0, [x1, #240]1265; GISel-WITHOUT-MOPS-O0-NEXT:    str q0, [x0, #240]1266; GISel-WITHOUT-MOPS-O0-NEXT:    ldr q0, [x1, #256]1267; GISel-WITHOUT-MOPS-O0-NEXT:    str q0, [x0, #256]1268; GISel-WITHOUT-MOPS-O0-NEXT:    ldr q0, [x1, #272]1269; GISel-WITHOUT-MOPS-O0-NEXT:    str q0, [x0, #272]1270; GISel-WITHOUT-MOPS-O0-NEXT:    add x8, x1, #2841271; GISel-WITHOUT-MOPS-O0-NEXT:    ldr q0, [x8]1272; GISel-WITHOUT-MOPS-O0-NEXT:    add x8, x0, #2841273; GISel-WITHOUT-MOPS-O0-NEXT:    str q0, [x8]1274; GISel-WITHOUT-MOPS-O0-NEXT:    ret1275;1276; GISel-WITHOUT-MOPS-O3-LABEL: memcpy_inline_300:1277; GISel-WITHOUT-MOPS-O3:       // %bb.0: // %entry1278; GISel-WITHOUT-MOPS-O3-NEXT:    ldr q0, [x1]1279; GISel-WITHOUT-MOPS-O3-NEXT:    add x8, x1, #2841280; GISel-WITHOUT-MOPS-O3-NEXT:    str q0, [x0]1281; GISel-WITHOUT-MOPS-O3-NEXT:    ldr q0, [x1, #16]1282; GISel-WITHOUT-MOPS-O3-NEXT:    str q0, [x0, #16]1283; GISel-WITHOUT-MOPS-O3-NEXT:    ldr q0, [x1, #32]1284; GISel-WITHOUT-MOPS-O3-NEXT:    str q0, [x0, #32]1285; GISel-WITHOUT-MOPS-O3-NEXT:    ldr q0, [x1, #48]1286; GISel-WITHOUT-MOPS-O3-NEXT:    str q0, [x0, #48]1287; GISel-WITHOUT-MOPS-O3-NEXT:    ldr q0, [x1, #64]1288; GISel-WITHOUT-MOPS-O3-NEXT:    str q0, [x0, #64]1289; GISel-WITHOUT-MOPS-O3-NEXT:    ldr q0, [x1, #80]1290; GISel-WITHOUT-MOPS-O3-NEXT:    str q0, [x0, #80]1291; GISel-WITHOUT-MOPS-O3-NEXT:    ldr q0, [x1, #96]1292; GISel-WITHOUT-MOPS-O3-NEXT:    str q0, [x0, #96]1293; GISel-WITHOUT-MOPS-O3-NEXT:    ldr q0, [x1, #112]1294; GISel-WITHOUT-MOPS-O3-NEXT:    str q0, [x0, #112]1295; GISel-WITHOUT-MOPS-O3-NEXT:    ldr q0, [x1, #128]1296; GISel-WITHOUT-MOPS-O3-NEXT:    str q0, [x0, #128]1297; GISel-WITHOUT-MOPS-O3-NEXT:    ldr q0, [x1, #144]1298; GISel-WITHOUT-MOPS-O3-NEXT:    str q0, [x0, #144]1299; GISel-WITHOUT-MOPS-O3-NEXT:    ldr q0, [x1, #160]1300; GISel-WITHOUT-MOPS-O3-NEXT:    str q0, [x0, #160]1301; GISel-WITHOUT-MOPS-O3-NEXT:    ldr q0, [x1, #176]1302; GISel-WITHOUT-MOPS-O3-NEXT:    str q0, [x0, #176]1303; GISel-WITHOUT-MOPS-O3-NEXT:    ldr q0, [x1, #192]1304; GISel-WITHOUT-MOPS-O3-NEXT:    str q0, [x0, #192]1305; GISel-WITHOUT-MOPS-O3-NEXT:    ldr q0, [x1, #208]1306; GISel-WITHOUT-MOPS-O3-NEXT:    str q0, [x0, #208]1307; GISel-WITHOUT-MOPS-O3-NEXT:    ldr q0, [x1, #224]1308; GISel-WITHOUT-MOPS-O3-NEXT:    str q0, [x0, #224]1309; GISel-WITHOUT-MOPS-O3-NEXT:    ldr q0, [x1, #240]1310; GISel-WITHOUT-MOPS-O3-NEXT:    str q0, [x0, #240]1311; GISel-WITHOUT-MOPS-O3-NEXT:    ldr q0, [x1, #256]1312; GISel-WITHOUT-MOPS-O3-NEXT:    str q0, [x0, #256]1313; GISel-WITHOUT-MOPS-O3-NEXT:    ldr q0, [x1, #272]1314; GISel-WITHOUT-MOPS-O3-NEXT:    str q0, [x0, #272]1315; GISel-WITHOUT-MOPS-O3-NEXT:    ldr q0, [x8]1316; GISel-WITHOUT-MOPS-O3-NEXT:    add x8, x0, #2841317; GISel-WITHOUT-MOPS-O3-NEXT:    str q0, [x8]1318; GISel-WITHOUT-MOPS-O3-NEXT:    ret1319;1320; GISel-MOPS-O0-LABEL: memcpy_inline_300:1321; GISel-MOPS-O0:       // %bb.0: // %entry1322; GISel-MOPS-O0-NEXT:    ldr q0, [x1]1323; GISel-MOPS-O0-NEXT:    str q0, [x0]1324; GISel-MOPS-O0-NEXT:    ldr q0, [x1, #16]1325; GISel-MOPS-O0-NEXT:    str q0, [x0, #16]1326; GISel-MOPS-O0-NEXT:    ldr q0, [x1, #32]1327; GISel-MOPS-O0-NEXT:    str q0, [x0, #32]1328; GISel-MOPS-O0-NEXT:    ldr q0, [x1, #48]1329; GISel-MOPS-O0-NEXT:    str q0, [x0, #48]1330; GISel-MOPS-O0-NEXT:    ldr q0, [x1, #64]1331; GISel-MOPS-O0-NEXT:    str q0, [x0, #64]1332; GISel-MOPS-O0-NEXT:    ldr q0, [x1, #80]1333; GISel-MOPS-O0-NEXT:    str q0, [x0, #80]1334; GISel-MOPS-O0-NEXT:    ldr q0, [x1, #96]1335; GISel-MOPS-O0-NEXT:    str q0, [x0, #96]1336; GISel-MOPS-O0-NEXT:    ldr q0, [x1, #112]1337; GISel-MOPS-O0-NEXT:    str q0, [x0, #112]1338; GISel-MOPS-O0-NEXT:    ldr q0, [x1, #128]1339; GISel-MOPS-O0-NEXT:    str q0, [x0, #128]1340; GISel-MOPS-O0-NEXT:    ldr q0, [x1, #144]1341; GISel-MOPS-O0-NEXT:    str q0, [x0, #144]1342; GISel-MOPS-O0-NEXT:    ldr q0, [x1, #160]1343; GISel-MOPS-O0-NEXT:    str q0, [x0, #160]1344; GISel-MOPS-O0-NEXT:    ldr q0, [x1, #176]1345; GISel-MOPS-O0-NEXT:    str q0, [x0, #176]1346; GISel-MOPS-O0-NEXT:    ldr q0, [x1, #192]1347; GISel-MOPS-O0-NEXT:    str q0, [x0, #192]1348; GISel-MOPS-O0-NEXT:    ldr q0, [x1, #208]1349; GISel-MOPS-O0-NEXT:    str q0, [x0, #208]1350; GISel-MOPS-O0-NEXT:    ldr q0, [x1, #224]1351; GISel-MOPS-O0-NEXT:    str q0, [x0, #224]1352; GISel-MOPS-O0-NEXT:    ldr q0, [x1, #240]1353; GISel-MOPS-O0-NEXT:    str q0, [x0, #240]1354; GISel-MOPS-O0-NEXT:    ldr q0, [x1, #256]1355; GISel-MOPS-O0-NEXT:    str q0, [x0, #256]1356; GISel-MOPS-O0-NEXT:    ldr q0, [x1, #272]1357; GISel-MOPS-O0-NEXT:    str q0, [x0, #272]1358; GISel-MOPS-O0-NEXT:    add x8, x1, #2841359; GISel-MOPS-O0-NEXT:    ldr q0, [x8]1360; GISel-MOPS-O0-NEXT:    add x8, x0, #2841361; GISel-MOPS-O0-NEXT:    str q0, [x8]1362; GISel-MOPS-O0-NEXT:    ret1363;1364; GISel-MOPS-O3-LABEL: memcpy_inline_300:1365; GISel-MOPS-O3:       // %bb.0: // %entry1366; GISel-MOPS-O3-NEXT:    ldr q0, [x1]1367; GISel-MOPS-O3-NEXT:    add x8, x1, #2841368; GISel-MOPS-O3-NEXT:    str q0, [x0]1369; GISel-MOPS-O3-NEXT:    ldr q0, [x1, #16]1370; GISel-MOPS-O3-NEXT:    str q0, [x0, #16]1371; GISel-MOPS-O3-NEXT:    ldr q0, [x1, #32]1372; GISel-MOPS-O3-NEXT:    str q0, [x0, #32]1373; GISel-MOPS-O3-NEXT:    ldr q0, [x1, #48]1374; GISel-MOPS-O3-NEXT:    str q0, [x0, #48]1375; GISel-MOPS-O3-NEXT:    ldr q0, [x1, #64]1376; GISel-MOPS-O3-NEXT:    str q0, [x0, #64]1377; GISel-MOPS-O3-NEXT:    ldr q0, [x1, #80]1378; GISel-MOPS-O3-NEXT:    str q0, [x0, #80]1379; GISel-MOPS-O3-NEXT:    ldr q0, [x1, #96]1380; GISel-MOPS-O3-NEXT:    str q0, [x0, #96]1381; GISel-MOPS-O3-NEXT:    ldr q0, [x1, #112]1382; GISel-MOPS-O3-NEXT:    str q0, [x0, #112]1383; GISel-MOPS-O3-NEXT:    ldr q0, [x1, #128]1384; GISel-MOPS-O3-NEXT:    str q0, [x0, #128]1385; GISel-MOPS-O3-NEXT:    ldr q0, [x1, #144]1386; GISel-MOPS-O3-NEXT:    str q0, [x0, #144]1387; GISel-MOPS-O3-NEXT:    ldr q0, [x1, #160]1388; GISel-MOPS-O3-NEXT:    str q0, [x0, #160]1389; GISel-MOPS-O3-NEXT:    ldr q0, [x1, #176]1390; GISel-MOPS-O3-NEXT:    str q0, [x0, #176]1391; GISel-MOPS-O3-NEXT:    ldr q0, [x1, #192]1392; GISel-MOPS-O3-NEXT:    str q0, [x0, #192]1393; GISel-MOPS-O3-NEXT:    ldr q0, [x1, #208]1394; GISel-MOPS-O3-NEXT:    str q0, [x0, #208]1395; GISel-MOPS-O3-NEXT:    ldr q0, [x1, #224]1396; GISel-MOPS-O3-NEXT:    str q0, [x0, #224]1397; GISel-MOPS-O3-NEXT:    ldr q0, [x1, #240]1398; GISel-MOPS-O3-NEXT:    str q0, [x0, #240]1399; GISel-MOPS-O3-NEXT:    ldr q0, [x1, #256]1400; GISel-MOPS-O3-NEXT:    str q0, [x0, #256]1401; GISel-MOPS-O3-NEXT:    ldr q0, [x1, #272]1402; GISel-MOPS-O3-NEXT:    str q0, [x0, #272]1403; GISel-MOPS-O3-NEXT:    ldr q0, [x8]1404; GISel-MOPS-O3-NEXT:    add x8, x0, #2841405; GISel-MOPS-O3-NEXT:    str q0, [x8]1406; GISel-MOPS-O3-NEXT:    ret1407;1408; SDAG-WITHOUT-MOPS-O2-LABEL: memcpy_inline_300:1409; SDAG-WITHOUT-MOPS-O2:       // %bb.0: // %entry1410; SDAG-WITHOUT-MOPS-O2-NEXT:    ldp q1, q0, [x1, #16]1411; SDAG-WITHOUT-MOPS-O2-NEXT:    add x8, x1, #2841412; SDAG-WITHOUT-MOPS-O2-NEXT:    ldr q2, [x1]1413; SDAG-WITHOUT-MOPS-O2-NEXT:    stp q1, q0, [x0, #16]1414; SDAG-WITHOUT-MOPS-O2-NEXT:    str q2, [x0]1415; SDAG-WITHOUT-MOPS-O2-NEXT:    ldp q1, q0, [x1, #80]1416; SDAG-WITHOUT-MOPS-O2-NEXT:    ldp q2, q3, [x1, #48]1417; SDAG-WITHOUT-MOPS-O2-NEXT:    stp q1, q0, [x0, #80]1418; SDAG-WITHOUT-MOPS-O2-NEXT:    stp q2, q3, [x0, #48]1419; SDAG-WITHOUT-MOPS-O2-NEXT:    ldp q1, q0, [x1, #144]1420; SDAG-WITHOUT-MOPS-O2-NEXT:    ldp q2, q3, [x1, #112]1421; SDAG-WITHOUT-MOPS-O2-NEXT:    stp q1, q0, [x0, #144]1422; SDAG-WITHOUT-MOPS-O2-NEXT:    stp q2, q3, [x0, #112]1423; SDAG-WITHOUT-MOPS-O2-NEXT:    ldp q1, q0, [x1, #208]1424; SDAG-WITHOUT-MOPS-O2-NEXT:    ldp q2, q3, [x1, #176]1425; SDAG-WITHOUT-MOPS-O2-NEXT:    stp q1, q0, [x0, #208]1426; SDAG-WITHOUT-MOPS-O2-NEXT:    stp q2, q3, [x0, #176]1427; SDAG-WITHOUT-MOPS-O2-NEXT:    ldp q3, q1, [x1, #256]1428; SDAG-WITHOUT-MOPS-O2-NEXT:    ldr q0, [x8]1429; SDAG-WITHOUT-MOPS-O2-NEXT:    ldr q2, [x1, #240]1430; SDAG-WITHOUT-MOPS-O2-NEXT:    add x8, x0, #2841431; SDAG-WITHOUT-MOPS-O2-NEXT:    str q0, [x8]1432; SDAG-WITHOUT-MOPS-O2-NEXT:    stp q3, q1, [x0, #256]1433; SDAG-WITHOUT-MOPS-O2-NEXT:    str q2, [x0, #240]1434; SDAG-WITHOUT-MOPS-O2-NEXT:    ret1435;1436; SDAG-MOPS-O2-LABEL: memcpy_inline_300:1437; SDAG-MOPS-O2:       // %bb.0: // %entry1438; SDAG-MOPS-O2-NEXT:    mov w8, #300 // =0x12c1439; SDAG-MOPS-O2-NEXT:    cpyfp [x0]!, [x1]!, x8!1440; SDAG-MOPS-O2-NEXT:    cpyfm [x0]!, [x1]!, x8!1441; SDAG-MOPS-O2-NEXT:    cpyfe [x0]!, [x1]!, x8!1442; SDAG-MOPS-O2-NEXT:    ret1443entry:1444  call void @llvm.memcpy.inline.p0.p0.i64(ptr align 1 %dst, ptr align 1 %src, i64 300, i1 false)1445  ret void1446}1447 1448define void @memcpy_inline_300_volatile(ptr %dst, ptr %src, i32 %value) {1449; GISel-WITHOUT-MOPS-LABEL: memcpy_inline_300_volatile:1450; GISel-WITHOUT-MOPS:       // %bb.0: // %entry1451; GISel-WITHOUT-MOPS-NEXT:    ldr q0, [x1]1452; GISel-WITHOUT-MOPS-NEXT:    str q0, [x0]1453; GISel-WITHOUT-MOPS-NEXT:    ldr q0, [x1, #16]1454; GISel-WITHOUT-MOPS-NEXT:    str q0, [x0, #16]1455; GISel-WITHOUT-MOPS-NEXT:    ldr q0, [x1, #32]1456; GISel-WITHOUT-MOPS-NEXT:    str q0, [x0, #32]1457; GISel-WITHOUT-MOPS-NEXT:    ldr q0, [x1, #48]1458; GISel-WITHOUT-MOPS-NEXT:    str q0, [x0, #48]1459; GISel-WITHOUT-MOPS-NEXT:    ldr q0, [x1, #64]1460; GISel-WITHOUT-MOPS-NEXT:    str q0, [x0, #64]1461; GISel-WITHOUT-MOPS-NEXT:    ldr q0, [x1, #80]1462; GISel-WITHOUT-MOPS-NEXT:    str q0, [x0, #80]1463; GISel-WITHOUT-MOPS-NEXT:    ldr q0, [x1, #96]1464; GISel-WITHOUT-MOPS-NEXT:    str q0, [x0, #96]1465; GISel-WITHOUT-MOPS-NEXT:    ldr q0, [x1, #112]1466; GISel-WITHOUT-MOPS-NEXT:    str q0, [x0, #112]1467; GISel-WITHOUT-MOPS-NEXT:    ldr q0, [x1, #128]1468; GISel-WITHOUT-MOPS-NEXT:    str q0, [x0, #128]1469; GISel-WITHOUT-MOPS-NEXT:    ldr q0, [x1, #144]1470; GISel-WITHOUT-MOPS-NEXT:    str q0, [x0, #144]1471; GISel-WITHOUT-MOPS-NEXT:    ldr q0, [x1, #160]1472; GISel-WITHOUT-MOPS-NEXT:    str q0, [x0, #160]1473; GISel-WITHOUT-MOPS-NEXT:    ldr q0, [x1, #176]1474; GISel-WITHOUT-MOPS-NEXT:    str q0, [x0, #176]1475; GISel-WITHOUT-MOPS-NEXT:    ldr q0, [x1, #192]1476; GISel-WITHOUT-MOPS-NEXT:    str q0, [x0, #192]1477; GISel-WITHOUT-MOPS-NEXT:    ldr q0, [x1, #208]1478; GISel-WITHOUT-MOPS-NEXT:    str q0, [x0, #208]1479; GISel-WITHOUT-MOPS-NEXT:    ldr q0, [x1, #224]1480; GISel-WITHOUT-MOPS-NEXT:    str q0, [x0, #224]1481; GISel-WITHOUT-MOPS-NEXT:    ldr q0, [x1, #240]1482; GISel-WITHOUT-MOPS-NEXT:    str q0, [x0, #240]1483; GISel-WITHOUT-MOPS-NEXT:    ldr q0, [x1, #256]1484; GISel-WITHOUT-MOPS-NEXT:    str q0, [x0, #256]1485; GISel-WITHOUT-MOPS-NEXT:    ldr q0, [x1, #272]1486; GISel-WITHOUT-MOPS-NEXT:    str q0, [x0, #272]1487; GISel-WITHOUT-MOPS-NEXT:    ldr x8, [x1, #288]1488; GISel-WITHOUT-MOPS-NEXT:    str x8, [x0, #288]1489; GISel-WITHOUT-MOPS-NEXT:    ldr w8, [x1, #296]1490; GISel-WITHOUT-MOPS-NEXT:    str w8, [x0, #296]1491; GISel-WITHOUT-MOPS-NEXT:    ret1492;1493; GISel-MOPS-LABEL: memcpy_inline_300_volatile:1494; GISel-MOPS:       // %bb.0: // %entry1495; GISel-MOPS-NEXT:    ldr q0, [x1]1496; GISel-MOPS-NEXT:    str q0, [x0]1497; GISel-MOPS-NEXT:    ldr q0, [x1, #16]1498; GISel-MOPS-NEXT:    str q0, [x0, #16]1499; GISel-MOPS-NEXT:    ldr q0, [x1, #32]1500; GISel-MOPS-NEXT:    str q0, [x0, #32]1501; GISel-MOPS-NEXT:    ldr q0, [x1, #48]1502; GISel-MOPS-NEXT:    str q0, [x0, #48]1503; GISel-MOPS-NEXT:    ldr q0, [x1, #64]1504; GISel-MOPS-NEXT:    str q0, [x0, #64]1505; GISel-MOPS-NEXT:    ldr q0, [x1, #80]1506; GISel-MOPS-NEXT:    str q0, [x0, #80]1507; GISel-MOPS-NEXT:    ldr q0, [x1, #96]1508; GISel-MOPS-NEXT:    str q0, [x0, #96]1509; GISel-MOPS-NEXT:    ldr q0, [x1, #112]1510; GISel-MOPS-NEXT:    str q0, [x0, #112]1511; GISel-MOPS-NEXT:    ldr q0, [x1, #128]1512; GISel-MOPS-NEXT:    str q0, [x0, #128]1513; GISel-MOPS-NEXT:    ldr q0, [x1, #144]1514; GISel-MOPS-NEXT:    str q0, [x0, #144]1515; GISel-MOPS-NEXT:    ldr q0, [x1, #160]1516; GISel-MOPS-NEXT:    str q0, [x0, #160]1517; GISel-MOPS-NEXT:    ldr q0, [x1, #176]1518; GISel-MOPS-NEXT:    str q0, [x0, #176]1519; GISel-MOPS-NEXT:    ldr q0, [x1, #192]1520; GISel-MOPS-NEXT:    str q0, [x0, #192]1521; GISel-MOPS-NEXT:    ldr q0, [x1, #208]1522; GISel-MOPS-NEXT:    str q0, [x0, #208]1523; GISel-MOPS-NEXT:    ldr q0, [x1, #224]1524; GISel-MOPS-NEXT:    str q0, [x0, #224]1525; GISel-MOPS-NEXT:    ldr q0, [x1, #240]1526; GISel-MOPS-NEXT:    str q0, [x0, #240]1527; GISel-MOPS-NEXT:    ldr q0, [x1, #256]1528; GISel-MOPS-NEXT:    str q0, [x0, #256]1529; GISel-MOPS-NEXT:    ldr q0, [x1, #272]1530; GISel-MOPS-NEXT:    str q0, [x0, #272]1531; GISel-MOPS-NEXT:    ldr x8, [x1, #288]1532; GISel-MOPS-NEXT:    str x8, [x0, #288]1533; GISel-MOPS-NEXT:    ldr w8, [x1, #296]1534; GISel-MOPS-NEXT:    str w8, [x0, #296]1535; GISel-MOPS-NEXT:    ret1536;1537; SDAG-WITHOUT-MOPS-O2-LABEL: memcpy_inline_300_volatile:1538; SDAG-WITHOUT-MOPS-O2:       // %bb.0: // %entry1539; SDAG-WITHOUT-MOPS-O2-NEXT:    ldr q0, [x1]1540; SDAG-WITHOUT-MOPS-O2-NEXT:    ldr q1, [x1, #16]1541; SDAG-WITHOUT-MOPS-O2-NEXT:    ldr q2, [x1, #32]1542; SDAG-WITHOUT-MOPS-O2-NEXT:    ldr q3, [x1, #48]1543; SDAG-WITHOUT-MOPS-O2-NEXT:    str q3, [x0, #48]1544; SDAG-WITHOUT-MOPS-O2-NEXT:    str q2, [x0, #32]1545; SDAG-WITHOUT-MOPS-O2-NEXT:    str q1, [x0, #16]1546; SDAG-WITHOUT-MOPS-O2-NEXT:    str q0, [x0]1547; SDAG-WITHOUT-MOPS-O2-NEXT:    ldr q0, [x1, #64]1548; SDAG-WITHOUT-MOPS-O2-NEXT:    ldr q1, [x1, #80]1549; SDAG-WITHOUT-MOPS-O2-NEXT:    ldr q2, [x1, #96]1550; SDAG-WITHOUT-MOPS-O2-NEXT:    ldr q3, [x1, #112]1551; SDAG-WITHOUT-MOPS-O2-NEXT:    str q3, [x0, #112]1552; SDAG-WITHOUT-MOPS-O2-NEXT:    str q2, [x0, #96]1553; SDAG-WITHOUT-MOPS-O2-NEXT:    str q1, [x0, #80]1554; SDAG-WITHOUT-MOPS-O2-NEXT:    str q0, [x0, #64]1555; SDAG-WITHOUT-MOPS-O2-NEXT:    ldr q0, [x1, #128]1556; SDAG-WITHOUT-MOPS-O2-NEXT:    ldr q1, [x1, #144]1557; SDAG-WITHOUT-MOPS-O2-NEXT:    ldr q2, [x1, #160]1558; SDAG-WITHOUT-MOPS-O2-NEXT:    ldr q3, [x1, #176]1559; SDAG-WITHOUT-MOPS-O2-NEXT:    str q3, [x0, #176]1560; SDAG-WITHOUT-MOPS-O2-NEXT:    str q2, [x0, #160]1561; SDAG-WITHOUT-MOPS-O2-NEXT:    str q1, [x0, #144]1562; SDAG-WITHOUT-MOPS-O2-NEXT:    str q0, [x0, #128]1563; SDAG-WITHOUT-MOPS-O2-NEXT:    ldr q0, [x1, #192]1564; SDAG-WITHOUT-MOPS-O2-NEXT:    ldr q1, [x1, #208]1565; SDAG-WITHOUT-MOPS-O2-NEXT:    ldr q2, [x1, #224]1566; SDAG-WITHOUT-MOPS-O2-NEXT:    ldr q3, [x1, #240]1567; SDAG-WITHOUT-MOPS-O2-NEXT:    str q3, [x0, #240]1568; SDAG-WITHOUT-MOPS-O2-NEXT:    str q2, [x0, #224]1569; SDAG-WITHOUT-MOPS-O2-NEXT:    str q1, [x0, #208]1570; SDAG-WITHOUT-MOPS-O2-NEXT:    str q0, [x0, #192]1571; SDAG-WITHOUT-MOPS-O2-NEXT:    ldr q0, [x1, #256]1572; SDAG-WITHOUT-MOPS-O2-NEXT:    ldr q1, [x1, #272]1573; SDAG-WITHOUT-MOPS-O2-NEXT:    ldr x8, [x1, #288]1574; SDAG-WITHOUT-MOPS-O2-NEXT:    ldr w9, [x1, #296]1575; SDAG-WITHOUT-MOPS-O2-NEXT:    str w9, [x0, #296]1576; SDAG-WITHOUT-MOPS-O2-NEXT:    str x8, [x0, #288]1577; SDAG-WITHOUT-MOPS-O2-NEXT:    str q1, [x0, #272]1578; SDAG-WITHOUT-MOPS-O2-NEXT:    str q0, [x0, #256]1579; SDAG-WITHOUT-MOPS-O2-NEXT:    ret1580;1581; SDAG-MOPS-O2-LABEL: memcpy_inline_300_volatile:1582; SDAG-MOPS-O2:       // %bb.0: // %entry1583; SDAG-MOPS-O2-NEXT:    mov w8, #300 // =0x12c1584; SDAG-MOPS-O2-NEXT:    cpyfp [x0]!, [x1]!, x8!1585; SDAG-MOPS-O2-NEXT:    cpyfm [x0]!, [x1]!, x8!1586; SDAG-MOPS-O2-NEXT:    cpyfe [x0]!, [x1]!, x8!1587; SDAG-MOPS-O2-NEXT:    ret1588entry:1589  call void @llvm.memcpy.inline.p0.p0.i64(ptr align 1 %dst, ptr align 1 %src, i64 300, i1 true)1590  ret void1591}1592 1593define void @memmove_0(ptr %dst, ptr %src, i32 %value) {1594; GISel-WITHOUT-MOPS-LABEL: memmove_0:1595; GISel-WITHOUT-MOPS:       // %bb.0: // %entry1596; GISel-WITHOUT-MOPS-NEXT:    ret1597;1598; GISel-MOPS-LABEL: memmove_0:1599; GISel-MOPS:       // %bb.0: // %entry1600; GISel-MOPS-NEXT:    ret1601;1602; SDAG-WITHOUT-MOPS-O2-LABEL: memmove_0:1603; SDAG-WITHOUT-MOPS-O2:       // %bb.0: // %entry1604; SDAG-WITHOUT-MOPS-O2-NEXT:    ret1605;1606; SDAG-MOPS-O2-LABEL: memmove_0:1607; SDAG-MOPS-O2:       // %bb.0: // %entry1608; SDAG-MOPS-O2-NEXT:    ret1609entry:1610  call void @llvm.memmove.p0.p0.i64(ptr align 1 %dst, ptr align 1 %src, i64 0, i1 false)1611  ret void1612}1613 1614define void @memmove_0_volatile(ptr %dst, ptr %src, i32 %value) {1615; GISel-WITHOUT-MOPS-LABEL: memmove_0_volatile:1616; GISel-WITHOUT-MOPS:       // %bb.0: // %entry1617; GISel-WITHOUT-MOPS-NEXT:    ret1618;1619; GISel-MOPS-LABEL: memmove_0_volatile:1620; GISel-MOPS:       // %bb.0: // %entry1621; GISel-MOPS-NEXT:    ret1622;1623; SDAG-WITHOUT-MOPS-O2-LABEL: memmove_0_volatile:1624; SDAG-WITHOUT-MOPS-O2:       // %bb.0: // %entry1625; SDAG-WITHOUT-MOPS-O2-NEXT:    ret1626;1627; SDAG-MOPS-O2-LABEL: memmove_0_volatile:1628; SDAG-MOPS-O2:       // %bb.0: // %entry1629; SDAG-MOPS-O2-NEXT:    ret1630entry:1631  call void @llvm.memmove.p0.p0.i64(ptr align 1 %dst, ptr align 1 %src, i64 0, i1 true)1632  ret void1633}1634 1635define void @memmove_10(ptr %dst, ptr %src, i32 %value) {1636; GISel-WITHOUT-MOPS-O0-LABEL: memmove_10:1637; GISel-WITHOUT-MOPS-O0:       // %bb.0: // %entry1638; GISel-WITHOUT-MOPS-O0-NEXT:    ldr x9, [x1]1639; GISel-WITHOUT-MOPS-O0-NEXT:    ldrh w8, [x1, #8]1640; GISel-WITHOUT-MOPS-O0-NEXT:    str x9, [x0]1641; GISel-WITHOUT-MOPS-O0-NEXT:    strh w8, [x0, #8]1642; GISel-WITHOUT-MOPS-O0-NEXT:    ret1643;1644; GISel-WITHOUT-MOPS-O3-LABEL: memmove_10:1645; GISel-WITHOUT-MOPS-O3:       // %bb.0: // %entry1646; GISel-WITHOUT-MOPS-O3-NEXT:    ldr x8, [x1]1647; GISel-WITHOUT-MOPS-O3-NEXT:    ldrh w9, [x1, #8]1648; GISel-WITHOUT-MOPS-O3-NEXT:    str x8, [x0]1649; GISel-WITHOUT-MOPS-O3-NEXT:    strh w9, [x0, #8]1650; GISel-WITHOUT-MOPS-O3-NEXT:    ret1651;1652; GISel-MOPS-O0-LABEL: memmove_10:1653; GISel-MOPS-O0:       // %bb.0: // %entry1654; GISel-MOPS-O0-NEXT:    ldr x9, [x1]1655; GISel-MOPS-O0-NEXT:    ldrh w8, [x1, #8]1656; GISel-MOPS-O0-NEXT:    str x9, [x0]1657; GISel-MOPS-O0-NEXT:    strh w8, [x0, #8]1658; GISel-MOPS-O0-NEXT:    ret1659;1660; GISel-MOPS-O3-LABEL: memmove_10:1661; GISel-MOPS-O3:       // %bb.0: // %entry1662; GISel-MOPS-O3-NEXT:    ldr x8, [x1]1663; GISel-MOPS-O3-NEXT:    ldrh w9, [x1, #8]1664; GISel-MOPS-O3-NEXT:    str x8, [x0]1665; GISel-MOPS-O3-NEXT:    strh w9, [x0, #8]1666; GISel-MOPS-O3-NEXT:    ret1667;1668; SDAG-WITHOUT-MOPS-O2-LABEL: memmove_10:1669; SDAG-WITHOUT-MOPS-O2:       // %bb.0: // %entry1670; SDAG-WITHOUT-MOPS-O2-NEXT:    ldrh w8, [x1, #8]1671; SDAG-WITHOUT-MOPS-O2-NEXT:    ldr x9, [x1]1672; SDAG-WITHOUT-MOPS-O2-NEXT:    strh w8, [x0, #8]1673; SDAG-WITHOUT-MOPS-O2-NEXT:    str x9, [x0]1674; SDAG-WITHOUT-MOPS-O2-NEXT:    ret1675;1676; SDAG-MOPS-O2-LABEL: memmove_10:1677; SDAG-MOPS-O2:       // %bb.0: // %entry1678; SDAG-MOPS-O2-NEXT:    ldrh w8, [x1, #8]1679; SDAG-MOPS-O2-NEXT:    ldr x9, [x1]1680; SDAG-MOPS-O2-NEXT:    strh w8, [x0, #8]1681; SDAG-MOPS-O2-NEXT:    str x9, [x0]1682; SDAG-MOPS-O2-NEXT:    ret1683entry:1684  call void @llvm.memmove.p0.p0.i64(ptr align 1 %dst, ptr align 1 %src, i64 10, i1 false)1685  ret void1686}1687 1688define void @memmove_10_volatile(ptr %dst, ptr %src, i32 %value) {1689; GISel-WITHOUT-MOPS-O0-LABEL: memmove_10_volatile:1690; GISel-WITHOUT-MOPS-O0:       // %bb.0: // %entry1691; 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]1695; GISel-WITHOUT-MOPS-O0-NEXT:    ret1696;1697; GISel-WITHOUT-MOPS-O3-LABEL: memmove_10_volatile:1698; GISel-WITHOUT-MOPS-O3:       // %bb.0: // %entry1699; 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]1703; GISel-WITHOUT-MOPS-O3-NEXT:    ret1704;1705; GISel-MOPS-O0-LABEL: memmove_10_volatile:1706; GISel-MOPS-O0:       // %bb.0: // %entry1707; 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]1711; GISel-MOPS-O0-NEXT:    ret1712;1713; GISel-MOPS-O3-LABEL: memmove_10_volatile:1714; GISel-MOPS-O3:       // %bb.0: // %entry1715; 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]1719; GISel-MOPS-O3-NEXT:    ret1720;1721; SDAG-WITHOUT-MOPS-O2-LABEL: memmove_10_volatile:1722; SDAG-WITHOUT-MOPS-O2:       // %bb.0: // %entry1723; SDAG-WITHOUT-MOPS-O2-NEXT:    ldr x8, [x1]1724; SDAG-WITHOUT-MOPS-O2-NEXT:    ldrh w9, [x1, #8]1725; SDAG-WITHOUT-MOPS-O2-NEXT:    strh w9, [x0, #8]1726; SDAG-WITHOUT-MOPS-O2-NEXT:    str x8, [x0]1727; SDAG-WITHOUT-MOPS-O2-NEXT:    ret1728;1729; SDAG-MOPS-O2-LABEL: memmove_10_volatile:1730; SDAG-MOPS-O2:       // %bb.0: // %entry1731; SDAG-MOPS-O2-NEXT:    ldr x8, [x1]1732; SDAG-MOPS-O2-NEXT:    ldrh w9, [x1, #8]1733; SDAG-MOPS-O2-NEXT:    strh w9, [x0, #8]1734; SDAG-MOPS-O2-NEXT:    str x8, [x0]1735; SDAG-MOPS-O2-NEXT:    ret1736entry:1737  call void @llvm.memmove.p0.p0.i64(ptr align 1 %dst, ptr align 1 %src, i64 10, i1 true)1738  ret void1739}1740 1741define void @memmove_1000(ptr %dst, ptr %src, i32 %value) {1742; GISel-WITHOUT-MOPS-O0-LABEL: memmove_1000:1743; GISel-WITHOUT-MOPS-O0:       // %bb.0: // %entry1744; GISel-WITHOUT-MOPS-O0-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill1745; GISel-WITHOUT-MOPS-O0-NEXT:    .cfi_def_cfa_offset 161746; GISel-WITHOUT-MOPS-O0-NEXT:    .cfi_offset w30, -161747; GISel-WITHOUT-MOPS-O0-NEXT:    mov w8, #1000 // =0x3e81748; GISel-WITHOUT-MOPS-O0-NEXT:    mov w2, w81749; GISel-WITHOUT-MOPS-O0-NEXT:    bl memmove1750; GISel-WITHOUT-MOPS-O0-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload1751; GISel-WITHOUT-MOPS-O0-NEXT:    ret1752;1753; GISel-WITHOUT-MOPS-O3-LABEL: memmove_1000:1754; GISel-WITHOUT-MOPS-O3:       // %bb.0: // %entry1755; GISel-WITHOUT-MOPS-O3-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill1756; GISel-WITHOUT-MOPS-O3-NEXT:    .cfi_def_cfa_offset 161757; GISel-WITHOUT-MOPS-O3-NEXT:    .cfi_offset w30, -161758; GISel-WITHOUT-MOPS-O3-NEXT:    mov w2, #1000 // =0x3e81759; GISel-WITHOUT-MOPS-O3-NEXT:    bl memmove1760; GISel-WITHOUT-MOPS-O3-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload1761; GISel-WITHOUT-MOPS-O3-NEXT:    ret1762;1763; GISel-MOPS-O0-LABEL: memmove_1000:1764; GISel-MOPS-O0:       // %bb.0: // %entry1765; GISel-MOPS-O0-NEXT:    mov w8, #1000 // =0x3e81766; GISel-MOPS-O0-NEXT:    // kill: def $x8 killed $w81767; GISel-MOPS-O0-NEXT:    cpyp [x0]!, [x1]!, x8!1768; GISel-MOPS-O0-NEXT:    cpym [x0]!, [x1]!, x8!1769; GISel-MOPS-O0-NEXT:    cpye [x0]!, [x1]!, x8!1770; GISel-MOPS-O0-NEXT:    ret1771;1772; GISel-MOPS-O3-LABEL: memmove_1000:1773; GISel-MOPS-O3:       // %bb.0: // %entry1774; GISel-MOPS-O3-NEXT:    mov w8, #1000 // =0x3e81775; GISel-MOPS-O3-NEXT:    cpyp [x0]!, [x1]!, x8!1776; GISel-MOPS-O3-NEXT:    cpym [x0]!, [x1]!, x8!1777; GISel-MOPS-O3-NEXT:    cpye [x0]!, [x1]!, x8!1778; GISel-MOPS-O3-NEXT:    ret1779;1780; SDAG-WITHOUT-MOPS-O2-LABEL: memmove_1000:1781; SDAG-WITHOUT-MOPS-O2:       // %bb.0: // %entry1782; SDAG-WITHOUT-MOPS-O2-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill1783; SDAG-WITHOUT-MOPS-O2-NEXT:    .cfi_def_cfa_offset 161784; SDAG-WITHOUT-MOPS-O2-NEXT:    .cfi_offset w30, -161785; SDAG-WITHOUT-MOPS-O2-NEXT:    mov w2, #1000 // =0x3e81786; SDAG-WITHOUT-MOPS-O2-NEXT:    bl memmove1787; SDAG-WITHOUT-MOPS-O2-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload1788; SDAG-WITHOUT-MOPS-O2-NEXT:    ret1789;1790; SDAG-MOPS-O2-LABEL: memmove_1000:1791; SDAG-MOPS-O2:       // %bb.0: // %entry1792; SDAG-MOPS-O2-NEXT:    mov w8, #1000 // =0x3e81793; SDAG-MOPS-O2-NEXT:    cpyp [x0]!, [x1]!, x8!1794; SDAG-MOPS-O2-NEXT:    cpym [x0]!, [x1]!, x8!1795; SDAG-MOPS-O2-NEXT:    cpye [x0]!, [x1]!, x8!1796; SDAG-MOPS-O2-NEXT:    ret1797entry:1798  call void @llvm.memmove.p0.p0.i64(ptr align 1 %dst, ptr align 1 %src, i64 1000, i1 false)1799  ret void1800}1801 1802define void @memmove_1000_volatile(ptr %dst, ptr %src, i32 %value) {1803; GISel-WITHOUT-MOPS-O0-LABEL: memmove_1000_volatile:1804; GISel-WITHOUT-MOPS-O0:       // %bb.0: // %entry1805; GISel-WITHOUT-MOPS-O0-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill1806; GISel-WITHOUT-MOPS-O0-NEXT:    .cfi_def_cfa_offset 161807; GISel-WITHOUT-MOPS-O0-NEXT:    .cfi_offset w30, -161808; GISel-WITHOUT-MOPS-O0-NEXT:    mov w8, #1000 // =0x3e81809; GISel-WITHOUT-MOPS-O0-NEXT:    mov w2, w81810; GISel-WITHOUT-MOPS-O0-NEXT:    bl memmove1811; GISel-WITHOUT-MOPS-O0-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload1812; GISel-WITHOUT-MOPS-O0-NEXT:    ret1813;1814; GISel-WITHOUT-MOPS-O3-LABEL: memmove_1000_volatile:1815; GISel-WITHOUT-MOPS-O3:       // %bb.0: // %entry1816; GISel-WITHOUT-MOPS-O3-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill1817; GISel-WITHOUT-MOPS-O3-NEXT:    .cfi_def_cfa_offset 161818; GISel-WITHOUT-MOPS-O3-NEXT:    .cfi_offset w30, -161819; GISel-WITHOUT-MOPS-O3-NEXT:    mov w2, #1000 // =0x3e81820; GISel-WITHOUT-MOPS-O3-NEXT:    bl memmove1821; GISel-WITHOUT-MOPS-O3-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload1822; GISel-WITHOUT-MOPS-O3-NEXT:    ret1823;1824; GISel-MOPS-O0-LABEL: memmove_1000_volatile:1825; GISel-MOPS-O0:       // %bb.0: // %entry1826; GISel-MOPS-O0-NEXT:    mov w8, #1000 // =0x3e81827; GISel-MOPS-O0-NEXT:    // kill: def $x8 killed $w81828; GISel-MOPS-O0-NEXT:    cpyp [x0]!, [x1]!, x8!1829; GISel-MOPS-O0-NEXT:    cpym [x0]!, [x1]!, x8!1830; GISel-MOPS-O0-NEXT:    cpye [x0]!, [x1]!, x8!1831; GISel-MOPS-O0-NEXT:    ret1832;1833; GISel-MOPS-O3-LABEL: memmove_1000_volatile:1834; GISel-MOPS-O3:       // %bb.0: // %entry1835; GISel-MOPS-O3-NEXT:    mov w8, #1000 // =0x3e81836; GISel-MOPS-O3-NEXT:    cpyp [x0]!, [x1]!, x8!1837; GISel-MOPS-O3-NEXT:    cpym [x0]!, [x1]!, x8!1838; GISel-MOPS-O3-NEXT:    cpye [x0]!, [x1]!, x8!1839; GISel-MOPS-O3-NEXT:    ret1840;1841; SDAG-WITHOUT-MOPS-O2-LABEL: memmove_1000_volatile:1842; SDAG-WITHOUT-MOPS-O2:       // %bb.0: // %entry1843; SDAG-WITHOUT-MOPS-O2-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill1844; SDAG-WITHOUT-MOPS-O2-NEXT:    .cfi_def_cfa_offset 161845; SDAG-WITHOUT-MOPS-O2-NEXT:    .cfi_offset w30, -161846; SDAG-WITHOUT-MOPS-O2-NEXT:    mov w2, #1000 // =0x3e81847; SDAG-WITHOUT-MOPS-O2-NEXT:    bl memmove1848; SDAG-WITHOUT-MOPS-O2-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload1849; SDAG-WITHOUT-MOPS-O2-NEXT:    ret1850;1851; SDAG-MOPS-O2-LABEL: memmove_1000_volatile:1852; SDAG-MOPS-O2:       // %bb.0: // %entry1853; SDAG-MOPS-O2-NEXT:    mov w8, #1000 // =0x3e81854; SDAG-MOPS-O2-NEXT:    cpyp [x0]!, [x1]!, x8!1855; SDAG-MOPS-O2-NEXT:    cpym [x0]!, [x1]!, x8!1856; SDAG-MOPS-O2-NEXT:    cpye [x0]!, [x1]!, x8!1857; SDAG-MOPS-O2-NEXT:    ret1858entry:1859  call void @llvm.memmove.p0.p0.i64(ptr align 1 %dst, ptr align 1 %src, i64 1000, i1 true)1860  ret void1861}1862 1863define void @memmove_n(ptr %dst, ptr %src, i64 %size, i32 %value) {1864; GISel-WITHOUT-MOPS-LABEL: memmove_n:1865; GISel-WITHOUT-MOPS:       // %bb.0: // %entry1866; GISel-WITHOUT-MOPS-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill1867; GISel-WITHOUT-MOPS-NEXT:    .cfi_def_cfa_offset 161868; GISel-WITHOUT-MOPS-NEXT:    .cfi_offset w30, -161869; GISel-WITHOUT-MOPS-NEXT:    bl memmove1870; GISel-WITHOUT-MOPS-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload1871; GISel-WITHOUT-MOPS-NEXT:    ret1872;1873; GISel-MOPS-LABEL: memmove_n:1874; GISel-MOPS:       // %bb.0: // %entry1875; GISel-MOPS-NEXT:    cpyp [x0]!, [x1]!, x2!1876; GISel-MOPS-NEXT:    cpym [x0]!, [x1]!, x2!1877; GISel-MOPS-NEXT:    cpye [x0]!, [x1]!, x2!1878; GISel-MOPS-NEXT:    ret1879;1880; SDAG-WITHOUT-MOPS-O2-LABEL: memmove_n:1881; SDAG-WITHOUT-MOPS-O2:       // %bb.0: // %entry1882; SDAG-WITHOUT-MOPS-O2-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill1883; SDAG-WITHOUT-MOPS-O2-NEXT:    .cfi_def_cfa_offset 161884; SDAG-WITHOUT-MOPS-O2-NEXT:    .cfi_offset w30, -161885; SDAG-WITHOUT-MOPS-O2-NEXT:    bl memmove1886; SDAG-WITHOUT-MOPS-O2-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload1887; SDAG-WITHOUT-MOPS-O2-NEXT:    ret1888;1889; SDAG-MOPS-O2-LABEL: memmove_n:1890; SDAG-MOPS-O2:       // %bb.0: // %entry1891; SDAG-MOPS-O2-NEXT:    cpyp [x0]!, [x1]!, x2!1892; SDAG-MOPS-O2-NEXT:    cpym [x0]!, [x1]!, x2!1893; SDAG-MOPS-O2-NEXT:    cpye [x0]!, [x1]!, x2!1894; SDAG-MOPS-O2-NEXT:    ret1895entry:1896  call void @llvm.memmove.p0.p0.i64(ptr align 1 %dst, ptr align 1 %src, i64 %size, i1 false)1897  ret void1898}1899 1900define void @memmove_n_volatile(ptr %dst, ptr %src, i64 %size, i32 %value) {1901; GISel-WITHOUT-MOPS-LABEL: memmove_n_volatile:1902; GISel-WITHOUT-MOPS:       // %bb.0: // %entry1903; GISel-WITHOUT-MOPS-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill1904; GISel-WITHOUT-MOPS-NEXT:    .cfi_def_cfa_offset 161905; GISel-WITHOUT-MOPS-NEXT:    .cfi_offset w30, -161906; GISel-WITHOUT-MOPS-NEXT:    bl memmove1907; GISel-WITHOUT-MOPS-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload1908; GISel-WITHOUT-MOPS-NEXT:    ret1909;1910; GISel-MOPS-LABEL: memmove_n_volatile:1911; GISel-MOPS:       // %bb.0: // %entry1912; GISel-MOPS-NEXT:    cpyp [x0]!, [x1]!, x2!1913; GISel-MOPS-NEXT:    cpym [x0]!, [x1]!, x2!1914; GISel-MOPS-NEXT:    cpye [x0]!, [x1]!, x2!1915; GISel-MOPS-NEXT:    ret1916;1917; SDAG-WITHOUT-MOPS-O2-LABEL: memmove_n_volatile:1918; SDAG-WITHOUT-MOPS-O2:       // %bb.0: // %entry1919; SDAG-WITHOUT-MOPS-O2-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill1920; SDAG-WITHOUT-MOPS-O2-NEXT:    .cfi_def_cfa_offset 161921; SDAG-WITHOUT-MOPS-O2-NEXT:    .cfi_offset w30, -161922; SDAG-WITHOUT-MOPS-O2-NEXT:    bl memmove1923; SDAG-WITHOUT-MOPS-O2-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload1924; SDAG-WITHOUT-MOPS-O2-NEXT:    ret1925;1926; SDAG-MOPS-O2-LABEL: memmove_n_volatile:1927; SDAG-MOPS-O2:       // %bb.0: // %entry1928; SDAG-MOPS-O2-NEXT:    cpyp [x0]!, [x1]!, x2!1929; SDAG-MOPS-O2-NEXT:    cpym [x0]!, [x1]!, x2!1930; SDAG-MOPS-O2-NEXT:    cpye [x0]!, [x1]!, x2!1931; SDAG-MOPS-O2-NEXT:    ret1932entry:1933  call void @llvm.memmove.p0.p0.i64(ptr align 1 %dst, ptr align 1 %src, i64 %size, i1 true)1934  ret void1935}1936