brintos

brintos / llvm-project-archived public Read only

0
0
Text · 245.8 KiB · 01b7f40 Raw
5012 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52 3; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1030 %s -o - | FileCheck %s4 5; Testing codegen for memmove with vector operands for all combinations of the following parameters:6;     destination address space: 0, 1, 3, 57;     source address space: 0, 1, 3, 4, 58;     alignment: 1, 2, 8, 169;     sizes: 16, 31, 3210 11 12define void @memmove_p0_p0_sz16_align_1_1(ptr addrspace(0) align 1 %dst, ptr addrspace(0) align 1 readonly %src) {13; CHECK-LABEL: memmove_p0_p0_sz16_align_1_1:14; CHECK:       ; %bb.0: ; %entry15; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)16; CHECK-NEXT:    flat_load_dwordx4 v[2:5], v[2:3]17; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)18; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[2:5]19; CHECK-NEXT:    s_waitcnt lgkmcnt(0)20; CHECK-NEXT:    s_setpc_b64 s[30:31]21entry:22  tail call void @llvm.memmove.p0.p0.i64(ptr addrspace(0) noundef nonnull align 1 %dst, ptr addrspace(0) noundef nonnull align 1 %src, i64 16, i1 false)23  ret void24}25 26define void @memmove_p0_p0_sz31_align_1_1(ptr addrspace(0) align 1 %dst, ptr addrspace(0) align 1 readonly %src) {27; CHECK-LABEL: memmove_p0_p0_sz31_align_1_1:28; CHECK:       ; %bb.0: ; %entry29; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)30; CHECK-NEXT:    s_clause 0x331; CHECK-NEXT:    flat_load_ubyte v9, v[2:3] offset:3032; CHECK-NEXT:    flat_load_ushort v10, v[2:3] offset:2833; CHECK-NEXT:    flat_load_dwordx3 v[6:8], v[2:3] offset:1634; CHECK-NEXT:    flat_load_dwordx4 v[2:5], v[2:3]35; CHECK-NEXT:    s_waitcnt vmcnt(3) lgkmcnt(3)36; CHECK-NEXT:    flat_store_byte v[0:1], v9 offset:3037; CHECK-NEXT:    s_waitcnt vmcnt(2) lgkmcnt(3)38; CHECK-NEXT:    flat_store_short v[0:1], v10 offset:2839; CHECK-NEXT:    s_waitcnt vmcnt(1) lgkmcnt(3)40; CHECK-NEXT:    flat_store_dwordx3 v[0:1], v[6:8] offset:1641; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(3)42; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[2:5]43; CHECK-NEXT:    s_waitcnt lgkmcnt(0)44; CHECK-NEXT:    s_setpc_b64 s[30:31]45entry:46  tail call void @llvm.memmove.p0.p0.i64(ptr addrspace(0) noundef nonnull align 1 %dst, ptr addrspace(0) noundef nonnull align 1 %src, i64 31, i1 false)47  ret void48}49 50define void @memmove_p0_p0_sz32_align_1_1(ptr addrspace(0) align 1 %dst, ptr addrspace(0) align 1 readonly %src) {51; CHECK-LABEL: memmove_p0_p0_sz32_align_1_1:52; CHECK:       ; %bb.0: ; %entry53; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)54; CHECK-NEXT:    s_clause 0x155; CHECK-NEXT:    flat_load_dwordx4 v[4:7], v[2:3] offset:1656; CHECK-NEXT:    flat_load_dwordx4 v[8:11], v[2:3]57; CHECK-NEXT:    s_waitcnt vmcnt(1) lgkmcnt(1)58; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[4:7] offset:1659; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(1)60; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[8:11]61; CHECK-NEXT:    s_waitcnt lgkmcnt(0)62; CHECK-NEXT:    s_setpc_b64 s[30:31]63entry:64  tail call void @llvm.memmove.p0.p0.i64(ptr addrspace(0) noundef nonnull align 1 %dst, ptr addrspace(0) noundef nonnull align 1 %src, i64 32, i1 false)65  ret void66}67 68define void @memmove_p0_p0_sz16_align_2_2(ptr addrspace(0) align 2 %dst, ptr addrspace(0) align 2 readonly %src) {69; CHECK-LABEL: memmove_p0_p0_sz16_align_2_2:70; CHECK:       ; %bb.0: ; %entry71; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)72; CHECK-NEXT:    flat_load_dwordx4 v[2:5], v[2:3]73; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)74; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[2:5]75; CHECK-NEXT:    s_waitcnt lgkmcnt(0)76; CHECK-NEXT:    s_setpc_b64 s[30:31]77entry:78  tail call void @llvm.memmove.p0.p0.i64(ptr addrspace(0) noundef nonnull align 2 %dst, ptr addrspace(0) noundef nonnull align 2 %src, i64 16, i1 false)79  ret void80}81 82define void @memmove_p0_p0_sz31_align_2_2(ptr addrspace(0) align 2 %dst, ptr addrspace(0) align 2 readonly %src) {83; CHECK-LABEL: memmove_p0_p0_sz31_align_2_2:84; CHECK:       ; %bb.0: ; %entry85; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)86; CHECK-NEXT:    s_clause 0x387; CHECK-NEXT:    flat_load_ubyte v9, v[2:3] offset:3088; CHECK-NEXT:    flat_load_ushort v10, v[2:3] offset:2889; CHECK-NEXT:    flat_load_dwordx3 v[6:8], v[2:3] offset:1690; CHECK-NEXT:    flat_load_dwordx4 v[2:5], v[2:3]91; CHECK-NEXT:    s_waitcnt vmcnt(3) lgkmcnt(3)92; CHECK-NEXT:    flat_store_byte v[0:1], v9 offset:3093; CHECK-NEXT:    s_waitcnt vmcnt(2) lgkmcnt(3)94; CHECK-NEXT:    flat_store_short v[0:1], v10 offset:2895; CHECK-NEXT:    s_waitcnt vmcnt(1) lgkmcnt(3)96; CHECK-NEXT:    flat_store_dwordx3 v[0:1], v[6:8] offset:1697; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(3)98; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[2:5]99; CHECK-NEXT:    s_waitcnt lgkmcnt(0)100; CHECK-NEXT:    s_setpc_b64 s[30:31]101entry:102  tail call void @llvm.memmove.p0.p0.i64(ptr addrspace(0) noundef nonnull align 2 %dst, ptr addrspace(0) noundef nonnull align 2 %src, i64 31, i1 false)103  ret void104}105 106define void @memmove_p0_p0_sz32_align_2_2(ptr addrspace(0) align 2 %dst, ptr addrspace(0) align 2 readonly %src) {107; CHECK-LABEL: memmove_p0_p0_sz32_align_2_2:108; CHECK:       ; %bb.0: ; %entry109; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)110; CHECK-NEXT:    s_clause 0x1111; CHECK-NEXT:    flat_load_dwordx4 v[4:7], v[2:3] offset:16112; CHECK-NEXT:    flat_load_dwordx4 v[8:11], v[2:3]113; CHECK-NEXT:    s_waitcnt vmcnt(1) lgkmcnt(1)114; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[4:7] offset:16115; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(1)116; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[8:11]117; CHECK-NEXT:    s_waitcnt lgkmcnt(0)118; CHECK-NEXT:    s_setpc_b64 s[30:31]119entry:120  tail call void @llvm.memmove.p0.p0.i64(ptr addrspace(0) noundef nonnull align 2 %dst, ptr addrspace(0) noundef nonnull align 2 %src, i64 32, i1 false)121  ret void122}123 124define void @memmove_p0_p0_sz16_align_8_8(ptr addrspace(0) align 8 %dst, ptr addrspace(0) align 8 readonly %src) {125; CHECK-LABEL: memmove_p0_p0_sz16_align_8_8:126; CHECK:       ; %bb.0: ; %entry127; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)128; CHECK-NEXT:    flat_load_dwordx4 v[2:5], v[2:3]129; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)130; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[2:5]131; CHECK-NEXT:    s_waitcnt lgkmcnt(0)132; CHECK-NEXT:    s_setpc_b64 s[30:31]133entry:134  tail call void @llvm.memmove.p0.p0.i64(ptr addrspace(0) noundef nonnull align 8 %dst, ptr addrspace(0) noundef nonnull align 8 %src, i64 16, i1 false)135  ret void136}137 138define void @memmove_p0_p0_sz31_align_8_8(ptr addrspace(0) align 8 %dst, ptr addrspace(0) align 8 readonly %src) {139; CHECK-LABEL: memmove_p0_p0_sz31_align_8_8:140; CHECK:       ; %bb.0: ; %entry141; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)142; CHECK-NEXT:    s_clause 0x4143; CHECK-NEXT:    flat_load_dword v8, v[2:3] offset:16144; CHECK-NEXT:    flat_load_dwordx4 v[4:7], v[2:3]145; CHECK-NEXT:    flat_load_ushort v10, v[2:3] offset:28146; CHECK-NEXT:    flat_load_dword v9, v[2:3] offset:24147; CHECK-NEXT:    flat_load_ubyte v11, v[2:3] offset:30148; CHECK-NEXT:    s_waitcnt vmcnt(4) lgkmcnt(4)149; CHECK-NEXT:    flat_store_dword v[0:1], v8 offset:16150; CHECK-NEXT:    flat_load_dword v8, v[2:3] offset:20151; CHECK-NEXT:    s_waitcnt vmcnt(1) lgkmcnt(2)152; CHECK-NEXT:    flat_store_byte v[0:1], v11 offset:30153; CHECK-NEXT:    flat_store_short v[0:1], v10 offset:28154; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(2)155; CHECK-NEXT:    flat_store_dwordx2 v[0:1], v[8:9] offset:20156; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[4:7]157; CHECK-NEXT:    s_waitcnt lgkmcnt(0)158; CHECK-NEXT:    s_setpc_b64 s[30:31]159entry:160  tail call void @llvm.memmove.p0.p0.i64(ptr addrspace(0) noundef nonnull align 8 %dst, ptr addrspace(0) noundef nonnull align 8 %src, i64 31, i1 false)161  ret void162}163 164define void @memmove_p0_p0_sz32_align_8_8(ptr addrspace(0) align 8 %dst, ptr addrspace(0) align 8 readonly %src) {165; CHECK-LABEL: memmove_p0_p0_sz32_align_8_8:166; CHECK:       ; %bb.0: ; %entry167; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)168; CHECK-NEXT:    s_clause 0x1169; CHECK-NEXT:    flat_load_dwordx4 v[4:7], v[2:3] offset:16170; CHECK-NEXT:    flat_load_dwordx4 v[8:11], v[2:3]171; CHECK-NEXT:    s_waitcnt vmcnt(1) lgkmcnt(1)172; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[4:7] offset:16173; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(1)174; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[8:11]175; CHECK-NEXT:    s_waitcnt lgkmcnt(0)176; CHECK-NEXT:    s_setpc_b64 s[30:31]177entry:178  tail call void @llvm.memmove.p0.p0.i64(ptr addrspace(0) noundef nonnull align 8 %dst, ptr addrspace(0) noundef nonnull align 8 %src, i64 32, i1 false)179  ret void180}181 182define void @memmove_p0_p0_sz16_align_16_16(ptr addrspace(0) align 16 %dst, ptr addrspace(0) align 16 readonly %src) {183; CHECK-LABEL: memmove_p0_p0_sz16_align_16_16:184; CHECK:       ; %bb.0: ; %entry185; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)186; CHECK-NEXT:    flat_load_dwordx4 v[2:5], v[2:3]187; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)188; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[2:5]189; CHECK-NEXT:    s_waitcnt lgkmcnt(0)190; CHECK-NEXT:    s_setpc_b64 s[30:31]191entry:192  tail call void @llvm.memmove.p0.p0.i64(ptr addrspace(0) noundef nonnull align 16 %dst, ptr addrspace(0) noundef nonnull align 16 %src, i64 16, i1 false)193  ret void194}195 196define void @memmove_p0_p0_sz31_align_16_16(ptr addrspace(0) align 16 %dst, ptr addrspace(0) align 16 readonly %src) {197; CHECK-LABEL: memmove_p0_p0_sz31_align_16_16:198; CHECK:       ; %bb.0: ; %entry199; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)200; CHECK-NEXT:    s_clause 0x3201; CHECK-NEXT:    flat_load_ubyte v8, v[2:3] offset:30202; CHECK-NEXT:    flat_load_dword v9, v[2:3] offset:16203; CHECK-NEXT:    flat_load_ushort v10, v[2:3] offset:28204; CHECK-NEXT:    flat_load_dwordx4 v[4:7], v[2:3]205; CHECK-NEXT:    s_waitcnt vmcnt(2) lgkmcnt(2)206; CHECK-NEXT:    flat_store_dword v[0:1], v9 offset:16207; CHECK-NEXT:    flat_load_dword v9, v[2:3] offset:20208; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)209; CHECK-NEXT:    flat_store_dword v[0:1], v9 offset:20210; CHECK-NEXT:    flat_load_dword v2, v[2:3] offset:24211; CHECK-NEXT:    flat_store_byte v[0:1], v8 offset:30212; CHECK-NEXT:    flat_store_short v[0:1], v10 offset:28213; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(2)214; CHECK-NEXT:    flat_store_dword v[0:1], v2 offset:24215; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[4:7]216; CHECK-NEXT:    s_waitcnt lgkmcnt(0)217; CHECK-NEXT:    s_setpc_b64 s[30:31]218entry:219  tail call void @llvm.memmove.p0.p0.i64(ptr addrspace(0) noundef nonnull align 16 %dst, ptr addrspace(0) noundef nonnull align 16 %src, i64 31, i1 false)220  ret void221}222 223define void @memmove_p0_p0_sz32_align_16_16(ptr addrspace(0) align 16 %dst, ptr addrspace(0) align 16 readonly %src) {224; CHECK-LABEL: memmove_p0_p0_sz32_align_16_16:225; CHECK:       ; %bb.0: ; %entry226; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)227; CHECK-NEXT:    s_clause 0x1228; CHECK-NEXT:    flat_load_dwordx4 v[4:7], v[2:3] offset:16229; CHECK-NEXT:    flat_load_dwordx4 v[8:11], v[2:3]230; CHECK-NEXT:    s_waitcnt vmcnt(1) lgkmcnt(1)231; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[4:7] offset:16232; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(1)233; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[8:11]234; CHECK-NEXT:    s_waitcnt lgkmcnt(0)235; CHECK-NEXT:    s_setpc_b64 s[30:31]236entry:237  tail call void @llvm.memmove.p0.p0.i64(ptr addrspace(0) noundef nonnull align 16 %dst, ptr addrspace(0) noundef nonnull align 16 %src, i64 32, i1 false)238  ret void239}240 241define void @memmove_p0_p1_sz16_align_1_1(ptr addrspace(0) align 1 %dst, ptr addrspace(1) align 1 readonly %src) {242; CHECK-LABEL: memmove_p0_p1_sz16_align_1_1:243; CHECK:       ; %bb.0: ; %entry244; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)245; CHECK-NEXT:    global_load_dwordx4 v[2:5], v[2:3], off246; CHECK-NEXT:    s_waitcnt vmcnt(0)247; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[2:5]248; CHECK-NEXT:    s_waitcnt lgkmcnt(0)249; CHECK-NEXT:    s_setpc_b64 s[30:31]250entry:251  tail call void @llvm.memmove.p0.p1.i64(ptr addrspace(0) noundef nonnull align 1 %dst, ptr addrspace(1) noundef nonnull align 1 %src, i64 16, i1 false)252  ret void253}254 255define void @memmove_p0_p1_sz31_align_1_1(ptr addrspace(0) align 1 %dst, ptr addrspace(1) align 1 readonly %src) {256; CHECK-LABEL: memmove_p0_p1_sz31_align_1_1:257; CHECK:       ; %bb.0: ; %entry258; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)259; CHECK-NEXT:    s_clause 0x3260; CHECK-NEXT:    global_load_ubyte v9, v[2:3], off offset:30261; CHECK-NEXT:    global_load_ushort v10, v[2:3], off offset:28262; CHECK-NEXT:    global_load_dwordx3 v[6:8], v[2:3], off offset:16263; CHECK-NEXT:    global_load_dwordx4 v[2:5], v[2:3], off264; CHECK-NEXT:    s_waitcnt vmcnt(3)265; CHECK-NEXT:    flat_store_byte v[0:1], v9 offset:30266; CHECK-NEXT:    s_waitcnt vmcnt(2)267; CHECK-NEXT:    flat_store_short v[0:1], v10 offset:28268; CHECK-NEXT:    s_waitcnt vmcnt(1)269; CHECK-NEXT:    flat_store_dwordx3 v[0:1], v[6:8] offset:16270; CHECK-NEXT:    s_waitcnt vmcnt(0)271; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[2:5]272; CHECK-NEXT:    s_waitcnt lgkmcnt(0)273; CHECK-NEXT:    s_setpc_b64 s[30:31]274entry:275  tail call void @llvm.memmove.p0.p1.i64(ptr addrspace(0) noundef nonnull align 1 %dst, ptr addrspace(1) noundef nonnull align 1 %src, i64 31, i1 false)276  ret void277}278 279define void @memmove_p0_p1_sz32_align_1_1(ptr addrspace(0) align 1 %dst, ptr addrspace(1) align 1 readonly %src) {280; CHECK-LABEL: memmove_p0_p1_sz32_align_1_1:281; CHECK:       ; %bb.0: ; %entry282; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)283; CHECK-NEXT:    s_clause 0x1284; CHECK-NEXT:    global_load_dwordx4 v[4:7], v[2:3], off offset:16285; CHECK-NEXT:    global_load_dwordx4 v[8:11], v[2:3], off286; CHECK-NEXT:    s_waitcnt vmcnt(1)287; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[4:7] offset:16288; CHECK-NEXT:    s_waitcnt vmcnt(0)289; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[8:11]290; CHECK-NEXT:    s_waitcnt lgkmcnt(0)291; CHECK-NEXT:    s_setpc_b64 s[30:31]292entry:293  tail call void @llvm.memmove.p0.p1.i64(ptr addrspace(0) noundef nonnull align 1 %dst, ptr addrspace(1) noundef nonnull align 1 %src, i64 32, i1 false)294  ret void295}296 297define void @memmove_p0_p1_sz16_align_2_2(ptr addrspace(0) align 2 %dst, ptr addrspace(1) align 2 readonly %src) {298; CHECK-LABEL: memmove_p0_p1_sz16_align_2_2:299; CHECK:       ; %bb.0: ; %entry300; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)301; CHECK-NEXT:    global_load_dwordx4 v[2:5], v[2:3], off302; CHECK-NEXT:    s_waitcnt vmcnt(0)303; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[2:5]304; CHECK-NEXT:    s_waitcnt lgkmcnt(0)305; CHECK-NEXT:    s_setpc_b64 s[30:31]306entry:307  tail call void @llvm.memmove.p0.p1.i64(ptr addrspace(0) noundef nonnull align 2 %dst, ptr addrspace(1) noundef nonnull align 2 %src, i64 16, i1 false)308  ret void309}310 311define void @memmove_p0_p1_sz31_align_2_2(ptr addrspace(0) align 2 %dst, ptr addrspace(1) align 2 readonly %src) {312; CHECK-LABEL: memmove_p0_p1_sz31_align_2_2:313; CHECK:       ; %bb.0: ; %entry314; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)315; CHECK-NEXT:    s_clause 0x3316; CHECK-NEXT:    global_load_ubyte v9, v[2:3], off offset:30317; CHECK-NEXT:    global_load_ushort v10, v[2:3], off offset:28318; CHECK-NEXT:    global_load_dwordx3 v[6:8], v[2:3], off offset:16319; CHECK-NEXT:    global_load_dwordx4 v[2:5], v[2:3], off320; CHECK-NEXT:    s_waitcnt vmcnt(3)321; CHECK-NEXT:    flat_store_byte v[0:1], v9 offset:30322; CHECK-NEXT:    s_waitcnt vmcnt(2)323; CHECK-NEXT:    flat_store_short v[0:1], v10 offset:28324; CHECK-NEXT:    s_waitcnt vmcnt(1)325; CHECK-NEXT:    flat_store_dwordx3 v[0:1], v[6:8] offset:16326; CHECK-NEXT:    s_waitcnt vmcnt(0)327; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[2:5]328; CHECK-NEXT:    s_waitcnt lgkmcnt(0)329; CHECK-NEXT:    s_setpc_b64 s[30:31]330entry:331  tail call void @llvm.memmove.p0.p1.i64(ptr addrspace(0) noundef nonnull align 2 %dst, ptr addrspace(1) noundef nonnull align 2 %src, i64 31, i1 false)332  ret void333}334 335define void @memmove_p0_p1_sz32_align_2_2(ptr addrspace(0) align 2 %dst, ptr addrspace(1) align 2 readonly %src) {336; CHECK-LABEL: memmove_p0_p1_sz32_align_2_2:337; CHECK:       ; %bb.0: ; %entry338; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)339; CHECK-NEXT:    s_clause 0x1340; CHECK-NEXT:    global_load_dwordx4 v[4:7], v[2:3], off offset:16341; CHECK-NEXT:    global_load_dwordx4 v[8:11], v[2:3], off342; CHECK-NEXT:    s_waitcnt vmcnt(1)343; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[4:7] offset:16344; CHECK-NEXT:    s_waitcnt vmcnt(0)345; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[8:11]346; CHECK-NEXT:    s_waitcnt lgkmcnt(0)347; CHECK-NEXT:    s_setpc_b64 s[30:31]348entry:349  tail call void @llvm.memmove.p0.p1.i64(ptr addrspace(0) noundef nonnull align 2 %dst, ptr addrspace(1) noundef nonnull align 2 %src, i64 32, i1 false)350  ret void351}352 353define void @memmove_p0_p1_sz16_align_8_8(ptr addrspace(0) align 8 %dst, ptr addrspace(1) align 8 readonly %src) {354; CHECK-LABEL: memmove_p0_p1_sz16_align_8_8:355; CHECK:       ; %bb.0: ; %entry356; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)357; CHECK-NEXT:    global_load_dwordx4 v[2:5], v[2:3], off358; CHECK-NEXT:    s_waitcnt vmcnt(0)359; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[2:5]360; CHECK-NEXT:    s_waitcnt lgkmcnt(0)361; CHECK-NEXT:    s_setpc_b64 s[30:31]362entry:363  tail call void @llvm.memmove.p0.p1.i64(ptr addrspace(0) noundef nonnull align 8 %dst, ptr addrspace(1) noundef nonnull align 8 %src, i64 16, i1 false)364  ret void365}366 367define void @memmove_p0_p1_sz31_align_8_8(ptr addrspace(0) align 8 %dst, ptr addrspace(1) align 8 readonly %src) {368; CHECK-LABEL: memmove_p0_p1_sz31_align_8_8:369; CHECK:       ; %bb.0: ; %entry370; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)371; CHECK-NEXT:    s_clause 0x4372; CHECK-NEXT:    global_load_dword v8, v[2:3], off offset:16373; CHECK-NEXT:    global_load_dwordx4 v[4:7], v[2:3], off374; CHECK-NEXT:    global_load_ushort v10, v[2:3], off offset:28375; CHECK-NEXT:    global_load_dword v9, v[2:3], off offset:24376; CHECK-NEXT:    global_load_ubyte v11, v[2:3], off offset:30377; CHECK-NEXT:    s_waitcnt vmcnt(4)378; CHECK-NEXT:    flat_store_dword v[0:1], v8 offset:16379; CHECK-NEXT:    global_load_dword v8, v[2:3], off offset:20380; CHECK-NEXT:    s_waitcnt vmcnt(1)381; CHECK-NEXT:    flat_store_byte v[0:1], v11 offset:30382; CHECK-NEXT:    flat_store_short v[0:1], v10 offset:28383; CHECK-NEXT:    s_waitcnt vmcnt(0)384; CHECK-NEXT:    flat_store_dwordx2 v[0:1], v[8:9] offset:20385; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[4:7]386; CHECK-NEXT:    s_waitcnt lgkmcnt(0)387; CHECK-NEXT:    s_setpc_b64 s[30:31]388entry:389  tail call void @llvm.memmove.p0.p1.i64(ptr addrspace(0) noundef nonnull align 8 %dst, ptr addrspace(1) noundef nonnull align 8 %src, i64 31, i1 false)390  ret void391}392 393define void @memmove_p0_p1_sz32_align_8_8(ptr addrspace(0) align 8 %dst, ptr addrspace(1) align 8 readonly %src) {394; CHECK-LABEL: memmove_p0_p1_sz32_align_8_8:395; CHECK:       ; %bb.0: ; %entry396; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)397; CHECK-NEXT:    s_clause 0x1398; CHECK-NEXT:    global_load_dwordx4 v[4:7], v[2:3], off offset:16399; CHECK-NEXT:    global_load_dwordx4 v[8:11], v[2:3], off400; CHECK-NEXT:    s_waitcnt vmcnt(1)401; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[4:7] offset:16402; CHECK-NEXT:    s_waitcnt vmcnt(0)403; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[8:11]404; CHECK-NEXT:    s_waitcnt lgkmcnt(0)405; CHECK-NEXT:    s_setpc_b64 s[30:31]406entry:407  tail call void @llvm.memmove.p0.p1.i64(ptr addrspace(0) noundef nonnull align 8 %dst, ptr addrspace(1) noundef nonnull align 8 %src, i64 32, i1 false)408  ret void409}410 411define void @memmove_p0_p1_sz16_align_16_16(ptr addrspace(0) align 16 %dst, ptr addrspace(1) align 16 readonly %src) {412; CHECK-LABEL: memmove_p0_p1_sz16_align_16_16:413; CHECK:       ; %bb.0: ; %entry414; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)415; CHECK-NEXT:    global_load_dwordx4 v[2:5], v[2:3], off416; CHECK-NEXT:    s_waitcnt vmcnt(0)417; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[2:5]418; CHECK-NEXT:    s_waitcnt lgkmcnt(0)419; CHECK-NEXT:    s_setpc_b64 s[30:31]420entry:421  tail call void @llvm.memmove.p0.p1.i64(ptr addrspace(0) noundef nonnull align 16 %dst, ptr addrspace(1) noundef nonnull align 16 %src, i64 16, i1 false)422  ret void423}424 425define void @memmove_p0_p1_sz31_align_16_16(ptr addrspace(0) align 16 %dst, ptr addrspace(1) align 16 readonly %src) {426; CHECK-LABEL: memmove_p0_p1_sz31_align_16_16:427; CHECK:       ; %bb.0: ; %entry428; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)429; CHECK-NEXT:    s_clause 0x3430; CHECK-NEXT:    global_load_ubyte v8, v[2:3], off offset:30431; CHECK-NEXT:    global_load_dword v9, v[2:3], off offset:16432; CHECK-NEXT:    global_load_ushort v10, v[2:3], off offset:28433; CHECK-NEXT:    global_load_dwordx4 v[4:7], v[2:3], off434; CHECK-NEXT:    s_waitcnt vmcnt(2)435; CHECK-NEXT:    flat_store_dword v[0:1], v9 offset:16436; CHECK-NEXT:    global_load_dword v9, v[2:3], off offset:20437; CHECK-NEXT:    s_waitcnt vmcnt(0)438; CHECK-NEXT:    flat_store_dword v[0:1], v9 offset:20439; CHECK-NEXT:    global_load_dword v2, v[2:3], off offset:24440; CHECK-NEXT:    flat_store_byte v[0:1], v8 offset:30441; CHECK-NEXT:    flat_store_short v[0:1], v10 offset:28442; CHECK-NEXT:    s_waitcnt vmcnt(0)443; CHECK-NEXT:    flat_store_dword v[0:1], v2 offset:24444; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[4:7]445; CHECK-NEXT:    s_waitcnt lgkmcnt(0)446; CHECK-NEXT:    s_setpc_b64 s[30:31]447entry:448  tail call void @llvm.memmove.p0.p1.i64(ptr addrspace(0) noundef nonnull align 16 %dst, ptr addrspace(1) noundef nonnull align 16 %src, i64 31, i1 false)449  ret void450}451 452define void @memmove_p0_p1_sz32_align_16_16(ptr addrspace(0) align 16 %dst, ptr addrspace(1) align 16 readonly %src) {453; CHECK-LABEL: memmove_p0_p1_sz32_align_16_16:454; CHECK:       ; %bb.0: ; %entry455; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)456; CHECK-NEXT:    s_clause 0x1457; CHECK-NEXT:    global_load_dwordx4 v[4:7], v[2:3], off offset:16458; CHECK-NEXT:    global_load_dwordx4 v[8:11], v[2:3], off459; CHECK-NEXT:    s_waitcnt vmcnt(1)460; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[4:7] offset:16461; CHECK-NEXT:    s_waitcnt vmcnt(0)462; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[8:11]463; CHECK-NEXT:    s_waitcnt lgkmcnt(0)464; CHECK-NEXT:    s_setpc_b64 s[30:31]465entry:466  tail call void @llvm.memmove.p0.p1.i64(ptr addrspace(0) noundef nonnull align 16 %dst, ptr addrspace(1) noundef nonnull align 16 %src, i64 32, i1 false)467  ret void468}469 470define void @memmove_p0_p3_sz16_align_1_1(ptr addrspace(0) align 1 %dst, ptr addrspace(3) align 1 readonly %src) {471; CHECK-LABEL: memmove_p0_p3_sz16_align_1_1:472; CHECK:       ; %bb.0: ; %entry473; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)474; CHECK-NEXT:    ds_read_b128 v[2:5], v2475; CHECK-NEXT:    s_waitcnt lgkmcnt(0)476; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[2:5]477; CHECK-NEXT:    s_waitcnt lgkmcnt(0)478; CHECK-NEXT:    s_setpc_b64 s[30:31]479entry:480  tail call void @llvm.memmove.p0.p3.i64(ptr addrspace(0) noundef nonnull align 1 %dst, ptr addrspace(3) noundef nonnull align 1 %src, i64 16, i1 false)481  ret void482}483 484define void @memmove_p0_p3_sz31_align_1_1(ptr addrspace(0) align 1 %dst, ptr addrspace(3) align 1 readonly %src) {485; CHECK-LABEL: memmove_p0_p3_sz31_align_1_1:486; CHECK:       ; %bb.0: ; %entry487; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)488; CHECK-NEXT:    ds_read_b32 v8, v2 offset:24489; CHECK-NEXT:    ds_read_u8 v9, v2 offset:30490; CHECK-NEXT:    ds_read_u16 v10, v2 offset:28491; CHECK-NEXT:    ds_read_b64 v[6:7], v2 offset:16492; CHECK-NEXT:    ds_read_b128 v[2:5], v2493; CHECK-NEXT:    s_waitcnt lgkmcnt(3)494; CHECK-NEXT:    flat_store_byte v[0:1], v9 offset:30495; CHECK-NEXT:    s_waitcnt lgkmcnt(3)496; CHECK-NEXT:    flat_store_short v[0:1], v10 offset:28497; CHECK-NEXT:    s_waitcnt lgkmcnt(3)498; CHECK-NEXT:    flat_store_dwordx3 v[0:1], v[6:8] offset:16499; CHECK-NEXT:    s_waitcnt lgkmcnt(3)500; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[2:5]501; CHECK-NEXT:    s_waitcnt lgkmcnt(0)502; CHECK-NEXT:    s_setpc_b64 s[30:31]503entry:504  tail call void @llvm.memmove.p0.p3.i64(ptr addrspace(0) noundef nonnull align 1 %dst, ptr addrspace(3) noundef nonnull align 1 %src, i64 31, i1 false)505  ret void506}507 508define void @memmove_p0_p3_sz32_align_1_1(ptr addrspace(0) align 1 %dst, ptr addrspace(3) align 1 readonly %src) {509; CHECK-LABEL: memmove_p0_p3_sz32_align_1_1:510; CHECK:       ; %bb.0: ; %entry511; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)512; CHECK-NEXT:    ds_read_b128 v[3:6], v2 offset:16513; CHECK-NEXT:    ds_read_b128 v[7:10], v2514; CHECK-NEXT:    s_waitcnt lgkmcnt(1)515; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[3:6] offset:16516; CHECK-NEXT:    s_waitcnt lgkmcnt(1)517; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[7:10]518; CHECK-NEXT:    s_waitcnt lgkmcnt(0)519; CHECK-NEXT:    s_setpc_b64 s[30:31]520entry:521  tail call void @llvm.memmove.p0.p3.i64(ptr addrspace(0) noundef nonnull align 1 %dst, ptr addrspace(3) noundef nonnull align 1 %src, i64 32, i1 false)522  ret void523}524 525define void @memmove_p0_p3_sz16_align_2_2(ptr addrspace(0) align 2 %dst, ptr addrspace(3) align 2 readonly %src) {526; CHECK-LABEL: memmove_p0_p3_sz16_align_2_2:527; CHECK:       ; %bb.0: ; %entry528; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)529; CHECK-NEXT:    ds_read_b128 v[2:5], v2530; CHECK-NEXT:    s_waitcnt lgkmcnt(0)531; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[2:5]532; CHECK-NEXT:    s_waitcnt lgkmcnt(0)533; CHECK-NEXT:    s_setpc_b64 s[30:31]534entry:535  tail call void @llvm.memmove.p0.p3.i64(ptr addrspace(0) noundef nonnull align 2 %dst, ptr addrspace(3) noundef nonnull align 2 %src, i64 16, i1 false)536  ret void537}538 539define void @memmove_p0_p3_sz31_align_2_2(ptr addrspace(0) align 2 %dst, ptr addrspace(3) align 2 readonly %src) {540; CHECK-LABEL: memmove_p0_p3_sz31_align_2_2:541; CHECK:       ; %bb.0: ; %entry542; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)543; CHECK-NEXT:    ds_read_b32 v8, v2 offset:24544; CHECK-NEXT:    ds_read_u8 v9, v2 offset:30545; CHECK-NEXT:    ds_read_u16 v10, v2 offset:28546; CHECK-NEXT:    ds_read_b64 v[6:7], v2 offset:16547; CHECK-NEXT:    ds_read_b128 v[2:5], v2548; CHECK-NEXT:    s_waitcnt lgkmcnt(3)549; CHECK-NEXT:    flat_store_byte v[0:1], v9 offset:30550; CHECK-NEXT:    s_waitcnt lgkmcnt(3)551; CHECK-NEXT:    flat_store_short v[0:1], v10 offset:28552; CHECK-NEXT:    s_waitcnt lgkmcnt(3)553; CHECK-NEXT:    flat_store_dwordx3 v[0:1], v[6:8] offset:16554; CHECK-NEXT:    s_waitcnt lgkmcnt(3)555; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[2:5]556; CHECK-NEXT:    s_waitcnt lgkmcnt(0)557; CHECK-NEXT:    s_setpc_b64 s[30:31]558entry:559  tail call void @llvm.memmove.p0.p3.i64(ptr addrspace(0) noundef nonnull align 2 %dst, ptr addrspace(3) noundef nonnull align 2 %src, i64 31, i1 false)560  ret void561}562 563define void @memmove_p0_p3_sz32_align_2_2(ptr addrspace(0) align 2 %dst, ptr addrspace(3) align 2 readonly %src) {564; CHECK-LABEL: memmove_p0_p3_sz32_align_2_2:565; CHECK:       ; %bb.0: ; %entry566; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)567; CHECK-NEXT:    ds_read_b128 v[3:6], v2 offset:16568; CHECK-NEXT:    ds_read_b128 v[7:10], v2569; CHECK-NEXT:    s_waitcnt lgkmcnt(1)570; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[3:6] offset:16571; CHECK-NEXT:    s_waitcnt lgkmcnt(1)572; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[7:10]573; CHECK-NEXT:    s_waitcnt lgkmcnt(0)574; CHECK-NEXT:    s_setpc_b64 s[30:31]575entry:576  tail call void @llvm.memmove.p0.p3.i64(ptr addrspace(0) noundef nonnull align 2 %dst, ptr addrspace(3) noundef nonnull align 2 %src, i64 32, i1 false)577  ret void578}579 580define void @memmove_p0_p3_sz16_align_8_8(ptr addrspace(0) align 8 %dst, ptr addrspace(3) align 8 readonly %src) {581; CHECK-LABEL: memmove_p0_p3_sz16_align_8_8:582; CHECK:       ; %bb.0: ; %entry583; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)584; CHECK-NEXT:    ds_read2_b64 v[2:5], v2 offset1:1585; CHECK-NEXT:    s_waitcnt lgkmcnt(0)586; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[2:5]587; CHECK-NEXT:    s_waitcnt lgkmcnt(0)588; CHECK-NEXT:    s_setpc_b64 s[30:31]589entry:590  tail call void @llvm.memmove.p0.p3.i64(ptr addrspace(0) noundef nonnull align 8 %dst, ptr addrspace(3) noundef nonnull align 8 %src, i64 16, i1 false)591  ret void592}593 594define void @memmove_p0_p3_sz31_align_8_8(ptr addrspace(0) align 8 %dst, ptr addrspace(3) align 8 readonly %src) {595; CHECK-LABEL: memmove_p0_p3_sz31_align_8_8:596; CHECK:       ; %bb.0: ; %entry597; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)598; CHECK-NEXT:    ds_read2_b32 v[6:7], v2 offset0:4 offset1:5599; CHECK-NEXT:    ds_read_b32 v8, v2 offset:24600; CHECK-NEXT:    ds_read_u8 v9, v2 offset:30601; CHECK-NEXT:    ds_read_u16 v10, v2 offset:28602; CHECK-NEXT:    ds_read2_b64 v[2:5], v2 offset1:1603; CHECK-NEXT:    s_waitcnt lgkmcnt(3)604; CHECK-NEXT:    flat_store_dwordx3 v[0:1], v[6:8] offset:16605; CHECK-NEXT:    s_waitcnt lgkmcnt(3)606; CHECK-NEXT:    flat_store_byte v[0:1], v9 offset:30607; CHECK-NEXT:    s_waitcnt lgkmcnt(3)608; CHECK-NEXT:    flat_store_short v[0:1], v10 offset:28609; CHECK-NEXT:    s_waitcnt lgkmcnt(3)610; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[2:5]611; CHECK-NEXT:    s_waitcnt lgkmcnt(0)612; CHECK-NEXT:    s_setpc_b64 s[30:31]613entry:614  tail call void @llvm.memmove.p0.p3.i64(ptr addrspace(0) noundef nonnull align 8 %dst, ptr addrspace(3) noundef nonnull align 8 %src, i64 31, i1 false)615  ret void616}617 618define void @memmove_p0_p3_sz32_align_8_8(ptr addrspace(0) align 8 %dst, ptr addrspace(3) align 8 readonly %src) {619; CHECK-LABEL: memmove_p0_p3_sz32_align_8_8:620; CHECK:       ; %bb.0: ; %entry621; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)622; CHECK-NEXT:    ds_read2_b64 v[3:6], v2 offset0:2 offset1:3623; CHECK-NEXT:    ds_read2_b64 v[7:10], v2 offset1:1624; CHECK-NEXT:    s_waitcnt lgkmcnt(1)625; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[3:6] offset:16626; CHECK-NEXT:    s_waitcnt lgkmcnt(1)627; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[7:10]628; CHECK-NEXT:    s_waitcnt lgkmcnt(0)629; CHECK-NEXT:    s_setpc_b64 s[30:31]630entry:631  tail call void @llvm.memmove.p0.p3.i64(ptr addrspace(0) noundef nonnull align 8 %dst, ptr addrspace(3) noundef nonnull align 8 %src, i64 32, i1 false)632  ret void633}634 635define void @memmove_p0_p3_sz16_align_16_16(ptr addrspace(0) align 16 %dst, ptr addrspace(3) align 16 readonly %src) {636; CHECK-LABEL: memmove_p0_p3_sz16_align_16_16:637; CHECK:       ; %bb.0: ; %entry638; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)639; CHECK-NEXT:    ds_read_b128 v[2:5], v2640; CHECK-NEXT:    s_waitcnt lgkmcnt(0)641; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[2:5]642; CHECK-NEXT:    s_waitcnt lgkmcnt(0)643; CHECK-NEXT:    s_setpc_b64 s[30:31]644entry:645  tail call void @llvm.memmove.p0.p3.i64(ptr addrspace(0) noundef nonnull align 16 %dst, ptr addrspace(3) noundef nonnull align 16 %src, i64 16, i1 false)646  ret void647}648 649define void @memmove_p0_p3_sz31_align_16_16(ptr addrspace(0) align 16 %dst, ptr addrspace(3) align 16 readonly %src) {650; CHECK-LABEL: memmove_p0_p3_sz31_align_16_16:651; CHECK:       ; %bb.0: ; %entry652; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)653; CHECK-NEXT:    ds_read2_b32 v[6:7], v2 offset0:4 offset1:5654; CHECK-NEXT:    ds_read_b32 v8, v2 offset:24655; CHECK-NEXT:    ds_read_u8 v9, v2 offset:30656; CHECK-NEXT:    ds_read_u16 v10, v2 offset:28657; CHECK-NEXT:    ds_read_b128 v[2:5], v2658; CHECK-NEXT:    s_waitcnt lgkmcnt(3)659; CHECK-NEXT:    flat_store_dwordx3 v[0:1], v[6:8] offset:16660; CHECK-NEXT:    s_waitcnt lgkmcnt(3)661; CHECK-NEXT:    flat_store_byte v[0:1], v9 offset:30662; CHECK-NEXT:    s_waitcnt lgkmcnt(3)663; CHECK-NEXT:    flat_store_short v[0:1], v10 offset:28664; CHECK-NEXT:    s_waitcnt lgkmcnt(3)665; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[2:5]666; CHECK-NEXT:    s_waitcnt lgkmcnt(0)667; CHECK-NEXT:    s_setpc_b64 s[30:31]668entry:669  tail call void @llvm.memmove.p0.p3.i64(ptr addrspace(0) noundef nonnull align 16 %dst, ptr addrspace(3) noundef nonnull align 16 %src, i64 31, i1 false)670  ret void671}672 673define void @memmove_p0_p3_sz32_align_16_16(ptr addrspace(0) align 16 %dst, ptr addrspace(3) align 16 readonly %src) {674; CHECK-LABEL: memmove_p0_p3_sz32_align_16_16:675; CHECK:       ; %bb.0: ; %entry676; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)677; CHECK-NEXT:    ds_read_b128 v[3:6], v2 offset:16678; CHECK-NEXT:    ds_read_b128 v[7:10], v2679; CHECK-NEXT:    s_waitcnt lgkmcnt(1)680; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[3:6] offset:16681; CHECK-NEXT:    s_waitcnt lgkmcnt(1)682; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[7:10]683; CHECK-NEXT:    s_waitcnt lgkmcnt(0)684; CHECK-NEXT:    s_setpc_b64 s[30:31]685entry:686  tail call void @llvm.memmove.p0.p3.i64(ptr addrspace(0) noundef nonnull align 16 %dst, ptr addrspace(3) noundef nonnull align 16 %src, i64 32, i1 false)687  ret void688}689 690define void @memmove_p0_p4_sz16_align_1_1(ptr addrspace(0) align 1 %dst, ptr addrspace(4) align 1 readonly %src) {691; CHECK-LABEL: memmove_p0_p4_sz16_align_1_1:692; CHECK:       ; %bb.0: ; %entry693; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)694; CHECK-NEXT:    global_load_dwordx4 v[2:5], v[2:3], off695; CHECK-NEXT:    s_waitcnt vmcnt(0)696; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[2:5]697; CHECK-NEXT:    s_waitcnt lgkmcnt(0)698; CHECK-NEXT:    s_setpc_b64 s[30:31]699entry:700  tail call void @llvm.memmove.p0.p4.i64(ptr addrspace(0) noundef nonnull align 1 %dst, ptr addrspace(4) noundef nonnull align 1 %src, i64 16, i1 false)701  ret void702}703 704define void @memmove_p0_p4_sz31_align_1_1(ptr addrspace(0) align 1 %dst, ptr addrspace(4) align 1 readonly %src) {705; CHECK-LABEL: memmove_p0_p4_sz31_align_1_1:706; CHECK:       ; %bb.0: ; %entry707; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)708; CHECK-NEXT:    s_clause 0x3709; CHECK-NEXT:    global_load_ubyte v9, v[2:3], off offset:30710; CHECK-NEXT:    global_load_ushort v10, v[2:3], off offset:28711; CHECK-NEXT:    global_load_dwordx3 v[6:8], v[2:3], off offset:16712; CHECK-NEXT:    global_load_dwordx4 v[2:5], v[2:3], off713; CHECK-NEXT:    s_waitcnt vmcnt(3)714; CHECK-NEXT:    flat_store_byte v[0:1], v9 offset:30715; CHECK-NEXT:    s_waitcnt vmcnt(2)716; CHECK-NEXT:    flat_store_short v[0:1], v10 offset:28717; CHECK-NEXT:    s_waitcnt vmcnt(1)718; CHECK-NEXT:    flat_store_dwordx3 v[0:1], v[6:8] offset:16719; CHECK-NEXT:    s_waitcnt vmcnt(0)720; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[2:5]721; CHECK-NEXT:    s_waitcnt lgkmcnt(0)722; CHECK-NEXT:    s_setpc_b64 s[30:31]723entry:724  tail call void @llvm.memmove.p0.p4.i64(ptr addrspace(0) noundef nonnull align 1 %dst, ptr addrspace(4) noundef nonnull align 1 %src, i64 31, i1 false)725  ret void726}727 728define void @memmove_p0_p4_sz32_align_1_1(ptr addrspace(0) align 1 %dst, ptr addrspace(4) align 1 readonly %src) {729; CHECK-LABEL: memmove_p0_p4_sz32_align_1_1:730; CHECK:       ; %bb.0: ; %entry731; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)732; CHECK-NEXT:    s_clause 0x1733; CHECK-NEXT:    global_load_dwordx4 v[4:7], v[2:3], off offset:16734; CHECK-NEXT:    global_load_dwordx4 v[8:11], v[2:3], off735; CHECK-NEXT:    s_waitcnt vmcnt(1)736; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[4:7] offset:16737; CHECK-NEXT:    s_waitcnt vmcnt(0)738; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[8:11]739; CHECK-NEXT:    s_waitcnt lgkmcnt(0)740; CHECK-NEXT:    s_setpc_b64 s[30:31]741entry:742  tail call void @llvm.memmove.p0.p4.i64(ptr addrspace(0) noundef nonnull align 1 %dst, ptr addrspace(4) noundef nonnull align 1 %src, i64 32, i1 false)743  ret void744}745 746define void @memmove_p0_p4_sz16_align_2_2(ptr addrspace(0) align 2 %dst, ptr addrspace(4) align 2 readonly %src) {747; CHECK-LABEL: memmove_p0_p4_sz16_align_2_2:748; CHECK:       ; %bb.0: ; %entry749; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)750; CHECK-NEXT:    global_load_dwordx4 v[2:5], v[2:3], off751; CHECK-NEXT:    s_waitcnt vmcnt(0)752; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[2:5]753; CHECK-NEXT:    s_waitcnt lgkmcnt(0)754; CHECK-NEXT:    s_setpc_b64 s[30:31]755entry:756  tail call void @llvm.memmove.p0.p4.i64(ptr addrspace(0) noundef nonnull align 2 %dst, ptr addrspace(4) noundef nonnull align 2 %src, i64 16, i1 false)757  ret void758}759 760define void @memmove_p0_p4_sz31_align_2_2(ptr addrspace(0) align 2 %dst, ptr addrspace(4) align 2 readonly %src) {761; CHECK-LABEL: memmove_p0_p4_sz31_align_2_2:762; CHECK:       ; %bb.0: ; %entry763; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)764; CHECK-NEXT:    s_clause 0x3765; CHECK-NEXT:    global_load_ubyte v9, v[2:3], off offset:30766; CHECK-NEXT:    global_load_ushort v10, v[2:3], off offset:28767; CHECK-NEXT:    global_load_dwordx3 v[6:8], v[2:3], off offset:16768; CHECK-NEXT:    global_load_dwordx4 v[2:5], v[2:3], off769; CHECK-NEXT:    s_waitcnt vmcnt(3)770; CHECK-NEXT:    flat_store_byte v[0:1], v9 offset:30771; CHECK-NEXT:    s_waitcnt vmcnt(2)772; CHECK-NEXT:    flat_store_short v[0:1], v10 offset:28773; CHECK-NEXT:    s_waitcnt vmcnt(1)774; CHECK-NEXT:    flat_store_dwordx3 v[0:1], v[6:8] offset:16775; CHECK-NEXT:    s_waitcnt vmcnt(0)776; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[2:5]777; CHECK-NEXT:    s_waitcnt lgkmcnt(0)778; CHECK-NEXT:    s_setpc_b64 s[30:31]779entry:780  tail call void @llvm.memmove.p0.p4.i64(ptr addrspace(0) noundef nonnull align 2 %dst, ptr addrspace(4) noundef nonnull align 2 %src, i64 31, i1 false)781  ret void782}783 784define void @memmove_p0_p4_sz32_align_2_2(ptr addrspace(0) align 2 %dst, ptr addrspace(4) align 2 readonly %src) {785; CHECK-LABEL: memmove_p0_p4_sz32_align_2_2:786; CHECK:       ; %bb.0: ; %entry787; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)788; CHECK-NEXT:    s_clause 0x1789; CHECK-NEXT:    global_load_dwordx4 v[4:7], v[2:3], off offset:16790; CHECK-NEXT:    global_load_dwordx4 v[8:11], v[2:3], off791; CHECK-NEXT:    s_waitcnt vmcnt(1)792; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[4:7] offset:16793; CHECK-NEXT:    s_waitcnt vmcnt(0)794; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[8:11]795; CHECK-NEXT:    s_waitcnt lgkmcnt(0)796; CHECK-NEXT:    s_setpc_b64 s[30:31]797entry:798  tail call void @llvm.memmove.p0.p4.i64(ptr addrspace(0) noundef nonnull align 2 %dst, ptr addrspace(4) noundef nonnull align 2 %src, i64 32, i1 false)799  ret void800}801 802define void @memmove_p0_p4_sz16_align_8_8(ptr addrspace(0) align 8 %dst, ptr addrspace(4) align 8 readonly %src) {803; CHECK-LABEL: memmove_p0_p4_sz16_align_8_8:804; CHECK:       ; %bb.0: ; %entry805; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)806; CHECK-NEXT:    global_load_dwordx4 v[2:5], v[2:3], off807; CHECK-NEXT:    s_waitcnt vmcnt(0)808; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[2:5]809; CHECK-NEXT:    s_waitcnt lgkmcnt(0)810; CHECK-NEXT:    s_setpc_b64 s[30:31]811entry:812  tail call void @llvm.memmove.p0.p4.i64(ptr addrspace(0) noundef nonnull align 8 %dst, ptr addrspace(4) noundef nonnull align 8 %src, i64 16, i1 false)813  ret void814}815 816define void @memmove_p0_p4_sz31_align_8_8(ptr addrspace(0) align 8 %dst, ptr addrspace(4) align 8 readonly %src) {817; CHECK-LABEL: memmove_p0_p4_sz31_align_8_8:818; CHECK:       ; %bb.0: ; %entry819; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)820; CHECK-NEXT:    s_clause 0x4821; CHECK-NEXT:    global_load_dword v8, v[2:3], off offset:16822; CHECK-NEXT:    global_load_dwordx4 v[4:7], v[2:3], off823; CHECK-NEXT:    global_load_ushort v10, v[2:3], off offset:28824; CHECK-NEXT:    global_load_dword v9, v[2:3], off offset:24825; CHECK-NEXT:    global_load_ubyte v11, v[2:3], off offset:30826; CHECK-NEXT:    s_waitcnt vmcnt(4)827; CHECK-NEXT:    flat_store_dword v[0:1], v8 offset:16828; CHECK-NEXT:    global_load_dword v8, v[2:3], off offset:20829; CHECK-NEXT:    s_waitcnt vmcnt(1)830; CHECK-NEXT:    flat_store_byte v[0:1], v11 offset:30831; CHECK-NEXT:    flat_store_short v[0:1], v10 offset:28832; CHECK-NEXT:    s_waitcnt vmcnt(0)833; CHECK-NEXT:    flat_store_dwordx2 v[0:1], v[8:9] offset:20834; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[4:7]835; CHECK-NEXT:    s_waitcnt lgkmcnt(0)836; CHECK-NEXT:    s_setpc_b64 s[30:31]837entry:838  tail call void @llvm.memmove.p0.p4.i64(ptr addrspace(0) noundef nonnull align 8 %dst, ptr addrspace(4) noundef nonnull align 8 %src, i64 31, i1 false)839  ret void840}841 842define void @memmove_p0_p4_sz32_align_8_8(ptr addrspace(0) align 8 %dst, ptr addrspace(4) align 8 readonly %src) {843; CHECK-LABEL: memmove_p0_p4_sz32_align_8_8:844; CHECK:       ; %bb.0: ; %entry845; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)846; CHECK-NEXT:    s_clause 0x1847; CHECK-NEXT:    global_load_dwordx4 v[4:7], v[2:3], off offset:16848; CHECK-NEXT:    global_load_dwordx4 v[8:11], v[2:3], off849; CHECK-NEXT:    s_waitcnt vmcnt(1)850; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[4:7] offset:16851; CHECK-NEXT:    s_waitcnt vmcnt(0)852; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[8:11]853; CHECK-NEXT:    s_waitcnt lgkmcnt(0)854; CHECK-NEXT:    s_setpc_b64 s[30:31]855entry:856  tail call void @llvm.memmove.p0.p4.i64(ptr addrspace(0) noundef nonnull align 8 %dst, ptr addrspace(4) noundef nonnull align 8 %src, i64 32, i1 false)857  ret void858}859 860define void @memmove_p0_p4_sz16_align_16_16(ptr addrspace(0) align 16 %dst, ptr addrspace(4) align 16 readonly %src) {861; CHECK-LABEL: memmove_p0_p4_sz16_align_16_16:862; CHECK:       ; %bb.0: ; %entry863; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)864; CHECK-NEXT:    global_load_dwordx4 v[2:5], v[2:3], off865; CHECK-NEXT:    s_waitcnt vmcnt(0)866; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[2:5]867; CHECK-NEXT:    s_waitcnt lgkmcnt(0)868; CHECK-NEXT:    s_setpc_b64 s[30:31]869entry:870  tail call void @llvm.memmove.p0.p4.i64(ptr addrspace(0) noundef nonnull align 16 %dst, ptr addrspace(4) noundef nonnull align 16 %src, i64 16, i1 false)871  ret void872}873 874define void @memmove_p0_p4_sz31_align_16_16(ptr addrspace(0) align 16 %dst, ptr addrspace(4) align 16 readonly %src) {875; CHECK-LABEL: memmove_p0_p4_sz31_align_16_16:876; CHECK:       ; %bb.0: ; %entry877; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)878; CHECK-NEXT:    s_clause 0x3879; CHECK-NEXT:    global_load_ubyte v8, v[2:3], off offset:30880; CHECK-NEXT:    global_load_dword v9, v[2:3], off offset:16881; CHECK-NEXT:    global_load_ushort v10, v[2:3], off offset:28882; CHECK-NEXT:    global_load_dwordx4 v[4:7], v[2:3], off883; CHECK-NEXT:    s_waitcnt vmcnt(2)884; CHECK-NEXT:    flat_store_dword v[0:1], v9 offset:16885; CHECK-NEXT:    global_load_dword v9, v[2:3], off offset:20886; CHECK-NEXT:    s_waitcnt vmcnt(0)887; CHECK-NEXT:    flat_store_dword v[0:1], v9 offset:20888; CHECK-NEXT:    global_load_dword v2, v[2:3], off offset:24889; CHECK-NEXT:    flat_store_byte v[0:1], v8 offset:30890; CHECK-NEXT:    flat_store_short v[0:1], v10 offset:28891; CHECK-NEXT:    s_waitcnt vmcnt(0)892; CHECK-NEXT:    flat_store_dword v[0:1], v2 offset:24893; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[4:7]894; CHECK-NEXT:    s_waitcnt lgkmcnt(0)895; CHECK-NEXT:    s_setpc_b64 s[30:31]896entry:897  tail call void @llvm.memmove.p0.p4.i64(ptr addrspace(0) noundef nonnull align 16 %dst, ptr addrspace(4) noundef nonnull align 16 %src, i64 31, i1 false)898  ret void899}900 901define void @memmove_p0_p4_sz32_align_16_16(ptr addrspace(0) align 16 %dst, ptr addrspace(4) align 16 readonly %src) {902; CHECK-LABEL: memmove_p0_p4_sz32_align_16_16:903; CHECK:       ; %bb.0: ; %entry904; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)905; CHECK-NEXT:    s_clause 0x1906; CHECK-NEXT:    global_load_dwordx4 v[4:7], v[2:3], off offset:16907; CHECK-NEXT:    global_load_dwordx4 v[8:11], v[2:3], off908; CHECK-NEXT:    s_waitcnt vmcnt(1)909; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[4:7] offset:16910; CHECK-NEXT:    s_waitcnt vmcnt(0)911; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[8:11]912; CHECK-NEXT:    s_waitcnt lgkmcnt(0)913; CHECK-NEXT:    s_setpc_b64 s[30:31]914entry:915  tail call void @llvm.memmove.p0.p4.i64(ptr addrspace(0) noundef nonnull align 16 %dst, ptr addrspace(4) noundef nonnull align 16 %src, i64 32, i1 false)916  ret void917}918 919define void @memmove_p0_p5_sz16_align_1_1(ptr addrspace(0) align 1 %dst, ptr addrspace(5) align 1 readonly %src) {920; CHECK-LABEL: memmove_p0_p5_sz16_align_1_1:921; CHECK:       ; %bb.0: ; %entry922; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)923; CHECK-NEXT:    s_clause 0x3924; CHECK-NEXT:    buffer_load_dword v3, v2, s[0:3], 0 offen925; CHECK-NEXT:    buffer_load_dword v4, v2, s[0:3], 0 offen offset:4926; CHECK-NEXT:    buffer_load_dword v5, v2, s[0:3], 0 offen offset:8927; CHECK-NEXT:    buffer_load_dword v6, v2, s[0:3], 0 offen offset:12928; CHECK-NEXT:    s_waitcnt vmcnt(0)929; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[3:6]930; CHECK-NEXT:    s_waitcnt lgkmcnt(0)931; CHECK-NEXT:    s_setpc_b64 s[30:31]932entry:933  tail call void @llvm.memmove.p0.p5.i64(ptr addrspace(0) noundef nonnull align 1 %dst, ptr addrspace(5) noundef nonnull align 1 %src, i64 16, i1 false)934  ret void935}936 937define void @memmove_p0_p5_sz31_align_1_1(ptr addrspace(0) align 1 %dst, ptr addrspace(5) align 1 readonly %src) {938; CHECK-LABEL: memmove_p0_p5_sz31_align_1_1:939; CHECK:       ; %bb.0: ; %entry940; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)941; CHECK-NEXT:    s_clause 0x8942; CHECK-NEXT:    buffer_load_ubyte v10, v2, s[0:3], 0 offen offset:30943; CHECK-NEXT:    buffer_load_dword v3, v2, s[0:3], 0 offen944; CHECK-NEXT:    buffer_load_dword v7, v2, s[0:3], 0 offen offset:16945; CHECK-NEXT:    buffer_load_dword v8, v2, s[0:3], 0 offen offset:20946; CHECK-NEXT:    buffer_load_dword v9, v2, s[0:3], 0 offen offset:24947; CHECK-NEXT:    buffer_load_ushort v11, v2, s[0:3], 0 offen offset:28948; CHECK-NEXT:    buffer_load_dword v4, v2, s[0:3], 0 offen offset:4949; CHECK-NEXT:    buffer_load_dword v5, v2, s[0:3], 0 offen offset:8950; CHECK-NEXT:    buffer_load_dword v6, v2, s[0:3], 0 offen offset:12951; CHECK-NEXT:    s_waitcnt vmcnt(3)952; CHECK-NEXT:    flat_store_short v[0:1], v11 offset:28953; CHECK-NEXT:    flat_store_byte v[0:1], v10 offset:30954; CHECK-NEXT:    flat_store_dwordx3 v[0:1], v[7:9] offset:16955; CHECK-NEXT:    s_waitcnt vmcnt(0)956; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[3:6]957; CHECK-NEXT:    s_waitcnt lgkmcnt(0)958; CHECK-NEXT:    s_setpc_b64 s[30:31]959entry:960  tail call void @llvm.memmove.p0.p5.i64(ptr addrspace(0) noundef nonnull align 1 %dst, ptr addrspace(5) noundef nonnull align 1 %src, i64 31, i1 false)961  ret void962}963 964define void @memmove_p0_p5_sz32_align_1_1(ptr addrspace(0) align 1 %dst, ptr addrspace(5) align 1 readonly %src) {965; CHECK-LABEL: memmove_p0_p5_sz32_align_1_1:966; CHECK:       ; %bb.0: ; %entry967; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)968; CHECK-NEXT:    s_clause 0x7969; CHECK-NEXT:    buffer_load_dword v3, v2, s[0:3], 0 offen970; CHECK-NEXT:    buffer_load_dword v4, v2, s[0:3], 0 offen offset:4971; CHECK-NEXT:    buffer_load_dword v5, v2, s[0:3], 0 offen offset:8972; CHECK-NEXT:    buffer_load_dword v7, v2, s[0:3], 0 offen offset:16973; CHECK-NEXT:    buffer_load_dword v8, v2, s[0:3], 0 offen offset:20974; CHECK-NEXT:    buffer_load_dword v9, v2, s[0:3], 0 offen offset:24975; CHECK-NEXT:    buffer_load_dword v10, v2, s[0:3], 0 offen offset:28976; CHECK-NEXT:    buffer_load_dword v6, v2, s[0:3], 0 offen offset:12977; CHECK-NEXT:    s_waitcnt vmcnt(1)978; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[7:10] offset:16979; CHECK-NEXT:    s_waitcnt vmcnt(0)980; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[3:6]981; CHECK-NEXT:    s_waitcnt lgkmcnt(0)982; CHECK-NEXT:    s_setpc_b64 s[30:31]983entry:984  tail call void @llvm.memmove.p0.p5.i64(ptr addrspace(0) noundef nonnull align 1 %dst, ptr addrspace(5) noundef nonnull align 1 %src, i64 32, i1 false)985  ret void986}987 988define void @memmove_p0_p5_sz16_align_2_2(ptr addrspace(0) align 2 %dst, ptr addrspace(5) align 2 readonly %src) {989; CHECK-LABEL: memmove_p0_p5_sz16_align_2_2:990; CHECK:       ; %bb.0: ; %entry991; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)992; CHECK-NEXT:    s_clause 0x3993; CHECK-NEXT:    buffer_load_dword v3, v2, s[0:3], 0 offen994; CHECK-NEXT:    buffer_load_dword v4, v2, s[0:3], 0 offen offset:4995; CHECK-NEXT:    buffer_load_dword v5, v2, s[0:3], 0 offen offset:8996; CHECK-NEXT:    buffer_load_dword v6, v2, s[0:3], 0 offen offset:12997; CHECK-NEXT:    s_waitcnt vmcnt(0)998; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[3:6]999; CHECK-NEXT:    s_waitcnt lgkmcnt(0)1000; CHECK-NEXT:    s_setpc_b64 s[30:31]1001entry:1002  tail call void @llvm.memmove.p0.p5.i64(ptr addrspace(0) noundef nonnull align 2 %dst, ptr addrspace(5) noundef nonnull align 2 %src, i64 16, i1 false)1003  ret void1004}1005 1006define void @memmove_p0_p5_sz31_align_2_2(ptr addrspace(0) align 2 %dst, ptr addrspace(5) align 2 readonly %src) {1007; CHECK-LABEL: memmove_p0_p5_sz31_align_2_2:1008; CHECK:       ; %bb.0: ; %entry1009; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1010; CHECK-NEXT:    s_clause 0x81011; CHECK-NEXT:    buffer_load_ubyte v10, v2, s[0:3], 0 offen offset:301012; CHECK-NEXT:    buffer_load_dword v3, v2, s[0:3], 0 offen1013; CHECK-NEXT:    buffer_load_dword v7, v2, s[0:3], 0 offen offset:161014; CHECK-NEXT:    buffer_load_dword v8, v2, s[0:3], 0 offen offset:201015; CHECK-NEXT:    buffer_load_dword v9, v2, s[0:3], 0 offen offset:241016; CHECK-NEXT:    buffer_load_ushort v11, v2, s[0:3], 0 offen offset:281017; CHECK-NEXT:    buffer_load_dword v4, v2, s[0:3], 0 offen offset:41018; CHECK-NEXT:    buffer_load_dword v5, v2, s[0:3], 0 offen offset:81019; CHECK-NEXT:    buffer_load_dword v6, v2, s[0:3], 0 offen offset:121020; CHECK-NEXT:    s_waitcnt vmcnt(3)1021; CHECK-NEXT:    flat_store_short v[0:1], v11 offset:281022; CHECK-NEXT:    flat_store_byte v[0:1], v10 offset:301023; CHECK-NEXT:    flat_store_dwordx3 v[0:1], v[7:9] offset:161024; CHECK-NEXT:    s_waitcnt vmcnt(0)1025; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[3:6]1026; CHECK-NEXT:    s_waitcnt lgkmcnt(0)1027; CHECK-NEXT:    s_setpc_b64 s[30:31]1028entry:1029  tail call void @llvm.memmove.p0.p5.i64(ptr addrspace(0) noundef nonnull align 2 %dst, ptr addrspace(5) noundef nonnull align 2 %src, i64 31, i1 false)1030  ret void1031}1032 1033define void @memmove_p0_p5_sz32_align_2_2(ptr addrspace(0) align 2 %dst, ptr addrspace(5) align 2 readonly %src) {1034; CHECK-LABEL: memmove_p0_p5_sz32_align_2_2:1035; CHECK:       ; %bb.0: ; %entry1036; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1037; CHECK-NEXT:    s_clause 0x71038; CHECK-NEXT:    buffer_load_dword v3, v2, s[0:3], 0 offen1039; CHECK-NEXT:    buffer_load_dword v4, v2, s[0:3], 0 offen offset:41040; CHECK-NEXT:    buffer_load_dword v5, v2, s[0:3], 0 offen offset:81041; CHECK-NEXT:    buffer_load_dword v7, v2, s[0:3], 0 offen offset:161042; CHECK-NEXT:    buffer_load_dword v8, v2, s[0:3], 0 offen offset:201043; CHECK-NEXT:    buffer_load_dword v9, v2, s[0:3], 0 offen offset:241044; CHECK-NEXT:    buffer_load_dword v10, v2, s[0:3], 0 offen offset:281045; CHECK-NEXT:    buffer_load_dword v6, v2, s[0:3], 0 offen offset:121046; CHECK-NEXT:    s_waitcnt vmcnt(1)1047; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[7:10] offset:161048; CHECK-NEXT:    s_waitcnt vmcnt(0)1049; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[3:6]1050; CHECK-NEXT:    s_waitcnt lgkmcnt(0)1051; CHECK-NEXT:    s_setpc_b64 s[30:31]1052entry:1053  tail call void @llvm.memmove.p0.p5.i64(ptr addrspace(0) noundef nonnull align 2 %dst, ptr addrspace(5) noundef nonnull align 2 %src, i64 32, i1 false)1054  ret void1055}1056 1057define void @memmove_p0_p5_sz16_align_8_8(ptr addrspace(0) align 8 %dst, ptr addrspace(5) align 8 readonly %src) {1058; CHECK-LABEL: memmove_p0_p5_sz16_align_8_8:1059; CHECK:       ; %bb.0: ; %entry1060; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1061; CHECK-NEXT:    s_clause 0x31062; CHECK-NEXT:    buffer_load_dword v3, v2, s[0:3], 0 offen1063; CHECK-NEXT:    buffer_load_dword v4, v2, s[0:3], 0 offen offset:41064; CHECK-NEXT:    buffer_load_dword v5, v2, s[0:3], 0 offen offset:81065; CHECK-NEXT:    buffer_load_dword v6, v2, s[0:3], 0 offen offset:121066; CHECK-NEXT:    s_waitcnt vmcnt(0)1067; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[3:6]1068; CHECK-NEXT:    s_waitcnt lgkmcnt(0)1069; CHECK-NEXT:    s_setpc_b64 s[30:31]1070entry:1071  tail call void @llvm.memmove.p0.p5.i64(ptr addrspace(0) noundef nonnull align 8 %dst, ptr addrspace(5) noundef nonnull align 8 %src, i64 16, i1 false)1072  ret void1073}1074 1075define void @memmove_p0_p5_sz31_align_8_8(ptr addrspace(0) align 8 %dst, ptr addrspace(5) align 8 readonly %src) {1076; CHECK-LABEL: memmove_p0_p5_sz31_align_8_8:1077; CHECK:       ; %bb.0: ; %entry1078; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1079; CHECK-NEXT:    s_clause 0x81080; CHECK-NEXT:    buffer_load_ubyte v10, v2, s[0:3], 0 offen offset:301081; CHECK-NEXT:    buffer_load_dword v3, v2, s[0:3], 0 offen1082; CHECK-NEXT:    buffer_load_dword v4, v2, s[0:3], 0 offen offset:41083; CHECK-NEXT:    buffer_load_dword v7, v2, s[0:3], 0 offen offset:161084; CHECK-NEXT:    buffer_load_dword v8, v2, s[0:3], 0 offen offset:201085; CHECK-NEXT:    buffer_load_dword v9, v2, s[0:3], 0 offen offset:241086; CHECK-NEXT:    buffer_load_dword v5, v2, s[0:3], 0 offen offset:81087; CHECK-NEXT:    buffer_load_ushort v11, v2, s[0:3], 0 offen offset:281088; CHECK-NEXT:    buffer_load_dword v6, v2, s[0:3], 0 offen offset:121089; CHECK-NEXT:    s_waitcnt vmcnt(3)1090; CHECK-NEXT:    flat_store_dwordx3 v[0:1], v[7:9] offset:161091; CHECK-NEXT:    flat_store_byte v[0:1], v10 offset:301092; CHECK-NEXT:    s_waitcnt vmcnt(1)1093; CHECK-NEXT:    flat_store_short v[0:1], v11 offset:281094; CHECK-NEXT:    s_waitcnt vmcnt(0)1095; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[3:6]1096; CHECK-NEXT:    s_waitcnt lgkmcnt(0)1097; CHECK-NEXT:    s_setpc_b64 s[30:31]1098entry:1099  tail call void @llvm.memmove.p0.p5.i64(ptr addrspace(0) noundef nonnull align 8 %dst, ptr addrspace(5) noundef nonnull align 8 %src, i64 31, i1 false)1100  ret void1101}1102 1103define void @memmove_p0_p5_sz32_align_8_8(ptr addrspace(0) align 8 %dst, ptr addrspace(5) align 8 readonly %src) {1104; CHECK-LABEL: memmove_p0_p5_sz32_align_8_8:1105; CHECK:       ; %bb.0: ; %entry1106; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1107; CHECK-NEXT:    s_clause 0x71108; CHECK-NEXT:    buffer_load_dword v3, v2, s[0:3], 0 offen1109; CHECK-NEXT:    buffer_load_dword v4, v2, s[0:3], 0 offen offset:41110; CHECK-NEXT:    buffer_load_dword v5, v2, s[0:3], 0 offen offset:81111; CHECK-NEXT:    buffer_load_dword v6, v2, s[0:3], 0 offen offset:121112; CHECK-NEXT:    buffer_load_dword v7, v2, s[0:3], 0 offen offset:161113; CHECK-NEXT:    buffer_load_dword v8, v2, s[0:3], 0 offen offset:201114; CHECK-NEXT:    buffer_load_dword v9, v2, s[0:3], 0 offen offset:241115; CHECK-NEXT:    buffer_load_dword v10, v2, s[0:3], 0 offen offset:281116; CHECK-NEXT:    s_waitcnt vmcnt(4)1117; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[3:6]1118; CHECK-NEXT:    s_waitcnt vmcnt(0)1119; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[7:10] offset:161120; CHECK-NEXT:    s_waitcnt lgkmcnt(0)1121; CHECK-NEXT:    s_setpc_b64 s[30:31]1122entry:1123  tail call void @llvm.memmove.p0.p5.i64(ptr addrspace(0) noundef nonnull align 8 %dst, ptr addrspace(5) noundef nonnull align 8 %src, i64 32, i1 false)1124  ret void1125}1126 1127define void @memmove_p0_p5_sz16_align_16_16(ptr addrspace(0) align 16 %dst, ptr addrspace(5) align 16 readonly %src) {1128; CHECK-LABEL: memmove_p0_p5_sz16_align_16_16:1129; CHECK:       ; %bb.0: ; %entry1130; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1131; CHECK-NEXT:    s_clause 0x31132; CHECK-NEXT:    buffer_load_dword v3, v2, s[0:3], 0 offen1133; CHECK-NEXT:    buffer_load_dword v4, v2, s[0:3], 0 offen offset:41134; CHECK-NEXT:    buffer_load_dword v5, v2, s[0:3], 0 offen offset:81135; CHECK-NEXT:    buffer_load_dword v6, v2, s[0:3], 0 offen offset:121136; CHECK-NEXT:    s_waitcnt vmcnt(0)1137; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[3:6]1138; CHECK-NEXT:    s_waitcnt lgkmcnt(0)1139; CHECK-NEXT:    s_setpc_b64 s[30:31]1140entry:1141  tail call void @llvm.memmove.p0.p5.i64(ptr addrspace(0) noundef nonnull align 16 %dst, ptr addrspace(5) noundef nonnull align 16 %src, i64 16, i1 false)1142  ret void1143}1144 1145define void @memmove_p0_p5_sz31_align_16_16(ptr addrspace(0) align 16 %dst, ptr addrspace(5) align 16 readonly %src) {1146; CHECK-LABEL: memmove_p0_p5_sz31_align_16_16:1147; CHECK:       ; %bb.0: ; %entry1148; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1149; CHECK-NEXT:    s_clause 0x81150; CHECK-NEXT:    buffer_load_ubyte v10, v2, s[0:3], 0 offen offset:301151; CHECK-NEXT:    buffer_load_dword v3, v2, s[0:3], 0 offen1152; CHECK-NEXT:    buffer_load_dword v4, v2, s[0:3], 0 offen offset:41153; CHECK-NEXT:    buffer_load_dword v7, v2, s[0:3], 0 offen offset:161154; CHECK-NEXT:    buffer_load_dword v8, v2, s[0:3], 0 offen offset:201155; CHECK-NEXT:    buffer_load_dword v9, v2, s[0:3], 0 offen offset:241156; CHECK-NEXT:    buffer_load_dword v5, v2, s[0:3], 0 offen offset:81157; CHECK-NEXT:    buffer_load_ushort v11, v2, s[0:3], 0 offen offset:281158; CHECK-NEXT:    buffer_load_dword v6, v2, s[0:3], 0 offen offset:121159; CHECK-NEXT:    s_waitcnt vmcnt(3)1160; CHECK-NEXT:    flat_store_dwordx3 v[0:1], v[7:9] offset:161161; CHECK-NEXT:    flat_store_byte v[0:1], v10 offset:301162; CHECK-NEXT:    s_waitcnt vmcnt(1)1163; CHECK-NEXT:    flat_store_short v[0:1], v11 offset:281164; CHECK-NEXT:    s_waitcnt vmcnt(0)1165; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[3:6]1166; CHECK-NEXT:    s_waitcnt lgkmcnt(0)1167; CHECK-NEXT:    s_setpc_b64 s[30:31]1168entry:1169  tail call void @llvm.memmove.p0.p5.i64(ptr addrspace(0) noundef nonnull align 16 %dst, ptr addrspace(5) noundef nonnull align 16 %src, i64 31, i1 false)1170  ret void1171}1172 1173define void @memmove_p0_p5_sz32_align_16_16(ptr addrspace(0) align 16 %dst, ptr addrspace(5) align 16 readonly %src) {1174; CHECK-LABEL: memmove_p0_p5_sz32_align_16_16:1175; CHECK:       ; %bb.0: ; %entry1176; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1177; CHECK-NEXT:    s_clause 0x71178; CHECK-NEXT:    buffer_load_dword v3, v2, s[0:3], 0 offen1179; CHECK-NEXT:    buffer_load_dword v4, v2, s[0:3], 0 offen offset:41180; CHECK-NEXT:    buffer_load_dword v5, v2, s[0:3], 0 offen offset:81181; CHECK-NEXT:    buffer_load_dword v6, v2, s[0:3], 0 offen offset:121182; CHECK-NEXT:    buffer_load_dword v7, v2, s[0:3], 0 offen offset:161183; CHECK-NEXT:    buffer_load_dword v8, v2, s[0:3], 0 offen offset:201184; CHECK-NEXT:    buffer_load_dword v9, v2, s[0:3], 0 offen offset:241185; CHECK-NEXT:    buffer_load_dword v10, v2, s[0:3], 0 offen offset:281186; CHECK-NEXT:    s_waitcnt vmcnt(4)1187; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[3:6]1188; CHECK-NEXT:    s_waitcnt vmcnt(0)1189; CHECK-NEXT:    flat_store_dwordx4 v[0:1], v[7:10] offset:161190; CHECK-NEXT:    s_waitcnt lgkmcnt(0)1191; CHECK-NEXT:    s_setpc_b64 s[30:31]1192entry:1193  tail call void @llvm.memmove.p0.p5.i64(ptr addrspace(0) noundef nonnull align 16 %dst, ptr addrspace(5) noundef nonnull align 16 %src, i64 32, i1 false)1194  ret void1195}1196 1197define void @memmove_p1_p0_sz16_align_1_1(ptr addrspace(1) align 1 %dst, ptr addrspace(0) align 1 readonly %src) {1198; CHECK-LABEL: memmove_p1_p0_sz16_align_1_1:1199; CHECK:       ; %bb.0: ; %entry1200; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1201; CHECK-NEXT:    flat_load_dwordx4 v[2:5], v[2:3]1202; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1203; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off1204; CHECK-NEXT:    s_setpc_b64 s[30:31]1205entry:1206  tail call void @llvm.memmove.p1.p0.i64(ptr addrspace(1) noundef nonnull align 1 %dst, ptr addrspace(0) noundef nonnull align 1 %src, i64 16, i1 false)1207  ret void1208}1209 1210define void @memmove_p1_p0_sz31_align_1_1(ptr addrspace(1) align 1 %dst, ptr addrspace(0) align 1 readonly %src) {1211; CHECK-LABEL: memmove_p1_p0_sz31_align_1_1:1212; CHECK:       ; %bb.0: ; %entry1213; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1214; CHECK-NEXT:    s_clause 0x31215; CHECK-NEXT:    flat_load_ubyte v9, v[2:3] offset:301216; CHECK-NEXT:    flat_load_ushort v10, v[2:3] offset:281217; CHECK-NEXT:    flat_load_dwordx3 v[6:8], v[2:3] offset:161218; CHECK-NEXT:    flat_load_dwordx4 v[2:5], v[2:3]1219; CHECK-NEXT:    s_waitcnt vmcnt(3) lgkmcnt(3)1220; CHECK-NEXT:    global_store_byte v[0:1], v9, off offset:301221; CHECK-NEXT:    s_waitcnt vmcnt(2) lgkmcnt(2)1222; CHECK-NEXT:    global_store_short v[0:1], v10, off offset:281223; CHECK-NEXT:    s_waitcnt vmcnt(1) lgkmcnt(1)1224; CHECK-NEXT:    global_store_dwordx3 v[0:1], v[6:8], off offset:161225; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1226; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off1227; CHECK-NEXT:    s_setpc_b64 s[30:31]1228entry:1229  tail call void @llvm.memmove.p1.p0.i64(ptr addrspace(1) noundef nonnull align 1 %dst, ptr addrspace(0) noundef nonnull align 1 %src, i64 31, i1 false)1230  ret void1231}1232 1233define void @memmove_p1_p0_sz32_align_1_1(ptr addrspace(1) align 1 %dst, ptr addrspace(0) align 1 readonly %src) {1234; CHECK-LABEL: memmove_p1_p0_sz32_align_1_1:1235; CHECK:       ; %bb.0: ; %entry1236; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1237; CHECK-NEXT:    s_clause 0x11238; CHECK-NEXT:    flat_load_dwordx4 v[4:7], v[2:3] offset:161239; CHECK-NEXT:    flat_load_dwordx4 v[8:11], v[2:3]1240; CHECK-NEXT:    s_waitcnt vmcnt(1) lgkmcnt(1)1241; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:161242; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1243; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[8:11], off1244; CHECK-NEXT:    s_setpc_b64 s[30:31]1245entry:1246  tail call void @llvm.memmove.p1.p0.i64(ptr addrspace(1) noundef nonnull align 1 %dst, ptr addrspace(0) noundef nonnull align 1 %src, i64 32, i1 false)1247  ret void1248}1249 1250define void @memmove_p1_p0_sz16_align_2_2(ptr addrspace(1) align 2 %dst, ptr addrspace(0) align 2 readonly %src) {1251; CHECK-LABEL: memmove_p1_p0_sz16_align_2_2:1252; CHECK:       ; %bb.0: ; %entry1253; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1254; CHECK-NEXT:    flat_load_dwordx4 v[2:5], v[2:3]1255; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1256; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off1257; CHECK-NEXT:    s_setpc_b64 s[30:31]1258entry:1259  tail call void @llvm.memmove.p1.p0.i64(ptr addrspace(1) noundef nonnull align 2 %dst, ptr addrspace(0) noundef nonnull align 2 %src, i64 16, i1 false)1260  ret void1261}1262 1263define void @memmove_p1_p0_sz31_align_2_2(ptr addrspace(1) align 2 %dst, ptr addrspace(0) align 2 readonly %src) {1264; CHECK-LABEL: memmove_p1_p0_sz31_align_2_2:1265; CHECK:       ; %bb.0: ; %entry1266; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1267; CHECK-NEXT:    s_clause 0x31268; CHECK-NEXT:    flat_load_ubyte v9, v[2:3] offset:301269; CHECK-NEXT:    flat_load_ushort v10, v[2:3] offset:281270; CHECK-NEXT:    flat_load_dwordx3 v[6:8], v[2:3] offset:161271; CHECK-NEXT:    flat_load_dwordx4 v[2:5], v[2:3]1272; CHECK-NEXT:    s_waitcnt vmcnt(3) lgkmcnt(3)1273; CHECK-NEXT:    global_store_byte v[0:1], v9, off offset:301274; CHECK-NEXT:    s_waitcnt vmcnt(2) lgkmcnt(2)1275; CHECK-NEXT:    global_store_short v[0:1], v10, off offset:281276; CHECK-NEXT:    s_waitcnt vmcnt(1) lgkmcnt(1)1277; CHECK-NEXT:    global_store_dwordx3 v[0:1], v[6:8], off offset:161278; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1279; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off1280; CHECK-NEXT:    s_setpc_b64 s[30:31]1281entry:1282  tail call void @llvm.memmove.p1.p0.i64(ptr addrspace(1) noundef nonnull align 2 %dst, ptr addrspace(0) noundef nonnull align 2 %src, i64 31, i1 false)1283  ret void1284}1285 1286define void @memmove_p1_p0_sz32_align_2_2(ptr addrspace(1) align 2 %dst, ptr addrspace(0) align 2 readonly %src) {1287; CHECK-LABEL: memmove_p1_p0_sz32_align_2_2:1288; CHECK:       ; %bb.0: ; %entry1289; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1290; CHECK-NEXT:    s_clause 0x11291; CHECK-NEXT:    flat_load_dwordx4 v[4:7], v[2:3] offset:161292; CHECK-NEXT:    flat_load_dwordx4 v[8:11], v[2:3]1293; CHECK-NEXT:    s_waitcnt vmcnt(1) lgkmcnt(1)1294; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:161295; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1296; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[8:11], off1297; CHECK-NEXT:    s_setpc_b64 s[30:31]1298entry:1299  tail call void @llvm.memmove.p1.p0.i64(ptr addrspace(1) noundef nonnull align 2 %dst, ptr addrspace(0) noundef nonnull align 2 %src, i64 32, i1 false)1300  ret void1301}1302 1303define void @memmove_p1_p0_sz16_align_8_8(ptr addrspace(1) align 8 %dst, ptr addrspace(0) align 8 readonly %src) {1304; CHECK-LABEL: memmove_p1_p0_sz16_align_8_8:1305; CHECK:       ; %bb.0: ; %entry1306; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1307; CHECK-NEXT:    flat_load_dwordx4 v[2:5], v[2:3]1308; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1309; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off1310; CHECK-NEXT:    s_setpc_b64 s[30:31]1311entry:1312  tail call void @llvm.memmove.p1.p0.i64(ptr addrspace(1) noundef nonnull align 8 %dst, ptr addrspace(0) noundef nonnull align 8 %src, i64 16, i1 false)1313  ret void1314}1315 1316define void @memmove_p1_p0_sz31_align_8_8(ptr addrspace(1) align 8 %dst, ptr addrspace(0) align 8 readonly %src) {1317; CHECK-LABEL: memmove_p1_p0_sz31_align_8_8:1318; CHECK:       ; %bb.0: ; %entry1319; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1320; CHECK-NEXT:    s_clause 0x41321; CHECK-NEXT:    flat_load_dword v8, v[2:3] offset:161322; CHECK-NEXT:    flat_load_dwordx4 v[4:7], v[2:3]1323; CHECK-NEXT:    flat_load_ushort v10, v[2:3] offset:281324; CHECK-NEXT:    flat_load_dword v9, v[2:3] offset:241325; CHECK-NEXT:    flat_load_ubyte v11, v[2:3] offset:301326; CHECK-NEXT:    s_waitcnt vmcnt(4) lgkmcnt(4)1327; CHECK-NEXT:    global_store_dword v[0:1], v8, off offset:161328; CHECK-NEXT:    flat_load_dword v8, v[2:3] offset:201329; CHECK-NEXT:    s_waitcnt vmcnt(1) lgkmcnt(1)1330; CHECK-NEXT:    global_store_byte v[0:1], v11, off offset:301331; CHECK-NEXT:    global_store_short v[0:1], v10, off offset:281332; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1333; CHECK-NEXT:    global_store_dwordx2 v[0:1], v[8:9], off offset:201334; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off1335; CHECK-NEXT:    s_setpc_b64 s[30:31]1336entry:1337  tail call void @llvm.memmove.p1.p0.i64(ptr addrspace(1) noundef nonnull align 8 %dst, ptr addrspace(0) noundef nonnull align 8 %src, i64 31, i1 false)1338  ret void1339}1340 1341define void @memmove_p1_p0_sz32_align_8_8(ptr addrspace(1) align 8 %dst, ptr addrspace(0) align 8 readonly %src) {1342; CHECK-LABEL: memmove_p1_p0_sz32_align_8_8:1343; CHECK:       ; %bb.0: ; %entry1344; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1345; CHECK-NEXT:    s_clause 0x11346; CHECK-NEXT:    flat_load_dwordx4 v[4:7], v[2:3] offset:161347; CHECK-NEXT:    flat_load_dwordx4 v[8:11], v[2:3]1348; CHECK-NEXT:    s_waitcnt vmcnt(1) lgkmcnt(1)1349; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:161350; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1351; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[8:11], off1352; CHECK-NEXT:    s_setpc_b64 s[30:31]1353entry:1354  tail call void @llvm.memmove.p1.p0.i64(ptr addrspace(1) noundef nonnull align 8 %dst, ptr addrspace(0) noundef nonnull align 8 %src, i64 32, i1 false)1355  ret void1356}1357 1358define void @memmove_p1_p0_sz16_align_16_16(ptr addrspace(1) align 16 %dst, ptr addrspace(0) align 16 readonly %src) {1359; CHECK-LABEL: memmove_p1_p0_sz16_align_16_16:1360; CHECK:       ; %bb.0: ; %entry1361; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1362; CHECK-NEXT:    flat_load_dwordx4 v[2:5], v[2:3]1363; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1364; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off1365; CHECK-NEXT:    s_setpc_b64 s[30:31]1366entry:1367  tail call void @llvm.memmove.p1.p0.i64(ptr addrspace(1) noundef nonnull align 16 %dst, ptr addrspace(0) noundef nonnull align 16 %src, i64 16, i1 false)1368  ret void1369}1370 1371define void @memmove_p1_p0_sz31_align_16_16(ptr addrspace(1) align 16 %dst, ptr addrspace(0) align 16 readonly %src) {1372; CHECK-LABEL: memmove_p1_p0_sz31_align_16_16:1373; CHECK:       ; %bb.0: ; %entry1374; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1375; CHECK-NEXT:    s_clause 0x31376; CHECK-NEXT:    flat_load_ubyte v8, v[2:3] offset:301377; CHECK-NEXT:    flat_load_dword v9, v[2:3] offset:161378; CHECK-NEXT:    flat_load_ushort v10, v[2:3] offset:281379; CHECK-NEXT:    flat_load_dwordx4 v[4:7], v[2:3]1380; CHECK-NEXT:    s_waitcnt vmcnt(2) lgkmcnt(2)1381; CHECK-NEXT:    global_store_dword v[0:1], v9, off offset:161382; CHECK-NEXT:    flat_load_dword v9, v[2:3] offset:201383; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1384; CHECK-NEXT:    global_store_dword v[0:1], v9, off offset:201385; CHECK-NEXT:    flat_load_dword v2, v[2:3] offset:241386; CHECK-NEXT:    global_store_byte v[0:1], v8, off offset:301387; CHECK-NEXT:    global_store_short v[0:1], v10, off offset:281388; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1389; CHECK-NEXT:    global_store_dword v[0:1], v2, off offset:241390; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off1391; CHECK-NEXT:    s_setpc_b64 s[30:31]1392entry:1393  tail call void @llvm.memmove.p1.p0.i64(ptr addrspace(1) noundef nonnull align 16 %dst, ptr addrspace(0) noundef nonnull align 16 %src, i64 31, i1 false)1394  ret void1395}1396 1397define void @memmove_p1_p0_sz32_align_16_16(ptr addrspace(1) align 16 %dst, ptr addrspace(0) align 16 readonly %src) {1398; CHECK-LABEL: memmove_p1_p0_sz32_align_16_16:1399; CHECK:       ; %bb.0: ; %entry1400; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1401; CHECK-NEXT:    s_clause 0x11402; CHECK-NEXT:    flat_load_dwordx4 v[4:7], v[2:3] offset:161403; CHECK-NEXT:    flat_load_dwordx4 v[8:11], v[2:3]1404; CHECK-NEXT:    s_waitcnt vmcnt(1) lgkmcnt(1)1405; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:161406; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)1407; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[8:11], off1408; CHECK-NEXT:    s_setpc_b64 s[30:31]1409entry:1410  tail call void @llvm.memmove.p1.p0.i64(ptr addrspace(1) noundef nonnull align 16 %dst, ptr addrspace(0) noundef nonnull align 16 %src, i64 32, i1 false)1411  ret void1412}1413 1414define void @memmove_p1_p1_sz16_align_1_1(ptr addrspace(1) align 1 %dst, ptr addrspace(1) align 1 readonly %src) {1415; CHECK-LABEL: memmove_p1_p1_sz16_align_1_1:1416; CHECK:       ; %bb.0: ; %entry1417; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1418; CHECK-NEXT:    global_load_dwordx4 v[2:5], v[2:3], off1419; CHECK-NEXT:    s_waitcnt vmcnt(0)1420; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off1421; CHECK-NEXT:    s_setpc_b64 s[30:31]1422entry:1423  tail call void @llvm.memmove.p1.p1.i64(ptr addrspace(1) noundef nonnull align 1 %dst, ptr addrspace(1) noundef nonnull align 1 %src, i64 16, i1 false)1424  ret void1425}1426 1427define void @memmove_p1_p1_sz31_align_1_1(ptr addrspace(1) align 1 %dst, ptr addrspace(1) align 1 readonly %src) {1428; CHECK-LABEL: memmove_p1_p1_sz31_align_1_1:1429; CHECK:       ; %bb.0: ; %entry1430; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1431; CHECK-NEXT:    s_clause 0x31432; CHECK-NEXT:    global_load_ubyte v9, v[2:3], off offset:301433; CHECK-NEXT:    global_load_ushort v10, v[2:3], off offset:281434; CHECK-NEXT:    global_load_dwordx3 v[6:8], v[2:3], off offset:161435; CHECK-NEXT:    global_load_dwordx4 v[2:5], v[2:3], off1436; CHECK-NEXT:    s_waitcnt vmcnt(3)1437; CHECK-NEXT:    global_store_byte v[0:1], v9, off offset:301438; CHECK-NEXT:    s_waitcnt vmcnt(2)1439; CHECK-NEXT:    global_store_short v[0:1], v10, off offset:281440; CHECK-NEXT:    s_waitcnt vmcnt(1)1441; CHECK-NEXT:    global_store_dwordx3 v[0:1], v[6:8], off offset:161442; CHECK-NEXT:    s_waitcnt vmcnt(0)1443; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off1444; CHECK-NEXT:    s_setpc_b64 s[30:31]1445entry:1446  tail call void @llvm.memmove.p1.p1.i64(ptr addrspace(1) noundef nonnull align 1 %dst, ptr addrspace(1) noundef nonnull align 1 %src, i64 31, i1 false)1447  ret void1448}1449 1450define void @memmove_p1_p1_sz32_align_1_1(ptr addrspace(1) align 1 %dst, ptr addrspace(1) align 1 readonly %src) {1451; CHECK-LABEL: memmove_p1_p1_sz32_align_1_1:1452; CHECK:       ; %bb.0: ; %entry1453; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1454; CHECK-NEXT:    s_clause 0x11455; CHECK-NEXT:    global_load_dwordx4 v[4:7], v[2:3], off offset:161456; CHECK-NEXT:    global_load_dwordx4 v[8:11], v[2:3], off1457; CHECK-NEXT:    s_waitcnt vmcnt(1)1458; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:161459; CHECK-NEXT:    s_waitcnt vmcnt(0)1460; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[8:11], off1461; CHECK-NEXT:    s_setpc_b64 s[30:31]1462entry:1463  tail call void @llvm.memmove.p1.p1.i64(ptr addrspace(1) noundef nonnull align 1 %dst, ptr addrspace(1) noundef nonnull align 1 %src, i64 32, i1 false)1464  ret void1465}1466 1467define void @memmove_p1_p1_sz16_align_2_2(ptr addrspace(1) align 2 %dst, ptr addrspace(1) align 2 readonly %src) {1468; CHECK-LABEL: memmove_p1_p1_sz16_align_2_2:1469; CHECK:       ; %bb.0: ; %entry1470; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1471; CHECK-NEXT:    global_load_dwordx4 v[2:5], v[2:3], off1472; CHECK-NEXT:    s_waitcnt vmcnt(0)1473; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off1474; CHECK-NEXT:    s_setpc_b64 s[30:31]1475entry:1476  tail call void @llvm.memmove.p1.p1.i64(ptr addrspace(1) noundef nonnull align 2 %dst, ptr addrspace(1) noundef nonnull align 2 %src, i64 16, i1 false)1477  ret void1478}1479 1480define void @memmove_p1_p1_sz31_align_2_2(ptr addrspace(1) align 2 %dst, ptr addrspace(1) align 2 readonly %src) {1481; CHECK-LABEL: memmove_p1_p1_sz31_align_2_2:1482; CHECK:       ; %bb.0: ; %entry1483; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1484; CHECK-NEXT:    s_clause 0x31485; CHECK-NEXT:    global_load_ubyte v9, v[2:3], off offset:301486; CHECK-NEXT:    global_load_ushort v10, v[2:3], off offset:281487; CHECK-NEXT:    global_load_dwordx3 v[6:8], v[2:3], off offset:161488; CHECK-NEXT:    global_load_dwordx4 v[2:5], v[2:3], off1489; CHECK-NEXT:    s_waitcnt vmcnt(3)1490; CHECK-NEXT:    global_store_byte v[0:1], v9, off offset:301491; CHECK-NEXT:    s_waitcnt vmcnt(2)1492; CHECK-NEXT:    global_store_short v[0:1], v10, off offset:281493; CHECK-NEXT:    s_waitcnt vmcnt(1)1494; CHECK-NEXT:    global_store_dwordx3 v[0:1], v[6:8], off offset:161495; CHECK-NEXT:    s_waitcnt vmcnt(0)1496; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off1497; CHECK-NEXT:    s_setpc_b64 s[30:31]1498entry:1499  tail call void @llvm.memmove.p1.p1.i64(ptr addrspace(1) noundef nonnull align 2 %dst, ptr addrspace(1) noundef nonnull align 2 %src, i64 31, i1 false)1500  ret void1501}1502 1503define void @memmove_p1_p1_sz32_align_2_2(ptr addrspace(1) align 2 %dst, ptr addrspace(1) align 2 readonly %src) {1504; CHECK-LABEL: memmove_p1_p1_sz32_align_2_2:1505; CHECK:       ; %bb.0: ; %entry1506; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1507; CHECK-NEXT:    s_clause 0x11508; CHECK-NEXT:    global_load_dwordx4 v[4:7], v[2:3], off offset:161509; CHECK-NEXT:    global_load_dwordx4 v[8:11], v[2:3], off1510; CHECK-NEXT:    s_waitcnt vmcnt(1)1511; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:161512; CHECK-NEXT:    s_waitcnt vmcnt(0)1513; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[8:11], off1514; CHECK-NEXT:    s_setpc_b64 s[30:31]1515entry:1516  tail call void @llvm.memmove.p1.p1.i64(ptr addrspace(1) noundef nonnull align 2 %dst, ptr addrspace(1) noundef nonnull align 2 %src, i64 32, i1 false)1517  ret void1518}1519 1520define void @memmove_p1_p1_sz16_align_8_8(ptr addrspace(1) align 8 %dst, ptr addrspace(1) align 8 readonly %src) {1521; CHECK-LABEL: memmove_p1_p1_sz16_align_8_8:1522; CHECK:       ; %bb.0: ; %entry1523; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1524; CHECK-NEXT:    global_load_dwordx4 v[2:5], v[2:3], off1525; CHECK-NEXT:    s_waitcnt vmcnt(0)1526; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off1527; CHECK-NEXT:    s_setpc_b64 s[30:31]1528entry:1529  tail call void @llvm.memmove.p1.p1.i64(ptr addrspace(1) noundef nonnull align 8 %dst, ptr addrspace(1) noundef nonnull align 8 %src, i64 16, i1 false)1530  ret void1531}1532 1533define void @memmove_p1_p1_sz31_align_8_8(ptr addrspace(1) align 8 %dst, ptr addrspace(1) align 8 readonly %src) {1534; CHECK-LABEL: memmove_p1_p1_sz31_align_8_8:1535; CHECK:       ; %bb.0: ; %entry1536; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1537; CHECK-NEXT:    s_clause 0x41538; CHECK-NEXT:    global_load_dword v8, v[2:3], off offset:161539; CHECK-NEXT:    global_load_dwordx4 v[4:7], v[2:3], off1540; CHECK-NEXT:    global_load_ushort v10, v[2:3], off offset:281541; CHECK-NEXT:    global_load_dword v9, v[2:3], off offset:241542; CHECK-NEXT:    global_load_ubyte v11, v[2:3], off offset:301543; CHECK-NEXT:    s_waitcnt vmcnt(4)1544; CHECK-NEXT:    global_store_dword v[0:1], v8, off offset:161545; CHECK-NEXT:    global_load_dword v8, v[2:3], off offset:201546; CHECK-NEXT:    s_waitcnt vmcnt(1)1547; CHECK-NEXT:    global_store_byte v[0:1], v11, off offset:301548; CHECK-NEXT:    global_store_short v[0:1], v10, off offset:281549; CHECK-NEXT:    s_waitcnt vmcnt(0)1550; CHECK-NEXT:    global_store_dwordx2 v[0:1], v[8:9], off offset:201551; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off1552; CHECK-NEXT:    s_setpc_b64 s[30:31]1553entry:1554  tail call void @llvm.memmove.p1.p1.i64(ptr addrspace(1) noundef nonnull align 8 %dst, ptr addrspace(1) noundef nonnull align 8 %src, i64 31, i1 false)1555  ret void1556}1557 1558define void @memmove_p1_p1_sz32_align_8_8(ptr addrspace(1) align 8 %dst, ptr addrspace(1) align 8 readonly %src) {1559; CHECK-LABEL: memmove_p1_p1_sz32_align_8_8:1560; CHECK:       ; %bb.0: ; %entry1561; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1562; CHECK-NEXT:    s_clause 0x11563; CHECK-NEXT:    global_load_dwordx4 v[4:7], v[2:3], off offset:161564; CHECK-NEXT:    global_load_dwordx4 v[8:11], v[2:3], off1565; CHECK-NEXT:    s_waitcnt vmcnt(1)1566; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:161567; CHECK-NEXT:    s_waitcnt vmcnt(0)1568; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[8:11], off1569; CHECK-NEXT:    s_setpc_b64 s[30:31]1570entry:1571  tail call void @llvm.memmove.p1.p1.i64(ptr addrspace(1) noundef nonnull align 8 %dst, ptr addrspace(1) noundef nonnull align 8 %src, i64 32, i1 false)1572  ret void1573}1574 1575define void @memmove_p1_p1_sz16_align_16_16(ptr addrspace(1) align 16 %dst, ptr addrspace(1) align 16 readonly %src) {1576; CHECK-LABEL: memmove_p1_p1_sz16_align_16_16:1577; CHECK:       ; %bb.0: ; %entry1578; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1579; CHECK-NEXT:    global_load_dwordx4 v[2:5], v[2:3], off1580; CHECK-NEXT:    s_waitcnt vmcnt(0)1581; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off1582; CHECK-NEXT:    s_setpc_b64 s[30:31]1583entry:1584  tail call void @llvm.memmove.p1.p1.i64(ptr addrspace(1) noundef nonnull align 16 %dst, ptr addrspace(1) noundef nonnull align 16 %src, i64 16, i1 false)1585  ret void1586}1587 1588define void @memmove_p1_p1_sz31_align_16_16(ptr addrspace(1) align 16 %dst, ptr addrspace(1) align 16 readonly %src) {1589; CHECK-LABEL: memmove_p1_p1_sz31_align_16_16:1590; CHECK:       ; %bb.0: ; %entry1591; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1592; CHECK-NEXT:    s_clause 0x31593; CHECK-NEXT:    global_load_ubyte v8, v[2:3], off offset:301594; CHECK-NEXT:    global_load_dword v9, v[2:3], off offset:161595; CHECK-NEXT:    global_load_ushort v10, v[2:3], off offset:281596; CHECK-NEXT:    global_load_dwordx4 v[4:7], v[2:3], off1597; CHECK-NEXT:    s_waitcnt vmcnt(2)1598; CHECK-NEXT:    global_store_dword v[0:1], v9, off offset:161599; CHECK-NEXT:    global_load_dword v9, v[2:3], off offset:201600; CHECK-NEXT:    s_waitcnt vmcnt(0)1601; CHECK-NEXT:    global_store_dword v[0:1], v9, off offset:201602; CHECK-NEXT:    global_load_dword v2, v[2:3], off offset:241603; CHECK-NEXT:    global_store_byte v[0:1], v8, off offset:301604; CHECK-NEXT:    global_store_short v[0:1], v10, off offset:281605; CHECK-NEXT:    s_waitcnt vmcnt(0)1606; CHECK-NEXT:    global_store_dword v[0:1], v2, off offset:241607; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off1608; CHECK-NEXT:    s_setpc_b64 s[30:31]1609entry:1610  tail call void @llvm.memmove.p1.p1.i64(ptr addrspace(1) noundef nonnull align 16 %dst, ptr addrspace(1) noundef nonnull align 16 %src, i64 31, i1 false)1611  ret void1612}1613 1614define void @memmove_p1_p1_sz32_align_16_16(ptr addrspace(1) align 16 %dst, ptr addrspace(1) align 16 readonly %src) {1615; CHECK-LABEL: memmove_p1_p1_sz32_align_16_16:1616; CHECK:       ; %bb.0: ; %entry1617; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1618; CHECK-NEXT:    s_clause 0x11619; CHECK-NEXT:    global_load_dwordx4 v[4:7], v[2:3], off offset:161620; CHECK-NEXT:    global_load_dwordx4 v[8:11], v[2:3], off1621; CHECK-NEXT:    s_waitcnt vmcnt(1)1622; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:161623; CHECK-NEXT:    s_waitcnt vmcnt(0)1624; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[8:11], off1625; CHECK-NEXT:    s_setpc_b64 s[30:31]1626entry:1627  tail call void @llvm.memmove.p1.p1.i64(ptr addrspace(1) noundef nonnull align 16 %dst, ptr addrspace(1) noundef nonnull align 16 %src, i64 32, i1 false)1628  ret void1629}1630 1631define void @memmove_p1_p3_sz16_align_1_1(ptr addrspace(1) align 1 %dst, ptr addrspace(3) align 1 readonly %src) {1632; CHECK-LABEL: memmove_p1_p3_sz16_align_1_1:1633; CHECK:       ; %bb.0: ; %entry1634; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1635; CHECK-NEXT:    ds_read_b128 v[2:5], v21636; CHECK-NEXT:    s_waitcnt lgkmcnt(0)1637; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off1638; CHECK-NEXT:    s_setpc_b64 s[30:31]1639entry:1640  tail call void @llvm.memmove.p1.p3.i64(ptr addrspace(1) noundef nonnull align 1 %dst, ptr addrspace(3) noundef nonnull align 1 %src, i64 16, i1 false)1641  ret void1642}1643 1644define void @memmove_p1_p3_sz31_align_1_1(ptr addrspace(1) align 1 %dst, ptr addrspace(3) align 1 readonly %src) {1645; CHECK-LABEL: memmove_p1_p3_sz31_align_1_1:1646; CHECK:       ; %bb.0: ; %entry1647; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1648; CHECK-NEXT:    ds_read_b64 v[7:8], v21649; CHECK-NEXT:    ds_read_b128 v[3:6], v2 offset:81650; CHECK-NEXT:    ds_read_b32 v9, v2 offset:241651; CHECK-NEXT:    ds_read_u16 v10, v2 offset:281652; CHECK-NEXT:    ds_read_u8 v2, v2 offset:301653; CHECK-NEXT:    s_waitcnt lgkmcnt(4)1654; CHECK-NEXT:    global_store_dwordx2 v[0:1], v[7:8], off1655; CHECK-NEXT:    s_waitcnt lgkmcnt(3)1656; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[3:6], off offset:81657; CHECK-NEXT:    s_waitcnt lgkmcnt(2)1658; CHECK-NEXT:    global_store_dword v[0:1], v9, off offset:241659; CHECK-NEXT:    s_waitcnt lgkmcnt(1)1660; CHECK-NEXT:    global_store_short v[0:1], v10, off offset:281661; CHECK-NEXT:    s_waitcnt lgkmcnt(0)1662; CHECK-NEXT:    global_store_byte v[0:1], v2, off offset:301663; CHECK-NEXT:    s_setpc_b64 s[30:31]1664entry:1665  tail call void @llvm.memmove.p1.p3.i64(ptr addrspace(1) noundef nonnull align 1 %dst, ptr addrspace(3) noundef nonnull align 1 %src, i64 31, i1 false)1666  ret void1667}1668 1669define void @memmove_p1_p3_sz32_align_1_1(ptr addrspace(1) align 1 %dst, ptr addrspace(3) align 1 readonly %src) {1670; CHECK-LABEL: memmove_p1_p3_sz32_align_1_1:1671; CHECK:       ; %bb.0: ; %entry1672; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1673; CHECK-NEXT:    ds_read_b128 v[3:6], v21674; CHECK-NEXT:    ds_read_b128 v[7:10], v2 offset:161675; CHECK-NEXT:    s_waitcnt lgkmcnt(1)1676; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[3:6], off1677; CHECK-NEXT:    s_waitcnt lgkmcnt(0)1678; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[7:10], off offset:161679; CHECK-NEXT:    s_setpc_b64 s[30:31]1680entry:1681  tail call void @llvm.memmove.p1.p3.i64(ptr addrspace(1) noundef nonnull align 1 %dst, ptr addrspace(3) noundef nonnull align 1 %src, i64 32, i1 false)1682  ret void1683}1684 1685define void @memmove_p1_p3_sz16_align_2_2(ptr addrspace(1) align 2 %dst, ptr addrspace(3) align 2 readonly %src) {1686; CHECK-LABEL: memmove_p1_p3_sz16_align_2_2:1687; CHECK:       ; %bb.0: ; %entry1688; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1689; CHECK-NEXT:    ds_read_b128 v[2:5], v21690; CHECK-NEXT:    s_waitcnt lgkmcnt(0)1691; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off1692; CHECK-NEXT:    s_setpc_b64 s[30:31]1693entry:1694  tail call void @llvm.memmove.p1.p3.i64(ptr addrspace(1) noundef nonnull align 2 %dst, ptr addrspace(3) noundef nonnull align 2 %src, i64 16, i1 false)1695  ret void1696}1697 1698define void @memmove_p1_p3_sz31_align_2_2(ptr addrspace(1) align 2 %dst, ptr addrspace(3) align 2 readonly %src) {1699; CHECK-LABEL: memmove_p1_p3_sz31_align_2_2:1700; CHECK:       ; %bb.0: ; %entry1701; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1702; CHECK-NEXT:    ds_read_b64 v[7:8], v21703; CHECK-NEXT:    ds_read_b128 v[3:6], v2 offset:81704; CHECK-NEXT:    ds_read_b32 v9, v2 offset:241705; CHECK-NEXT:    ds_read_u16 v10, v2 offset:281706; CHECK-NEXT:    ds_read_u8 v2, v2 offset:301707; CHECK-NEXT:    s_waitcnt lgkmcnt(4)1708; CHECK-NEXT:    global_store_dwordx2 v[0:1], v[7:8], off1709; CHECK-NEXT:    s_waitcnt lgkmcnt(3)1710; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[3:6], off offset:81711; CHECK-NEXT:    s_waitcnt lgkmcnt(2)1712; CHECK-NEXT:    global_store_dword v[0:1], v9, off offset:241713; CHECK-NEXT:    s_waitcnt lgkmcnt(1)1714; CHECK-NEXT:    global_store_short v[0:1], v10, off offset:281715; CHECK-NEXT:    s_waitcnt lgkmcnt(0)1716; CHECK-NEXT:    global_store_byte v[0:1], v2, off offset:301717; CHECK-NEXT:    s_setpc_b64 s[30:31]1718entry:1719  tail call void @llvm.memmove.p1.p3.i64(ptr addrspace(1) noundef nonnull align 2 %dst, ptr addrspace(3) noundef nonnull align 2 %src, i64 31, i1 false)1720  ret void1721}1722 1723define void @memmove_p1_p3_sz32_align_2_2(ptr addrspace(1) align 2 %dst, ptr addrspace(3) align 2 readonly %src) {1724; CHECK-LABEL: memmove_p1_p3_sz32_align_2_2:1725; CHECK:       ; %bb.0: ; %entry1726; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1727; CHECK-NEXT:    ds_read_b128 v[3:6], v21728; CHECK-NEXT:    ds_read_b128 v[7:10], v2 offset:161729; CHECK-NEXT:    s_waitcnt lgkmcnt(1)1730; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[3:6], off1731; CHECK-NEXT:    s_waitcnt lgkmcnt(0)1732; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[7:10], off offset:161733; CHECK-NEXT:    s_setpc_b64 s[30:31]1734entry:1735  tail call void @llvm.memmove.p1.p3.i64(ptr addrspace(1) noundef nonnull align 2 %dst, ptr addrspace(3) noundef nonnull align 2 %src, i64 32, i1 false)1736  ret void1737}1738 1739define void @memmove_p1_p3_sz16_align_8_8(ptr addrspace(1) align 8 %dst, ptr addrspace(3) align 8 readonly %src) {1740; CHECK-LABEL: memmove_p1_p3_sz16_align_8_8:1741; CHECK:       ; %bb.0: ; %entry1742; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1743; CHECK-NEXT:    ds_read2_b64 v[2:5], v2 offset1:11744; CHECK-NEXT:    s_waitcnt lgkmcnt(0)1745; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off1746; CHECK-NEXT:    s_setpc_b64 s[30:31]1747entry:1748  tail call void @llvm.memmove.p1.p3.i64(ptr addrspace(1) noundef nonnull align 8 %dst, ptr addrspace(3) noundef nonnull align 8 %src, i64 16, i1 false)1749  ret void1750}1751 1752define void @memmove_p1_p3_sz31_align_8_8(ptr addrspace(1) align 8 %dst, ptr addrspace(3) align 8 readonly %src) {1753; CHECK-LABEL: memmove_p1_p3_sz31_align_8_8:1754; CHECK:       ; %bb.0: ; %entry1755; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1756; CHECK-NEXT:    ds_read2_b64 v[3:6], v2 offset1:11757; CHECK-NEXT:    ds_read_b32 v7, v2 offset:161758; CHECK-NEXT:    ds_read_u8 v10, v2 offset:301759; CHECK-NEXT:    ds_read2_b32 v[8:9], v2 offset0:5 offset1:61760; CHECK-NEXT:    ds_read_u16 v2, v2 offset:281761; CHECK-NEXT:    s_waitcnt lgkmcnt(4)1762; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[3:6], off1763; CHECK-NEXT:    s_waitcnt lgkmcnt(1)1764; CHECK-NEXT:    global_store_dwordx3 v[0:1], v[7:9], off offset:161765; CHECK-NEXT:    s_waitcnt lgkmcnt(0)1766; CHECK-NEXT:    global_store_short v[0:1], v2, off offset:281767; CHECK-NEXT:    global_store_byte v[0:1], v10, off offset:301768; CHECK-NEXT:    s_setpc_b64 s[30:31]1769entry:1770  tail call void @llvm.memmove.p1.p3.i64(ptr addrspace(1) noundef nonnull align 8 %dst, ptr addrspace(3) noundef nonnull align 8 %src, i64 31, i1 false)1771  ret void1772}1773 1774define void @memmove_p1_p3_sz32_align_8_8(ptr addrspace(1) align 8 %dst, ptr addrspace(3) align 8 readonly %src) {1775; CHECK-LABEL: memmove_p1_p3_sz32_align_8_8:1776; CHECK:       ; %bb.0: ; %entry1777; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1778; CHECK-NEXT:    ds_read2_b64 v[3:6], v2 offset1:11779; CHECK-NEXT:    ds_read2_b64 v[7:10], v2 offset0:2 offset1:31780; CHECK-NEXT:    s_waitcnt lgkmcnt(1)1781; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[3:6], off1782; CHECK-NEXT:    s_waitcnt lgkmcnt(0)1783; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[7:10], off offset:161784; CHECK-NEXT:    s_setpc_b64 s[30:31]1785entry:1786  tail call void @llvm.memmove.p1.p3.i64(ptr addrspace(1) noundef nonnull align 8 %dst, ptr addrspace(3) noundef nonnull align 8 %src, i64 32, i1 false)1787  ret void1788}1789 1790define void @memmove_p1_p3_sz16_align_16_16(ptr addrspace(1) align 16 %dst, ptr addrspace(3) align 16 readonly %src) {1791; CHECK-LABEL: memmove_p1_p3_sz16_align_16_16:1792; CHECK:       ; %bb.0: ; %entry1793; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1794; CHECK-NEXT:    ds_read_b128 v[2:5], v21795; CHECK-NEXT:    s_waitcnt lgkmcnt(0)1796; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off1797; CHECK-NEXT:    s_setpc_b64 s[30:31]1798entry:1799  tail call void @llvm.memmove.p1.p3.i64(ptr addrspace(1) noundef nonnull align 16 %dst, ptr addrspace(3) noundef nonnull align 16 %src, i64 16, i1 false)1800  ret void1801}1802 1803define void @memmove_p1_p3_sz31_align_16_16(ptr addrspace(1) align 16 %dst, ptr addrspace(3) align 16 readonly %src) {1804; CHECK-LABEL: memmove_p1_p3_sz31_align_16_16:1805; CHECK:       ; %bb.0: ; %entry1806; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1807; CHECK-NEXT:    ds_read_b128 v[3:6], v21808; CHECK-NEXT:    ds_read_b32 v7, v2 offset:161809; CHECK-NEXT:    ds_read_u8 v10, v2 offset:301810; CHECK-NEXT:    ds_read2_b32 v[8:9], v2 offset0:5 offset1:61811; CHECK-NEXT:    ds_read_u16 v2, v2 offset:281812; CHECK-NEXT:    s_waitcnt lgkmcnt(4)1813; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[3:6], off1814; CHECK-NEXT:    s_waitcnt lgkmcnt(1)1815; CHECK-NEXT:    global_store_dwordx3 v[0:1], v[7:9], off offset:161816; CHECK-NEXT:    s_waitcnt lgkmcnt(0)1817; CHECK-NEXT:    global_store_short v[0:1], v2, off offset:281818; CHECK-NEXT:    global_store_byte v[0:1], v10, off offset:301819; CHECK-NEXT:    s_setpc_b64 s[30:31]1820entry:1821  tail call void @llvm.memmove.p1.p3.i64(ptr addrspace(1) noundef nonnull align 16 %dst, ptr addrspace(3) noundef nonnull align 16 %src, i64 31, i1 false)1822  ret void1823}1824 1825define void @memmove_p1_p3_sz32_align_16_16(ptr addrspace(1) align 16 %dst, ptr addrspace(3) align 16 readonly %src) {1826; CHECK-LABEL: memmove_p1_p3_sz32_align_16_16:1827; CHECK:       ; %bb.0: ; %entry1828; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1829; CHECK-NEXT:    ds_read_b128 v[3:6], v21830; CHECK-NEXT:    ds_read_b128 v[7:10], v2 offset:161831; CHECK-NEXT:    s_waitcnt lgkmcnt(1)1832; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[3:6], off1833; CHECK-NEXT:    s_waitcnt lgkmcnt(0)1834; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[7:10], off offset:161835; CHECK-NEXT:    s_setpc_b64 s[30:31]1836entry:1837  tail call void @llvm.memmove.p1.p3.i64(ptr addrspace(1) noundef nonnull align 16 %dst, ptr addrspace(3) noundef nonnull align 16 %src, i64 32, i1 false)1838  ret void1839}1840 1841define void @memmove_p1_p4_sz16_align_1_1(ptr addrspace(1) align 1 %dst, ptr addrspace(4) align 1 readonly %src) {1842; CHECK-LABEL: memmove_p1_p4_sz16_align_1_1:1843; CHECK:       ; %bb.0: ; %entry1844; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1845; CHECK-NEXT:    global_load_dwordx4 v[2:5], v[2:3], off1846; CHECK-NEXT:    s_waitcnt vmcnt(0)1847; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off1848; CHECK-NEXT:    s_setpc_b64 s[30:31]1849entry:1850  tail call void @llvm.memmove.p1.p4.i64(ptr addrspace(1) noundef nonnull align 1 %dst, ptr addrspace(4) noundef nonnull align 1 %src, i64 16, i1 false)1851  ret void1852}1853 1854define void @memmove_p1_p4_sz31_align_1_1(ptr addrspace(1) align 1 %dst, ptr addrspace(4) align 1 readonly %src) {1855; CHECK-LABEL: memmove_p1_p4_sz31_align_1_1:1856; CHECK:       ; %bb.0: ; %entry1857; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1858; CHECK-NEXT:    s_clause 0x31859; CHECK-NEXT:    global_load_ubyte v9, v[2:3], off offset:301860; CHECK-NEXT:    global_load_ushort v10, v[2:3], off offset:281861; CHECK-NEXT:    global_load_dwordx3 v[6:8], v[2:3], off offset:161862; CHECK-NEXT:    global_load_dwordx4 v[2:5], v[2:3], off1863; CHECK-NEXT:    s_waitcnt vmcnt(3)1864; CHECK-NEXT:    global_store_byte v[0:1], v9, off offset:301865; CHECK-NEXT:    s_waitcnt vmcnt(2)1866; CHECK-NEXT:    global_store_short v[0:1], v10, off offset:281867; CHECK-NEXT:    s_waitcnt vmcnt(1)1868; CHECK-NEXT:    global_store_dwordx3 v[0:1], v[6:8], off offset:161869; CHECK-NEXT:    s_waitcnt vmcnt(0)1870; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off1871; CHECK-NEXT:    s_setpc_b64 s[30:31]1872entry:1873  tail call void @llvm.memmove.p1.p4.i64(ptr addrspace(1) noundef nonnull align 1 %dst, ptr addrspace(4) noundef nonnull align 1 %src, i64 31, i1 false)1874  ret void1875}1876 1877define void @memmove_p1_p4_sz32_align_1_1(ptr addrspace(1) align 1 %dst, ptr addrspace(4) align 1 readonly %src) {1878; CHECK-LABEL: memmove_p1_p4_sz32_align_1_1:1879; CHECK:       ; %bb.0: ; %entry1880; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1881; CHECK-NEXT:    s_clause 0x11882; CHECK-NEXT:    global_load_dwordx4 v[4:7], v[2:3], off offset:161883; CHECK-NEXT:    global_load_dwordx4 v[8:11], v[2:3], off1884; CHECK-NEXT:    s_waitcnt vmcnt(1)1885; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:161886; CHECK-NEXT:    s_waitcnt vmcnt(0)1887; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[8:11], off1888; CHECK-NEXT:    s_setpc_b64 s[30:31]1889entry:1890  tail call void @llvm.memmove.p1.p4.i64(ptr addrspace(1) noundef nonnull align 1 %dst, ptr addrspace(4) noundef nonnull align 1 %src, i64 32, i1 false)1891  ret void1892}1893 1894define void @memmove_p1_p4_sz16_align_2_2(ptr addrspace(1) align 2 %dst, ptr addrspace(4) align 2 readonly %src) {1895; CHECK-LABEL: memmove_p1_p4_sz16_align_2_2:1896; CHECK:       ; %bb.0: ; %entry1897; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1898; CHECK-NEXT:    global_load_dwordx4 v[2:5], v[2:3], off1899; CHECK-NEXT:    s_waitcnt vmcnt(0)1900; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off1901; CHECK-NEXT:    s_setpc_b64 s[30:31]1902entry:1903  tail call void @llvm.memmove.p1.p4.i64(ptr addrspace(1) noundef nonnull align 2 %dst, ptr addrspace(4) noundef nonnull align 2 %src, i64 16, i1 false)1904  ret void1905}1906 1907define void @memmove_p1_p4_sz31_align_2_2(ptr addrspace(1) align 2 %dst, ptr addrspace(4) align 2 readonly %src) {1908; CHECK-LABEL: memmove_p1_p4_sz31_align_2_2:1909; CHECK:       ; %bb.0: ; %entry1910; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1911; CHECK-NEXT:    s_clause 0x31912; CHECK-NEXT:    global_load_ubyte v9, v[2:3], off offset:301913; CHECK-NEXT:    global_load_ushort v10, v[2:3], off offset:281914; CHECK-NEXT:    global_load_dwordx3 v[6:8], v[2:3], off offset:161915; CHECK-NEXT:    global_load_dwordx4 v[2:5], v[2:3], off1916; CHECK-NEXT:    s_waitcnt vmcnt(3)1917; CHECK-NEXT:    global_store_byte v[0:1], v9, off offset:301918; CHECK-NEXT:    s_waitcnt vmcnt(2)1919; CHECK-NEXT:    global_store_short v[0:1], v10, off offset:281920; CHECK-NEXT:    s_waitcnt vmcnt(1)1921; CHECK-NEXT:    global_store_dwordx3 v[0:1], v[6:8], off offset:161922; CHECK-NEXT:    s_waitcnt vmcnt(0)1923; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off1924; CHECK-NEXT:    s_setpc_b64 s[30:31]1925entry:1926  tail call void @llvm.memmove.p1.p4.i64(ptr addrspace(1) noundef nonnull align 2 %dst, ptr addrspace(4) noundef nonnull align 2 %src, i64 31, i1 false)1927  ret void1928}1929 1930define void @memmove_p1_p4_sz32_align_2_2(ptr addrspace(1) align 2 %dst, ptr addrspace(4) align 2 readonly %src) {1931; CHECK-LABEL: memmove_p1_p4_sz32_align_2_2:1932; CHECK:       ; %bb.0: ; %entry1933; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1934; CHECK-NEXT:    s_clause 0x11935; CHECK-NEXT:    global_load_dwordx4 v[4:7], v[2:3], off offset:161936; CHECK-NEXT:    global_load_dwordx4 v[8:11], v[2:3], off1937; CHECK-NEXT:    s_waitcnt vmcnt(1)1938; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:161939; CHECK-NEXT:    s_waitcnt vmcnt(0)1940; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[8:11], off1941; CHECK-NEXT:    s_setpc_b64 s[30:31]1942entry:1943  tail call void @llvm.memmove.p1.p4.i64(ptr addrspace(1) noundef nonnull align 2 %dst, ptr addrspace(4) noundef nonnull align 2 %src, i64 32, i1 false)1944  ret void1945}1946 1947define void @memmove_p1_p4_sz16_align_8_8(ptr addrspace(1) align 8 %dst, ptr addrspace(4) align 8 readonly %src) {1948; CHECK-LABEL: memmove_p1_p4_sz16_align_8_8:1949; CHECK:       ; %bb.0: ; %entry1950; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1951; CHECK-NEXT:    global_load_dwordx4 v[2:5], v[2:3], off1952; CHECK-NEXT:    s_waitcnt vmcnt(0)1953; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off1954; CHECK-NEXT:    s_setpc_b64 s[30:31]1955entry:1956  tail call void @llvm.memmove.p1.p4.i64(ptr addrspace(1) noundef nonnull align 8 %dst, ptr addrspace(4) noundef nonnull align 8 %src, i64 16, i1 false)1957  ret void1958}1959 1960define void @memmove_p1_p4_sz31_align_8_8(ptr addrspace(1) align 8 %dst, ptr addrspace(4) align 8 readonly %src) {1961; CHECK-LABEL: memmove_p1_p4_sz31_align_8_8:1962; CHECK:       ; %bb.0: ; %entry1963; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1964; CHECK-NEXT:    s_clause 0x41965; CHECK-NEXT:    global_load_dword v8, v[2:3], off offset:161966; CHECK-NEXT:    global_load_dwordx4 v[4:7], v[2:3], off1967; CHECK-NEXT:    global_load_ushort v10, v[2:3], off offset:281968; CHECK-NEXT:    global_load_dword v9, v[2:3], off offset:241969; CHECK-NEXT:    global_load_ubyte v11, v[2:3], off offset:301970; CHECK-NEXT:    s_waitcnt vmcnt(4)1971; CHECK-NEXT:    global_store_dword v[0:1], v8, off offset:161972; CHECK-NEXT:    global_load_dword v8, v[2:3], off offset:201973; CHECK-NEXT:    s_waitcnt vmcnt(1)1974; CHECK-NEXT:    global_store_byte v[0:1], v11, off offset:301975; CHECK-NEXT:    global_store_short v[0:1], v10, off offset:281976; CHECK-NEXT:    s_waitcnt vmcnt(0)1977; CHECK-NEXT:    global_store_dwordx2 v[0:1], v[8:9], off offset:201978; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off1979; CHECK-NEXT:    s_setpc_b64 s[30:31]1980entry:1981  tail call void @llvm.memmove.p1.p4.i64(ptr addrspace(1) noundef nonnull align 8 %dst, ptr addrspace(4) noundef nonnull align 8 %src, i64 31, i1 false)1982  ret void1983}1984 1985define void @memmove_p1_p4_sz32_align_8_8(ptr addrspace(1) align 8 %dst, ptr addrspace(4) align 8 readonly %src) {1986; CHECK-LABEL: memmove_p1_p4_sz32_align_8_8:1987; CHECK:       ; %bb.0: ; %entry1988; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1989; CHECK-NEXT:    s_clause 0x11990; CHECK-NEXT:    global_load_dwordx4 v[4:7], v[2:3], off offset:161991; CHECK-NEXT:    global_load_dwordx4 v[8:11], v[2:3], off1992; CHECK-NEXT:    s_waitcnt vmcnt(1)1993; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:161994; CHECK-NEXT:    s_waitcnt vmcnt(0)1995; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[8:11], off1996; CHECK-NEXT:    s_setpc_b64 s[30:31]1997entry:1998  tail call void @llvm.memmove.p1.p4.i64(ptr addrspace(1) noundef nonnull align 8 %dst, ptr addrspace(4) noundef nonnull align 8 %src, i64 32, i1 false)1999  ret void2000}2001 2002define void @memmove_p1_p4_sz16_align_16_16(ptr addrspace(1) align 16 %dst, ptr addrspace(4) align 16 readonly %src) {2003; CHECK-LABEL: memmove_p1_p4_sz16_align_16_16:2004; CHECK:       ; %bb.0: ; %entry2005; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2006; CHECK-NEXT:    global_load_dwordx4 v[2:5], v[2:3], off2007; CHECK-NEXT:    s_waitcnt vmcnt(0)2008; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off2009; CHECK-NEXT:    s_setpc_b64 s[30:31]2010entry:2011  tail call void @llvm.memmove.p1.p4.i64(ptr addrspace(1) noundef nonnull align 16 %dst, ptr addrspace(4) noundef nonnull align 16 %src, i64 16, i1 false)2012  ret void2013}2014 2015define void @memmove_p1_p4_sz31_align_16_16(ptr addrspace(1) align 16 %dst, ptr addrspace(4) align 16 readonly %src) {2016; CHECK-LABEL: memmove_p1_p4_sz31_align_16_16:2017; CHECK:       ; %bb.0: ; %entry2018; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2019; CHECK-NEXT:    s_clause 0x32020; CHECK-NEXT:    global_load_ubyte v8, v[2:3], off offset:302021; CHECK-NEXT:    global_load_dword v9, v[2:3], off offset:162022; CHECK-NEXT:    global_load_ushort v10, v[2:3], off offset:282023; CHECK-NEXT:    global_load_dwordx4 v[4:7], v[2:3], off2024; CHECK-NEXT:    s_waitcnt vmcnt(2)2025; CHECK-NEXT:    global_store_dword v[0:1], v9, off offset:162026; CHECK-NEXT:    global_load_dword v9, v[2:3], off offset:202027; CHECK-NEXT:    s_waitcnt vmcnt(0)2028; CHECK-NEXT:    global_store_dword v[0:1], v9, off offset:202029; CHECK-NEXT:    global_load_dword v2, v[2:3], off offset:242030; CHECK-NEXT:    global_store_byte v[0:1], v8, off offset:302031; CHECK-NEXT:    global_store_short v[0:1], v10, off offset:282032; CHECK-NEXT:    s_waitcnt vmcnt(0)2033; CHECK-NEXT:    global_store_dword v[0:1], v2, off offset:242034; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off2035; CHECK-NEXT:    s_setpc_b64 s[30:31]2036entry:2037  tail call void @llvm.memmove.p1.p4.i64(ptr addrspace(1) noundef nonnull align 16 %dst, ptr addrspace(4) noundef nonnull align 16 %src, i64 31, i1 false)2038  ret void2039}2040 2041define void @memmove_p1_p4_sz32_align_16_16(ptr addrspace(1) align 16 %dst, ptr addrspace(4) align 16 readonly %src) {2042; CHECK-LABEL: memmove_p1_p4_sz32_align_16_16:2043; CHECK:       ; %bb.0: ; %entry2044; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2045; CHECK-NEXT:    s_clause 0x12046; CHECK-NEXT:    global_load_dwordx4 v[4:7], v[2:3], off offset:162047; CHECK-NEXT:    global_load_dwordx4 v[8:11], v[2:3], off2048; CHECK-NEXT:    s_waitcnt vmcnt(1)2049; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:162050; CHECK-NEXT:    s_waitcnt vmcnt(0)2051; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[8:11], off2052; CHECK-NEXT:    s_setpc_b64 s[30:31]2053entry:2054  tail call void @llvm.memmove.p1.p4.i64(ptr addrspace(1) noundef nonnull align 16 %dst, ptr addrspace(4) noundef nonnull align 16 %src, i64 32, i1 false)2055  ret void2056}2057 2058define void @memmove_p1_p5_sz16_align_1_1(ptr addrspace(1) align 1 %dst, ptr addrspace(5) align 1 readonly %src) {2059; CHECK-LABEL: memmove_p1_p5_sz16_align_1_1:2060; CHECK:       ; %bb.0: ; %entry2061; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2062; CHECK-NEXT:    s_clause 0x32063; CHECK-NEXT:    buffer_load_dword v3, v2, s[0:3], 0 offen2064; CHECK-NEXT:    buffer_load_dword v4, v2, s[0:3], 0 offen offset:42065; CHECK-NEXT:    buffer_load_dword v5, v2, s[0:3], 0 offen offset:82066; CHECK-NEXT:    buffer_load_dword v6, v2, s[0:3], 0 offen offset:122067; CHECK-NEXT:    s_waitcnt vmcnt(0)2068; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[3:6], off2069; CHECK-NEXT:    s_setpc_b64 s[30:31]2070entry:2071  tail call void @llvm.memmove.p1.p5.i64(ptr addrspace(1) noundef nonnull align 1 %dst, ptr addrspace(5) noundef nonnull align 1 %src, i64 16, i1 false)2072  ret void2073}2074 2075define void @memmove_p1_p5_sz31_align_1_1(ptr addrspace(1) align 1 %dst, ptr addrspace(5) align 1 readonly %src) {2076; CHECK-LABEL: memmove_p1_p5_sz31_align_1_1:2077; CHECK:       ; %bb.0: ; %entry2078; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2079; CHECK-NEXT:    s_clause 0x82080; CHECK-NEXT:    buffer_load_ubyte v9, v2, s[0:3], 0 offen offset:302081; CHECK-NEXT:    buffer_load_dword v7, v2, s[0:3], 0 offen2082; CHECK-NEXT:    buffer_load_dword v8, v2, s[0:3], 0 offen offset:42083; CHECK-NEXT:    buffer_load_dword v3, v2, s[0:3], 0 offen offset:82084; CHECK-NEXT:    buffer_load_dword v10, v2, s[0:3], 0 offen offset:242085; CHECK-NEXT:    buffer_load_ushort v11, v2, s[0:3], 0 offen offset:282086; CHECK-NEXT:    buffer_load_dword v4, v2, s[0:3], 0 offen offset:122087; CHECK-NEXT:    buffer_load_dword v5, v2, s[0:3], 0 offen offset:162088; CHECK-NEXT:    buffer_load_dword v6, v2, s[0:3], 0 offen offset:202089; CHECK-NEXT:    s_waitcnt vmcnt(4)2090; CHECK-NEXT:    global_store_dword v[0:1], v10, off offset:242091; CHECK-NEXT:    s_waitcnt vmcnt(3)2092; CHECK-NEXT:    global_store_short v[0:1], v11, off offset:282093; CHECK-NEXT:    global_store_byte v[0:1], v9, off offset:302094; CHECK-NEXT:    global_store_dwordx2 v[0:1], v[7:8], off2095; CHECK-NEXT:    s_waitcnt vmcnt(0)2096; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[3:6], off offset:82097; CHECK-NEXT:    s_setpc_b64 s[30:31]2098entry:2099  tail call void @llvm.memmove.p1.p5.i64(ptr addrspace(1) noundef nonnull align 1 %dst, ptr addrspace(5) noundef nonnull align 1 %src, i64 31, i1 false)2100  ret void2101}2102 2103define void @memmove_p1_p5_sz32_align_1_1(ptr addrspace(1) align 1 %dst, ptr addrspace(5) align 1 readonly %src) {2104; CHECK-LABEL: memmove_p1_p5_sz32_align_1_1:2105; CHECK:       ; %bb.0: ; %entry2106; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2107; CHECK-NEXT:    s_clause 0x72108; CHECK-NEXT:    buffer_load_dword v3, v2, s[0:3], 0 offen2109; CHECK-NEXT:    buffer_load_dword v4, v2, s[0:3], 0 offen offset:42110; CHECK-NEXT:    buffer_load_dword v5, v2, s[0:3], 0 offen offset:82111; CHECK-NEXT:    buffer_load_dword v6, v2, s[0:3], 0 offen offset:122112; CHECK-NEXT:    buffer_load_dword v7, v2, s[0:3], 0 offen offset:162113; CHECK-NEXT:    buffer_load_dword v8, v2, s[0:3], 0 offen offset:202114; CHECK-NEXT:    buffer_load_dword v9, v2, s[0:3], 0 offen offset:242115; CHECK-NEXT:    buffer_load_dword v10, v2, s[0:3], 0 offen offset:282116; CHECK-NEXT:    s_waitcnt vmcnt(4)2117; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[3:6], off2118; CHECK-NEXT:    s_waitcnt vmcnt(0)2119; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[7:10], off offset:162120; CHECK-NEXT:    s_setpc_b64 s[30:31]2121entry:2122  tail call void @llvm.memmove.p1.p5.i64(ptr addrspace(1) noundef nonnull align 1 %dst, ptr addrspace(5) noundef nonnull align 1 %src, i64 32, i1 false)2123  ret void2124}2125 2126define void @memmove_p1_p5_sz16_align_2_2(ptr addrspace(1) align 2 %dst, ptr addrspace(5) align 2 readonly %src) {2127; CHECK-LABEL: memmove_p1_p5_sz16_align_2_2:2128; CHECK:       ; %bb.0: ; %entry2129; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2130; CHECK-NEXT:    s_clause 0x32131; CHECK-NEXT:    buffer_load_dword v3, v2, s[0:3], 0 offen2132; CHECK-NEXT:    buffer_load_dword v4, v2, s[0:3], 0 offen offset:42133; CHECK-NEXT:    buffer_load_dword v5, v2, s[0:3], 0 offen offset:82134; CHECK-NEXT:    buffer_load_dword v6, v2, s[0:3], 0 offen offset:122135; CHECK-NEXT:    s_waitcnt vmcnt(0)2136; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[3:6], off2137; CHECK-NEXT:    s_setpc_b64 s[30:31]2138entry:2139  tail call void @llvm.memmove.p1.p5.i64(ptr addrspace(1) noundef nonnull align 2 %dst, ptr addrspace(5) noundef nonnull align 2 %src, i64 16, i1 false)2140  ret void2141}2142 2143define void @memmove_p1_p5_sz31_align_2_2(ptr addrspace(1) align 2 %dst, ptr addrspace(5) align 2 readonly %src) {2144; CHECK-LABEL: memmove_p1_p5_sz31_align_2_2:2145; CHECK:       ; %bb.0: ; %entry2146; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2147; CHECK-NEXT:    s_clause 0x82148; CHECK-NEXT:    buffer_load_ubyte v9, v2, s[0:3], 0 offen offset:302149; CHECK-NEXT:    buffer_load_dword v7, v2, s[0:3], 0 offen2150; CHECK-NEXT:    buffer_load_dword v8, v2, s[0:3], 0 offen offset:42151; CHECK-NEXT:    buffer_load_dword v3, v2, s[0:3], 0 offen offset:82152; CHECK-NEXT:    buffer_load_dword v10, v2, s[0:3], 0 offen offset:242153; CHECK-NEXT:    buffer_load_ushort v11, v2, s[0:3], 0 offen offset:282154; CHECK-NEXT:    buffer_load_dword v4, v2, s[0:3], 0 offen offset:122155; CHECK-NEXT:    buffer_load_dword v5, v2, s[0:3], 0 offen offset:162156; CHECK-NEXT:    buffer_load_dword v6, v2, s[0:3], 0 offen offset:202157; CHECK-NEXT:    s_waitcnt vmcnt(4)2158; CHECK-NEXT:    global_store_dword v[0:1], v10, off offset:242159; CHECK-NEXT:    s_waitcnt vmcnt(3)2160; CHECK-NEXT:    global_store_short v[0:1], v11, off offset:282161; CHECK-NEXT:    global_store_byte v[0:1], v9, off offset:302162; CHECK-NEXT:    global_store_dwordx2 v[0:1], v[7:8], off2163; CHECK-NEXT:    s_waitcnt vmcnt(0)2164; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[3:6], off offset:82165; CHECK-NEXT:    s_setpc_b64 s[30:31]2166entry:2167  tail call void @llvm.memmove.p1.p5.i64(ptr addrspace(1) noundef nonnull align 2 %dst, ptr addrspace(5) noundef nonnull align 2 %src, i64 31, i1 false)2168  ret void2169}2170 2171define void @memmove_p1_p5_sz32_align_2_2(ptr addrspace(1) align 2 %dst, ptr addrspace(5) align 2 readonly %src) {2172; CHECK-LABEL: memmove_p1_p5_sz32_align_2_2:2173; CHECK:       ; %bb.0: ; %entry2174; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2175; CHECK-NEXT:    s_clause 0x72176; CHECK-NEXT:    buffer_load_dword v3, v2, s[0:3], 0 offen2177; CHECK-NEXT:    buffer_load_dword v4, v2, s[0:3], 0 offen offset:42178; CHECK-NEXT:    buffer_load_dword v5, v2, s[0:3], 0 offen offset:82179; CHECK-NEXT:    buffer_load_dword v6, v2, s[0:3], 0 offen offset:122180; CHECK-NEXT:    buffer_load_dword v7, v2, s[0:3], 0 offen offset:162181; CHECK-NEXT:    buffer_load_dword v8, v2, s[0:3], 0 offen offset:202182; CHECK-NEXT:    buffer_load_dword v9, v2, s[0:3], 0 offen offset:242183; CHECK-NEXT:    buffer_load_dword v10, v2, s[0:3], 0 offen offset:282184; CHECK-NEXT:    s_waitcnt vmcnt(4)2185; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[3:6], off2186; CHECK-NEXT:    s_waitcnt vmcnt(0)2187; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[7:10], off offset:162188; CHECK-NEXT:    s_setpc_b64 s[30:31]2189entry:2190  tail call void @llvm.memmove.p1.p5.i64(ptr addrspace(1) noundef nonnull align 2 %dst, ptr addrspace(5) noundef nonnull align 2 %src, i64 32, i1 false)2191  ret void2192}2193 2194define void @memmove_p1_p5_sz16_align_8_8(ptr addrspace(1) align 8 %dst, ptr addrspace(5) align 8 readonly %src) {2195; CHECK-LABEL: memmove_p1_p5_sz16_align_8_8:2196; CHECK:       ; %bb.0: ; %entry2197; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2198; CHECK-NEXT:    s_clause 0x32199; CHECK-NEXT:    buffer_load_dword v3, v2, s[0:3], 0 offen2200; CHECK-NEXT:    buffer_load_dword v4, v2, s[0:3], 0 offen offset:42201; CHECK-NEXT:    buffer_load_dword v5, v2, s[0:3], 0 offen offset:82202; CHECK-NEXT:    buffer_load_dword v6, v2, s[0:3], 0 offen offset:122203; CHECK-NEXT:    s_waitcnt vmcnt(0)2204; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[3:6], off2205; CHECK-NEXT:    s_setpc_b64 s[30:31]2206entry:2207  tail call void @llvm.memmove.p1.p5.i64(ptr addrspace(1) noundef nonnull align 8 %dst, ptr addrspace(5) noundef nonnull align 8 %src, i64 16, i1 false)2208  ret void2209}2210 2211define void @memmove_p1_p5_sz31_align_8_8(ptr addrspace(1) align 8 %dst, ptr addrspace(5) align 8 readonly %src) {2212; CHECK-LABEL: memmove_p1_p5_sz31_align_8_8:2213; CHECK:       ; %bb.0: ; %entry2214; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2215; CHECK-NEXT:    s_clause 0x82216; CHECK-NEXT:    buffer_load_ubyte v10, v2, s[0:3], 0 offen offset:302217; CHECK-NEXT:    buffer_load_dword v3, v2, s[0:3], 0 offen2218; CHECK-NEXT:    buffer_load_dword v4, v2, s[0:3], 0 offen offset:42219; CHECK-NEXT:    buffer_load_dword v5, v2, s[0:3], 0 offen offset:82220; CHECK-NEXT:    buffer_load_dword v6, v2, s[0:3], 0 offen offset:122221; CHECK-NEXT:    buffer_load_ushort v11, v2, s[0:3], 0 offen offset:282222; CHECK-NEXT:    buffer_load_dword v7, v2, s[0:3], 0 offen offset:162223; CHECK-NEXT:    buffer_load_dword v8, v2, s[0:3], 0 offen offset:202224; CHECK-NEXT:    buffer_load_dword v9, v2, s[0:3], 0 offen offset:242225; CHECK-NEXT:    s_waitcnt vmcnt(3)2226; CHECK-NEXT:    global_store_short v[0:1], v11, off offset:282227; CHECK-NEXT:    global_store_byte v[0:1], v10, off offset:302228; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[3:6], off2229; CHECK-NEXT:    s_waitcnt vmcnt(0)2230; CHECK-NEXT:    global_store_dwordx3 v[0:1], v[7:9], off offset:162231; CHECK-NEXT:    s_setpc_b64 s[30:31]2232entry:2233  tail call void @llvm.memmove.p1.p5.i64(ptr addrspace(1) noundef nonnull align 8 %dst, ptr addrspace(5) noundef nonnull align 8 %src, i64 31, i1 false)2234  ret void2235}2236 2237define void @memmove_p1_p5_sz32_align_8_8(ptr addrspace(1) align 8 %dst, ptr addrspace(5) align 8 readonly %src) {2238; CHECK-LABEL: memmove_p1_p5_sz32_align_8_8:2239; CHECK:       ; %bb.0: ; %entry2240; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2241; CHECK-NEXT:    s_clause 0x72242; CHECK-NEXT:    buffer_load_dword v3, v2, s[0:3], 0 offen2243; CHECK-NEXT:    buffer_load_dword v4, v2, s[0:3], 0 offen offset:42244; CHECK-NEXT:    buffer_load_dword v5, v2, s[0:3], 0 offen offset:82245; CHECK-NEXT:    buffer_load_dword v6, v2, s[0:3], 0 offen offset:122246; CHECK-NEXT:    buffer_load_dword v7, v2, s[0:3], 0 offen offset:162247; CHECK-NEXT:    buffer_load_dword v8, v2, s[0:3], 0 offen offset:202248; CHECK-NEXT:    buffer_load_dword v9, v2, s[0:3], 0 offen offset:242249; CHECK-NEXT:    buffer_load_dword v10, v2, s[0:3], 0 offen offset:282250; CHECK-NEXT:    s_waitcnt vmcnt(4)2251; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[3:6], off2252; CHECK-NEXT:    s_waitcnt vmcnt(0)2253; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[7:10], off offset:162254; CHECK-NEXT:    s_setpc_b64 s[30:31]2255entry:2256  tail call void @llvm.memmove.p1.p5.i64(ptr addrspace(1) noundef nonnull align 8 %dst, ptr addrspace(5) noundef nonnull align 8 %src, i64 32, i1 false)2257  ret void2258}2259 2260define void @memmove_p1_p5_sz16_align_16_16(ptr addrspace(1) align 16 %dst, ptr addrspace(5) align 16 readonly %src) {2261; CHECK-LABEL: memmove_p1_p5_sz16_align_16_16:2262; CHECK:       ; %bb.0: ; %entry2263; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2264; CHECK-NEXT:    s_clause 0x32265; CHECK-NEXT:    buffer_load_dword v3, v2, s[0:3], 0 offen2266; CHECK-NEXT:    buffer_load_dword v4, v2, s[0:3], 0 offen offset:42267; CHECK-NEXT:    buffer_load_dword v5, v2, s[0:3], 0 offen offset:82268; CHECK-NEXT:    buffer_load_dword v6, v2, s[0:3], 0 offen offset:122269; CHECK-NEXT:    s_waitcnt vmcnt(0)2270; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[3:6], off2271; CHECK-NEXT:    s_setpc_b64 s[30:31]2272entry:2273  tail call void @llvm.memmove.p1.p5.i64(ptr addrspace(1) noundef nonnull align 16 %dst, ptr addrspace(5) noundef nonnull align 16 %src, i64 16, i1 false)2274  ret void2275}2276 2277define void @memmove_p1_p5_sz31_align_16_16(ptr addrspace(1) align 16 %dst, ptr addrspace(5) align 16 readonly %src) {2278; CHECK-LABEL: memmove_p1_p5_sz31_align_16_16:2279; CHECK:       ; %bb.0: ; %entry2280; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2281; CHECK-NEXT:    s_clause 0x82282; CHECK-NEXT:    buffer_load_ubyte v10, v2, s[0:3], 0 offen offset:302283; CHECK-NEXT:    buffer_load_dword v3, v2, s[0:3], 0 offen2284; CHECK-NEXT:    buffer_load_dword v4, v2, s[0:3], 0 offen offset:42285; CHECK-NEXT:    buffer_load_dword v5, v2, s[0:3], 0 offen offset:82286; CHECK-NEXT:    buffer_load_dword v6, v2, s[0:3], 0 offen offset:122287; CHECK-NEXT:    buffer_load_ushort v11, v2, s[0:3], 0 offen offset:282288; CHECK-NEXT:    buffer_load_dword v7, v2, s[0:3], 0 offen offset:162289; CHECK-NEXT:    buffer_load_dword v8, v2, s[0:3], 0 offen offset:202290; CHECK-NEXT:    buffer_load_dword v9, v2, s[0:3], 0 offen offset:242291; CHECK-NEXT:    s_waitcnt vmcnt(3)2292; CHECK-NEXT:    global_store_short v[0:1], v11, off offset:282293; CHECK-NEXT:    global_store_byte v[0:1], v10, off offset:302294; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[3:6], off2295; CHECK-NEXT:    s_waitcnt vmcnt(0)2296; CHECK-NEXT:    global_store_dwordx3 v[0:1], v[7:9], off offset:162297; CHECK-NEXT:    s_setpc_b64 s[30:31]2298entry:2299  tail call void @llvm.memmove.p1.p5.i64(ptr addrspace(1) noundef nonnull align 16 %dst, ptr addrspace(5) noundef nonnull align 16 %src, i64 31, i1 false)2300  ret void2301}2302 2303define void @memmove_p1_p5_sz32_align_16_16(ptr addrspace(1) align 16 %dst, ptr addrspace(5) align 16 readonly %src) {2304; CHECK-LABEL: memmove_p1_p5_sz32_align_16_16:2305; CHECK:       ; %bb.0: ; %entry2306; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2307; CHECK-NEXT:    s_clause 0x72308; CHECK-NEXT:    buffer_load_dword v3, v2, s[0:3], 0 offen2309; CHECK-NEXT:    buffer_load_dword v4, v2, s[0:3], 0 offen offset:42310; CHECK-NEXT:    buffer_load_dword v5, v2, s[0:3], 0 offen offset:82311; CHECK-NEXT:    buffer_load_dword v6, v2, s[0:3], 0 offen offset:122312; CHECK-NEXT:    buffer_load_dword v7, v2, s[0:3], 0 offen offset:162313; CHECK-NEXT:    buffer_load_dword v8, v2, s[0:3], 0 offen offset:202314; CHECK-NEXT:    buffer_load_dword v9, v2, s[0:3], 0 offen offset:242315; CHECK-NEXT:    buffer_load_dword v10, v2, s[0:3], 0 offen offset:282316; CHECK-NEXT:    s_waitcnt vmcnt(4)2317; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[3:6], off2318; CHECK-NEXT:    s_waitcnt vmcnt(0)2319; CHECK-NEXT:    global_store_dwordx4 v[0:1], v[7:10], off offset:162320; CHECK-NEXT:    s_setpc_b64 s[30:31]2321entry:2322  tail call void @llvm.memmove.p1.p5.i64(ptr addrspace(1) noundef nonnull align 16 %dst, ptr addrspace(5) noundef nonnull align 16 %src, i64 32, i1 false)2323  ret void2324}2325 2326define void @memmove_p3_p0_sz16_align_1_1(ptr addrspace(3) align 1 %dst, ptr addrspace(0) align 1 readonly %src) {2327; CHECK-LABEL: memmove_p3_p0_sz16_align_1_1:2328; CHECK:       ; %bb.0: ; %entry2329; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2330; CHECK-NEXT:    flat_load_dwordx4 v[1:4], v[1:2]2331; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2332; CHECK-NEXT:    ds_write2_b64 v0, v[1:2], v[3:4] offset1:12333; CHECK-NEXT:    s_waitcnt lgkmcnt(0)2334; CHECK-NEXT:    s_setpc_b64 s[30:31]2335entry:2336  tail call void @llvm.memmove.p3.p0.i64(ptr addrspace(3) noundef nonnull align 1 %dst, ptr addrspace(0) noundef nonnull align 1 %src, i64 16, i1 false)2337  ret void2338}2339 2340define void @memmove_p3_p0_sz31_align_1_1(ptr addrspace(3) align 1 %dst, ptr addrspace(0) align 1 readonly %src) {2341; CHECK-LABEL: memmove_p3_p0_sz31_align_1_1:2342; CHECK:       ; %bb.0: ; %entry2343; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2344; CHECK-NEXT:    s_clause 0x32345; CHECK-NEXT:    flat_load_ubyte v8, v[1:2] offset:302346; CHECK-NEXT:    flat_load_ushort v9, v[1:2] offset:282347; CHECK-NEXT:    flat_load_dwordx3 v[5:7], v[1:2] offset:162348; CHECK-NEXT:    flat_load_dwordx4 v[1:4], v[1:2]2349; CHECK-NEXT:    s_waitcnt vmcnt(3) lgkmcnt(3)2350; CHECK-NEXT:    ds_write_b8 v0, v8 offset:302351; CHECK-NEXT:    s_waitcnt vmcnt(2) lgkmcnt(3)2352; CHECK-NEXT:    ds_write_b16 v0, v9 offset:282353; CHECK-NEXT:    s_waitcnt vmcnt(1) lgkmcnt(3)2354; CHECK-NEXT:    ds_write_b32 v0, v7 offset:242355; CHECK-NEXT:    ds_write_b64 v0, v[5:6] offset:162356; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(4)2357; CHECK-NEXT:    ds_write2_b64 v0, v[1:2], v[3:4] offset1:12358; CHECK-NEXT:    s_waitcnt lgkmcnt(0)2359; CHECK-NEXT:    s_setpc_b64 s[30:31]2360entry:2361  tail call void @llvm.memmove.p3.p0.i64(ptr addrspace(3) noundef nonnull align 1 %dst, ptr addrspace(0) noundef nonnull align 1 %src, i64 31, i1 false)2362  ret void2363}2364 2365define void @memmove_p3_p0_sz32_align_1_1(ptr addrspace(3) align 1 %dst, ptr addrspace(0) align 1 readonly %src) {2366; CHECK-LABEL: memmove_p3_p0_sz32_align_1_1:2367; CHECK:       ; %bb.0: ; %entry2368; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2369; CHECK-NEXT:    s_clause 0x12370; CHECK-NEXT:    flat_load_dwordx4 v[3:6], v[1:2] offset:162371; CHECK-NEXT:    flat_load_dwordx4 v[7:10], v[1:2]2372; CHECK-NEXT:    s_waitcnt vmcnt(1) lgkmcnt(1)2373; CHECK-NEXT:    ds_write2_b64 v0, v[3:4], v[5:6] offset0:2 offset1:32374; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(1)2375; CHECK-NEXT:    ds_write2_b64 v0, v[7:8], v[9:10] offset1:12376; CHECK-NEXT:    s_waitcnt lgkmcnt(0)2377; CHECK-NEXT:    s_setpc_b64 s[30:31]2378entry:2379  tail call void @llvm.memmove.p3.p0.i64(ptr addrspace(3) noundef nonnull align 1 %dst, ptr addrspace(0) noundef nonnull align 1 %src, i64 32, i1 false)2380  ret void2381}2382 2383define void @memmove_p3_p0_sz16_align_2_2(ptr addrspace(3) align 2 %dst, ptr addrspace(0) align 2 readonly %src) {2384; CHECK-LABEL: memmove_p3_p0_sz16_align_2_2:2385; CHECK:       ; %bb.0: ; %entry2386; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2387; CHECK-NEXT:    flat_load_dwordx4 v[1:4], v[1:2]2388; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2389; CHECK-NEXT:    ds_write2_b64 v0, v[1:2], v[3:4] offset1:12390; CHECK-NEXT:    s_waitcnt lgkmcnt(0)2391; CHECK-NEXT:    s_setpc_b64 s[30:31]2392entry:2393  tail call void @llvm.memmove.p3.p0.i64(ptr addrspace(3) noundef nonnull align 2 %dst, ptr addrspace(0) noundef nonnull align 2 %src, i64 16, i1 false)2394  ret void2395}2396 2397define void @memmove_p3_p0_sz31_align_2_2(ptr addrspace(3) align 2 %dst, ptr addrspace(0) align 2 readonly %src) {2398; CHECK-LABEL: memmove_p3_p0_sz31_align_2_2:2399; CHECK:       ; %bb.0: ; %entry2400; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2401; CHECK-NEXT:    s_clause 0x32402; CHECK-NEXT:    flat_load_ubyte v8, v[1:2] offset:302403; CHECK-NEXT:    flat_load_ushort v9, v[1:2] offset:282404; CHECK-NEXT:    flat_load_dwordx3 v[5:7], v[1:2] offset:162405; CHECK-NEXT:    flat_load_dwordx4 v[1:4], v[1:2]2406; CHECK-NEXT:    s_waitcnt vmcnt(3) lgkmcnt(3)2407; CHECK-NEXT:    ds_write_b8 v0, v8 offset:302408; CHECK-NEXT:    s_waitcnt vmcnt(2) lgkmcnt(3)2409; CHECK-NEXT:    ds_write_b16 v0, v9 offset:282410; CHECK-NEXT:    s_waitcnt vmcnt(1) lgkmcnt(3)2411; CHECK-NEXT:    ds_write_b32 v0, v7 offset:242412; CHECK-NEXT:    ds_write_b64 v0, v[5:6] offset:162413; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(4)2414; CHECK-NEXT:    ds_write2_b64 v0, v[1:2], v[3:4] offset1:12415; CHECK-NEXT:    s_waitcnt lgkmcnt(0)2416; CHECK-NEXT:    s_setpc_b64 s[30:31]2417entry:2418  tail call void @llvm.memmove.p3.p0.i64(ptr addrspace(3) noundef nonnull align 2 %dst, ptr addrspace(0) noundef nonnull align 2 %src, i64 31, i1 false)2419  ret void2420}2421 2422define void @memmove_p3_p0_sz32_align_2_2(ptr addrspace(3) align 2 %dst, ptr addrspace(0) align 2 readonly %src) {2423; CHECK-LABEL: memmove_p3_p0_sz32_align_2_2:2424; CHECK:       ; %bb.0: ; %entry2425; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2426; CHECK-NEXT:    s_clause 0x12427; CHECK-NEXT:    flat_load_dwordx4 v[3:6], v[1:2] offset:162428; CHECK-NEXT:    flat_load_dwordx4 v[7:10], v[1:2]2429; CHECK-NEXT:    s_waitcnt vmcnt(1) lgkmcnt(1)2430; CHECK-NEXT:    ds_write2_b64 v0, v[3:4], v[5:6] offset0:2 offset1:32431; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(1)2432; CHECK-NEXT:    ds_write2_b64 v0, v[7:8], v[9:10] offset1:12433; CHECK-NEXT:    s_waitcnt lgkmcnt(0)2434; CHECK-NEXT:    s_setpc_b64 s[30:31]2435entry:2436  tail call void @llvm.memmove.p3.p0.i64(ptr addrspace(3) noundef nonnull align 2 %dst, ptr addrspace(0) noundef nonnull align 2 %src, i64 32, i1 false)2437  ret void2438}2439 2440define void @memmove_p3_p0_sz16_align_8_8(ptr addrspace(3) align 8 %dst, ptr addrspace(0) align 8 readonly %src) {2441; CHECK-LABEL: memmove_p3_p0_sz16_align_8_8:2442; CHECK:       ; %bb.0: ; %entry2443; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2444; CHECK-NEXT:    flat_load_dwordx4 v[1:4], v[1:2]2445; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2446; CHECK-NEXT:    ds_write2_b64 v0, v[1:2], v[3:4] offset1:12447; CHECK-NEXT:    s_waitcnt lgkmcnt(0)2448; CHECK-NEXT:    s_setpc_b64 s[30:31]2449entry:2450  tail call void @llvm.memmove.p3.p0.i64(ptr addrspace(3) noundef nonnull align 8 %dst, ptr addrspace(0) noundef nonnull align 8 %src, i64 16, i1 false)2451  ret void2452}2453 2454define void @memmove_p3_p0_sz31_align_8_8(ptr addrspace(3) align 8 %dst, ptr addrspace(0) align 8 readonly %src) {2455; CHECK-LABEL: memmove_p3_p0_sz31_align_8_8:2456; CHECK:       ; %bb.0: ; %entry2457; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2458; CHECK-NEXT:    s_clause 0x32459; CHECK-NEXT:    flat_load_dwordx4 v[3:6], v[1:2]2460; CHECK-NEXT:    flat_load_dwordx3 v[7:9], v[1:2] offset:162461; CHECK-NEXT:    flat_load_ubyte v10, v[1:2] offset:302462; CHECK-NEXT:    flat_load_ushort v1, v[1:2] offset:282463; CHECK-NEXT:    s_waitcnt vmcnt(3) lgkmcnt(3)2464; CHECK-NEXT:    ds_write2_b64 v0, v[3:4], v[5:6] offset1:12465; CHECK-NEXT:    s_waitcnt vmcnt(2) lgkmcnt(3)2466; CHECK-NEXT:    ds_write2_b32 v0, v7, v8 offset0:4 offset1:52467; CHECK-NEXT:    ds_write_b32 v0, v9 offset:242468; CHECK-NEXT:    s_waitcnt vmcnt(1) lgkmcnt(4)2469; CHECK-NEXT:    ds_write_b8 v0, v10 offset:302470; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(4)2471; CHECK-NEXT:    ds_write_b16 v0, v1 offset:282472; CHECK-NEXT:    s_waitcnt lgkmcnt(0)2473; CHECK-NEXT:    s_setpc_b64 s[30:31]2474entry:2475  tail call void @llvm.memmove.p3.p0.i64(ptr addrspace(3) noundef nonnull align 8 %dst, ptr addrspace(0) noundef nonnull align 8 %src, i64 31, i1 false)2476  ret void2477}2478 2479define void @memmove_p3_p0_sz32_align_8_8(ptr addrspace(3) align 8 %dst, ptr addrspace(0) align 8 readonly %src) {2480; CHECK-LABEL: memmove_p3_p0_sz32_align_8_8:2481; CHECK:       ; %bb.0: ; %entry2482; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2483; CHECK-NEXT:    s_clause 0x12484; CHECK-NEXT:    flat_load_dwordx4 v[3:6], v[1:2] offset:162485; CHECK-NEXT:    flat_load_dwordx4 v[7:10], v[1:2]2486; CHECK-NEXT:    s_waitcnt vmcnt(1) lgkmcnt(1)2487; CHECK-NEXT:    ds_write2_b64 v0, v[3:4], v[5:6] offset0:2 offset1:32488; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(1)2489; CHECK-NEXT:    ds_write2_b64 v0, v[7:8], v[9:10] offset1:12490; CHECK-NEXT:    s_waitcnt lgkmcnt(0)2491; CHECK-NEXT:    s_setpc_b64 s[30:31]2492entry:2493  tail call void @llvm.memmove.p3.p0.i64(ptr addrspace(3) noundef nonnull align 8 %dst, ptr addrspace(0) noundef nonnull align 8 %src, i64 32, i1 false)2494  ret void2495}2496 2497define void @memmove_p3_p0_sz16_align_16_16(ptr addrspace(3) align 16 %dst, ptr addrspace(0) align 16 readonly %src) {2498; CHECK-LABEL: memmove_p3_p0_sz16_align_16_16:2499; CHECK:       ; %bb.0: ; %entry2500; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2501; CHECK-NEXT:    flat_load_dwordx4 v[1:4], v[1:2]2502; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2503; CHECK-NEXT:    ds_write_b128 v0, v[1:4]2504; CHECK-NEXT:    s_waitcnt lgkmcnt(0)2505; CHECK-NEXT:    s_setpc_b64 s[30:31]2506entry:2507  tail call void @llvm.memmove.p3.p0.i64(ptr addrspace(3) noundef nonnull align 16 %dst, ptr addrspace(0) noundef nonnull align 16 %src, i64 16, i1 false)2508  ret void2509}2510 2511define void @memmove_p3_p0_sz31_align_16_16(ptr addrspace(3) align 16 %dst, ptr addrspace(0) align 16 readonly %src) {2512; CHECK-LABEL: memmove_p3_p0_sz31_align_16_16:2513; CHECK:       ; %bb.0: ; %entry2514; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2515; CHECK-NEXT:    s_clause 0x32516; CHECK-NEXT:    flat_load_ubyte v7, v[1:2] offset:302517; CHECK-NEXT:    flat_load_dword v8, v[1:2] offset:162518; CHECK-NEXT:    flat_load_ushort v9, v[1:2] offset:282519; CHECK-NEXT:    flat_load_dwordx4 v[3:6], v[1:2]2520; CHECK-NEXT:    s_waitcnt vmcnt(2) lgkmcnt(2)2521; CHECK-NEXT:    ds_write_b32 v0, v8 offset:162522; CHECK-NEXT:    flat_load_dword v8, v[1:2] offset:202523; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)2524; CHECK-NEXT:    ds_write_b32 v0, v8 offset:202525; CHECK-NEXT:    flat_load_dword v1, v[1:2] offset:242526; CHECK-NEXT:    ds_write_b8 v0, v7 offset:302527; CHECK-NEXT:    ds_write_b16 v0, v9 offset:282528; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(2)2529; CHECK-NEXT:    ds_write_b32 v0, v1 offset:242530; CHECK-NEXT:    ds_write_b128 v0, v[3:6]2531; CHECK-NEXT:    s_waitcnt lgkmcnt(0)2532; CHECK-NEXT:    s_setpc_b64 s[30:31]2533entry:2534  tail call void @llvm.memmove.p3.p0.i64(ptr addrspace(3) noundef nonnull align 16 %dst, ptr addrspace(0) noundef nonnull align 16 %src, i64 31, i1 false)2535  ret void2536}2537 2538define void @memmove_p3_p0_sz32_align_16_16(ptr addrspace(3) align 16 %dst, ptr addrspace(0) align 16 readonly %src) {2539; CHECK-LABEL: memmove_p3_p0_sz32_align_16_16:2540; CHECK:       ; %bb.0: ; %entry2541; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2542; CHECK-NEXT:    s_clause 0x12543; CHECK-NEXT:    flat_load_dwordx4 v[3:6], v[1:2] offset:162544; CHECK-NEXT:    flat_load_dwordx4 v[7:10], v[1:2]2545; CHECK-NEXT:    s_waitcnt vmcnt(1) lgkmcnt(1)2546; CHECK-NEXT:    ds_write_b128 v0, v[3:6] offset:162547; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(1)2548; CHECK-NEXT:    ds_write_b128 v0, v[7:10]2549; CHECK-NEXT:    s_waitcnt lgkmcnt(0)2550; CHECK-NEXT:    s_setpc_b64 s[30:31]2551entry:2552  tail call void @llvm.memmove.p3.p0.i64(ptr addrspace(3) noundef nonnull align 16 %dst, ptr addrspace(0) noundef nonnull align 16 %src, i64 32, i1 false)2553  ret void2554}2555 2556define void @memmove_p3_p1_sz16_align_1_1(ptr addrspace(3) align 1 %dst, ptr addrspace(1) align 1 readonly %src) {2557; CHECK-LABEL: memmove_p3_p1_sz16_align_1_1:2558; CHECK:       ; %bb.0: ; %entry2559; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2560; CHECK-NEXT:    global_load_dwordx4 v[1:4], v[1:2], off2561; CHECK-NEXT:    s_waitcnt vmcnt(0)2562; CHECK-NEXT:    ds_write2_b64 v0, v[1:2], v[3:4] offset1:12563; CHECK-NEXT:    s_waitcnt lgkmcnt(0)2564; CHECK-NEXT:    s_setpc_b64 s[30:31]2565entry:2566  tail call void @llvm.memmove.p3.p1.i64(ptr addrspace(3) noundef nonnull align 1 %dst, ptr addrspace(1) noundef nonnull align 1 %src, i64 16, i1 false)2567  ret void2568}2569 2570define void @memmove_p3_p1_sz31_align_1_1(ptr addrspace(3) align 1 %dst, ptr addrspace(1) align 1 readonly %src) {2571; CHECK-LABEL: memmove_p3_p1_sz31_align_1_1:2572; CHECK:       ; %bb.0: ; %entry2573; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2574; CHECK-NEXT:    s_clause 0x32575; CHECK-NEXT:    global_load_dwordx4 v[3:6], v[1:2], off2576; CHECK-NEXT:    global_load_dwordx3 v[7:9], v[1:2], off offset:162577; CHECK-NEXT:    global_load_ushort v10, v[1:2], off offset:282578; CHECK-NEXT:    global_load_ubyte v1, v[1:2], off offset:302579; CHECK-NEXT:    s_waitcnt vmcnt(3)2580; CHECK-NEXT:    ds_write2_b64 v0, v[3:4], v[5:6] offset1:12581; CHECK-NEXT:    s_waitcnt vmcnt(2)2582; CHECK-NEXT:    ds_write_b64 v0, v[7:8] offset:162583; CHECK-NEXT:    ds_write_b32 v0, v9 offset:242584; CHECK-NEXT:    s_waitcnt vmcnt(1)2585; CHECK-NEXT:    ds_write_b16 v0, v10 offset:282586; CHECK-NEXT:    s_waitcnt vmcnt(0)2587; CHECK-NEXT:    ds_write_b8 v0, v1 offset:302588; CHECK-NEXT:    s_waitcnt lgkmcnt(0)2589; CHECK-NEXT:    s_setpc_b64 s[30:31]2590entry:2591  tail call void @llvm.memmove.p3.p1.i64(ptr addrspace(3) noundef nonnull align 1 %dst, ptr addrspace(1) noundef nonnull align 1 %src, i64 31, i1 false)2592  ret void2593}2594 2595define void @memmove_p3_p1_sz32_align_1_1(ptr addrspace(3) align 1 %dst, ptr addrspace(1) align 1 readonly %src) {2596; CHECK-LABEL: memmove_p3_p1_sz32_align_1_1:2597; CHECK:       ; %bb.0: ; %entry2598; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2599; CHECK-NEXT:    s_clause 0x12600; CHECK-NEXT:    global_load_dwordx4 v[3:6], v[1:2], off2601; CHECK-NEXT:    global_load_dwordx4 v[7:10], v[1:2], off offset:162602; CHECK-NEXT:    s_waitcnt vmcnt(1)2603; CHECK-NEXT:    ds_write2_b64 v0, v[3:4], v[5:6] offset1:12604; CHECK-NEXT:    s_waitcnt vmcnt(0)2605; CHECK-NEXT:    ds_write2_b64 v0, v[7:8], v[9:10] offset0:2 offset1:32606; CHECK-NEXT:    s_waitcnt lgkmcnt(0)2607; CHECK-NEXT:    s_setpc_b64 s[30:31]2608entry:2609  tail call void @llvm.memmove.p3.p1.i64(ptr addrspace(3) noundef nonnull align 1 %dst, ptr addrspace(1) noundef nonnull align 1 %src, i64 32, i1 false)2610  ret void2611}2612 2613define void @memmove_p3_p1_sz16_align_2_2(ptr addrspace(3) align 2 %dst, ptr addrspace(1) align 2 readonly %src) {2614; CHECK-LABEL: memmove_p3_p1_sz16_align_2_2:2615; CHECK:       ; %bb.0: ; %entry2616; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2617; CHECK-NEXT:    global_load_dwordx4 v[1:4], v[1:2], off2618; CHECK-NEXT:    s_waitcnt vmcnt(0)2619; CHECK-NEXT:    ds_write2_b64 v0, v[1:2], v[3:4] offset1:12620; CHECK-NEXT:    s_waitcnt lgkmcnt(0)2621; CHECK-NEXT:    s_setpc_b64 s[30:31]2622entry:2623  tail call void @llvm.memmove.p3.p1.i64(ptr addrspace(3) noundef nonnull align 2 %dst, ptr addrspace(1) noundef nonnull align 2 %src, i64 16, i1 false)2624  ret void2625}2626 2627define void @memmove_p3_p1_sz31_align_2_2(ptr addrspace(3) align 2 %dst, ptr addrspace(1) align 2 readonly %src) {2628; CHECK-LABEL: memmove_p3_p1_sz31_align_2_2:2629; CHECK:       ; %bb.0: ; %entry2630; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2631; CHECK-NEXT:    s_clause 0x32632; CHECK-NEXT:    global_load_dwordx4 v[3:6], v[1:2], off2633; CHECK-NEXT:    global_load_dwordx3 v[7:9], v[1:2], off offset:162634; CHECK-NEXT:    global_load_ushort v10, v[1:2], off offset:282635; CHECK-NEXT:    global_load_ubyte v1, v[1:2], off offset:302636; CHECK-NEXT:    s_waitcnt vmcnt(3)2637; CHECK-NEXT:    ds_write2_b64 v0, v[3:4], v[5:6] offset1:12638; CHECK-NEXT:    s_waitcnt vmcnt(2)2639; CHECK-NEXT:    ds_write_b64 v0, v[7:8] offset:162640; CHECK-NEXT:    ds_write_b32 v0, v9 offset:242641; CHECK-NEXT:    s_waitcnt vmcnt(1)2642; CHECK-NEXT:    ds_write_b16 v0, v10 offset:282643; CHECK-NEXT:    s_waitcnt vmcnt(0)2644; CHECK-NEXT:    ds_write_b8 v0, v1 offset:302645; CHECK-NEXT:    s_waitcnt lgkmcnt(0)2646; CHECK-NEXT:    s_setpc_b64 s[30:31]2647entry:2648  tail call void @llvm.memmove.p3.p1.i64(ptr addrspace(3) noundef nonnull align 2 %dst, ptr addrspace(1) noundef nonnull align 2 %src, i64 31, i1 false)2649  ret void2650}2651 2652define void @memmove_p3_p1_sz32_align_2_2(ptr addrspace(3) align 2 %dst, ptr addrspace(1) align 2 readonly %src) {2653; CHECK-LABEL: memmove_p3_p1_sz32_align_2_2:2654; CHECK:       ; %bb.0: ; %entry2655; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2656; CHECK-NEXT:    s_clause 0x12657; CHECK-NEXT:    global_load_dwordx4 v[3:6], v[1:2], off2658; CHECK-NEXT:    global_load_dwordx4 v[7:10], v[1:2], off offset:162659; CHECK-NEXT:    s_waitcnt vmcnt(1)2660; CHECK-NEXT:    ds_write2_b64 v0, v[3:4], v[5:6] offset1:12661; CHECK-NEXT:    s_waitcnt vmcnt(0)2662; CHECK-NEXT:    ds_write2_b64 v0, v[7:8], v[9:10] offset0:2 offset1:32663; CHECK-NEXT:    s_waitcnt lgkmcnt(0)2664; CHECK-NEXT:    s_setpc_b64 s[30:31]2665entry:2666  tail call void @llvm.memmove.p3.p1.i64(ptr addrspace(3) noundef nonnull align 2 %dst, ptr addrspace(1) noundef nonnull align 2 %src, i64 32, i1 false)2667  ret void2668}2669 2670define void @memmove_p3_p1_sz16_align_8_8(ptr addrspace(3) align 8 %dst, ptr addrspace(1) align 8 readonly %src) {2671; CHECK-LABEL: memmove_p3_p1_sz16_align_8_8:2672; CHECK:       ; %bb.0: ; %entry2673; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2674; CHECK-NEXT:    global_load_dwordx4 v[1:4], v[1:2], off2675; CHECK-NEXT:    s_waitcnt vmcnt(0)2676; CHECK-NEXT:    ds_write2_b64 v0, v[1:2], v[3:4] offset1:12677; CHECK-NEXT:    s_waitcnt lgkmcnt(0)2678; CHECK-NEXT:    s_setpc_b64 s[30:31]2679entry:2680  tail call void @llvm.memmove.p3.p1.i64(ptr addrspace(3) noundef nonnull align 8 %dst, ptr addrspace(1) noundef nonnull align 8 %src, i64 16, i1 false)2681  ret void2682}2683 2684define void @memmove_p3_p1_sz31_align_8_8(ptr addrspace(3) align 8 %dst, ptr addrspace(1) align 8 readonly %src) {2685; CHECK-LABEL: memmove_p3_p1_sz31_align_8_8:2686; CHECK:       ; %bb.0: ; %entry2687; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2688; CHECK-NEXT:    s_clause 0x32689; CHECK-NEXT:    global_load_dwordx4 v[3:6], v[1:2], off2690; CHECK-NEXT:    global_load_dwordx3 v[7:9], v[1:2], off offset:162691; CHECK-NEXT:    global_load_ushort v10, v[1:2], off offset:282692; CHECK-NEXT:    global_load_ubyte v1, v[1:2], off offset:302693; CHECK-NEXT:    s_waitcnt vmcnt(3)2694; CHECK-NEXT:    ds_write2_b64 v0, v[3:4], v[5:6] offset1:12695; CHECK-NEXT:    s_waitcnt vmcnt(2)2696; CHECK-NEXT:    ds_write2_b32 v0, v8, v9 offset0:5 offset1:62697; CHECK-NEXT:    ds_write_b32 v0, v7 offset:162698; CHECK-NEXT:    s_waitcnt vmcnt(1)2699; CHECK-NEXT:    ds_write_b16 v0, v10 offset:282700; CHECK-NEXT:    s_waitcnt vmcnt(0)2701; CHECK-NEXT:    ds_write_b8 v0, v1 offset:302702; CHECK-NEXT:    s_waitcnt lgkmcnt(0)2703; CHECK-NEXT:    s_setpc_b64 s[30:31]2704entry:2705  tail call void @llvm.memmove.p3.p1.i64(ptr addrspace(3) noundef nonnull align 8 %dst, ptr addrspace(1) noundef nonnull align 8 %src, i64 31, i1 false)2706  ret void2707}2708 2709define void @memmove_p3_p1_sz32_align_8_8(ptr addrspace(3) align 8 %dst, ptr addrspace(1) align 8 readonly %src) {2710; CHECK-LABEL: memmove_p3_p1_sz32_align_8_8:2711; CHECK:       ; %bb.0: ; %entry2712; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2713; CHECK-NEXT:    s_clause 0x12714; CHECK-NEXT:    global_load_dwordx4 v[3:6], v[1:2], off2715; CHECK-NEXT:    global_load_dwordx4 v[7:10], v[1:2], off offset:162716; CHECK-NEXT:    s_waitcnt vmcnt(1)2717; CHECK-NEXT:    ds_write2_b64 v0, v[3:4], v[5:6] offset1:12718; CHECK-NEXT:    s_waitcnt vmcnt(0)2719; CHECK-NEXT:    ds_write2_b64 v0, v[7:8], v[9:10] offset0:2 offset1:32720; CHECK-NEXT:    s_waitcnt lgkmcnt(0)2721; CHECK-NEXT:    s_setpc_b64 s[30:31]2722entry:2723  tail call void @llvm.memmove.p3.p1.i64(ptr addrspace(3) noundef nonnull align 8 %dst, ptr addrspace(1) noundef nonnull align 8 %src, i64 32, i1 false)2724  ret void2725}2726 2727define void @memmove_p3_p1_sz16_align_16_16(ptr addrspace(3) align 16 %dst, ptr addrspace(1) align 16 readonly %src) {2728; CHECK-LABEL: memmove_p3_p1_sz16_align_16_16:2729; CHECK:       ; %bb.0: ; %entry2730; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2731; CHECK-NEXT:    global_load_dwordx4 v[1:4], v[1:2], off2732; CHECK-NEXT:    s_waitcnt vmcnt(0)2733; CHECK-NEXT:    ds_write_b128 v0, v[1:4]2734; CHECK-NEXT:    s_waitcnt lgkmcnt(0)2735; CHECK-NEXT:    s_setpc_b64 s[30:31]2736entry:2737  tail call void @llvm.memmove.p3.p1.i64(ptr addrspace(3) noundef nonnull align 16 %dst, ptr addrspace(1) noundef nonnull align 16 %src, i64 16, i1 false)2738  ret void2739}2740 2741define void @memmove_p3_p1_sz31_align_16_16(ptr addrspace(3) align 16 %dst, ptr addrspace(1) align 16 readonly %src) {2742; CHECK-LABEL: memmove_p3_p1_sz31_align_16_16:2743; CHECK:       ; %bb.0: ; %entry2744; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2745; CHECK-NEXT:    s_clause 0x32746; CHECK-NEXT:    global_load_dwordx3 v[7:9], v[1:2], off offset:162747; CHECK-NEXT:    global_load_dwordx4 v[3:6], v[1:2], off2748; CHECK-NEXT:    global_load_ushort v10, v[1:2], off offset:282749; CHECK-NEXT:    global_load_ubyte v1, v[1:2], off offset:302750; CHECK-NEXT:    s_waitcnt vmcnt(3)2751; CHECK-NEXT:    ds_write2_b32 v0, v8, v9 offset0:5 offset1:62752; CHECK-NEXT:    s_waitcnt vmcnt(2)2753; CHECK-NEXT:    ds_write_b128 v0, v[3:6]2754; CHECK-NEXT:    ds_write_b32 v0, v7 offset:162755; CHECK-NEXT:    s_waitcnt vmcnt(1)2756; CHECK-NEXT:    ds_write_b16 v0, v10 offset:282757; CHECK-NEXT:    s_waitcnt vmcnt(0)2758; CHECK-NEXT:    ds_write_b8 v0, v1 offset:302759; CHECK-NEXT:    s_waitcnt lgkmcnt(0)2760; CHECK-NEXT:    s_setpc_b64 s[30:31]2761entry:2762  tail call void @llvm.memmove.p3.p1.i64(ptr addrspace(3) noundef nonnull align 16 %dst, ptr addrspace(1) noundef nonnull align 16 %src, i64 31, i1 false)2763  ret void2764}2765 2766define void @memmove_p3_p1_sz32_align_16_16(ptr addrspace(3) align 16 %dst, ptr addrspace(1) align 16 readonly %src) {2767; CHECK-LABEL: memmove_p3_p1_sz32_align_16_16:2768; CHECK:       ; %bb.0: ; %entry2769; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2770; CHECK-NEXT:    s_clause 0x12771; CHECK-NEXT:    global_load_dwordx4 v[3:6], v[1:2], off2772; CHECK-NEXT:    global_load_dwordx4 v[7:10], v[1:2], off offset:162773; CHECK-NEXT:    s_waitcnt vmcnt(1)2774; CHECK-NEXT:    ds_write_b128 v0, v[3:6]2775; CHECK-NEXT:    s_waitcnt vmcnt(0)2776; CHECK-NEXT:    ds_write_b128 v0, v[7:10] offset:162777; CHECK-NEXT:    s_waitcnt lgkmcnt(0)2778; CHECK-NEXT:    s_setpc_b64 s[30:31]2779entry:2780  tail call void @llvm.memmove.p3.p1.i64(ptr addrspace(3) noundef nonnull align 16 %dst, ptr addrspace(1) noundef nonnull align 16 %src, i64 32, i1 false)2781  ret void2782}2783 2784define void @memmove_p3_p3_sz16_align_1_1(ptr addrspace(3) align 1 %dst, ptr addrspace(3) align 1 readonly %src) {2785; CHECK-LABEL: memmove_p3_p3_sz16_align_1_1:2786; CHECK:       ; %bb.0: ; %entry2787; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2788; CHECK-NEXT:    ds_read2_b64 v[1:4], v1 offset1:12789; CHECK-NEXT:    s_waitcnt lgkmcnt(0)2790; CHECK-NEXT:    ds_write2_b64 v0, v[1:2], v[3:4] offset1:12791; CHECK-NEXT:    s_waitcnt lgkmcnt(0)2792; CHECK-NEXT:    s_setpc_b64 s[30:31]2793entry:2794  tail call void @llvm.memmove.p3.p3.i64(ptr addrspace(3) noundef nonnull align 1 %dst, ptr addrspace(3) noundef nonnull align 1 %src, i64 16, i1 false)2795  ret void2796}2797 2798define void @memmove_p3_p3_sz31_align_1_1(ptr addrspace(3) align 1 %dst, ptr addrspace(3) align 1 readonly %src) {2799; CHECK-LABEL: memmove_p3_p3_sz31_align_1_1:2800; CHECK:       ; %bb.0: ; %entry2801; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2802; CHECK-NEXT:    ds_read_u8 v7, v1 offset:302803; CHECK-NEXT:    ds_read_u16 v8, v1 offset:282804; CHECK-NEXT:    ds_read_b32 v9, v1 offset:242805; CHECK-NEXT:    ds_read_b64 v[5:6], v1 offset:162806; CHECK-NEXT:    ds_read2_b64 v[1:4], v1 offset1:12807; CHECK-NEXT:    s_waitcnt lgkmcnt(4)2808; CHECK-NEXT:    ds_write_b8 v0, v7 offset:302809; CHECK-NEXT:    s_waitcnt lgkmcnt(4)2810; CHECK-NEXT:    ds_write_b16 v0, v8 offset:282811; CHECK-NEXT:    s_waitcnt lgkmcnt(4)2812; CHECK-NEXT:    ds_write_b32 v0, v9 offset:242813; CHECK-NEXT:    s_waitcnt lgkmcnt(4)2814; CHECK-NEXT:    ds_write_b64 v0, v[5:6] offset:162815; CHECK-NEXT:    s_waitcnt lgkmcnt(4)2816; CHECK-NEXT:    ds_write2_b64 v0, v[1:2], v[3:4] offset1:12817; CHECK-NEXT:    s_waitcnt lgkmcnt(0)2818; CHECK-NEXT:    s_setpc_b64 s[30:31]2819entry:2820  tail call void @llvm.memmove.p3.p3.i64(ptr addrspace(3) noundef nonnull align 1 %dst, ptr addrspace(3) noundef nonnull align 1 %src, i64 31, i1 false)2821  ret void2822}2823 2824define void @memmove_p3_p3_sz32_align_1_1(ptr addrspace(3) align 1 %dst, ptr addrspace(3) align 1 readonly %src) {2825; CHECK-LABEL: memmove_p3_p3_sz32_align_1_1:2826; CHECK:       ; %bb.0: ; %entry2827; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2828; CHECK-NEXT:    ds_read2_b64 v[2:5], v1 offset0:2 offset1:32829; CHECK-NEXT:    ds_read2_b64 v[6:9], v1 offset1:12830; CHECK-NEXT:    s_waitcnt lgkmcnt(1)2831; CHECK-NEXT:    ds_write2_b64 v0, v[2:3], v[4:5] offset0:2 offset1:32832; CHECK-NEXT:    s_waitcnt lgkmcnt(1)2833; CHECK-NEXT:    ds_write2_b64 v0, v[6:7], v[8:9] offset1:12834; CHECK-NEXT:    s_waitcnt lgkmcnt(0)2835; CHECK-NEXT:    s_setpc_b64 s[30:31]2836entry:2837  tail call void @llvm.memmove.p3.p3.i64(ptr addrspace(3) noundef nonnull align 1 %dst, ptr addrspace(3) noundef nonnull align 1 %src, i64 32, i1 false)2838  ret void2839}2840 2841define void @memmove_p3_p3_sz16_align_2_2(ptr addrspace(3) align 2 %dst, ptr addrspace(3) align 2 readonly %src) {2842; CHECK-LABEL: memmove_p3_p3_sz16_align_2_2:2843; CHECK:       ; %bb.0: ; %entry2844; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2845; CHECK-NEXT:    ds_read2_b64 v[1:4], v1 offset1:12846; CHECK-NEXT:    s_waitcnt lgkmcnt(0)2847; CHECK-NEXT:    ds_write2_b64 v0, v[1:2], v[3:4] offset1:12848; CHECK-NEXT:    s_waitcnt lgkmcnt(0)2849; CHECK-NEXT:    s_setpc_b64 s[30:31]2850entry:2851  tail call void @llvm.memmove.p3.p3.i64(ptr addrspace(3) noundef nonnull align 2 %dst, ptr addrspace(3) noundef nonnull align 2 %src, i64 16, i1 false)2852  ret void2853}2854 2855define void @memmove_p3_p3_sz31_align_2_2(ptr addrspace(3) align 2 %dst, ptr addrspace(3) align 2 readonly %src) {2856; CHECK-LABEL: memmove_p3_p3_sz31_align_2_2:2857; CHECK:       ; %bb.0: ; %entry2858; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2859; CHECK-NEXT:    ds_read_u8 v7, v1 offset:302860; CHECK-NEXT:    ds_read_u16 v8, v1 offset:282861; CHECK-NEXT:    ds_read_b32 v9, v1 offset:242862; CHECK-NEXT:    ds_read_b64 v[5:6], v1 offset:162863; CHECK-NEXT:    ds_read2_b64 v[1:4], v1 offset1:12864; CHECK-NEXT:    s_waitcnt lgkmcnt(4)2865; CHECK-NEXT:    ds_write_b8 v0, v7 offset:302866; CHECK-NEXT:    s_waitcnt lgkmcnt(4)2867; CHECK-NEXT:    ds_write_b16 v0, v8 offset:282868; CHECK-NEXT:    s_waitcnt lgkmcnt(4)2869; CHECK-NEXT:    ds_write_b32 v0, v9 offset:242870; CHECK-NEXT:    s_waitcnt lgkmcnt(4)2871; CHECK-NEXT:    ds_write_b64 v0, v[5:6] offset:162872; CHECK-NEXT:    s_waitcnt lgkmcnt(4)2873; CHECK-NEXT:    ds_write2_b64 v0, v[1:2], v[3:4] offset1:12874; CHECK-NEXT:    s_waitcnt lgkmcnt(0)2875; CHECK-NEXT:    s_setpc_b64 s[30:31]2876entry:2877  tail call void @llvm.memmove.p3.p3.i64(ptr addrspace(3) noundef nonnull align 2 %dst, ptr addrspace(3) noundef nonnull align 2 %src, i64 31, i1 false)2878  ret void2879}2880 2881define void @memmove_p3_p3_sz32_align_2_2(ptr addrspace(3) align 2 %dst, ptr addrspace(3) align 2 readonly %src) {2882; CHECK-LABEL: memmove_p3_p3_sz32_align_2_2:2883; CHECK:       ; %bb.0: ; %entry2884; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2885; CHECK-NEXT:    ds_read2_b64 v[2:5], v1 offset0:2 offset1:32886; CHECK-NEXT:    ds_read2_b64 v[6:9], v1 offset1:12887; CHECK-NEXT:    s_waitcnt lgkmcnt(1)2888; CHECK-NEXT:    ds_write2_b64 v0, v[2:3], v[4:5] offset0:2 offset1:32889; CHECK-NEXT:    s_waitcnt lgkmcnt(1)2890; CHECK-NEXT:    ds_write2_b64 v0, v[6:7], v[8:9] offset1:12891; CHECK-NEXT:    s_waitcnt lgkmcnt(0)2892; CHECK-NEXT:    s_setpc_b64 s[30:31]2893entry:2894  tail call void @llvm.memmove.p3.p3.i64(ptr addrspace(3) noundef nonnull align 2 %dst, ptr addrspace(3) noundef nonnull align 2 %src, i64 32, i1 false)2895  ret void2896}2897 2898define void @memmove_p3_p3_sz16_align_8_8(ptr addrspace(3) align 8 %dst, ptr addrspace(3) align 8 readonly %src) {2899; CHECK-LABEL: memmove_p3_p3_sz16_align_8_8:2900; CHECK:       ; %bb.0: ; %entry2901; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2902; CHECK-NEXT:    ds_read2_b64 v[1:4], v1 offset1:12903; CHECK-NEXT:    s_waitcnt lgkmcnt(0)2904; CHECK-NEXT:    ds_write2_b64 v0, v[1:2], v[3:4] offset1:12905; CHECK-NEXT:    s_waitcnt lgkmcnt(0)2906; CHECK-NEXT:    s_setpc_b64 s[30:31]2907entry:2908  tail call void @llvm.memmove.p3.p3.i64(ptr addrspace(3) noundef nonnull align 8 %dst, ptr addrspace(3) noundef nonnull align 8 %src, i64 16, i1 false)2909  ret void2910}2911 2912define void @memmove_p3_p3_sz31_align_8_8(ptr addrspace(3) align 8 %dst, ptr addrspace(3) align 8 readonly %src) {2913; CHECK-LABEL: memmove_p3_p3_sz31_align_8_8:2914; CHECK:       ; %bb.0: ; %entry2915; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2916; CHECK-NEXT:    ds_read2_b64 v[2:5], v1 offset1:12917; CHECK-NEXT:    ds_read2_b32 v[6:7], v1 offset0:4 offset1:52918; CHECK-NEXT:    ds_read_b32 v8, v1 offset:242919; CHECK-NEXT:    ds_read_u8 v9, v1 offset:302920; CHECK-NEXT:    ds_read_u16 v1, v1 offset:282921; CHECK-NEXT:    s_waitcnt lgkmcnt(4)2922; CHECK-NEXT:    ds_write2_b64 v0, v[2:3], v[4:5] offset1:12923; CHECK-NEXT:    s_waitcnt lgkmcnt(4)2924; CHECK-NEXT:    ds_write2_b32 v0, v6, v7 offset0:4 offset1:52925; CHECK-NEXT:    s_waitcnt lgkmcnt(4)2926; CHECK-NEXT:    ds_write_b32 v0, v8 offset:242927; CHECK-NEXT:    s_waitcnt lgkmcnt(4)2928; CHECK-NEXT:    ds_write_b8 v0, v9 offset:302929; CHECK-NEXT:    s_waitcnt lgkmcnt(4)2930; CHECK-NEXT:    ds_write_b16 v0, v1 offset:282931; CHECK-NEXT:    s_waitcnt lgkmcnt(0)2932; CHECK-NEXT:    s_setpc_b64 s[30:31]2933entry:2934  tail call void @llvm.memmove.p3.p3.i64(ptr addrspace(3) noundef nonnull align 8 %dst, ptr addrspace(3) noundef nonnull align 8 %src, i64 31, i1 false)2935  ret void2936}2937 2938define void @memmove_p3_p3_sz32_align_8_8(ptr addrspace(3) align 8 %dst, ptr addrspace(3) align 8 readonly %src) {2939; CHECK-LABEL: memmove_p3_p3_sz32_align_8_8:2940; CHECK:       ; %bb.0: ; %entry2941; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2942; CHECK-NEXT:    ds_read2_b64 v[2:5], v1 offset0:2 offset1:32943; CHECK-NEXT:    ds_read2_b64 v[6:9], v1 offset1:12944; CHECK-NEXT:    s_waitcnt lgkmcnt(1)2945; CHECK-NEXT:    ds_write2_b64 v0, v[2:3], v[4:5] offset0:2 offset1:32946; CHECK-NEXT:    s_waitcnt lgkmcnt(1)2947; CHECK-NEXT:    ds_write2_b64 v0, v[6:7], v[8:9] offset1:12948; CHECK-NEXT:    s_waitcnt lgkmcnt(0)2949; CHECK-NEXT:    s_setpc_b64 s[30:31]2950entry:2951  tail call void @llvm.memmove.p3.p3.i64(ptr addrspace(3) noundef nonnull align 8 %dst, ptr addrspace(3) noundef nonnull align 8 %src, i64 32, i1 false)2952  ret void2953}2954 2955define void @memmove_p3_p3_sz16_align_16_16(ptr addrspace(3) align 16 %dst, ptr addrspace(3) align 16 readonly %src) {2956; CHECK-LABEL: memmove_p3_p3_sz16_align_16_16:2957; CHECK:       ; %bb.0: ; %entry2958; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2959; CHECK-NEXT:    ds_read_b128 v[1:4], v12960; CHECK-NEXT:    s_waitcnt lgkmcnt(0)2961; CHECK-NEXT:    ds_write_b128 v0, v[1:4]2962; CHECK-NEXT:    s_waitcnt lgkmcnt(0)2963; CHECK-NEXT:    s_setpc_b64 s[30:31]2964entry:2965  tail call void @llvm.memmove.p3.p3.i64(ptr addrspace(3) noundef nonnull align 16 %dst, ptr addrspace(3) noundef nonnull align 16 %src, i64 16, i1 false)2966  ret void2967}2968 2969define void @memmove_p3_p3_sz31_align_16_16(ptr addrspace(3) align 16 %dst, ptr addrspace(3) align 16 readonly %src) {2970; CHECK-LABEL: memmove_p3_p3_sz31_align_16_16:2971; CHECK:       ; %bb.0: ; %entry2972; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2973; CHECK-NEXT:    ds_read2_b32 v[5:6], v1 offset0:4 offset1:52974; CHECK-NEXT:    ds_read_b32 v7, v1 offset:242975; CHECK-NEXT:    ds_read_u8 v8, v1 offset:302976; CHECK-NEXT:    ds_read_u16 v9, v1 offset:282977; CHECK-NEXT:    ds_read_b128 v[1:4], v12978; CHECK-NEXT:    s_waitcnt lgkmcnt(4)2979; CHECK-NEXT:    ds_write2_b32 v0, v5, v6 offset0:4 offset1:52980; CHECK-NEXT:    s_waitcnt lgkmcnt(4)2981; CHECK-NEXT:    ds_write_b32 v0, v7 offset:242982; CHECK-NEXT:    s_waitcnt lgkmcnt(4)2983; CHECK-NEXT:    ds_write_b8 v0, v8 offset:302984; CHECK-NEXT:    s_waitcnt lgkmcnt(4)2985; CHECK-NEXT:    ds_write_b16 v0, v9 offset:282986; CHECK-NEXT:    s_waitcnt lgkmcnt(4)2987; CHECK-NEXT:    ds_write_b128 v0, v[1:4]2988; CHECK-NEXT:    s_waitcnt lgkmcnt(0)2989; CHECK-NEXT:    s_setpc_b64 s[30:31]2990entry:2991  tail call void @llvm.memmove.p3.p3.i64(ptr addrspace(3) noundef nonnull align 16 %dst, ptr addrspace(3) noundef nonnull align 16 %src, i64 31, i1 false)2992  ret void2993}2994 2995define void @memmove_p3_p3_sz32_align_16_16(ptr addrspace(3) align 16 %dst, ptr addrspace(3) align 16 readonly %src) {2996; CHECK-LABEL: memmove_p3_p3_sz32_align_16_16:2997; CHECK:       ; %bb.0: ; %entry2998; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2999; CHECK-NEXT:    ds_read_b128 v[2:5], v1 offset:163000; CHECK-NEXT:    ds_read_b128 v[6:9], v13001; CHECK-NEXT:    s_waitcnt lgkmcnt(1)3002; CHECK-NEXT:    ds_write_b128 v0, v[2:5] offset:163003; CHECK-NEXT:    s_waitcnt lgkmcnt(1)3004; CHECK-NEXT:    ds_write_b128 v0, v[6:9]3005; CHECK-NEXT:    s_waitcnt lgkmcnt(0)3006; CHECK-NEXT:    s_setpc_b64 s[30:31]3007entry:3008  tail call void @llvm.memmove.p3.p3.i64(ptr addrspace(3) noundef nonnull align 16 %dst, ptr addrspace(3) noundef nonnull align 16 %src, i64 32, i1 false)3009  ret void3010}3011 3012define void @memmove_p3_p4_sz16_align_1_1(ptr addrspace(3) align 1 %dst, ptr addrspace(4) align 1 readonly %src) {3013; CHECK-LABEL: memmove_p3_p4_sz16_align_1_1:3014; CHECK:       ; %bb.0: ; %entry3015; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3016; CHECK-NEXT:    global_load_dwordx4 v[1:4], v[1:2], off3017; CHECK-NEXT:    s_waitcnt vmcnt(0)3018; CHECK-NEXT:    ds_write2_b64 v0, v[1:2], v[3:4] offset1:13019; CHECK-NEXT:    s_waitcnt lgkmcnt(0)3020; CHECK-NEXT:    s_setpc_b64 s[30:31]3021entry:3022  tail call void @llvm.memmove.p3.p4.i64(ptr addrspace(3) noundef nonnull align 1 %dst, ptr addrspace(4) noundef nonnull align 1 %src, i64 16, i1 false)3023  ret void3024}3025 3026define void @memmove_p3_p4_sz31_align_1_1(ptr addrspace(3) align 1 %dst, ptr addrspace(4) align 1 readonly %src) {3027; CHECK-LABEL: memmove_p3_p4_sz31_align_1_1:3028; CHECK:       ; %bb.0: ; %entry3029; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3030; CHECK-NEXT:    s_clause 0x33031; CHECK-NEXT:    global_load_dwordx4 v[3:6], v[1:2], off3032; CHECK-NEXT:    global_load_dwordx3 v[7:9], v[1:2], off offset:163033; CHECK-NEXT:    global_load_ushort v10, v[1:2], off offset:283034; CHECK-NEXT:    global_load_ubyte v1, v[1:2], off offset:303035; CHECK-NEXT:    s_waitcnt vmcnt(3)3036; CHECK-NEXT:    ds_write2_b64 v0, v[3:4], v[5:6] offset1:13037; CHECK-NEXT:    s_waitcnt vmcnt(2)3038; CHECK-NEXT:    ds_write_b64 v0, v[7:8] offset:163039; CHECK-NEXT:    ds_write_b32 v0, v9 offset:243040; CHECK-NEXT:    s_waitcnt vmcnt(1)3041; CHECK-NEXT:    ds_write_b16 v0, v10 offset:283042; CHECK-NEXT:    s_waitcnt vmcnt(0)3043; CHECK-NEXT:    ds_write_b8 v0, v1 offset:303044; CHECK-NEXT:    s_waitcnt lgkmcnt(0)3045; CHECK-NEXT:    s_setpc_b64 s[30:31]3046entry:3047  tail call void @llvm.memmove.p3.p4.i64(ptr addrspace(3) noundef nonnull align 1 %dst, ptr addrspace(4) noundef nonnull align 1 %src, i64 31, i1 false)3048  ret void3049}3050 3051define void @memmove_p3_p4_sz32_align_1_1(ptr addrspace(3) align 1 %dst, ptr addrspace(4) align 1 readonly %src) {3052; CHECK-LABEL: memmove_p3_p4_sz32_align_1_1:3053; CHECK:       ; %bb.0: ; %entry3054; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3055; CHECK-NEXT:    s_clause 0x13056; CHECK-NEXT:    global_load_dwordx4 v[3:6], v[1:2], off3057; CHECK-NEXT:    global_load_dwordx4 v[7:10], v[1:2], off offset:163058; CHECK-NEXT:    s_waitcnt vmcnt(1)3059; CHECK-NEXT:    ds_write2_b64 v0, v[3:4], v[5:6] offset1:13060; CHECK-NEXT:    s_waitcnt vmcnt(0)3061; CHECK-NEXT:    ds_write2_b64 v0, v[7:8], v[9:10] offset0:2 offset1:33062; CHECK-NEXT:    s_waitcnt lgkmcnt(0)3063; CHECK-NEXT:    s_setpc_b64 s[30:31]3064entry:3065  tail call void @llvm.memmove.p3.p4.i64(ptr addrspace(3) noundef nonnull align 1 %dst, ptr addrspace(4) noundef nonnull align 1 %src, i64 32, i1 false)3066  ret void3067}3068 3069define void @memmove_p3_p4_sz16_align_2_2(ptr addrspace(3) align 2 %dst, ptr addrspace(4) align 2 readonly %src) {3070; CHECK-LABEL: memmove_p3_p4_sz16_align_2_2:3071; CHECK:       ; %bb.0: ; %entry3072; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3073; CHECK-NEXT:    global_load_dwordx4 v[1:4], v[1:2], off3074; CHECK-NEXT:    s_waitcnt vmcnt(0)3075; CHECK-NEXT:    ds_write2_b64 v0, v[1:2], v[3:4] offset1:13076; CHECK-NEXT:    s_waitcnt lgkmcnt(0)3077; CHECK-NEXT:    s_setpc_b64 s[30:31]3078entry:3079  tail call void @llvm.memmove.p3.p4.i64(ptr addrspace(3) noundef nonnull align 2 %dst, ptr addrspace(4) noundef nonnull align 2 %src, i64 16, i1 false)3080  ret void3081}3082 3083define void @memmove_p3_p4_sz31_align_2_2(ptr addrspace(3) align 2 %dst, ptr addrspace(4) align 2 readonly %src) {3084; CHECK-LABEL: memmove_p3_p4_sz31_align_2_2:3085; CHECK:       ; %bb.0: ; %entry3086; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3087; CHECK-NEXT:    s_clause 0x33088; CHECK-NEXT:    global_load_dwordx4 v[3:6], v[1:2], off3089; CHECK-NEXT:    global_load_dwordx3 v[7:9], v[1:2], off offset:163090; CHECK-NEXT:    global_load_ushort v10, v[1:2], off offset:283091; CHECK-NEXT:    global_load_ubyte v1, v[1:2], off offset:303092; CHECK-NEXT:    s_waitcnt vmcnt(3)3093; CHECK-NEXT:    ds_write2_b64 v0, v[3:4], v[5:6] offset1:13094; CHECK-NEXT:    s_waitcnt vmcnt(2)3095; CHECK-NEXT:    ds_write_b64 v0, v[7:8] offset:163096; CHECK-NEXT:    ds_write_b32 v0, v9 offset:243097; CHECK-NEXT:    s_waitcnt vmcnt(1)3098; CHECK-NEXT:    ds_write_b16 v0, v10 offset:283099; CHECK-NEXT:    s_waitcnt vmcnt(0)3100; CHECK-NEXT:    ds_write_b8 v0, v1 offset:303101; CHECK-NEXT:    s_waitcnt lgkmcnt(0)3102; CHECK-NEXT:    s_setpc_b64 s[30:31]3103entry:3104  tail call void @llvm.memmove.p3.p4.i64(ptr addrspace(3) noundef nonnull align 2 %dst, ptr addrspace(4) noundef nonnull align 2 %src, i64 31, i1 false)3105  ret void3106}3107 3108define void @memmove_p3_p4_sz32_align_2_2(ptr addrspace(3) align 2 %dst, ptr addrspace(4) align 2 readonly %src) {3109; CHECK-LABEL: memmove_p3_p4_sz32_align_2_2:3110; CHECK:       ; %bb.0: ; %entry3111; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3112; CHECK-NEXT:    s_clause 0x13113; CHECK-NEXT:    global_load_dwordx4 v[3:6], v[1:2], off3114; CHECK-NEXT:    global_load_dwordx4 v[7:10], v[1:2], off offset:163115; CHECK-NEXT:    s_waitcnt vmcnt(1)3116; CHECK-NEXT:    ds_write2_b64 v0, v[3:4], v[5:6] offset1:13117; CHECK-NEXT:    s_waitcnt vmcnt(0)3118; CHECK-NEXT:    ds_write2_b64 v0, v[7:8], v[9:10] offset0:2 offset1:33119; CHECK-NEXT:    s_waitcnt lgkmcnt(0)3120; CHECK-NEXT:    s_setpc_b64 s[30:31]3121entry:3122  tail call void @llvm.memmove.p3.p4.i64(ptr addrspace(3) noundef nonnull align 2 %dst, ptr addrspace(4) noundef nonnull align 2 %src, i64 32, i1 false)3123  ret void3124}3125 3126define void @memmove_p3_p4_sz16_align_8_8(ptr addrspace(3) align 8 %dst, ptr addrspace(4) align 8 readonly %src) {3127; CHECK-LABEL: memmove_p3_p4_sz16_align_8_8:3128; CHECK:       ; %bb.0: ; %entry3129; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3130; CHECK-NEXT:    global_load_dwordx4 v[1:4], v[1:2], off3131; CHECK-NEXT:    s_waitcnt vmcnt(0)3132; CHECK-NEXT:    ds_write2_b64 v0, v[1:2], v[3:4] offset1:13133; CHECK-NEXT:    s_waitcnt lgkmcnt(0)3134; CHECK-NEXT:    s_setpc_b64 s[30:31]3135entry:3136  tail call void @llvm.memmove.p3.p4.i64(ptr addrspace(3) noundef nonnull align 8 %dst, ptr addrspace(4) noundef nonnull align 8 %src, i64 16, i1 false)3137  ret void3138}3139 3140define void @memmove_p3_p4_sz31_align_8_8(ptr addrspace(3) align 8 %dst, ptr addrspace(4) align 8 readonly %src) {3141; CHECK-LABEL: memmove_p3_p4_sz31_align_8_8:3142; CHECK:       ; %bb.0: ; %entry3143; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3144; CHECK-NEXT:    s_clause 0x33145; CHECK-NEXT:    global_load_dwordx4 v[3:6], v[1:2], off3146; CHECK-NEXT:    global_load_dwordx3 v[7:9], v[1:2], off offset:163147; CHECK-NEXT:    global_load_ushort v10, v[1:2], off offset:283148; CHECK-NEXT:    global_load_ubyte v1, v[1:2], off offset:303149; CHECK-NEXT:    s_waitcnt vmcnt(3)3150; CHECK-NEXT:    ds_write2_b64 v0, v[3:4], v[5:6] offset1:13151; CHECK-NEXT:    s_waitcnt vmcnt(2)3152; CHECK-NEXT:    ds_write2_b32 v0, v8, v9 offset0:5 offset1:63153; CHECK-NEXT:    ds_write_b32 v0, v7 offset:163154; CHECK-NEXT:    s_waitcnt vmcnt(1)3155; CHECK-NEXT:    ds_write_b16 v0, v10 offset:283156; CHECK-NEXT:    s_waitcnt vmcnt(0)3157; CHECK-NEXT:    ds_write_b8 v0, v1 offset:303158; CHECK-NEXT:    s_waitcnt lgkmcnt(0)3159; CHECK-NEXT:    s_setpc_b64 s[30:31]3160entry:3161  tail call void @llvm.memmove.p3.p4.i64(ptr addrspace(3) noundef nonnull align 8 %dst, ptr addrspace(4) noundef nonnull align 8 %src, i64 31, i1 false)3162  ret void3163}3164 3165define void @memmove_p3_p4_sz32_align_8_8(ptr addrspace(3) align 8 %dst, ptr addrspace(4) align 8 readonly %src) {3166; CHECK-LABEL: memmove_p3_p4_sz32_align_8_8:3167; CHECK:       ; %bb.0: ; %entry3168; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3169; CHECK-NEXT:    s_clause 0x13170; CHECK-NEXT:    global_load_dwordx4 v[3:6], v[1:2], off3171; CHECK-NEXT:    global_load_dwordx4 v[7:10], v[1:2], off offset:163172; CHECK-NEXT:    s_waitcnt vmcnt(1)3173; CHECK-NEXT:    ds_write2_b64 v0, v[3:4], v[5:6] offset1:13174; CHECK-NEXT:    s_waitcnt vmcnt(0)3175; CHECK-NEXT:    ds_write2_b64 v0, v[7:8], v[9:10] offset0:2 offset1:33176; CHECK-NEXT:    s_waitcnt lgkmcnt(0)3177; CHECK-NEXT:    s_setpc_b64 s[30:31]3178entry:3179  tail call void @llvm.memmove.p3.p4.i64(ptr addrspace(3) noundef nonnull align 8 %dst, ptr addrspace(4) noundef nonnull align 8 %src, i64 32, i1 false)3180  ret void3181}3182 3183define void @memmove_p3_p4_sz16_align_16_16(ptr addrspace(3) align 16 %dst, ptr addrspace(4) align 16 readonly %src) {3184; CHECK-LABEL: memmove_p3_p4_sz16_align_16_16:3185; CHECK:       ; %bb.0: ; %entry3186; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3187; CHECK-NEXT:    global_load_dwordx4 v[1:4], v[1:2], off3188; CHECK-NEXT:    s_waitcnt vmcnt(0)3189; CHECK-NEXT:    ds_write_b128 v0, v[1:4]3190; CHECK-NEXT:    s_waitcnt lgkmcnt(0)3191; CHECK-NEXT:    s_setpc_b64 s[30:31]3192entry:3193  tail call void @llvm.memmove.p3.p4.i64(ptr addrspace(3) noundef nonnull align 16 %dst, ptr addrspace(4) noundef nonnull align 16 %src, i64 16, i1 false)3194  ret void3195}3196 3197define void @memmove_p3_p4_sz31_align_16_16(ptr addrspace(3) align 16 %dst, ptr addrspace(4) align 16 readonly %src) {3198; CHECK-LABEL: memmove_p3_p4_sz31_align_16_16:3199; CHECK:       ; %bb.0: ; %entry3200; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3201; CHECK-NEXT:    s_clause 0x33202; CHECK-NEXT:    global_load_dwordx3 v[7:9], v[1:2], off offset:163203; CHECK-NEXT:    global_load_dwordx4 v[3:6], v[1:2], off3204; CHECK-NEXT:    global_load_ushort v10, v[1:2], off offset:283205; CHECK-NEXT:    global_load_ubyte v1, v[1:2], off offset:303206; CHECK-NEXT:    s_waitcnt vmcnt(3)3207; CHECK-NEXT:    ds_write2_b32 v0, v8, v9 offset0:5 offset1:63208; CHECK-NEXT:    s_waitcnt vmcnt(2)3209; CHECK-NEXT:    ds_write_b128 v0, v[3:6]3210; CHECK-NEXT:    ds_write_b32 v0, v7 offset:163211; CHECK-NEXT:    s_waitcnt vmcnt(1)3212; CHECK-NEXT:    ds_write_b16 v0, v10 offset:283213; CHECK-NEXT:    s_waitcnt vmcnt(0)3214; CHECK-NEXT:    ds_write_b8 v0, v1 offset:303215; CHECK-NEXT:    s_waitcnt lgkmcnt(0)3216; CHECK-NEXT:    s_setpc_b64 s[30:31]3217entry:3218  tail call void @llvm.memmove.p3.p4.i64(ptr addrspace(3) noundef nonnull align 16 %dst, ptr addrspace(4) noundef nonnull align 16 %src, i64 31, i1 false)3219  ret void3220}3221 3222define void @memmove_p3_p4_sz32_align_16_16(ptr addrspace(3) align 16 %dst, ptr addrspace(4) align 16 readonly %src) {3223; CHECK-LABEL: memmove_p3_p4_sz32_align_16_16:3224; CHECK:       ; %bb.0: ; %entry3225; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3226; CHECK-NEXT:    s_clause 0x13227; CHECK-NEXT:    global_load_dwordx4 v[3:6], v[1:2], off3228; CHECK-NEXT:    global_load_dwordx4 v[7:10], v[1:2], off offset:163229; CHECK-NEXT:    s_waitcnt vmcnt(1)3230; CHECK-NEXT:    ds_write_b128 v0, v[3:6]3231; CHECK-NEXT:    s_waitcnt vmcnt(0)3232; CHECK-NEXT:    ds_write_b128 v0, v[7:10] offset:163233; CHECK-NEXT:    s_waitcnt lgkmcnt(0)3234; CHECK-NEXT:    s_setpc_b64 s[30:31]3235entry:3236  tail call void @llvm.memmove.p3.p4.i64(ptr addrspace(3) noundef nonnull align 16 %dst, ptr addrspace(4) noundef nonnull align 16 %src, i64 32, i1 false)3237  ret void3238}3239 3240define void @memmove_p3_p5_sz16_align_1_1(ptr addrspace(3) align 1 %dst, ptr addrspace(5) align 1 readonly %src) {3241; CHECK-LABEL: memmove_p3_p5_sz16_align_1_1:3242; CHECK:       ; %bb.0: ; %entry3243; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3244; CHECK-NEXT:    s_clause 0x33245; CHECK-NEXT:    buffer_load_dword v2, v1, s[0:3], 0 offen3246; CHECK-NEXT:    buffer_load_dword v3, v1, s[0:3], 0 offen offset:43247; CHECK-NEXT:    buffer_load_dword v4, v1, s[0:3], 0 offen offset:83248; CHECK-NEXT:    buffer_load_dword v5, v1, s[0:3], 0 offen offset:123249; CHECK-NEXT:    s_waitcnt vmcnt(0)3250; CHECK-NEXT:    ds_write2_b64 v0, v[2:3], v[4:5] offset1:13251; CHECK-NEXT:    s_waitcnt lgkmcnt(0)3252; CHECK-NEXT:    s_setpc_b64 s[30:31]3253entry:3254  tail call void @llvm.memmove.p3.p5.i64(ptr addrspace(3) noundef nonnull align 1 %dst, ptr addrspace(5) noundef nonnull align 1 %src, i64 16, i1 false)3255  ret void3256}3257 3258define void @memmove_p3_p5_sz31_align_1_1(ptr addrspace(3) align 1 %dst, ptr addrspace(5) align 1 readonly %src) {3259; CHECK-LABEL: memmove_p3_p5_sz31_align_1_1:3260; CHECK:       ; %bb.0: ; %entry3261; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3262; CHECK-NEXT:    s_clause 0x83263; CHECK-NEXT:    buffer_load_ubyte v8, v1, s[0:3], 0 offen offset:303264; CHECK-NEXT:    buffer_load_dword v2, v1, s[0:3], 0 offen3265; CHECK-NEXT:    buffer_load_dword v3, v1, s[0:3], 0 offen offset:43266; CHECK-NEXT:    buffer_load_dword v4, v1, s[0:3], 0 offen offset:83267; CHECK-NEXT:    buffer_load_dword v9, v1, s[0:3], 0 offen offset:243268; CHECK-NEXT:    buffer_load_ushort v10, v1, s[0:3], 0 offen offset:283269; CHECK-NEXT:    buffer_load_dword v5, v1, s[0:3], 0 offen offset:123270; CHECK-NEXT:    buffer_load_dword v6, v1, s[0:3], 0 offen offset:163271; CHECK-NEXT:    buffer_load_dword v7, v1, s[0:3], 0 offen offset:203272; CHECK-NEXT:    s_waitcnt vmcnt(4)3273; CHECK-NEXT:    ds_write_b32 v0, v9 offset:243274; CHECK-NEXT:    s_waitcnt vmcnt(3)3275; CHECK-NEXT:    ds_write_b16 v0, v10 offset:283276; CHECK-NEXT:    ds_write_b8 v0, v8 offset:303277; CHECK-NEXT:    s_waitcnt vmcnt(2)3278; CHECK-NEXT:    ds_write2_b64 v0, v[2:3], v[4:5] offset1:13279; CHECK-NEXT:    s_waitcnt vmcnt(0)3280; CHECK-NEXT:    ds_write_b64 v0, v[6:7] offset:163281; CHECK-NEXT:    s_waitcnt lgkmcnt(0)3282; CHECK-NEXT:    s_setpc_b64 s[30:31]3283entry:3284  tail call void @llvm.memmove.p3.p5.i64(ptr addrspace(3) noundef nonnull align 1 %dst, ptr addrspace(5) noundef nonnull align 1 %src, i64 31, i1 false)3285  ret void3286}3287 3288define void @memmove_p3_p5_sz32_align_1_1(ptr addrspace(3) align 1 %dst, ptr addrspace(5) align 1 readonly %src) {3289; CHECK-LABEL: memmove_p3_p5_sz32_align_1_1:3290; CHECK:       ; %bb.0: ; %entry3291; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3292; CHECK-NEXT:    s_clause 0x73293; CHECK-NEXT:    buffer_load_dword v2, v1, s[0:3], 0 offen3294; CHECK-NEXT:    buffer_load_dword v3, v1, s[0:3], 0 offen offset:43295; CHECK-NEXT:    buffer_load_dword v4, v1, s[0:3], 0 offen offset:83296; CHECK-NEXT:    buffer_load_dword v5, v1, s[0:3], 0 offen offset:123297; CHECK-NEXT:    buffer_load_dword v6, v1, s[0:3], 0 offen offset:163298; CHECK-NEXT:    buffer_load_dword v7, v1, s[0:3], 0 offen offset:203299; CHECK-NEXT:    buffer_load_dword v8, v1, s[0:3], 0 offen offset:243300; CHECK-NEXT:    buffer_load_dword v9, v1, s[0:3], 0 offen offset:283301; CHECK-NEXT:    s_waitcnt vmcnt(4)3302; CHECK-NEXT:    ds_write2_b64 v0, v[2:3], v[4:5] offset1:13303; CHECK-NEXT:    s_waitcnt vmcnt(0)3304; CHECK-NEXT:    ds_write2_b64 v0, v[6:7], v[8:9] offset0:2 offset1:33305; CHECK-NEXT:    s_waitcnt lgkmcnt(0)3306; CHECK-NEXT:    s_setpc_b64 s[30:31]3307entry:3308  tail call void @llvm.memmove.p3.p5.i64(ptr addrspace(3) noundef nonnull align 1 %dst, ptr addrspace(5) noundef nonnull align 1 %src, i64 32, i1 false)3309  ret void3310}3311 3312define void @memmove_p3_p5_sz16_align_2_2(ptr addrspace(3) align 2 %dst, ptr addrspace(5) align 2 readonly %src) {3313; CHECK-LABEL: memmove_p3_p5_sz16_align_2_2:3314; CHECK:       ; %bb.0: ; %entry3315; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3316; CHECK-NEXT:    s_clause 0x33317; CHECK-NEXT:    buffer_load_dword v2, v1, s[0:3], 0 offen3318; CHECK-NEXT:    buffer_load_dword v3, v1, s[0:3], 0 offen offset:43319; CHECK-NEXT:    buffer_load_dword v4, v1, s[0:3], 0 offen offset:83320; CHECK-NEXT:    buffer_load_dword v5, v1, s[0:3], 0 offen offset:123321; CHECK-NEXT:    s_waitcnt vmcnt(0)3322; CHECK-NEXT:    ds_write2_b64 v0, v[2:3], v[4:5] offset1:13323; CHECK-NEXT:    s_waitcnt lgkmcnt(0)3324; CHECK-NEXT:    s_setpc_b64 s[30:31]3325entry:3326  tail call void @llvm.memmove.p3.p5.i64(ptr addrspace(3) noundef nonnull align 2 %dst, ptr addrspace(5) noundef nonnull align 2 %src, i64 16, i1 false)3327  ret void3328}3329 3330define void @memmove_p3_p5_sz31_align_2_2(ptr addrspace(3) align 2 %dst, ptr addrspace(5) align 2 readonly %src) {3331; CHECK-LABEL: memmove_p3_p5_sz31_align_2_2:3332; CHECK:       ; %bb.0: ; %entry3333; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3334; CHECK-NEXT:    s_clause 0x83335; CHECK-NEXT:    buffer_load_ubyte v8, v1, s[0:3], 0 offen offset:303336; CHECK-NEXT:    buffer_load_dword v2, v1, s[0:3], 0 offen3337; CHECK-NEXT:    buffer_load_dword v3, v1, s[0:3], 0 offen offset:43338; CHECK-NEXT:    buffer_load_dword v4, v1, s[0:3], 0 offen offset:83339; CHECK-NEXT:    buffer_load_dword v9, v1, s[0:3], 0 offen offset:243340; CHECK-NEXT:    buffer_load_ushort v10, v1, s[0:3], 0 offen offset:283341; CHECK-NEXT:    buffer_load_dword v5, v1, s[0:3], 0 offen offset:123342; CHECK-NEXT:    buffer_load_dword v6, v1, s[0:3], 0 offen offset:163343; CHECK-NEXT:    buffer_load_dword v7, v1, s[0:3], 0 offen offset:203344; CHECK-NEXT:    s_waitcnt vmcnt(4)3345; CHECK-NEXT:    ds_write_b32 v0, v9 offset:243346; CHECK-NEXT:    s_waitcnt vmcnt(3)3347; CHECK-NEXT:    ds_write_b16 v0, v10 offset:283348; CHECK-NEXT:    ds_write_b8 v0, v8 offset:303349; CHECK-NEXT:    s_waitcnt vmcnt(2)3350; CHECK-NEXT:    ds_write2_b64 v0, v[2:3], v[4:5] offset1:13351; CHECK-NEXT:    s_waitcnt vmcnt(0)3352; CHECK-NEXT:    ds_write_b64 v0, v[6:7] offset:163353; CHECK-NEXT:    s_waitcnt lgkmcnt(0)3354; CHECK-NEXT:    s_setpc_b64 s[30:31]3355entry:3356  tail call void @llvm.memmove.p3.p5.i64(ptr addrspace(3) noundef nonnull align 2 %dst, ptr addrspace(5) noundef nonnull align 2 %src, i64 31, i1 false)3357  ret void3358}3359 3360define void @memmove_p3_p5_sz32_align_2_2(ptr addrspace(3) align 2 %dst, ptr addrspace(5) align 2 readonly %src) {3361; CHECK-LABEL: memmove_p3_p5_sz32_align_2_2:3362; CHECK:       ; %bb.0: ; %entry3363; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3364; CHECK-NEXT:    s_clause 0x73365; CHECK-NEXT:    buffer_load_dword v2, v1, s[0:3], 0 offen3366; CHECK-NEXT:    buffer_load_dword v3, v1, s[0:3], 0 offen offset:43367; CHECK-NEXT:    buffer_load_dword v4, v1, s[0:3], 0 offen offset:83368; CHECK-NEXT:    buffer_load_dword v5, v1, s[0:3], 0 offen offset:123369; CHECK-NEXT:    buffer_load_dword v6, v1, s[0:3], 0 offen offset:163370; CHECK-NEXT:    buffer_load_dword v7, v1, s[0:3], 0 offen offset:203371; CHECK-NEXT:    buffer_load_dword v8, v1, s[0:3], 0 offen offset:243372; CHECK-NEXT:    buffer_load_dword v9, v1, s[0:3], 0 offen offset:283373; CHECK-NEXT:    s_waitcnt vmcnt(4)3374; CHECK-NEXT:    ds_write2_b64 v0, v[2:3], v[4:5] offset1:13375; CHECK-NEXT:    s_waitcnt vmcnt(0)3376; CHECK-NEXT:    ds_write2_b64 v0, v[6:7], v[8:9] offset0:2 offset1:33377; CHECK-NEXT:    s_waitcnt lgkmcnt(0)3378; CHECK-NEXT:    s_setpc_b64 s[30:31]3379entry:3380  tail call void @llvm.memmove.p3.p5.i64(ptr addrspace(3) noundef nonnull align 2 %dst, ptr addrspace(5) noundef nonnull align 2 %src, i64 32, i1 false)3381  ret void3382}3383 3384define void @memmove_p3_p5_sz16_align_8_8(ptr addrspace(3) align 8 %dst, ptr addrspace(5) align 8 readonly %src) {3385; CHECK-LABEL: memmove_p3_p5_sz16_align_8_8:3386; CHECK:       ; %bb.0: ; %entry3387; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3388; CHECK-NEXT:    s_clause 0x33389; CHECK-NEXT:    buffer_load_dword v2, v1, s[0:3], 0 offen3390; CHECK-NEXT:    buffer_load_dword v3, v1, s[0:3], 0 offen offset:43391; CHECK-NEXT:    buffer_load_dword v4, v1, s[0:3], 0 offen offset:83392; CHECK-NEXT:    buffer_load_dword v5, v1, s[0:3], 0 offen offset:123393; CHECK-NEXT:    s_waitcnt vmcnt(0)3394; CHECK-NEXT:    ds_write2_b64 v0, v[2:3], v[4:5] offset1:13395; CHECK-NEXT:    s_waitcnt lgkmcnt(0)3396; CHECK-NEXT:    s_setpc_b64 s[30:31]3397entry:3398  tail call void @llvm.memmove.p3.p5.i64(ptr addrspace(3) noundef nonnull align 8 %dst, ptr addrspace(5) noundef nonnull align 8 %src, i64 16, i1 false)3399  ret void3400}3401 3402define void @memmove_p3_p5_sz31_align_8_8(ptr addrspace(3) align 8 %dst, ptr addrspace(5) align 8 readonly %src) {3403; CHECK-LABEL: memmove_p3_p5_sz31_align_8_8:3404; CHECK:       ; %bb.0: ; %entry3405; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3406; CHECK-NEXT:    s_clause 0x83407; CHECK-NEXT:    buffer_load_dword v2, v1, s[0:3], 0 offen3408; CHECK-NEXT:    buffer_load_dword v3, v1, s[0:3], 0 offen offset:43409; CHECK-NEXT:    buffer_load_dword v4, v1, s[0:3], 0 offen offset:83410; CHECK-NEXT:    buffer_load_dword v5, v1, s[0:3], 0 offen offset:123411; CHECK-NEXT:    buffer_load_dword v6, v1, s[0:3], 0 offen offset:203412; CHECK-NEXT:    buffer_load_dword v7, v1, s[0:3], 0 offen offset:243413; CHECK-NEXT:    buffer_load_dword v8, v1, s[0:3], 0 offen offset:163414; CHECK-NEXT:    buffer_load_ushort v9, v1, s[0:3], 0 offen offset:283415; CHECK-NEXT:    buffer_load_ubyte v1, v1, s[0:3], 0 offen offset:303416; CHECK-NEXT:    s_waitcnt vmcnt(5)3417; CHECK-NEXT:    ds_write2_b64 v0, v[2:3], v[4:5] offset1:13418; CHECK-NEXT:    s_waitcnt vmcnt(3)3419; CHECK-NEXT:    ds_write2_b32 v0, v6, v7 offset0:5 offset1:63420; CHECK-NEXT:    s_waitcnt vmcnt(2)3421; CHECK-NEXT:    ds_write_b32 v0, v8 offset:163422; CHECK-NEXT:    s_waitcnt vmcnt(1)3423; CHECK-NEXT:    ds_write_b16 v0, v9 offset:283424; CHECK-NEXT:    s_waitcnt vmcnt(0)3425; CHECK-NEXT:    ds_write_b8 v0, v1 offset:303426; CHECK-NEXT:    s_waitcnt lgkmcnt(0)3427; CHECK-NEXT:    s_setpc_b64 s[30:31]3428entry:3429  tail call void @llvm.memmove.p3.p5.i64(ptr addrspace(3) noundef nonnull align 8 %dst, ptr addrspace(5) noundef nonnull align 8 %src, i64 31, i1 false)3430  ret void3431}3432 3433define void @memmove_p3_p5_sz32_align_8_8(ptr addrspace(3) align 8 %dst, ptr addrspace(5) align 8 readonly %src) {3434; CHECK-LABEL: memmove_p3_p5_sz32_align_8_8:3435; CHECK:       ; %bb.0: ; %entry3436; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3437; CHECK-NEXT:    s_clause 0x73438; CHECK-NEXT:    buffer_load_dword v2, v1, s[0:3], 0 offen3439; CHECK-NEXT:    buffer_load_dword v3, v1, s[0:3], 0 offen offset:43440; CHECK-NEXT:    buffer_load_dword v4, v1, s[0:3], 0 offen offset:83441; CHECK-NEXT:    buffer_load_dword v5, v1, s[0:3], 0 offen offset:123442; CHECK-NEXT:    buffer_load_dword v6, v1, s[0:3], 0 offen offset:163443; CHECK-NEXT:    buffer_load_dword v7, v1, s[0:3], 0 offen offset:203444; CHECK-NEXT:    buffer_load_dword v8, v1, s[0:3], 0 offen offset:243445; CHECK-NEXT:    buffer_load_dword v9, v1, s[0:3], 0 offen offset:283446; CHECK-NEXT:    s_waitcnt vmcnt(4)3447; CHECK-NEXT:    ds_write2_b64 v0, v[2:3], v[4:5] offset1:13448; CHECK-NEXT:    s_waitcnt vmcnt(0)3449; CHECK-NEXT:    ds_write2_b64 v0, v[6:7], v[8:9] offset0:2 offset1:33450; CHECK-NEXT:    s_waitcnt lgkmcnt(0)3451; CHECK-NEXT:    s_setpc_b64 s[30:31]3452entry:3453  tail call void @llvm.memmove.p3.p5.i64(ptr addrspace(3) noundef nonnull align 8 %dst, ptr addrspace(5) noundef nonnull align 8 %src, i64 32, i1 false)3454  ret void3455}3456 3457define void @memmove_p3_p5_sz16_align_16_16(ptr addrspace(3) align 16 %dst, ptr addrspace(5) align 16 readonly %src) {3458; CHECK-LABEL: memmove_p3_p5_sz16_align_16_16:3459; CHECK:       ; %bb.0: ; %entry3460; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3461; CHECK-NEXT:    s_clause 0x33462; CHECK-NEXT:    buffer_load_dword v2, v1, s[0:3], 0 offen3463; CHECK-NEXT:    buffer_load_dword v3, v1, s[0:3], 0 offen offset:43464; CHECK-NEXT:    buffer_load_dword v4, v1, s[0:3], 0 offen offset:83465; CHECK-NEXT:    buffer_load_dword v5, v1, s[0:3], 0 offen offset:123466; CHECK-NEXT:    s_waitcnt vmcnt(0)3467; CHECK-NEXT:    ds_write_b128 v0, v[2:5]3468; CHECK-NEXT:    s_waitcnt lgkmcnt(0)3469; CHECK-NEXT:    s_setpc_b64 s[30:31]3470entry:3471  tail call void @llvm.memmove.p3.p5.i64(ptr addrspace(3) noundef nonnull align 16 %dst, ptr addrspace(5) noundef nonnull align 16 %src, i64 16, i1 false)3472  ret void3473}3474 3475define void @memmove_p3_p5_sz31_align_16_16(ptr addrspace(3) align 16 %dst, ptr addrspace(5) align 16 readonly %src) {3476; CHECK-LABEL: memmove_p3_p5_sz31_align_16_16:3477; CHECK:       ; %bb.0: ; %entry3478; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3479; CHECK-NEXT:    s_clause 0x83480; CHECK-NEXT:    buffer_load_ubyte v6, v1, s[0:3], 0 offen offset:303481; CHECK-NEXT:    buffer_load_dword v2, v1, s[0:3], 0 offen3482; CHECK-NEXT:    buffer_load_dword v7, v1, s[0:3], 0 offen offset:163483; CHECK-NEXT:    buffer_load_dword v8, v1, s[0:3], 0 offen offset:203484; CHECK-NEXT:    buffer_load_dword v9, v1, s[0:3], 0 offen offset:243485; CHECK-NEXT:    buffer_load_dword v3, v1, s[0:3], 0 offen offset:43486; CHECK-NEXT:    buffer_load_ushort v10, v1, s[0:3], 0 offen offset:283487; CHECK-NEXT:    buffer_load_dword v4, v1, s[0:3], 0 offen offset:83488; CHECK-NEXT:    buffer_load_dword v5, v1, s[0:3], 0 offen offset:123489; CHECK-NEXT:    s_waitcnt vmcnt(4)3490; CHECK-NEXT:    ds_write2_b32 v0, v8, v9 offset0:5 offset1:63491; CHECK-NEXT:    ds_write_b32 v0, v7 offset:163492; CHECK-NEXT:    s_waitcnt vmcnt(2)3493; CHECK-NEXT:    ds_write_b16 v0, v10 offset:283494; CHECK-NEXT:    ds_write_b8 v0, v6 offset:303495; CHECK-NEXT:    s_waitcnt vmcnt(0)3496; CHECK-NEXT:    ds_write_b128 v0, v[2:5]3497; CHECK-NEXT:    s_waitcnt lgkmcnt(0)3498; CHECK-NEXT:    s_setpc_b64 s[30:31]3499entry:3500  tail call void @llvm.memmove.p3.p5.i64(ptr addrspace(3) noundef nonnull align 16 %dst, ptr addrspace(5) noundef nonnull align 16 %src, i64 31, i1 false)3501  ret void3502}3503 3504define void @memmove_p3_p5_sz32_align_16_16(ptr addrspace(3) align 16 %dst, ptr addrspace(5) align 16 readonly %src) {3505; CHECK-LABEL: memmove_p3_p5_sz32_align_16_16:3506; CHECK:       ; %bb.0: ; %entry3507; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3508; CHECK-NEXT:    s_clause 0x73509; CHECK-NEXT:    buffer_load_dword v2, v1, s[0:3], 0 offen3510; CHECK-NEXT:    buffer_load_dword v3, v1, s[0:3], 0 offen offset:43511; CHECK-NEXT:    buffer_load_dword v4, v1, s[0:3], 0 offen offset:83512; CHECK-NEXT:    buffer_load_dword v5, v1, s[0:3], 0 offen offset:123513; CHECK-NEXT:    buffer_load_dword v6, v1, s[0:3], 0 offen offset:163514; CHECK-NEXT:    buffer_load_dword v7, v1, s[0:3], 0 offen offset:203515; CHECK-NEXT:    buffer_load_dword v8, v1, s[0:3], 0 offen offset:243516; CHECK-NEXT:    buffer_load_dword v9, v1, s[0:3], 0 offen offset:283517; CHECK-NEXT:    s_waitcnt vmcnt(4)3518; CHECK-NEXT:    ds_write_b128 v0, v[2:5]3519; CHECK-NEXT:    s_waitcnt vmcnt(0)3520; CHECK-NEXT:    ds_write_b128 v0, v[6:9] offset:163521; CHECK-NEXT:    s_waitcnt lgkmcnt(0)3522; CHECK-NEXT:    s_setpc_b64 s[30:31]3523entry:3524  tail call void @llvm.memmove.p3.p5.i64(ptr addrspace(3) noundef nonnull align 16 %dst, ptr addrspace(5) noundef nonnull align 16 %src, i64 32, i1 false)3525  ret void3526}3527 3528define void @memmove_p5_p0_sz16_align_1_1(ptr addrspace(5) align 1 %dst, ptr addrspace(0) align 1 readonly %src) {3529; CHECK-LABEL: memmove_p5_p0_sz16_align_1_1:3530; CHECK:       ; %bb.0: ; %entry3531; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3532; CHECK-NEXT:    flat_load_dwordx4 v[1:4], v[1:2]3533; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3534; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:123535; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:83536; CHECK-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:43537; CHECK-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen3538; CHECK-NEXT:    s_setpc_b64 s[30:31]3539entry:3540  tail call void @llvm.memmove.p5.p0.i64(ptr addrspace(5) noundef nonnull align 1 %dst, ptr addrspace(0) noundef nonnull align 1 %src, i64 16, i1 false)3541  ret void3542}3543 3544define void @memmove_p5_p0_sz31_align_1_1(ptr addrspace(5) align 1 %dst, ptr addrspace(0) align 1 readonly %src) {3545; CHECK-LABEL: memmove_p5_p0_sz31_align_1_1:3546; CHECK:       ; %bb.0: ; %entry3547; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3548; CHECK-NEXT:    s_clause 0x33549; CHECK-NEXT:    flat_load_ubyte v8, v[1:2] offset:303550; CHECK-NEXT:    flat_load_ushort v9, v[1:2] offset:283551; CHECK-NEXT:    flat_load_dwordx3 v[5:7], v[1:2] offset:163552; CHECK-NEXT:    flat_load_dwordx4 v[1:4], v[1:2]3553; CHECK-NEXT:    s_waitcnt vmcnt(3) lgkmcnt(3)3554; CHECK-NEXT:    buffer_store_byte v8, v0, s[0:3], 0 offen offset:303555; CHECK-NEXT:    s_waitcnt vmcnt(2) lgkmcnt(2)3556; CHECK-NEXT:    buffer_store_short v9, v0, s[0:3], 0 offen offset:283557; CHECK-NEXT:    s_waitcnt vmcnt(1) lgkmcnt(1)3558; CHECK-NEXT:    buffer_store_dword v7, v0, s[0:3], 0 offen offset:243559; CHECK-NEXT:    buffer_store_dword v6, v0, s[0:3], 0 offen offset:203560; CHECK-NEXT:    buffer_store_dword v5, v0, s[0:3], 0 offen offset:163561; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3562; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:123563; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:83564; CHECK-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:43565; CHECK-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen3566; CHECK-NEXT:    s_setpc_b64 s[30:31]3567entry:3568  tail call void @llvm.memmove.p5.p0.i64(ptr addrspace(5) noundef nonnull align 1 %dst, ptr addrspace(0) noundef nonnull align 1 %src, i64 31, i1 false)3569  ret void3570}3571 3572define void @memmove_p5_p0_sz32_align_1_1(ptr addrspace(5) align 1 %dst, ptr addrspace(0) align 1 readonly %src) {3573; CHECK-LABEL: memmove_p5_p0_sz32_align_1_1:3574; CHECK:       ; %bb.0: ; %entry3575; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3576; CHECK-NEXT:    s_clause 0x13577; CHECK-NEXT:    flat_load_dwordx4 v[3:6], v[1:2] offset:163578; CHECK-NEXT:    flat_load_dwordx4 v[7:10], v[1:2]3579; CHECK-NEXT:    s_waitcnt vmcnt(1) lgkmcnt(1)3580; CHECK-NEXT:    buffer_store_dword v6, v0, s[0:3], 0 offen offset:283581; CHECK-NEXT:    buffer_store_dword v5, v0, s[0:3], 0 offen offset:243582; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:203583; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:163584; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3585; CHECK-NEXT:    buffer_store_dword v10, v0, s[0:3], 0 offen offset:123586; CHECK-NEXT:    buffer_store_dword v9, v0, s[0:3], 0 offen offset:83587; CHECK-NEXT:    buffer_store_dword v8, v0, s[0:3], 0 offen offset:43588; CHECK-NEXT:    buffer_store_dword v7, v0, s[0:3], 0 offen3589; CHECK-NEXT:    s_setpc_b64 s[30:31]3590entry:3591  tail call void @llvm.memmove.p5.p0.i64(ptr addrspace(5) noundef nonnull align 1 %dst, ptr addrspace(0) noundef nonnull align 1 %src, i64 32, i1 false)3592  ret void3593}3594 3595define void @memmove_p5_p0_sz16_align_2_2(ptr addrspace(5) align 2 %dst, ptr addrspace(0) align 2 readonly %src) {3596; CHECK-LABEL: memmove_p5_p0_sz16_align_2_2:3597; CHECK:       ; %bb.0: ; %entry3598; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3599; CHECK-NEXT:    flat_load_dwordx4 v[1:4], v[1:2]3600; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3601; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:123602; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:83603; CHECK-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:43604; CHECK-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen3605; CHECK-NEXT:    s_setpc_b64 s[30:31]3606entry:3607  tail call void @llvm.memmove.p5.p0.i64(ptr addrspace(5) noundef nonnull align 2 %dst, ptr addrspace(0) noundef nonnull align 2 %src, i64 16, i1 false)3608  ret void3609}3610 3611define void @memmove_p5_p0_sz31_align_2_2(ptr addrspace(5) align 2 %dst, ptr addrspace(0) align 2 readonly %src) {3612; CHECK-LABEL: memmove_p5_p0_sz31_align_2_2:3613; CHECK:       ; %bb.0: ; %entry3614; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3615; CHECK-NEXT:    s_clause 0x33616; CHECK-NEXT:    flat_load_ubyte v8, v[1:2] offset:303617; CHECK-NEXT:    flat_load_ushort v9, v[1:2] offset:283618; CHECK-NEXT:    flat_load_dwordx3 v[5:7], v[1:2] offset:163619; CHECK-NEXT:    flat_load_dwordx4 v[1:4], v[1:2]3620; CHECK-NEXT:    s_waitcnt vmcnt(3) lgkmcnt(3)3621; CHECK-NEXT:    buffer_store_byte v8, v0, s[0:3], 0 offen offset:303622; CHECK-NEXT:    s_waitcnt vmcnt(2) lgkmcnt(2)3623; CHECK-NEXT:    buffer_store_short v9, v0, s[0:3], 0 offen offset:283624; CHECK-NEXT:    s_waitcnt vmcnt(1) lgkmcnt(1)3625; CHECK-NEXT:    buffer_store_dword v7, v0, s[0:3], 0 offen offset:243626; CHECK-NEXT:    buffer_store_dword v6, v0, s[0:3], 0 offen offset:203627; CHECK-NEXT:    buffer_store_dword v5, v0, s[0:3], 0 offen offset:163628; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3629; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:123630; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:83631; CHECK-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:43632; CHECK-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen3633; CHECK-NEXT:    s_setpc_b64 s[30:31]3634entry:3635  tail call void @llvm.memmove.p5.p0.i64(ptr addrspace(5) noundef nonnull align 2 %dst, ptr addrspace(0) noundef nonnull align 2 %src, i64 31, i1 false)3636  ret void3637}3638 3639define void @memmove_p5_p0_sz32_align_2_2(ptr addrspace(5) align 2 %dst, ptr addrspace(0) align 2 readonly %src) {3640; CHECK-LABEL: memmove_p5_p0_sz32_align_2_2:3641; CHECK:       ; %bb.0: ; %entry3642; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3643; CHECK-NEXT:    s_clause 0x13644; CHECK-NEXT:    flat_load_dwordx4 v[3:6], v[1:2] offset:163645; CHECK-NEXT:    flat_load_dwordx4 v[7:10], v[1:2]3646; CHECK-NEXT:    s_waitcnt vmcnt(1) lgkmcnt(1)3647; CHECK-NEXT:    buffer_store_dword v6, v0, s[0:3], 0 offen offset:283648; CHECK-NEXT:    buffer_store_dword v5, v0, s[0:3], 0 offen offset:243649; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:203650; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:163651; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3652; CHECK-NEXT:    buffer_store_dword v10, v0, s[0:3], 0 offen offset:123653; CHECK-NEXT:    buffer_store_dword v9, v0, s[0:3], 0 offen offset:83654; CHECK-NEXT:    buffer_store_dword v8, v0, s[0:3], 0 offen offset:43655; CHECK-NEXT:    buffer_store_dword v7, v0, s[0:3], 0 offen3656; CHECK-NEXT:    s_setpc_b64 s[30:31]3657entry:3658  tail call void @llvm.memmove.p5.p0.i64(ptr addrspace(5) noundef nonnull align 2 %dst, ptr addrspace(0) noundef nonnull align 2 %src, i64 32, i1 false)3659  ret void3660}3661 3662define void @memmove_p5_p0_sz16_align_8_8(ptr addrspace(5) align 8 %dst, ptr addrspace(0) align 8 readonly %src) {3663; CHECK-LABEL: memmove_p5_p0_sz16_align_8_8:3664; CHECK:       ; %bb.0: ; %entry3665; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3666; CHECK-NEXT:    flat_load_dwordx4 v[1:4], v[1:2]3667; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3668; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:123669; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:83670; CHECK-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:43671; CHECK-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen3672; CHECK-NEXT:    s_setpc_b64 s[30:31]3673entry:3674  tail call void @llvm.memmove.p5.p0.i64(ptr addrspace(5) noundef nonnull align 8 %dst, ptr addrspace(0) noundef nonnull align 8 %src, i64 16, i1 false)3675  ret void3676}3677 3678define void @memmove_p5_p0_sz31_align_8_8(ptr addrspace(5) align 8 %dst, ptr addrspace(0) align 8 readonly %src) {3679; CHECK-LABEL: memmove_p5_p0_sz31_align_8_8:3680; CHECK:       ; %bb.0: ; %entry3681; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3682; CHECK-NEXT:    s_clause 0x43683; CHECK-NEXT:    flat_load_dword v7, v[1:2] offset:163684; CHECK-NEXT:    flat_load_dword v8, v[1:2] offset:243685; CHECK-NEXT:    flat_load_ubyte v9, v[1:2] offset:303686; CHECK-NEXT:    flat_load_ushort v10, v[1:2] offset:283687; CHECK-NEXT:    flat_load_dwordx4 v[3:6], v[1:2]3688; CHECK-NEXT:    s_waitcnt vmcnt(4) lgkmcnt(4)3689; CHECK-NEXT:    buffer_store_dword v7, v0, s[0:3], 0 offen offset:163690; CHECK-NEXT:    flat_load_dword v1, v[1:2] offset:203691; CHECK-NEXT:    s_waitcnt vmcnt(4) lgkmcnt(4)3692; CHECK-NEXT:    buffer_store_dword v8, v0, s[0:3], 0 offen offset:243693; CHECK-NEXT:    s_waitcnt vmcnt(3) lgkmcnt(3)3694; CHECK-NEXT:    buffer_store_byte v9, v0, s[0:3], 0 offen offset:303695; CHECK-NEXT:    s_waitcnt vmcnt(2) lgkmcnt(2)3696; CHECK-NEXT:    buffer_store_short v10, v0, s[0:3], 0 offen offset:283697; CHECK-NEXT:    s_waitcnt vmcnt(1) lgkmcnt(1)3698; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen3699; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:43700; CHECK-NEXT:    buffer_store_dword v5, v0, s[0:3], 0 offen offset:83701; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3702; CHECK-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen offset:203703; CHECK-NEXT:    buffer_store_dword v6, v0, s[0:3], 0 offen offset:123704; CHECK-NEXT:    s_setpc_b64 s[30:31]3705entry:3706  tail call void @llvm.memmove.p5.p0.i64(ptr addrspace(5) noundef nonnull align 8 %dst, ptr addrspace(0) noundef nonnull align 8 %src, i64 31, i1 false)3707  ret void3708}3709 3710define void @memmove_p5_p0_sz32_align_8_8(ptr addrspace(5) align 8 %dst, ptr addrspace(0) align 8 readonly %src) {3711; CHECK-LABEL: memmove_p5_p0_sz32_align_8_8:3712; CHECK:       ; %bb.0: ; %entry3713; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3714; CHECK-NEXT:    s_clause 0x13715; CHECK-NEXT:    flat_load_dwordx4 v[3:6], v[1:2] offset:163716; CHECK-NEXT:    flat_load_dwordx4 v[7:10], v[1:2]3717; CHECK-NEXT:    s_waitcnt vmcnt(1) lgkmcnt(1)3718; CHECK-NEXT:    buffer_store_dword v6, v0, s[0:3], 0 offen offset:283719; CHECK-NEXT:    buffer_store_dword v5, v0, s[0:3], 0 offen offset:243720; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:203721; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:163722; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3723; CHECK-NEXT:    buffer_store_dword v10, v0, s[0:3], 0 offen offset:123724; CHECK-NEXT:    buffer_store_dword v9, v0, s[0:3], 0 offen offset:83725; CHECK-NEXT:    buffer_store_dword v8, v0, s[0:3], 0 offen offset:43726; CHECK-NEXT:    buffer_store_dword v7, v0, s[0:3], 0 offen3727; CHECK-NEXT:    s_setpc_b64 s[30:31]3728entry:3729  tail call void @llvm.memmove.p5.p0.i64(ptr addrspace(5) noundef nonnull align 8 %dst, ptr addrspace(0) noundef nonnull align 8 %src, i64 32, i1 false)3730  ret void3731}3732 3733define void @memmove_p5_p0_sz16_align_16_16(ptr addrspace(5) align 16 %dst, ptr addrspace(0) align 16 readonly %src) {3734; CHECK-LABEL: memmove_p5_p0_sz16_align_16_16:3735; CHECK:       ; %bb.0: ; %entry3736; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3737; CHECK-NEXT:    flat_load_dwordx4 v[1:4], v[1:2]3738; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3739; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:123740; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:83741; CHECK-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:43742; CHECK-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen3743; CHECK-NEXT:    s_setpc_b64 s[30:31]3744entry:3745  tail call void @llvm.memmove.p5.p0.i64(ptr addrspace(5) noundef nonnull align 16 %dst, ptr addrspace(0) noundef nonnull align 16 %src, i64 16, i1 false)3746  ret void3747}3748 3749define void @memmove_p5_p0_sz31_align_16_16(ptr addrspace(5) align 16 %dst, ptr addrspace(0) align 16 readonly %src) {3750; CHECK-LABEL: memmove_p5_p0_sz31_align_16_16:3751; CHECK:       ; %bb.0: ; %entry3752; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3753; CHECK-NEXT:    s_clause 0x33754; CHECK-NEXT:    flat_load_ubyte v7, v[1:2] offset:303755; CHECK-NEXT:    flat_load_dword v8, v[1:2] offset:163756; CHECK-NEXT:    flat_load_ushort v9, v[1:2] offset:283757; CHECK-NEXT:    flat_load_dwordx4 v[3:6], v[1:2]3758; CHECK-NEXT:    s_waitcnt vmcnt(2) lgkmcnt(2)3759; CHECK-NEXT:    buffer_store_dword v8, v0, s[0:3], 0 offen offset:163760; CHECK-NEXT:    flat_load_dword v8, v[1:2] offset:203761; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3762; CHECK-NEXT:    buffer_store_dword v8, v0, s[0:3], 0 offen offset:203763; CHECK-NEXT:    flat_load_dword v1, v[1:2] offset:243764; CHECK-NEXT:    buffer_store_byte v7, v0, s[0:3], 0 offen offset:303765; CHECK-NEXT:    buffer_store_short v9, v0, s[0:3], 0 offen offset:283766; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen3767; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:43768; CHECK-NEXT:    buffer_store_dword v5, v0, s[0:3], 0 offen offset:83769; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3770; CHECK-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen offset:243771; CHECK-NEXT:    buffer_store_dword v6, v0, s[0:3], 0 offen offset:123772; CHECK-NEXT:    s_setpc_b64 s[30:31]3773entry:3774  tail call void @llvm.memmove.p5.p0.i64(ptr addrspace(5) noundef nonnull align 16 %dst, ptr addrspace(0) noundef nonnull align 16 %src, i64 31, i1 false)3775  ret void3776}3777 3778define void @memmove_p5_p0_sz32_align_16_16(ptr addrspace(5) align 16 %dst, ptr addrspace(0) align 16 readonly %src) {3779; CHECK-LABEL: memmove_p5_p0_sz32_align_16_16:3780; CHECK:       ; %bb.0: ; %entry3781; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3782; CHECK-NEXT:    s_clause 0x13783; CHECK-NEXT:    flat_load_dwordx4 v[3:6], v[1:2] offset:163784; CHECK-NEXT:    flat_load_dwordx4 v[7:10], v[1:2]3785; CHECK-NEXT:    s_waitcnt vmcnt(1) lgkmcnt(1)3786; CHECK-NEXT:    buffer_store_dword v6, v0, s[0:3], 0 offen offset:283787; CHECK-NEXT:    buffer_store_dword v5, v0, s[0:3], 0 offen offset:243788; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:203789; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:163790; CHECK-NEXT:    s_waitcnt vmcnt(0) lgkmcnt(0)3791; CHECK-NEXT:    buffer_store_dword v10, v0, s[0:3], 0 offen offset:123792; CHECK-NEXT:    buffer_store_dword v9, v0, s[0:3], 0 offen offset:83793; CHECK-NEXT:    buffer_store_dword v8, v0, s[0:3], 0 offen offset:43794; CHECK-NEXT:    buffer_store_dword v7, v0, s[0:3], 0 offen3795; CHECK-NEXT:    s_setpc_b64 s[30:31]3796entry:3797  tail call void @llvm.memmove.p5.p0.i64(ptr addrspace(5) noundef nonnull align 16 %dst, ptr addrspace(0) noundef nonnull align 16 %src, i64 32, i1 false)3798  ret void3799}3800 3801define void @memmove_p5_p1_sz16_align_1_1(ptr addrspace(5) align 1 %dst, ptr addrspace(1) align 1 readonly %src) {3802; CHECK-LABEL: memmove_p5_p1_sz16_align_1_1:3803; CHECK:       ; %bb.0: ; %entry3804; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3805; CHECK-NEXT:    global_load_dwordx4 v[1:4], v[1:2], off3806; CHECK-NEXT:    s_waitcnt vmcnt(0)3807; CHECK-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:43808; CHECK-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen3809; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:123810; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:83811; CHECK-NEXT:    s_setpc_b64 s[30:31]3812entry:3813  tail call void @llvm.memmove.p5.p1.i64(ptr addrspace(5) noundef nonnull align 1 %dst, ptr addrspace(1) noundef nonnull align 1 %src, i64 16, i1 false)3814  ret void3815}3816 3817define void @memmove_p5_p1_sz31_align_1_1(ptr addrspace(5) align 1 %dst, ptr addrspace(1) align 1 readonly %src) {3818; CHECK-LABEL: memmove_p5_p1_sz31_align_1_1:3819; CHECK:       ; %bb.0: ; %entry3820; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3821; CHECK-NEXT:    s_clause 0x33822; CHECK-NEXT:    global_load_dwordx3 v[5:7], v[1:2], off offset:163823; CHECK-NEXT:    global_load_ushort v8, v[1:2], off offset:283824; CHECK-NEXT:    global_load_ubyte v9, v[1:2], off offset:303825; CHECK-NEXT:    global_load_dwordx4 v[1:4], v[1:2], off3826; CHECK-NEXT:    s_waitcnt vmcnt(3)3827; CHECK-NEXT:    buffer_store_dword v7, v0, s[0:3], 0 offen offset:243828; CHECK-NEXT:    s_waitcnt vmcnt(2)3829; CHECK-NEXT:    buffer_store_short v8, v0, s[0:3], 0 offen offset:283830; CHECK-NEXT:    s_waitcnt vmcnt(1)3831; CHECK-NEXT:    buffer_store_byte v9, v0, s[0:3], 0 offen offset:303832; CHECK-NEXT:    s_waitcnt vmcnt(0)3833; CHECK-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:43834; CHECK-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen3835; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:123836; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:83837; CHECK-NEXT:    buffer_store_dword v6, v0, s[0:3], 0 offen offset:203838; CHECK-NEXT:    buffer_store_dword v5, v0, s[0:3], 0 offen offset:163839; CHECK-NEXT:    s_setpc_b64 s[30:31]3840entry:3841  tail call void @llvm.memmove.p5.p1.i64(ptr addrspace(5) noundef nonnull align 1 %dst, ptr addrspace(1) noundef nonnull align 1 %src, i64 31, i1 false)3842  ret void3843}3844 3845define void @memmove_p5_p1_sz32_align_1_1(ptr addrspace(5) align 1 %dst, ptr addrspace(1) align 1 readonly %src) {3846; CHECK-LABEL: memmove_p5_p1_sz32_align_1_1:3847; CHECK:       ; %bb.0: ; %entry3848; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3849; CHECK-NEXT:    s_clause 0x13850; CHECK-NEXT:    global_load_dwordx4 v[3:6], v[1:2], off3851; CHECK-NEXT:    global_load_dwordx4 v[7:10], v[1:2], off offset:163852; CHECK-NEXT:    s_waitcnt vmcnt(1)3853; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:43854; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen3855; CHECK-NEXT:    buffer_store_dword v6, v0, s[0:3], 0 offen offset:123856; CHECK-NEXT:    buffer_store_dword v5, v0, s[0:3], 0 offen offset:83857; CHECK-NEXT:    s_waitcnt vmcnt(0)3858; CHECK-NEXT:    buffer_store_dword v8, v0, s[0:3], 0 offen offset:203859; CHECK-NEXT:    buffer_store_dword v7, v0, s[0:3], 0 offen offset:163860; CHECK-NEXT:    buffer_store_dword v10, v0, s[0:3], 0 offen offset:283861; CHECK-NEXT:    buffer_store_dword v9, v0, s[0:3], 0 offen offset:243862; CHECK-NEXT:    s_setpc_b64 s[30:31]3863entry:3864  tail call void @llvm.memmove.p5.p1.i64(ptr addrspace(5) noundef nonnull align 1 %dst, ptr addrspace(1) noundef nonnull align 1 %src, i64 32, i1 false)3865  ret void3866}3867 3868define void @memmove_p5_p1_sz16_align_2_2(ptr addrspace(5) align 2 %dst, ptr addrspace(1) align 2 readonly %src) {3869; CHECK-LABEL: memmove_p5_p1_sz16_align_2_2:3870; CHECK:       ; %bb.0: ; %entry3871; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3872; CHECK-NEXT:    global_load_dwordx4 v[1:4], v[1:2], off3873; CHECK-NEXT:    s_waitcnt vmcnt(0)3874; CHECK-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:43875; CHECK-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen3876; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:123877; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:83878; CHECK-NEXT:    s_setpc_b64 s[30:31]3879entry:3880  tail call void @llvm.memmove.p5.p1.i64(ptr addrspace(5) noundef nonnull align 2 %dst, ptr addrspace(1) noundef nonnull align 2 %src, i64 16, i1 false)3881  ret void3882}3883 3884define void @memmove_p5_p1_sz31_align_2_2(ptr addrspace(5) align 2 %dst, ptr addrspace(1) align 2 readonly %src) {3885; CHECK-LABEL: memmove_p5_p1_sz31_align_2_2:3886; CHECK:       ; %bb.0: ; %entry3887; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3888; CHECK-NEXT:    s_clause 0x33889; CHECK-NEXT:    global_load_dwordx3 v[5:7], v[1:2], off offset:163890; CHECK-NEXT:    global_load_ushort v8, v[1:2], off offset:283891; CHECK-NEXT:    global_load_ubyte v9, v[1:2], off offset:303892; CHECK-NEXT:    global_load_dwordx4 v[1:4], v[1:2], off3893; CHECK-NEXT:    s_waitcnt vmcnt(3)3894; CHECK-NEXT:    buffer_store_dword v7, v0, s[0:3], 0 offen offset:243895; CHECK-NEXT:    s_waitcnt vmcnt(2)3896; CHECK-NEXT:    buffer_store_short v8, v0, s[0:3], 0 offen offset:283897; CHECK-NEXT:    s_waitcnt vmcnt(1)3898; CHECK-NEXT:    buffer_store_byte v9, v0, s[0:3], 0 offen offset:303899; CHECK-NEXT:    s_waitcnt vmcnt(0)3900; CHECK-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:43901; CHECK-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen3902; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:123903; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:83904; CHECK-NEXT:    buffer_store_dword v6, v0, s[0:3], 0 offen offset:203905; CHECK-NEXT:    buffer_store_dword v5, v0, s[0:3], 0 offen offset:163906; CHECK-NEXT:    s_setpc_b64 s[30:31]3907entry:3908  tail call void @llvm.memmove.p5.p1.i64(ptr addrspace(5) noundef nonnull align 2 %dst, ptr addrspace(1) noundef nonnull align 2 %src, i64 31, i1 false)3909  ret void3910}3911 3912define void @memmove_p5_p1_sz32_align_2_2(ptr addrspace(5) align 2 %dst, ptr addrspace(1) align 2 readonly %src) {3913; CHECK-LABEL: memmove_p5_p1_sz32_align_2_2:3914; CHECK:       ; %bb.0: ; %entry3915; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3916; CHECK-NEXT:    s_clause 0x13917; CHECK-NEXT:    global_load_dwordx4 v[3:6], v[1:2], off3918; CHECK-NEXT:    global_load_dwordx4 v[7:10], v[1:2], off offset:163919; CHECK-NEXT:    s_waitcnt vmcnt(1)3920; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:43921; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen3922; CHECK-NEXT:    buffer_store_dword v6, v0, s[0:3], 0 offen offset:123923; CHECK-NEXT:    buffer_store_dword v5, v0, s[0:3], 0 offen offset:83924; CHECK-NEXT:    s_waitcnt vmcnt(0)3925; CHECK-NEXT:    buffer_store_dword v8, v0, s[0:3], 0 offen offset:203926; CHECK-NEXT:    buffer_store_dword v7, v0, s[0:3], 0 offen offset:163927; CHECK-NEXT:    buffer_store_dword v10, v0, s[0:3], 0 offen offset:283928; CHECK-NEXT:    buffer_store_dword v9, v0, s[0:3], 0 offen offset:243929; CHECK-NEXT:    s_setpc_b64 s[30:31]3930entry:3931  tail call void @llvm.memmove.p5.p1.i64(ptr addrspace(5) noundef nonnull align 2 %dst, ptr addrspace(1) noundef nonnull align 2 %src, i64 32, i1 false)3932  ret void3933}3934 3935define void @memmove_p5_p1_sz16_align_8_8(ptr addrspace(5) align 8 %dst, ptr addrspace(1) align 8 readonly %src) {3936; CHECK-LABEL: memmove_p5_p1_sz16_align_8_8:3937; CHECK:       ; %bb.0: ; %entry3938; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3939; CHECK-NEXT:    global_load_dwordx4 v[1:4], v[1:2], off3940; CHECK-NEXT:    s_waitcnt vmcnt(0)3941; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:123942; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:83943; CHECK-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:43944; CHECK-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen3945; CHECK-NEXT:    s_setpc_b64 s[30:31]3946entry:3947  tail call void @llvm.memmove.p5.p1.i64(ptr addrspace(5) noundef nonnull align 8 %dst, ptr addrspace(1) noundef nonnull align 8 %src, i64 16, i1 false)3948  ret void3949}3950 3951define void @memmove_p5_p1_sz31_align_8_8(ptr addrspace(5) align 8 %dst, ptr addrspace(1) align 8 readonly %src) {3952; CHECK-LABEL: memmove_p5_p1_sz31_align_8_8:3953; CHECK:       ; %bb.0: ; %entry3954; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3955; CHECK-NEXT:    s_clause 0x33956; CHECK-NEXT:    global_load_dwordx3 v[5:7], v[1:2], off offset:163957; CHECK-NEXT:    global_load_ushort v8, v[1:2], off offset:283958; CHECK-NEXT:    global_load_ubyte v9, v[1:2], off offset:303959; CHECK-NEXT:    global_load_dwordx4 v[1:4], v[1:2], off3960; CHECK-NEXT:    s_waitcnt vmcnt(3)3961; CHECK-NEXT:    buffer_store_dword v5, v0, s[0:3], 0 offen offset:163962; CHECK-NEXT:    buffer_store_dword v6, v0, s[0:3], 0 offen offset:203963; CHECK-NEXT:    buffer_store_dword v7, v0, s[0:3], 0 offen offset:243964; CHECK-NEXT:    s_waitcnt vmcnt(2)3965; CHECK-NEXT:    buffer_store_short v8, v0, s[0:3], 0 offen offset:283966; CHECK-NEXT:    s_waitcnt vmcnt(1)3967; CHECK-NEXT:    buffer_store_byte v9, v0, s[0:3], 0 offen offset:303968; CHECK-NEXT:    s_waitcnt vmcnt(0)3969; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:123970; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:83971; CHECK-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:43972; CHECK-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen3973; CHECK-NEXT:    s_setpc_b64 s[30:31]3974entry:3975  tail call void @llvm.memmove.p5.p1.i64(ptr addrspace(5) noundef nonnull align 8 %dst, ptr addrspace(1) noundef nonnull align 8 %src, i64 31, i1 false)3976  ret void3977}3978 3979define void @memmove_p5_p1_sz32_align_8_8(ptr addrspace(5) align 8 %dst, ptr addrspace(1) align 8 readonly %src) {3980; CHECK-LABEL: memmove_p5_p1_sz32_align_8_8:3981; CHECK:       ; %bb.0: ; %entry3982; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3983; CHECK-NEXT:    s_clause 0x13984; CHECK-NEXT:    global_load_dwordx4 v[3:6], v[1:2], off3985; CHECK-NEXT:    global_load_dwordx4 v[7:10], v[1:2], off offset:163986; CHECK-NEXT:    s_waitcnt vmcnt(1)3987; CHECK-NEXT:    buffer_store_dword v6, v0, s[0:3], 0 offen offset:123988; CHECK-NEXT:    buffer_store_dword v5, v0, s[0:3], 0 offen offset:83989; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:43990; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen3991; CHECK-NEXT:    s_waitcnt vmcnt(0)3992; CHECK-NEXT:    buffer_store_dword v10, v0, s[0:3], 0 offen offset:283993; CHECK-NEXT:    buffer_store_dword v9, v0, s[0:3], 0 offen offset:243994; CHECK-NEXT:    buffer_store_dword v8, v0, s[0:3], 0 offen offset:203995; CHECK-NEXT:    buffer_store_dword v7, v0, s[0:3], 0 offen offset:163996; CHECK-NEXT:    s_setpc_b64 s[30:31]3997entry:3998  tail call void @llvm.memmove.p5.p1.i64(ptr addrspace(5) noundef nonnull align 8 %dst, ptr addrspace(1) noundef nonnull align 8 %src, i64 32, i1 false)3999  ret void4000}4001 4002define void @memmove_p5_p1_sz16_align_16_16(ptr addrspace(5) align 16 %dst, ptr addrspace(1) align 16 readonly %src) {4003; CHECK-LABEL: memmove_p5_p1_sz16_align_16_16:4004; CHECK:       ; %bb.0: ; %entry4005; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4006; CHECK-NEXT:    global_load_dwordx4 v[1:4], v[1:2], off4007; CHECK-NEXT:    s_waitcnt vmcnt(0)4008; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:124009; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:84010; CHECK-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:44011; CHECK-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen4012; CHECK-NEXT:    s_setpc_b64 s[30:31]4013entry:4014  tail call void @llvm.memmove.p5.p1.i64(ptr addrspace(5) noundef nonnull align 16 %dst, ptr addrspace(1) noundef nonnull align 16 %src, i64 16, i1 false)4015  ret void4016}4017 4018define void @memmove_p5_p1_sz31_align_16_16(ptr addrspace(5) align 16 %dst, ptr addrspace(1) align 16 readonly %src) {4019; CHECK-LABEL: memmove_p5_p1_sz31_align_16_16:4020; CHECK:       ; %bb.0: ; %entry4021; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4022; CHECK-NEXT:    s_clause 0x34023; CHECK-NEXT:    global_load_dwordx3 v[5:7], v[1:2], off offset:164024; CHECK-NEXT:    global_load_ushort v8, v[1:2], off offset:284025; CHECK-NEXT:    global_load_ubyte v9, v[1:2], off offset:304026; CHECK-NEXT:    global_load_dwordx4 v[1:4], v[1:2], off4027; CHECK-NEXT:    s_waitcnt vmcnt(3)4028; CHECK-NEXT:    buffer_store_dword v5, v0, s[0:3], 0 offen offset:164029; CHECK-NEXT:    buffer_store_dword v6, v0, s[0:3], 0 offen offset:204030; CHECK-NEXT:    buffer_store_dword v7, v0, s[0:3], 0 offen offset:244031; CHECK-NEXT:    s_waitcnt vmcnt(2)4032; CHECK-NEXT:    buffer_store_short v8, v0, s[0:3], 0 offen offset:284033; CHECK-NEXT:    s_waitcnt vmcnt(1)4034; CHECK-NEXT:    buffer_store_byte v9, v0, s[0:3], 0 offen offset:304035; CHECK-NEXT:    s_waitcnt vmcnt(0)4036; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:124037; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:84038; CHECK-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:44039; CHECK-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen4040; CHECK-NEXT:    s_setpc_b64 s[30:31]4041entry:4042  tail call void @llvm.memmove.p5.p1.i64(ptr addrspace(5) noundef nonnull align 16 %dst, ptr addrspace(1) noundef nonnull align 16 %src, i64 31, i1 false)4043  ret void4044}4045 4046define void @memmove_p5_p1_sz32_align_16_16(ptr addrspace(5) align 16 %dst, ptr addrspace(1) align 16 readonly %src) {4047; CHECK-LABEL: memmove_p5_p1_sz32_align_16_16:4048; CHECK:       ; %bb.0: ; %entry4049; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4050; CHECK-NEXT:    s_clause 0x14051; CHECK-NEXT:    global_load_dwordx4 v[3:6], v[1:2], off4052; CHECK-NEXT:    global_load_dwordx4 v[7:10], v[1:2], off offset:164053; CHECK-NEXT:    s_waitcnt vmcnt(1)4054; CHECK-NEXT:    buffer_store_dword v6, v0, s[0:3], 0 offen offset:124055; CHECK-NEXT:    buffer_store_dword v5, v0, s[0:3], 0 offen offset:84056; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:44057; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen4058; CHECK-NEXT:    s_waitcnt vmcnt(0)4059; CHECK-NEXT:    buffer_store_dword v10, v0, s[0:3], 0 offen offset:284060; CHECK-NEXT:    buffer_store_dword v9, v0, s[0:3], 0 offen offset:244061; CHECK-NEXT:    buffer_store_dword v8, v0, s[0:3], 0 offen offset:204062; CHECK-NEXT:    buffer_store_dword v7, v0, s[0:3], 0 offen offset:164063; CHECK-NEXT:    s_setpc_b64 s[30:31]4064entry:4065  tail call void @llvm.memmove.p5.p1.i64(ptr addrspace(5) noundef nonnull align 16 %dst, ptr addrspace(1) noundef nonnull align 16 %src, i64 32, i1 false)4066  ret void4067}4068 4069define void @memmove_p5_p3_sz16_align_1_1(ptr addrspace(5) align 1 %dst, ptr addrspace(3) align 1 readonly %src) {4070; CHECK-LABEL: memmove_p5_p3_sz16_align_1_1:4071; CHECK:       ; %bb.0: ; %entry4072; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4073; CHECK-NEXT:    ds_read2_b64 v[1:4], v1 offset1:14074; CHECK-NEXT:    s_waitcnt lgkmcnt(0)4075; CHECK-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:44076; CHECK-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen4077; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:124078; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:84079; CHECK-NEXT:    s_setpc_b64 s[30:31]4080entry:4081  tail call void @llvm.memmove.p5.p3.i64(ptr addrspace(5) noundef nonnull align 1 %dst, ptr addrspace(3) noundef nonnull align 1 %src, i64 16, i1 false)4082  ret void4083}4084 4085define void @memmove_p5_p3_sz31_align_1_1(ptr addrspace(5) align 1 %dst, ptr addrspace(3) align 1 readonly %src) {4086; CHECK-LABEL: memmove_p5_p3_sz31_align_1_1:4087; CHECK:       ; %bb.0: ; %entry4088; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4089; CHECK-NEXT:    ds_read_b32 v8, v1 offset:244090; CHECK-NEXT:    ds_read_u16 v9, v1 offset:284091; CHECK-NEXT:    ds_read_u8 v10, v1 offset:304092; CHECK-NEXT:    ds_read2_b64 v[2:5], v1 offset1:14093; CHECK-NEXT:    ds_read_b64 v[6:7], v1 offset:164094; CHECK-NEXT:    s_waitcnt lgkmcnt(4)4095; CHECK-NEXT:    buffer_store_dword v8, v0, s[0:3], 0 offen offset:244096; CHECK-NEXT:    s_waitcnt lgkmcnt(3)4097; CHECK-NEXT:    buffer_store_short v9, v0, s[0:3], 0 offen offset:284098; CHECK-NEXT:    s_waitcnt lgkmcnt(2)4099; CHECK-NEXT:    buffer_store_byte v10, v0, s[0:3], 0 offen offset:304100; CHECK-NEXT:    s_waitcnt lgkmcnt(1)4101; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:44102; CHECK-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen4103; CHECK-NEXT:    buffer_store_dword v5, v0, s[0:3], 0 offen offset:124104; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:84105; CHECK-NEXT:    s_waitcnt lgkmcnt(0)4106; CHECK-NEXT:    buffer_store_dword v7, v0, s[0:3], 0 offen offset:204107; CHECK-NEXT:    buffer_store_dword v6, v0, s[0:3], 0 offen offset:164108; CHECK-NEXT:    s_setpc_b64 s[30:31]4109entry:4110  tail call void @llvm.memmove.p5.p3.i64(ptr addrspace(5) noundef nonnull align 1 %dst, ptr addrspace(3) noundef nonnull align 1 %src, i64 31, i1 false)4111  ret void4112}4113 4114define void @memmove_p5_p3_sz32_align_1_1(ptr addrspace(5) align 1 %dst, ptr addrspace(3) align 1 readonly %src) {4115; CHECK-LABEL: memmove_p5_p3_sz32_align_1_1:4116; CHECK:       ; %bb.0: ; %entry4117; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4118; CHECK-NEXT:    ds_read2_b64 v[2:5], v1 offset1:14119; CHECK-NEXT:    ds_read2_b64 v[6:9], v1 offset0:2 offset1:34120; CHECK-NEXT:    s_waitcnt lgkmcnt(1)4121; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:44122; CHECK-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen4123; CHECK-NEXT:    buffer_store_dword v5, v0, s[0:3], 0 offen offset:124124; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:84125; CHECK-NEXT:    s_waitcnt lgkmcnt(0)4126; CHECK-NEXT:    buffer_store_dword v7, v0, s[0:3], 0 offen offset:204127; CHECK-NEXT:    buffer_store_dword v6, v0, s[0:3], 0 offen offset:164128; CHECK-NEXT:    buffer_store_dword v9, v0, s[0:3], 0 offen offset:284129; CHECK-NEXT:    buffer_store_dword v8, v0, s[0:3], 0 offen offset:244130; CHECK-NEXT:    s_setpc_b64 s[30:31]4131entry:4132  tail call void @llvm.memmove.p5.p3.i64(ptr addrspace(5) noundef nonnull align 1 %dst, ptr addrspace(3) noundef nonnull align 1 %src, i64 32, i1 false)4133  ret void4134}4135 4136define void @memmove_p5_p3_sz16_align_2_2(ptr addrspace(5) align 2 %dst, ptr addrspace(3) align 2 readonly %src) {4137; CHECK-LABEL: memmove_p5_p3_sz16_align_2_2:4138; CHECK:       ; %bb.0: ; %entry4139; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4140; CHECK-NEXT:    ds_read2_b64 v[1:4], v1 offset1:14141; CHECK-NEXT:    s_waitcnt lgkmcnt(0)4142; CHECK-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:44143; CHECK-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen4144; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:124145; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:84146; CHECK-NEXT:    s_setpc_b64 s[30:31]4147entry:4148  tail call void @llvm.memmove.p5.p3.i64(ptr addrspace(5) noundef nonnull align 2 %dst, ptr addrspace(3) noundef nonnull align 2 %src, i64 16, i1 false)4149  ret void4150}4151 4152define void @memmove_p5_p3_sz31_align_2_2(ptr addrspace(5) align 2 %dst, ptr addrspace(3) align 2 readonly %src) {4153; CHECK-LABEL: memmove_p5_p3_sz31_align_2_2:4154; CHECK:       ; %bb.0: ; %entry4155; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4156; CHECK-NEXT:    ds_read_b32 v8, v1 offset:244157; CHECK-NEXT:    ds_read_u16 v9, v1 offset:284158; CHECK-NEXT:    ds_read_u8 v10, v1 offset:304159; CHECK-NEXT:    ds_read2_b64 v[2:5], v1 offset1:14160; CHECK-NEXT:    ds_read_b64 v[6:7], v1 offset:164161; CHECK-NEXT:    s_waitcnt lgkmcnt(4)4162; CHECK-NEXT:    buffer_store_dword v8, v0, s[0:3], 0 offen offset:244163; CHECK-NEXT:    s_waitcnt lgkmcnt(3)4164; CHECK-NEXT:    buffer_store_short v9, v0, s[0:3], 0 offen offset:284165; CHECK-NEXT:    s_waitcnt lgkmcnt(2)4166; CHECK-NEXT:    buffer_store_byte v10, v0, s[0:3], 0 offen offset:304167; CHECK-NEXT:    s_waitcnt lgkmcnt(1)4168; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:44169; CHECK-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen4170; CHECK-NEXT:    buffer_store_dword v5, v0, s[0:3], 0 offen offset:124171; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:84172; CHECK-NEXT:    s_waitcnt lgkmcnt(0)4173; CHECK-NEXT:    buffer_store_dword v7, v0, s[0:3], 0 offen offset:204174; CHECK-NEXT:    buffer_store_dword v6, v0, s[0:3], 0 offen offset:164175; CHECK-NEXT:    s_setpc_b64 s[30:31]4176entry:4177  tail call void @llvm.memmove.p5.p3.i64(ptr addrspace(5) noundef nonnull align 2 %dst, ptr addrspace(3) noundef nonnull align 2 %src, i64 31, i1 false)4178  ret void4179}4180 4181define void @memmove_p5_p3_sz32_align_2_2(ptr addrspace(5) align 2 %dst, ptr addrspace(3) align 2 readonly %src) {4182; CHECK-LABEL: memmove_p5_p3_sz32_align_2_2:4183; CHECK:       ; %bb.0: ; %entry4184; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4185; CHECK-NEXT:    ds_read2_b64 v[2:5], v1 offset1:14186; CHECK-NEXT:    ds_read2_b64 v[6:9], v1 offset0:2 offset1:34187; CHECK-NEXT:    s_waitcnt lgkmcnt(1)4188; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:44189; CHECK-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen4190; CHECK-NEXT:    buffer_store_dword v5, v0, s[0:3], 0 offen offset:124191; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:84192; CHECK-NEXT:    s_waitcnt lgkmcnt(0)4193; CHECK-NEXT:    buffer_store_dword v7, v0, s[0:3], 0 offen offset:204194; CHECK-NEXT:    buffer_store_dword v6, v0, s[0:3], 0 offen offset:164195; CHECK-NEXT:    buffer_store_dword v9, v0, s[0:3], 0 offen offset:284196; CHECK-NEXT:    buffer_store_dword v8, v0, s[0:3], 0 offen offset:244197; CHECK-NEXT:    s_setpc_b64 s[30:31]4198entry:4199  tail call void @llvm.memmove.p5.p3.i64(ptr addrspace(5) noundef nonnull align 2 %dst, ptr addrspace(3) noundef nonnull align 2 %src, i64 32, i1 false)4200  ret void4201}4202 4203define void @memmove_p5_p3_sz16_align_8_8(ptr addrspace(5) align 8 %dst, ptr addrspace(3) align 8 readonly %src) {4204; CHECK-LABEL: memmove_p5_p3_sz16_align_8_8:4205; CHECK:       ; %bb.0: ; %entry4206; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4207; CHECK-NEXT:    ds_read2_b64 v[1:4], v1 offset1:14208; CHECK-NEXT:    s_waitcnt lgkmcnt(0)4209; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:124210; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:84211; CHECK-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:44212; CHECK-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen4213; CHECK-NEXT:    s_setpc_b64 s[30:31]4214entry:4215  tail call void @llvm.memmove.p5.p3.i64(ptr addrspace(5) noundef nonnull align 8 %dst, ptr addrspace(3) noundef nonnull align 8 %src, i64 16, i1 false)4216  ret void4217}4218 4219define void @memmove_p5_p3_sz31_align_8_8(ptr addrspace(5) align 8 %dst, ptr addrspace(3) align 8 readonly %src) {4220; CHECK-LABEL: memmove_p5_p3_sz31_align_8_8:4221; CHECK:       ; %bb.0: ; %entry4222; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4223; CHECK-NEXT:    ds_read2_b32 v[5:6], v1 offset0:4 offset1:54224; CHECK-NEXT:    ds_read_b32 v7, v1 offset:244225; CHECK-NEXT:    ds_read_u16 v8, v1 offset:284226; CHECK-NEXT:    ds_read_u8 v9, v1 offset:304227; CHECK-NEXT:    ds_read2_b64 v[1:4], v1 offset1:14228; CHECK-NEXT:    s_waitcnt lgkmcnt(4)4229; CHECK-NEXT:    buffer_store_dword v5, v0, s[0:3], 0 offen offset:164230; CHECK-NEXT:    buffer_store_dword v6, v0, s[0:3], 0 offen offset:204231; CHECK-NEXT:    s_waitcnt lgkmcnt(3)4232; CHECK-NEXT:    buffer_store_dword v7, v0, s[0:3], 0 offen offset:244233; CHECK-NEXT:    s_waitcnt lgkmcnt(2)4234; CHECK-NEXT:    buffer_store_short v8, v0, s[0:3], 0 offen offset:284235; CHECK-NEXT:    s_waitcnt lgkmcnt(1)4236; CHECK-NEXT:    buffer_store_byte v9, v0, s[0:3], 0 offen offset:304237; CHECK-NEXT:    s_waitcnt lgkmcnt(0)4238; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:124239; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:84240; CHECK-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:44241; CHECK-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen4242; CHECK-NEXT:    s_setpc_b64 s[30:31]4243entry:4244  tail call void @llvm.memmove.p5.p3.i64(ptr addrspace(5) noundef nonnull align 8 %dst, ptr addrspace(3) noundef nonnull align 8 %src, i64 31, i1 false)4245  ret void4246}4247 4248define void @memmove_p5_p3_sz32_align_8_8(ptr addrspace(5) align 8 %dst, ptr addrspace(3) align 8 readonly %src) {4249; CHECK-LABEL: memmove_p5_p3_sz32_align_8_8:4250; CHECK:       ; %bb.0: ; %entry4251; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4252; CHECK-NEXT:    ds_read2_b64 v[2:5], v1 offset1:14253; CHECK-NEXT:    ds_read2_b64 v[6:9], v1 offset0:2 offset1:34254; CHECK-NEXT:    s_waitcnt lgkmcnt(1)4255; CHECK-NEXT:    buffer_store_dword v5, v0, s[0:3], 0 offen offset:124256; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:84257; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:44258; CHECK-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen4259; CHECK-NEXT:    s_waitcnt lgkmcnt(0)4260; CHECK-NEXT:    buffer_store_dword v9, v0, s[0:3], 0 offen offset:284261; CHECK-NEXT:    buffer_store_dword v8, v0, s[0:3], 0 offen offset:244262; CHECK-NEXT:    buffer_store_dword v7, v0, s[0:3], 0 offen offset:204263; CHECK-NEXT:    buffer_store_dword v6, v0, s[0:3], 0 offen offset:164264; CHECK-NEXT:    s_setpc_b64 s[30:31]4265entry:4266  tail call void @llvm.memmove.p5.p3.i64(ptr addrspace(5) noundef nonnull align 8 %dst, ptr addrspace(3) noundef nonnull align 8 %src, i64 32, i1 false)4267  ret void4268}4269 4270define void @memmove_p5_p3_sz16_align_16_16(ptr addrspace(5) align 16 %dst, ptr addrspace(3) align 16 readonly %src) {4271; CHECK-LABEL: memmove_p5_p3_sz16_align_16_16:4272; CHECK:       ; %bb.0: ; %entry4273; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4274; CHECK-NEXT:    ds_read_b128 v[1:4], v14275; CHECK-NEXT:    s_waitcnt lgkmcnt(0)4276; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:124277; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:84278; CHECK-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:44279; CHECK-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen4280; CHECK-NEXT:    s_setpc_b64 s[30:31]4281entry:4282  tail call void @llvm.memmove.p5.p3.i64(ptr addrspace(5) noundef nonnull align 16 %dst, ptr addrspace(3) noundef nonnull align 16 %src, i64 16, i1 false)4283  ret void4284}4285 4286define void @memmove_p5_p3_sz31_align_16_16(ptr addrspace(5) align 16 %dst, ptr addrspace(3) align 16 readonly %src) {4287; CHECK-LABEL: memmove_p5_p3_sz31_align_16_16:4288; CHECK:       ; %bb.0: ; %entry4289; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4290; CHECK-NEXT:    ds_read2_b32 v[5:6], v1 offset0:4 offset1:54291; CHECK-NEXT:    ds_read_b32 v7, v1 offset:244292; CHECK-NEXT:    ds_read_u16 v8, v1 offset:284293; CHECK-NEXT:    ds_read_u8 v9, v1 offset:304294; CHECK-NEXT:    ds_read_b128 v[1:4], v14295; CHECK-NEXT:    s_waitcnt lgkmcnt(4)4296; CHECK-NEXT:    buffer_store_dword v5, v0, s[0:3], 0 offen offset:164297; CHECK-NEXT:    buffer_store_dword v6, v0, s[0:3], 0 offen offset:204298; CHECK-NEXT:    s_waitcnt lgkmcnt(3)4299; CHECK-NEXT:    buffer_store_dword v7, v0, s[0:3], 0 offen offset:244300; CHECK-NEXT:    s_waitcnt lgkmcnt(2)4301; CHECK-NEXT:    buffer_store_short v8, v0, s[0:3], 0 offen offset:284302; CHECK-NEXT:    s_waitcnt lgkmcnt(1)4303; CHECK-NEXT:    buffer_store_byte v9, v0, s[0:3], 0 offen offset:304304; CHECK-NEXT:    s_waitcnt lgkmcnt(0)4305; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:124306; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:84307; CHECK-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:44308; CHECK-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen4309; CHECK-NEXT:    s_setpc_b64 s[30:31]4310entry:4311  tail call void @llvm.memmove.p5.p3.i64(ptr addrspace(5) noundef nonnull align 16 %dst, ptr addrspace(3) noundef nonnull align 16 %src, i64 31, i1 false)4312  ret void4313}4314 4315define void @memmove_p5_p3_sz32_align_16_16(ptr addrspace(5) align 16 %dst, ptr addrspace(3) align 16 readonly %src) {4316; CHECK-LABEL: memmove_p5_p3_sz32_align_16_16:4317; CHECK:       ; %bb.0: ; %entry4318; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4319; CHECK-NEXT:    ds_read_b128 v[2:5], v14320; CHECK-NEXT:    ds_read_b128 v[6:9], v1 offset:164321; CHECK-NEXT:    s_waitcnt lgkmcnt(1)4322; CHECK-NEXT:    buffer_store_dword v5, v0, s[0:3], 0 offen offset:124323; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:84324; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:44325; CHECK-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen4326; CHECK-NEXT:    s_waitcnt lgkmcnt(0)4327; CHECK-NEXT:    buffer_store_dword v9, v0, s[0:3], 0 offen offset:284328; CHECK-NEXT:    buffer_store_dword v8, v0, s[0:3], 0 offen offset:244329; CHECK-NEXT:    buffer_store_dword v7, v0, s[0:3], 0 offen offset:204330; CHECK-NEXT:    buffer_store_dword v6, v0, s[0:3], 0 offen offset:164331; CHECK-NEXT:    s_setpc_b64 s[30:31]4332entry:4333  tail call void @llvm.memmove.p5.p3.i64(ptr addrspace(5) noundef nonnull align 16 %dst, ptr addrspace(3) noundef nonnull align 16 %src, i64 32, i1 false)4334  ret void4335}4336 4337define void @memmove_p5_p4_sz16_align_1_1(ptr addrspace(5) align 1 %dst, ptr addrspace(4) align 1 readonly %src) {4338; CHECK-LABEL: memmove_p5_p4_sz16_align_1_1:4339; CHECK:       ; %bb.0: ; %entry4340; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4341; CHECK-NEXT:    global_load_dwordx4 v[1:4], v[1:2], off4342; CHECK-NEXT:    s_waitcnt vmcnt(0)4343; CHECK-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:44344; CHECK-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen4345; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:124346; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:84347; CHECK-NEXT:    s_setpc_b64 s[30:31]4348entry:4349  tail call void @llvm.memmove.p5.p4.i64(ptr addrspace(5) noundef nonnull align 1 %dst, ptr addrspace(4) noundef nonnull align 1 %src, i64 16, i1 false)4350  ret void4351}4352 4353define void @memmove_p5_p4_sz31_align_1_1(ptr addrspace(5) align 1 %dst, ptr addrspace(4) align 1 readonly %src) {4354; CHECK-LABEL: memmove_p5_p4_sz31_align_1_1:4355; CHECK:       ; %bb.0: ; %entry4356; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4357; CHECK-NEXT:    s_clause 0x34358; CHECK-NEXT:    global_load_dwordx3 v[5:7], v[1:2], off offset:164359; CHECK-NEXT:    global_load_ushort v8, v[1:2], off offset:284360; CHECK-NEXT:    global_load_ubyte v9, v[1:2], off offset:304361; CHECK-NEXT:    global_load_dwordx4 v[1:4], v[1:2], off4362; CHECK-NEXT:    s_waitcnt vmcnt(3)4363; CHECK-NEXT:    buffer_store_dword v7, v0, s[0:3], 0 offen offset:244364; CHECK-NEXT:    s_waitcnt vmcnt(2)4365; CHECK-NEXT:    buffer_store_short v8, v0, s[0:3], 0 offen offset:284366; CHECK-NEXT:    s_waitcnt vmcnt(1)4367; CHECK-NEXT:    buffer_store_byte v9, v0, s[0:3], 0 offen offset:304368; CHECK-NEXT:    s_waitcnt vmcnt(0)4369; CHECK-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:44370; CHECK-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen4371; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:124372; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:84373; CHECK-NEXT:    buffer_store_dword v6, v0, s[0:3], 0 offen offset:204374; CHECK-NEXT:    buffer_store_dword v5, v0, s[0:3], 0 offen offset:164375; CHECK-NEXT:    s_setpc_b64 s[30:31]4376entry:4377  tail call void @llvm.memmove.p5.p4.i64(ptr addrspace(5) noundef nonnull align 1 %dst, ptr addrspace(4) noundef nonnull align 1 %src, i64 31, i1 false)4378  ret void4379}4380 4381define void @memmove_p5_p4_sz32_align_1_1(ptr addrspace(5) align 1 %dst, ptr addrspace(4) align 1 readonly %src) {4382; CHECK-LABEL: memmove_p5_p4_sz32_align_1_1:4383; CHECK:       ; %bb.0: ; %entry4384; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4385; CHECK-NEXT:    s_clause 0x14386; CHECK-NEXT:    global_load_dwordx4 v[3:6], v[1:2], off4387; CHECK-NEXT:    global_load_dwordx4 v[7:10], v[1:2], off offset:164388; CHECK-NEXT:    s_waitcnt vmcnt(1)4389; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:44390; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen4391; CHECK-NEXT:    buffer_store_dword v6, v0, s[0:3], 0 offen offset:124392; CHECK-NEXT:    buffer_store_dword v5, v0, s[0:3], 0 offen offset:84393; CHECK-NEXT:    s_waitcnt vmcnt(0)4394; CHECK-NEXT:    buffer_store_dword v8, v0, s[0:3], 0 offen offset:204395; CHECK-NEXT:    buffer_store_dword v7, v0, s[0:3], 0 offen offset:164396; CHECK-NEXT:    buffer_store_dword v10, v0, s[0:3], 0 offen offset:284397; CHECK-NEXT:    buffer_store_dword v9, v0, s[0:3], 0 offen offset:244398; CHECK-NEXT:    s_setpc_b64 s[30:31]4399entry:4400  tail call void @llvm.memmove.p5.p4.i64(ptr addrspace(5) noundef nonnull align 1 %dst, ptr addrspace(4) noundef nonnull align 1 %src, i64 32, i1 false)4401  ret void4402}4403 4404define void @memmove_p5_p4_sz16_align_2_2(ptr addrspace(5) align 2 %dst, ptr addrspace(4) align 2 readonly %src) {4405; CHECK-LABEL: memmove_p5_p4_sz16_align_2_2:4406; CHECK:       ; %bb.0: ; %entry4407; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4408; CHECK-NEXT:    global_load_dwordx4 v[1:4], v[1:2], off4409; CHECK-NEXT:    s_waitcnt vmcnt(0)4410; CHECK-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:44411; CHECK-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen4412; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:124413; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:84414; CHECK-NEXT:    s_setpc_b64 s[30:31]4415entry:4416  tail call void @llvm.memmove.p5.p4.i64(ptr addrspace(5) noundef nonnull align 2 %dst, ptr addrspace(4) noundef nonnull align 2 %src, i64 16, i1 false)4417  ret void4418}4419 4420define void @memmove_p5_p4_sz31_align_2_2(ptr addrspace(5) align 2 %dst, ptr addrspace(4) align 2 readonly %src) {4421; CHECK-LABEL: memmove_p5_p4_sz31_align_2_2:4422; CHECK:       ; %bb.0: ; %entry4423; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4424; CHECK-NEXT:    s_clause 0x34425; CHECK-NEXT:    global_load_dwordx3 v[5:7], v[1:2], off offset:164426; CHECK-NEXT:    global_load_ushort v8, v[1:2], off offset:284427; CHECK-NEXT:    global_load_ubyte v9, v[1:2], off offset:304428; CHECK-NEXT:    global_load_dwordx4 v[1:4], v[1:2], off4429; CHECK-NEXT:    s_waitcnt vmcnt(3)4430; CHECK-NEXT:    buffer_store_dword v7, v0, s[0:3], 0 offen offset:244431; CHECK-NEXT:    s_waitcnt vmcnt(2)4432; CHECK-NEXT:    buffer_store_short v8, v0, s[0:3], 0 offen offset:284433; CHECK-NEXT:    s_waitcnt vmcnt(1)4434; CHECK-NEXT:    buffer_store_byte v9, v0, s[0:3], 0 offen offset:304435; CHECK-NEXT:    s_waitcnt vmcnt(0)4436; CHECK-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:44437; CHECK-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen4438; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:124439; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:84440; CHECK-NEXT:    buffer_store_dword v6, v0, s[0:3], 0 offen offset:204441; CHECK-NEXT:    buffer_store_dword v5, v0, s[0:3], 0 offen offset:164442; CHECK-NEXT:    s_setpc_b64 s[30:31]4443entry:4444  tail call void @llvm.memmove.p5.p4.i64(ptr addrspace(5) noundef nonnull align 2 %dst, ptr addrspace(4) noundef nonnull align 2 %src, i64 31, i1 false)4445  ret void4446}4447 4448define void @memmove_p5_p4_sz32_align_2_2(ptr addrspace(5) align 2 %dst, ptr addrspace(4) align 2 readonly %src) {4449; CHECK-LABEL: memmove_p5_p4_sz32_align_2_2:4450; CHECK:       ; %bb.0: ; %entry4451; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4452; CHECK-NEXT:    s_clause 0x14453; CHECK-NEXT:    global_load_dwordx4 v[3:6], v[1:2], off4454; CHECK-NEXT:    global_load_dwordx4 v[7:10], v[1:2], off offset:164455; CHECK-NEXT:    s_waitcnt vmcnt(1)4456; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:44457; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen4458; CHECK-NEXT:    buffer_store_dword v6, v0, s[0:3], 0 offen offset:124459; CHECK-NEXT:    buffer_store_dword v5, v0, s[0:3], 0 offen offset:84460; CHECK-NEXT:    s_waitcnt vmcnt(0)4461; CHECK-NEXT:    buffer_store_dword v8, v0, s[0:3], 0 offen offset:204462; CHECK-NEXT:    buffer_store_dword v7, v0, s[0:3], 0 offen offset:164463; CHECK-NEXT:    buffer_store_dword v10, v0, s[0:3], 0 offen offset:284464; CHECK-NEXT:    buffer_store_dword v9, v0, s[0:3], 0 offen offset:244465; CHECK-NEXT:    s_setpc_b64 s[30:31]4466entry:4467  tail call void @llvm.memmove.p5.p4.i64(ptr addrspace(5) noundef nonnull align 2 %dst, ptr addrspace(4) noundef nonnull align 2 %src, i64 32, i1 false)4468  ret void4469}4470 4471define void @memmove_p5_p4_sz16_align_8_8(ptr addrspace(5) align 8 %dst, ptr addrspace(4) align 8 readonly %src) {4472; CHECK-LABEL: memmove_p5_p4_sz16_align_8_8:4473; CHECK:       ; %bb.0: ; %entry4474; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4475; CHECK-NEXT:    global_load_dwordx4 v[1:4], v[1:2], off4476; CHECK-NEXT:    s_waitcnt vmcnt(0)4477; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:124478; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:84479; CHECK-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:44480; CHECK-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen4481; CHECK-NEXT:    s_setpc_b64 s[30:31]4482entry:4483  tail call void @llvm.memmove.p5.p4.i64(ptr addrspace(5) noundef nonnull align 8 %dst, ptr addrspace(4) noundef nonnull align 8 %src, i64 16, i1 false)4484  ret void4485}4486 4487define void @memmove_p5_p4_sz31_align_8_8(ptr addrspace(5) align 8 %dst, ptr addrspace(4) align 8 readonly %src) {4488; CHECK-LABEL: memmove_p5_p4_sz31_align_8_8:4489; CHECK:       ; %bb.0: ; %entry4490; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4491; CHECK-NEXT:    s_clause 0x34492; CHECK-NEXT:    global_load_dwordx3 v[5:7], v[1:2], off offset:164493; CHECK-NEXT:    global_load_ushort v8, v[1:2], off offset:284494; CHECK-NEXT:    global_load_ubyte v9, v[1:2], off offset:304495; CHECK-NEXT:    global_load_dwordx4 v[1:4], v[1:2], off4496; CHECK-NEXT:    s_waitcnt vmcnt(3)4497; CHECK-NEXT:    buffer_store_dword v5, v0, s[0:3], 0 offen offset:164498; CHECK-NEXT:    buffer_store_dword v6, v0, s[0:3], 0 offen offset:204499; CHECK-NEXT:    buffer_store_dword v7, v0, s[0:3], 0 offen offset:244500; CHECK-NEXT:    s_waitcnt vmcnt(2)4501; CHECK-NEXT:    buffer_store_short v8, v0, s[0:3], 0 offen offset:284502; CHECK-NEXT:    s_waitcnt vmcnt(1)4503; CHECK-NEXT:    buffer_store_byte v9, v0, s[0:3], 0 offen offset:304504; CHECK-NEXT:    s_waitcnt vmcnt(0)4505; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:124506; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:84507; CHECK-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:44508; CHECK-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen4509; CHECK-NEXT:    s_setpc_b64 s[30:31]4510entry:4511  tail call void @llvm.memmove.p5.p4.i64(ptr addrspace(5) noundef nonnull align 8 %dst, ptr addrspace(4) noundef nonnull align 8 %src, i64 31, i1 false)4512  ret void4513}4514 4515define void @memmove_p5_p4_sz32_align_8_8(ptr addrspace(5) align 8 %dst, ptr addrspace(4) align 8 readonly %src) {4516; CHECK-LABEL: memmove_p5_p4_sz32_align_8_8:4517; CHECK:       ; %bb.0: ; %entry4518; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4519; CHECK-NEXT:    s_clause 0x14520; CHECK-NEXT:    global_load_dwordx4 v[3:6], v[1:2], off4521; CHECK-NEXT:    global_load_dwordx4 v[7:10], v[1:2], off offset:164522; CHECK-NEXT:    s_waitcnt vmcnt(1)4523; CHECK-NEXT:    buffer_store_dword v6, v0, s[0:3], 0 offen offset:124524; CHECK-NEXT:    buffer_store_dword v5, v0, s[0:3], 0 offen offset:84525; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:44526; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen4527; CHECK-NEXT:    s_waitcnt vmcnt(0)4528; CHECK-NEXT:    buffer_store_dword v10, v0, s[0:3], 0 offen offset:284529; CHECK-NEXT:    buffer_store_dword v9, v0, s[0:3], 0 offen offset:244530; CHECK-NEXT:    buffer_store_dword v8, v0, s[0:3], 0 offen offset:204531; CHECK-NEXT:    buffer_store_dword v7, v0, s[0:3], 0 offen offset:164532; CHECK-NEXT:    s_setpc_b64 s[30:31]4533entry:4534  tail call void @llvm.memmove.p5.p4.i64(ptr addrspace(5) noundef nonnull align 8 %dst, ptr addrspace(4) noundef nonnull align 8 %src, i64 32, i1 false)4535  ret void4536}4537 4538define void @memmove_p5_p4_sz16_align_16_16(ptr addrspace(5) align 16 %dst, ptr addrspace(4) align 16 readonly %src) {4539; CHECK-LABEL: memmove_p5_p4_sz16_align_16_16:4540; CHECK:       ; %bb.0: ; %entry4541; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4542; CHECK-NEXT:    global_load_dwordx4 v[1:4], v[1:2], off4543; CHECK-NEXT:    s_waitcnt vmcnt(0)4544; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:124545; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:84546; CHECK-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:44547; CHECK-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen4548; CHECK-NEXT:    s_setpc_b64 s[30:31]4549entry:4550  tail call void @llvm.memmove.p5.p4.i64(ptr addrspace(5) noundef nonnull align 16 %dst, ptr addrspace(4) noundef nonnull align 16 %src, i64 16, i1 false)4551  ret void4552}4553 4554define void @memmove_p5_p4_sz31_align_16_16(ptr addrspace(5) align 16 %dst, ptr addrspace(4) align 16 readonly %src) {4555; CHECK-LABEL: memmove_p5_p4_sz31_align_16_16:4556; CHECK:       ; %bb.0: ; %entry4557; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4558; CHECK-NEXT:    s_clause 0x34559; CHECK-NEXT:    global_load_dwordx3 v[5:7], v[1:2], off offset:164560; CHECK-NEXT:    global_load_ushort v8, v[1:2], off offset:284561; CHECK-NEXT:    global_load_ubyte v9, v[1:2], off offset:304562; CHECK-NEXT:    global_load_dwordx4 v[1:4], v[1:2], off4563; CHECK-NEXT:    s_waitcnt vmcnt(3)4564; CHECK-NEXT:    buffer_store_dword v5, v0, s[0:3], 0 offen offset:164565; CHECK-NEXT:    buffer_store_dword v6, v0, s[0:3], 0 offen offset:204566; CHECK-NEXT:    buffer_store_dword v7, v0, s[0:3], 0 offen offset:244567; CHECK-NEXT:    s_waitcnt vmcnt(2)4568; CHECK-NEXT:    buffer_store_short v8, v0, s[0:3], 0 offen offset:284569; CHECK-NEXT:    s_waitcnt vmcnt(1)4570; CHECK-NEXT:    buffer_store_byte v9, v0, s[0:3], 0 offen offset:304571; CHECK-NEXT:    s_waitcnt vmcnt(0)4572; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:124573; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:84574; CHECK-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:44575; CHECK-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen4576; CHECK-NEXT:    s_setpc_b64 s[30:31]4577entry:4578  tail call void @llvm.memmove.p5.p4.i64(ptr addrspace(5) noundef nonnull align 16 %dst, ptr addrspace(4) noundef nonnull align 16 %src, i64 31, i1 false)4579  ret void4580}4581 4582define void @memmove_p5_p4_sz32_align_16_16(ptr addrspace(5) align 16 %dst, ptr addrspace(4) align 16 readonly %src) {4583; CHECK-LABEL: memmove_p5_p4_sz32_align_16_16:4584; CHECK:       ; %bb.0: ; %entry4585; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4586; CHECK-NEXT:    s_clause 0x14587; CHECK-NEXT:    global_load_dwordx4 v[3:6], v[1:2], off4588; CHECK-NEXT:    global_load_dwordx4 v[7:10], v[1:2], off offset:164589; CHECK-NEXT:    s_waitcnt vmcnt(1)4590; CHECK-NEXT:    buffer_store_dword v6, v0, s[0:3], 0 offen offset:124591; CHECK-NEXT:    buffer_store_dword v5, v0, s[0:3], 0 offen offset:84592; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:44593; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen4594; CHECK-NEXT:    s_waitcnt vmcnt(0)4595; CHECK-NEXT:    buffer_store_dword v10, v0, s[0:3], 0 offen offset:284596; CHECK-NEXT:    buffer_store_dword v9, v0, s[0:3], 0 offen offset:244597; CHECK-NEXT:    buffer_store_dword v8, v0, s[0:3], 0 offen offset:204598; CHECK-NEXT:    buffer_store_dword v7, v0, s[0:3], 0 offen offset:164599; CHECK-NEXT:    s_setpc_b64 s[30:31]4600entry:4601  tail call void @llvm.memmove.p5.p4.i64(ptr addrspace(5) noundef nonnull align 16 %dst, ptr addrspace(4) noundef nonnull align 16 %src, i64 32, i1 false)4602  ret void4603}4604 4605define void @memmove_p5_p5_sz16_align_1_1(ptr addrspace(5) align 1 %dst, ptr addrspace(5) align 1 readonly %src) {4606; CHECK-LABEL: memmove_p5_p5_sz16_align_1_1:4607; CHECK:       ; %bb.0: ; %entry4608; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4609; CHECK-NEXT:    s_clause 0x34610; CHECK-NEXT:    buffer_load_dword v2, v1, s[0:3], 0 offen offset:84611; CHECK-NEXT:    buffer_load_dword v3, v1, s[0:3], 0 offen offset:124612; CHECK-NEXT:    buffer_load_dword v4, v1, s[0:3], 0 offen4613; CHECK-NEXT:    buffer_load_dword v1, v1, s[0:3], 0 offen offset:44614; CHECK-NEXT:    s_waitcnt vmcnt(3)4615; CHECK-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:84616; CHECK-NEXT:    s_waitcnt vmcnt(2)4617; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:124618; CHECK-NEXT:    s_waitcnt vmcnt(1)4619; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen4620; CHECK-NEXT:    s_waitcnt vmcnt(0)4621; CHECK-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen offset:44622; CHECK-NEXT:    s_setpc_b64 s[30:31]4623entry:4624  tail call void @llvm.memmove.p5.p5.i64(ptr addrspace(5) noundef nonnull align 1 %dst, ptr addrspace(5) noundef nonnull align 1 %src, i64 16, i1 false)4625  ret void4626}4627 4628define void @memmove_p5_p5_sz31_align_1_1(ptr addrspace(5) align 1 %dst, ptr addrspace(5) align 1 readonly %src) {4629; CHECK-LABEL: memmove_p5_p5_sz31_align_1_1:4630; CHECK:       ; %bb.0: ; %entry4631; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4632; CHECK-NEXT:    s_clause 0x84633; CHECK-NEXT:    buffer_load_ushort v2, v1, s[0:3], 0 offen offset:284634; CHECK-NEXT:    buffer_load_dword v3, v1, s[0:3], 0 offen offset:244635; CHECK-NEXT:    buffer_load_dword v4, v1, s[0:3], 0 offen offset:164636; CHECK-NEXT:    buffer_load_dword v5, v1, s[0:3], 0 offen offset:204637; CHECK-NEXT:    buffer_load_dword v6, v1, s[0:3], 0 offen offset:84638; CHECK-NEXT:    buffer_load_dword v7, v1, s[0:3], 0 offen offset:124639; CHECK-NEXT:    buffer_load_dword v8, v1, s[0:3], 0 offen4640; CHECK-NEXT:    buffer_load_dword v9, v1, s[0:3], 0 offen offset:44641; CHECK-NEXT:    buffer_load_ubyte v1, v1, s[0:3], 0 offen offset:304642; CHECK-NEXT:    s_waitcnt vmcnt(8)4643; CHECK-NEXT:    buffer_store_short v2, v0, s[0:3], 0 offen offset:284644; CHECK-NEXT:    s_waitcnt vmcnt(7)4645; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:244646; CHECK-NEXT:    s_waitcnt vmcnt(6)4647; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:164648; CHECK-NEXT:    s_waitcnt vmcnt(5)4649; CHECK-NEXT:    buffer_store_dword v5, v0, s[0:3], 0 offen offset:204650; CHECK-NEXT:    s_waitcnt vmcnt(4)4651; CHECK-NEXT:    buffer_store_dword v6, v0, s[0:3], 0 offen offset:84652; CHECK-NEXT:    s_waitcnt vmcnt(3)4653; CHECK-NEXT:    buffer_store_dword v7, v0, s[0:3], 0 offen offset:124654; CHECK-NEXT:    s_waitcnt vmcnt(2)4655; CHECK-NEXT:    buffer_store_dword v8, v0, s[0:3], 0 offen4656; CHECK-NEXT:    s_waitcnt vmcnt(1)4657; CHECK-NEXT:    buffer_store_dword v9, v0, s[0:3], 0 offen offset:44658; CHECK-NEXT:    s_waitcnt vmcnt(0)4659; CHECK-NEXT:    buffer_store_byte v1, v0, s[0:3], 0 offen offset:304660; CHECK-NEXT:    s_setpc_b64 s[30:31]4661entry:4662  tail call void @llvm.memmove.p5.p5.i64(ptr addrspace(5) noundef nonnull align 1 %dst, ptr addrspace(5) noundef nonnull align 1 %src, i64 31, i1 false)4663  ret void4664}4665 4666define void @memmove_p5_p5_sz32_align_1_1(ptr addrspace(5) align 1 %dst, ptr addrspace(5) align 1 readonly %src) {4667; CHECK-LABEL: memmove_p5_p5_sz32_align_1_1:4668; CHECK:       ; %bb.0: ; %entry4669; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4670; CHECK-NEXT:    s_clause 0x74671; CHECK-NEXT:    buffer_load_dword v2, v1, s[0:3], 0 offen offset:244672; CHECK-NEXT:    buffer_load_dword v3, v1, s[0:3], 0 offen offset:284673; CHECK-NEXT:    buffer_load_dword v4, v1, s[0:3], 0 offen offset:164674; CHECK-NEXT:    buffer_load_dword v5, v1, s[0:3], 0 offen offset:204675; CHECK-NEXT:    buffer_load_dword v6, v1, s[0:3], 0 offen offset:84676; CHECK-NEXT:    buffer_load_dword v7, v1, s[0:3], 0 offen offset:124677; CHECK-NEXT:    buffer_load_dword v8, v1, s[0:3], 0 offen4678; CHECK-NEXT:    buffer_load_dword v1, v1, s[0:3], 0 offen offset:44679; CHECK-NEXT:    s_waitcnt vmcnt(7)4680; CHECK-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:244681; CHECK-NEXT:    s_waitcnt vmcnt(6)4682; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:284683; CHECK-NEXT:    s_waitcnt vmcnt(5)4684; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:164685; CHECK-NEXT:    s_waitcnt vmcnt(4)4686; CHECK-NEXT:    buffer_store_dword v5, v0, s[0:3], 0 offen offset:204687; CHECK-NEXT:    s_waitcnt vmcnt(3)4688; CHECK-NEXT:    buffer_store_dword v6, v0, s[0:3], 0 offen offset:84689; CHECK-NEXT:    s_waitcnt vmcnt(2)4690; CHECK-NEXT:    buffer_store_dword v7, v0, s[0:3], 0 offen offset:124691; CHECK-NEXT:    s_waitcnt vmcnt(1)4692; CHECK-NEXT:    buffer_store_dword v8, v0, s[0:3], 0 offen4693; CHECK-NEXT:    s_waitcnt vmcnt(0)4694; CHECK-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen offset:44695; CHECK-NEXT:    s_setpc_b64 s[30:31]4696entry:4697  tail call void @llvm.memmove.p5.p5.i64(ptr addrspace(5) noundef nonnull align 1 %dst, ptr addrspace(5) noundef nonnull align 1 %src, i64 32, i1 false)4698  ret void4699}4700 4701define void @memmove_p5_p5_sz16_align_2_2(ptr addrspace(5) align 2 %dst, ptr addrspace(5) align 2 readonly %src) {4702; CHECK-LABEL: memmove_p5_p5_sz16_align_2_2:4703; CHECK:       ; %bb.0: ; %entry4704; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4705; CHECK-NEXT:    s_clause 0x34706; CHECK-NEXT:    buffer_load_dword v2, v1, s[0:3], 0 offen offset:84707; CHECK-NEXT:    buffer_load_dword v3, v1, s[0:3], 0 offen offset:124708; CHECK-NEXT:    buffer_load_dword v4, v1, s[0:3], 0 offen4709; CHECK-NEXT:    buffer_load_dword v1, v1, s[0:3], 0 offen offset:44710; CHECK-NEXT:    s_waitcnt vmcnt(3)4711; CHECK-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:84712; CHECK-NEXT:    s_waitcnt vmcnt(2)4713; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:124714; CHECK-NEXT:    s_waitcnt vmcnt(1)4715; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen4716; CHECK-NEXT:    s_waitcnt vmcnt(0)4717; CHECK-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen offset:44718; CHECK-NEXT:    s_setpc_b64 s[30:31]4719entry:4720  tail call void @llvm.memmove.p5.p5.i64(ptr addrspace(5) noundef nonnull align 2 %dst, ptr addrspace(5) noundef nonnull align 2 %src, i64 16, i1 false)4721  ret void4722}4723 4724define void @memmove_p5_p5_sz31_align_2_2(ptr addrspace(5) align 2 %dst, ptr addrspace(5) align 2 readonly %src) {4725; CHECK-LABEL: memmove_p5_p5_sz31_align_2_2:4726; CHECK:       ; %bb.0: ; %entry4727; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4728; CHECK-NEXT:    s_clause 0x84729; CHECK-NEXT:    buffer_load_ushort v2, v1, s[0:3], 0 offen offset:284730; CHECK-NEXT:    buffer_load_dword v3, v1, s[0:3], 0 offen offset:244731; CHECK-NEXT:    buffer_load_dword v4, v1, s[0:3], 0 offen offset:164732; CHECK-NEXT:    buffer_load_dword v5, v1, s[0:3], 0 offen offset:204733; CHECK-NEXT:    buffer_load_dword v6, v1, s[0:3], 0 offen offset:84734; CHECK-NEXT:    buffer_load_dword v7, v1, s[0:3], 0 offen offset:124735; CHECK-NEXT:    buffer_load_dword v8, v1, s[0:3], 0 offen4736; CHECK-NEXT:    buffer_load_dword v9, v1, s[0:3], 0 offen offset:44737; CHECK-NEXT:    buffer_load_ubyte v1, v1, s[0:3], 0 offen offset:304738; CHECK-NEXT:    s_waitcnt vmcnt(8)4739; CHECK-NEXT:    buffer_store_short v2, v0, s[0:3], 0 offen offset:284740; CHECK-NEXT:    s_waitcnt vmcnt(7)4741; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:244742; CHECK-NEXT:    s_waitcnt vmcnt(6)4743; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:164744; CHECK-NEXT:    s_waitcnt vmcnt(5)4745; CHECK-NEXT:    buffer_store_dword v5, v0, s[0:3], 0 offen offset:204746; CHECK-NEXT:    s_waitcnt vmcnt(4)4747; CHECK-NEXT:    buffer_store_dword v6, v0, s[0:3], 0 offen offset:84748; CHECK-NEXT:    s_waitcnt vmcnt(3)4749; CHECK-NEXT:    buffer_store_dword v7, v0, s[0:3], 0 offen offset:124750; CHECK-NEXT:    s_waitcnt vmcnt(2)4751; CHECK-NEXT:    buffer_store_dword v8, v0, s[0:3], 0 offen4752; CHECK-NEXT:    s_waitcnt vmcnt(1)4753; CHECK-NEXT:    buffer_store_dword v9, v0, s[0:3], 0 offen offset:44754; CHECK-NEXT:    s_waitcnt vmcnt(0)4755; CHECK-NEXT:    buffer_store_byte v1, v0, s[0:3], 0 offen offset:304756; CHECK-NEXT:    s_setpc_b64 s[30:31]4757entry:4758  tail call void @llvm.memmove.p5.p5.i64(ptr addrspace(5) noundef nonnull align 2 %dst, ptr addrspace(5) noundef nonnull align 2 %src, i64 31, i1 false)4759  ret void4760}4761 4762define void @memmove_p5_p5_sz32_align_2_2(ptr addrspace(5) align 2 %dst, ptr addrspace(5) align 2 readonly %src) {4763; CHECK-LABEL: memmove_p5_p5_sz32_align_2_2:4764; CHECK:       ; %bb.0: ; %entry4765; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4766; CHECK-NEXT:    s_clause 0x74767; CHECK-NEXT:    buffer_load_dword v2, v1, s[0:3], 0 offen offset:244768; CHECK-NEXT:    buffer_load_dword v3, v1, s[0:3], 0 offen offset:284769; CHECK-NEXT:    buffer_load_dword v4, v1, s[0:3], 0 offen offset:164770; CHECK-NEXT:    buffer_load_dword v5, v1, s[0:3], 0 offen offset:204771; CHECK-NEXT:    buffer_load_dword v6, v1, s[0:3], 0 offen offset:84772; CHECK-NEXT:    buffer_load_dword v7, v1, s[0:3], 0 offen offset:124773; CHECK-NEXT:    buffer_load_dword v8, v1, s[0:3], 0 offen4774; CHECK-NEXT:    buffer_load_dword v1, v1, s[0:3], 0 offen offset:44775; CHECK-NEXT:    s_waitcnt vmcnt(7)4776; CHECK-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:244777; CHECK-NEXT:    s_waitcnt vmcnt(6)4778; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:284779; CHECK-NEXT:    s_waitcnt vmcnt(5)4780; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:164781; CHECK-NEXT:    s_waitcnt vmcnt(4)4782; CHECK-NEXT:    buffer_store_dword v5, v0, s[0:3], 0 offen offset:204783; CHECK-NEXT:    s_waitcnt vmcnt(3)4784; CHECK-NEXT:    buffer_store_dword v6, v0, s[0:3], 0 offen offset:84785; CHECK-NEXT:    s_waitcnt vmcnt(2)4786; CHECK-NEXT:    buffer_store_dword v7, v0, s[0:3], 0 offen offset:124787; CHECK-NEXT:    s_waitcnt vmcnt(1)4788; CHECK-NEXT:    buffer_store_dword v8, v0, s[0:3], 0 offen4789; CHECK-NEXT:    s_waitcnt vmcnt(0)4790; CHECK-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen offset:44791; CHECK-NEXT:    s_setpc_b64 s[30:31]4792entry:4793  tail call void @llvm.memmove.p5.p5.i64(ptr addrspace(5) noundef nonnull align 2 %dst, ptr addrspace(5) noundef nonnull align 2 %src, i64 32, i1 false)4794  ret void4795}4796 4797define void @memmove_p5_p5_sz16_align_8_8(ptr addrspace(5) align 8 %dst, ptr addrspace(5) align 8 readonly %src) {4798; CHECK-LABEL: memmove_p5_p5_sz16_align_8_8:4799; CHECK:       ; %bb.0: ; %entry4800; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4801; CHECK-NEXT:    s_clause 0x34802; CHECK-NEXT:    buffer_load_dword v2, v1, s[0:3], 0 offen4803; CHECK-NEXT:    buffer_load_dword v3, v1, s[0:3], 0 offen offset:44804; CHECK-NEXT:    buffer_load_dword v4, v1, s[0:3], 0 offen offset:84805; CHECK-NEXT:    buffer_load_dword v1, v1, s[0:3], 0 offen offset:124806; CHECK-NEXT:    s_waitcnt vmcnt(3)4807; CHECK-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen4808; CHECK-NEXT:    s_waitcnt vmcnt(2)4809; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:44810; CHECK-NEXT:    s_waitcnt vmcnt(1)4811; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:84812; CHECK-NEXT:    s_waitcnt vmcnt(0)4813; CHECK-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen offset:124814; CHECK-NEXT:    s_setpc_b64 s[30:31]4815entry:4816  tail call void @llvm.memmove.p5.p5.i64(ptr addrspace(5) noundef nonnull align 8 %dst, ptr addrspace(5) noundef nonnull align 8 %src, i64 16, i1 false)4817  ret void4818}4819 4820define void @memmove_p5_p5_sz31_align_8_8(ptr addrspace(5) align 8 %dst, ptr addrspace(5) align 8 readonly %src) {4821; CHECK-LABEL: memmove_p5_p5_sz31_align_8_8:4822; CHECK:       ; %bb.0: ; %entry4823; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4824; CHECK-NEXT:    s_clause 0x84825; CHECK-NEXT:    buffer_load_dword v2, v1, s[0:3], 0 offen offset:204826; CHECK-NEXT:    buffer_load_dword v3, v1, s[0:3], 0 offen offset:164827; CHECK-NEXT:    buffer_load_dword v4, v1, s[0:3], 0 offen offset:244828; CHECK-NEXT:    buffer_load_ubyte v5, v1, s[0:3], 0 offen offset:304829; CHECK-NEXT:    buffer_load_ushort v6, v1, s[0:3], 0 offen offset:284830; CHECK-NEXT:    buffer_load_dword v7, v1, s[0:3], 0 offen4831; CHECK-NEXT:    buffer_load_dword v8, v1, s[0:3], 0 offen offset:44832; CHECK-NEXT:    buffer_load_dword v9, v1, s[0:3], 0 offen offset:84833; CHECK-NEXT:    buffer_load_dword v1, v1, s[0:3], 0 offen offset:124834; CHECK-NEXT:    s_waitcnt vmcnt(8)4835; CHECK-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:204836; CHECK-NEXT:    s_waitcnt vmcnt(7)4837; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:164838; CHECK-NEXT:    s_waitcnt vmcnt(6)4839; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:244840; CHECK-NEXT:    s_waitcnt vmcnt(5)4841; CHECK-NEXT:    buffer_store_byte v5, v0, s[0:3], 0 offen offset:304842; CHECK-NEXT:    s_waitcnt vmcnt(4)4843; CHECK-NEXT:    buffer_store_short v6, v0, s[0:3], 0 offen offset:284844; CHECK-NEXT:    s_waitcnt vmcnt(3)4845; CHECK-NEXT:    buffer_store_dword v7, v0, s[0:3], 0 offen4846; CHECK-NEXT:    s_waitcnt vmcnt(2)4847; CHECK-NEXT:    buffer_store_dword v8, v0, s[0:3], 0 offen offset:44848; CHECK-NEXT:    s_waitcnt vmcnt(1)4849; CHECK-NEXT:    buffer_store_dword v9, v0, s[0:3], 0 offen offset:84850; CHECK-NEXT:    s_waitcnt vmcnt(0)4851; CHECK-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen offset:124852; CHECK-NEXT:    s_setpc_b64 s[30:31]4853entry:4854  tail call void @llvm.memmove.p5.p5.i64(ptr addrspace(5) noundef nonnull align 8 %dst, ptr addrspace(5) noundef nonnull align 8 %src, i64 31, i1 false)4855  ret void4856}4857 4858define void @memmove_p5_p5_sz32_align_8_8(ptr addrspace(5) align 8 %dst, ptr addrspace(5) align 8 readonly %src) {4859; CHECK-LABEL: memmove_p5_p5_sz32_align_8_8:4860; CHECK:       ; %bb.0: ; %entry4861; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4862; CHECK-NEXT:    s_clause 0x74863; CHECK-NEXT:    buffer_load_dword v2, v1, s[0:3], 0 offen offset:164864; CHECK-NEXT:    buffer_load_dword v3, v1, s[0:3], 0 offen offset:204865; CHECK-NEXT:    buffer_load_dword v4, v1, s[0:3], 0 offen offset:244866; CHECK-NEXT:    buffer_load_dword v5, v1, s[0:3], 0 offen offset:284867; CHECK-NEXT:    buffer_load_dword v6, v1, s[0:3], 0 offen4868; CHECK-NEXT:    buffer_load_dword v7, v1, s[0:3], 0 offen offset:44869; CHECK-NEXT:    buffer_load_dword v8, v1, s[0:3], 0 offen offset:84870; CHECK-NEXT:    buffer_load_dword v1, v1, s[0:3], 0 offen offset:124871; CHECK-NEXT:    s_waitcnt vmcnt(7)4872; CHECK-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:164873; CHECK-NEXT:    s_waitcnt vmcnt(6)4874; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:204875; CHECK-NEXT:    s_waitcnt vmcnt(5)4876; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:244877; CHECK-NEXT:    s_waitcnt vmcnt(4)4878; CHECK-NEXT:    buffer_store_dword v5, v0, s[0:3], 0 offen offset:284879; CHECK-NEXT:    s_waitcnt vmcnt(3)4880; CHECK-NEXT:    buffer_store_dword v6, v0, s[0:3], 0 offen4881; CHECK-NEXT:    s_waitcnt vmcnt(2)4882; CHECK-NEXT:    buffer_store_dword v7, v0, s[0:3], 0 offen offset:44883; CHECK-NEXT:    s_waitcnt vmcnt(1)4884; CHECK-NEXT:    buffer_store_dword v8, v0, s[0:3], 0 offen offset:84885; CHECK-NEXT:    s_waitcnt vmcnt(0)4886; CHECK-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen offset:124887; CHECK-NEXT:    s_setpc_b64 s[30:31]4888entry:4889  tail call void @llvm.memmove.p5.p5.i64(ptr addrspace(5) noundef nonnull align 8 %dst, ptr addrspace(5) noundef nonnull align 8 %src, i64 32, i1 false)4890  ret void4891}4892 4893define void @memmove_p5_p5_sz16_align_16_16(ptr addrspace(5) align 16 %dst, ptr addrspace(5) align 16 readonly %src) {4894; CHECK-LABEL: memmove_p5_p5_sz16_align_16_16:4895; CHECK:       ; %bb.0: ; %entry4896; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4897; CHECK-NEXT:    s_clause 0x34898; CHECK-NEXT:    buffer_load_dword v2, v1, s[0:3], 0 offen4899; CHECK-NEXT:    buffer_load_dword v3, v1, s[0:3], 0 offen offset:44900; CHECK-NEXT:    buffer_load_dword v4, v1, s[0:3], 0 offen offset:84901; CHECK-NEXT:    buffer_load_dword v1, v1, s[0:3], 0 offen offset:124902; CHECK-NEXT:    s_waitcnt vmcnt(3)4903; CHECK-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen4904; CHECK-NEXT:    s_waitcnt vmcnt(2)4905; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:44906; CHECK-NEXT:    s_waitcnt vmcnt(1)4907; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:84908; CHECK-NEXT:    s_waitcnt vmcnt(0)4909; CHECK-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen offset:124910; CHECK-NEXT:    s_setpc_b64 s[30:31]4911entry:4912  tail call void @llvm.memmove.p5.p5.i64(ptr addrspace(5) noundef nonnull align 16 %dst, ptr addrspace(5) noundef nonnull align 16 %src, i64 16, i1 false)4913  ret void4914}4915 4916define void @memmove_p5_p5_sz31_align_16_16(ptr addrspace(5) align 16 %dst, ptr addrspace(5) align 16 readonly %src) {4917; CHECK-LABEL: memmove_p5_p5_sz31_align_16_16:4918; CHECK:       ; %bb.0: ; %entry4919; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4920; CHECK-NEXT:    s_clause 0x84921; CHECK-NEXT:    buffer_load_dword v2, v1, s[0:3], 0 offen offset:244922; CHECK-NEXT:    buffer_load_dword v3, v1, s[0:3], 0 offen offset:204923; CHECK-NEXT:    buffer_load_dword v4, v1, s[0:3], 0 offen offset:164924; CHECK-NEXT:    buffer_load_ubyte v5, v1, s[0:3], 0 offen offset:304925; CHECK-NEXT:    buffer_load_ushort v6, v1, s[0:3], 0 offen offset:284926; CHECK-NEXT:    buffer_load_dword v7, v1, s[0:3], 0 offen4927; CHECK-NEXT:    buffer_load_dword v8, v1, s[0:3], 0 offen offset:44928; CHECK-NEXT:    buffer_load_dword v9, v1, s[0:3], 0 offen offset:84929; CHECK-NEXT:    buffer_load_dword v1, v1, s[0:3], 0 offen offset:124930; CHECK-NEXT:    s_waitcnt vmcnt(8)4931; CHECK-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:244932; CHECK-NEXT:    s_waitcnt vmcnt(7)4933; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:204934; CHECK-NEXT:    s_waitcnt vmcnt(6)4935; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:164936; CHECK-NEXT:    s_waitcnt vmcnt(5)4937; CHECK-NEXT:    buffer_store_byte v5, v0, s[0:3], 0 offen offset:304938; CHECK-NEXT:    s_waitcnt vmcnt(4)4939; CHECK-NEXT:    buffer_store_short v6, v0, s[0:3], 0 offen offset:284940; CHECK-NEXT:    s_waitcnt vmcnt(3)4941; CHECK-NEXT:    buffer_store_dword v7, v0, s[0:3], 0 offen4942; CHECK-NEXT:    s_waitcnt vmcnt(2)4943; CHECK-NEXT:    buffer_store_dword v8, v0, s[0:3], 0 offen offset:44944; CHECK-NEXT:    s_waitcnt vmcnt(1)4945; CHECK-NEXT:    buffer_store_dword v9, v0, s[0:3], 0 offen offset:84946; CHECK-NEXT:    s_waitcnt vmcnt(0)4947; CHECK-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen offset:124948; CHECK-NEXT:    s_setpc_b64 s[30:31]4949entry:4950  tail call void @llvm.memmove.p5.p5.i64(ptr addrspace(5) noundef nonnull align 16 %dst, ptr addrspace(5) noundef nonnull align 16 %src, i64 31, i1 false)4951  ret void4952}4953 4954define void @memmove_p5_p5_sz32_align_16_16(ptr addrspace(5) align 16 %dst, ptr addrspace(5) align 16 readonly %src) {4955; CHECK-LABEL: memmove_p5_p5_sz32_align_16_16:4956; CHECK:       ; %bb.0: ; %entry4957; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4958; CHECK-NEXT:    s_clause 0x74959; CHECK-NEXT:    buffer_load_dword v2, v1, s[0:3], 0 offen offset:164960; CHECK-NEXT:    buffer_load_dword v3, v1, s[0:3], 0 offen offset:204961; CHECK-NEXT:    buffer_load_dword v4, v1, s[0:3], 0 offen offset:244962; CHECK-NEXT:    buffer_load_dword v5, v1, s[0:3], 0 offen offset:284963; CHECK-NEXT:    buffer_load_dword v6, v1, s[0:3], 0 offen4964; CHECK-NEXT:    buffer_load_dword v7, v1, s[0:3], 0 offen offset:44965; CHECK-NEXT:    buffer_load_dword v8, v1, s[0:3], 0 offen offset:84966; CHECK-NEXT:    buffer_load_dword v1, v1, s[0:3], 0 offen offset:124967; CHECK-NEXT:    s_waitcnt vmcnt(7)4968; CHECK-NEXT:    buffer_store_dword v2, v0, s[0:3], 0 offen offset:164969; CHECK-NEXT:    s_waitcnt vmcnt(6)4970; CHECK-NEXT:    buffer_store_dword v3, v0, s[0:3], 0 offen offset:204971; CHECK-NEXT:    s_waitcnt vmcnt(5)4972; CHECK-NEXT:    buffer_store_dword v4, v0, s[0:3], 0 offen offset:244973; CHECK-NEXT:    s_waitcnt vmcnt(4)4974; CHECK-NEXT:    buffer_store_dword v5, v0, s[0:3], 0 offen offset:284975; CHECK-NEXT:    s_waitcnt vmcnt(3)4976; CHECK-NEXT:    buffer_store_dword v6, v0, s[0:3], 0 offen4977; CHECK-NEXT:    s_waitcnt vmcnt(2)4978; CHECK-NEXT:    buffer_store_dword v7, v0, s[0:3], 0 offen offset:44979; CHECK-NEXT:    s_waitcnt vmcnt(1)4980; CHECK-NEXT:    buffer_store_dword v8, v0, s[0:3], 0 offen offset:84981; CHECK-NEXT:    s_waitcnt vmcnt(0)4982; CHECK-NEXT:    buffer_store_dword v1, v0, s[0:3], 0 offen offset:124983; CHECK-NEXT:    s_setpc_b64 s[30:31]4984entry:4985  tail call void @llvm.memmove.p5.p5.i64(ptr addrspace(5) noundef nonnull align 16 %dst, ptr addrspace(5) noundef nonnull align 16 %src, i64 32, i1 false)4986  ret void4987}4988 4989declare void @llvm.memmove.p0.p0.i64(ptr addrspace(0) nocapture writeonly, ptr addrspace(0) nocapture readonly, i64, i1 immarg) #24990declare void @llvm.memmove.p0.p1.i64(ptr addrspace(0) nocapture writeonly, ptr addrspace(1) nocapture readonly, i64, i1 immarg) #24991declare void @llvm.memmove.p0.p3.i64(ptr addrspace(0) nocapture writeonly, ptr addrspace(3) nocapture readonly, i64, i1 immarg) #24992declare void @llvm.memmove.p0.p4.i64(ptr addrspace(0) nocapture writeonly, ptr addrspace(4) nocapture readonly, i64, i1 immarg) #24993declare void @llvm.memmove.p0.p5.i64(ptr addrspace(0) nocapture writeonly, ptr addrspace(5) nocapture readonly, i64, i1 immarg) #24994declare void @llvm.memmove.p1.p0.i64(ptr addrspace(1) nocapture writeonly, ptr addrspace(0) nocapture readonly, i64, i1 immarg) #24995declare void @llvm.memmove.p1.p1.i64(ptr addrspace(1) nocapture writeonly, ptr addrspace(1) nocapture readonly, i64, i1 immarg) #24996declare void @llvm.memmove.p1.p3.i64(ptr addrspace(1) nocapture writeonly, ptr addrspace(3) nocapture readonly, i64, i1 immarg) #24997declare void @llvm.memmove.p1.p4.i64(ptr addrspace(1) nocapture writeonly, ptr addrspace(4) nocapture readonly, i64, i1 immarg) #24998declare void @llvm.memmove.p1.p5.i64(ptr addrspace(1) nocapture writeonly, ptr addrspace(5) nocapture readonly, i64, i1 immarg) #24999declare void @llvm.memmove.p3.p0.i64(ptr addrspace(3) nocapture writeonly, ptr addrspace(0) nocapture readonly, i64, i1 immarg) #25000declare void @llvm.memmove.p3.p1.i64(ptr addrspace(3) nocapture writeonly, ptr addrspace(1) nocapture readonly, i64, i1 immarg) #25001declare void @llvm.memmove.p3.p3.i64(ptr addrspace(3) nocapture writeonly, ptr addrspace(3) nocapture readonly, i64, i1 immarg) #25002declare void @llvm.memmove.p3.p4.i64(ptr addrspace(3) nocapture writeonly, ptr addrspace(4) nocapture readonly, i64, i1 immarg) #25003declare void @llvm.memmove.p3.p5.i64(ptr addrspace(3) nocapture writeonly, ptr addrspace(5) nocapture readonly, i64, i1 immarg) #25004declare void @llvm.memmove.p5.p0.i64(ptr addrspace(5) nocapture writeonly, ptr addrspace(0) nocapture readonly, i64, i1 immarg) #25005declare void @llvm.memmove.p5.p1.i64(ptr addrspace(5) nocapture writeonly, ptr addrspace(1) nocapture readonly, i64, i1 immarg) #25006declare void @llvm.memmove.p5.p3.i64(ptr addrspace(5) nocapture writeonly, ptr addrspace(3) nocapture readonly, i64, i1 immarg) #25007declare void @llvm.memmove.p5.p4.i64(ptr addrspace(5) nocapture writeonly, ptr addrspace(4) nocapture readonly, i64, i1 immarg) #25008declare void @llvm.memmove.p5.p5.i64(ptr addrspace(5) nocapture writeonly, ptr addrspace(5) nocapture readonly, i64, i1 immarg) #25009 5010attributes #0 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }5011 5012