14746 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -global-isel=0 -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx600 < %s | FileCheck -check-prefixes=GFX6,GFX6-SDAG %s3; RUN: llc -global-isel=1 -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx600 < %s | FileCheck -check-prefixes=GFX6,GFX6-GISEL %s4 5; RUN: llc -global-isel=0 -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx700 < %s | FileCheck -check-prefixes=GFX7,GFX7-SDAG %s6; RUN: llc -global-isel=1 -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx700 < %s | FileCheck -check-prefixes=GFX7,GFX7-GISEL %s7 8; RUN: llc -global-isel=0 -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx803 < %s | FileCheck -check-prefixes=GFX8,GFX8-SDAG %s9; RUN: llc -global-isel=1 -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx803 < %s | FileCheck -check-prefixes=GFX8,GFX8-GISEL %s10 11; RUN: llc -global-isel=0 -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx900 < %s | FileCheck -check-prefixes=GFX9,GFX8-SDAG %s12; RUN: llc -global-isel=1 -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx900 < %s | FileCheck -check-prefixes=GFX9,GFX9-GISEL %s13 14; RUN: llc -global-isel=0 -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx1010 < %s | FileCheck -check-prefixes=GFX10,GFX10-SDAG %s15; RUN: llc -global-isel=1 -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx1010 < %s | FileCheck -check-prefixes=GFX10,GFX10-GISEL %s16 17; RUN: llc -global-isel=0 -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx1100 -mattr=+real-true16 -amdgpu-enable-delay-alu=0 < %s | FileCheck -check-prefixes=GFX11,GFX11-SDAG,GFX11-SDAG-TRUE16 %s18; RUN: llc -global-isel=0 -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx1100 -mattr=-real-true16 -amdgpu-enable-delay-alu=0 < %s | FileCheck -check-prefixes=GFX11,GFX11-SDAG,GFX11-SDAG-FAKE16 %s19; FIXME-TRUE16 enable gisel20; XUN: llc -global-isel=1 -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx1100 -mattr=+real-true16 -amdgpu-enable-delay-alu=0 < %s | FileCheck -check-prefixes=GFX11,GFX11-GISEL,GFX11-GISEL-TRUE16 %s21; RUN: llc -global-isel=1 -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx1100 -mattr=-real-true16 -amdgpu-enable-delay-alu=0 < %s | FileCheck -check-prefixes=GFX11,GFX11-GISEL %s22 23define void @freeze_v2i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {24; GFX6-SDAG-LABEL: freeze_v2i32:25; GFX6-SDAG: ; %bb.0:26; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)27; GFX6-SDAG-NEXT: s_mov_b32 s6, 028; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf00029; GFX6-SDAG-NEXT: s_mov_b32 s4, s630; GFX6-SDAG-NEXT: s_mov_b32 s5, s631; GFX6-SDAG-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr6432; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0)33; GFX6-SDAG-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr6434; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)35; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]36;37; GFX6-GISEL-LABEL: freeze_v2i32:38; GFX6-GISEL: ; %bb.0:39; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)40; GFX6-GISEL-NEXT: s_mov_b32 s6, 041; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf00042; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 043; GFX6-GISEL-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr6444; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0)45; GFX6-GISEL-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr6446; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)47; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]48;49; GFX7-SDAG-LABEL: freeze_v2i32:50; GFX7-SDAG: ; %bb.0:51; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)52; GFX7-SDAG-NEXT: s_mov_b32 s6, 053; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf00054; GFX7-SDAG-NEXT: s_mov_b32 s4, s655; GFX7-SDAG-NEXT: s_mov_b32 s5, s656; GFX7-SDAG-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr6457; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)58; GFX7-SDAG-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr6459; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)60; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]61;62; GFX7-GISEL-LABEL: freeze_v2i32:63; GFX7-GISEL: ; %bb.0:64; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)65; GFX7-GISEL-NEXT: s_mov_b32 s6, 066; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf00067; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 068; GFX7-GISEL-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr6469; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)70; GFX7-GISEL-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr6471; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)72; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]73;74; GFX8-LABEL: freeze_v2i32:75; GFX8: ; %bb.0:76; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)77; GFX8-NEXT: flat_load_dwordx2 v[0:1], v[0:1]78; GFX8-NEXT: s_waitcnt vmcnt(0)79; GFX8-NEXT: flat_store_dwordx2 v[2:3], v[0:1]80; GFX8-NEXT: s_waitcnt vmcnt(0)81; GFX8-NEXT: s_setpc_b64 s[30:31]82;83; GFX9-LABEL: freeze_v2i32:84; GFX9: ; %bb.0:85; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)86; GFX9-NEXT: global_load_dwordx2 v[0:1], v[0:1], off87; GFX9-NEXT: s_waitcnt vmcnt(0)88; GFX9-NEXT: global_store_dwordx2 v[2:3], v[0:1], off89; GFX9-NEXT: s_waitcnt vmcnt(0)90; GFX9-NEXT: s_setpc_b64 s[30:31]91;92; GFX10-LABEL: freeze_v2i32:93; GFX10: ; %bb.0:94; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)95; GFX10-NEXT: global_load_dwordx2 v[0:1], v[0:1], off96; GFX10-NEXT: s_waitcnt vmcnt(0)97; GFX10-NEXT: global_store_dwordx2 v[2:3], v[0:1], off98; GFX10-NEXT: s_setpc_b64 s[30:31]99;100; GFX11-LABEL: freeze_v2i32:101; GFX11: ; %bb.0:102; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)103; GFX11-NEXT: global_load_b64 v[0:1], v[0:1], off104; GFX11-NEXT: s_waitcnt vmcnt(0)105; GFX11-NEXT: global_store_b64 v[2:3], v[0:1], off106; GFX11-NEXT: s_setpc_b64 s[30:31]107 %a = load <2 x i32>, ptr addrspace(1) %ptra, align 4108 %freeze = freeze <2 x i32> %a109 store <2 x i32> %freeze, ptr addrspace(1) %ptrb, align 4110 ret void111}112 113define void @freeze_v3i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {114; GFX6-SDAG-LABEL: freeze_v3i32:115; GFX6-SDAG: ; %bb.0:116; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)117; GFX6-SDAG-NEXT: s_mov_b32 s6, 0118; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf000119; GFX6-SDAG-NEXT: s_mov_b32 s4, s6120; GFX6-SDAG-NEXT: s_mov_b32 s5, s6121; GFX6-SDAG-NEXT: buffer_load_dword v4, v[0:1], s[4:7], 0 addr64 offset:8122; GFX6-SDAG-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr64123; GFX6-SDAG-NEXT: s_waitcnt vmcnt(1)124; GFX6-SDAG-NEXT: buffer_store_dword v4, v[2:3], s[4:7], 0 addr64 offset:8125; GFX6-SDAG-NEXT: s_waitcnt vmcnt(1)126; GFX6-SDAG-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr64127; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)128; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]129;130; GFX6-GISEL-LABEL: freeze_v3i32:131; GFX6-GISEL: ; %bb.0:132; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)133; GFX6-GISEL-NEXT: s_mov_b32 s6, 0134; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf000135; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 0136; GFX6-GISEL-NEXT: buffer_load_dwordx2 v[4:5], v[0:1], s[4:7], 0 addr64137; GFX6-GISEL-NEXT: buffer_load_dword v0, v[0:1], s[4:7], 0 addr64 offset:8138; GFX6-GISEL-NEXT: s_waitcnt vmcnt(1)139; GFX6-GISEL-NEXT: buffer_store_dwordx2 v[4:5], v[2:3], s[4:7], 0 addr64140; GFX6-GISEL-NEXT: s_waitcnt vmcnt(1)141; GFX6-GISEL-NEXT: buffer_store_dword v0, v[2:3], s[4:7], 0 addr64 offset:8142; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)143; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]144;145; GFX7-SDAG-LABEL: freeze_v3i32:146; GFX7-SDAG: ; %bb.0:147; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)148; GFX7-SDAG-NEXT: s_mov_b32 s6, 0149; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf000150; GFX7-SDAG-NEXT: s_mov_b32 s4, s6151; GFX7-SDAG-NEXT: s_mov_b32 s5, s6152; GFX7-SDAG-NEXT: buffer_load_dwordx3 v[4:6], v[0:1], s[4:7], 0 addr64153; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)154; GFX7-SDAG-NEXT: buffer_store_dwordx3 v[4:6], v[2:3], s[4:7], 0 addr64155; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)156; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]157;158; GFX7-GISEL-LABEL: freeze_v3i32:159; GFX7-GISEL: ; %bb.0:160; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)161; GFX7-GISEL-NEXT: s_mov_b32 s6, 0162; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf000163; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 0164; GFX7-GISEL-NEXT: buffer_load_dwordx3 v[4:6], v[0:1], s[4:7], 0 addr64165; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)166; GFX7-GISEL-NEXT: buffer_store_dwordx3 v[4:6], v[2:3], s[4:7], 0 addr64167; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)168; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]169;170; GFX8-LABEL: freeze_v3i32:171; GFX8: ; %bb.0:172; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)173; GFX8-NEXT: flat_load_dwordx3 v[4:6], v[0:1]174; GFX8-NEXT: s_waitcnt vmcnt(0)175; GFX8-NEXT: flat_store_dwordx3 v[2:3], v[4:6]176; GFX8-NEXT: s_waitcnt vmcnt(0)177; GFX8-NEXT: s_setpc_b64 s[30:31]178;179; GFX9-LABEL: freeze_v3i32:180; GFX9: ; %bb.0:181; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)182; GFX9-NEXT: global_load_dwordx3 v[4:6], v[0:1], off183; GFX9-NEXT: s_waitcnt vmcnt(0)184; GFX9-NEXT: global_store_dwordx3 v[2:3], v[4:6], off185; GFX9-NEXT: s_waitcnt vmcnt(0)186; GFX9-NEXT: s_setpc_b64 s[30:31]187;188; GFX10-LABEL: freeze_v3i32:189; GFX10: ; %bb.0:190; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)191; GFX10-NEXT: global_load_dwordx3 v[4:6], v[0:1], off192; GFX10-NEXT: s_waitcnt vmcnt(0)193; GFX10-NEXT: global_store_dwordx3 v[2:3], v[4:6], off194; GFX10-NEXT: s_setpc_b64 s[30:31]195;196; GFX11-LABEL: freeze_v3i32:197; GFX11: ; %bb.0:198; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)199; GFX11-NEXT: global_load_b96 v[4:6], v[0:1], off200; GFX11-NEXT: s_waitcnt vmcnt(0)201; GFX11-NEXT: global_store_b96 v[2:3], v[4:6], off202; GFX11-NEXT: s_setpc_b64 s[30:31]203 %a = load <3 x i32>, ptr addrspace(1) %ptra, align 4204 %freeze = freeze <3 x i32> %a205 store <3 x i32> %freeze, ptr addrspace(1) %ptrb, align 4206 ret void207}208 209define void @freeze_v4i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {210; GFX6-SDAG-LABEL: freeze_v4i32:211; GFX6-SDAG: ; %bb.0:212; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)213; GFX6-SDAG-NEXT: s_mov_b32 s6, 0214; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf000215; GFX6-SDAG-NEXT: s_mov_b32 s4, s6216; GFX6-SDAG-NEXT: s_mov_b32 s5, s6217; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64218; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0)219; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64220; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)221; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]222;223; GFX6-GISEL-LABEL: freeze_v4i32:224; GFX6-GISEL: ; %bb.0:225; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)226; GFX6-GISEL-NEXT: s_mov_b32 s6, 0227; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf000228; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 0229; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64230; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0)231; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64232; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)233; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]234;235; GFX7-SDAG-LABEL: freeze_v4i32:236; GFX7-SDAG: ; %bb.0:237; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)238; GFX7-SDAG-NEXT: s_mov_b32 s6, 0239; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf000240; GFX7-SDAG-NEXT: s_mov_b32 s4, s6241; GFX7-SDAG-NEXT: s_mov_b32 s5, s6242; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64243; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)244; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64245; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)246; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]247;248; GFX7-GISEL-LABEL: freeze_v4i32:249; GFX7-GISEL: ; %bb.0:250; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)251; GFX7-GISEL-NEXT: s_mov_b32 s6, 0252; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf000253; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 0254; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64255; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)256; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64257; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)258; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]259;260; GFX8-LABEL: freeze_v4i32:261; GFX8: ; %bb.0:262; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)263; GFX8-NEXT: flat_load_dwordx4 v[4:7], v[0:1]264; GFX8-NEXT: s_waitcnt vmcnt(0)265; GFX8-NEXT: flat_store_dwordx4 v[2:3], v[4:7]266; GFX8-NEXT: s_waitcnt vmcnt(0)267; GFX8-NEXT: s_setpc_b64 s[30:31]268;269; GFX9-LABEL: freeze_v4i32:270; GFX9: ; %bb.0:271; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)272; GFX9-NEXT: global_load_dwordx4 v[4:7], v[0:1], off273; GFX9-NEXT: s_waitcnt vmcnt(0)274; GFX9-NEXT: global_store_dwordx4 v[2:3], v[4:7], off275; GFX9-NEXT: s_waitcnt vmcnt(0)276; GFX9-NEXT: s_setpc_b64 s[30:31]277;278; GFX10-LABEL: freeze_v4i32:279; GFX10: ; %bb.0:280; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)281; GFX10-NEXT: global_load_dwordx4 v[4:7], v[0:1], off282; GFX10-NEXT: s_waitcnt vmcnt(0)283; GFX10-NEXT: global_store_dwordx4 v[2:3], v[4:7], off284; GFX10-NEXT: s_setpc_b64 s[30:31]285;286; GFX11-LABEL: freeze_v4i32:287; GFX11: ; %bb.0:288; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)289; GFX11-NEXT: global_load_b128 v[4:7], v[0:1], off290; GFX11-NEXT: s_waitcnt vmcnt(0)291; GFX11-NEXT: global_store_b128 v[2:3], v[4:7], off292; GFX11-NEXT: s_setpc_b64 s[30:31]293 %a = load <4 x i32>, ptr addrspace(1) %ptra, align 4294 %freeze = freeze <4 x i32> %a295 store <4 x i32> %freeze, ptr addrspace(1) %ptrb, align 4296 ret void297}298 299define void @freeze_v5i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {300; GFX6-SDAG-LABEL: freeze_v5i32:301; GFX6-SDAG: ; %bb.0:302; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)303; GFX6-SDAG-NEXT: s_mov_b32 s6, 0304; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf000305; GFX6-SDAG-NEXT: s_mov_b32 s4, s6306; GFX6-SDAG-NEXT: s_mov_b32 s5, s6307; GFX6-SDAG-NEXT: buffer_load_dword v8, v[0:1], s[4:7], 0 addr64 offset:16308; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64309; GFX6-SDAG-NEXT: s_waitcnt vmcnt(1)310; GFX6-SDAG-NEXT: buffer_store_dword v8, v[2:3], s[4:7], 0 addr64 offset:16311; GFX6-SDAG-NEXT: s_waitcnt vmcnt(1)312; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64313; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)314; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]315;316; GFX6-GISEL-LABEL: freeze_v5i32:317; GFX6-GISEL: ; %bb.0:318; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)319; GFX6-GISEL-NEXT: s_mov_b32 s6, 0320; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf000321; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 0322; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64323; GFX6-GISEL-NEXT: buffer_load_dword v0, v[0:1], s[4:7], 0 addr64 offset:16324; GFX6-GISEL-NEXT: s_waitcnt vmcnt(1)325; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64326; GFX6-GISEL-NEXT: s_waitcnt vmcnt(1)327; GFX6-GISEL-NEXT: buffer_store_dword v0, v[2:3], s[4:7], 0 addr64 offset:16328; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)329; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]330;331; GFX7-SDAG-LABEL: freeze_v5i32:332; GFX7-SDAG: ; %bb.0:333; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)334; GFX7-SDAG-NEXT: s_mov_b32 s6, 0335; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf000336; GFX7-SDAG-NEXT: s_mov_b32 s4, s6337; GFX7-SDAG-NEXT: s_mov_b32 s5, s6338; GFX7-SDAG-NEXT: buffer_load_dword v8, v[0:1], s[4:7], 0 addr64 offset:16339; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64340; GFX7-SDAG-NEXT: s_waitcnt vmcnt(1)341; GFX7-SDAG-NEXT: buffer_store_dword v8, v[2:3], s[4:7], 0 addr64 offset:16342; GFX7-SDAG-NEXT: s_waitcnt vmcnt(1)343; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64344; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)345; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]346;347; GFX7-GISEL-LABEL: freeze_v5i32:348; GFX7-GISEL: ; %bb.0:349; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)350; GFX7-GISEL-NEXT: s_mov_b32 s6, 0351; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf000352; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 0353; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64354; GFX7-GISEL-NEXT: buffer_load_dword v0, v[0:1], s[4:7], 0 addr64 offset:16355; GFX7-GISEL-NEXT: s_waitcnt vmcnt(1)356; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64357; GFX7-GISEL-NEXT: s_waitcnt vmcnt(1)358; GFX7-GISEL-NEXT: buffer_store_dword v0, v[2:3], s[4:7], 0 addr64 offset:16359; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)360; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]361;362; GFX8-GISEL-LABEL: freeze_v5i32:363; GFX8-GISEL: ; %bb.0:364; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)365; GFX8-GISEL-NEXT: flat_load_dwordx4 v[4:7], v[0:1]366; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 16, v0367; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v1, vcc368; GFX8-GISEL-NEXT: flat_load_dword v8, v[0:1]369; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 16, v2370; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v3, vcc371; GFX8-GISEL-NEXT: s_waitcnt vmcnt(1)372; GFX8-GISEL-NEXT: flat_store_dwordx4 v[2:3], v[4:7]373; GFX8-GISEL-NEXT: s_waitcnt vmcnt(1)374; GFX8-GISEL-NEXT: flat_store_dword v[0:1], v8375; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)376; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]377;378; GFX9-GISEL-LABEL: freeze_v5i32:379; GFX9-GISEL: ; %bb.0:380; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)381; GFX9-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off382; GFX9-GISEL-NEXT: global_load_dword v8, v[0:1], off offset:16383; GFX9-GISEL-NEXT: s_waitcnt vmcnt(1)384; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off385; GFX9-GISEL-NEXT: s_waitcnt vmcnt(1)386; GFX9-GISEL-NEXT: global_store_dword v[2:3], v8, off offset:16387; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)388; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]389;390; GFX10-SDAG-LABEL: freeze_v5i32:391; GFX10-SDAG: ; %bb.0:392; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)393; GFX10-SDAG-NEXT: s_clause 0x1394; GFX10-SDAG-NEXT: global_load_dword v8, v[0:1], off offset:16395; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off396; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1)397; GFX10-SDAG-NEXT: global_store_dword v[2:3], v8, off offset:16398; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)399; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off400; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]401;402; GFX10-GISEL-LABEL: freeze_v5i32:403; GFX10-GISEL: ; %bb.0:404; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)405; GFX10-GISEL-NEXT: s_clause 0x1406; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off407; GFX10-GISEL-NEXT: global_load_dword v8, v[0:1], off offset:16408; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1)409; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off410; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)411; GFX10-GISEL-NEXT: global_store_dword v[2:3], v8, off offset:16412; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]413;414; GFX11-SDAG-LABEL: freeze_v5i32:415; GFX11-SDAG: ; %bb.0:416; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)417; GFX11-SDAG-NEXT: s_clause 0x1418; GFX11-SDAG-NEXT: global_load_b32 v8, v[0:1], off offset:16419; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off420; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1)421; GFX11-SDAG-NEXT: global_store_b32 v[2:3], v8, off offset:16422; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0)423; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off424; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]425;426; GFX11-GISEL-LABEL: freeze_v5i32:427; GFX11-GISEL: ; %bb.0:428; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)429; GFX11-GISEL-NEXT: s_clause 0x1430; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off431; GFX11-GISEL-NEXT: global_load_b32 v0, v[0:1], off offset:16432; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1)433; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off434; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)435; GFX11-GISEL-NEXT: global_store_b32 v[2:3], v0, off offset:16436; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]437 %a = load <5 x i32>, ptr addrspace(1) %ptra, align 4438 %freeze = freeze <5 x i32> %a439 store <5 x i32> %freeze, ptr addrspace(1) %ptrb, align 4440 ret void441}442 443define void @freeze_v6i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {444; GFX6-SDAG-LABEL: freeze_v6i32:445; GFX6-SDAG: ; %bb.0:446; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)447; GFX6-SDAG-NEXT: s_mov_b32 s6, 0448; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf000449; GFX6-SDAG-NEXT: s_mov_b32 s4, s6450; GFX6-SDAG-NEXT: s_mov_b32 s5, s6451; GFX6-SDAG-NEXT: buffer_load_dwordx2 v[8:9], v[0:1], s[4:7], 0 addr64 offset:16452; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64453; GFX6-SDAG-NEXT: s_waitcnt vmcnt(1)454; GFX6-SDAG-NEXT: buffer_store_dwordx2 v[8:9], v[2:3], s[4:7], 0 addr64 offset:16455; GFX6-SDAG-NEXT: s_waitcnt vmcnt(1)456; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64457; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)458; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]459;460; GFX6-GISEL-LABEL: freeze_v6i32:461; GFX6-GISEL: ; %bb.0:462; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)463; GFX6-GISEL-NEXT: s_mov_b32 s6, 0464; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf000465; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 0466; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64467; GFX6-GISEL-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr64 offset:16468; GFX6-GISEL-NEXT: s_waitcnt vmcnt(1)469; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64470; GFX6-GISEL-NEXT: s_waitcnt vmcnt(1)471; GFX6-GISEL-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr64 offset:16472; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)473; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]474;475; GFX7-SDAG-LABEL: freeze_v6i32:476; GFX7-SDAG: ; %bb.0:477; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)478; GFX7-SDAG-NEXT: s_mov_b32 s6, 0479; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf000480; GFX7-SDAG-NEXT: s_mov_b32 s4, s6481; GFX7-SDAG-NEXT: s_mov_b32 s5, s6482; GFX7-SDAG-NEXT: buffer_load_dwordx2 v[8:9], v[0:1], s[4:7], 0 addr64 offset:16483; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64484; GFX7-SDAG-NEXT: s_waitcnt vmcnt(1)485; GFX7-SDAG-NEXT: buffer_store_dwordx2 v[8:9], v[2:3], s[4:7], 0 addr64 offset:16486; GFX7-SDAG-NEXT: s_waitcnt vmcnt(1)487; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64488; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)489; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]490;491; GFX7-GISEL-LABEL: freeze_v6i32:492; GFX7-GISEL: ; %bb.0:493; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)494; GFX7-GISEL-NEXT: s_mov_b32 s6, 0495; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf000496; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 0497; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64498; GFX7-GISEL-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr64 offset:16499; GFX7-GISEL-NEXT: s_waitcnt vmcnt(1)500; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64501; GFX7-GISEL-NEXT: s_waitcnt vmcnt(1)502; GFX7-GISEL-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr64 offset:16503; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)504; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]505;506; GFX8-GISEL-LABEL: freeze_v6i32:507; GFX8-GISEL: ; %bb.0:508; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)509; GFX8-GISEL-NEXT: flat_load_dwordx4 v[4:7], v[0:1]510; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 16, v0511; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v1, vcc512; GFX8-GISEL-NEXT: flat_load_dwordx2 v[0:1], v[0:1]513; GFX8-GISEL-NEXT: s_waitcnt vmcnt(1)514; GFX8-GISEL-NEXT: flat_store_dwordx4 v[2:3], v[4:7]515; GFX8-GISEL-NEXT: v_add_u32_e32 v2, vcc, 16, v2516; GFX8-GISEL-NEXT: v_addc_u32_e32 v3, vcc, 0, v3, vcc517; GFX8-GISEL-NEXT: s_waitcnt vmcnt(1)518; GFX8-GISEL-NEXT: flat_store_dwordx2 v[2:3], v[0:1]519; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)520; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]521;522; GFX9-GISEL-LABEL: freeze_v6i32:523; GFX9-GISEL: ; %bb.0:524; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)525; GFX9-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off526; GFX9-GISEL-NEXT: global_load_dwordx2 v[8:9], v[0:1], off offset:16527; GFX9-GISEL-NEXT: s_waitcnt vmcnt(1)528; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off529; GFX9-GISEL-NEXT: s_waitcnt vmcnt(1)530; GFX9-GISEL-NEXT: global_store_dwordx2 v[2:3], v[8:9], off offset:16531; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)532; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]533;534; GFX10-SDAG-LABEL: freeze_v6i32:535; GFX10-SDAG: ; %bb.0:536; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)537; GFX10-SDAG-NEXT: s_clause 0x1538; GFX10-SDAG-NEXT: global_load_dwordx2 v[8:9], v[0:1], off offset:16539; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off540; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1)541; GFX10-SDAG-NEXT: global_store_dwordx2 v[2:3], v[8:9], off offset:16542; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)543; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off544; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]545;546; GFX10-GISEL-LABEL: freeze_v6i32:547; GFX10-GISEL: ; %bb.0:548; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)549; GFX10-GISEL-NEXT: s_clause 0x1550; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off551; GFX10-GISEL-NEXT: global_load_dwordx2 v[8:9], v[0:1], off offset:16552; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1)553; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off554; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)555; GFX10-GISEL-NEXT: global_store_dwordx2 v[2:3], v[8:9], off offset:16556; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]557;558; GFX11-SDAG-LABEL: freeze_v6i32:559; GFX11-SDAG: ; %bb.0:560; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)561; GFX11-SDAG-NEXT: s_clause 0x1562; GFX11-SDAG-NEXT: global_load_b64 v[8:9], v[0:1], off offset:16563; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off564; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1)565; GFX11-SDAG-NEXT: global_store_b64 v[2:3], v[8:9], off offset:16566; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0)567; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off568; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]569;570; GFX11-GISEL-LABEL: freeze_v6i32:571; GFX11-GISEL: ; %bb.0:572; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)573; GFX11-GISEL-NEXT: s_clause 0x1574; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off575; GFX11-GISEL-NEXT: global_load_b64 v[0:1], v[0:1], off offset:16576; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1)577; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off578; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)579; GFX11-GISEL-NEXT: global_store_b64 v[2:3], v[0:1], off offset:16580; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]581 %a = load <6 x i32>, ptr addrspace(1) %ptra, align 4582 %freeze = freeze <6 x i32> %a583 store <6 x i32> %freeze, ptr addrspace(1) %ptrb, align 4584 ret void585}586 587define void @freeze_v7i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {588; GFX6-SDAG-LABEL: freeze_v7i32:589; GFX6-SDAG: ; %bb.0:590; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)591; GFX6-SDAG-NEXT: s_mov_b32 s6, 0592; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf000593; GFX6-SDAG-NEXT: s_mov_b32 s4, s6594; GFX6-SDAG-NEXT: s_mov_b32 s5, s6595; GFX6-SDAG-NEXT: buffer_load_dword v10, v[0:1], s[4:7], 0 addr64 offset:24596; GFX6-SDAG-NEXT: buffer_load_dwordx2 v[8:9], v[0:1], s[4:7], 0 addr64 offset:16597; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64598; GFX6-SDAG-NEXT: s_waitcnt vmcnt(2)599; GFX6-SDAG-NEXT: buffer_store_dword v10, v[2:3], s[4:7], 0 addr64 offset:24600; GFX6-SDAG-NEXT: s_waitcnt vmcnt(2)601; GFX6-SDAG-NEXT: buffer_store_dwordx2 v[8:9], v[2:3], s[4:7], 0 addr64 offset:16602; GFX6-SDAG-NEXT: s_waitcnt vmcnt(2)603; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64604; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)605; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]606;607; GFX6-GISEL-LABEL: freeze_v7i32:608; GFX6-GISEL: ; %bb.0:609; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)610; GFX6-GISEL-NEXT: s_mov_b32 s6, 0611; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf000612; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 0613; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64614; GFX6-GISEL-NEXT: buffer_load_dwordx2 v[8:9], v[0:1], s[4:7], 0 addr64 offset:16615; GFX6-GISEL-NEXT: buffer_load_dword v0, v[0:1], s[4:7], 0 addr64 offset:24616; GFX6-GISEL-NEXT: s_waitcnt vmcnt(2)617; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64618; GFX6-GISEL-NEXT: s_waitcnt vmcnt(2)619; GFX6-GISEL-NEXT: buffer_store_dwordx2 v[8:9], v[2:3], s[4:7], 0 addr64 offset:16620; GFX6-GISEL-NEXT: s_waitcnt vmcnt(2)621; GFX6-GISEL-NEXT: buffer_store_dword v0, v[2:3], s[4:7], 0 addr64 offset:24622; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)623; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]624;625; GFX7-SDAG-LABEL: freeze_v7i32:626; GFX7-SDAG: ; %bb.0:627; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)628; GFX7-SDAG-NEXT: s_mov_b32 s6, 0629; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf000630; GFX7-SDAG-NEXT: s_mov_b32 s4, s6631; GFX7-SDAG-NEXT: s_mov_b32 s5, s6632; GFX7-SDAG-NEXT: buffer_load_dwordx3 v[8:10], v[0:1], s[4:7], 0 addr64 offset:16633; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64634; GFX7-SDAG-NEXT: s_waitcnt vmcnt(1)635; GFX7-SDAG-NEXT: buffer_store_dwordx3 v[8:10], v[2:3], s[4:7], 0 addr64 offset:16636; GFX7-SDAG-NEXT: s_waitcnt vmcnt(1)637; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64638; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)639; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]640;641; GFX7-GISEL-LABEL: freeze_v7i32:642; GFX7-GISEL: ; %bb.0:643; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)644; GFX7-GISEL-NEXT: s_mov_b32 s6, 0645; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf000646; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 0647; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64648; GFX7-GISEL-NEXT: buffer_load_dwordx3 v[8:10], v[0:1], s[4:7], 0 addr64 offset:16649; GFX7-GISEL-NEXT: s_waitcnt vmcnt(1)650; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64651; GFX7-GISEL-NEXT: s_waitcnt vmcnt(1)652; GFX7-GISEL-NEXT: buffer_store_dwordx3 v[8:10], v[2:3], s[4:7], 0 addr64 offset:16653; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)654; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]655;656; GFX8-GISEL-LABEL: freeze_v7i32:657; GFX8-GISEL: ; %bb.0:658; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)659; GFX8-GISEL-NEXT: flat_load_dwordx4 v[4:7], v[0:1]660; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 16, v0661; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v1, vcc662; GFX8-GISEL-NEXT: flat_load_dwordx3 v[8:10], v[0:1]663; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 16, v2664; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v3, vcc665; GFX8-GISEL-NEXT: s_waitcnt vmcnt(1)666; GFX8-GISEL-NEXT: flat_store_dwordx4 v[2:3], v[4:7]667; GFX8-GISEL-NEXT: s_waitcnt vmcnt(1)668; GFX8-GISEL-NEXT: flat_store_dwordx3 v[0:1], v[8:10]669; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)670; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]671;672; GFX9-GISEL-LABEL: freeze_v7i32:673; GFX9-GISEL: ; %bb.0:674; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)675; GFX9-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off676; GFX9-GISEL-NEXT: global_load_dwordx3 v[8:10], v[0:1], off offset:16677; GFX9-GISEL-NEXT: s_waitcnt vmcnt(1)678; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off679; GFX9-GISEL-NEXT: s_waitcnt vmcnt(1)680; GFX9-GISEL-NEXT: global_store_dwordx3 v[2:3], v[8:10], off offset:16681; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)682; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]683;684; GFX10-SDAG-LABEL: freeze_v7i32:685; GFX10-SDAG: ; %bb.0:686; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)687; GFX10-SDAG-NEXT: s_clause 0x1688; GFX10-SDAG-NEXT: global_load_dwordx3 v[8:10], v[0:1], off offset:16689; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off690; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1)691; GFX10-SDAG-NEXT: global_store_dwordx3 v[2:3], v[8:10], off offset:16692; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)693; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off694; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]695;696; GFX10-GISEL-LABEL: freeze_v7i32:697; GFX10-GISEL: ; %bb.0:698; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)699; GFX10-GISEL-NEXT: s_clause 0x1700; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off701; GFX10-GISEL-NEXT: global_load_dwordx3 v[8:10], v[0:1], off offset:16702; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1)703; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off704; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)705; GFX10-GISEL-NEXT: global_store_dwordx3 v[2:3], v[8:10], off offset:16706; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]707;708; GFX11-SDAG-LABEL: freeze_v7i32:709; GFX11-SDAG: ; %bb.0:710; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)711; GFX11-SDAG-NEXT: s_clause 0x1712; GFX11-SDAG-NEXT: global_load_b96 v[8:10], v[0:1], off offset:16713; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off714; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1)715; GFX11-SDAG-NEXT: global_store_b96 v[2:3], v[8:10], off offset:16716; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0)717; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off718; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]719;720; GFX11-GISEL-LABEL: freeze_v7i32:721; GFX11-GISEL: ; %bb.0:722; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)723; GFX11-GISEL-NEXT: s_clause 0x1724; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off725; GFX11-GISEL-NEXT: global_load_b96 v[8:10], v[0:1], off offset:16726; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1)727; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off728; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)729; GFX11-GISEL-NEXT: global_store_b96 v[2:3], v[8:10], off offset:16730; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]731 %a = load <7 x i32>, ptr addrspace(1) %ptra, align 4732 %freeze = freeze <7 x i32> %a733 store <7 x i32> %freeze, ptr addrspace(1) %ptrb, align 4734 ret void735}736 737define void @freeze_v8i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {738; GFX6-SDAG-LABEL: freeze_v8i32:739; GFX6-SDAG: ; %bb.0:740; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)741; GFX6-SDAG-NEXT: s_mov_b32 s6, 0742; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf000743; GFX6-SDAG-NEXT: s_mov_b32 s4, s6744; GFX6-SDAG-NEXT: s_mov_b32 s5, s6745; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:16746; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64747; GFX6-SDAG-NEXT: s_waitcnt vmcnt(1)748; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:16749; GFX6-SDAG-NEXT: s_waitcnt vmcnt(1)750; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64751; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)752; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]753;754; GFX6-GISEL-LABEL: freeze_v8i32:755; GFX6-GISEL: ; %bb.0:756; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)757; GFX6-GISEL-NEXT: s_mov_b32 s6, 0758; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf000759; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 0760; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64761; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:16762; GFX6-GISEL-NEXT: s_waitcnt vmcnt(1)763; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64764; GFX6-GISEL-NEXT: s_waitcnt vmcnt(1)765; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:16766; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)767; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]768;769; GFX7-SDAG-LABEL: freeze_v8i32:770; GFX7-SDAG: ; %bb.0:771; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)772; GFX7-SDAG-NEXT: s_mov_b32 s6, 0773; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf000774; GFX7-SDAG-NEXT: s_mov_b32 s4, s6775; GFX7-SDAG-NEXT: s_mov_b32 s5, s6776; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:16777; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64778; GFX7-SDAG-NEXT: s_waitcnt vmcnt(1)779; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:16780; GFX7-SDAG-NEXT: s_waitcnt vmcnt(1)781; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64782; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)783; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]784;785; GFX7-GISEL-LABEL: freeze_v8i32:786; GFX7-GISEL: ; %bb.0:787; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)788; GFX7-GISEL-NEXT: s_mov_b32 s6, 0789; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf000790; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 0791; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64792; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:16793; GFX7-GISEL-NEXT: s_waitcnt vmcnt(1)794; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64795; GFX7-GISEL-NEXT: s_waitcnt vmcnt(1)796; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:16797; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)798; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]799;800; GFX8-GISEL-LABEL: freeze_v8i32:801; GFX8-GISEL: ; %bb.0:802; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)803; GFX8-GISEL-NEXT: flat_load_dwordx4 v[4:7], v[0:1]804; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 16, v0805; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v1, vcc806; GFX8-GISEL-NEXT: flat_load_dwordx4 v[8:11], v[0:1]807; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 16, v2808; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v3, vcc809; GFX8-GISEL-NEXT: s_waitcnt vmcnt(1)810; GFX8-GISEL-NEXT: flat_store_dwordx4 v[2:3], v[4:7]811; GFX8-GISEL-NEXT: s_waitcnt vmcnt(1)812; GFX8-GISEL-NEXT: flat_store_dwordx4 v[0:1], v[8:11]813; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)814; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]815;816; GFX9-GISEL-LABEL: freeze_v8i32:817; GFX9-GISEL: ; %bb.0:818; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)819; GFX9-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off820; GFX9-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:16821; GFX9-GISEL-NEXT: s_waitcnt vmcnt(1)822; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off823; GFX9-GISEL-NEXT: s_waitcnt vmcnt(1)824; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:16825; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)826; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]827;828; GFX10-SDAG-LABEL: freeze_v8i32:829; GFX10-SDAG: ; %bb.0:830; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)831; GFX10-SDAG-NEXT: s_clause 0x1832; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off offset:16833; GFX10-SDAG-NEXT: global_load_dwordx4 v[8:11], v[0:1], off834; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1)835; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off offset:16836; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)837; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[8:11], off838; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]839;840; GFX10-GISEL-LABEL: freeze_v8i32:841; GFX10-GISEL: ; %bb.0:842; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)843; GFX10-GISEL-NEXT: s_clause 0x1844; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off845; GFX10-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:16846; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1)847; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off848; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)849; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:16850; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]851;852; GFX11-SDAG-LABEL: freeze_v8i32:853; GFX11-SDAG: ; %bb.0:854; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)855; GFX11-SDAG-NEXT: s_clause 0x1856; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off offset:16857; GFX11-SDAG-NEXT: global_load_b128 v[8:11], v[0:1], off858; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1)859; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off offset:16860; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0)861; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[8:11], off862; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]863;864; GFX11-GISEL-LABEL: freeze_v8i32:865; GFX11-GISEL: ; %bb.0:866; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)867; GFX11-GISEL-NEXT: s_clause 0x1868; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off869; GFX11-GISEL-NEXT: global_load_b128 v[8:11], v[0:1], off offset:16870; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1)871; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off872; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)873; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[8:11], off offset:16874; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]875 %a = load <8 x i32>, ptr addrspace(1) %ptra, align 4876 %freeze = freeze <8 x i32> %a877 store <8 x i32> %freeze, ptr addrspace(1) %ptrb, align 4878 ret void879}880 881define void @freeze_v9i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {882; GFX6-SDAG-LABEL: freeze_v9i32:883; GFX6-SDAG: ; %bb.0:884; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)885; GFX6-SDAG-NEXT: s_mov_b32 s6, 0886; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf000887; GFX6-SDAG-NEXT: s_mov_b32 s4, s6888; GFX6-SDAG-NEXT: s_mov_b32 s5, s6889; GFX6-SDAG-NEXT: buffer_load_dword v12, v[0:1], s[4:7], 0 addr64 offset:32890; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64891; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:16892; GFX6-SDAG-NEXT: s_waitcnt vmcnt(2)893; GFX6-SDAG-NEXT: buffer_store_dword v12, v[2:3], s[4:7], 0 addr64 offset:32894; GFX6-SDAG-NEXT: s_waitcnt vmcnt(2)895; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64896; GFX6-SDAG-NEXT: s_waitcnt vmcnt(2)897; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:16898; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)899; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]900;901; GFX6-GISEL-LABEL: freeze_v9i32:902; GFX6-GISEL: ; %bb.0:903; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)904; GFX6-GISEL-NEXT: s_mov_b32 s6, 0905; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf000906; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 0907; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64908; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:16909; GFX6-GISEL-NEXT: buffer_load_dword v0, v[0:1], s[4:7], 0 addr64 offset:32910; GFX6-GISEL-NEXT: s_waitcnt vmcnt(2)911; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64912; GFX6-GISEL-NEXT: s_waitcnt vmcnt(2)913; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:16914; GFX6-GISEL-NEXT: s_waitcnt vmcnt(2)915; GFX6-GISEL-NEXT: buffer_store_dword v0, v[2:3], s[4:7], 0 addr64 offset:32916; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)917; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]918;919; GFX7-SDAG-LABEL: freeze_v9i32:920; GFX7-SDAG: ; %bb.0:921; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)922; GFX7-SDAG-NEXT: s_mov_b32 s6, 0923; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf000924; GFX7-SDAG-NEXT: s_mov_b32 s4, s6925; GFX7-SDAG-NEXT: s_mov_b32 s5, s6926; GFX7-SDAG-NEXT: buffer_load_dword v12, v[0:1], s[4:7], 0 addr64 offset:32927; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64928; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:16929; GFX7-SDAG-NEXT: s_waitcnt vmcnt(2)930; GFX7-SDAG-NEXT: buffer_store_dword v12, v[2:3], s[4:7], 0 addr64 offset:32931; GFX7-SDAG-NEXT: s_waitcnt vmcnt(2)932; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64933; GFX7-SDAG-NEXT: s_waitcnt vmcnt(2)934; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:16935; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)936; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]937;938; GFX7-GISEL-LABEL: freeze_v9i32:939; GFX7-GISEL: ; %bb.0:940; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)941; GFX7-GISEL-NEXT: s_mov_b32 s6, 0942; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf000943; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 0944; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64945; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:16946; GFX7-GISEL-NEXT: buffer_load_dword v0, v[0:1], s[4:7], 0 addr64 offset:32947; GFX7-GISEL-NEXT: s_waitcnt vmcnt(2)948; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64949; GFX7-GISEL-NEXT: s_waitcnt vmcnt(2)950; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:16951; GFX7-GISEL-NEXT: s_waitcnt vmcnt(2)952; GFX7-GISEL-NEXT: buffer_store_dword v0, v[2:3], s[4:7], 0 addr64 offset:32953; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)954; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]955;956; GFX8-GISEL-LABEL: freeze_v9i32:957; GFX8-GISEL: ; %bb.0:958; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)959; GFX8-GISEL-NEXT: v_add_u32_e32 v8, vcc, 16, v0960; GFX8-GISEL-NEXT: v_addc_u32_e32 v9, vcc, 0, v1, vcc961; GFX8-GISEL-NEXT: flat_load_dwordx4 v[4:7], v[0:1]962; GFX8-GISEL-NEXT: flat_load_dwordx4 v[8:11], v[8:9]963; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 32, v0964; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v1, vcc965; GFX8-GISEL-NEXT: flat_load_dword v14, v[0:1]966; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 16, v2967; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v3, vcc968; GFX8-GISEL-NEXT: v_add_u32_e32 v12, vcc, 32, v2969; GFX8-GISEL-NEXT: v_addc_u32_e32 v13, vcc, 0, v3, vcc970; GFX8-GISEL-NEXT: s_waitcnt vmcnt(2)971; GFX8-GISEL-NEXT: flat_store_dwordx4 v[2:3], v[4:7]972; GFX8-GISEL-NEXT: s_waitcnt vmcnt(2)973; GFX8-GISEL-NEXT: flat_store_dwordx4 v[0:1], v[8:11]974; GFX8-GISEL-NEXT: s_waitcnt vmcnt(2)975; GFX8-GISEL-NEXT: flat_store_dword v[12:13], v14976; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)977; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]978;979; GFX9-GISEL-LABEL: freeze_v9i32:980; GFX9-GISEL: ; %bb.0:981; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)982; GFX9-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off983; GFX9-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:16984; GFX9-GISEL-NEXT: global_load_dword v12, v[0:1], off offset:32985; GFX9-GISEL-NEXT: s_waitcnt vmcnt(2)986; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off987; GFX9-GISEL-NEXT: s_waitcnt vmcnt(2)988; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:16989; GFX9-GISEL-NEXT: s_waitcnt vmcnt(2)990; GFX9-GISEL-NEXT: global_store_dword v[2:3], v12, off offset:32991; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)992; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]993;994; GFX10-SDAG-LABEL: freeze_v9i32:995; GFX10-SDAG: ; %bb.0:996; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)997; GFX10-SDAG-NEXT: s_clause 0x2998; GFX10-SDAG-NEXT: global_load_dword v12, v[0:1], off offset:32999; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off1000; GFX10-SDAG-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:161001; GFX10-SDAG-NEXT: s_waitcnt vmcnt(2)1002; GFX10-SDAG-NEXT: global_store_dword v[2:3], v12, off offset:321003; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1)1004; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off1005; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)1006; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:161007; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]1008;1009; GFX10-GISEL-LABEL: freeze_v9i32:1010; GFX10-GISEL: ; %bb.0:1011; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1012; GFX10-GISEL-NEXT: s_clause 0x21013; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off1014; GFX10-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:161015; GFX10-GISEL-NEXT: global_load_dword v12, v[0:1], off offset:321016; GFX10-GISEL-NEXT: s_waitcnt vmcnt(2)1017; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off1018; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1)1019; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:161020; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)1021; GFX10-GISEL-NEXT: global_store_dword v[2:3], v12, off offset:321022; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]1023;1024; GFX11-SDAG-LABEL: freeze_v9i32:1025; GFX11-SDAG: ; %bb.0:1026; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1027; GFX11-SDAG-NEXT: s_clause 0x21028; GFX11-SDAG-NEXT: global_load_b32 v12, v[0:1], off offset:321029; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off1030; GFX11-SDAG-NEXT: global_load_b128 v[8:11], v[0:1], off offset:161031; GFX11-SDAG-NEXT: s_waitcnt vmcnt(2)1032; GFX11-SDAG-NEXT: global_store_b32 v[2:3], v12, off offset:321033; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1)1034; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off1035; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0)1036; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[8:11], off offset:161037; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]1038;1039; GFX11-GISEL-LABEL: freeze_v9i32:1040; GFX11-GISEL: ; %bb.0:1041; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1042; GFX11-GISEL-NEXT: s_clause 0x21043; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off1044; GFX11-GISEL-NEXT: global_load_b128 v[8:11], v[0:1], off offset:161045; GFX11-GISEL-NEXT: global_load_b32 v0, v[0:1], off offset:321046; GFX11-GISEL-NEXT: s_waitcnt vmcnt(2)1047; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off1048; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1)1049; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[8:11], off offset:161050; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)1051; GFX11-GISEL-NEXT: global_store_b32 v[2:3], v0, off offset:321052; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]1053 %a = load <9 x i32>, ptr addrspace(1) %ptra, align 41054 %freeze = freeze <9 x i32> %a1055 store <9 x i32> %freeze, ptr addrspace(1) %ptrb, align 41056 ret void1057}1058 1059define void @freeze_v10i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {1060; GFX6-SDAG-LABEL: freeze_v10i32:1061; GFX6-SDAG: ; %bb.0:1062; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1063; GFX6-SDAG-NEXT: s_mov_b32 s6, 01064; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0001065; GFX6-SDAG-NEXT: s_mov_b32 s4, s61066; GFX6-SDAG-NEXT: s_mov_b32 s5, s61067; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr641068; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:161069; GFX6-SDAG-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr64 offset:321070; GFX6-SDAG-NEXT: s_waitcnt vmcnt(2)1071; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr641072; GFX6-SDAG-NEXT: s_waitcnt vmcnt(2)1073; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:161074; GFX6-SDAG-NEXT: s_waitcnt vmcnt(2)1075; GFX6-SDAG-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr64 offset:321076; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)1077; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]1078;1079; GFX6-GISEL-LABEL: freeze_v10i32:1080; GFX6-GISEL: ; %bb.0:1081; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1082; GFX6-GISEL-NEXT: s_mov_b32 s6, 01083; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0001084; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 01085; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr641086; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:161087; GFX6-GISEL-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr64 offset:321088; GFX6-GISEL-NEXT: s_waitcnt vmcnt(2)1089; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr641090; GFX6-GISEL-NEXT: s_waitcnt vmcnt(2)1091; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:161092; GFX6-GISEL-NEXT: s_waitcnt vmcnt(2)1093; GFX6-GISEL-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr64 offset:321094; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)1095; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]1096;1097; GFX7-SDAG-LABEL: freeze_v10i32:1098; GFX7-SDAG: ; %bb.0:1099; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1100; GFX7-SDAG-NEXT: s_mov_b32 s6, 01101; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0001102; GFX7-SDAG-NEXT: s_mov_b32 s4, s61103; GFX7-SDAG-NEXT: s_mov_b32 s5, s61104; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr641105; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:161106; GFX7-SDAG-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr64 offset:321107; GFX7-SDAG-NEXT: s_waitcnt vmcnt(2)1108; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr641109; GFX7-SDAG-NEXT: s_waitcnt vmcnt(2)1110; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:161111; GFX7-SDAG-NEXT: s_waitcnt vmcnt(2)1112; GFX7-SDAG-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr64 offset:321113; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)1114; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]1115;1116; GFX7-GISEL-LABEL: freeze_v10i32:1117; GFX7-GISEL: ; %bb.0:1118; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1119; GFX7-GISEL-NEXT: s_mov_b32 s6, 01120; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0001121; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 01122; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr641123; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:161124; GFX7-GISEL-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr64 offset:321125; GFX7-GISEL-NEXT: s_waitcnt vmcnt(2)1126; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr641127; GFX7-GISEL-NEXT: s_waitcnt vmcnt(2)1128; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:161129; GFX7-GISEL-NEXT: s_waitcnt vmcnt(2)1130; GFX7-GISEL-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr64 offset:321131; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)1132; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]1133;1134; GFX8-GISEL-LABEL: freeze_v10i32:1135; GFX8-GISEL: ; %bb.0:1136; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1137; GFX8-GISEL-NEXT: v_add_u32_e32 v8, vcc, 16, v01138; GFX8-GISEL-NEXT: v_addc_u32_e32 v9, vcc, 0, v1, vcc1139; GFX8-GISEL-NEXT: flat_load_dwordx4 v[4:7], v[0:1]1140; GFX8-GISEL-NEXT: flat_load_dwordx4 v[8:11], v[8:9]1141; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 32, v01142; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v1, vcc1143; GFX8-GISEL-NEXT: flat_load_dwordx2 v[0:1], v[0:1]1144; GFX8-GISEL-NEXT: v_add_u32_e32 v12, vcc, 16, v21145; GFX8-GISEL-NEXT: v_addc_u32_e32 v13, vcc, 0, v3, vcc1146; GFX8-GISEL-NEXT: v_add_u32_e32 v14, vcc, 32, v21147; GFX8-GISEL-NEXT: v_addc_u32_e32 v15, vcc, 0, v3, vcc1148; GFX8-GISEL-NEXT: s_waitcnt vmcnt(2)1149; GFX8-GISEL-NEXT: flat_store_dwordx4 v[2:3], v[4:7]1150; GFX8-GISEL-NEXT: s_waitcnt vmcnt(2)1151; GFX8-GISEL-NEXT: flat_store_dwordx4 v[12:13], v[8:11]1152; GFX8-GISEL-NEXT: s_waitcnt vmcnt(2)1153; GFX8-GISEL-NEXT: flat_store_dwordx2 v[14:15], v[0:1]1154; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)1155; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]1156;1157; GFX9-LABEL: freeze_v10i32:1158; GFX9: ; %bb.0:1159; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1160; GFX9-NEXT: global_load_dwordx4 v[4:7], v[0:1], off1161; GFX9-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:161162; GFX9-NEXT: global_load_dwordx2 v[12:13], v[0:1], off offset:321163; GFX9-NEXT: s_waitcnt vmcnt(2)1164; GFX9-NEXT: global_store_dwordx4 v[2:3], v[4:7], off1165; GFX9-NEXT: s_waitcnt vmcnt(2)1166; GFX9-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:161167; GFX9-NEXT: s_waitcnt vmcnt(2)1168; GFX9-NEXT: global_store_dwordx2 v[2:3], v[12:13], off offset:321169; GFX9-NEXT: s_waitcnt vmcnt(0)1170; GFX9-NEXT: s_setpc_b64 s[30:31]1171;1172; GFX10-LABEL: freeze_v10i32:1173; GFX10: ; %bb.0:1174; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1175; GFX10-NEXT: s_clause 0x21176; GFX10-NEXT: global_load_dwordx4 v[4:7], v[0:1], off1177; GFX10-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:161178; GFX10-NEXT: global_load_dwordx2 v[12:13], v[0:1], off offset:321179; GFX10-NEXT: s_waitcnt vmcnt(2)1180; GFX10-NEXT: global_store_dwordx4 v[2:3], v[4:7], off1181; GFX10-NEXT: s_waitcnt vmcnt(1)1182; GFX10-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:161183; GFX10-NEXT: s_waitcnt vmcnt(0)1184; GFX10-NEXT: global_store_dwordx2 v[2:3], v[12:13], off offset:321185; GFX10-NEXT: s_setpc_b64 s[30:31]1186;1187; GFX11-LABEL: freeze_v10i32:1188; GFX11: ; %bb.0:1189; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1190; GFX11-NEXT: s_clause 0x21191; GFX11-NEXT: global_load_b128 v[4:7], v[0:1], off1192; GFX11-NEXT: global_load_b128 v[8:11], v[0:1], off offset:161193; GFX11-NEXT: global_load_b64 v[0:1], v[0:1], off offset:321194; GFX11-NEXT: s_waitcnt vmcnt(2)1195; GFX11-NEXT: global_store_b128 v[2:3], v[4:7], off1196; GFX11-NEXT: s_waitcnt vmcnt(1)1197; GFX11-NEXT: global_store_b128 v[2:3], v[8:11], off offset:161198; GFX11-NEXT: s_waitcnt vmcnt(0)1199; GFX11-NEXT: global_store_b64 v[2:3], v[0:1], off offset:321200; GFX11-NEXT: s_setpc_b64 s[30:31]1201 %a = load <10 x i32>, ptr addrspace(1) %ptra, align 41202 %freeze = freeze <10 x i32> %a1203 store <10 x i32> %freeze, ptr addrspace(1) %ptrb, align 41204 ret void1205}1206 1207define void @freeze_v11i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {1208; GFX6-SDAG-LABEL: freeze_v11i32:1209; GFX6-SDAG: ; %bb.0:1210; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1211; GFX6-SDAG-NEXT: s_mov_b32 s6, 01212; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0001213; GFX6-SDAG-NEXT: s_mov_b32 s4, s61214; GFX6-SDAG-NEXT: s_mov_b32 s5, s61215; GFX6-SDAG-NEXT: buffer_load_dword v14, v[0:1], s[4:7], 0 addr64 offset:401216; GFX6-SDAG-NEXT: buffer_load_dwordx2 v[12:13], v[0:1], s[4:7], 0 addr64 offset:321217; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr641218; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:161219; GFX6-SDAG-NEXT: s_waitcnt vmcnt(3)1220; GFX6-SDAG-NEXT: buffer_store_dword v14, v[2:3], s[4:7], 0 addr64 offset:401221; GFX6-SDAG-NEXT: s_waitcnt vmcnt(3)1222; GFX6-SDAG-NEXT: buffer_store_dwordx2 v[12:13], v[2:3], s[4:7], 0 addr64 offset:321223; GFX6-SDAG-NEXT: s_waitcnt vmcnt(3)1224; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr641225; GFX6-SDAG-NEXT: s_waitcnt vmcnt(3)1226; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:161227; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)1228; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]1229;1230; GFX6-GISEL-LABEL: freeze_v11i32:1231; GFX6-GISEL: ; %bb.0:1232; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1233; GFX6-GISEL-NEXT: s_mov_b32 s6, 01234; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0001235; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 01236; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr641237; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:161238; GFX6-GISEL-NEXT: buffer_load_dwordx2 v[12:13], v[0:1], s[4:7], 0 addr64 offset:321239; GFX6-GISEL-NEXT: buffer_load_dword v0, v[0:1], s[4:7], 0 addr64 offset:401240; GFX6-GISEL-NEXT: s_waitcnt vmcnt(3)1241; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr641242; GFX6-GISEL-NEXT: s_waitcnt vmcnt(3)1243; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:161244; GFX6-GISEL-NEXT: s_waitcnt vmcnt(3)1245; GFX6-GISEL-NEXT: buffer_store_dwordx2 v[12:13], v[2:3], s[4:7], 0 addr64 offset:321246; GFX6-GISEL-NEXT: s_waitcnt vmcnt(3)1247; GFX6-GISEL-NEXT: buffer_store_dword v0, v[2:3], s[4:7], 0 addr64 offset:401248; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)1249; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]1250;1251; GFX7-SDAG-LABEL: freeze_v11i32:1252; GFX7-SDAG: ; %bb.0:1253; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1254; GFX7-SDAG-NEXT: s_mov_b32 s6, 01255; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0001256; GFX7-SDAG-NEXT: s_mov_b32 s4, s61257; GFX7-SDAG-NEXT: s_mov_b32 s5, s61258; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr641259; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:161260; GFX7-SDAG-NEXT: buffer_load_dwordx3 v[12:14], v[0:1], s[4:7], 0 addr64 offset:321261; GFX7-SDAG-NEXT: s_waitcnt vmcnt(2)1262; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr641263; GFX7-SDAG-NEXT: s_waitcnt vmcnt(2)1264; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:161265; GFX7-SDAG-NEXT: s_waitcnt vmcnt(2)1266; GFX7-SDAG-NEXT: buffer_store_dwordx3 v[12:14], v[2:3], s[4:7], 0 addr64 offset:321267; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)1268; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]1269;1270; GFX7-GISEL-LABEL: freeze_v11i32:1271; GFX7-GISEL: ; %bb.0:1272; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1273; GFX7-GISEL-NEXT: s_mov_b32 s6, 01274; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0001275; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 01276; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr641277; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:161278; GFX7-GISEL-NEXT: buffer_load_dwordx3 v[12:14], v[0:1], s[4:7], 0 addr64 offset:321279; GFX7-GISEL-NEXT: s_waitcnt vmcnt(2)1280; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr641281; GFX7-GISEL-NEXT: s_waitcnt vmcnt(2)1282; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:161283; GFX7-GISEL-NEXT: s_waitcnt vmcnt(2)1284; GFX7-GISEL-NEXT: buffer_store_dwordx3 v[12:14], v[2:3], s[4:7], 0 addr64 offset:321285; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)1286; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]1287;1288; GFX8-GISEL-LABEL: freeze_v11i32:1289; GFX8-GISEL: ; %bb.0:1290; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1291; GFX8-GISEL-NEXT: v_add_u32_e32 v8, vcc, 16, v01292; GFX8-GISEL-NEXT: v_addc_u32_e32 v9, vcc, 0, v1, vcc1293; GFX8-GISEL-NEXT: flat_load_dwordx4 v[4:7], v[0:1]1294; GFX8-GISEL-NEXT: flat_load_dwordx4 v[8:11], v[8:9]1295; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 32, v01296; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v1, vcc1297; GFX8-GISEL-NEXT: flat_load_dwordx3 v[12:14], v[0:1]1298; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 16, v21299; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v3, vcc1300; GFX8-GISEL-NEXT: v_add_u32_e32 v15, vcc, 32, v21301; GFX8-GISEL-NEXT: v_addc_u32_e32 v16, vcc, 0, v3, vcc1302; GFX8-GISEL-NEXT: s_waitcnt vmcnt(2)1303; GFX8-GISEL-NEXT: flat_store_dwordx4 v[2:3], v[4:7]1304; GFX8-GISEL-NEXT: s_waitcnt vmcnt(2)1305; GFX8-GISEL-NEXT: flat_store_dwordx4 v[0:1], v[8:11]1306; GFX8-GISEL-NEXT: s_waitcnt vmcnt(2)1307; GFX8-GISEL-NEXT: flat_store_dwordx3 v[15:16], v[12:14]1308; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)1309; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]1310;1311; GFX9-LABEL: freeze_v11i32:1312; GFX9: ; %bb.0:1313; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1314; GFX9-NEXT: global_load_dwordx4 v[4:7], v[0:1], off1315; GFX9-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:161316; GFX9-NEXT: global_load_dwordx3 v[12:14], v[0:1], off offset:321317; GFX9-NEXT: s_waitcnt vmcnt(2)1318; GFX9-NEXT: global_store_dwordx4 v[2:3], v[4:7], off1319; GFX9-NEXT: s_waitcnt vmcnt(2)1320; GFX9-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:161321; GFX9-NEXT: s_waitcnt vmcnt(2)1322; GFX9-NEXT: global_store_dwordx3 v[2:3], v[12:14], off offset:321323; GFX9-NEXT: s_waitcnt vmcnt(0)1324; GFX9-NEXT: s_setpc_b64 s[30:31]1325;1326; GFX10-LABEL: freeze_v11i32:1327; GFX10: ; %bb.0:1328; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1329; GFX10-NEXT: s_clause 0x21330; GFX10-NEXT: global_load_dwordx4 v[4:7], v[0:1], off1331; GFX10-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:161332; GFX10-NEXT: global_load_dwordx3 v[12:14], v[0:1], off offset:321333; GFX10-NEXT: s_waitcnt vmcnt(2)1334; GFX10-NEXT: global_store_dwordx4 v[2:3], v[4:7], off1335; GFX10-NEXT: s_waitcnt vmcnt(1)1336; GFX10-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:161337; GFX10-NEXT: s_waitcnt vmcnt(0)1338; GFX10-NEXT: global_store_dwordx3 v[2:3], v[12:14], off offset:321339; GFX10-NEXT: s_setpc_b64 s[30:31]1340;1341; GFX11-LABEL: freeze_v11i32:1342; GFX11: ; %bb.0:1343; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1344; GFX11-NEXT: s_clause 0x21345; GFX11-NEXT: global_load_b128 v[4:7], v[0:1], off1346; GFX11-NEXT: global_load_b128 v[8:11], v[0:1], off offset:161347; GFX11-NEXT: global_load_b96 v[12:14], v[0:1], off offset:321348; GFX11-NEXT: s_waitcnt vmcnt(2)1349; GFX11-NEXT: global_store_b128 v[2:3], v[4:7], off1350; GFX11-NEXT: s_waitcnt vmcnt(1)1351; GFX11-NEXT: global_store_b128 v[2:3], v[8:11], off offset:161352; GFX11-NEXT: s_waitcnt vmcnt(0)1353; GFX11-NEXT: global_store_b96 v[2:3], v[12:14], off offset:321354; GFX11-NEXT: s_setpc_b64 s[30:31]1355 %a = load <11 x i32>, ptr addrspace(1) %ptra, align 41356 %freeze = freeze <11 x i32> %a1357 store <11 x i32> %freeze, ptr addrspace(1) %ptrb, align 41358 ret void1359}1360 1361define void @freeze_v12i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {1362; GFX6-SDAG-LABEL: freeze_v12i32:1363; GFX6-SDAG: ; %bb.0:1364; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1365; GFX6-SDAG-NEXT: s_mov_b32 s6, 01366; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0001367; GFX6-SDAG-NEXT: s_mov_b32 s4, s61368; GFX6-SDAG-NEXT: s_mov_b32 s5, s61369; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr641370; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:161371; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:321372; GFX6-SDAG-NEXT: s_waitcnt vmcnt(2)1373; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr641374; GFX6-SDAG-NEXT: s_waitcnt vmcnt(2)1375; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:161376; GFX6-SDAG-NEXT: s_waitcnt vmcnt(2)1377; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:321378; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)1379; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]1380;1381; GFX6-GISEL-LABEL: freeze_v12i32:1382; GFX6-GISEL: ; %bb.0:1383; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1384; GFX6-GISEL-NEXT: s_mov_b32 s6, 01385; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0001386; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 01387; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr641388; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:161389; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:321390; GFX6-GISEL-NEXT: s_waitcnt vmcnt(2)1391; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr641392; GFX6-GISEL-NEXT: s_waitcnt vmcnt(2)1393; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:161394; GFX6-GISEL-NEXT: s_waitcnt vmcnt(2)1395; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:321396; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)1397; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]1398;1399; GFX7-SDAG-LABEL: freeze_v12i32:1400; GFX7-SDAG: ; %bb.0:1401; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1402; GFX7-SDAG-NEXT: s_mov_b32 s6, 01403; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0001404; GFX7-SDAG-NEXT: s_mov_b32 s4, s61405; GFX7-SDAG-NEXT: s_mov_b32 s5, s61406; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr641407; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:161408; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:321409; GFX7-SDAG-NEXT: s_waitcnt vmcnt(2)1410; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr641411; GFX7-SDAG-NEXT: s_waitcnt vmcnt(2)1412; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:161413; GFX7-SDAG-NEXT: s_waitcnt vmcnt(2)1414; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:321415; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)1416; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]1417;1418; GFX7-GISEL-LABEL: freeze_v12i32:1419; GFX7-GISEL: ; %bb.0:1420; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1421; GFX7-GISEL-NEXT: s_mov_b32 s6, 01422; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0001423; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 01424; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr641425; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:161426; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:321427; GFX7-GISEL-NEXT: s_waitcnt vmcnt(2)1428; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr641429; GFX7-GISEL-NEXT: s_waitcnt vmcnt(2)1430; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:161431; GFX7-GISEL-NEXT: s_waitcnt vmcnt(2)1432; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:321433; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)1434; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]1435;1436; GFX8-GISEL-LABEL: freeze_v12i32:1437; GFX8-GISEL: ; %bb.0:1438; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1439; GFX8-GISEL-NEXT: v_add_u32_e32 v8, vcc, 16, v01440; GFX8-GISEL-NEXT: v_addc_u32_e32 v9, vcc, 0, v1, vcc1441; GFX8-GISEL-NEXT: flat_load_dwordx4 v[4:7], v[0:1]1442; GFX8-GISEL-NEXT: flat_load_dwordx4 v[8:11], v[8:9]1443; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 32, v01444; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v1, vcc1445; GFX8-GISEL-NEXT: flat_load_dwordx4 v[12:15], v[0:1]1446; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 16, v21447; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v3, vcc1448; GFX8-GISEL-NEXT: v_add_u32_e32 v16, vcc, 32, v21449; GFX8-GISEL-NEXT: v_addc_u32_e32 v17, vcc, 0, v3, vcc1450; GFX8-GISEL-NEXT: s_waitcnt vmcnt(2)1451; GFX8-GISEL-NEXT: flat_store_dwordx4 v[2:3], v[4:7]1452; GFX8-GISEL-NEXT: s_waitcnt vmcnt(2)1453; GFX8-GISEL-NEXT: flat_store_dwordx4 v[0:1], v[8:11]1454; GFX8-GISEL-NEXT: s_waitcnt vmcnt(2)1455; GFX8-GISEL-NEXT: flat_store_dwordx4 v[16:17], v[12:15]1456; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)1457; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]1458;1459; GFX9-LABEL: freeze_v12i32:1460; GFX9: ; %bb.0:1461; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1462; GFX9-NEXT: global_load_dwordx4 v[4:7], v[0:1], off1463; GFX9-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:161464; GFX9-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:321465; GFX9-NEXT: s_waitcnt vmcnt(2)1466; GFX9-NEXT: global_store_dwordx4 v[2:3], v[4:7], off1467; GFX9-NEXT: s_waitcnt vmcnt(2)1468; GFX9-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:161469; GFX9-NEXT: s_waitcnt vmcnt(2)1470; GFX9-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:321471; GFX9-NEXT: s_waitcnt vmcnt(0)1472; GFX9-NEXT: s_setpc_b64 s[30:31]1473;1474; GFX10-LABEL: freeze_v12i32:1475; GFX10: ; %bb.0:1476; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1477; GFX10-NEXT: s_clause 0x21478; GFX10-NEXT: global_load_dwordx4 v[4:7], v[0:1], off1479; GFX10-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:161480; GFX10-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:321481; GFX10-NEXT: s_waitcnt vmcnt(2)1482; GFX10-NEXT: global_store_dwordx4 v[2:3], v[4:7], off1483; GFX10-NEXT: s_waitcnt vmcnt(1)1484; GFX10-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:161485; GFX10-NEXT: s_waitcnt vmcnt(0)1486; GFX10-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:321487; GFX10-NEXT: s_setpc_b64 s[30:31]1488;1489; GFX11-LABEL: freeze_v12i32:1490; GFX11: ; %bb.0:1491; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1492; GFX11-NEXT: s_clause 0x21493; GFX11-NEXT: global_load_b128 v[4:7], v[0:1], off1494; GFX11-NEXT: global_load_b128 v[8:11], v[0:1], off offset:161495; GFX11-NEXT: global_load_b128 v[12:15], v[0:1], off offset:321496; GFX11-NEXT: s_waitcnt vmcnt(2)1497; GFX11-NEXT: global_store_b128 v[2:3], v[4:7], off1498; GFX11-NEXT: s_waitcnt vmcnt(1)1499; GFX11-NEXT: global_store_b128 v[2:3], v[8:11], off offset:161500; GFX11-NEXT: s_waitcnt vmcnt(0)1501; GFX11-NEXT: global_store_b128 v[2:3], v[12:15], off offset:321502; GFX11-NEXT: s_setpc_b64 s[30:31]1503 %a = load <12 x i32>, ptr addrspace(1) %ptra, align 41504 %freeze = freeze <12 x i32> %a1505 store <12 x i32> %freeze, ptr addrspace(1) %ptrb, align 41506 ret void1507}1508define void @freeze_v13i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {1509; GFX6-SDAG-LABEL: freeze_v13i32:1510; GFX6-SDAG: ; %bb.0:1511; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1512; GFX6-SDAG-NEXT: s_mov_b32 s6, 01513; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0001514; GFX6-SDAG-NEXT: s_mov_b32 s4, s61515; GFX6-SDAG-NEXT: s_mov_b32 s5, s61516; GFX6-SDAG-NEXT: buffer_load_dword v16, v[0:1], s[4:7], 0 addr64 offset:481517; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:321518; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr641519; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:161520; GFX6-SDAG-NEXT: s_waitcnt vmcnt(3)1521; GFX6-SDAG-NEXT: buffer_store_dword v16, v[2:3], s[4:7], 0 addr64 offset:481522; GFX6-SDAG-NEXT: s_waitcnt vmcnt(3)1523; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:321524; GFX6-SDAG-NEXT: s_waitcnt vmcnt(3)1525; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr641526; GFX6-SDAG-NEXT: s_waitcnt vmcnt(3)1527; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:161528; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)1529; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]1530;1531; GFX6-GISEL-LABEL: freeze_v13i32:1532; GFX6-GISEL: ; %bb.0:1533; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1534; GFX6-GISEL-NEXT: s_mov_b32 s6, 01535; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0001536; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 01537; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr641538; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:161539; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:321540; GFX6-GISEL-NEXT: buffer_load_dword v0, v[0:1], s[4:7], 0 addr64 offset:481541; GFX6-GISEL-NEXT: s_waitcnt vmcnt(3)1542; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr641543; GFX6-GISEL-NEXT: s_waitcnt vmcnt(3)1544; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:161545; GFX6-GISEL-NEXT: s_waitcnt vmcnt(3)1546; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:321547; GFX6-GISEL-NEXT: s_waitcnt vmcnt(3)1548; GFX6-GISEL-NEXT: buffer_store_dword v0, v[2:3], s[4:7], 0 addr64 offset:481549; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)1550; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]1551;1552; GFX7-SDAG-LABEL: freeze_v13i32:1553; GFX7-SDAG: ; %bb.0:1554; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1555; GFX7-SDAG-NEXT: s_mov_b32 s6, 01556; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0001557; GFX7-SDAG-NEXT: s_mov_b32 s4, s61558; GFX7-SDAG-NEXT: s_mov_b32 s5, s61559; GFX7-SDAG-NEXT: buffer_load_dword v16, v[0:1], s[4:7], 0 addr64 offset:481560; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:321561; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr641562; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:161563; GFX7-SDAG-NEXT: s_waitcnt vmcnt(3)1564; GFX7-SDAG-NEXT: buffer_store_dword v16, v[2:3], s[4:7], 0 addr64 offset:481565; GFX7-SDAG-NEXT: s_waitcnt vmcnt(3)1566; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:321567; GFX7-SDAG-NEXT: s_waitcnt vmcnt(3)1568; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr641569; GFX7-SDAG-NEXT: s_waitcnt vmcnt(3)1570; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:161571; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)1572; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]1573;1574; GFX7-GISEL-LABEL: freeze_v13i32:1575; GFX7-GISEL: ; %bb.0:1576; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1577; GFX7-GISEL-NEXT: s_mov_b32 s6, 01578; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0001579; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 01580; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr641581; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:161582; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:321583; GFX7-GISEL-NEXT: buffer_load_dword v0, v[0:1], s[4:7], 0 addr64 offset:481584; GFX7-GISEL-NEXT: s_waitcnt vmcnt(3)1585; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr641586; GFX7-GISEL-NEXT: s_waitcnt vmcnt(3)1587; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:161588; GFX7-GISEL-NEXT: s_waitcnt vmcnt(3)1589; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:321590; GFX7-GISEL-NEXT: s_waitcnt vmcnt(3)1591; GFX7-GISEL-NEXT: buffer_store_dword v0, v[2:3], s[4:7], 0 addr64 offset:481592; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)1593; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]1594;1595; GFX8-GISEL-LABEL: freeze_v13i32:1596; GFX8-GISEL: ; %bb.0:1597; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1598; GFX8-GISEL-NEXT: v_add_u32_e32 v8, vcc, 16, v01599; GFX8-GISEL-NEXT: v_addc_u32_e32 v9, vcc, 0, v1, vcc1600; GFX8-GISEL-NEXT: v_add_u32_e32 v12, vcc, 32, v01601; GFX8-GISEL-NEXT: flat_load_dwordx4 v[4:7], v[0:1]1602; GFX8-GISEL-NEXT: flat_load_dwordx4 v[8:11], v[8:9]1603; GFX8-GISEL-NEXT: v_addc_u32_e32 v13, vcc, 0, v1, vcc1604; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 48, v01605; GFX8-GISEL-NEXT: flat_load_dwordx4 v[12:15], v[12:13]1606; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v1, vcc1607; GFX8-GISEL-NEXT: flat_load_dword v18, v[0:1]1608; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 16, v21609; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v3, vcc1610; GFX8-GISEL-NEXT: v_add_u32_e32 v16, vcc, 32, v21611; GFX8-GISEL-NEXT: v_addc_u32_e32 v17, vcc, 0, v3, vcc1612; GFX8-GISEL-NEXT: s_waitcnt vmcnt(3)1613; GFX8-GISEL-NEXT: flat_store_dwordx4 v[2:3], v[4:7]1614; GFX8-GISEL-NEXT: v_add_u32_e32 v2, vcc, 48, v21615; GFX8-GISEL-NEXT: v_addc_u32_e32 v3, vcc, 0, v3, vcc1616; GFX8-GISEL-NEXT: s_waitcnt vmcnt(3)1617; GFX8-GISEL-NEXT: flat_store_dwordx4 v[0:1], v[8:11]1618; GFX8-GISEL-NEXT: s_waitcnt vmcnt(3)1619; GFX8-GISEL-NEXT: flat_store_dwordx4 v[16:17], v[12:15]1620; GFX8-GISEL-NEXT: s_waitcnt vmcnt(3)1621; GFX8-GISEL-NEXT: flat_store_dword v[2:3], v181622; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)1623; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]1624;1625; GFX9-GISEL-LABEL: freeze_v13i32:1626; GFX9-GISEL: ; %bb.0:1627; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1628; GFX9-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off1629; GFX9-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:161630; GFX9-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:321631; GFX9-GISEL-NEXT: global_load_dword v16, v[0:1], off offset:481632; GFX9-GISEL-NEXT: s_waitcnt vmcnt(3)1633; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off1634; GFX9-GISEL-NEXT: s_waitcnt vmcnt(3)1635; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:161636; GFX9-GISEL-NEXT: s_waitcnt vmcnt(3)1637; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:321638; GFX9-GISEL-NEXT: s_waitcnt vmcnt(3)1639; GFX9-GISEL-NEXT: global_store_dword v[2:3], v16, off offset:481640; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)1641; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]1642;1643; GFX10-SDAG-LABEL: freeze_v13i32:1644; GFX10-SDAG: ; %bb.0:1645; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1646; GFX10-SDAG-NEXT: s_clause 0x31647; GFX10-SDAG-NEXT: global_load_dword v16, v[0:1], off offset:481648; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off offset:321649; GFX10-SDAG-NEXT: global_load_dwordx4 v[8:11], v[0:1], off1650; GFX10-SDAG-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:161651; GFX10-SDAG-NEXT: s_waitcnt vmcnt(3)1652; GFX10-SDAG-NEXT: global_store_dword v[2:3], v16, off offset:481653; GFX10-SDAG-NEXT: s_waitcnt vmcnt(2)1654; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off offset:321655; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1)1656; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[8:11], off1657; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)1658; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:161659; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]1660;1661; GFX10-GISEL-LABEL: freeze_v13i32:1662; GFX10-GISEL: ; %bb.0:1663; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1664; GFX10-GISEL-NEXT: s_clause 0x31665; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off1666; GFX10-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:161667; GFX10-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:321668; GFX10-GISEL-NEXT: global_load_dword v16, v[0:1], off offset:481669; GFX10-GISEL-NEXT: s_waitcnt vmcnt(3)1670; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off1671; GFX10-GISEL-NEXT: s_waitcnt vmcnt(2)1672; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:161673; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1)1674; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:321675; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)1676; GFX10-GISEL-NEXT: global_store_dword v[2:3], v16, off offset:481677; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]1678;1679; GFX11-SDAG-LABEL: freeze_v13i32:1680; GFX11-SDAG: ; %bb.0:1681; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1682; GFX11-SDAG-NEXT: s_clause 0x31683; GFX11-SDAG-NEXT: global_load_b32 v16, v[0:1], off offset:481684; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off offset:321685; GFX11-SDAG-NEXT: global_load_b128 v[8:11], v[0:1], off1686; GFX11-SDAG-NEXT: global_load_b128 v[12:15], v[0:1], off offset:161687; GFX11-SDAG-NEXT: s_waitcnt vmcnt(3)1688; GFX11-SDAG-NEXT: global_store_b32 v[2:3], v16, off offset:481689; GFX11-SDAG-NEXT: s_waitcnt vmcnt(2)1690; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off offset:321691; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1)1692; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[8:11], off1693; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0)1694; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[12:15], off offset:161695; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]1696;1697; GFX11-GISEL-LABEL: freeze_v13i32:1698; GFX11-GISEL: ; %bb.0:1699; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1700; GFX11-GISEL-NEXT: s_clause 0x31701; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off1702; GFX11-GISEL-NEXT: global_load_b128 v[8:11], v[0:1], off offset:161703; GFX11-GISEL-NEXT: global_load_b128 v[12:15], v[0:1], off offset:321704; GFX11-GISEL-NEXT: global_load_b32 v0, v[0:1], off offset:481705; GFX11-GISEL-NEXT: s_waitcnt vmcnt(3)1706; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off1707; GFX11-GISEL-NEXT: s_waitcnt vmcnt(2)1708; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[8:11], off offset:161709; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1)1710; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[12:15], off offset:321711; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)1712; GFX11-GISEL-NEXT: global_store_b32 v[2:3], v0, off offset:481713; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]1714 %a = load <13 x i32>, ptr addrspace(1) %ptra, align 41715 %freeze = freeze <13 x i32> %a1716 store <13 x i32> %freeze, ptr addrspace(1) %ptrb, align 41717 ret void1718}1719 1720define void @freeze_v14i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {1721; GFX6-SDAG-LABEL: freeze_v14i32:1722; GFX6-SDAG: ; %bb.0:1723; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1724; GFX6-SDAG-NEXT: s_mov_b32 s6, 01725; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0001726; GFX6-SDAG-NEXT: s_mov_b32 s4, s61727; GFX6-SDAG-NEXT: s_mov_b32 s5, s61728; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:321729; GFX6-SDAG-NEXT: buffer_load_dwordx2 v[16:17], v[0:1], s[4:7], 0 addr64 offset:481730; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr641731; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:161732; GFX6-SDAG-NEXT: s_waitcnt vmcnt(3)1733; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:321734; GFX6-SDAG-NEXT: s_waitcnt vmcnt(3)1735; GFX6-SDAG-NEXT: buffer_store_dwordx2 v[16:17], v[2:3], s[4:7], 0 addr64 offset:481736; GFX6-SDAG-NEXT: s_waitcnt vmcnt(3)1737; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr641738; GFX6-SDAG-NEXT: s_waitcnt vmcnt(3)1739; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:161740; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)1741; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]1742;1743; GFX6-GISEL-LABEL: freeze_v14i32:1744; GFX6-GISEL: ; %bb.0:1745; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1746; GFX6-GISEL-NEXT: s_mov_b32 s6, 01747; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0001748; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 01749; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr641750; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:161751; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:321752; GFX6-GISEL-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr64 offset:481753; GFX6-GISEL-NEXT: s_waitcnt vmcnt(3)1754; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr641755; GFX6-GISEL-NEXT: s_waitcnt vmcnt(3)1756; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:161757; GFX6-GISEL-NEXT: s_waitcnt vmcnt(3)1758; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:321759; GFX6-GISEL-NEXT: s_waitcnt vmcnt(3)1760; GFX6-GISEL-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr64 offset:481761; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)1762; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]1763;1764; GFX7-SDAG-LABEL: freeze_v14i32:1765; GFX7-SDAG: ; %bb.0:1766; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1767; GFX7-SDAG-NEXT: s_mov_b32 s6, 01768; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0001769; GFX7-SDAG-NEXT: s_mov_b32 s4, s61770; GFX7-SDAG-NEXT: s_mov_b32 s5, s61771; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:321772; GFX7-SDAG-NEXT: buffer_load_dwordx2 v[16:17], v[0:1], s[4:7], 0 addr64 offset:481773; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr641774; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:161775; GFX7-SDAG-NEXT: s_waitcnt vmcnt(3)1776; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:321777; GFX7-SDAG-NEXT: s_waitcnt vmcnt(3)1778; GFX7-SDAG-NEXT: buffer_store_dwordx2 v[16:17], v[2:3], s[4:7], 0 addr64 offset:481779; GFX7-SDAG-NEXT: s_waitcnt vmcnt(3)1780; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr641781; GFX7-SDAG-NEXT: s_waitcnt vmcnt(3)1782; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:161783; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)1784; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]1785;1786; GFX7-GISEL-LABEL: freeze_v14i32:1787; GFX7-GISEL: ; %bb.0:1788; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1789; GFX7-GISEL-NEXT: s_mov_b32 s6, 01790; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0001791; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 01792; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr641793; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:161794; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:321795; GFX7-GISEL-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr64 offset:481796; GFX7-GISEL-NEXT: s_waitcnt vmcnt(3)1797; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr641798; GFX7-GISEL-NEXT: s_waitcnt vmcnt(3)1799; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:161800; GFX7-GISEL-NEXT: s_waitcnt vmcnt(3)1801; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:321802; GFX7-GISEL-NEXT: s_waitcnt vmcnt(3)1803; GFX7-GISEL-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr64 offset:481804; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)1805; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]1806;1807; GFX8-GISEL-LABEL: freeze_v14i32:1808; GFX8-GISEL: ; %bb.0:1809; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1810; GFX8-GISEL-NEXT: v_add_u32_e32 v8, vcc, 16, v01811; GFX8-GISEL-NEXT: v_addc_u32_e32 v9, vcc, 0, v1, vcc1812; GFX8-GISEL-NEXT: v_add_u32_e32 v12, vcc, 32, v01813; GFX8-GISEL-NEXT: flat_load_dwordx4 v[4:7], v[0:1]1814; GFX8-GISEL-NEXT: flat_load_dwordx4 v[8:11], v[8:9]1815; GFX8-GISEL-NEXT: v_addc_u32_e32 v13, vcc, 0, v1, vcc1816; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 48, v01817; GFX8-GISEL-NEXT: flat_load_dwordx4 v[12:15], v[12:13]1818; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v1, vcc1819; GFX8-GISEL-NEXT: flat_load_dwordx2 v[0:1], v[0:1]1820; GFX8-GISEL-NEXT: v_add_u32_e32 v16, vcc, 16, v21821; GFX8-GISEL-NEXT: v_addc_u32_e32 v17, vcc, 0, v3, vcc1822; GFX8-GISEL-NEXT: v_add_u32_e32 v18, vcc, 32, v21823; GFX8-GISEL-NEXT: v_addc_u32_e32 v19, vcc, 0, v3, vcc1824; GFX8-GISEL-NEXT: s_waitcnt vmcnt(3)1825; GFX8-GISEL-NEXT: flat_store_dwordx4 v[2:3], v[4:7]1826; GFX8-GISEL-NEXT: v_add_u32_e32 v2, vcc, 48, v21827; GFX8-GISEL-NEXT: v_addc_u32_e32 v3, vcc, 0, v3, vcc1828; GFX8-GISEL-NEXT: s_waitcnt vmcnt(3)1829; GFX8-GISEL-NEXT: flat_store_dwordx4 v[16:17], v[8:11]1830; GFX8-GISEL-NEXT: s_waitcnt vmcnt(3)1831; GFX8-GISEL-NEXT: flat_store_dwordx4 v[18:19], v[12:15]1832; GFX8-GISEL-NEXT: s_waitcnt vmcnt(3)1833; GFX8-GISEL-NEXT: flat_store_dwordx2 v[2:3], v[0:1]1834; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)1835; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]1836;1837; GFX9-GISEL-LABEL: freeze_v14i32:1838; GFX9-GISEL: ; %bb.0:1839; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1840; GFX9-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off1841; GFX9-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:161842; GFX9-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:321843; GFX9-GISEL-NEXT: global_load_dwordx2 v[16:17], v[0:1], off offset:481844; GFX9-GISEL-NEXT: s_waitcnt vmcnt(3)1845; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off1846; GFX9-GISEL-NEXT: s_waitcnt vmcnt(3)1847; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:161848; GFX9-GISEL-NEXT: s_waitcnt vmcnt(3)1849; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:321850; GFX9-GISEL-NEXT: s_waitcnt vmcnt(3)1851; GFX9-GISEL-NEXT: global_store_dwordx2 v[2:3], v[16:17], off offset:481852; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)1853; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]1854;1855; GFX10-SDAG-LABEL: freeze_v14i32:1856; GFX10-SDAG: ; %bb.0:1857; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1858; GFX10-SDAG-NEXT: s_clause 0x31859; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off offset:321860; GFX10-SDAG-NEXT: global_load_dwordx2 v[16:17], v[0:1], off offset:481861; GFX10-SDAG-NEXT: global_load_dwordx4 v[8:11], v[0:1], off1862; GFX10-SDAG-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:161863; GFX10-SDAG-NEXT: s_waitcnt vmcnt(3)1864; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off offset:321865; GFX10-SDAG-NEXT: s_waitcnt vmcnt(2)1866; GFX10-SDAG-NEXT: global_store_dwordx2 v[2:3], v[16:17], off offset:481867; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1)1868; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[8:11], off1869; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)1870; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:161871; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]1872;1873; GFX10-GISEL-LABEL: freeze_v14i32:1874; GFX10-GISEL: ; %bb.0:1875; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1876; GFX10-GISEL-NEXT: s_clause 0x31877; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off1878; GFX10-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:161879; GFX10-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:321880; GFX10-GISEL-NEXT: global_load_dwordx2 v[16:17], v[0:1], off offset:481881; GFX10-GISEL-NEXT: s_waitcnt vmcnt(3)1882; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off1883; GFX10-GISEL-NEXT: s_waitcnt vmcnt(2)1884; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:161885; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1)1886; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:321887; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)1888; GFX10-GISEL-NEXT: global_store_dwordx2 v[2:3], v[16:17], off offset:481889; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]1890;1891; GFX11-SDAG-LABEL: freeze_v14i32:1892; GFX11-SDAG: ; %bb.0:1893; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1894; GFX11-SDAG-NEXT: s_clause 0x31895; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off offset:321896; GFX11-SDAG-NEXT: global_load_b64 v[16:17], v[0:1], off offset:481897; GFX11-SDAG-NEXT: global_load_b128 v[8:11], v[0:1], off1898; GFX11-SDAG-NEXT: global_load_b128 v[12:15], v[0:1], off offset:161899; GFX11-SDAG-NEXT: s_waitcnt vmcnt(3)1900; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off offset:321901; GFX11-SDAG-NEXT: s_waitcnt vmcnt(2)1902; GFX11-SDAG-NEXT: global_store_b64 v[2:3], v[16:17], off offset:481903; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1)1904; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[8:11], off1905; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0)1906; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[12:15], off offset:161907; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]1908;1909; GFX11-GISEL-LABEL: freeze_v14i32:1910; GFX11-GISEL: ; %bb.0:1911; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1912; GFX11-GISEL-NEXT: s_clause 0x31913; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off1914; GFX11-GISEL-NEXT: global_load_b128 v[8:11], v[0:1], off offset:161915; GFX11-GISEL-NEXT: global_load_b128 v[12:15], v[0:1], off offset:321916; GFX11-GISEL-NEXT: global_load_b64 v[0:1], v[0:1], off offset:481917; GFX11-GISEL-NEXT: s_waitcnt vmcnt(3)1918; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off1919; GFX11-GISEL-NEXT: s_waitcnt vmcnt(2)1920; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[8:11], off offset:161921; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1)1922; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[12:15], off offset:321923; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)1924; GFX11-GISEL-NEXT: global_store_b64 v[2:3], v[0:1], off offset:481925; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]1926 %a = load <14 x i32>, ptr addrspace(1) %ptra, align 41927 %freeze = freeze <14 x i32> %a1928 store <14 x i32> %freeze, ptr addrspace(1) %ptrb, align 41929 ret void1930}1931 1932define void @freeze_v15i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {1933; GFX6-SDAG-LABEL: freeze_v15i32:1934; GFX6-SDAG: ; %bb.0:1935; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1936; GFX6-SDAG-NEXT: s_mov_b32 s6, 01937; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0001938; GFX6-SDAG-NEXT: s_mov_b32 s4, s61939; GFX6-SDAG-NEXT: s_mov_b32 s5, s61940; GFX6-SDAG-NEXT: buffer_load_dword v18, v[0:1], s[4:7], 0 addr64 offset:561941; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:321942; GFX6-SDAG-NEXT: buffer_load_dwordx2 v[16:17], v[0:1], s[4:7], 0 addr64 offset:481943; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr641944; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:161945; GFX6-SDAG-NEXT: s_waitcnt vmcnt(4)1946; GFX6-SDAG-NEXT: buffer_store_dword v18, v[2:3], s[4:7], 0 addr64 offset:561947; GFX6-SDAG-NEXT: s_waitcnt vmcnt(4)1948; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:321949; GFX6-SDAG-NEXT: s_waitcnt vmcnt(4)1950; GFX6-SDAG-NEXT: buffer_store_dwordx2 v[16:17], v[2:3], s[4:7], 0 addr64 offset:481951; GFX6-SDAG-NEXT: s_waitcnt vmcnt(4)1952; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr641953; GFX6-SDAG-NEXT: s_waitcnt vmcnt(4)1954; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:161955; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)1956; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]1957;1958; GFX6-GISEL-LABEL: freeze_v15i32:1959; GFX6-GISEL: ; %bb.0:1960; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1961; GFX6-GISEL-NEXT: s_mov_b32 s6, 01962; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0001963; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 01964; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr641965; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:161966; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:321967; GFX6-GISEL-NEXT: buffer_load_dwordx2 v[16:17], v[0:1], s[4:7], 0 addr64 offset:481968; GFX6-GISEL-NEXT: buffer_load_dword v0, v[0:1], s[4:7], 0 addr64 offset:561969; GFX6-GISEL-NEXT: s_waitcnt vmcnt(4)1970; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr641971; GFX6-GISEL-NEXT: s_waitcnt vmcnt(4)1972; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:161973; GFX6-GISEL-NEXT: s_waitcnt vmcnt(4)1974; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:321975; GFX6-GISEL-NEXT: s_waitcnt vmcnt(4)1976; GFX6-GISEL-NEXT: buffer_store_dwordx2 v[16:17], v[2:3], s[4:7], 0 addr64 offset:481977; GFX6-GISEL-NEXT: s_waitcnt vmcnt(4)1978; GFX6-GISEL-NEXT: buffer_store_dword v0, v[2:3], s[4:7], 0 addr64 offset:561979; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)1980; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]1981;1982; GFX7-SDAG-LABEL: freeze_v15i32:1983; GFX7-SDAG: ; %bb.0:1984; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1985; GFX7-SDAG-NEXT: s_mov_b32 s6, 01986; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0001987; GFX7-SDAG-NEXT: s_mov_b32 s4, s61988; GFX7-SDAG-NEXT: s_mov_b32 s5, s61989; GFX7-SDAG-NEXT: buffer_load_dword v18, v[0:1], s[4:7], 0 addr64 offset:561990; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:321991; GFX7-SDAG-NEXT: buffer_load_dwordx2 v[16:17], v[0:1], s[4:7], 0 addr64 offset:481992; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr641993; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:161994; GFX7-SDAG-NEXT: s_waitcnt vmcnt(4)1995; GFX7-SDAG-NEXT: buffer_store_dword v18, v[2:3], s[4:7], 0 addr64 offset:561996; GFX7-SDAG-NEXT: s_waitcnt vmcnt(4)1997; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:321998; GFX7-SDAG-NEXT: s_waitcnt vmcnt(4)1999; GFX7-SDAG-NEXT: buffer_store_dwordx2 v[16:17], v[2:3], s[4:7], 0 addr64 offset:482000; GFX7-SDAG-NEXT: s_waitcnt vmcnt(4)2001; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr642002; GFX7-SDAG-NEXT: s_waitcnt vmcnt(4)2003; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:162004; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)2005; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]2006;2007; GFX7-GISEL-LABEL: freeze_v15i32:2008; GFX7-GISEL: ; %bb.0:2009; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2010; GFX7-GISEL-NEXT: s_mov_b32 s6, 02011; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0002012; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 02013; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr642014; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:162015; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:322016; GFX7-GISEL-NEXT: buffer_load_dwordx3 v[16:18], v[0:1], s[4:7], 0 addr64 offset:482017; GFX7-GISEL-NEXT: s_waitcnt vmcnt(3)2018; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr642019; GFX7-GISEL-NEXT: s_waitcnt vmcnt(3)2020; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:162021; GFX7-GISEL-NEXT: s_waitcnt vmcnt(3)2022; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:322023; GFX7-GISEL-NEXT: s_waitcnt vmcnt(3)2024; GFX7-GISEL-NEXT: buffer_store_dwordx3 v[16:18], v[2:3], s[4:7], 0 addr64 offset:482025; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)2026; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]2027;2028; GFX8-GISEL-LABEL: freeze_v15i32:2029; GFX8-GISEL: ; %bb.0:2030; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2031; GFX8-GISEL-NEXT: v_add_u32_e32 v8, vcc, 16, v02032; GFX8-GISEL-NEXT: flat_load_dwordx4 v[4:7], v[0:1]2033; GFX8-GISEL-NEXT: v_addc_u32_e32 v9, vcc, 0, v1, vcc2034; GFX8-GISEL-NEXT: v_add_u32_e32 v12, vcc, 32, v02035; GFX8-GISEL-NEXT: v_addc_u32_e32 v13, vcc, 0, v1, vcc2036; GFX8-GISEL-NEXT: flat_load_dwordx4 v[8:11], v[8:9]2037; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 48, v02038; GFX8-GISEL-NEXT: flat_load_dwordx4 v[12:15], v[12:13]2039; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v1, vcc2040; GFX8-GISEL-NEXT: flat_load_dwordx3 v[16:18], v[0:1]2041; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 16, v22042; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v3, vcc2043; GFX8-GISEL-NEXT: s_waitcnt vmcnt(3)2044; GFX8-GISEL-NEXT: flat_store_dwordx4 v[2:3], v[4:7]2045; GFX8-GISEL-NEXT: s_nop 02046; GFX8-GISEL-NEXT: v_add_u32_e32 v4, vcc, 32, v22047; GFX8-GISEL-NEXT: v_addc_u32_e32 v5, vcc, 0, v3, vcc2048; GFX8-GISEL-NEXT: v_add_u32_e32 v2, vcc, 48, v22049; GFX8-GISEL-NEXT: v_addc_u32_e32 v3, vcc, 0, v3, vcc2050; GFX8-GISEL-NEXT: s_waitcnt vmcnt(3)2051; GFX8-GISEL-NEXT: flat_store_dwordx4 v[0:1], v[8:11]2052; GFX8-GISEL-NEXT: s_waitcnt vmcnt(3)2053; GFX8-GISEL-NEXT: flat_store_dwordx4 v[4:5], v[12:15]2054; GFX8-GISEL-NEXT: s_waitcnt vmcnt(3)2055; GFX8-GISEL-NEXT: flat_store_dwordx3 v[2:3], v[16:18]2056; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)2057; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]2058;2059; GFX9-GISEL-LABEL: freeze_v15i32:2060; GFX9-GISEL: ; %bb.0:2061; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2062; GFX9-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off2063; GFX9-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:162064; GFX9-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:322065; GFX9-GISEL-NEXT: global_load_dwordx3 v[16:18], v[0:1], off offset:482066; GFX9-GISEL-NEXT: s_waitcnt vmcnt(3)2067; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off2068; GFX9-GISEL-NEXT: s_waitcnt vmcnt(3)2069; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:162070; GFX9-GISEL-NEXT: s_waitcnt vmcnt(3)2071; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:322072; GFX9-GISEL-NEXT: s_waitcnt vmcnt(3)2073; GFX9-GISEL-NEXT: global_store_dwordx3 v[2:3], v[16:18], off offset:482074; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)2075; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]2076;2077; GFX10-SDAG-LABEL: freeze_v15i32:2078; GFX10-SDAG: ; %bb.0:2079; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2080; GFX10-SDAG-NEXT: s_clause 0x32081; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off offset:322082; GFX10-SDAG-NEXT: global_load_dwordx3 v[16:18], v[0:1], off offset:482083; GFX10-SDAG-NEXT: global_load_dwordx4 v[8:11], v[0:1], off2084; GFX10-SDAG-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:162085; GFX10-SDAG-NEXT: s_waitcnt vmcnt(3)2086; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off offset:322087; GFX10-SDAG-NEXT: s_waitcnt vmcnt(2)2088; GFX10-SDAG-NEXT: global_store_dwordx3 v[2:3], v[16:18], off offset:482089; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1)2090; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[8:11], off2091; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)2092; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:162093; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]2094;2095; GFX10-GISEL-LABEL: freeze_v15i32:2096; GFX10-GISEL: ; %bb.0:2097; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2098; GFX10-GISEL-NEXT: s_clause 0x32099; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off2100; GFX10-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:162101; GFX10-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:322102; GFX10-GISEL-NEXT: global_load_dwordx3 v[16:18], v[0:1], off offset:482103; GFX10-GISEL-NEXT: s_waitcnt vmcnt(3)2104; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off2105; GFX10-GISEL-NEXT: s_waitcnt vmcnt(2)2106; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:162107; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1)2108; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:322109; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)2110; GFX10-GISEL-NEXT: global_store_dwordx3 v[2:3], v[16:18], off offset:482111; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]2112;2113; GFX11-SDAG-LABEL: freeze_v15i32:2114; GFX11-SDAG: ; %bb.0:2115; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2116; GFX11-SDAG-NEXT: s_clause 0x32117; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off offset:322118; GFX11-SDAG-NEXT: global_load_b96 v[16:18], v[0:1], off offset:482119; GFX11-SDAG-NEXT: global_load_b128 v[8:11], v[0:1], off2120; GFX11-SDAG-NEXT: global_load_b128 v[12:15], v[0:1], off offset:162121; GFX11-SDAG-NEXT: s_waitcnt vmcnt(3)2122; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off offset:322123; GFX11-SDAG-NEXT: s_waitcnt vmcnt(2)2124; GFX11-SDAG-NEXT: global_store_b96 v[2:3], v[16:18], off offset:482125; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1)2126; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[8:11], off2127; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0)2128; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[12:15], off offset:162129; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]2130;2131; GFX11-GISEL-LABEL: freeze_v15i32:2132; GFX11-GISEL: ; %bb.0:2133; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2134; GFX11-GISEL-NEXT: s_clause 0x32135; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off2136; GFX11-GISEL-NEXT: global_load_b128 v[8:11], v[0:1], off offset:162137; GFX11-GISEL-NEXT: global_load_b128 v[12:15], v[0:1], off offset:322138; GFX11-GISEL-NEXT: global_load_b96 v[16:18], v[0:1], off offset:482139; GFX11-GISEL-NEXT: s_waitcnt vmcnt(3)2140; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off2141; GFX11-GISEL-NEXT: s_waitcnt vmcnt(2)2142; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[8:11], off offset:162143; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1)2144; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[12:15], off offset:322145; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)2146; GFX11-GISEL-NEXT: global_store_b96 v[2:3], v[16:18], off offset:482147; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]2148 %a = load <15 x i32>, ptr addrspace(1) %ptra, align 42149 %freeze = freeze <15 x i32> %a2150 store <15 x i32> %freeze, ptr addrspace(1) %ptrb, align 42151 ret void2152}2153 2154define void @freeze_v16i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {2155; GFX6-SDAG-LABEL: freeze_v16i32:2156; GFX6-SDAG: ; %bb.0:2157; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2158; GFX6-SDAG-NEXT: s_mov_b32 s6, 02159; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0002160; GFX6-SDAG-NEXT: s_mov_b32 s4, s62161; GFX6-SDAG-NEXT: s_mov_b32 s5, s62162; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:322163; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:482164; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr642165; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:162166; GFX6-SDAG-NEXT: s_waitcnt vmcnt(3)2167; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:322168; GFX6-SDAG-NEXT: s_waitcnt vmcnt(3)2169; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:482170; GFX6-SDAG-NEXT: s_waitcnt vmcnt(3)2171; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr642172; GFX6-SDAG-NEXT: s_waitcnt vmcnt(3)2173; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:162174; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)2175; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]2176;2177; GFX6-GISEL-LABEL: freeze_v16i32:2178; GFX6-GISEL: ; %bb.0:2179; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2180; GFX6-GISEL-NEXT: s_mov_b32 s6, 02181; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0002182; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 02183; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr642184; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:162185; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:322186; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:482187; GFX6-GISEL-NEXT: s_waitcnt vmcnt(3)2188; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr642189; GFX6-GISEL-NEXT: s_waitcnt vmcnt(3)2190; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:162191; GFX6-GISEL-NEXT: s_waitcnt vmcnt(3)2192; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:322193; GFX6-GISEL-NEXT: s_waitcnt vmcnt(3)2194; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:482195; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)2196; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]2197;2198; GFX7-SDAG-LABEL: freeze_v16i32:2199; GFX7-SDAG: ; %bb.0:2200; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2201; GFX7-SDAG-NEXT: s_mov_b32 s6, 02202; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0002203; GFX7-SDAG-NEXT: s_mov_b32 s4, s62204; GFX7-SDAG-NEXT: s_mov_b32 s5, s62205; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:322206; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:482207; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr642208; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:162209; GFX7-SDAG-NEXT: s_waitcnt vmcnt(3)2210; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:322211; GFX7-SDAG-NEXT: s_waitcnt vmcnt(3)2212; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:482213; GFX7-SDAG-NEXT: s_waitcnt vmcnt(3)2214; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr642215; GFX7-SDAG-NEXT: s_waitcnt vmcnt(3)2216; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:162217; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)2218; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]2219;2220; GFX7-GISEL-LABEL: freeze_v16i32:2221; GFX7-GISEL: ; %bb.0:2222; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2223; GFX7-GISEL-NEXT: s_mov_b32 s6, 02224; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0002225; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 02226; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr642227; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:162228; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:322229; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:482230; GFX7-GISEL-NEXT: s_waitcnt vmcnt(3)2231; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr642232; GFX7-GISEL-NEXT: s_waitcnt vmcnt(3)2233; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:162234; GFX7-GISEL-NEXT: s_waitcnt vmcnt(3)2235; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:322236; GFX7-GISEL-NEXT: s_waitcnt vmcnt(3)2237; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:482238; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)2239; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]2240;2241; GFX8-GISEL-LABEL: freeze_v16i32:2242; GFX8-GISEL: ; %bb.0:2243; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2244; GFX8-GISEL-NEXT: v_add_u32_e32 v8, vcc, 16, v02245; GFX8-GISEL-NEXT: v_addc_u32_e32 v9, vcc, 0, v1, vcc2246; GFX8-GISEL-NEXT: v_add_u32_e32 v12, vcc, 32, v02247; GFX8-GISEL-NEXT: flat_load_dwordx4 v[4:7], v[0:1]2248; GFX8-GISEL-NEXT: flat_load_dwordx4 v[8:11], v[8:9]2249; GFX8-GISEL-NEXT: v_addc_u32_e32 v13, vcc, 0, v1, vcc2250; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 48, v02251; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v1, vcc2252; GFX8-GISEL-NEXT: flat_load_dwordx4 v[12:15], v[12:13]2253; GFX8-GISEL-NEXT: flat_load_dwordx4 v[16:19], v[0:1]2254; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 16, v22255; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v3, vcc2256; GFX8-GISEL-NEXT: s_waitcnt vmcnt(3)2257; GFX8-GISEL-NEXT: flat_store_dwordx4 v[2:3], v[4:7]2258; GFX8-GISEL-NEXT: s_nop 02259; GFX8-GISEL-NEXT: v_add_u32_e32 v4, vcc, 32, v22260; GFX8-GISEL-NEXT: v_addc_u32_e32 v5, vcc, 0, v3, vcc2261; GFX8-GISEL-NEXT: v_add_u32_e32 v2, vcc, 48, v22262; GFX8-GISEL-NEXT: v_addc_u32_e32 v3, vcc, 0, v3, vcc2263; GFX8-GISEL-NEXT: s_waitcnt vmcnt(3)2264; GFX8-GISEL-NEXT: flat_store_dwordx4 v[0:1], v[8:11]2265; GFX8-GISEL-NEXT: s_waitcnt vmcnt(3)2266; GFX8-GISEL-NEXT: flat_store_dwordx4 v[4:5], v[12:15]2267; GFX8-GISEL-NEXT: s_waitcnt vmcnt(3)2268; GFX8-GISEL-NEXT: flat_store_dwordx4 v[2:3], v[16:19]2269; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)2270; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]2271;2272; GFX9-GISEL-LABEL: freeze_v16i32:2273; GFX9-GISEL: ; %bb.0:2274; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2275; GFX9-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off2276; GFX9-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:162277; GFX9-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:322278; GFX9-GISEL-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:482279; GFX9-GISEL-NEXT: s_waitcnt vmcnt(3)2280; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off2281; GFX9-GISEL-NEXT: s_waitcnt vmcnt(3)2282; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:162283; GFX9-GISEL-NEXT: s_waitcnt vmcnt(3)2284; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:322285; GFX9-GISEL-NEXT: s_waitcnt vmcnt(3)2286; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:482287; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)2288; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]2289;2290; GFX10-SDAG-LABEL: freeze_v16i32:2291; GFX10-SDAG: ; %bb.0:2292; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2293; GFX10-SDAG-NEXT: s_clause 0x32294; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off offset:322295; GFX10-SDAG-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:482296; GFX10-SDAG-NEXT: global_load_dwordx4 v[12:15], v[0:1], off2297; GFX10-SDAG-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:162298; GFX10-SDAG-NEXT: s_waitcnt vmcnt(3)2299; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off offset:322300; GFX10-SDAG-NEXT: s_waitcnt vmcnt(2)2301; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:482302; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1)2303; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[12:15], off2304; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)2305; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:162306; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]2307;2308; GFX10-GISEL-LABEL: freeze_v16i32:2309; GFX10-GISEL: ; %bb.0:2310; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2311; GFX10-GISEL-NEXT: s_clause 0x32312; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off2313; GFX10-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:162314; GFX10-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:322315; GFX10-GISEL-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:482316; GFX10-GISEL-NEXT: s_waitcnt vmcnt(3)2317; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off2318; GFX10-GISEL-NEXT: s_waitcnt vmcnt(2)2319; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:162320; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1)2321; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:322322; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)2323; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:482324; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]2325;2326; GFX11-SDAG-LABEL: freeze_v16i32:2327; GFX11-SDAG: ; %bb.0:2328; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2329; GFX11-SDAG-NEXT: s_clause 0x32330; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off offset:322331; GFX11-SDAG-NEXT: global_load_b128 v[8:11], v[0:1], off offset:482332; GFX11-SDAG-NEXT: global_load_b128 v[12:15], v[0:1], off2333; GFX11-SDAG-NEXT: global_load_b128 v[16:19], v[0:1], off offset:162334; GFX11-SDAG-NEXT: s_waitcnt vmcnt(3)2335; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off offset:322336; GFX11-SDAG-NEXT: s_waitcnt vmcnt(2)2337; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[8:11], off offset:482338; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1)2339; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[12:15], off2340; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0)2341; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[16:19], off offset:162342; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]2343;2344; GFX11-GISEL-LABEL: freeze_v16i32:2345; GFX11-GISEL: ; %bb.0:2346; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2347; GFX11-GISEL-NEXT: s_clause 0x32348; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off2349; GFX11-GISEL-NEXT: global_load_b128 v[8:11], v[0:1], off offset:162350; GFX11-GISEL-NEXT: global_load_b128 v[12:15], v[0:1], off offset:322351; GFX11-GISEL-NEXT: global_load_b128 v[16:19], v[0:1], off offset:482352; GFX11-GISEL-NEXT: s_waitcnt vmcnt(3)2353; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off2354; GFX11-GISEL-NEXT: s_waitcnt vmcnt(2)2355; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[8:11], off offset:162356; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1)2357; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[12:15], off offset:322358; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)2359; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[16:19], off offset:482360; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]2361 %a = load <16 x i32>, ptr addrspace(1) %ptra, align 42362 %freeze = freeze <16 x i32> %a2363 store <16 x i32> %freeze, ptr addrspace(1) %ptrb, align 42364 ret void2365}2366 2367define void @freeze_v17i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {2368; GFX6-SDAG-LABEL: freeze_v17i32:2369; GFX6-SDAG: ; %bb.0:2370; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2371; GFX6-SDAG-NEXT: s_mov_b32 s6, 02372; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0002373; GFX6-SDAG-NEXT: s_mov_b32 s4, s62374; GFX6-SDAG-NEXT: s_mov_b32 s5, s62375; GFX6-SDAG-NEXT: buffer_load_dword v20, v[0:1], s[4:7], 0 addr64 offset:642376; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:322377; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:482378; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr642379; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:162380; GFX6-SDAG-NEXT: s_waitcnt vmcnt(4)2381; GFX6-SDAG-NEXT: buffer_store_dword v20, v[2:3], s[4:7], 0 addr64 offset:642382; GFX6-SDAG-NEXT: s_waitcnt vmcnt(4)2383; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:322384; GFX6-SDAG-NEXT: s_waitcnt vmcnt(4)2385; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:482386; GFX6-SDAG-NEXT: s_waitcnt vmcnt(4)2387; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr642388; GFX6-SDAG-NEXT: s_waitcnt vmcnt(4)2389; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:162390; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)2391; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]2392;2393; GFX6-GISEL-LABEL: freeze_v17i32:2394; GFX6-GISEL: ; %bb.0:2395; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2396; GFX6-GISEL-NEXT: s_mov_b32 s6, 02397; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0002398; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 02399; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr642400; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:162401; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:322402; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:482403; GFX6-GISEL-NEXT: buffer_load_dword v0, v[0:1], s[4:7], 0 addr64 offset:642404; GFX6-GISEL-NEXT: s_waitcnt vmcnt(4)2405; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr642406; GFX6-GISEL-NEXT: s_waitcnt vmcnt(4)2407; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:162408; GFX6-GISEL-NEXT: s_waitcnt vmcnt(4)2409; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:322410; GFX6-GISEL-NEXT: s_waitcnt vmcnt(4)2411; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:482412; GFX6-GISEL-NEXT: s_waitcnt vmcnt(4)2413; GFX6-GISEL-NEXT: buffer_store_dword v0, v[2:3], s[4:7], 0 addr64 offset:642414; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)2415; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]2416;2417; GFX7-SDAG-LABEL: freeze_v17i32:2418; GFX7-SDAG: ; %bb.0:2419; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2420; GFX7-SDAG-NEXT: s_mov_b32 s6, 02421; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0002422; GFX7-SDAG-NEXT: s_mov_b32 s4, s62423; GFX7-SDAG-NEXT: s_mov_b32 s5, s62424; GFX7-SDAG-NEXT: buffer_load_dword v20, v[0:1], s[4:7], 0 addr64 offset:642425; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:322426; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:482427; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr642428; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:162429; GFX7-SDAG-NEXT: s_waitcnt vmcnt(4)2430; GFX7-SDAG-NEXT: buffer_store_dword v20, v[2:3], s[4:7], 0 addr64 offset:642431; GFX7-SDAG-NEXT: s_waitcnt vmcnt(4)2432; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:322433; GFX7-SDAG-NEXT: s_waitcnt vmcnt(4)2434; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:482435; GFX7-SDAG-NEXT: s_waitcnt vmcnt(4)2436; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr642437; GFX7-SDAG-NEXT: s_waitcnt vmcnt(4)2438; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:162439; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)2440; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]2441;2442; GFX7-GISEL-LABEL: freeze_v17i32:2443; GFX7-GISEL: ; %bb.0:2444; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2445; GFX7-GISEL-NEXT: s_mov_b32 s6, 02446; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0002447; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 02448; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr642449; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:162450; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:322451; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:482452; GFX7-GISEL-NEXT: buffer_load_dword v0, v[0:1], s[4:7], 0 addr64 offset:642453; GFX7-GISEL-NEXT: s_waitcnt vmcnt(4)2454; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr642455; GFX7-GISEL-NEXT: s_waitcnt vmcnt(4)2456; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:162457; GFX7-GISEL-NEXT: s_waitcnt vmcnt(4)2458; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:322459; GFX7-GISEL-NEXT: s_waitcnt vmcnt(4)2460; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:482461; GFX7-GISEL-NEXT: s_waitcnt vmcnt(4)2462; GFX7-GISEL-NEXT: buffer_store_dword v0, v[2:3], s[4:7], 0 addr64 offset:642463; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)2464; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]2465;2466; GFX8-GISEL-LABEL: freeze_v17i32:2467; GFX8-GISEL: ; %bb.0:2468; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2469; GFX8-GISEL-NEXT: v_add_u32_e32 v4, vcc, 16, v02470; GFX8-GISEL-NEXT: v_addc_u32_e32 v5, vcc, 0, v1, vcc2471; GFX8-GISEL-NEXT: v_add_u32_e32 v8, vcc, 32, v02472; GFX8-GISEL-NEXT: v_addc_u32_e32 v9, vcc, 0, v1, vcc2473; GFX8-GISEL-NEXT: flat_load_dwordx4 v[4:7], v[4:5]2474; GFX8-GISEL-NEXT: flat_load_dwordx4 v[8:11], v[8:9]2475; GFX8-GISEL-NEXT: v_add_u32_e32 v16, vcc, 48, v02476; GFX8-GISEL-NEXT: v_addc_u32_e32 v17, vcc, 0, v1, vcc2477; GFX8-GISEL-NEXT: v_add_u32_e32 v18, vcc, 64, v02478; GFX8-GISEL-NEXT: v_addc_u32_e32 v19, vcc, 0, v1, vcc2479; GFX8-GISEL-NEXT: flat_load_dwordx4 v[12:15], v[0:1]2480; GFX8-GISEL-NEXT: flat_load_dword v20, v[18:19]2481; GFX8-GISEL-NEXT: flat_load_dwordx4 v[16:19], v[16:17]2482; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 16, v22483; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v3, vcc2484; GFX8-GISEL-NEXT: s_waitcnt vmcnt(4)2485; GFX8-GISEL-NEXT: flat_store_dwordx4 v[0:1], v[4:7]2486; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 32, v22487; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v3, vcc2488; GFX8-GISEL-NEXT: v_add_u32_e32 v4, vcc, 48, v22489; GFX8-GISEL-NEXT: v_addc_u32_e32 v5, vcc, 0, v3, vcc2490; GFX8-GISEL-NEXT: s_waitcnt vmcnt(3)2491; GFX8-GISEL-NEXT: flat_store_dwordx4 v[2:3], v[12:15]2492; GFX8-GISEL-NEXT: v_add_u32_e32 v2, vcc, 64, v22493; GFX8-GISEL-NEXT: v_addc_u32_e32 v3, vcc, 0, v3, vcc2494; GFX8-GISEL-NEXT: flat_store_dwordx4 v[0:1], v[8:11]2495; GFX8-GISEL-NEXT: s_waitcnt vmcnt(3)2496; GFX8-GISEL-NEXT: flat_store_dwordx4 v[4:5], v[16:19]2497; GFX8-GISEL-NEXT: flat_store_dword v[2:3], v202498; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)2499; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]2500;2501; GFX9-GISEL-LABEL: freeze_v17i32:2502; GFX9-GISEL: ; %bb.0:2503; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2504; GFX9-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off2505; GFX9-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:162506; GFX9-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:322507; GFX9-GISEL-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:482508; GFX9-GISEL-NEXT: global_load_dword v20, v[0:1], off offset:642509; GFX9-GISEL-NEXT: s_waitcnt vmcnt(4)2510; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off2511; GFX9-GISEL-NEXT: s_waitcnt vmcnt(4)2512; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:162513; GFX9-GISEL-NEXT: s_waitcnt vmcnt(4)2514; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:322515; GFX9-GISEL-NEXT: s_waitcnt vmcnt(4)2516; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:482517; GFX9-GISEL-NEXT: s_waitcnt vmcnt(4)2518; GFX9-GISEL-NEXT: global_store_dword v[2:3], v20, off offset:642519; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)2520; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]2521;2522; GFX10-SDAG-LABEL: freeze_v17i32:2523; GFX10-SDAG: ; %bb.0:2524; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2525; GFX10-SDAG-NEXT: s_clause 0x42526; GFX10-SDAG-NEXT: global_load_dword v20, v[0:1], off offset:642527; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off offset:322528; GFX10-SDAG-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:482529; GFX10-SDAG-NEXT: global_load_dwordx4 v[12:15], v[0:1], off2530; GFX10-SDAG-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:162531; GFX10-SDAG-NEXT: s_waitcnt vmcnt(4)2532; GFX10-SDAG-NEXT: global_store_dword v[2:3], v20, off offset:642533; GFX10-SDAG-NEXT: s_waitcnt vmcnt(3)2534; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off offset:322535; GFX10-SDAG-NEXT: s_waitcnt vmcnt(2)2536; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:482537; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1)2538; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[12:15], off2539; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)2540; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:162541; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]2542;2543; GFX10-GISEL-LABEL: freeze_v17i32:2544; GFX10-GISEL: ; %bb.0:2545; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2546; GFX10-GISEL-NEXT: s_clause 0x42547; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off2548; GFX10-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:162549; GFX10-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:322550; GFX10-GISEL-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:482551; GFX10-GISEL-NEXT: global_load_dword v20, v[0:1], off offset:642552; GFX10-GISEL-NEXT: s_waitcnt vmcnt(4)2553; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off2554; GFX10-GISEL-NEXT: s_waitcnt vmcnt(3)2555; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:162556; GFX10-GISEL-NEXT: s_waitcnt vmcnt(2)2557; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:322558; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1)2559; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:482560; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)2561; GFX10-GISEL-NEXT: global_store_dword v[2:3], v20, off offset:642562; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]2563;2564; GFX11-SDAG-LABEL: freeze_v17i32:2565; GFX11-SDAG: ; %bb.0:2566; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2567; GFX11-SDAG-NEXT: s_clause 0x42568; GFX11-SDAG-NEXT: global_load_b32 v20, v[0:1], off offset:642569; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off offset:322570; GFX11-SDAG-NEXT: global_load_b128 v[8:11], v[0:1], off offset:482571; GFX11-SDAG-NEXT: global_load_b128 v[12:15], v[0:1], off2572; GFX11-SDAG-NEXT: global_load_b128 v[16:19], v[0:1], off offset:162573; GFX11-SDAG-NEXT: s_waitcnt vmcnt(4)2574; GFX11-SDAG-NEXT: global_store_b32 v[2:3], v20, off offset:642575; GFX11-SDAG-NEXT: s_waitcnt vmcnt(3)2576; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off offset:322577; GFX11-SDAG-NEXT: s_waitcnt vmcnt(2)2578; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[8:11], off offset:482579; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1)2580; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[12:15], off2581; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0)2582; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[16:19], off offset:162583; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]2584;2585; GFX11-GISEL-LABEL: freeze_v17i32:2586; GFX11-GISEL: ; %bb.0:2587; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2588; GFX11-GISEL-NEXT: s_clause 0x42589; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off2590; GFX11-GISEL-NEXT: global_load_b128 v[8:11], v[0:1], off offset:162591; GFX11-GISEL-NEXT: global_load_b128 v[12:15], v[0:1], off offset:322592; GFX11-GISEL-NEXT: global_load_b128 v[16:19], v[0:1], off offset:482593; GFX11-GISEL-NEXT: global_load_b32 v0, v[0:1], off offset:642594; GFX11-GISEL-NEXT: s_waitcnt vmcnt(4)2595; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off2596; GFX11-GISEL-NEXT: s_waitcnt vmcnt(3)2597; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[8:11], off offset:162598; GFX11-GISEL-NEXT: s_waitcnt vmcnt(2)2599; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[12:15], off offset:322600; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1)2601; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[16:19], off offset:482602; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)2603; GFX11-GISEL-NEXT: global_store_b32 v[2:3], v0, off offset:642604; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]2605 %a = load <17 x i32>, ptr addrspace(1) %ptra, align 42606 %freeze = freeze <17 x i32> %a2607 store <17 x i32> %freeze, ptr addrspace(1) %ptrb, align 42608 ret void2609}2610 2611define void @freeze_v18i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {2612; GFX6-SDAG-LABEL: freeze_v18i32:2613; GFX6-SDAG: ; %bb.0:2614; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2615; GFX6-SDAG-NEXT: s_mov_b32 s6, 02616; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0002617; GFX6-SDAG-NEXT: s_mov_b32 s4, s62618; GFX6-SDAG-NEXT: s_mov_b32 s5, s62619; GFX6-SDAG-NEXT: buffer_load_dwordx2 v[20:21], v[0:1], s[4:7], 0 addr64 offset:642620; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:322621; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:482622; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr642623; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:162624; GFX6-SDAG-NEXT: s_waitcnt vmcnt(4)2625; GFX6-SDAG-NEXT: buffer_store_dwordx2 v[20:21], v[2:3], s[4:7], 0 addr64 offset:642626; GFX6-SDAG-NEXT: s_waitcnt vmcnt(4)2627; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:322628; GFX6-SDAG-NEXT: s_waitcnt vmcnt(4)2629; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:482630; GFX6-SDAG-NEXT: s_waitcnt vmcnt(4)2631; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr642632; GFX6-SDAG-NEXT: s_waitcnt vmcnt(4)2633; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:162634; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)2635; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]2636;2637; GFX6-GISEL-LABEL: freeze_v18i32:2638; GFX6-GISEL: ; %bb.0:2639; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2640; GFX6-GISEL-NEXT: s_mov_b32 s6, 02641; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0002642; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 02643; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr642644; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:162645; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:322646; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:482647; GFX6-GISEL-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr64 offset:642648; GFX6-GISEL-NEXT: s_waitcnt vmcnt(4)2649; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr642650; GFX6-GISEL-NEXT: s_waitcnt vmcnt(4)2651; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:162652; GFX6-GISEL-NEXT: s_waitcnt vmcnt(4)2653; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:322654; GFX6-GISEL-NEXT: s_waitcnt vmcnt(4)2655; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:482656; GFX6-GISEL-NEXT: s_waitcnt vmcnt(4)2657; GFX6-GISEL-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr64 offset:642658; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)2659; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]2660;2661; GFX7-SDAG-LABEL: freeze_v18i32:2662; GFX7-SDAG: ; %bb.0:2663; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2664; GFX7-SDAG-NEXT: s_mov_b32 s6, 02665; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0002666; GFX7-SDAG-NEXT: s_mov_b32 s4, s62667; GFX7-SDAG-NEXT: s_mov_b32 s5, s62668; GFX7-SDAG-NEXT: buffer_load_dwordx2 v[20:21], v[0:1], s[4:7], 0 addr64 offset:642669; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:322670; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:482671; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr642672; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:162673; GFX7-SDAG-NEXT: s_waitcnt vmcnt(4)2674; GFX7-SDAG-NEXT: buffer_store_dwordx2 v[20:21], v[2:3], s[4:7], 0 addr64 offset:642675; GFX7-SDAG-NEXT: s_waitcnt vmcnt(4)2676; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:322677; GFX7-SDAG-NEXT: s_waitcnt vmcnt(4)2678; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:482679; GFX7-SDAG-NEXT: s_waitcnt vmcnt(4)2680; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr642681; GFX7-SDAG-NEXT: s_waitcnt vmcnt(4)2682; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:162683; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)2684; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]2685;2686; GFX7-GISEL-LABEL: freeze_v18i32:2687; GFX7-GISEL: ; %bb.0:2688; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2689; GFX7-GISEL-NEXT: s_mov_b32 s6, 02690; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0002691; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 02692; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr642693; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:162694; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:322695; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:482696; GFX7-GISEL-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr64 offset:642697; GFX7-GISEL-NEXT: s_waitcnt vmcnt(4)2698; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr642699; GFX7-GISEL-NEXT: s_waitcnt vmcnt(4)2700; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:162701; GFX7-GISEL-NEXT: s_waitcnt vmcnt(4)2702; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:322703; GFX7-GISEL-NEXT: s_waitcnt vmcnt(4)2704; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:482705; GFX7-GISEL-NEXT: s_waitcnt vmcnt(4)2706; GFX7-GISEL-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr64 offset:642707; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)2708; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]2709;2710; GFX8-GISEL-LABEL: freeze_v18i32:2711; GFX8-GISEL: ; %bb.0:2712; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2713; GFX8-GISEL-NEXT: v_add_u32_e32 v4, vcc, 16, v02714; GFX8-GISEL-NEXT: v_addc_u32_e32 v5, vcc, 0, v1, vcc2715; GFX8-GISEL-NEXT: v_add_u32_e32 v8, vcc, 32, v02716; GFX8-GISEL-NEXT: v_addc_u32_e32 v9, vcc, 0, v1, vcc2717; GFX8-GISEL-NEXT: flat_load_dwordx4 v[4:7], v[4:5]2718; GFX8-GISEL-NEXT: flat_load_dwordx4 v[8:11], v[8:9]2719; GFX8-GISEL-NEXT: v_add_u32_e32 v16, vcc, 48, v02720; GFX8-GISEL-NEXT: v_addc_u32_e32 v17, vcc, 0, v1, vcc2721; GFX8-GISEL-NEXT: v_add_u32_e32 v18, vcc, 64, v02722; GFX8-GISEL-NEXT: v_addc_u32_e32 v19, vcc, 0, v1, vcc2723; GFX8-GISEL-NEXT: flat_load_dwordx4 v[12:15], v[0:1]2724; GFX8-GISEL-NEXT: flat_load_dwordx2 v[0:1], v[18:19]2725; GFX8-GISEL-NEXT: flat_load_dwordx4 v[16:19], v[16:17]2726; GFX8-GISEL-NEXT: v_add_u32_e32 v20, vcc, 16, v22727; GFX8-GISEL-NEXT: v_addc_u32_e32 v21, vcc, 0, v3, vcc2728; GFX8-GISEL-NEXT: s_waitcnt vmcnt(4)2729; GFX8-GISEL-NEXT: flat_store_dwordx4 v[20:21], v[4:7]2730; GFX8-GISEL-NEXT: s_nop 02731; GFX8-GISEL-NEXT: v_add_u32_e32 v4, vcc, 32, v22732; GFX8-GISEL-NEXT: v_addc_u32_e32 v5, vcc, 0, v3, vcc2733; GFX8-GISEL-NEXT: v_add_u32_e32 v6, vcc, 48, v22734; GFX8-GISEL-NEXT: v_addc_u32_e32 v7, vcc, 0, v3, vcc2735; GFX8-GISEL-NEXT: s_waitcnt vmcnt(3)2736; GFX8-GISEL-NEXT: flat_store_dwordx4 v[2:3], v[12:15]2737; GFX8-GISEL-NEXT: v_add_u32_e32 v2, vcc, 64, v22738; GFX8-GISEL-NEXT: v_addc_u32_e32 v3, vcc, 0, v3, vcc2739; GFX8-GISEL-NEXT: flat_store_dwordx4 v[4:5], v[8:11]2740; GFX8-GISEL-NEXT: s_waitcnt vmcnt(3)2741; GFX8-GISEL-NEXT: flat_store_dwordx4 v[6:7], v[16:19]2742; GFX8-GISEL-NEXT: flat_store_dwordx2 v[2:3], v[0:1]2743; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)2744; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]2745;2746; GFX9-GISEL-LABEL: freeze_v18i32:2747; GFX9-GISEL: ; %bb.0:2748; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2749; GFX9-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off2750; GFX9-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:162751; GFX9-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:322752; GFX9-GISEL-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:482753; GFX9-GISEL-NEXT: global_load_dwordx2 v[20:21], v[0:1], off offset:642754; GFX9-GISEL-NEXT: s_waitcnt vmcnt(4)2755; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off2756; GFX9-GISEL-NEXT: s_waitcnt vmcnt(4)2757; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:162758; GFX9-GISEL-NEXT: s_waitcnt vmcnt(4)2759; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:322760; GFX9-GISEL-NEXT: s_waitcnt vmcnt(4)2761; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:482762; GFX9-GISEL-NEXT: s_waitcnt vmcnt(4)2763; GFX9-GISEL-NEXT: global_store_dwordx2 v[2:3], v[20:21], off offset:642764; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)2765; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]2766;2767; GFX10-SDAG-LABEL: freeze_v18i32:2768; GFX10-SDAG: ; %bb.0:2769; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2770; GFX10-SDAG-NEXT: s_clause 0x42771; GFX10-SDAG-NEXT: global_load_dwordx2 v[20:21], v[0:1], off offset:642772; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off offset:322773; GFX10-SDAG-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:482774; GFX10-SDAG-NEXT: global_load_dwordx4 v[12:15], v[0:1], off2775; GFX10-SDAG-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:162776; GFX10-SDAG-NEXT: s_waitcnt vmcnt(4)2777; GFX10-SDAG-NEXT: global_store_dwordx2 v[2:3], v[20:21], off offset:642778; GFX10-SDAG-NEXT: s_waitcnt vmcnt(3)2779; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off offset:322780; GFX10-SDAG-NEXT: s_waitcnt vmcnt(2)2781; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:482782; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1)2783; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[12:15], off2784; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)2785; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:162786; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]2787;2788; GFX10-GISEL-LABEL: freeze_v18i32:2789; GFX10-GISEL: ; %bb.0:2790; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2791; GFX10-GISEL-NEXT: s_clause 0x42792; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off2793; GFX10-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:162794; GFX10-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:322795; GFX10-GISEL-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:482796; GFX10-GISEL-NEXT: global_load_dwordx2 v[20:21], v[0:1], off offset:642797; GFX10-GISEL-NEXT: s_waitcnt vmcnt(4)2798; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off2799; GFX10-GISEL-NEXT: s_waitcnt vmcnt(3)2800; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:162801; GFX10-GISEL-NEXT: s_waitcnt vmcnt(2)2802; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:322803; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1)2804; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:482805; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)2806; GFX10-GISEL-NEXT: global_store_dwordx2 v[2:3], v[20:21], off offset:642807; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]2808;2809; GFX11-SDAG-LABEL: freeze_v18i32:2810; GFX11-SDAG: ; %bb.0:2811; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2812; GFX11-SDAG-NEXT: s_clause 0x42813; GFX11-SDAG-NEXT: global_load_b64 v[20:21], v[0:1], off offset:642814; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off offset:322815; GFX11-SDAG-NEXT: global_load_b128 v[8:11], v[0:1], off offset:482816; GFX11-SDAG-NEXT: global_load_b128 v[12:15], v[0:1], off2817; GFX11-SDAG-NEXT: global_load_b128 v[16:19], v[0:1], off offset:162818; GFX11-SDAG-NEXT: s_waitcnt vmcnt(4)2819; GFX11-SDAG-NEXT: global_store_b64 v[2:3], v[20:21], off offset:642820; GFX11-SDAG-NEXT: s_waitcnt vmcnt(3)2821; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off offset:322822; GFX11-SDAG-NEXT: s_waitcnt vmcnt(2)2823; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[8:11], off offset:482824; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1)2825; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[12:15], off2826; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0)2827; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[16:19], off offset:162828; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]2829;2830; GFX11-GISEL-LABEL: freeze_v18i32:2831; GFX11-GISEL: ; %bb.0:2832; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2833; GFX11-GISEL-NEXT: s_clause 0x42834; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off2835; GFX11-GISEL-NEXT: global_load_b128 v[8:11], v[0:1], off offset:162836; GFX11-GISEL-NEXT: global_load_b128 v[12:15], v[0:1], off offset:322837; GFX11-GISEL-NEXT: global_load_b128 v[16:19], v[0:1], off offset:482838; GFX11-GISEL-NEXT: global_load_b64 v[0:1], v[0:1], off offset:642839; GFX11-GISEL-NEXT: s_waitcnt vmcnt(4)2840; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off2841; GFX11-GISEL-NEXT: s_waitcnt vmcnt(3)2842; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[8:11], off offset:162843; GFX11-GISEL-NEXT: s_waitcnt vmcnt(2)2844; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[12:15], off offset:322845; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1)2846; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[16:19], off offset:482847; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)2848; GFX11-GISEL-NEXT: global_store_b64 v[2:3], v[0:1], off offset:642849; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]2850 %a = load <18 x i32>, ptr addrspace(1) %ptra, align 42851 %freeze = freeze <18 x i32> %a2852 store <18 x i32> %freeze, ptr addrspace(1) %ptrb, align 42853 ret void2854}2855 2856define void @freeze_v19i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {2857; GFX6-SDAG-LABEL: freeze_v19i32:2858; GFX6-SDAG: ; %bb.0:2859; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2860; GFX6-SDAG-NEXT: s_mov_b32 s6, 02861; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0002862; GFX6-SDAG-NEXT: s_mov_b32 s4, s62863; GFX6-SDAG-NEXT: s_mov_b32 s5, s62864; GFX6-SDAG-NEXT: buffer_load_dword v22, v[0:1], s[4:7], 0 addr64 offset:722865; GFX6-SDAG-NEXT: buffer_load_dwordx2 v[20:21], v[0:1], s[4:7], 0 addr64 offset:642866; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:322867; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:482868; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr642869; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:162870; GFX6-SDAG-NEXT: s_waitcnt vmcnt(5)2871; GFX6-SDAG-NEXT: buffer_store_dword v22, v[2:3], s[4:7], 0 addr64 offset:722872; GFX6-SDAG-NEXT: s_waitcnt vmcnt(5)2873; GFX6-SDAG-NEXT: buffer_store_dwordx2 v[20:21], v[2:3], s[4:7], 0 addr64 offset:642874; GFX6-SDAG-NEXT: s_waitcnt vmcnt(5)2875; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:322876; GFX6-SDAG-NEXT: s_waitcnt vmcnt(5)2877; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:482878; GFX6-SDAG-NEXT: s_waitcnt vmcnt(5)2879; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr642880; GFX6-SDAG-NEXT: s_waitcnt vmcnt(5)2881; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:162882; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)2883; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]2884;2885; GFX6-GISEL-LABEL: freeze_v19i32:2886; GFX6-GISEL: ; %bb.0:2887; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2888; GFX6-GISEL-NEXT: s_mov_b32 s6, 02889; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0002890; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 02891; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr642892; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:162893; GFX6-GISEL-NEXT: buffer_load_dwordx2 v[20:21], v[0:1], s[4:7], 0 addr64 offset:642894; GFX6-GISEL-NEXT: buffer_load_dword v22, v[0:1], s[4:7], 0 addr64 offset:722895; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:322896; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:482897; GFX6-GISEL-NEXT: s_waitcnt vmcnt(5)2898; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr642899; GFX6-GISEL-NEXT: s_waitcnt vmcnt(5)2900; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:162901; GFX6-GISEL-NEXT: s_waitcnt vmcnt(3)2902; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:322903; GFX6-GISEL-NEXT: s_waitcnt vmcnt(3)2904; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:482905; GFX6-GISEL-NEXT: buffer_store_dwordx2 v[20:21], v[2:3], s[4:7], 0 addr64 offset:642906; GFX6-GISEL-NEXT: buffer_store_dword v22, v[2:3], s[4:7], 0 addr64 offset:722907; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)2908; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]2909;2910; GFX7-SDAG-LABEL: freeze_v19i32:2911; GFX7-SDAG: ; %bb.0:2912; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2913; GFX7-SDAG-NEXT: s_mov_b32 s6, 02914; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0002915; GFX7-SDAG-NEXT: s_mov_b32 s4, s62916; GFX7-SDAG-NEXT: s_mov_b32 s5, s62917; GFX7-SDAG-NEXT: buffer_load_dword v22, v[0:1], s[4:7], 0 addr64 offset:722918; GFX7-SDAG-NEXT: buffer_load_dwordx2 v[20:21], v[0:1], s[4:7], 0 addr64 offset:642919; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:322920; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:482921; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr642922; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:162923; GFX7-SDAG-NEXT: s_waitcnt vmcnt(5)2924; GFX7-SDAG-NEXT: buffer_store_dword v22, v[2:3], s[4:7], 0 addr64 offset:722925; GFX7-SDAG-NEXT: s_waitcnt vmcnt(5)2926; GFX7-SDAG-NEXT: buffer_store_dwordx2 v[20:21], v[2:3], s[4:7], 0 addr64 offset:642927; GFX7-SDAG-NEXT: s_waitcnt vmcnt(5)2928; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:322929; GFX7-SDAG-NEXT: s_waitcnt vmcnt(5)2930; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:482931; GFX7-SDAG-NEXT: s_waitcnt vmcnt(5)2932; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr642933; GFX7-SDAG-NEXT: s_waitcnt vmcnt(5)2934; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:162935; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)2936; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]2937;2938; GFX7-GISEL-LABEL: freeze_v19i32:2939; GFX7-GISEL: ; %bb.0:2940; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2941; GFX7-GISEL-NEXT: s_mov_b32 s6, 02942; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0002943; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 02944; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr642945; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:162946; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:322947; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:482948; GFX7-GISEL-NEXT: buffer_load_dwordx3 v[20:22], v[0:1], s[4:7], 0 addr64 offset:642949; GFX7-GISEL-NEXT: s_waitcnt vmcnt(4)2950; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr642951; GFX7-GISEL-NEXT: s_waitcnt vmcnt(4)2952; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:162953; GFX7-GISEL-NEXT: s_waitcnt vmcnt(4)2954; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:322955; GFX7-GISEL-NEXT: s_waitcnt vmcnt(4)2956; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:482957; GFX7-GISEL-NEXT: s_waitcnt vmcnt(4)2958; GFX7-GISEL-NEXT: buffer_store_dwordx3 v[20:22], v[2:3], s[4:7], 0 addr64 offset:642959; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)2960; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]2961;2962; GFX8-GISEL-LABEL: freeze_v19i32:2963; GFX8-GISEL: ; %bb.0:2964; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2965; GFX8-GISEL-NEXT: v_add_u32_e32 v4, vcc, 16, v02966; GFX8-GISEL-NEXT: v_addc_u32_e32 v5, vcc, 0, v1, vcc2967; GFX8-GISEL-NEXT: v_add_u32_e32 v8, vcc, 32, v02968; GFX8-GISEL-NEXT: flat_load_dwordx4 v[4:7], v[4:5]2969; GFX8-GISEL-NEXT: v_addc_u32_e32 v9, vcc, 0, v1, vcc2970; GFX8-GISEL-NEXT: v_add_u32_e32 v16, vcc, 48, v02971; GFX8-GISEL-NEXT: v_addc_u32_e32 v17, vcc, 0, v1, vcc2972; GFX8-GISEL-NEXT: v_add_u32_e32 v20, vcc, 64, v02973; GFX8-GISEL-NEXT: v_addc_u32_e32 v21, vcc, 0, v1, vcc2974; GFX8-GISEL-NEXT: flat_load_dwordx4 v[8:11], v[8:9]2975; GFX8-GISEL-NEXT: flat_load_dwordx4 v[12:15], v[0:1]2976; GFX8-GISEL-NEXT: flat_load_dwordx4 v[16:19], v[16:17]2977; GFX8-GISEL-NEXT: flat_load_dwordx3 v[20:22], v[20:21]2978; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 16, v22979; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v3, vcc2980; GFX8-GISEL-NEXT: s_waitcnt vmcnt(4)2981; GFX8-GISEL-NEXT: flat_store_dwordx4 v[0:1], v[4:7]2982; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 32, v22983; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v3, vcc2984; GFX8-GISEL-NEXT: v_add_u32_e32 v4, vcc, 48, v22985; GFX8-GISEL-NEXT: v_addc_u32_e32 v5, vcc, 0, v3, vcc2986; GFX8-GISEL-NEXT: v_add_u32_e32 v6, vcc, 64, v22987; GFX8-GISEL-NEXT: v_addc_u32_e32 v7, vcc, 0, v3, vcc2988; GFX8-GISEL-NEXT: s_waitcnt vmcnt(4)2989; GFX8-GISEL-NEXT: flat_store_dwordx4 v[0:1], v[8:11]2990; GFX8-GISEL-NEXT: s_waitcnt vmcnt(4)2991; GFX8-GISEL-NEXT: flat_store_dwordx4 v[2:3], v[12:15]2992; GFX8-GISEL-NEXT: s_waitcnt vmcnt(4)2993; GFX8-GISEL-NEXT: flat_store_dwordx4 v[4:5], v[16:19]2994; GFX8-GISEL-NEXT: s_waitcnt vmcnt(4)2995; GFX8-GISEL-NEXT: flat_store_dwordx3 v[6:7], v[20:22]2996; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)2997; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]2998;2999; GFX9-GISEL-LABEL: freeze_v19i32:3000; GFX9-GISEL: ; %bb.0:3001; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3002; GFX9-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off3003; GFX9-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:163004; GFX9-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:323005; GFX9-GISEL-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:483006; GFX9-GISEL-NEXT: global_load_dwordx3 v[20:22], v[0:1], off offset:643007; GFX9-GISEL-NEXT: s_waitcnt vmcnt(4)3008; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off3009; GFX9-GISEL-NEXT: s_waitcnt vmcnt(4)3010; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:163011; GFX9-GISEL-NEXT: s_waitcnt vmcnt(4)3012; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:323013; GFX9-GISEL-NEXT: s_waitcnt vmcnt(4)3014; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:483015; GFX9-GISEL-NEXT: s_waitcnt vmcnt(4)3016; GFX9-GISEL-NEXT: global_store_dwordx3 v[2:3], v[20:22], off offset:643017; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)3018; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]3019;3020; GFX10-SDAG-LABEL: freeze_v19i32:3021; GFX10-SDAG: ; %bb.0:3022; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3023; GFX10-SDAG-NEXT: s_clause 0x43024; GFX10-SDAG-NEXT: global_load_dwordx3 v[20:22], v[0:1], off offset:643025; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off offset:323026; GFX10-SDAG-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:483027; GFX10-SDAG-NEXT: global_load_dwordx4 v[12:15], v[0:1], off3028; GFX10-SDAG-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:163029; GFX10-SDAG-NEXT: s_waitcnt vmcnt(4)3030; GFX10-SDAG-NEXT: global_store_dwordx3 v[2:3], v[20:22], off offset:643031; GFX10-SDAG-NEXT: s_waitcnt vmcnt(3)3032; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off offset:323033; GFX10-SDAG-NEXT: s_waitcnt vmcnt(2)3034; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:483035; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1)3036; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[12:15], off3037; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)3038; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:163039; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]3040;3041; GFX10-GISEL-LABEL: freeze_v19i32:3042; GFX10-GISEL: ; %bb.0:3043; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3044; GFX10-GISEL-NEXT: s_clause 0x43045; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off3046; GFX10-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:163047; GFX10-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:323048; GFX10-GISEL-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:483049; GFX10-GISEL-NEXT: global_load_dwordx3 v[20:22], v[0:1], off offset:643050; GFX10-GISEL-NEXT: s_waitcnt vmcnt(4)3051; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off3052; GFX10-GISEL-NEXT: s_waitcnt vmcnt(3)3053; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:163054; GFX10-GISEL-NEXT: s_waitcnt vmcnt(2)3055; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:323056; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1)3057; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:483058; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)3059; GFX10-GISEL-NEXT: global_store_dwordx3 v[2:3], v[20:22], off offset:643060; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]3061;3062; GFX11-SDAG-LABEL: freeze_v19i32:3063; GFX11-SDAG: ; %bb.0:3064; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3065; GFX11-SDAG-NEXT: s_clause 0x43066; GFX11-SDAG-NEXT: global_load_b96 v[20:22], v[0:1], off offset:643067; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off offset:323068; GFX11-SDAG-NEXT: global_load_b128 v[8:11], v[0:1], off offset:483069; GFX11-SDAG-NEXT: global_load_b128 v[12:15], v[0:1], off3070; GFX11-SDAG-NEXT: global_load_b128 v[16:19], v[0:1], off offset:163071; GFX11-SDAG-NEXT: s_waitcnt vmcnt(4)3072; GFX11-SDAG-NEXT: global_store_b96 v[2:3], v[20:22], off offset:643073; GFX11-SDAG-NEXT: s_waitcnt vmcnt(3)3074; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off offset:323075; GFX11-SDAG-NEXT: s_waitcnt vmcnt(2)3076; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[8:11], off offset:483077; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1)3078; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[12:15], off3079; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0)3080; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[16:19], off offset:163081; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]3082;3083; GFX11-GISEL-LABEL: freeze_v19i32:3084; GFX11-GISEL: ; %bb.0:3085; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3086; GFX11-GISEL-NEXT: s_clause 0x43087; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off3088; GFX11-GISEL-NEXT: global_load_b128 v[8:11], v[0:1], off offset:163089; GFX11-GISEL-NEXT: global_load_b128 v[12:15], v[0:1], off offset:323090; GFX11-GISEL-NEXT: global_load_b128 v[16:19], v[0:1], off offset:483091; GFX11-GISEL-NEXT: global_load_b96 v[20:22], v[0:1], off offset:643092; GFX11-GISEL-NEXT: s_waitcnt vmcnt(4)3093; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off3094; GFX11-GISEL-NEXT: s_waitcnt vmcnt(3)3095; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[8:11], off offset:163096; GFX11-GISEL-NEXT: s_waitcnt vmcnt(2)3097; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[12:15], off offset:323098; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1)3099; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[16:19], off offset:483100; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)3101; GFX11-GISEL-NEXT: global_store_b96 v[2:3], v[20:22], off offset:643102; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]3103 %a = load <19 x i32>, ptr addrspace(1) %ptra, align 43104 %freeze = freeze <19 x i32> %a3105 store <19 x i32> %freeze, ptr addrspace(1) %ptrb, align 43106 ret void3107}3108 3109define void @freeze_v20i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {3110; GFX6-SDAG-LABEL: freeze_v20i32:3111; GFX6-SDAG: ; %bb.0:3112; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3113; GFX6-SDAG-NEXT: s_mov_b32 s6, 03114; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0003115; GFX6-SDAG-NEXT: s_mov_b32 s4, s63116; GFX6-SDAG-NEXT: s_mov_b32 s5, s63117; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:643118; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:323119; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:483120; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr643121; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[20:23], v[0:1], s[4:7], 0 addr64 offset:163122; GFX6-SDAG-NEXT: s_waitcnt vmcnt(4)3123; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:643124; GFX6-SDAG-NEXT: s_waitcnt vmcnt(4)3125; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:323126; GFX6-SDAG-NEXT: s_waitcnt vmcnt(4)3127; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:483128; GFX6-SDAG-NEXT: s_waitcnt vmcnt(4)3129; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr643130; GFX6-SDAG-NEXT: s_waitcnt vmcnt(4)3131; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[20:23], v[2:3], s[4:7], 0 addr64 offset:163132; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)3133; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]3134;3135; GFX6-GISEL-LABEL: freeze_v20i32:3136; GFX6-GISEL: ; %bb.0:3137; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3138; GFX6-GISEL-NEXT: s_mov_b32 s6, 03139; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0003140; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 03141; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr643142; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:163143; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:323144; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:483145; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[20:23], v[0:1], s[4:7], 0 addr64 offset:643146; GFX6-GISEL-NEXT: s_waitcnt vmcnt(4)3147; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr643148; GFX6-GISEL-NEXT: s_waitcnt vmcnt(4)3149; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:163150; GFX6-GISEL-NEXT: s_waitcnt vmcnt(4)3151; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:323152; GFX6-GISEL-NEXT: s_waitcnt vmcnt(4)3153; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:483154; GFX6-GISEL-NEXT: s_waitcnt vmcnt(4)3155; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[20:23], v[2:3], s[4:7], 0 addr64 offset:643156; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)3157; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]3158;3159; GFX7-SDAG-LABEL: freeze_v20i32:3160; GFX7-SDAG: ; %bb.0:3161; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3162; GFX7-SDAG-NEXT: s_mov_b32 s6, 03163; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0003164; GFX7-SDAG-NEXT: s_mov_b32 s4, s63165; GFX7-SDAG-NEXT: s_mov_b32 s5, s63166; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:643167; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:323168; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:483169; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr643170; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[20:23], v[0:1], s[4:7], 0 addr64 offset:163171; GFX7-SDAG-NEXT: s_waitcnt vmcnt(4)3172; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:643173; GFX7-SDAG-NEXT: s_waitcnt vmcnt(4)3174; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:323175; GFX7-SDAG-NEXT: s_waitcnt vmcnt(4)3176; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:483177; GFX7-SDAG-NEXT: s_waitcnt vmcnt(4)3178; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr643179; GFX7-SDAG-NEXT: s_waitcnt vmcnt(4)3180; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[20:23], v[2:3], s[4:7], 0 addr64 offset:163181; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)3182; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]3183;3184; GFX7-GISEL-LABEL: freeze_v20i32:3185; GFX7-GISEL: ; %bb.0:3186; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3187; GFX7-GISEL-NEXT: s_mov_b32 s6, 03188; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0003189; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 03190; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr643191; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:163192; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:323193; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:483194; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[20:23], v[0:1], s[4:7], 0 addr64 offset:643195; GFX7-GISEL-NEXT: s_waitcnt vmcnt(4)3196; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr643197; GFX7-GISEL-NEXT: s_waitcnt vmcnt(4)3198; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:163199; GFX7-GISEL-NEXT: s_waitcnt vmcnt(4)3200; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:323201; GFX7-GISEL-NEXT: s_waitcnt vmcnt(4)3202; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:483203; GFX7-GISEL-NEXT: s_waitcnt vmcnt(4)3204; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[20:23], v[2:3], s[4:7], 0 addr64 offset:643205; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)3206; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]3207;3208; GFX8-GISEL-LABEL: freeze_v20i32:3209; GFX8-GISEL: ; %bb.0:3210; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3211; GFX8-GISEL-NEXT: v_add_u32_e32 v8, vcc, 16, v03212; GFX8-GISEL-NEXT: v_addc_u32_e32 v9, vcc, 0, v1, vcc3213; GFX8-GISEL-NEXT: flat_load_dwordx4 v[4:7], v[0:1]3214; GFX8-GISEL-NEXT: v_add_u32_e32 v12, vcc, 32, v03215; GFX8-GISEL-NEXT: v_addc_u32_e32 v13, vcc, 0, v1, vcc3216; GFX8-GISEL-NEXT: v_add_u32_e32 v16, vcc, 48, v03217; GFX8-GISEL-NEXT: v_addc_u32_e32 v17, vcc, 0, v1, vcc3218; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 64, v03219; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v1, vcc3220; GFX8-GISEL-NEXT: flat_load_dwordx4 v[8:11], v[8:9]3221; GFX8-GISEL-NEXT: flat_load_dwordx4 v[12:15], v[12:13]3222; GFX8-GISEL-NEXT: flat_load_dwordx4 v[16:19], v[16:17]3223; GFX8-GISEL-NEXT: flat_load_dwordx4 v[20:23], v[0:1]3224; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 16, v23225; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v3, vcc3226; GFX8-GISEL-NEXT: s_waitcnt vmcnt(4)3227; GFX8-GISEL-NEXT: flat_store_dwordx4 v[2:3], v[4:7]3228; GFX8-GISEL-NEXT: s_nop 03229; GFX8-GISEL-NEXT: v_add_u32_e32 v4, vcc, 32, v23230; GFX8-GISEL-NEXT: v_addc_u32_e32 v5, vcc, 0, v3, vcc3231; GFX8-GISEL-NEXT: v_add_u32_e32 v6, vcc, 48, v23232; GFX8-GISEL-NEXT: v_addc_u32_e32 v7, vcc, 0, v3, vcc3233; GFX8-GISEL-NEXT: v_add_u32_e32 v2, vcc, 64, v23234; GFX8-GISEL-NEXT: v_addc_u32_e32 v3, vcc, 0, v3, vcc3235; GFX8-GISEL-NEXT: s_waitcnt vmcnt(4)3236; GFX8-GISEL-NEXT: flat_store_dwordx4 v[0:1], v[8:11]3237; GFX8-GISEL-NEXT: s_waitcnt vmcnt(4)3238; GFX8-GISEL-NEXT: flat_store_dwordx4 v[4:5], v[12:15]3239; GFX8-GISEL-NEXT: s_waitcnt vmcnt(4)3240; GFX8-GISEL-NEXT: flat_store_dwordx4 v[6:7], v[16:19]3241; GFX8-GISEL-NEXT: s_waitcnt vmcnt(4)3242; GFX8-GISEL-NEXT: flat_store_dwordx4 v[2:3], v[20:23]3243; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)3244; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]3245;3246; GFX9-GISEL-LABEL: freeze_v20i32:3247; GFX9-GISEL: ; %bb.0:3248; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3249; GFX9-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off3250; GFX9-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:163251; GFX9-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:323252; GFX9-GISEL-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:483253; GFX9-GISEL-NEXT: global_load_dwordx4 v[20:23], v[0:1], off offset:643254; GFX9-GISEL-NEXT: s_waitcnt vmcnt(4)3255; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off3256; GFX9-GISEL-NEXT: s_waitcnt vmcnt(4)3257; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:163258; GFX9-GISEL-NEXT: s_waitcnt vmcnt(4)3259; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:323260; GFX9-GISEL-NEXT: s_waitcnt vmcnt(4)3261; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:483262; GFX9-GISEL-NEXT: s_waitcnt vmcnt(4)3263; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[20:23], off offset:643264; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)3265; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]3266;3267; GFX10-SDAG-LABEL: freeze_v20i32:3268; GFX10-SDAG: ; %bb.0:3269; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3270; GFX10-SDAG-NEXT: s_clause 0x43271; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off offset:643272; GFX10-SDAG-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:323273; GFX10-SDAG-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:483274; GFX10-SDAG-NEXT: global_load_dwordx4 v[16:19], v[0:1], off3275; GFX10-SDAG-NEXT: global_load_dwordx4 v[20:23], v[0:1], off offset:163276; GFX10-SDAG-NEXT: s_waitcnt vmcnt(4)3277; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off offset:643278; GFX10-SDAG-NEXT: s_waitcnt vmcnt(3)3279; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:323280; GFX10-SDAG-NEXT: s_waitcnt vmcnt(2)3281; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:483282; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1)3283; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[16:19], off3284; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)3285; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[20:23], off offset:163286; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]3287;3288; GFX10-GISEL-LABEL: freeze_v20i32:3289; GFX10-GISEL: ; %bb.0:3290; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3291; GFX10-GISEL-NEXT: s_clause 0x43292; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off3293; GFX10-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:163294; GFX10-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:323295; GFX10-GISEL-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:483296; GFX10-GISEL-NEXT: global_load_dwordx4 v[20:23], v[0:1], off offset:643297; GFX10-GISEL-NEXT: s_waitcnt vmcnt(4)3298; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off3299; GFX10-GISEL-NEXT: s_waitcnt vmcnt(3)3300; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:163301; GFX10-GISEL-NEXT: s_waitcnt vmcnt(2)3302; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:323303; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1)3304; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:483305; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)3306; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[20:23], off offset:643307; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]3308;3309; GFX11-SDAG-LABEL: freeze_v20i32:3310; GFX11-SDAG: ; %bb.0:3311; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3312; GFX11-SDAG-NEXT: s_clause 0x43313; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off offset:643314; GFX11-SDAG-NEXT: global_load_b128 v[8:11], v[0:1], off offset:323315; GFX11-SDAG-NEXT: global_load_b128 v[12:15], v[0:1], off offset:483316; GFX11-SDAG-NEXT: global_load_b128 v[16:19], v[0:1], off3317; GFX11-SDAG-NEXT: global_load_b128 v[20:23], v[0:1], off offset:163318; GFX11-SDAG-NEXT: s_waitcnt vmcnt(4)3319; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off offset:643320; GFX11-SDAG-NEXT: s_waitcnt vmcnt(3)3321; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[8:11], off offset:323322; GFX11-SDAG-NEXT: s_waitcnt vmcnt(2)3323; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[12:15], off offset:483324; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1)3325; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[16:19], off3326; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0)3327; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[20:23], off offset:163328; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]3329;3330; GFX11-GISEL-LABEL: freeze_v20i32:3331; GFX11-GISEL: ; %bb.0:3332; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3333; GFX11-GISEL-NEXT: s_clause 0x43334; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off3335; GFX11-GISEL-NEXT: global_load_b128 v[8:11], v[0:1], off offset:163336; GFX11-GISEL-NEXT: global_load_b128 v[12:15], v[0:1], off offset:323337; GFX11-GISEL-NEXT: global_load_b128 v[16:19], v[0:1], off offset:483338; GFX11-GISEL-NEXT: global_load_b128 v[20:23], v[0:1], off offset:643339; GFX11-GISEL-NEXT: s_waitcnt vmcnt(4)3340; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off3341; GFX11-GISEL-NEXT: s_waitcnt vmcnt(3)3342; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[8:11], off offset:163343; GFX11-GISEL-NEXT: s_waitcnt vmcnt(2)3344; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[12:15], off offset:323345; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1)3346; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[16:19], off offset:483347; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)3348; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[20:23], off offset:643349; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]3350 %a = load <20 x i32>, ptr addrspace(1) %ptra, align 43351 %freeze = freeze <20 x i32> %a3352 store <20 x i32> %freeze, ptr addrspace(1) %ptrb, align 43353 ret void3354}3355 3356define void @freeze_v21i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {3357; GFX6-SDAG-LABEL: freeze_v21i32:3358; GFX6-SDAG: ; %bb.0:3359; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3360; GFX6-SDAG-NEXT: s_mov_b32 s6, 03361; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0003362; GFX6-SDAG-NEXT: s_mov_b32 s4, s63363; GFX6-SDAG-NEXT: s_mov_b32 s5, s63364; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:643365; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:323366; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:483367; GFX6-SDAG-NEXT: buffer_load_dword v24, v[0:1], s[4:7], 0 addr64 offset:803368; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr643369; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[20:23], v[0:1], s[4:7], 0 addr64 offset:163370; GFX6-SDAG-NEXT: s_waitcnt vmcnt(5)3371; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:643372; GFX6-SDAG-NEXT: s_waitcnt vmcnt(5)3373; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:323374; GFX6-SDAG-NEXT: s_waitcnt vmcnt(5)3375; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:483376; GFX6-SDAG-NEXT: s_waitcnt vmcnt(5)3377; GFX6-SDAG-NEXT: buffer_store_dword v24, v[2:3], s[4:7], 0 addr64 offset:803378; GFX6-SDAG-NEXT: s_waitcnt vmcnt(5)3379; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr643380; GFX6-SDAG-NEXT: s_waitcnt vmcnt(5)3381; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[20:23], v[2:3], s[4:7], 0 addr64 offset:163382; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)3383; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]3384;3385; GFX6-GISEL-LABEL: freeze_v21i32:3386; GFX6-GISEL: ; %bb.0:3387; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3388; GFX6-GISEL-NEXT: s_mov_b32 s6, 03389; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0003390; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 03391; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr643392; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:163393; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:323394; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:483395; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[20:23], v[0:1], s[4:7], 0 addr64 offset:643396; GFX6-GISEL-NEXT: buffer_load_dword v0, v[0:1], s[4:7], 0 addr64 offset:803397; GFX6-GISEL-NEXT: s_waitcnt vmcnt(5)3398; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr643399; GFX6-GISEL-NEXT: s_waitcnt vmcnt(5)3400; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:163401; GFX6-GISEL-NEXT: s_waitcnt vmcnt(5)3402; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:323403; GFX6-GISEL-NEXT: s_waitcnt vmcnt(5)3404; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:483405; GFX6-GISEL-NEXT: s_waitcnt vmcnt(5)3406; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[20:23], v[2:3], s[4:7], 0 addr64 offset:643407; GFX6-GISEL-NEXT: s_waitcnt vmcnt(5)3408; GFX6-GISEL-NEXT: buffer_store_dword v0, v[2:3], s[4:7], 0 addr64 offset:803409; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)3410; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]3411;3412; GFX7-SDAG-LABEL: freeze_v21i32:3413; GFX7-SDAG: ; %bb.0:3414; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3415; GFX7-SDAG-NEXT: s_mov_b32 s6, 03416; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0003417; GFX7-SDAG-NEXT: s_mov_b32 s4, s63418; GFX7-SDAG-NEXT: s_mov_b32 s5, s63419; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:643420; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:323421; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:483422; GFX7-SDAG-NEXT: buffer_load_dword v24, v[0:1], s[4:7], 0 addr64 offset:803423; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr643424; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[20:23], v[0:1], s[4:7], 0 addr64 offset:163425; GFX7-SDAG-NEXT: s_waitcnt vmcnt(5)3426; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:643427; GFX7-SDAG-NEXT: s_waitcnt vmcnt(5)3428; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:323429; GFX7-SDAG-NEXT: s_waitcnt vmcnt(5)3430; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:483431; GFX7-SDAG-NEXT: s_waitcnt vmcnt(5)3432; GFX7-SDAG-NEXT: buffer_store_dword v24, v[2:3], s[4:7], 0 addr64 offset:803433; GFX7-SDAG-NEXT: s_waitcnt vmcnt(5)3434; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr643435; GFX7-SDAG-NEXT: s_waitcnt vmcnt(5)3436; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[20:23], v[2:3], s[4:7], 0 addr64 offset:163437; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)3438; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]3439;3440; GFX7-GISEL-LABEL: freeze_v21i32:3441; GFX7-GISEL: ; %bb.0:3442; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3443; GFX7-GISEL-NEXT: s_mov_b32 s6, 03444; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0003445; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 03446; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr643447; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:163448; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:323449; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:483450; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[20:23], v[0:1], s[4:7], 0 addr64 offset:643451; GFX7-GISEL-NEXT: buffer_load_dword v0, v[0:1], s[4:7], 0 addr64 offset:803452; GFX7-GISEL-NEXT: s_waitcnt vmcnt(5)3453; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr643454; GFX7-GISEL-NEXT: s_waitcnt vmcnt(5)3455; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:163456; GFX7-GISEL-NEXT: s_waitcnt vmcnt(5)3457; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:323458; GFX7-GISEL-NEXT: s_waitcnt vmcnt(5)3459; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:483460; GFX7-GISEL-NEXT: s_waitcnt vmcnt(5)3461; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[20:23], v[2:3], s[4:7], 0 addr64 offset:643462; GFX7-GISEL-NEXT: s_waitcnt vmcnt(5)3463; GFX7-GISEL-NEXT: buffer_store_dword v0, v[2:3], s[4:7], 0 addr64 offset:803464; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)3465; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]3466;3467; GFX8-GISEL-LABEL: freeze_v21i32:3468; GFX8-GISEL: ; %bb.0:3469; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3470; GFX8-GISEL-NEXT: v_add_u32_e32 v4, vcc, 16, v03471; GFX8-GISEL-NEXT: v_addc_u32_e32 v5, vcc, 0, v1, vcc3472; GFX8-GISEL-NEXT: v_mov_b32_e32 v6, 0x503473; GFX8-GISEL-NEXT: v_add_u32_e32 v8, vcc, v0, v63474; GFX8-GISEL-NEXT: v_addc_u32_e32 v9, vcc, 0, v1, vcc3475; GFX8-GISEL-NEXT: v_add_u32_e32 v12, vcc, 32, v03476; GFX8-GISEL-NEXT: v_addc_u32_e32 v13, vcc, 0, v1, vcc3477; GFX8-GISEL-NEXT: v_add_u32_e32 v16, vcc, 48, v03478; GFX8-GISEL-NEXT: flat_load_dwordx4 v[4:7], v[4:5]3479; GFX8-GISEL-NEXT: flat_load_dword v26, v[8:9]3480; GFX8-GISEL-NEXT: v_addc_u32_e32 v17, vcc, 0, v1, vcc3481; GFX8-GISEL-NEXT: flat_load_dwordx4 v[8:11], v[0:1]3482; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 64, v03483; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v1, vcc3484; GFX8-GISEL-NEXT: flat_load_dwordx4 v[12:15], v[12:13]3485; GFX8-GISEL-NEXT: flat_load_dwordx4 v[16:19], v[16:17]3486; GFX8-GISEL-NEXT: flat_load_dwordx4 v[20:23], v[0:1]3487; GFX8-GISEL-NEXT: v_add_u32_e32 v24, vcc, 16, v23488; GFX8-GISEL-NEXT: v_addc_u32_e32 v25, vcc, 0, v3, vcc3489; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 32, v23490; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v3, vcc3491; GFX8-GISEL-NEXT: s_waitcnt vmcnt(5)3492; GFX8-GISEL-NEXT: flat_store_dwordx4 v[24:25], v[4:7]3493; GFX8-GISEL-NEXT: s_nop 03494; GFX8-GISEL-NEXT: v_add_u32_e32 v4, vcc, 48, v23495; GFX8-GISEL-NEXT: v_addc_u32_e32 v5, vcc, 0, v3, vcc3496; GFX8-GISEL-NEXT: s_waitcnt vmcnt(4)3497; GFX8-GISEL-NEXT: flat_store_dwordx4 v[2:3], v[8:11]3498; GFX8-GISEL-NEXT: v_add_u32_e32 v6, vcc, 0x50, v23499; GFX8-GISEL-NEXT: v_add_u32_e64 v8, s[4:5], 64, v23500; GFX8-GISEL-NEXT: v_addc_u32_e64 v9, s[4:5], 0, v3, s[4:5]3501; GFX8-GISEL-NEXT: v_addc_u32_e32 v7, vcc, 0, v3, vcc3502; GFX8-GISEL-NEXT: s_waitcnt vmcnt(4)3503; GFX8-GISEL-NEXT: flat_store_dwordx4 v[0:1], v[12:15]3504; GFX8-GISEL-NEXT: s_waitcnt vmcnt(4)3505; GFX8-GISEL-NEXT: flat_store_dwordx4 v[4:5], v[16:19]3506; GFX8-GISEL-NEXT: s_waitcnt vmcnt(4)3507; GFX8-GISEL-NEXT: flat_store_dwordx4 v[8:9], v[20:23]3508; GFX8-GISEL-NEXT: flat_store_dword v[6:7], v263509; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)3510; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]3511;3512; GFX9-GISEL-LABEL: freeze_v21i32:3513; GFX9-GISEL: ; %bb.0:3514; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3515; GFX9-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off3516; GFX9-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:163517; GFX9-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:323518; GFX9-GISEL-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:483519; GFX9-GISEL-NEXT: global_load_dwordx4 v[20:23], v[0:1], off offset:643520; GFX9-GISEL-NEXT: global_load_dword v24, v[0:1], off offset:803521; GFX9-GISEL-NEXT: s_waitcnt vmcnt(5)3522; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off3523; GFX9-GISEL-NEXT: s_waitcnt vmcnt(5)3524; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:163525; GFX9-GISEL-NEXT: s_waitcnt vmcnt(5)3526; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:323527; GFX9-GISEL-NEXT: s_waitcnt vmcnt(5)3528; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:483529; GFX9-GISEL-NEXT: s_waitcnt vmcnt(5)3530; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[20:23], off offset:643531; GFX9-GISEL-NEXT: s_waitcnt vmcnt(5)3532; GFX9-GISEL-NEXT: global_store_dword v[2:3], v24, off offset:803533; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)3534; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]3535;3536; GFX10-SDAG-LABEL: freeze_v21i32:3537; GFX10-SDAG: ; %bb.0:3538; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3539; GFX10-SDAG-NEXT: s_clause 0x53540; GFX10-SDAG-NEXT: global_load_dword v24, v[0:1], off offset:803541; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off offset:643542; GFX10-SDAG-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:323543; GFX10-SDAG-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:483544; GFX10-SDAG-NEXT: global_load_dwordx4 v[16:19], v[0:1], off3545; GFX10-SDAG-NEXT: global_load_dwordx4 v[20:23], v[0:1], off offset:163546; GFX10-SDAG-NEXT: s_waitcnt vmcnt(5)3547; GFX10-SDAG-NEXT: global_store_dword v[2:3], v24, off offset:803548; GFX10-SDAG-NEXT: s_waitcnt vmcnt(4)3549; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off offset:643550; GFX10-SDAG-NEXT: s_waitcnt vmcnt(3)3551; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:323552; GFX10-SDAG-NEXT: s_waitcnt vmcnt(2)3553; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:483554; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1)3555; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[16:19], off3556; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)3557; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[20:23], off offset:163558; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]3559;3560; GFX10-GISEL-LABEL: freeze_v21i32:3561; GFX10-GISEL: ; %bb.0:3562; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3563; GFX10-GISEL-NEXT: s_clause 0x53564; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off3565; GFX10-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:163566; GFX10-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:323567; GFX10-GISEL-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:483568; GFX10-GISEL-NEXT: global_load_dwordx4 v[20:23], v[0:1], off offset:643569; GFX10-GISEL-NEXT: global_load_dword v24, v[0:1], off offset:803570; GFX10-GISEL-NEXT: s_waitcnt vmcnt(5)3571; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off3572; GFX10-GISEL-NEXT: s_waitcnt vmcnt(4)3573; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:163574; GFX10-GISEL-NEXT: s_waitcnt vmcnt(3)3575; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:323576; GFX10-GISEL-NEXT: s_waitcnt vmcnt(2)3577; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:483578; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1)3579; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[20:23], off offset:643580; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)3581; GFX10-GISEL-NEXT: global_store_dword v[2:3], v24, off offset:803582; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]3583;3584; GFX11-SDAG-LABEL: freeze_v21i32:3585; GFX11-SDAG: ; %bb.0:3586; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3587; GFX11-SDAG-NEXT: s_clause 0x53588; GFX11-SDAG-NEXT: global_load_b32 v24, v[0:1], off offset:803589; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off offset:643590; GFX11-SDAG-NEXT: global_load_b128 v[8:11], v[0:1], off offset:323591; GFX11-SDAG-NEXT: global_load_b128 v[12:15], v[0:1], off offset:483592; GFX11-SDAG-NEXT: global_load_b128 v[16:19], v[0:1], off3593; GFX11-SDAG-NEXT: global_load_b128 v[20:23], v[0:1], off offset:163594; GFX11-SDAG-NEXT: s_waitcnt vmcnt(5)3595; GFX11-SDAG-NEXT: global_store_b32 v[2:3], v24, off offset:803596; GFX11-SDAG-NEXT: s_waitcnt vmcnt(4)3597; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off offset:643598; GFX11-SDAG-NEXT: s_waitcnt vmcnt(3)3599; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[8:11], off offset:323600; GFX11-SDAG-NEXT: s_waitcnt vmcnt(2)3601; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[12:15], off offset:483602; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1)3603; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[16:19], off3604; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0)3605; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[20:23], off offset:163606; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]3607;3608; GFX11-GISEL-LABEL: freeze_v21i32:3609; GFX11-GISEL: ; %bb.0:3610; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3611; GFX11-GISEL-NEXT: s_clause 0x53612; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off3613; GFX11-GISEL-NEXT: global_load_b128 v[8:11], v[0:1], off offset:163614; GFX11-GISEL-NEXT: global_load_b128 v[12:15], v[0:1], off offset:323615; GFX11-GISEL-NEXT: global_load_b128 v[16:19], v[0:1], off offset:483616; GFX11-GISEL-NEXT: global_load_b128 v[20:23], v[0:1], off offset:643617; GFX11-GISEL-NEXT: global_load_b32 v0, v[0:1], off offset:803618; GFX11-GISEL-NEXT: s_waitcnt vmcnt(5)3619; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off3620; GFX11-GISEL-NEXT: s_waitcnt vmcnt(4)3621; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[8:11], off offset:163622; GFX11-GISEL-NEXT: s_waitcnt vmcnt(3)3623; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[12:15], off offset:323624; GFX11-GISEL-NEXT: s_waitcnt vmcnt(2)3625; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[16:19], off offset:483626; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1)3627; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[20:23], off offset:643628; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)3629; GFX11-GISEL-NEXT: global_store_b32 v[2:3], v0, off offset:803630; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]3631 %a = load <21 x i32>, ptr addrspace(1) %ptra, align 43632 %freeze = freeze <21 x i32> %a3633 store <21 x i32> %freeze, ptr addrspace(1) %ptrb, align 43634 ret void3635}3636 3637define void @freeze_v22i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {3638; GFX6-SDAG-LABEL: freeze_v22i32:3639; GFX6-SDAG: ; %bb.0:3640; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3641; GFX6-SDAG-NEXT: s_mov_b32 s6, 03642; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0003643; GFX6-SDAG-NEXT: s_mov_b32 s4, s63644; GFX6-SDAG-NEXT: s_mov_b32 s5, s63645; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:643646; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:323647; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:483648; GFX6-SDAG-NEXT: buffer_load_dwordx2 v[24:25], v[0:1], s[4:7], 0 addr64 offset:803649; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr643650; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[20:23], v[0:1], s[4:7], 0 addr64 offset:163651; GFX6-SDAG-NEXT: s_waitcnt vmcnt(5)3652; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:643653; GFX6-SDAG-NEXT: s_waitcnt vmcnt(5)3654; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:323655; GFX6-SDAG-NEXT: s_waitcnt vmcnt(5)3656; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:483657; GFX6-SDAG-NEXT: s_waitcnt vmcnt(5)3658; GFX6-SDAG-NEXT: buffer_store_dwordx2 v[24:25], v[2:3], s[4:7], 0 addr64 offset:803659; GFX6-SDAG-NEXT: s_waitcnt vmcnt(5)3660; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr643661; GFX6-SDAG-NEXT: s_waitcnt vmcnt(5)3662; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[20:23], v[2:3], s[4:7], 0 addr64 offset:163663; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)3664; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]3665;3666; GFX6-GISEL-LABEL: freeze_v22i32:3667; GFX6-GISEL: ; %bb.0:3668; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3669; GFX6-GISEL-NEXT: s_mov_b32 s6, 03670; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0003671; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 03672; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr643673; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:163674; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:323675; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:483676; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[20:23], v[0:1], s[4:7], 0 addr64 offset:643677; GFX6-GISEL-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr64 offset:803678; GFX6-GISEL-NEXT: s_waitcnt vmcnt(5)3679; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr643680; GFX6-GISEL-NEXT: s_waitcnt vmcnt(5)3681; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:163682; GFX6-GISEL-NEXT: s_waitcnt vmcnt(5)3683; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:323684; GFX6-GISEL-NEXT: s_waitcnt vmcnt(5)3685; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:483686; GFX6-GISEL-NEXT: s_waitcnt vmcnt(5)3687; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[20:23], v[2:3], s[4:7], 0 addr64 offset:643688; GFX6-GISEL-NEXT: s_waitcnt vmcnt(5)3689; GFX6-GISEL-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr64 offset:803690; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)3691; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]3692;3693; GFX7-SDAG-LABEL: freeze_v22i32:3694; GFX7-SDAG: ; %bb.0:3695; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3696; GFX7-SDAG-NEXT: s_mov_b32 s6, 03697; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0003698; GFX7-SDAG-NEXT: s_mov_b32 s4, s63699; GFX7-SDAG-NEXT: s_mov_b32 s5, s63700; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:643701; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:323702; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:483703; GFX7-SDAG-NEXT: buffer_load_dwordx2 v[24:25], v[0:1], s[4:7], 0 addr64 offset:803704; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr643705; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[20:23], v[0:1], s[4:7], 0 addr64 offset:163706; GFX7-SDAG-NEXT: s_waitcnt vmcnt(5)3707; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:643708; GFX7-SDAG-NEXT: s_waitcnt vmcnt(5)3709; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:323710; GFX7-SDAG-NEXT: s_waitcnt vmcnt(5)3711; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:483712; GFX7-SDAG-NEXT: s_waitcnt vmcnt(5)3713; GFX7-SDAG-NEXT: buffer_store_dwordx2 v[24:25], v[2:3], s[4:7], 0 addr64 offset:803714; GFX7-SDAG-NEXT: s_waitcnt vmcnt(5)3715; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr643716; GFX7-SDAG-NEXT: s_waitcnt vmcnt(5)3717; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[20:23], v[2:3], s[4:7], 0 addr64 offset:163718; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)3719; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]3720;3721; GFX7-GISEL-LABEL: freeze_v22i32:3722; GFX7-GISEL: ; %bb.0:3723; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3724; GFX7-GISEL-NEXT: s_mov_b32 s6, 03725; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0003726; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 03727; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr643728; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:163729; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:323730; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:483731; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[20:23], v[0:1], s[4:7], 0 addr64 offset:643732; GFX7-GISEL-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr64 offset:803733; GFX7-GISEL-NEXT: s_waitcnt vmcnt(5)3734; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr643735; GFX7-GISEL-NEXT: s_waitcnt vmcnt(5)3736; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:163737; GFX7-GISEL-NEXT: s_waitcnt vmcnt(5)3738; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:323739; GFX7-GISEL-NEXT: s_waitcnt vmcnt(5)3740; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:483741; GFX7-GISEL-NEXT: s_waitcnt vmcnt(5)3742; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[20:23], v[2:3], s[4:7], 0 addr64 offset:643743; GFX7-GISEL-NEXT: s_waitcnt vmcnt(5)3744; GFX7-GISEL-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr64 offset:803745; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)3746; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]3747;3748; GFX8-GISEL-LABEL: freeze_v22i32:3749; GFX8-GISEL: ; %bb.0:3750; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3751; GFX8-GISEL-NEXT: v_add_u32_e32 v4, vcc, 16, v03752; GFX8-GISEL-NEXT: v_addc_u32_e32 v5, vcc, 0, v1, vcc3753; GFX8-GISEL-NEXT: v_mov_b32_e32 v6, 0x503754; GFX8-GISEL-NEXT: v_add_u32_e32 v8, vcc, v0, v63755; GFX8-GISEL-NEXT: v_addc_u32_e32 v9, vcc, 0, v1, vcc3756; GFX8-GISEL-NEXT: v_add_u32_e32 v12, vcc, 32, v03757; GFX8-GISEL-NEXT: v_addc_u32_e32 v13, vcc, 0, v1, vcc3758; GFX8-GISEL-NEXT: v_add_u32_e32 v16, vcc, 48, v03759; GFX8-GISEL-NEXT: flat_load_dwordx4 v[4:7], v[4:5]3760; GFX8-GISEL-NEXT: flat_load_dwordx2 v[24:25], v[8:9]3761; GFX8-GISEL-NEXT: v_addc_u32_e32 v17, vcc, 0, v1, vcc3762; GFX8-GISEL-NEXT: flat_load_dwordx4 v[8:11], v[0:1]3763; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 64, v03764; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v1, vcc3765; GFX8-GISEL-NEXT: flat_load_dwordx4 v[12:15], v[12:13]3766; GFX8-GISEL-NEXT: flat_load_dwordx4 v[16:19], v[16:17]3767; GFX8-GISEL-NEXT: flat_load_dwordx4 v[20:23], v[0:1]3768; GFX8-GISEL-NEXT: v_add_u32_e32 v26, vcc, 16, v23769; GFX8-GISEL-NEXT: v_addc_u32_e32 v27, vcc, 0, v3, vcc3770; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 32, v23771; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v3, vcc3772; GFX8-GISEL-NEXT: s_waitcnt vmcnt(5)3773; GFX8-GISEL-NEXT: flat_store_dwordx4 v[26:27], v[4:7]3774; GFX8-GISEL-NEXT: s_nop 03775; GFX8-GISEL-NEXT: v_add_u32_e32 v4, vcc, 48, v23776; GFX8-GISEL-NEXT: v_addc_u32_e32 v5, vcc, 0, v3, vcc3777; GFX8-GISEL-NEXT: s_waitcnt vmcnt(4)3778; GFX8-GISEL-NEXT: flat_store_dwordx4 v[2:3], v[8:11]3779; GFX8-GISEL-NEXT: v_add_u32_e32 v6, vcc, 0x50, v23780; GFX8-GISEL-NEXT: v_add_u32_e64 v8, s[4:5], 64, v23781; GFX8-GISEL-NEXT: v_addc_u32_e64 v9, s[4:5], 0, v3, s[4:5]3782; GFX8-GISEL-NEXT: v_addc_u32_e32 v7, vcc, 0, v3, vcc3783; GFX8-GISEL-NEXT: s_waitcnt vmcnt(4)3784; GFX8-GISEL-NEXT: flat_store_dwordx4 v[0:1], v[12:15]3785; GFX8-GISEL-NEXT: s_waitcnt vmcnt(4)3786; GFX8-GISEL-NEXT: flat_store_dwordx4 v[4:5], v[16:19]3787; GFX8-GISEL-NEXT: s_waitcnt vmcnt(4)3788; GFX8-GISEL-NEXT: flat_store_dwordx4 v[8:9], v[20:23]3789; GFX8-GISEL-NEXT: flat_store_dwordx2 v[6:7], v[24:25]3790; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)3791; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]3792;3793; GFX9-GISEL-LABEL: freeze_v22i32:3794; GFX9-GISEL: ; %bb.0:3795; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3796; GFX9-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off3797; GFX9-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:163798; GFX9-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:323799; GFX9-GISEL-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:483800; GFX9-GISEL-NEXT: global_load_dwordx4 v[20:23], v[0:1], off offset:643801; GFX9-GISEL-NEXT: global_load_dwordx2 v[24:25], v[0:1], off offset:803802; GFX9-GISEL-NEXT: s_waitcnt vmcnt(5)3803; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off3804; GFX9-GISEL-NEXT: s_waitcnt vmcnt(5)3805; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:163806; GFX9-GISEL-NEXT: s_waitcnt vmcnt(5)3807; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:323808; GFX9-GISEL-NEXT: s_waitcnt vmcnt(5)3809; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:483810; GFX9-GISEL-NEXT: s_waitcnt vmcnt(5)3811; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[20:23], off offset:643812; GFX9-GISEL-NEXT: s_waitcnt vmcnt(5)3813; GFX9-GISEL-NEXT: global_store_dwordx2 v[2:3], v[24:25], off offset:803814; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)3815; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]3816;3817; GFX10-SDAG-LABEL: freeze_v22i32:3818; GFX10-SDAG: ; %bb.0:3819; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3820; GFX10-SDAG-NEXT: s_clause 0x53821; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off offset:643822; GFX10-SDAG-NEXT: global_load_dwordx2 v[24:25], v[0:1], off offset:803823; GFX10-SDAG-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:323824; GFX10-SDAG-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:483825; GFX10-SDAG-NEXT: global_load_dwordx4 v[16:19], v[0:1], off3826; GFX10-SDAG-NEXT: global_load_dwordx4 v[20:23], v[0:1], off offset:163827; GFX10-SDAG-NEXT: s_waitcnt vmcnt(5)3828; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off offset:643829; GFX10-SDAG-NEXT: s_waitcnt vmcnt(4)3830; GFX10-SDAG-NEXT: global_store_dwordx2 v[2:3], v[24:25], off offset:803831; GFX10-SDAG-NEXT: s_waitcnt vmcnt(3)3832; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:323833; GFX10-SDAG-NEXT: s_waitcnt vmcnt(2)3834; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:483835; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1)3836; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[16:19], off3837; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)3838; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[20:23], off offset:163839; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]3840;3841; GFX10-GISEL-LABEL: freeze_v22i32:3842; GFX10-GISEL: ; %bb.0:3843; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3844; GFX10-GISEL-NEXT: s_clause 0x53845; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off3846; GFX10-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:163847; GFX10-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:323848; GFX10-GISEL-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:483849; GFX10-GISEL-NEXT: global_load_dwordx4 v[20:23], v[0:1], off offset:643850; GFX10-GISEL-NEXT: global_load_dwordx2 v[24:25], v[0:1], off offset:803851; GFX10-GISEL-NEXT: s_waitcnt vmcnt(5)3852; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off3853; GFX10-GISEL-NEXT: s_waitcnt vmcnt(4)3854; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:163855; GFX10-GISEL-NEXT: s_waitcnt vmcnt(3)3856; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:323857; GFX10-GISEL-NEXT: s_waitcnt vmcnt(2)3858; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:483859; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1)3860; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[20:23], off offset:643861; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)3862; GFX10-GISEL-NEXT: global_store_dwordx2 v[2:3], v[24:25], off offset:803863; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]3864;3865; GFX11-SDAG-LABEL: freeze_v22i32:3866; GFX11-SDAG: ; %bb.0:3867; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3868; GFX11-SDAG-NEXT: s_clause 0x53869; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off offset:643870; GFX11-SDAG-NEXT: global_load_b64 v[24:25], v[0:1], off offset:803871; GFX11-SDAG-NEXT: global_load_b128 v[8:11], v[0:1], off offset:323872; GFX11-SDAG-NEXT: global_load_b128 v[12:15], v[0:1], off offset:483873; GFX11-SDAG-NEXT: global_load_b128 v[16:19], v[0:1], off3874; GFX11-SDAG-NEXT: global_load_b128 v[20:23], v[0:1], off offset:163875; GFX11-SDAG-NEXT: s_waitcnt vmcnt(5)3876; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off offset:643877; GFX11-SDAG-NEXT: s_waitcnt vmcnt(4)3878; GFX11-SDAG-NEXT: global_store_b64 v[2:3], v[24:25], off offset:803879; GFX11-SDAG-NEXT: s_waitcnt vmcnt(3)3880; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[8:11], off offset:323881; GFX11-SDAG-NEXT: s_waitcnt vmcnt(2)3882; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[12:15], off offset:483883; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1)3884; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[16:19], off3885; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0)3886; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[20:23], off offset:163887; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]3888;3889; GFX11-GISEL-LABEL: freeze_v22i32:3890; GFX11-GISEL: ; %bb.0:3891; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3892; GFX11-GISEL-NEXT: s_clause 0x53893; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off3894; GFX11-GISEL-NEXT: global_load_b128 v[8:11], v[0:1], off offset:163895; GFX11-GISEL-NEXT: global_load_b128 v[12:15], v[0:1], off offset:323896; GFX11-GISEL-NEXT: global_load_b128 v[16:19], v[0:1], off offset:483897; GFX11-GISEL-NEXT: global_load_b128 v[20:23], v[0:1], off offset:643898; GFX11-GISEL-NEXT: global_load_b64 v[0:1], v[0:1], off offset:803899; GFX11-GISEL-NEXT: s_waitcnt vmcnt(5)3900; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off3901; GFX11-GISEL-NEXT: s_waitcnt vmcnt(4)3902; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[8:11], off offset:163903; GFX11-GISEL-NEXT: s_waitcnt vmcnt(3)3904; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[12:15], off offset:323905; GFX11-GISEL-NEXT: s_waitcnt vmcnt(2)3906; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[16:19], off offset:483907; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1)3908; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[20:23], off offset:643909; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)3910; GFX11-GISEL-NEXT: global_store_b64 v[2:3], v[0:1], off offset:803911; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]3912 %a = load <22 x i32>, ptr addrspace(1) %ptra, align 43913 %freeze = freeze <22 x i32> %a3914 store <22 x i32> %freeze, ptr addrspace(1) %ptrb, align 43915 ret void3916}3917 3918define void @freeze_v30i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {3919; GFX6-SDAG-LABEL: freeze_v30i32:3920; GFX6-SDAG: ; %bb.0:3921; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3922; GFX6-SDAG-NEXT: s_mov_b32 s6, 03923; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0003924; GFX6-SDAG-NEXT: s_mov_b32 s4, s63925; GFX6-SDAG-NEXT: s_mov_b32 s5, s63926; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:963927; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:643928; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:803929; GFX6-SDAG-NEXT: buffer_load_dwordx2 v[32:33], v[0:1], s[4:7], 0 addr64 offset:1123930; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:323931; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[20:23], v[0:1], s[4:7], 0 addr64 offset:483932; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[24:27], v[0:1], s[4:7], 0 addr643933; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[28:31], v[0:1], s[4:7], 0 addr64 offset:163934; GFX6-SDAG-NEXT: s_waitcnt vmcnt(7)3935; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:963936; GFX6-SDAG-NEXT: s_waitcnt vmcnt(7)3937; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:643938; GFX6-SDAG-NEXT: s_waitcnt vmcnt(7)3939; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:803940; GFX6-SDAG-NEXT: s_waitcnt vmcnt(7)3941; GFX6-SDAG-NEXT: buffer_store_dwordx2 v[32:33], v[2:3], s[4:7], 0 addr64 offset:1123942; GFX6-SDAG-NEXT: s_waitcnt vmcnt(7)3943; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:323944; GFX6-SDAG-NEXT: s_waitcnt vmcnt(7)3945; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[20:23], v[2:3], s[4:7], 0 addr64 offset:483946; GFX6-SDAG-NEXT: s_waitcnt vmcnt(7)3947; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[24:27], v[2:3], s[4:7], 0 addr643948; GFX6-SDAG-NEXT: s_waitcnt vmcnt(7)3949; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[28:31], v[2:3], s[4:7], 0 addr64 offset:163950; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)3951; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]3952;3953; GFX6-GISEL-LABEL: freeze_v30i32:3954; GFX6-GISEL: ; %bb.0:3955; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3956; GFX6-GISEL-NEXT: s_mov_b32 s6, 03957; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0003958; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 03959; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr643960; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:163961; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:323962; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:483963; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[20:23], v[0:1], s[4:7], 0 addr64 offset:643964; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[24:27], v[0:1], s[4:7], 0 addr64 offset:803965; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[28:31], v[0:1], s[4:7], 0 addr64 offset:963966; GFX6-GISEL-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr64 offset:1123967; GFX6-GISEL-NEXT: s_waitcnt vmcnt(7)3968; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr643969; GFX6-GISEL-NEXT: s_waitcnt vmcnt(7)3970; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:163971; GFX6-GISEL-NEXT: s_waitcnt vmcnt(7)3972; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:323973; GFX6-GISEL-NEXT: s_waitcnt vmcnt(7)3974; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:483975; GFX6-GISEL-NEXT: s_waitcnt vmcnt(7)3976; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[20:23], v[2:3], s[4:7], 0 addr64 offset:643977; GFX6-GISEL-NEXT: s_waitcnt vmcnt(7)3978; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[24:27], v[2:3], s[4:7], 0 addr64 offset:803979; GFX6-GISEL-NEXT: s_waitcnt vmcnt(7)3980; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[28:31], v[2:3], s[4:7], 0 addr64 offset:963981; GFX6-GISEL-NEXT: s_waitcnt vmcnt(7)3982; GFX6-GISEL-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr64 offset:1123983; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)3984; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]3985;3986; GFX7-SDAG-LABEL: freeze_v30i32:3987; GFX7-SDAG: ; %bb.0:3988; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3989; GFX7-SDAG-NEXT: s_mov_b32 s6, 03990; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0003991; GFX7-SDAG-NEXT: s_mov_b32 s4, s63992; GFX7-SDAG-NEXT: s_mov_b32 s5, s63993; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:963994; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:643995; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:803996; GFX7-SDAG-NEXT: buffer_load_dwordx2 v[32:33], v[0:1], s[4:7], 0 addr64 offset:1123997; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:323998; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[20:23], v[0:1], s[4:7], 0 addr64 offset:483999; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[24:27], v[0:1], s[4:7], 0 addr644000; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[28:31], v[0:1], s[4:7], 0 addr64 offset:164001; GFX7-SDAG-NEXT: s_waitcnt vmcnt(7)4002; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:964003; GFX7-SDAG-NEXT: s_waitcnt vmcnt(7)4004; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:644005; GFX7-SDAG-NEXT: s_waitcnt vmcnt(7)4006; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:804007; GFX7-SDAG-NEXT: s_waitcnt vmcnt(7)4008; GFX7-SDAG-NEXT: buffer_store_dwordx2 v[32:33], v[2:3], s[4:7], 0 addr64 offset:1124009; GFX7-SDAG-NEXT: s_waitcnt vmcnt(7)4010; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:324011; GFX7-SDAG-NEXT: s_waitcnt vmcnt(7)4012; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[20:23], v[2:3], s[4:7], 0 addr64 offset:484013; GFX7-SDAG-NEXT: s_waitcnt vmcnt(7)4014; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[24:27], v[2:3], s[4:7], 0 addr644015; GFX7-SDAG-NEXT: s_waitcnt vmcnt(7)4016; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[28:31], v[2:3], s[4:7], 0 addr64 offset:164017; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)4018; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]4019;4020; GFX7-GISEL-LABEL: freeze_v30i32:4021; GFX7-GISEL: ; %bb.0:4022; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4023; GFX7-GISEL-NEXT: s_mov_b32 s6, 04024; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0004025; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 04026; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr644027; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:164028; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:324029; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:484030; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[20:23], v[0:1], s[4:7], 0 addr64 offset:644031; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[24:27], v[0:1], s[4:7], 0 addr64 offset:804032; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[28:31], v[0:1], s[4:7], 0 addr64 offset:964033; GFX7-GISEL-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr64 offset:1124034; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)4035; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr644036; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)4037; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:164038; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)4039; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:324040; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)4041; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:484042; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)4043; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[20:23], v[2:3], s[4:7], 0 addr64 offset:644044; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)4045; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[24:27], v[2:3], s[4:7], 0 addr64 offset:804046; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)4047; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[28:31], v[2:3], s[4:7], 0 addr64 offset:964048; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)4049; GFX7-GISEL-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr64 offset:1124050; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)4051; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]4052;4053; GFX8-GISEL-LABEL: freeze_v30i32:4054; GFX8-GISEL: ; %bb.0:4055; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4056; GFX8-GISEL-NEXT: v_add_u32_e32 v4, vcc, 16, v04057; GFX8-GISEL-NEXT: v_addc_u32_e32 v5, vcc, 0, v1, vcc4058; GFX8-GISEL-NEXT: v_add_u32_e32 v12, vcc, 32, v04059; GFX8-GISEL-NEXT: v_addc_u32_e32 v13, vcc, 0, v1, vcc4060; GFX8-GISEL-NEXT: v_add_u32_e32 v16, vcc, 48, v04061; GFX8-GISEL-NEXT: flat_load_dwordx4 v[4:7], v[4:5]4062; GFX8-GISEL-NEXT: flat_load_dwordx4 v[8:11], v[0:1]4063; GFX8-GISEL-NEXT: v_addc_u32_e32 v17, vcc, 0, v1, vcc4064; GFX8-GISEL-NEXT: v_add_u32_e32 v20, vcc, 64, v04065; GFX8-GISEL-NEXT: v_addc_u32_e32 v21, vcc, 0, v1, vcc4066; GFX8-GISEL-NEXT: v_mov_b32_e32 v34, 0x504067; GFX8-GISEL-NEXT: v_add_u32_e32 v24, vcc, v0, v344068; GFX8-GISEL-NEXT: v_addc_u32_e32 v25, vcc, 0, v1, vcc4069; GFX8-GISEL-NEXT: v_mov_b32_e32 v14, 0x604070; GFX8-GISEL-NEXT: v_add_u32_e32 v28, vcc, v0, v144071; GFX8-GISEL-NEXT: v_addc_u32_e32 v29, vcc, 0, v1, vcc4072; GFX8-GISEL-NEXT: v_mov_b32_e32 v14, 0x704073; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, v0, v144074; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v1, vcc4075; GFX8-GISEL-NEXT: flat_load_dwordx4 v[12:15], v[12:13]4076; GFX8-GISEL-NEXT: flat_load_dwordx4 v[16:19], v[16:17]4077; GFX8-GISEL-NEXT: flat_load_dwordx4 v[20:23], v[20:21]4078; GFX8-GISEL-NEXT: flat_load_dwordx4 v[24:27], v[24:25]4079; GFX8-GISEL-NEXT: flat_load_dwordx4 v[28:31], v[28:29]4080; GFX8-GISEL-NEXT: flat_load_dwordx2 v[0:1], v[0:1]4081; GFX8-GISEL-NEXT: v_add_u32_e32 v32, vcc, 16, v24082; GFX8-GISEL-NEXT: v_addc_u32_e32 v33, vcc, 0, v3, vcc4083; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)4084; GFX8-GISEL-NEXT: flat_store_dwordx4 v[32:33], v[4:7]4085; GFX8-GISEL-NEXT: s_nop 04086; GFX8-GISEL-NEXT: v_add_u32_e32 v4, vcc, 32, v24087; GFX8-GISEL-NEXT: v_addc_u32_e32 v5, vcc, 0, v3, vcc4088; GFX8-GISEL-NEXT: v_add_u32_e32 v6, vcc, 48, v24089; GFX8-GISEL-NEXT: v_addc_u32_e32 v7, vcc, 0, v3, vcc4090; GFX8-GISEL-NEXT: v_add_u32_e32 v32, vcc, v2, v344091; GFX8-GISEL-NEXT: v_add_u32_e64 v34, s[4:5], 64, v24092; GFX8-GISEL-NEXT: v_addc_u32_e64 v35, s[4:5], 0, v3, s[4:5]4093; GFX8-GISEL-NEXT: s_mov_b64 s[4:5], vcc4094; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)4095; GFX8-GISEL-NEXT: flat_store_dwordx4 v[2:3], v[8:11]4096; GFX8-GISEL-NEXT: v_addc_u32_e64 v33, s[4:5], 0, v3, s[4:5]4097; GFX8-GISEL-NEXT: v_add_u32_e32 v8, vcc, 0x60, v24098; GFX8-GISEL-NEXT: s_mov_b64 s[4:5], vcc4099; GFX8-GISEL-NEXT: v_add_u32_e32 v2, vcc, 0x70, v24100; GFX8-GISEL-NEXT: v_addc_u32_e64 v9, s[4:5], 0, v3, s[4:5]4101; GFX8-GISEL-NEXT: v_addc_u32_e32 v3, vcc, 0, v3, vcc4102; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)4103; GFX8-GISEL-NEXT: flat_store_dwordx4 v[4:5], v[12:15]4104; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)4105; GFX8-GISEL-NEXT: flat_store_dwordx4 v[6:7], v[16:19]4106; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)4107; GFX8-GISEL-NEXT: flat_store_dwordx4 v[34:35], v[20:23]4108; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)4109; GFX8-GISEL-NEXT: flat_store_dwordx4 v[32:33], v[24:27]4110; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)4111; GFX8-GISEL-NEXT: flat_store_dwordx4 v[8:9], v[28:31]4112; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)4113; GFX8-GISEL-NEXT: flat_store_dwordx2 v[2:3], v[0:1]4114; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)4115; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]4116;4117; GFX9-GISEL-LABEL: freeze_v30i32:4118; GFX9-GISEL: ; %bb.0:4119; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4120; GFX9-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off4121; GFX9-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:164122; GFX9-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:324123; GFX9-GISEL-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:484124; GFX9-GISEL-NEXT: global_load_dwordx4 v[20:23], v[0:1], off offset:644125; GFX9-GISEL-NEXT: global_load_dwordx4 v[24:27], v[0:1], off offset:804126; GFX9-GISEL-NEXT: global_load_dwordx4 v[28:31], v[0:1], off offset:964127; GFX9-GISEL-NEXT: s_nop 04128; GFX9-GISEL-NEXT: global_load_dwordx2 v[0:1], v[0:1], off offset:1124129; GFX9-GISEL-NEXT: s_waitcnt vmcnt(7)4130; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off4131; GFX9-GISEL-NEXT: s_waitcnt vmcnt(7)4132; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:164133; GFX9-GISEL-NEXT: s_waitcnt vmcnt(7)4134; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:324135; GFX9-GISEL-NEXT: s_waitcnt vmcnt(7)4136; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:484137; GFX9-GISEL-NEXT: s_waitcnt vmcnt(7)4138; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[20:23], off offset:644139; GFX9-GISEL-NEXT: s_waitcnt vmcnt(7)4140; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[24:27], off offset:804141; GFX9-GISEL-NEXT: s_waitcnt vmcnt(7)4142; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[28:31], off offset:964143; GFX9-GISEL-NEXT: s_waitcnt vmcnt(7)4144; GFX9-GISEL-NEXT: global_store_dwordx2 v[2:3], v[0:1], off offset:1124145; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)4146; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]4147;4148; GFX10-SDAG-LABEL: freeze_v30i32:4149; GFX10-SDAG: ; %bb.0:4150; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4151; GFX10-SDAG-NEXT: s_clause 0x74152; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off offset:964153; GFX10-SDAG-NEXT: global_load_dwordx2 v[32:33], v[0:1], off offset:1124154; GFX10-SDAG-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:644155; GFX10-SDAG-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:804156; GFX10-SDAG-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:324157; GFX10-SDAG-NEXT: global_load_dwordx4 v[20:23], v[0:1], off offset:484158; GFX10-SDAG-NEXT: global_load_dwordx4 v[24:27], v[0:1], off4159; GFX10-SDAG-NEXT: global_load_dwordx4 v[28:31], v[0:1], off offset:164160; GFX10-SDAG-NEXT: s_waitcnt vmcnt(7)4161; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off offset:964162; GFX10-SDAG-NEXT: s_waitcnt vmcnt(6)4163; GFX10-SDAG-NEXT: global_store_dwordx2 v[2:3], v[32:33], off offset:1124164; GFX10-SDAG-NEXT: s_waitcnt vmcnt(5)4165; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:644166; GFX10-SDAG-NEXT: s_waitcnt vmcnt(4)4167; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:804168; GFX10-SDAG-NEXT: s_waitcnt vmcnt(3)4169; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:324170; GFX10-SDAG-NEXT: s_waitcnt vmcnt(2)4171; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[20:23], off offset:484172; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1)4173; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[24:27], off4174; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)4175; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[28:31], off offset:164176; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]4177;4178; GFX10-GISEL-LABEL: freeze_v30i32:4179; GFX10-GISEL: ; %bb.0:4180; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4181; GFX10-GISEL-NEXT: s_clause 0x74182; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off4183; GFX10-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:164184; GFX10-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:324185; GFX10-GISEL-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:484186; GFX10-GISEL-NEXT: global_load_dwordx4 v[20:23], v[0:1], off offset:644187; GFX10-GISEL-NEXT: global_load_dwordx4 v[24:27], v[0:1], off offset:804188; GFX10-GISEL-NEXT: global_load_dwordx4 v[28:31], v[0:1], off offset:964189; GFX10-GISEL-NEXT: global_load_dwordx2 v[32:33], v[0:1], off offset:1124190; GFX10-GISEL-NEXT: s_waitcnt vmcnt(7)4191; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off4192; GFX10-GISEL-NEXT: s_waitcnt vmcnt(6)4193; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:164194; GFX10-GISEL-NEXT: s_waitcnt vmcnt(5)4195; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:324196; GFX10-GISEL-NEXT: s_waitcnt vmcnt(4)4197; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:484198; GFX10-GISEL-NEXT: s_waitcnt vmcnt(3)4199; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[20:23], off offset:644200; GFX10-GISEL-NEXT: s_waitcnt vmcnt(2)4201; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[24:27], off offset:804202; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1)4203; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[28:31], off offset:964204; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)4205; GFX10-GISEL-NEXT: global_store_dwordx2 v[2:3], v[32:33], off offset:1124206; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]4207;4208; GFX11-SDAG-LABEL: freeze_v30i32:4209; GFX11-SDAG: ; %bb.0:4210; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4211; GFX11-SDAG-NEXT: s_clause 0x74212; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off offset:964213; GFX11-SDAG-NEXT: global_load_b64 v[32:33], v[0:1], off offset:1124214; GFX11-SDAG-NEXT: global_load_b128 v[8:11], v[0:1], off offset:644215; GFX11-SDAG-NEXT: global_load_b128 v[12:15], v[0:1], off offset:804216; GFX11-SDAG-NEXT: global_load_b128 v[16:19], v[0:1], off offset:324217; GFX11-SDAG-NEXT: global_load_b128 v[20:23], v[0:1], off offset:484218; GFX11-SDAG-NEXT: global_load_b128 v[24:27], v[0:1], off4219; GFX11-SDAG-NEXT: global_load_b128 v[28:31], v[0:1], off offset:164220; GFX11-SDAG-NEXT: s_waitcnt vmcnt(7)4221; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off offset:964222; GFX11-SDAG-NEXT: s_waitcnt vmcnt(6)4223; GFX11-SDAG-NEXT: global_store_b64 v[2:3], v[32:33], off offset:1124224; GFX11-SDAG-NEXT: s_waitcnt vmcnt(5)4225; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[8:11], off offset:644226; GFX11-SDAG-NEXT: s_waitcnt vmcnt(4)4227; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[12:15], off offset:804228; GFX11-SDAG-NEXT: s_waitcnt vmcnt(3)4229; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[16:19], off offset:324230; GFX11-SDAG-NEXT: s_waitcnt vmcnt(2)4231; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[20:23], off offset:484232; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1)4233; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[24:27], off4234; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0)4235; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[28:31], off offset:164236; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]4237;4238; GFX11-GISEL-LABEL: freeze_v30i32:4239; GFX11-GISEL: ; %bb.0:4240; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4241; GFX11-GISEL-NEXT: s_clause 0x74242; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off4243; GFX11-GISEL-NEXT: global_load_b128 v[8:11], v[0:1], off offset:164244; GFX11-GISEL-NEXT: global_load_b128 v[12:15], v[0:1], off offset:324245; GFX11-GISEL-NEXT: global_load_b128 v[16:19], v[0:1], off offset:484246; GFX11-GISEL-NEXT: global_load_b128 v[20:23], v[0:1], off offset:644247; GFX11-GISEL-NEXT: global_load_b128 v[24:27], v[0:1], off offset:804248; GFX11-GISEL-NEXT: global_load_b128 v[28:31], v[0:1], off offset:964249; GFX11-GISEL-NEXT: global_load_b64 v[0:1], v[0:1], off offset:1124250; GFX11-GISEL-NEXT: s_waitcnt vmcnt(7)4251; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off4252; GFX11-GISEL-NEXT: s_waitcnt vmcnt(6)4253; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[8:11], off offset:164254; GFX11-GISEL-NEXT: s_waitcnt vmcnt(5)4255; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[12:15], off offset:324256; GFX11-GISEL-NEXT: s_waitcnt vmcnt(4)4257; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[16:19], off offset:484258; GFX11-GISEL-NEXT: s_waitcnt vmcnt(3)4259; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[20:23], off offset:644260; GFX11-GISEL-NEXT: s_waitcnt vmcnt(2)4261; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[24:27], off offset:804262; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1)4263; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[28:31], off offset:964264; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)4265; GFX11-GISEL-NEXT: global_store_b64 v[2:3], v[0:1], off offset:1124266; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]4267 %a = load <30 x i32>, ptr addrspace(1) %ptra, align 44268 %freeze = freeze <30 x i32> %a4269 store <30 x i32> %freeze, ptr addrspace(1) %ptrb, align 44270 ret void4271}4272 4273define void @freeze_v31i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {4274; GFX6-SDAG-LABEL: freeze_v31i32:4275; GFX6-SDAG: ; %bb.0:4276; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4277; GFX6-SDAG-NEXT: s_mov_b32 s6, 04278; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0004279; GFX6-SDAG-NEXT: s_mov_b32 s4, s64280; GFX6-SDAG-NEXT: s_mov_b32 s5, s64281; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:964282; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:644283; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:804284; GFX6-SDAG-NEXT: buffer_load_dword v34, v[0:1], s[4:7], 0 addr64 offset:1204285; GFX6-SDAG-NEXT: buffer_load_dwordx2 v[32:33], v[0:1], s[4:7], 0 addr64 offset:1124286; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:324287; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[20:23], v[0:1], s[4:7], 0 addr64 offset:484288; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[24:27], v[0:1], s[4:7], 0 addr644289; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[28:31], v[0:1], s[4:7], 0 addr64 offset:164290; GFX6-SDAG-NEXT: s_waitcnt vmcnt(8)4291; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:964292; GFX6-SDAG-NEXT: s_waitcnt vmcnt(8)4293; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:644294; GFX6-SDAG-NEXT: s_waitcnt vmcnt(8)4295; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:804296; GFX6-SDAG-NEXT: s_waitcnt vmcnt(8)4297; GFX6-SDAG-NEXT: buffer_store_dword v34, v[2:3], s[4:7], 0 addr64 offset:1204298; GFX6-SDAG-NEXT: s_waitcnt vmcnt(8)4299; GFX6-SDAG-NEXT: buffer_store_dwordx2 v[32:33], v[2:3], s[4:7], 0 addr64 offset:1124300; GFX6-SDAG-NEXT: s_waitcnt vmcnt(8)4301; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:324302; GFX6-SDAG-NEXT: s_waitcnt vmcnt(8)4303; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[20:23], v[2:3], s[4:7], 0 addr64 offset:484304; GFX6-SDAG-NEXT: s_waitcnt vmcnt(8)4305; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[24:27], v[2:3], s[4:7], 0 addr644306; GFX6-SDAG-NEXT: s_waitcnt vmcnt(8)4307; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[28:31], v[2:3], s[4:7], 0 addr64 offset:164308; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)4309; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]4310;4311; GFX6-GISEL-LABEL: freeze_v31i32:4312; GFX6-GISEL: ; %bb.0:4313; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4314; GFX6-GISEL-NEXT: s_mov_b32 s6, 04315; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0004316; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 04317; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr644318; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:164319; GFX6-GISEL-NEXT: buffer_load_dword v34, v[0:1], s[4:7], 0 addr64 offset:1204320; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:324321; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:484322; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[20:23], v[0:1], s[4:7], 0 addr64 offset:644323; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[24:27], v[0:1], s[4:7], 0 addr64 offset:804324; GFX6-GISEL-NEXT: buffer_load_dwordx2 v[32:33], v[0:1], s[4:7], 0 addr64 offset:1124325; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[28:31], v[0:1], s[4:7], 0 addr64 offset:964326; GFX6-GISEL-NEXT: s_waitcnt vmcnt(8)4327; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr644328; GFX6-GISEL-NEXT: s_waitcnt vmcnt(8)4329; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:164330; GFX6-GISEL-NEXT: s_waitcnt vmcnt(7)4331; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:324332; GFX6-GISEL-NEXT: s_waitcnt vmcnt(7)4333; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:484334; GFX6-GISEL-NEXT: s_waitcnt vmcnt(7)4335; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[20:23], v[2:3], s[4:7], 0 addr64 offset:644336; GFX6-GISEL-NEXT: s_waitcnt vmcnt(7)4337; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[24:27], v[2:3], s[4:7], 0 addr64 offset:804338; GFX6-GISEL-NEXT: s_waitcnt vmcnt(6)4339; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[28:31], v[2:3], s[4:7], 0 addr64 offset:964340; GFX6-GISEL-NEXT: buffer_store_dwordx2 v[32:33], v[2:3], s[4:7], 0 addr64 offset:1124341; GFX6-GISEL-NEXT: buffer_store_dword v34, v[2:3], s[4:7], 0 addr64 offset:1204342; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)4343; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]4344;4345; GFX7-SDAG-LABEL: freeze_v31i32:4346; GFX7-SDAG: ; %bb.0:4347; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4348; GFX7-SDAG-NEXT: s_mov_b32 s6, 04349; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0004350; GFX7-SDAG-NEXT: s_mov_b32 s4, s64351; GFX7-SDAG-NEXT: s_mov_b32 s5, s64352; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:964353; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:644354; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:804355; GFX7-SDAG-NEXT: buffer_load_dword v34, v[0:1], s[4:7], 0 addr64 offset:1204356; GFX7-SDAG-NEXT: buffer_load_dwordx2 v[32:33], v[0:1], s[4:7], 0 addr64 offset:1124357; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:324358; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[20:23], v[0:1], s[4:7], 0 addr64 offset:484359; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[24:27], v[0:1], s[4:7], 0 addr644360; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[28:31], v[0:1], s[4:7], 0 addr64 offset:164361; GFX7-SDAG-NEXT: s_waitcnt vmcnt(8)4362; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:964363; GFX7-SDAG-NEXT: s_waitcnt vmcnt(8)4364; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:644365; GFX7-SDAG-NEXT: s_waitcnt vmcnt(8)4366; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:804367; GFX7-SDAG-NEXT: s_waitcnt vmcnt(8)4368; GFX7-SDAG-NEXT: buffer_store_dword v34, v[2:3], s[4:7], 0 addr64 offset:1204369; GFX7-SDAG-NEXT: s_waitcnt vmcnt(8)4370; GFX7-SDAG-NEXT: buffer_store_dwordx2 v[32:33], v[2:3], s[4:7], 0 addr64 offset:1124371; GFX7-SDAG-NEXT: s_waitcnt vmcnt(8)4372; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:324373; GFX7-SDAG-NEXT: s_waitcnt vmcnt(8)4374; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[20:23], v[2:3], s[4:7], 0 addr64 offset:484375; GFX7-SDAG-NEXT: s_waitcnt vmcnt(8)4376; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[24:27], v[2:3], s[4:7], 0 addr644377; GFX7-SDAG-NEXT: s_waitcnt vmcnt(8)4378; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[28:31], v[2:3], s[4:7], 0 addr64 offset:164379; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)4380; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]4381;4382; GFX7-GISEL-LABEL: freeze_v31i32:4383; GFX7-GISEL: ; %bb.0:4384; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4385; GFX7-GISEL-NEXT: s_mov_b32 s6, 04386; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0004387; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 04388; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr644389; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:164390; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:324391; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:484392; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[20:23], v[0:1], s[4:7], 0 addr64 offset:644393; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[24:27], v[0:1], s[4:7], 0 addr64 offset:804394; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[28:31], v[0:1], s[4:7], 0 addr64 offset:964395; GFX7-GISEL-NEXT: buffer_load_dwordx3 v[32:34], v[0:1], s[4:7], 0 addr64 offset:1124396; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)4397; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr644398; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)4399; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:164400; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)4401; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:324402; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)4403; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:484404; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)4405; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[20:23], v[2:3], s[4:7], 0 addr64 offset:644406; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)4407; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[24:27], v[2:3], s[4:7], 0 addr64 offset:804408; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)4409; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[28:31], v[2:3], s[4:7], 0 addr64 offset:964410; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)4411; GFX7-GISEL-NEXT: buffer_store_dwordx3 v[32:34], v[2:3], s[4:7], 0 addr64 offset:1124412; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)4413; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]4414;4415; GFX8-GISEL-LABEL: freeze_v31i32:4416; GFX8-GISEL: ; %bb.0:4417; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4418; GFX8-GISEL-NEXT: v_add_u32_e32 v4, vcc, 16, v04419; GFX8-GISEL-NEXT: v_addc_u32_e32 v5, vcc, 0, v1, vcc4420; GFX8-GISEL-NEXT: v_add_u32_e32 v12, vcc, 32, v04421; GFX8-GISEL-NEXT: v_addc_u32_e32 v13, vcc, 0, v1, vcc4422; GFX8-GISEL-NEXT: v_add_u32_e32 v16, vcc, 48, v04423; GFX8-GISEL-NEXT: flat_load_dwordx4 v[4:7], v[4:5]4424; GFX8-GISEL-NEXT: flat_load_dwordx4 v[8:11], v[0:1]4425; GFX8-GISEL-NEXT: v_addc_u32_e32 v17, vcc, 0, v1, vcc4426; GFX8-GISEL-NEXT: v_add_u32_e32 v20, vcc, 64, v04427; GFX8-GISEL-NEXT: v_addc_u32_e32 v21, vcc, 0, v1, vcc4428; GFX8-GISEL-NEXT: v_mov_b32_e32 v35, 0x504429; GFX8-GISEL-NEXT: v_add_u32_e32 v24, vcc, v0, v354430; GFX8-GISEL-NEXT: v_addc_u32_e32 v25, vcc, 0, v1, vcc4431; GFX8-GISEL-NEXT: v_mov_b32_e32 v14, 0x604432; GFX8-GISEL-NEXT: v_add_u32_e32 v28, vcc, v0, v144433; GFX8-GISEL-NEXT: v_addc_u32_e32 v29, vcc, 0, v1, vcc4434; GFX8-GISEL-NEXT: v_mov_b32_e32 v14, 0x704435; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, v0, v144436; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v1, vcc4437; GFX8-GISEL-NEXT: flat_load_dwordx4 v[12:15], v[12:13]4438; GFX8-GISEL-NEXT: flat_load_dwordx4 v[16:19], v[16:17]4439; GFX8-GISEL-NEXT: flat_load_dwordx4 v[20:23], v[20:21]4440; GFX8-GISEL-NEXT: flat_load_dwordx4 v[24:27], v[24:25]4441; GFX8-GISEL-NEXT: flat_load_dwordx4 v[28:31], v[28:29]4442; GFX8-GISEL-NEXT: flat_load_dwordx3 v[32:34], v[0:1]4443; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 16, v24444; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v3, vcc4445; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)4446; GFX8-GISEL-NEXT: flat_store_dwordx4 v[0:1], v[4:7]4447; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 32, v24448; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v3, vcc4449; GFX8-GISEL-NEXT: v_add_u32_e32 v4, vcc, 48, v24450; GFX8-GISEL-NEXT: v_addc_u32_e32 v5, vcc, 0, v3, vcc4451; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)4452; GFX8-GISEL-NEXT: flat_store_dwordx4 v[2:3], v[8:11]4453; GFX8-GISEL-NEXT: v_add_u32_e32 v6, vcc, v2, v354454; GFX8-GISEL-NEXT: v_add_u32_e64 v8, s[4:5], 64, v24455; GFX8-GISEL-NEXT: v_addc_u32_e64 v9, s[4:5], 0, v3, s[4:5]4456; GFX8-GISEL-NEXT: s_mov_b64 s[4:5], vcc4457; GFX8-GISEL-NEXT: v_add_u32_e32 v10, vcc, 0x60, v24458; GFX8-GISEL-NEXT: v_addc_u32_e32 v11, vcc, 0, v3, vcc4459; GFX8-GISEL-NEXT: v_add_u32_e32 v2, vcc, 0x70, v24460; GFX8-GISEL-NEXT: v_addc_u32_e64 v7, s[4:5], 0, v3, s[4:5]4461; GFX8-GISEL-NEXT: v_addc_u32_e32 v3, vcc, 0, v3, vcc4462; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)4463; GFX8-GISEL-NEXT: flat_store_dwordx4 v[0:1], v[12:15]4464; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)4465; GFX8-GISEL-NEXT: flat_store_dwordx4 v[4:5], v[16:19]4466; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)4467; GFX8-GISEL-NEXT: flat_store_dwordx4 v[8:9], v[20:23]4468; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)4469; GFX8-GISEL-NEXT: flat_store_dwordx4 v[6:7], v[24:27]4470; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)4471; GFX8-GISEL-NEXT: flat_store_dwordx4 v[10:11], v[28:31]4472; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)4473; GFX8-GISEL-NEXT: flat_store_dwordx3 v[2:3], v[32:34]4474; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)4475; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]4476;4477; GFX9-GISEL-LABEL: freeze_v31i32:4478; GFX9-GISEL: ; %bb.0:4479; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4480; GFX9-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off4481; GFX9-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:164482; GFX9-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:324483; GFX9-GISEL-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:484484; GFX9-GISEL-NEXT: global_load_dwordx4 v[20:23], v[0:1], off offset:644485; GFX9-GISEL-NEXT: global_load_dwordx4 v[24:27], v[0:1], off offset:804486; GFX9-GISEL-NEXT: global_load_dwordx4 v[28:31], v[0:1], off offset:964487; GFX9-GISEL-NEXT: global_load_dwordx3 v[32:34], v[0:1], off offset:1124488; GFX9-GISEL-NEXT: s_waitcnt vmcnt(7)4489; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off4490; GFX9-GISEL-NEXT: s_waitcnt vmcnt(7)4491; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:164492; GFX9-GISEL-NEXT: s_waitcnt vmcnt(7)4493; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:324494; GFX9-GISEL-NEXT: s_waitcnt vmcnt(7)4495; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:484496; GFX9-GISEL-NEXT: s_waitcnt vmcnt(7)4497; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[20:23], off offset:644498; GFX9-GISEL-NEXT: s_waitcnt vmcnt(7)4499; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[24:27], off offset:804500; GFX9-GISEL-NEXT: s_waitcnt vmcnt(7)4501; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[28:31], off offset:964502; GFX9-GISEL-NEXT: s_waitcnt vmcnt(7)4503; GFX9-GISEL-NEXT: global_store_dwordx3 v[2:3], v[32:34], off offset:1124504; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)4505; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]4506;4507; GFX10-SDAG-LABEL: freeze_v31i32:4508; GFX10-SDAG: ; %bb.0:4509; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4510; GFX10-SDAG-NEXT: s_clause 0x74511; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off offset:964512; GFX10-SDAG-NEXT: global_load_dwordx3 v[32:34], v[0:1], off offset:1124513; GFX10-SDAG-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:644514; GFX10-SDAG-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:804515; GFX10-SDAG-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:324516; GFX10-SDAG-NEXT: global_load_dwordx4 v[20:23], v[0:1], off offset:484517; GFX10-SDAG-NEXT: global_load_dwordx4 v[24:27], v[0:1], off4518; GFX10-SDAG-NEXT: global_load_dwordx4 v[28:31], v[0:1], off offset:164519; GFX10-SDAG-NEXT: s_waitcnt vmcnt(7)4520; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off offset:964521; GFX10-SDAG-NEXT: s_waitcnt vmcnt(6)4522; GFX10-SDAG-NEXT: global_store_dwordx3 v[2:3], v[32:34], off offset:1124523; GFX10-SDAG-NEXT: s_waitcnt vmcnt(5)4524; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:644525; GFX10-SDAG-NEXT: s_waitcnt vmcnt(4)4526; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:804527; GFX10-SDAG-NEXT: s_waitcnt vmcnt(3)4528; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:324529; GFX10-SDAG-NEXT: s_waitcnt vmcnt(2)4530; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[20:23], off offset:484531; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1)4532; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[24:27], off4533; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)4534; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[28:31], off offset:164535; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]4536;4537; GFX10-GISEL-LABEL: freeze_v31i32:4538; GFX10-GISEL: ; %bb.0:4539; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4540; GFX10-GISEL-NEXT: s_clause 0x74541; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off4542; GFX10-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:164543; GFX10-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:324544; GFX10-GISEL-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:484545; GFX10-GISEL-NEXT: global_load_dwordx4 v[20:23], v[0:1], off offset:644546; GFX10-GISEL-NEXT: global_load_dwordx4 v[24:27], v[0:1], off offset:804547; GFX10-GISEL-NEXT: global_load_dwordx4 v[28:31], v[0:1], off offset:964548; GFX10-GISEL-NEXT: global_load_dwordx3 v[32:34], v[0:1], off offset:1124549; GFX10-GISEL-NEXT: s_waitcnt vmcnt(7)4550; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off4551; GFX10-GISEL-NEXT: s_waitcnt vmcnt(6)4552; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:164553; GFX10-GISEL-NEXT: s_waitcnt vmcnt(5)4554; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:324555; GFX10-GISEL-NEXT: s_waitcnt vmcnt(4)4556; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:484557; GFX10-GISEL-NEXT: s_waitcnt vmcnt(3)4558; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[20:23], off offset:644559; GFX10-GISEL-NEXT: s_waitcnt vmcnt(2)4560; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[24:27], off offset:804561; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1)4562; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[28:31], off offset:964563; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)4564; GFX10-GISEL-NEXT: global_store_dwordx3 v[2:3], v[32:34], off offset:1124565; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]4566;4567; GFX11-SDAG-LABEL: freeze_v31i32:4568; GFX11-SDAG: ; %bb.0:4569; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4570; GFX11-SDAG-NEXT: s_clause 0x74571; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off offset:964572; GFX11-SDAG-NEXT: global_load_b96 v[32:34], v[0:1], off offset:1124573; GFX11-SDAG-NEXT: global_load_b128 v[8:11], v[0:1], off offset:644574; GFX11-SDAG-NEXT: global_load_b128 v[12:15], v[0:1], off offset:804575; GFX11-SDAG-NEXT: global_load_b128 v[16:19], v[0:1], off offset:324576; GFX11-SDAG-NEXT: global_load_b128 v[20:23], v[0:1], off offset:484577; GFX11-SDAG-NEXT: global_load_b128 v[24:27], v[0:1], off4578; GFX11-SDAG-NEXT: global_load_b128 v[28:31], v[0:1], off offset:164579; GFX11-SDAG-NEXT: s_waitcnt vmcnt(7)4580; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off offset:964581; GFX11-SDAG-NEXT: s_waitcnt vmcnt(6)4582; GFX11-SDAG-NEXT: global_store_b96 v[2:3], v[32:34], off offset:1124583; GFX11-SDAG-NEXT: s_waitcnt vmcnt(5)4584; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[8:11], off offset:644585; GFX11-SDAG-NEXT: s_waitcnt vmcnt(4)4586; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[12:15], off offset:804587; GFX11-SDAG-NEXT: s_waitcnt vmcnt(3)4588; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[16:19], off offset:324589; GFX11-SDAG-NEXT: s_waitcnt vmcnt(2)4590; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[20:23], off offset:484591; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1)4592; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[24:27], off4593; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0)4594; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[28:31], off offset:164595; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]4596;4597; GFX11-GISEL-LABEL: freeze_v31i32:4598; GFX11-GISEL: ; %bb.0:4599; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4600; GFX11-GISEL-NEXT: s_clause 0x74601; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off4602; GFX11-GISEL-NEXT: global_load_b128 v[8:11], v[0:1], off offset:164603; GFX11-GISEL-NEXT: global_load_b128 v[12:15], v[0:1], off offset:324604; GFX11-GISEL-NEXT: global_load_b128 v[16:19], v[0:1], off offset:484605; GFX11-GISEL-NEXT: global_load_b128 v[20:23], v[0:1], off offset:644606; GFX11-GISEL-NEXT: global_load_b128 v[24:27], v[0:1], off offset:804607; GFX11-GISEL-NEXT: global_load_b128 v[28:31], v[0:1], off offset:964608; GFX11-GISEL-NEXT: global_load_b96 v[32:34], v[0:1], off offset:1124609; GFX11-GISEL-NEXT: s_waitcnt vmcnt(7)4610; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off4611; GFX11-GISEL-NEXT: s_waitcnt vmcnt(6)4612; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[8:11], off offset:164613; GFX11-GISEL-NEXT: s_waitcnt vmcnt(5)4614; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[12:15], off offset:324615; GFX11-GISEL-NEXT: s_waitcnt vmcnt(4)4616; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[16:19], off offset:484617; GFX11-GISEL-NEXT: s_waitcnt vmcnt(3)4618; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[20:23], off offset:644619; GFX11-GISEL-NEXT: s_waitcnt vmcnt(2)4620; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[24:27], off offset:804621; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1)4622; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[28:31], off offset:964623; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)4624; GFX11-GISEL-NEXT: global_store_b96 v[2:3], v[32:34], off offset:1124625; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]4626 %a = load <31 x i32>, ptr addrspace(1) %ptra, align 44627 %freeze = freeze <31 x i32> %a4628 store <31 x i32> %freeze, ptr addrspace(1) %ptrb, align 44629 ret void4630}4631 4632define void @freeze_v32i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {4633; GFX6-SDAG-LABEL: freeze_v32i32:4634; GFX6-SDAG: ; %bb.0:4635; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4636; GFX6-SDAG-NEXT: s_mov_b32 s6, 04637; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0004638; GFX6-SDAG-NEXT: s_mov_b32 s4, s64639; GFX6-SDAG-NEXT: s_mov_b32 s5, s64640; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:964641; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:1124642; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:644643; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:804644; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[20:23], v[0:1], s[4:7], 0 addr64 offset:324645; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[24:27], v[0:1], s[4:7], 0 addr64 offset:484646; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[28:31], v[0:1], s[4:7], 0 addr644647; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[32:35], v[0:1], s[4:7], 0 addr64 offset:164648; GFX6-SDAG-NEXT: s_waitcnt vmcnt(7)4649; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:964650; GFX6-SDAG-NEXT: s_waitcnt vmcnt(7)4651; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:1124652; GFX6-SDAG-NEXT: s_waitcnt vmcnt(7)4653; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:644654; GFX6-SDAG-NEXT: s_waitcnt vmcnt(7)4655; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:804656; GFX6-SDAG-NEXT: s_waitcnt vmcnt(7)4657; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[20:23], v[2:3], s[4:7], 0 addr64 offset:324658; GFX6-SDAG-NEXT: s_waitcnt vmcnt(7)4659; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[24:27], v[2:3], s[4:7], 0 addr64 offset:484660; GFX6-SDAG-NEXT: s_waitcnt vmcnt(7)4661; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[28:31], v[2:3], s[4:7], 0 addr644662; GFX6-SDAG-NEXT: s_waitcnt vmcnt(7)4663; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[32:35], v[2:3], s[4:7], 0 addr64 offset:164664; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)4665; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]4666;4667; GFX6-GISEL-LABEL: freeze_v32i32:4668; GFX6-GISEL: ; %bb.0:4669; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4670; GFX6-GISEL-NEXT: s_mov_b32 s6, 04671; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0004672; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 04673; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr644674; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:164675; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:324676; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:484677; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[20:23], v[0:1], s[4:7], 0 addr64 offset:644678; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[24:27], v[0:1], s[4:7], 0 addr64 offset:804679; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[28:31], v[0:1], s[4:7], 0 addr64 offset:964680; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[32:35], v[0:1], s[4:7], 0 addr64 offset:1124681; GFX6-GISEL-NEXT: s_waitcnt vmcnt(7)4682; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr644683; GFX6-GISEL-NEXT: s_waitcnt vmcnt(7)4684; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:164685; GFX6-GISEL-NEXT: s_waitcnt vmcnt(7)4686; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:324687; GFX6-GISEL-NEXT: s_waitcnt vmcnt(7)4688; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:484689; GFX6-GISEL-NEXT: s_waitcnt vmcnt(7)4690; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[20:23], v[2:3], s[4:7], 0 addr64 offset:644691; GFX6-GISEL-NEXT: s_waitcnt vmcnt(7)4692; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[24:27], v[2:3], s[4:7], 0 addr64 offset:804693; GFX6-GISEL-NEXT: s_waitcnt vmcnt(7)4694; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[28:31], v[2:3], s[4:7], 0 addr64 offset:964695; GFX6-GISEL-NEXT: s_waitcnt vmcnt(7)4696; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[32:35], v[2:3], s[4:7], 0 addr64 offset:1124697; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)4698; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]4699;4700; GFX7-SDAG-LABEL: freeze_v32i32:4701; GFX7-SDAG: ; %bb.0:4702; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4703; GFX7-SDAG-NEXT: s_mov_b32 s6, 04704; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0004705; GFX7-SDAG-NEXT: s_mov_b32 s4, s64706; GFX7-SDAG-NEXT: s_mov_b32 s5, s64707; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:964708; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:1124709; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:644710; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:804711; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[20:23], v[0:1], s[4:7], 0 addr64 offset:324712; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[24:27], v[0:1], s[4:7], 0 addr64 offset:484713; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[28:31], v[0:1], s[4:7], 0 addr644714; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[32:35], v[0:1], s[4:7], 0 addr64 offset:164715; GFX7-SDAG-NEXT: s_waitcnt vmcnt(7)4716; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:964717; GFX7-SDAG-NEXT: s_waitcnt vmcnt(7)4718; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:1124719; GFX7-SDAG-NEXT: s_waitcnt vmcnt(7)4720; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:644721; GFX7-SDAG-NEXT: s_waitcnt vmcnt(7)4722; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:804723; GFX7-SDAG-NEXT: s_waitcnt vmcnt(7)4724; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[20:23], v[2:3], s[4:7], 0 addr64 offset:324725; GFX7-SDAG-NEXT: s_waitcnt vmcnt(7)4726; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[24:27], v[2:3], s[4:7], 0 addr64 offset:484727; GFX7-SDAG-NEXT: s_waitcnt vmcnt(7)4728; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[28:31], v[2:3], s[4:7], 0 addr644729; GFX7-SDAG-NEXT: s_waitcnt vmcnt(7)4730; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[32:35], v[2:3], s[4:7], 0 addr64 offset:164731; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)4732; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]4733;4734; GFX7-GISEL-LABEL: freeze_v32i32:4735; GFX7-GISEL: ; %bb.0:4736; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4737; GFX7-GISEL-NEXT: s_mov_b32 s6, 04738; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0004739; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 04740; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr644741; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:164742; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:324743; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:484744; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[20:23], v[0:1], s[4:7], 0 addr64 offset:644745; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[24:27], v[0:1], s[4:7], 0 addr64 offset:804746; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[28:31], v[0:1], s[4:7], 0 addr64 offset:964747; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[32:35], v[0:1], s[4:7], 0 addr64 offset:1124748; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)4749; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr644750; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)4751; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:164752; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)4753; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:324754; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)4755; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:484756; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)4757; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[20:23], v[2:3], s[4:7], 0 addr64 offset:644758; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)4759; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[24:27], v[2:3], s[4:7], 0 addr64 offset:804760; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)4761; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[28:31], v[2:3], s[4:7], 0 addr64 offset:964762; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)4763; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[32:35], v[2:3], s[4:7], 0 addr64 offset:1124764; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)4765; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]4766;4767; GFX8-GISEL-LABEL: freeze_v32i32:4768; GFX8-GISEL: ; %bb.0:4769; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4770; GFX8-GISEL-NEXT: v_add_u32_e32 v4, vcc, 16, v04771; GFX8-GISEL-NEXT: v_addc_u32_e32 v5, vcc, 0, v1, vcc4772; GFX8-GISEL-NEXT: v_add_u32_e32 v12, vcc, 32, v04773; GFX8-GISEL-NEXT: v_addc_u32_e32 v13, vcc, 0, v1, vcc4774; GFX8-GISEL-NEXT: v_add_u32_e32 v16, vcc, 48, v04775; GFX8-GISEL-NEXT: v_addc_u32_e32 v17, vcc, 0, v1, vcc4776; GFX8-GISEL-NEXT: v_add_u32_e32 v20, vcc, 64, v04777; GFX8-GISEL-NEXT: flat_load_dwordx4 v[4:7], v[4:5]4778; GFX8-GISEL-NEXT: flat_load_dwordx4 v[8:11], v[0:1]4779; GFX8-GISEL-NEXT: v_addc_u32_e32 v21, vcc, 0, v1, vcc4780; GFX8-GISEL-NEXT: v_mov_b32_e32 v38, 0x504781; GFX8-GISEL-NEXT: v_add_u32_e32 v24, vcc, v0, v384782; GFX8-GISEL-NEXT: v_addc_u32_e32 v25, vcc, 0, v1, vcc4783; GFX8-GISEL-NEXT: v_mov_b32_e32 v14, 0x604784; GFX8-GISEL-NEXT: v_add_u32_e32 v28, vcc, v0, v144785; GFX8-GISEL-NEXT: v_addc_u32_e32 v29, vcc, 0, v1, vcc4786; GFX8-GISEL-NEXT: v_mov_b32_e32 v14, 0x704787; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, v0, v144788; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v1, vcc4789; GFX8-GISEL-NEXT: flat_load_dwordx4 v[12:15], v[12:13]4790; GFX8-GISEL-NEXT: flat_load_dwordx4 v[16:19], v[16:17]4791; GFX8-GISEL-NEXT: flat_load_dwordx4 v[20:23], v[20:21]4792; GFX8-GISEL-NEXT: flat_load_dwordx4 v[24:27], v[24:25]4793; GFX8-GISEL-NEXT: flat_load_dwordx4 v[28:31], v[28:29]4794; GFX8-GISEL-NEXT: flat_load_dwordx4 v[32:35], v[0:1]4795; GFX8-GISEL-NEXT: v_add_u32_e32 v36, vcc, 16, v24796; GFX8-GISEL-NEXT: v_addc_u32_e32 v37, vcc, 0, v3, vcc4797; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 32, v24798; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v3, vcc4799; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)4800; GFX8-GISEL-NEXT: flat_store_dwordx4 v[36:37], v[4:7]4801; GFX8-GISEL-NEXT: s_nop 04802; GFX8-GISEL-NEXT: v_add_u32_e32 v4, vcc, 48, v24803; GFX8-GISEL-NEXT: v_addc_u32_e32 v5, vcc, 0, v3, vcc4804; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)4805; GFX8-GISEL-NEXT: flat_store_dwordx4 v[2:3], v[8:11]4806; GFX8-GISEL-NEXT: v_add_u32_e32 v6, vcc, v2, v384807; GFX8-GISEL-NEXT: v_add_u32_e64 v8, s[4:5], 64, v24808; GFX8-GISEL-NEXT: v_addc_u32_e64 v9, s[4:5], 0, v3, s[4:5]4809; GFX8-GISEL-NEXT: s_mov_b64 s[4:5], vcc4810; GFX8-GISEL-NEXT: v_add_u32_e32 v10, vcc, 0x60, v24811; GFX8-GISEL-NEXT: v_addc_u32_e32 v11, vcc, 0, v3, vcc4812; GFX8-GISEL-NEXT: v_add_u32_e32 v2, vcc, 0x70, v24813; GFX8-GISEL-NEXT: v_addc_u32_e64 v7, s[4:5], 0, v3, s[4:5]4814; GFX8-GISEL-NEXT: v_addc_u32_e32 v3, vcc, 0, v3, vcc4815; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)4816; GFX8-GISEL-NEXT: flat_store_dwordx4 v[0:1], v[12:15]4817; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)4818; GFX8-GISEL-NEXT: flat_store_dwordx4 v[4:5], v[16:19]4819; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)4820; GFX8-GISEL-NEXT: flat_store_dwordx4 v[8:9], v[20:23]4821; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)4822; GFX8-GISEL-NEXT: flat_store_dwordx4 v[6:7], v[24:27]4823; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)4824; GFX8-GISEL-NEXT: flat_store_dwordx4 v[10:11], v[28:31]4825; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)4826; GFX8-GISEL-NEXT: flat_store_dwordx4 v[2:3], v[32:35]4827; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)4828; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]4829;4830; GFX9-GISEL-LABEL: freeze_v32i32:4831; GFX9-GISEL: ; %bb.0:4832; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4833; GFX9-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off4834; GFX9-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:164835; GFX9-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:324836; GFX9-GISEL-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:484837; GFX9-GISEL-NEXT: global_load_dwordx4 v[20:23], v[0:1], off offset:644838; GFX9-GISEL-NEXT: global_load_dwordx4 v[24:27], v[0:1], off offset:804839; GFX9-GISEL-NEXT: global_load_dwordx4 v[28:31], v[0:1], off offset:964840; GFX9-GISEL-NEXT: global_load_dwordx4 v[32:35], v[0:1], off offset:1124841; GFX9-GISEL-NEXT: s_waitcnt vmcnt(7)4842; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off4843; GFX9-GISEL-NEXT: s_waitcnt vmcnt(7)4844; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:164845; GFX9-GISEL-NEXT: s_waitcnt vmcnt(7)4846; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:324847; GFX9-GISEL-NEXT: s_waitcnt vmcnt(7)4848; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:484849; GFX9-GISEL-NEXT: s_waitcnt vmcnt(7)4850; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[20:23], off offset:644851; GFX9-GISEL-NEXT: s_waitcnt vmcnt(7)4852; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[24:27], off offset:804853; GFX9-GISEL-NEXT: s_waitcnt vmcnt(7)4854; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[28:31], off offset:964855; GFX9-GISEL-NEXT: s_waitcnt vmcnt(7)4856; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[32:35], off offset:1124857; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)4858; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]4859;4860; GFX10-SDAG-LABEL: freeze_v32i32:4861; GFX10-SDAG: ; %bb.0:4862; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4863; GFX10-SDAG-NEXT: s_clause 0x74864; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off offset:964865; GFX10-SDAG-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:1124866; GFX10-SDAG-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:644867; GFX10-SDAG-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:804868; GFX10-SDAG-NEXT: global_load_dwordx4 v[20:23], v[0:1], off offset:324869; GFX10-SDAG-NEXT: global_load_dwordx4 v[24:27], v[0:1], off offset:484870; GFX10-SDAG-NEXT: global_load_dwordx4 v[28:31], v[0:1], off4871; GFX10-SDAG-NEXT: global_load_dwordx4 v[32:35], v[0:1], off offset:164872; GFX10-SDAG-NEXT: s_waitcnt vmcnt(7)4873; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off offset:964874; GFX10-SDAG-NEXT: s_waitcnt vmcnt(6)4875; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:1124876; GFX10-SDAG-NEXT: s_waitcnt vmcnt(5)4877; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:644878; GFX10-SDAG-NEXT: s_waitcnt vmcnt(4)4879; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:804880; GFX10-SDAG-NEXT: s_waitcnt vmcnt(3)4881; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[20:23], off offset:324882; GFX10-SDAG-NEXT: s_waitcnt vmcnt(2)4883; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[24:27], off offset:484884; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1)4885; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[28:31], off4886; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)4887; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[32:35], off offset:164888; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]4889;4890; GFX10-GISEL-LABEL: freeze_v32i32:4891; GFX10-GISEL: ; %bb.0:4892; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4893; GFX10-GISEL-NEXT: s_clause 0x74894; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off4895; GFX10-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:164896; GFX10-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:324897; GFX10-GISEL-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:484898; GFX10-GISEL-NEXT: global_load_dwordx4 v[20:23], v[0:1], off offset:644899; GFX10-GISEL-NEXT: global_load_dwordx4 v[24:27], v[0:1], off offset:804900; GFX10-GISEL-NEXT: global_load_dwordx4 v[28:31], v[0:1], off offset:964901; GFX10-GISEL-NEXT: global_load_dwordx4 v[32:35], v[0:1], off offset:1124902; GFX10-GISEL-NEXT: s_waitcnt vmcnt(7)4903; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off4904; GFX10-GISEL-NEXT: s_waitcnt vmcnt(6)4905; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:164906; GFX10-GISEL-NEXT: s_waitcnt vmcnt(5)4907; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:324908; GFX10-GISEL-NEXT: s_waitcnt vmcnt(4)4909; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:484910; GFX10-GISEL-NEXT: s_waitcnt vmcnt(3)4911; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[20:23], off offset:644912; GFX10-GISEL-NEXT: s_waitcnt vmcnt(2)4913; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[24:27], off offset:804914; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1)4915; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[28:31], off offset:964916; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)4917; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[32:35], off offset:1124918; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]4919;4920; GFX11-SDAG-LABEL: freeze_v32i32:4921; GFX11-SDAG: ; %bb.0:4922; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4923; GFX11-SDAG-NEXT: s_clause 0x74924; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off offset:964925; GFX11-SDAG-NEXT: global_load_b128 v[8:11], v[0:1], off offset:1124926; GFX11-SDAG-NEXT: global_load_b128 v[12:15], v[0:1], off offset:644927; GFX11-SDAG-NEXT: global_load_b128 v[16:19], v[0:1], off offset:804928; GFX11-SDAG-NEXT: global_load_b128 v[20:23], v[0:1], off offset:324929; GFX11-SDAG-NEXT: global_load_b128 v[24:27], v[0:1], off offset:484930; GFX11-SDAG-NEXT: global_load_b128 v[28:31], v[0:1], off4931; GFX11-SDAG-NEXT: global_load_b128 v[32:35], v[0:1], off offset:164932; GFX11-SDAG-NEXT: s_waitcnt vmcnt(7)4933; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off offset:964934; GFX11-SDAG-NEXT: s_waitcnt vmcnt(6)4935; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[8:11], off offset:1124936; GFX11-SDAG-NEXT: s_waitcnt vmcnt(5)4937; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[12:15], off offset:644938; GFX11-SDAG-NEXT: s_waitcnt vmcnt(4)4939; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[16:19], off offset:804940; GFX11-SDAG-NEXT: s_waitcnt vmcnt(3)4941; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[20:23], off offset:324942; GFX11-SDAG-NEXT: s_waitcnt vmcnt(2)4943; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[24:27], off offset:484944; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1)4945; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[28:31], off4946; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0)4947; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[32:35], off offset:164948; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]4949;4950; GFX11-GISEL-LABEL: freeze_v32i32:4951; GFX11-GISEL: ; %bb.0:4952; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4953; GFX11-GISEL-NEXT: s_clause 0x74954; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off4955; GFX11-GISEL-NEXT: global_load_b128 v[8:11], v[0:1], off offset:164956; GFX11-GISEL-NEXT: global_load_b128 v[12:15], v[0:1], off offset:324957; GFX11-GISEL-NEXT: global_load_b128 v[16:19], v[0:1], off offset:484958; GFX11-GISEL-NEXT: global_load_b128 v[20:23], v[0:1], off offset:644959; GFX11-GISEL-NEXT: global_load_b128 v[24:27], v[0:1], off offset:804960; GFX11-GISEL-NEXT: global_load_b128 v[28:31], v[0:1], off offset:964961; GFX11-GISEL-NEXT: global_load_b128 v[32:35], v[0:1], off offset:1124962; GFX11-GISEL-NEXT: s_waitcnt vmcnt(7)4963; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off4964; GFX11-GISEL-NEXT: s_waitcnt vmcnt(6)4965; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[8:11], off offset:164966; GFX11-GISEL-NEXT: s_waitcnt vmcnt(5)4967; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[12:15], off offset:324968; GFX11-GISEL-NEXT: s_waitcnt vmcnt(4)4969; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[16:19], off offset:484970; GFX11-GISEL-NEXT: s_waitcnt vmcnt(3)4971; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[20:23], off offset:644972; GFX11-GISEL-NEXT: s_waitcnt vmcnt(2)4973; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[24:27], off offset:804974; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1)4975; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[28:31], off offset:964976; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)4977; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[32:35], off offset:1124978; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]4979 %a = load <32 x i32>, ptr addrspace(1) %ptra, align 44980 %freeze = freeze <32 x i32> %a4981 store <32 x i32> %freeze, ptr addrspace(1) %ptrb, align 44982 ret void4983}4984 4985define void @freeze_i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {4986; GFX6-SDAG-LABEL: freeze_i32:4987; GFX6-SDAG: ; %bb.0:4988; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4989; GFX6-SDAG-NEXT: s_mov_b32 s6, 04990; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0004991; GFX6-SDAG-NEXT: s_mov_b32 s4, s64992; GFX6-SDAG-NEXT: s_mov_b32 s5, s64993; GFX6-SDAG-NEXT: buffer_load_dword v0, v[0:1], s[4:7], 0 addr644994; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0)4995; GFX6-SDAG-NEXT: buffer_store_dword v0, v[2:3], s[4:7], 0 addr644996; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)4997; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]4998;4999; GFX6-GISEL-LABEL: freeze_i32:5000; GFX6-GISEL: ; %bb.0:5001; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5002; GFX6-GISEL-NEXT: s_mov_b32 s6, 05003; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0005004; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 05005; GFX6-GISEL-NEXT: buffer_load_dword v0, v[0:1], s[4:7], 0 addr645006; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0)5007; GFX6-GISEL-NEXT: buffer_store_dword v0, v[2:3], s[4:7], 0 addr645008; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)5009; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]5010;5011; GFX7-SDAG-LABEL: freeze_i32:5012; GFX7-SDAG: ; %bb.0:5013; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5014; GFX7-SDAG-NEXT: s_mov_b32 s6, 05015; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0005016; GFX7-SDAG-NEXT: s_mov_b32 s4, s65017; GFX7-SDAG-NEXT: s_mov_b32 s5, s65018; GFX7-SDAG-NEXT: buffer_load_dword v0, v[0:1], s[4:7], 0 addr645019; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)5020; GFX7-SDAG-NEXT: buffer_store_dword v0, v[2:3], s[4:7], 0 addr645021; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)5022; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]5023;5024; GFX7-GISEL-LABEL: freeze_i32:5025; GFX7-GISEL: ; %bb.0:5026; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5027; GFX7-GISEL-NEXT: s_mov_b32 s6, 05028; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0005029; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 05030; GFX7-GISEL-NEXT: buffer_load_dword v0, v[0:1], s[4:7], 0 addr645031; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)5032; GFX7-GISEL-NEXT: buffer_store_dword v0, v[2:3], s[4:7], 0 addr645033; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)5034; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]5035;5036; GFX8-LABEL: freeze_i32:5037; GFX8: ; %bb.0:5038; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5039; GFX8-NEXT: flat_load_dword v0, v[0:1]5040; GFX8-NEXT: s_waitcnt vmcnt(0)5041; GFX8-NEXT: flat_store_dword v[2:3], v05042; GFX8-NEXT: s_waitcnt vmcnt(0)5043; GFX8-NEXT: s_setpc_b64 s[30:31]5044;5045; GFX9-LABEL: freeze_i32:5046; GFX9: ; %bb.0:5047; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5048; GFX9-NEXT: global_load_dword v0, v[0:1], off5049; GFX9-NEXT: s_waitcnt vmcnt(0)5050; GFX9-NEXT: global_store_dword v[2:3], v0, off5051; GFX9-NEXT: s_waitcnt vmcnt(0)5052; GFX9-NEXT: s_setpc_b64 s[30:31]5053;5054; GFX10-LABEL: freeze_i32:5055; GFX10: ; %bb.0:5056; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5057; GFX10-NEXT: global_load_dword v0, v[0:1], off5058; GFX10-NEXT: s_waitcnt vmcnt(0)5059; GFX10-NEXT: global_store_dword v[2:3], v0, off5060; GFX10-NEXT: s_setpc_b64 s[30:31]5061;5062; GFX11-LABEL: freeze_i32:5063; GFX11: ; %bb.0:5064; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5065; GFX11-NEXT: global_load_b32 v0, v[0:1], off5066; GFX11-NEXT: s_waitcnt vmcnt(0)5067; GFX11-NEXT: global_store_b32 v[2:3], v0, off5068; GFX11-NEXT: s_setpc_b64 s[30:31]5069 %a = load i32, ptr addrspace(1) %ptra, align 45070 %freeze = freeze i32 %a5071 store i32 %freeze, ptr addrspace(1) %ptrb, align 45072 ret void5073}5074 5075define void @freeze_i64(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {5076; GFX6-SDAG-LABEL: freeze_i64:5077; GFX6-SDAG: ; %bb.0:5078; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5079; GFX6-SDAG-NEXT: s_mov_b32 s6, 05080; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0005081; GFX6-SDAG-NEXT: s_mov_b32 s4, s65082; GFX6-SDAG-NEXT: s_mov_b32 s5, s65083; GFX6-SDAG-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr645084; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0)5085; GFX6-SDAG-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr645086; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)5087; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]5088;5089; GFX6-GISEL-LABEL: freeze_i64:5090; GFX6-GISEL: ; %bb.0:5091; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5092; GFX6-GISEL-NEXT: s_mov_b32 s6, 05093; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0005094; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 05095; GFX6-GISEL-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr645096; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0)5097; GFX6-GISEL-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr645098; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)5099; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]5100;5101; GFX7-SDAG-LABEL: freeze_i64:5102; GFX7-SDAG: ; %bb.0:5103; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5104; GFX7-SDAG-NEXT: s_mov_b32 s6, 05105; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0005106; GFX7-SDAG-NEXT: s_mov_b32 s4, s65107; GFX7-SDAG-NEXT: s_mov_b32 s5, s65108; GFX7-SDAG-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr645109; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)5110; GFX7-SDAG-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr645111; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)5112; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]5113;5114; GFX7-GISEL-LABEL: freeze_i64:5115; GFX7-GISEL: ; %bb.0:5116; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5117; GFX7-GISEL-NEXT: s_mov_b32 s6, 05118; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0005119; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 05120; GFX7-GISEL-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr645121; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)5122; GFX7-GISEL-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr645123; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)5124; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]5125;5126; GFX8-LABEL: freeze_i64:5127; GFX8: ; %bb.0:5128; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5129; GFX8-NEXT: flat_load_dwordx2 v[0:1], v[0:1]5130; GFX8-NEXT: s_waitcnt vmcnt(0)5131; GFX8-NEXT: flat_store_dwordx2 v[2:3], v[0:1]5132; GFX8-NEXT: s_waitcnt vmcnt(0)5133; GFX8-NEXT: s_setpc_b64 s[30:31]5134;5135; GFX9-LABEL: freeze_i64:5136; GFX9: ; %bb.0:5137; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5138; GFX9-NEXT: global_load_dwordx2 v[0:1], v[0:1], off5139; GFX9-NEXT: s_waitcnt vmcnt(0)5140; GFX9-NEXT: global_store_dwordx2 v[2:3], v[0:1], off5141; GFX9-NEXT: s_waitcnt vmcnt(0)5142; GFX9-NEXT: s_setpc_b64 s[30:31]5143;5144; GFX10-LABEL: freeze_i64:5145; GFX10: ; %bb.0:5146; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5147; GFX10-NEXT: global_load_dwordx2 v[0:1], v[0:1], off5148; GFX10-NEXT: s_waitcnt vmcnt(0)5149; GFX10-NEXT: global_store_dwordx2 v[2:3], v[0:1], off5150; GFX10-NEXT: s_setpc_b64 s[30:31]5151;5152; GFX11-LABEL: freeze_i64:5153; GFX11: ; %bb.0:5154; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5155; GFX11-NEXT: global_load_b64 v[0:1], v[0:1], off5156; GFX11-NEXT: s_waitcnt vmcnt(0)5157; GFX11-NEXT: global_store_b64 v[2:3], v[0:1], off5158; GFX11-NEXT: s_setpc_b64 s[30:31]5159 %a = load i64, ptr addrspace(1) %ptra, align 45160 %freeze = freeze i64 %a5161 store i64 %freeze, ptr addrspace(1) %ptrb, align 45162 ret void5163}5164 5165define void @freeze_float(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {5166; GFX6-SDAG-LABEL: freeze_float:5167; GFX6-SDAG: ; %bb.0:5168; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5169; GFX6-SDAG-NEXT: s_mov_b32 s6, 05170; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0005171; GFX6-SDAG-NEXT: s_mov_b32 s4, s65172; GFX6-SDAG-NEXT: s_mov_b32 s5, s65173; GFX6-SDAG-NEXT: buffer_load_dword v0, v[0:1], s[4:7], 0 addr645174; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0)5175; GFX6-SDAG-NEXT: buffer_store_dword v0, v[2:3], s[4:7], 0 addr645176; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)5177; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]5178;5179; GFX6-GISEL-LABEL: freeze_float:5180; GFX6-GISEL: ; %bb.0:5181; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5182; GFX6-GISEL-NEXT: s_mov_b32 s6, 05183; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0005184; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 05185; GFX6-GISEL-NEXT: buffer_load_dword v0, v[0:1], s[4:7], 0 addr645186; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0)5187; GFX6-GISEL-NEXT: buffer_store_dword v0, v[2:3], s[4:7], 0 addr645188; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)5189; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]5190;5191; GFX7-SDAG-LABEL: freeze_float:5192; GFX7-SDAG: ; %bb.0:5193; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5194; GFX7-SDAG-NEXT: s_mov_b32 s6, 05195; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0005196; GFX7-SDAG-NEXT: s_mov_b32 s4, s65197; GFX7-SDAG-NEXT: s_mov_b32 s5, s65198; GFX7-SDAG-NEXT: buffer_load_dword v0, v[0:1], s[4:7], 0 addr645199; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)5200; GFX7-SDAG-NEXT: buffer_store_dword v0, v[2:3], s[4:7], 0 addr645201; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)5202; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]5203;5204; GFX7-GISEL-LABEL: freeze_float:5205; GFX7-GISEL: ; %bb.0:5206; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5207; GFX7-GISEL-NEXT: s_mov_b32 s6, 05208; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0005209; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 05210; GFX7-GISEL-NEXT: buffer_load_dword v0, v[0:1], s[4:7], 0 addr645211; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)5212; GFX7-GISEL-NEXT: buffer_store_dword v0, v[2:3], s[4:7], 0 addr645213; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)5214; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]5215;5216; GFX8-LABEL: freeze_float:5217; GFX8: ; %bb.0:5218; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5219; GFX8-NEXT: flat_load_dword v0, v[0:1]5220; GFX8-NEXT: s_waitcnt vmcnt(0)5221; GFX8-NEXT: flat_store_dword v[2:3], v05222; GFX8-NEXT: s_waitcnt vmcnt(0)5223; GFX8-NEXT: s_setpc_b64 s[30:31]5224;5225; GFX9-LABEL: freeze_float:5226; GFX9: ; %bb.0:5227; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5228; GFX9-NEXT: global_load_dword v0, v[0:1], off5229; GFX9-NEXT: s_waitcnt vmcnt(0)5230; GFX9-NEXT: global_store_dword v[2:3], v0, off5231; GFX9-NEXT: s_waitcnt vmcnt(0)5232; GFX9-NEXT: s_setpc_b64 s[30:31]5233;5234; GFX10-LABEL: freeze_float:5235; GFX10: ; %bb.0:5236; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5237; GFX10-NEXT: global_load_dword v0, v[0:1], off5238; GFX10-NEXT: s_waitcnt vmcnt(0)5239; GFX10-NEXT: global_store_dword v[2:3], v0, off5240; GFX10-NEXT: s_setpc_b64 s[30:31]5241;5242; GFX11-LABEL: freeze_float:5243; GFX11: ; %bb.0:5244; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5245; GFX11-NEXT: global_load_b32 v0, v[0:1], off5246; GFX11-NEXT: s_waitcnt vmcnt(0)5247; GFX11-NEXT: global_store_b32 v[2:3], v0, off5248; GFX11-NEXT: s_setpc_b64 s[30:31]5249 %a = load float, ptr addrspace(1) %ptra, align 45250 %freeze = freeze float %a5251 store float %freeze, ptr addrspace(1) %ptrb, align 45252 ret void5253}5254 5255define void @freeze_i128(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {5256; GFX6-SDAG-LABEL: freeze_i128:5257; GFX6-SDAG: ; %bb.0:5258; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5259; GFX6-SDAG-NEXT: s_mov_b32 s6, 05260; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0005261; GFX6-SDAG-NEXT: s_mov_b32 s4, s65262; GFX6-SDAG-NEXT: s_mov_b32 s5, s65263; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr645264; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0)5265; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr645266; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)5267; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]5268;5269; GFX6-GISEL-LABEL: freeze_i128:5270; GFX6-GISEL: ; %bb.0:5271; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5272; GFX6-GISEL-NEXT: s_mov_b32 s6, 05273; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0005274; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 05275; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr645276; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0)5277; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr645278; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)5279; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]5280;5281; GFX7-SDAG-LABEL: freeze_i128:5282; GFX7-SDAG: ; %bb.0:5283; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5284; GFX7-SDAG-NEXT: s_mov_b32 s6, 05285; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0005286; GFX7-SDAG-NEXT: s_mov_b32 s4, s65287; GFX7-SDAG-NEXT: s_mov_b32 s5, s65288; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr645289; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)5290; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr645291; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)5292; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]5293;5294; GFX7-GISEL-LABEL: freeze_i128:5295; GFX7-GISEL: ; %bb.0:5296; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5297; GFX7-GISEL-NEXT: s_mov_b32 s6, 05298; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0005299; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 05300; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr645301; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)5302; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr645303; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)5304; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]5305;5306; GFX8-LABEL: freeze_i128:5307; GFX8: ; %bb.0:5308; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5309; GFX8-NEXT: flat_load_dwordx4 v[4:7], v[0:1]5310; GFX8-NEXT: s_waitcnt vmcnt(0)5311; GFX8-NEXT: flat_store_dwordx4 v[2:3], v[4:7]5312; GFX8-NEXT: s_waitcnt vmcnt(0)5313; GFX8-NEXT: s_setpc_b64 s[30:31]5314;5315; GFX9-LABEL: freeze_i128:5316; GFX9: ; %bb.0:5317; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5318; GFX9-NEXT: global_load_dwordx4 v[4:7], v[0:1], off5319; GFX9-NEXT: s_waitcnt vmcnt(0)5320; GFX9-NEXT: global_store_dwordx4 v[2:3], v[4:7], off5321; GFX9-NEXT: s_waitcnt vmcnt(0)5322; GFX9-NEXT: s_setpc_b64 s[30:31]5323;5324; GFX10-LABEL: freeze_i128:5325; GFX10: ; %bb.0:5326; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5327; GFX10-NEXT: global_load_dwordx4 v[4:7], v[0:1], off5328; GFX10-NEXT: s_waitcnt vmcnt(0)5329; GFX10-NEXT: global_store_dwordx4 v[2:3], v[4:7], off5330; GFX10-NEXT: s_setpc_b64 s[30:31]5331;5332; GFX11-LABEL: freeze_i128:5333; GFX11: ; %bb.0:5334; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5335; GFX11-NEXT: global_load_b128 v[4:7], v[0:1], off5336; GFX11-NEXT: s_waitcnt vmcnt(0)5337; GFX11-NEXT: global_store_b128 v[2:3], v[4:7], off5338; GFX11-NEXT: s_setpc_b64 s[30:31]5339 %a = load i128, ptr addrspace(1) %ptra, align 45340 %freeze = freeze i128 %a5341 store i128 %freeze, ptr addrspace(1) %ptrb, align 45342 ret void5343}5344 5345define void @freeze_i256(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {5346; GFX6-SDAG-LABEL: freeze_i256:5347; GFX6-SDAG: ; %bb.0:5348; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5349; GFX6-SDAG-NEXT: s_mov_b32 s6, 05350; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0005351; GFX6-SDAG-NEXT: s_mov_b32 s4, s65352; GFX6-SDAG-NEXT: s_mov_b32 s5, s65353; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:165354; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr645355; GFX6-SDAG-NEXT: s_waitcnt vmcnt(1)5356; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:165357; GFX6-SDAG-NEXT: s_waitcnt vmcnt(1)5358; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr645359; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)5360; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]5361;5362; GFX6-GISEL-LABEL: freeze_i256:5363; GFX6-GISEL: ; %bb.0:5364; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5365; GFX6-GISEL-NEXT: s_mov_b32 s6, 05366; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0005367; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 05368; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr645369; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:165370; GFX6-GISEL-NEXT: s_waitcnt vmcnt(1)5371; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr645372; GFX6-GISEL-NEXT: s_waitcnt vmcnt(1)5373; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:165374; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)5375; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]5376;5377; GFX7-SDAG-LABEL: freeze_i256:5378; GFX7-SDAG: ; %bb.0:5379; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5380; GFX7-SDAG-NEXT: s_mov_b32 s6, 05381; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0005382; GFX7-SDAG-NEXT: s_mov_b32 s4, s65383; GFX7-SDAG-NEXT: s_mov_b32 s5, s65384; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:165385; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr645386; GFX7-SDAG-NEXT: s_waitcnt vmcnt(1)5387; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:165388; GFX7-SDAG-NEXT: s_waitcnt vmcnt(1)5389; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr645390; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)5391; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]5392;5393; GFX7-GISEL-LABEL: freeze_i256:5394; GFX7-GISEL: ; %bb.0:5395; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5396; GFX7-GISEL-NEXT: s_mov_b32 s6, 05397; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0005398; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 05399; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr645400; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:165401; GFX7-GISEL-NEXT: s_waitcnt vmcnt(1)5402; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr645403; GFX7-GISEL-NEXT: s_waitcnt vmcnt(1)5404; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:165405; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)5406; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]5407;5408; GFX8-GISEL-LABEL: freeze_i256:5409; GFX8-GISEL: ; %bb.0:5410; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5411; GFX8-GISEL-NEXT: flat_load_dwordx4 v[4:7], v[0:1]5412; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 16, v05413; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v1, vcc5414; GFX8-GISEL-NEXT: flat_load_dwordx4 v[8:11], v[0:1]5415; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 16, v25416; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v3, vcc5417; GFX8-GISEL-NEXT: s_waitcnt vmcnt(1)5418; GFX8-GISEL-NEXT: flat_store_dwordx4 v[2:3], v[4:7]5419; GFX8-GISEL-NEXT: s_waitcnt vmcnt(1)5420; GFX8-GISEL-NEXT: flat_store_dwordx4 v[0:1], v[8:11]5421; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)5422; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]5423;5424; GFX9-GISEL-LABEL: freeze_i256:5425; GFX9-GISEL: ; %bb.0:5426; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5427; GFX9-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off5428; GFX9-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:165429; GFX9-GISEL-NEXT: s_waitcnt vmcnt(1)5430; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off5431; GFX9-GISEL-NEXT: s_waitcnt vmcnt(1)5432; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:165433; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)5434; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]5435;5436; GFX10-SDAG-LABEL: freeze_i256:5437; GFX10-SDAG: ; %bb.0:5438; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5439; GFX10-SDAG-NEXT: s_clause 0x15440; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off offset:165441; GFX10-SDAG-NEXT: global_load_dwordx4 v[8:11], v[0:1], off5442; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1)5443; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off offset:165444; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)5445; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[8:11], off5446; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]5447;5448; GFX10-GISEL-LABEL: freeze_i256:5449; GFX10-GISEL: ; %bb.0:5450; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5451; GFX10-GISEL-NEXT: s_clause 0x15452; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off5453; GFX10-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:165454; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1)5455; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off5456; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)5457; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:165458; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]5459;5460; GFX11-SDAG-LABEL: freeze_i256:5461; GFX11-SDAG: ; %bb.0:5462; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5463; GFX11-SDAG-NEXT: s_clause 0x15464; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off offset:165465; GFX11-SDAG-NEXT: global_load_b128 v[8:11], v[0:1], off5466; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1)5467; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off offset:165468; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0)5469; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[8:11], off5470; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]5471;5472; GFX11-GISEL-LABEL: freeze_i256:5473; GFX11-GISEL: ; %bb.0:5474; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5475; GFX11-GISEL-NEXT: s_clause 0x15476; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off5477; GFX11-GISEL-NEXT: global_load_b128 v[8:11], v[0:1], off offset:165478; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1)5479; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off5480; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)5481; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[8:11], off offset:165482; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]5483 %a = load i256, ptr addrspace(1) %ptra, align 45484 %freeze = freeze i256 %a5485 store i256 %freeze, ptr addrspace(1) %ptrb, align 45486 ret void5487}5488 5489define void @freeze_i16(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {5490; GFX6-SDAG-LABEL: freeze_i16:5491; GFX6-SDAG: ; %bb.0:5492; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5493; GFX6-SDAG-NEXT: s_mov_b32 s6, 05494; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0005495; GFX6-SDAG-NEXT: s_mov_b32 s4, s65496; GFX6-SDAG-NEXT: s_mov_b32 s5, s65497; GFX6-SDAG-NEXT: buffer_load_ushort v0, v[0:1], s[4:7], 0 addr645498; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0)5499; GFX6-SDAG-NEXT: buffer_store_short v0, v[2:3], s[4:7], 0 addr645500; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)5501; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]5502;5503; GFX6-GISEL-LABEL: freeze_i16:5504; GFX6-GISEL: ; %bb.0:5505; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5506; GFX6-GISEL-NEXT: s_mov_b32 s6, 05507; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0005508; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 05509; GFX6-GISEL-NEXT: buffer_load_ushort v0, v[0:1], s[4:7], 0 addr645510; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0)5511; GFX6-GISEL-NEXT: buffer_store_short v0, v[2:3], s[4:7], 0 addr645512; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)5513; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]5514;5515; GFX7-SDAG-LABEL: freeze_i16:5516; GFX7-SDAG: ; %bb.0:5517; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5518; GFX7-SDAG-NEXT: s_mov_b32 s6, 05519; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0005520; GFX7-SDAG-NEXT: s_mov_b32 s4, s65521; GFX7-SDAG-NEXT: s_mov_b32 s5, s65522; GFX7-SDAG-NEXT: buffer_load_ushort v0, v[0:1], s[4:7], 0 addr645523; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)5524; GFX7-SDAG-NEXT: buffer_store_short v0, v[2:3], s[4:7], 0 addr645525; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)5526; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]5527;5528; GFX7-GISEL-LABEL: freeze_i16:5529; GFX7-GISEL: ; %bb.0:5530; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5531; GFX7-GISEL-NEXT: s_mov_b32 s6, 05532; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0005533; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 05534; GFX7-GISEL-NEXT: buffer_load_ushort v0, v[0:1], s[4:7], 0 addr645535; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)5536; GFX7-GISEL-NEXT: buffer_store_short v0, v[2:3], s[4:7], 0 addr645537; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)5538; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]5539;5540; GFX8-LABEL: freeze_i16:5541; GFX8: ; %bb.0:5542; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5543; GFX8-NEXT: flat_load_ushort v0, v[0:1]5544; GFX8-NEXT: s_waitcnt vmcnt(0)5545; GFX8-NEXT: flat_store_short v[2:3], v05546; GFX8-NEXT: s_waitcnt vmcnt(0)5547; GFX8-NEXT: s_setpc_b64 s[30:31]5548;5549; GFX9-LABEL: freeze_i16:5550; GFX9: ; %bb.0:5551; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5552; GFX9-NEXT: global_load_ushort v0, v[0:1], off5553; GFX9-NEXT: s_waitcnt vmcnt(0)5554; GFX9-NEXT: global_store_short v[2:3], v0, off5555; GFX9-NEXT: s_waitcnt vmcnt(0)5556; GFX9-NEXT: s_setpc_b64 s[30:31]5557;5558; GFX10-LABEL: freeze_i16:5559; GFX10: ; %bb.0:5560; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5561; GFX10-NEXT: global_load_ushort v0, v[0:1], off5562; GFX10-NEXT: s_waitcnt vmcnt(0)5563; GFX10-NEXT: global_store_short v[2:3], v0, off5564; GFX10-NEXT: s_setpc_b64 s[30:31]5565;5566; GFX11-SDAG-TRUE16-LABEL: freeze_i16:5567; GFX11-SDAG-TRUE16: ; %bb.0:5568; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5569; GFX11-SDAG-TRUE16-NEXT: global_load_d16_b16 v0, v[0:1], off5570; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0)5571; GFX11-SDAG-TRUE16-NEXT: global_store_b16 v[2:3], v0, off5572; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]5573;5574; GFX11-SDAG-FAKE16-LABEL: freeze_i16:5575; GFX11-SDAG-FAKE16: ; %bb.0:5576; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5577; GFX11-SDAG-FAKE16-NEXT: global_load_u16 v0, v[0:1], off5578; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0)5579; GFX11-SDAG-FAKE16-NEXT: global_store_b16 v[2:3], v0, off5580; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]5581;5582; GFX11-GISEL-LABEL: freeze_i16:5583; GFX11-GISEL: ; %bb.0:5584; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5585; GFX11-GISEL-NEXT: global_load_u16 v0, v[0:1], off5586; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)5587; GFX11-GISEL-NEXT: global_store_b16 v[2:3], v0, off5588; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]5589 %a = load i16, ptr addrspace(1) %ptra5590 %freeze = freeze i16 %a5591 store i16 %freeze, ptr addrspace(1) %ptrb5592 ret void5593}5594 5595define void @freeze_v2i16(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {5596; GFX6-SDAG-LABEL: freeze_v2i16:5597; GFX6-SDAG: ; %bb.0:5598; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5599; GFX6-SDAG-NEXT: s_mov_b32 s6, 05600; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0005601; GFX6-SDAG-NEXT: s_mov_b32 s4, s65602; GFX6-SDAG-NEXT: s_mov_b32 s5, s65603; GFX6-SDAG-NEXT: buffer_load_dword v0, v[0:1], s[4:7], 0 addr645604; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0)5605; GFX6-SDAG-NEXT: buffer_store_dword v0, v[2:3], s[4:7], 0 addr645606; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)5607; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]5608;5609; GFX6-GISEL-LABEL: freeze_v2i16:5610; GFX6-GISEL: ; %bb.0:5611; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5612; GFX6-GISEL-NEXT: s_mov_b32 s6, 05613; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0005614; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 05615; GFX6-GISEL-NEXT: buffer_load_dword v0, v[0:1], s[4:7], 0 addr645616; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0)5617; GFX6-GISEL-NEXT: buffer_store_dword v0, v[2:3], s[4:7], 0 addr645618; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)5619; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]5620;5621; GFX7-SDAG-LABEL: freeze_v2i16:5622; GFX7-SDAG: ; %bb.0:5623; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5624; GFX7-SDAG-NEXT: s_mov_b32 s6, 05625; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0005626; GFX7-SDAG-NEXT: s_mov_b32 s4, s65627; GFX7-SDAG-NEXT: s_mov_b32 s5, s65628; GFX7-SDAG-NEXT: buffer_load_dword v0, v[0:1], s[4:7], 0 addr645629; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)5630; GFX7-SDAG-NEXT: buffer_store_dword v0, v[2:3], s[4:7], 0 addr645631; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)5632; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]5633;5634; GFX7-GISEL-LABEL: freeze_v2i16:5635; GFX7-GISEL: ; %bb.0:5636; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5637; GFX7-GISEL-NEXT: s_mov_b32 s6, 05638; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0005639; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 05640; GFX7-GISEL-NEXT: buffer_load_dword v0, v[0:1], s[4:7], 0 addr645641; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)5642; GFX7-GISEL-NEXT: buffer_store_dword v0, v[2:3], s[4:7], 0 addr645643; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)5644; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]5645;5646; GFX8-LABEL: freeze_v2i16:5647; GFX8: ; %bb.0:5648; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5649; GFX8-NEXT: flat_load_dword v0, v[0:1]5650; GFX8-NEXT: s_waitcnt vmcnt(0)5651; GFX8-NEXT: flat_store_dword v[2:3], v05652; GFX8-NEXT: s_waitcnt vmcnt(0)5653; GFX8-NEXT: s_setpc_b64 s[30:31]5654;5655; GFX9-LABEL: freeze_v2i16:5656; GFX9: ; %bb.0:5657; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5658; GFX9-NEXT: global_load_dword v0, v[0:1], off5659; GFX9-NEXT: s_waitcnt vmcnt(0)5660; GFX9-NEXT: global_store_dword v[2:3], v0, off5661; GFX9-NEXT: s_waitcnt vmcnt(0)5662; GFX9-NEXT: s_setpc_b64 s[30:31]5663;5664; GFX10-LABEL: freeze_v2i16:5665; GFX10: ; %bb.0:5666; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5667; GFX10-NEXT: global_load_dword v0, v[0:1], off5668; GFX10-NEXT: s_waitcnt vmcnt(0)5669; GFX10-NEXT: global_store_dword v[2:3], v0, off5670; GFX10-NEXT: s_setpc_b64 s[30:31]5671;5672; GFX11-LABEL: freeze_v2i16:5673; GFX11: ; %bb.0:5674; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5675; GFX11-NEXT: global_load_b32 v0, v[0:1], off5676; GFX11-NEXT: s_waitcnt vmcnt(0)5677; GFX11-NEXT: global_store_b32 v[2:3], v0, off5678; GFX11-NEXT: s_setpc_b64 s[30:31]5679 %a = load <2 x i16>, ptr addrspace(1) %ptra5680 %freeze = freeze <2 x i16> %a5681 store <2 x i16> %freeze, ptr addrspace(1) %ptrb5682 ret void5683}5684 5685define void @freeze_v3i16(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {5686; GFX6-SDAG-LABEL: freeze_v3i16:5687; GFX6-SDAG: ; %bb.0:5688; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5689; GFX6-SDAG-NEXT: s_mov_b32 s6, 05690; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0005691; GFX6-SDAG-NEXT: s_mov_b32 s4, s65692; GFX6-SDAG-NEXT: s_mov_b32 s5, s65693; GFX6-SDAG-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr645694; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0)5695; GFX6-SDAG-NEXT: buffer_store_short v1, v[2:3], s[4:7], 0 addr64 offset:45696; GFX6-SDAG-NEXT: buffer_store_dword v0, v[2:3], s[4:7], 0 addr645697; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)5698; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]5699;5700; GFX6-GISEL-LABEL: freeze_v3i16:5701; GFX6-GISEL: ; %bb.0:5702; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5703; GFX6-GISEL-NEXT: s_mov_b32 s6, 05704; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0005705; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 05706; GFX6-GISEL-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr645707; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0)5708; GFX6-GISEL-NEXT: v_lshrrev_b32_e32 v4, 16, v05709; GFX6-GISEL-NEXT: buffer_store_short v0, v[2:3], s[4:7], 0 addr645710; GFX6-GISEL-NEXT: buffer_store_short v4, v[2:3], s[4:7], 0 addr64 offset:25711; GFX6-GISEL-NEXT: buffer_store_short v1, v[2:3], s[4:7], 0 addr64 offset:45712; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)5713; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]5714;5715; GFX7-SDAG-LABEL: freeze_v3i16:5716; GFX7-SDAG: ; %bb.0:5717; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5718; GFX7-SDAG-NEXT: s_mov_b32 s6, 05719; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0005720; GFX7-SDAG-NEXT: s_mov_b32 s4, s65721; GFX7-SDAG-NEXT: s_mov_b32 s5, s65722; GFX7-SDAG-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr645723; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)5724; GFX7-SDAG-NEXT: buffer_store_short v1, v[2:3], s[4:7], 0 addr64 offset:45725; GFX7-SDAG-NEXT: buffer_store_dword v0, v[2:3], s[4:7], 0 addr645726; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)5727; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]5728;5729; GFX7-GISEL-LABEL: freeze_v3i16:5730; GFX7-GISEL: ; %bb.0:5731; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5732; GFX7-GISEL-NEXT: s_mov_b32 s6, 05733; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0005734; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 05735; GFX7-GISEL-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr645736; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)5737; GFX7-GISEL-NEXT: v_lshrrev_b32_e32 v4, 16, v05738; GFX7-GISEL-NEXT: buffer_store_short v0, v[2:3], s[4:7], 0 addr645739; GFX7-GISEL-NEXT: buffer_store_short v4, v[2:3], s[4:7], 0 addr64 offset:25740; GFX7-GISEL-NEXT: buffer_store_short v1, v[2:3], s[4:7], 0 addr64 offset:45741; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)5742; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]5743;5744; GFX8-GISEL-LABEL: freeze_v3i16:5745; GFX8-GISEL: ; %bb.0:5746; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5747; GFX8-GISEL-NEXT: flat_load_dwordx2 v[0:1], v[0:1]5748; GFX8-GISEL-NEXT: v_add_u32_e32 v4, vcc, 2, v25749; GFX8-GISEL-NEXT: v_addc_u32_e32 v5, vcc, 0, v3, vcc5750; GFX8-GISEL-NEXT: v_add_u32_e32 v6, vcc, 4, v25751; GFX8-GISEL-NEXT: v_addc_u32_e32 v7, vcc, 0, v3, vcc5752; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)5753; GFX8-GISEL-NEXT: v_lshrrev_b32_e32 v8, 16, v05754; GFX8-GISEL-NEXT: flat_store_short v[2:3], v05755; GFX8-GISEL-NEXT: flat_store_short v[4:5], v85756; GFX8-GISEL-NEXT: flat_store_short v[6:7], v15757; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)5758; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]5759;5760; GFX9-GISEL-LABEL: freeze_v3i16:5761; GFX9-GISEL: ; %bb.0:5762; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5763; GFX9-GISEL-NEXT: global_load_dwordx2 v[0:1], v[0:1], off5764; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)5765; GFX9-GISEL-NEXT: global_store_short v[2:3], v0, off5766; GFX9-GISEL-NEXT: global_store_short_d16_hi v[2:3], v0, off offset:25767; GFX9-GISEL-NEXT: global_store_short v[2:3], v1, off offset:45768; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)5769; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]5770;5771; GFX10-SDAG-LABEL: freeze_v3i16:5772; GFX10-SDAG: ; %bb.0:5773; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5774; GFX10-SDAG-NEXT: global_load_dwordx2 v[0:1], v[0:1], off5775; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)5776; GFX10-SDAG-NEXT: global_store_short v[2:3], v1, off offset:45777; GFX10-SDAG-NEXT: global_store_dword v[2:3], v0, off5778; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]5779;5780; GFX10-GISEL-LABEL: freeze_v3i16:5781; GFX10-GISEL: ; %bb.0:5782; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5783; GFX10-GISEL-NEXT: global_load_dwordx2 v[0:1], v[0:1], off5784; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)5785; GFX10-GISEL-NEXT: global_store_short v[2:3], v0, off5786; GFX10-GISEL-NEXT: global_store_short_d16_hi v[2:3], v0, off offset:25787; GFX10-GISEL-NEXT: global_store_short v[2:3], v1, off offset:45788; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]5789;5790; GFX11-SDAG-LABEL: freeze_v3i16:5791; GFX11-SDAG: ; %bb.0:5792; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5793; GFX11-SDAG-NEXT: global_load_b64 v[0:1], v[0:1], off5794; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0)5795; GFX11-SDAG-NEXT: s_clause 0x15796; GFX11-SDAG-NEXT: global_store_b16 v[2:3], v1, off offset:45797; GFX11-SDAG-NEXT: global_store_b32 v[2:3], v0, off5798; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]5799;5800; GFX11-GISEL-LABEL: freeze_v3i16:5801; GFX11-GISEL: ; %bb.0:5802; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5803; GFX11-GISEL-NEXT: global_load_b64 v[0:1], v[0:1], off5804; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)5805; GFX11-GISEL-NEXT: s_clause 0x25806; GFX11-GISEL-NEXT: global_store_b16 v[2:3], v0, off5807; GFX11-GISEL-NEXT: global_store_d16_hi_b16 v[2:3], v0, off offset:25808; GFX11-GISEL-NEXT: global_store_b16 v[2:3], v1, off offset:45809; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]5810 %a = load <3 x i16>, ptr addrspace(1) %ptra5811 %freeze = freeze <3 x i16> %a5812 store <3 x i16> %freeze, ptr addrspace(1) %ptrb5813 ret void5814}5815 5816define void @freeze_v4i16(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {5817; GFX6-SDAG-LABEL: freeze_v4i16:5818; GFX6-SDAG: ; %bb.0:5819; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5820; GFX6-SDAG-NEXT: s_mov_b32 s6, 05821; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0005822; GFX6-SDAG-NEXT: s_mov_b32 s4, s65823; GFX6-SDAG-NEXT: s_mov_b32 s5, s65824; GFX6-SDAG-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr645825; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0)5826; GFX6-SDAG-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr645827; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)5828; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]5829;5830; GFX6-GISEL-LABEL: freeze_v4i16:5831; GFX6-GISEL: ; %bb.0:5832; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5833; GFX6-GISEL-NEXT: s_mov_b32 s6, 05834; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0005835; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 05836; GFX6-GISEL-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr645837; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0)5838; GFX6-GISEL-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr645839; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)5840; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]5841;5842; GFX7-SDAG-LABEL: freeze_v4i16:5843; GFX7-SDAG: ; %bb.0:5844; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5845; GFX7-SDAG-NEXT: s_mov_b32 s6, 05846; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0005847; GFX7-SDAG-NEXT: s_mov_b32 s4, s65848; GFX7-SDAG-NEXT: s_mov_b32 s5, s65849; GFX7-SDAG-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr645850; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)5851; GFX7-SDAG-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr645852; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)5853; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]5854;5855; GFX7-GISEL-LABEL: freeze_v4i16:5856; GFX7-GISEL: ; %bb.0:5857; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5858; GFX7-GISEL-NEXT: s_mov_b32 s6, 05859; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0005860; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 05861; GFX7-GISEL-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr645862; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)5863; GFX7-GISEL-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr645864; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)5865; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]5866;5867; GFX8-LABEL: freeze_v4i16:5868; GFX8: ; %bb.0:5869; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5870; GFX8-NEXT: flat_load_dwordx2 v[0:1], v[0:1]5871; GFX8-NEXT: s_waitcnt vmcnt(0)5872; GFX8-NEXT: flat_store_dwordx2 v[2:3], v[0:1]5873; GFX8-NEXT: s_waitcnt vmcnt(0)5874; GFX8-NEXT: s_setpc_b64 s[30:31]5875;5876; GFX9-LABEL: freeze_v4i16:5877; GFX9: ; %bb.0:5878; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5879; GFX9-NEXT: global_load_dwordx2 v[0:1], v[0:1], off5880; GFX9-NEXT: s_waitcnt vmcnt(0)5881; GFX9-NEXT: global_store_dwordx2 v[2:3], v[0:1], off5882; GFX9-NEXT: s_waitcnt vmcnt(0)5883; GFX9-NEXT: s_setpc_b64 s[30:31]5884;5885; GFX10-LABEL: freeze_v4i16:5886; GFX10: ; %bb.0:5887; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5888; GFX10-NEXT: global_load_dwordx2 v[0:1], v[0:1], off5889; GFX10-NEXT: s_waitcnt vmcnt(0)5890; GFX10-NEXT: global_store_dwordx2 v[2:3], v[0:1], off5891; GFX10-NEXT: s_setpc_b64 s[30:31]5892;5893; GFX11-LABEL: freeze_v4i16:5894; GFX11: ; %bb.0:5895; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5896; GFX11-NEXT: global_load_b64 v[0:1], v[0:1], off5897; GFX11-NEXT: s_waitcnt vmcnt(0)5898; GFX11-NEXT: global_store_b64 v[2:3], v[0:1], off5899; GFX11-NEXT: s_setpc_b64 s[30:31]5900 %a = load <4 x i16>, ptr addrspace(1) %ptra5901 %freeze = freeze <4 x i16> %a5902 store <4 x i16> %freeze, ptr addrspace(1) %ptrb5903 ret void5904}5905 5906define void @freeze_v8i16(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {5907; GFX6-SDAG-LABEL: freeze_v8i16:5908; GFX6-SDAG: ; %bb.0:5909; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5910; GFX6-SDAG-NEXT: s_mov_b32 s6, 05911; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0005912; GFX6-SDAG-NEXT: s_mov_b32 s4, s65913; GFX6-SDAG-NEXT: s_mov_b32 s5, s65914; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr645915; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0)5916; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr645917; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)5918; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]5919;5920; GFX6-GISEL-LABEL: freeze_v8i16:5921; GFX6-GISEL: ; %bb.0:5922; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5923; GFX6-GISEL-NEXT: s_mov_b32 s6, 05924; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0005925; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 05926; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr645927; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0)5928; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr645929; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)5930; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]5931;5932; GFX7-SDAG-LABEL: freeze_v8i16:5933; GFX7-SDAG: ; %bb.0:5934; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5935; GFX7-SDAG-NEXT: s_mov_b32 s6, 05936; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0005937; GFX7-SDAG-NEXT: s_mov_b32 s4, s65938; GFX7-SDAG-NEXT: s_mov_b32 s5, s65939; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr645940; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)5941; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr645942; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)5943; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]5944;5945; GFX7-GISEL-LABEL: freeze_v8i16:5946; GFX7-GISEL: ; %bb.0:5947; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5948; GFX7-GISEL-NEXT: s_mov_b32 s6, 05949; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0005950; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 05951; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr645952; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)5953; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr645954; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)5955; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]5956;5957; GFX8-LABEL: freeze_v8i16:5958; GFX8: ; %bb.0:5959; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5960; GFX8-NEXT: flat_load_dwordx4 v[4:7], v[0:1]5961; GFX8-NEXT: s_waitcnt vmcnt(0)5962; GFX8-NEXT: flat_store_dwordx4 v[2:3], v[4:7]5963; GFX8-NEXT: s_waitcnt vmcnt(0)5964; GFX8-NEXT: s_setpc_b64 s[30:31]5965;5966; GFX9-LABEL: freeze_v8i16:5967; GFX9: ; %bb.0:5968; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5969; GFX9-NEXT: global_load_dwordx4 v[4:7], v[0:1], off5970; GFX9-NEXT: s_waitcnt vmcnt(0)5971; GFX9-NEXT: global_store_dwordx4 v[2:3], v[4:7], off5972; GFX9-NEXT: s_waitcnt vmcnt(0)5973; GFX9-NEXT: s_setpc_b64 s[30:31]5974;5975; GFX10-LABEL: freeze_v8i16:5976; GFX10: ; %bb.0:5977; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5978; GFX10-NEXT: global_load_dwordx4 v[4:7], v[0:1], off5979; GFX10-NEXT: s_waitcnt vmcnt(0)5980; GFX10-NEXT: global_store_dwordx4 v[2:3], v[4:7], off5981; GFX10-NEXT: s_setpc_b64 s[30:31]5982;5983; GFX11-LABEL: freeze_v8i16:5984; GFX11: ; %bb.0:5985; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5986; GFX11-NEXT: global_load_b128 v[4:7], v[0:1], off5987; GFX11-NEXT: s_waitcnt vmcnt(0)5988; GFX11-NEXT: global_store_b128 v[2:3], v[4:7], off5989; GFX11-NEXT: s_setpc_b64 s[30:31]5990 %a = load <8 x i16>, ptr addrspace(1) %ptra5991 %freeze = freeze <8 x i16> %a5992 store <8 x i16> %freeze, ptr addrspace(1) %ptrb5993 ret void5994}5995 5996define void @freeze_v16i16(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {5997; GFX6-SDAG-LABEL: freeze_v16i16:5998; GFX6-SDAG: ; %bb.0:5999; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6000; GFX6-SDAG-NEXT: s_mov_b32 s6, 06001; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0006002; GFX6-SDAG-NEXT: s_mov_b32 s4, s66003; GFX6-SDAG-NEXT: s_mov_b32 s5, s66004; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:166005; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr646006; GFX6-SDAG-NEXT: s_waitcnt vmcnt(1)6007; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:166008; GFX6-SDAG-NEXT: s_waitcnt vmcnt(1)6009; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr646010; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)6011; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]6012;6013; GFX6-GISEL-LABEL: freeze_v16i16:6014; GFX6-GISEL: ; %bb.0:6015; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6016; GFX6-GISEL-NEXT: s_mov_b32 s6, 06017; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0006018; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 06019; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr646020; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:166021; GFX6-GISEL-NEXT: s_waitcnt vmcnt(1)6022; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr646023; GFX6-GISEL-NEXT: s_waitcnt vmcnt(1)6024; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:166025; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)6026; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]6027;6028; GFX7-SDAG-LABEL: freeze_v16i16:6029; GFX7-SDAG: ; %bb.0:6030; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6031; GFX7-SDAG-NEXT: s_mov_b32 s6, 06032; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0006033; GFX7-SDAG-NEXT: s_mov_b32 s4, s66034; GFX7-SDAG-NEXT: s_mov_b32 s5, s66035; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:166036; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr646037; GFX7-SDAG-NEXT: s_waitcnt vmcnt(1)6038; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:166039; GFX7-SDAG-NEXT: s_waitcnt vmcnt(1)6040; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr646041; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)6042; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]6043;6044; GFX7-GISEL-LABEL: freeze_v16i16:6045; GFX7-GISEL: ; %bb.0:6046; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6047; GFX7-GISEL-NEXT: s_mov_b32 s6, 06048; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0006049; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 06050; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr646051; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:166052; GFX7-GISEL-NEXT: s_waitcnt vmcnt(1)6053; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr646054; GFX7-GISEL-NEXT: s_waitcnt vmcnt(1)6055; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:166056; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)6057; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]6058;6059; GFX8-GISEL-LABEL: freeze_v16i16:6060; GFX8-GISEL: ; %bb.0:6061; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6062; GFX8-GISEL-NEXT: flat_load_dwordx4 v[4:7], v[0:1]6063; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 16, v06064; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v1, vcc6065; GFX8-GISEL-NEXT: flat_load_dwordx4 v[8:11], v[0:1]6066; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 16, v26067; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v3, vcc6068; GFX8-GISEL-NEXT: s_waitcnt vmcnt(1)6069; GFX8-GISEL-NEXT: flat_store_dwordx4 v[2:3], v[4:7]6070; GFX8-GISEL-NEXT: s_waitcnt vmcnt(1)6071; GFX8-GISEL-NEXT: flat_store_dwordx4 v[0:1], v[8:11]6072; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)6073; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]6074;6075; GFX9-GISEL-LABEL: freeze_v16i16:6076; GFX9-GISEL: ; %bb.0:6077; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6078; GFX9-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off6079; GFX9-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:166080; GFX9-GISEL-NEXT: s_waitcnt vmcnt(1)6081; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off6082; GFX9-GISEL-NEXT: s_waitcnt vmcnt(1)6083; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:166084; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)6085; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]6086;6087; GFX10-SDAG-LABEL: freeze_v16i16:6088; GFX10-SDAG: ; %bb.0:6089; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6090; GFX10-SDAG-NEXT: s_clause 0x16091; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off offset:166092; GFX10-SDAG-NEXT: global_load_dwordx4 v[8:11], v[0:1], off6093; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1)6094; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off offset:166095; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)6096; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[8:11], off6097; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]6098;6099; GFX10-GISEL-LABEL: freeze_v16i16:6100; GFX10-GISEL: ; %bb.0:6101; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6102; GFX10-GISEL-NEXT: s_clause 0x16103; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off6104; GFX10-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:166105; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1)6106; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off6107; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)6108; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:166109; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]6110;6111; GFX11-SDAG-LABEL: freeze_v16i16:6112; GFX11-SDAG: ; %bb.0:6113; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6114; GFX11-SDAG-NEXT: s_clause 0x16115; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off offset:166116; GFX11-SDAG-NEXT: global_load_b128 v[8:11], v[0:1], off6117; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1)6118; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off offset:166119; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0)6120; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[8:11], off6121; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]6122;6123; GFX11-GISEL-LABEL: freeze_v16i16:6124; GFX11-GISEL: ; %bb.0:6125; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6126; GFX11-GISEL-NEXT: s_clause 0x16127; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off6128; GFX11-GISEL-NEXT: global_load_b128 v[8:11], v[0:1], off offset:166129; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1)6130; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off6131; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)6132; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[8:11], off offset:166133; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]6134 %a = load <16 x i16>, ptr addrspace(1) %ptra6135 %freeze = freeze <16 x i16> %a6136 store <16 x i16> %freeze, ptr addrspace(1) %ptrb6137 ret void6138}6139 6140define void @freeze_f16(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {6141; GFX6-SDAG-LABEL: freeze_f16:6142; GFX6-SDAG: ; %bb.0:6143; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6144; GFX6-SDAG-NEXT: s_mov_b32 s6, 06145; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0006146; GFX6-SDAG-NEXT: s_mov_b32 s4, s66147; GFX6-SDAG-NEXT: s_mov_b32 s5, s66148; GFX6-SDAG-NEXT: buffer_load_ushort v0, v[0:1], s[4:7], 0 addr646149; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0)6150; GFX6-SDAG-NEXT: buffer_store_short v0, v[2:3], s[4:7], 0 addr646151; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)6152; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]6153;6154; GFX6-GISEL-LABEL: freeze_f16:6155; GFX6-GISEL: ; %bb.0:6156; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6157; GFX6-GISEL-NEXT: s_mov_b32 s6, 06158; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0006159; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 06160; GFX6-GISEL-NEXT: buffer_load_ushort v0, v[0:1], s[4:7], 0 addr646161; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0)6162; GFX6-GISEL-NEXT: buffer_store_short v0, v[2:3], s[4:7], 0 addr646163; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)6164; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]6165;6166; GFX7-SDAG-LABEL: freeze_f16:6167; GFX7-SDAG: ; %bb.0:6168; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6169; GFX7-SDAG-NEXT: s_mov_b32 s6, 06170; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0006171; GFX7-SDAG-NEXT: s_mov_b32 s4, s66172; GFX7-SDAG-NEXT: s_mov_b32 s5, s66173; GFX7-SDAG-NEXT: buffer_load_ushort v0, v[0:1], s[4:7], 0 addr646174; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)6175; GFX7-SDAG-NEXT: buffer_store_short v0, v[2:3], s[4:7], 0 addr646176; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)6177; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]6178;6179; GFX7-GISEL-LABEL: freeze_f16:6180; GFX7-GISEL: ; %bb.0:6181; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6182; GFX7-GISEL-NEXT: s_mov_b32 s6, 06183; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0006184; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 06185; GFX7-GISEL-NEXT: buffer_load_ushort v0, v[0:1], s[4:7], 0 addr646186; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)6187; GFX7-GISEL-NEXT: buffer_store_short v0, v[2:3], s[4:7], 0 addr646188; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)6189; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]6190;6191; GFX8-LABEL: freeze_f16:6192; GFX8: ; %bb.0:6193; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6194; GFX8-NEXT: flat_load_ushort v0, v[0:1]6195; GFX8-NEXT: s_waitcnt vmcnt(0)6196; GFX8-NEXT: flat_store_short v[2:3], v06197; GFX8-NEXT: s_waitcnt vmcnt(0)6198; GFX8-NEXT: s_setpc_b64 s[30:31]6199;6200; GFX9-LABEL: freeze_f16:6201; GFX9: ; %bb.0:6202; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6203; GFX9-NEXT: global_load_ushort v0, v[0:1], off6204; GFX9-NEXT: s_waitcnt vmcnt(0)6205; GFX9-NEXT: global_store_short v[2:3], v0, off6206; GFX9-NEXT: s_waitcnt vmcnt(0)6207; GFX9-NEXT: s_setpc_b64 s[30:31]6208;6209; GFX10-LABEL: freeze_f16:6210; GFX10: ; %bb.0:6211; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6212; GFX10-NEXT: global_load_ushort v0, v[0:1], off6213; GFX10-NEXT: s_waitcnt vmcnt(0)6214; GFX10-NEXT: global_store_short v[2:3], v0, off6215; GFX10-NEXT: s_setpc_b64 s[30:31]6216;6217; GFX11-SDAG-TRUE16-LABEL: freeze_f16:6218; GFX11-SDAG-TRUE16: ; %bb.0:6219; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6220; GFX11-SDAG-TRUE16-NEXT: global_load_d16_b16 v0, v[0:1], off6221; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0)6222; GFX11-SDAG-TRUE16-NEXT: global_store_b16 v[2:3], v0, off6223; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]6224;6225; GFX11-SDAG-FAKE16-LABEL: freeze_f16:6226; GFX11-SDAG-FAKE16: ; %bb.0:6227; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6228; GFX11-SDAG-FAKE16-NEXT: global_load_u16 v0, v[0:1], off6229; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0)6230; GFX11-SDAG-FAKE16-NEXT: global_store_b16 v[2:3], v0, off6231; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]6232;6233; GFX11-GISEL-LABEL: freeze_f16:6234; GFX11-GISEL: ; %bb.0:6235; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6236; GFX11-GISEL-NEXT: global_load_u16 v0, v[0:1], off6237; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)6238; GFX11-GISEL-NEXT: global_store_b16 v[2:3], v0, off6239; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]6240 %a = load half, ptr addrspace(1) %ptra6241 %freeze = freeze half %a6242 store half %freeze, ptr addrspace(1) %ptrb6243 ret void6244}6245 6246define void @freeze_v2f16(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {6247; GFX6-SDAG-LABEL: freeze_v2f16:6248; GFX6-SDAG: ; %bb.0:6249; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6250; GFX6-SDAG-NEXT: s_mov_b32 s6, 06251; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0006252; GFX6-SDAG-NEXT: s_mov_b32 s4, s66253; GFX6-SDAG-NEXT: s_mov_b32 s5, s66254; GFX6-SDAG-NEXT: buffer_load_dword v0, v[0:1], s[4:7], 0 addr646255; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0)6256; GFX6-SDAG-NEXT: buffer_store_dword v0, v[2:3], s[4:7], 0 addr646257; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)6258; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]6259;6260; GFX6-GISEL-LABEL: freeze_v2f16:6261; GFX6-GISEL: ; %bb.0:6262; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6263; GFX6-GISEL-NEXT: s_mov_b32 s6, 06264; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0006265; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 06266; GFX6-GISEL-NEXT: buffer_load_dword v0, v[0:1], s[4:7], 0 addr646267; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0)6268; GFX6-GISEL-NEXT: buffer_store_dword v0, v[2:3], s[4:7], 0 addr646269; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)6270; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]6271;6272; GFX7-SDAG-LABEL: freeze_v2f16:6273; GFX7-SDAG: ; %bb.0:6274; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6275; GFX7-SDAG-NEXT: s_mov_b32 s6, 06276; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0006277; GFX7-SDAG-NEXT: s_mov_b32 s4, s66278; GFX7-SDAG-NEXT: s_mov_b32 s5, s66279; GFX7-SDAG-NEXT: buffer_load_dword v0, v[0:1], s[4:7], 0 addr646280; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)6281; GFX7-SDAG-NEXT: buffer_store_dword v0, v[2:3], s[4:7], 0 addr646282; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)6283; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]6284;6285; GFX7-GISEL-LABEL: freeze_v2f16:6286; GFX7-GISEL: ; %bb.0:6287; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6288; GFX7-GISEL-NEXT: s_mov_b32 s6, 06289; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0006290; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 06291; GFX7-GISEL-NEXT: buffer_load_dword v0, v[0:1], s[4:7], 0 addr646292; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)6293; GFX7-GISEL-NEXT: buffer_store_dword v0, v[2:3], s[4:7], 0 addr646294; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)6295; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]6296;6297; GFX8-LABEL: freeze_v2f16:6298; GFX8: ; %bb.0:6299; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6300; GFX8-NEXT: flat_load_dword v0, v[0:1]6301; GFX8-NEXT: s_waitcnt vmcnt(0)6302; GFX8-NEXT: flat_store_dword v[2:3], v06303; GFX8-NEXT: s_waitcnt vmcnt(0)6304; GFX8-NEXT: s_setpc_b64 s[30:31]6305;6306; GFX9-LABEL: freeze_v2f16:6307; GFX9: ; %bb.0:6308; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6309; GFX9-NEXT: global_load_dword v0, v[0:1], off6310; GFX9-NEXT: s_waitcnt vmcnt(0)6311; GFX9-NEXT: global_store_dword v[2:3], v0, off6312; GFX9-NEXT: s_waitcnt vmcnt(0)6313; GFX9-NEXT: s_setpc_b64 s[30:31]6314;6315; GFX10-LABEL: freeze_v2f16:6316; GFX10: ; %bb.0:6317; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6318; GFX10-NEXT: global_load_dword v0, v[0:1], off6319; GFX10-NEXT: s_waitcnt vmcnt(0)6320; GFX10-NEXT: global_store_dword v[2:3], v0, off6321; GFX10-NEXT: s_setpc_b64 s[30:31]6322;6323; GFX11-LABEL: freeze_v2f16:6324; GFX11: ; %bb.0:6325; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6326; GFX11-NEXT: global_load_b32 v0, v[0:1], off6327; GFX11-NEXT: s_waitcnt vmcnt(0)6328; GFX11-NEXT: global_store_b32 v[2:3], v0, off6329; GFX11-NEXT: s_setpc_b64 s[30:31]6330 %a = load <2 x half>, ptr addrspace(1) %ptra6331 %freeze = freeze <2 x half> %a6332 store <2 x half> %freeze, ptr addrspace(1) %ptrb6333 ret void6334}6335 6336define void @freeze_v3f16(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {6337; GFX6-SDAG-LABEL: freeze_v3f16:6338; GFX6-SDAG: ; %bb.0:6339; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6340; GFX6-SDAG-NEXT: s_mov_b32 s6, 06341; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0006342; GFX6-SDAG-NEXT: s_mov_b32 s4, s66343; GFX6-SDAG-NEXT: s_mov_b32 s5, s66344; GFX6-SDAG-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr646345; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0)6346; GFX6-SDAG-NEXT: buffer_store_short v1, v[2:3], s[4:7], 0 addr64 offset:46347; GFX6-SDAG-NEXT: buffer_store_dword v0, v[2:3], s[4:7], 0 addr646348; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)6349; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]6350;6351; GFX6-GISEL-LABEL: freeze_v3f16:6352; GFX6-GISEL: ; %bb.0:6353; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6354; GFX6-GISEL-NEXT: s_mov_b32 s6, 06355; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0006356; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 06357; GFX6-GISEL-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr646358; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0)6359; GFX6-GISEL-NEXT: v_lshrrev_b32_e32 v4, 16, v06360; GFX6-GISEL-NEXT: buffer_store_short v0, v[2:3], s[4:7], 0 addr646361; GFX6-GISEL-NEXT: buffer_store_short v4, v[2:3], s[4:7], 0 addr64 offset:26362; GFX6-GISEL-NEXT: buffer_store_short v1, v[2:3], s[4:7], 0 addr64 offset:46363; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)6364; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]6365;6366; GFX7-SDAG-LABEL: freeze_v3f16:6367; GFX7-SDAG: ; %bb.0:6368; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6369; GFX7-SDAG-NEXT: s_mov_b32 s6, 06370; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0006371; GFX7-SDAG-NEXT: s_mov_b32 s4, s66372; GFX7-SDAG-NEXT: s_mov_b32 s5, s66373; GFX7-SDAG-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr646374; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)6375; GFX7-SDAG-NEXT: buffer_store_short v1, v[2:3], s[4:7], 0 addr64 offset:46376; GFX7-SDAG-NEXT: buffer_store_dword v0, v[2:3], s[4:7], 0 addr646377; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)6378; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]6379;6380; GFX7-GISEL-LABEL: freeze_v3f16:6381; GFX7-GISEL: ; %bb.0:6382; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6383; GFX7-GISEL-NEXT: s_mov_b32 s6, 06384; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0006385; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 06386; GFX7-GISEL-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr646387; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)6388; GFX7-GISEL-NEXT: v_lshrrev_b32_e32 v4, 16, v06389; GFX7-GISEL-NEXT: buffer_store_short v0, v[2:3], s[4:7], 0 addr646390; GFX7-GISEL-NEXT: buffer_store_short v4, v[2:3], s[4:7], 0 addr64 offset:26391; GFX7-GISEL-NEXT: buffer_store_short v1, v[2:3], s[4:7], 0 addr64 offset:46392; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)6393; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]6394;6395; GFX8-GISEL-LABEL: freeze_v3f16:6396; GFX8-GISEL: ; %bb.0:6397; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6398; GFX8-GISEL-NEXT: flat_load_dwordx2 v[0:1], v[0:1]6399; GFX8-GISEL-NEXT: v_add_u32_e32 v4, vcc, 2, v26400; GFX8-GISEL-NEXT: v_addc_u32_e32 v5, vcc, 0, v3, vcc6401; GFX8-GISEL-NEXT: v_add_u32_e32 v6, vcc, 4, v26402; GFX8-GISEL-NEXT: v_addc_u32_e32 v7, vcc, 0, v3, vcc6403; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)6404; GFX8-GISEL-NEXT: v_lshrrev_b32_e32 v8, 16, v06405; GFX8-GISEL-NEXT: flat_store_short v[2:3], v06406; GFX8-GISEL-NEXT: flat_store_short v[4:5], v86407; GFX8-GISEL-NEXT: flat_store_short v[6:7], v16408; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)6409; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]6410;6411; GFX9-GISEL-LABEL: freeze_v3f16:6412; GFX9-GISEL: ; %bb.0:6413; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6414; GFX9-GISEL-NEXT: global_load_dwordx2 v[0:1], v[0:1], off6415; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)6416; GFX9-GISEL-NEXT: global_store_short v[2:3], v0, off6417; GFX9-GISEL-NEXT: global_store_short_d16_hi v[2:3], v0, off offset:26418; GFX9-GISEL-NEXT: global_store_short v[2:3], v1, off offset:46419; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)6420; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]6421;6422; GFX10-SDAG-LABEL: freeze_v3f16:6423; GFX10-SDAG: ; %bb.0:6424; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6425; GFX10-SDAG-NEXT: global_load_dwordx2 v[0:1], v[0:1], off6426; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)6427; GFX10-SDAG-NEXT: global_store_short v[2:3], v1, off offset:46428; GFX10-SDAG-NEXT: global_store_dword v[2:3], v0, off6429; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]6430;6431; GFX10-GISEL-LABEL: freeze_v3f16:6432; GFX10-GISEL: ; %bb.0:6433; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6434; GFX10-GISEL-NEXT: global_load_dwordx2 v[0:1], v[0:1], off6435; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)6436; GFX10-GISEL-NEXT: global_store_short v[2:3], v0, off6437; GFX10-GISEL-NEXT: global_store_short_d16_hi v[2:3], v0, off offset:26438; GFX10-GISEL-NEXT: global_store_short v[2:3], v1, off offset:46439; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]6440;6441; GFX11-SDAG-LABEL: freeze_v3f16:6442; GFX11-SDAG: ; %bb.0:6443; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6444; GFX11-SDAG-NEXT: global_load_b64 v[0:1], v[0:1], off6445; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0)6446; GFX11-SDAG-NEXT: s_clause 0x16447; GFX11-SDAG-NEXT: global_store_b16 v[2:3], v1, off offset:46448; GFX11-SDAG-NEXT: global_store_b32 v[2:3], v0, off6449; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]6450;6451; GFX11-GISEL-LABEL: freeze_v3f16:6452; GFX11-GISEL: ; %bb.0:6453; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6454; GFX11-GISEL-NEXT: global_load_b64 v[0:1], v[0:1], off6455; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)6456; GFX11-GISEL-NEXT: s_clause 0x26457; GFX11-GISEL-NEXT: global_store_b16 v[2:3], v0, off6458; GFX11-GISEL-NEXT: global_store_d16_hi_b16 v[2:3], v0, off offset:26459; GFX11-GISEL-NEXT: global_store_b16 v[2:3], v1, off offset:46460; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]6461 %a = load <3 x half>, ptr addrspace(1) %ptra6462 %freeze = freeze <3 x half> %a6463 store <3 x half> %freeze, ptr addrspace(1) %ptrb6464 ret void6465}6466 6467define void @freeze_v4f16(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {6468; GFX6-SDAG-LABEL: freeze_v4f16:6469; GFX6-SDAG: ; %bb.0:6470; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6471; GFX6-SDAG-NEXT: s_mov_b32 s6, 06472; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0006473; GFX6-SDAG-NEXT: s_mov_b32 s4, s66474; GFX6-SDAG-NEXT: s_mov_b32 s5, s66475; GFX6-SDAG-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr646476; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0)6477; GFX6-SDAG-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr646478; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)6479; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]6480;6481; GFX6-GISEL-LABEL: freeze_v4f16:6482; GFX6-GISEL: ; %bb.0:6483; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6484; GFX6-GISEL-NEXT: s_mov_b32 s6, 06485; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0006486; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 06487; GFX6-GISEL-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr646488; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0)6489; GFX6-GISEL-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr646490; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)6491; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]6492;6493; GFX7-SDAG-LABEL: freeze_v4f16:6494; GFX7-SDAG: ; %bb.0:6495; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6496; GFX7-SDAG-NEXT: s_mov_b32 s6, 06497; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0006498; GFX7-SDAG-NEXT: s_mov_b32 s4, s66499; GFX7-SDAG-NEXT: s_mov_b32 s5, s66500; GFX7-SDAG-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr646501; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)6502; GFX7-SDAG-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr646503; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)6504; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]6505;6506; GFX7-GISEL-LABEL: freeze_v4f16:6507; GFX7-GISEL: ; %bb.0:6508; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6509; GFX7-GISEL-NEXT: s_mov_b32 s6, 06510; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0006511; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 06512; GFX7-GISEL-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr646513; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)6514; GFX7-GISEL-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr646515; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)6516; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]6517;6518; GFX8-LABEL: freeze_v4f16:6519; GFX8: ; %bb.0:6520; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6521; GFX8-NEXT: flat_load_dwordx2 v[0:1], v[0:1]6522; GFX8-NEXT: s_waitcnt vmcnt(0)6523; GFX8-NEXT: flat_store_dwordx2 v[2:3], v[0:1]6524; GFX8-NEXT: s_waitcnt vmcnt(0)6525; GFX8-NEXT: s_setpc_b64 s[30:31]6526;6527; GFX9-LABEL: freeze_v4f16:6528; GFX9: ; %bb.0:6529; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6530; GFX9-NEXT: global_load_dwordx2 v[0:1], v[0:1], off6531; GFX9-NEXT: s_waitcnt vmcnt(0)6532; GFX9-NEXT: global_store_dwordx2 v[2:3], v[0:1], off6533; GFX9-NEXT: s_waitcnt vmcnt(0)6534; GFX9-NEXT: s_setpc_b64 s[30:31]6535;6536; GFX10-LABEL: freeze_v4f16:6537; GFX10: ; %bb.0:6538; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6539; GFX10-NEXT: global_load_dwordx2 v[0:1], v[0:1], off6540; GFX10-NEXT: s_waitcnt vmcnt(0)6541; GFX10-NEXT: global_store_dwordx2 v[2:3], v[0:1], off6542; GFX10-NEXT: s_setpc_b64 s[30:31]6543;6544; GFX11-LABEL: freeze_v4f16:6545; GFX11: ; %bb.0:6546; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6547; GFX11-NEXT: global_load_b64 v[0:1], v[0:1], off6548; GFX11-NEXT: s_waitcnt vmcnt(0)6549; GFX11-NEXT: global_store_b64 v[2:3], v[0:1], off6550; GFX11-NEXT: s_setpc_b64 s[30:31]6551 %a = load <4 x half>, ptr addrspace(1) %ptra6552 %freeze = freeze <4 x half> %a6553 store <4 x half> %freeze, ptr addrspace(1) %ptrb6554 ret void6555}6556 6557define void @freeze_v8f16(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {6558; GFX6-SDAG-LABEL: freeze_v8f16:6559; GFX6-SDAG: ; %bb.0:6560; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6561; GFX6-SDAG-NEXT: s_mov_b32 s6, 06562; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0006563; GFX6-SDAG-NEXT: s_mov_b32 s4, s66564; GFX6-SDAG-NEXT: s_mov_b32 s5, s66565; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr646566; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0)6567; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr646568; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)6569; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]6570;6571; GFX6-GISEL-LABEL: freeze_v8f16:6572; GFX6-GISEL: ; %bb.0:6573; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6574; GFX6-GISEL-NEXT: s_mov_b32 s6, 06575; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0006576; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 06577; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr646578; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0)6579; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr646580; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)6581; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]6582;6583; GFX7-SDAG-LABEL: freeze_v8f16:6584; GFX7-SDAG: ; %bb.0:6585; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6586; GFX7-SDAG-NEXT: s_mov_b32 s6, 06587; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0006588; GFX7-SDAG-NEXT: s_mov_b32 s4, s66589; GFX7-SDAG-NEXT: s_mov_b32 s5, s66590; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr646591; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)6592; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr646593; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)6594; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]6595;6596; GFX7-GISEL-LABEL: freeze_v8f16:6597; GFX7-GISEL: ; %bb.0:6598; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6599; GFX7-GISEL-NEXT: s_mov_b32 s6, 06600; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0006601; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 06602; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr646603; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)6604; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr646605; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)6606; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]6607;6608; GFX8-LABEL: freeze_v8f16:6609; GFX8: ; %bb.0:6610; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6611; GFX8-NEXT: flat_load_dwordx4 v[4:7], v[0:1]6612; GFX8-NEXT: s_waitcnt vmcnt(0)6613; GFX8-NEXT: flat_store_dwordx4 v[2:3], v[4:7]6614; GFX8-NEXT: s_waitcnt vmcnt(0)6615; GFX8-NEXT: s_setpc_b64 s[30:31]6616;6617; GFX9-LABEL: freeze_v8f16:6618; GFX9: ; %bb.0:6619; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6620; GFX9-NEXT: global_load_dwordx4 v[4:7], v[0:1], off6621; GFX9-NEXT: s_waitcnt vmcnt(0)6622; GFX9-NEXT: global_store_dwordx4 v[2:3], v[4:7], off6623; GFX9-NEXT: s_waitcnt vmcnt(0)6624; GFX9-NEXT: s_setpc_b64 s[30:31]6625;6626; GFX10-LABEL: freeze_v8f16:6627; GFX10: ; %bb.0:6628; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6629; GFX10-NEXT: global_load_dwordx4 v[4:7], v[0:1], off6630; GFX10-NEXT: s_waitcnt vmcnt(0)6631; GFX10-NEXT: global_store_dwordx4 v[2:3], v[4:7], off6632; GFX10-NEXT: s_setpc_b64 s[30:31]6633;6634; GFX11-LABEL: freeze_v8f16:6635; GFX11: ; %bb.0:6636; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6637; GFX11-NEXT: global_load_b128 v[4:7], v[0:1], off6638; GFX11-NEXT: s_waitcnt vmcnt(0)6639; GFX11-NEXT: global_store_b128 v[2:3], v[4:7], off6640; GFX11-NEXT: s_setpc_b64 s[30:31]6641 %a = load <8 x half>, ptr addrspace(1) %ptra6642 %freeze = freeze <8 x half> %a6643 store <8 x half> %freeze, ptr addrspace(1) %ptrb6644 ret void6645}6646 6647define void @freeze_v16f16(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {6648; GFX6-SDAG-LABEL: freeze_v16f16:6649; GFX6-SDAG: ; %bb.0:6650; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6651; GFX6-SDAG-NEXT: s_mov_b32 s6, 06652; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0006653; GFX6-SDAG-NEXT: s_mov_b32 s4, s66654; GFX6-SDAG-NEXT: s_mov_b32 s5, s66655; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:166656; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr646657; GFX6-SDAG-NEXT: s_waitcnt vmcnt(1)6658; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:166659; GFX6-SDAG-NEXT: s_waitcnt vmcnt(1)6660; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr646661; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)6662; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]6663;6664; GFX6-GISEL-LABEL: freeze_v16f16:6665; GFX6-GISEL: ; %bb.0:6666; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6667; GFX6-GISEL-NEXT: s_mov_b32 s6, 06668; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0006669; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 06670; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr646671; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:166672; GFX6-GISEL-NEXT: s_waitcnt vmcnt(1)6673; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr646674; GFX6-GISEL-NEXT: s_waitcnt vmcnt(1)6675; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:166676; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)6677; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]6678;6679; GFX7-SDAG-LABEL: freeze_v16f16:6680; GFX7-SDAG: ; %bb.0:6681; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6682; GFX7-SDAG-NEXT: s_mov_b32 s6, 06683; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0006684; GFX7-SDAG-NEXT: s_mov_b32 s4, s66685; GFX7-SDAG-NEXT: s_mov_b32 s5, s66686; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:166687; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr646688; GFX7-SDAG-NEXT: s_waitcnt vmcnt(1)6689; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:166690; GFX7-SDAG-NEXT: s_waitcnt vmcnt(1)6691; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr646692; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)6693; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]6694;6695; GFX7-GISEL-LABEL: freeze_v16f16:6696; GFX7-GISEL: ; %bb.0:6697; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6698; GFX7-GISEL-NEXT: s_mov_b32 s6, 06699; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0006700; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 06701; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr646702; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:166703; GFX7-GISEL-NEXT: s_waitcnt vmcnt(1)6704; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr646705; GFX7-GISEL-NEXT: s_waitcnt vmcnt(1)6706; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:166707; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)6708; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]6709;6710; GFX8-GISEL-LABEL: freeze_v16f16:6711; GFX8-GISEL: ; %bb.0:6712; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6713; GFX8-GISEL-NEXT: flat_load_dwordx4 v[4:7], v[0:1]6714; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 16, v06715; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v1, vcc6716; GFX8-GISEL-NEXT: flat_load_dwordx4 v[8:11], v[0:1]6717; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 16, v26718; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v3, vcc6719; GFX8-GISEL-NEXT: s_waitcnt vmcnt(1)6720; GFX8-GISEL-NEXT: flat_store_dwordx4 v[2:3], v[4:7]6721; GFX8-GISEL-NEXT: s_waitcnt vmcnt(1)6722; GFX8-GISEL-NEXT: flat_store_dwordx4 v[0:1], v[8:11]6723; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)6724; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]6725;6726; GFX9-GISEL-LABEL: freeze_v16f16:6727; GFX9-GISEL: ; %bb.0:6728; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6729; GFX9-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off6730; GFX9-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:166731; GFX9-GISEL-NEXT: s_waitcnt vmcnt(1)6732; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off6733; GFX9-GISEL-NEXT: s_waitcnt vmcnt(1)6734; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:166735; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)6736; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]6737;6738; GFX10-SDAG-LABEL: freeze_v16f16:6739; GFX10-SDAG: ; %bb.0:6740; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6741; GFX10-SDAG-NEXT: s_clause 0x16742; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off offset:166743; GFX10-SDAG-NEXT: global_load_dwordx4 v[8:11], v[0:1], off6744; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1)6745; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off offset:166746; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)6747; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[8:11], off6748; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]6749;6750; GFX10-GISEL-LABEL: freeze_v16f16:6751; GFX10-GISEL: ; %bb.0:6752; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6753; GFX10-GISEL-NEXT: s_clause 0x16754; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off6755; GFX10-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:166756; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1)6757; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off6758; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)6759; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:166760; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]6761;6762; GFX11-SDAG-LABEL: freeze_v16f16:6763; GFX11-SDAG: ; %bb.0:6764; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6765; GFX11-SDAG-NEXT: s_clause 0x16766; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off offset:166767; GFX11-SDAG-NEXT: global_load_b128 v[8:11], v[0:1], off6768; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1)6769; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off offset:166770; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0)6771; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[8:11], off6772; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]6773;6774; GFX11-GISEL-LABEL: freeze_v16f16:6775; GFX11-GISEL: ; %bb.0:6776; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6777; GFX11-GISEL-NEXT: s_clause 0x16778; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off6779; GFX11-GISEL-NEXT: global_load_b128 v[8:11], v[0:1], off offset:166780; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1)6781; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off6782; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)6783; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[8:11], off offset:166784; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]6785 %a = load <16 x half>, ptr addrspace(1) %ptra6786 %freeze = freeze <16 x half> %a6787 store <16 x half> %freeze, ptr addrspace(1) %ptrb6788 ret void6789}6790 6791define void @freeze_bf16(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {6792; GFX6-SDAG-LABEL: freeze_bf16:6793; GFX6-SDAG: ; %bb.0:6794; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6795; GFX6-SDAG-NEXT: s_mov_b32 s6, 06796; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0006797; GFX6-SDAG-NEXT: s_mov_b32 s4, s66798; GFX6-SDAG-NEXT: s_mov_b32 s5, s66799; GFX6-SDAG-NEXT: buffer_load_ushort v0, v[0:1], s[4:7], 0 addr646800; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0)6801; GFX6-SDAG-NEXT: v_lshlrev_b32_e32 v0, 16, v06802; GFX6-SDAG-NEXT: v_mul_f32_e32 v0, 1.0, v06803; GFX6-SDAG-NEXT: v_lshrrev_b32_e32 v0, 16, v06804; GFX6-SDAG-NEXT: buffer_store_short v0, v[2:3], s[4:7], 0 addr646805; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)6806; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]6807;6808; GFX6-GISEL-LABEL: freeze_bf16:6809; GFX6-GISEL: ; %bb.0:6810; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6811; GFX6-GISEL-NEXT: s_mov_b32 s6, 06812; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0006813; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 06814; GFX6-GISEL-NEXT: buffer_load_ushort v0, v[0:1], s[4:7], 0 addr646815; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0)6816; GFX6-GISEL-NEXT: buffer_store_short v0, v[2:3], s[4:7], 0 addr646817; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)6818; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]6819;6820; GFX7-SDAG-LABEL: freeze_bf16:6821; GFX7-SDAG: ; %bb.0:6822; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6823; GFX7-SDAG-NEXT: s_mov_b32 s6, 06824; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0006825; GFX7-SDAG-NEXT: s_mov_b32 s4, s66826; GFX7-SDAG-NEXT: s_mov_b32 s5, s66827; GFX7-SDAG-NEXT: buffer_load_ushort v0, v[0:1], s[4:7], 0 addr646828; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)6829; GFX7-SDAG-NEXT: v_lshlrev_b32_e32 v0, 16, v06830; GFX7-SDAG-NEXT: v_mul_f32_e32 v0, 1.0, v06831; GFX7-SDAG-NEXT: v_lshrrev_b32_e32 v0, 16, v06832; GFX7-SDAG-NEXT: buffer_store_short v0, v[2:3], s[4:7], 0 addr646833; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)6834; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]6835;6836; GFX7-GISEL-LABEL: freeze_bf16:6837; GFX7-GISEL: ; %bb.0:6838; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6839; GFX7-GISEL-NEXT: s_mov_b32 s6, 06840; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0006841; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 06842; GFX7-GISEL-NEXT: buffer_load_ushort v0, v[0:1], s[4:7], 0 addr646843; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)6844; GFX7-GISEL-NEXT: buffer_store_short v0, v[2:3], s[4:7], 0 addr646845; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)6846; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]6847;6848; GFX8-LABEL: freeze_bf16:6849; GFX8: ; %bb.0:6850; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6851; GFX8-NEXT: flat_load_ushort v0, v[0:1]6852; GFX8-NEXT: s_waitcnt vmcnt(0)6853; GFX8-NEXT: flat_store_short v[2:3], v06854; GFX8-NEXT: s_waitcnt vmcnt(0)6855; GFX8-NEXT: s_setpc_b64 s[30:31]6856;6857; GFX9-LABEL: freeze_bf16:6858; GFX9: ; %bb.0:6859; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6860; GFX9-NEXT: global_load_ushort v0, v[0:1], off6861; GFX9-NEXT: s_waitcnt vmcnt(0)6862; GFX9-NEXT: global_store_short v[2:3], v0, off6863; GFX9-NEXT: s_waitcnt vmcnt(0)6864; GFX9-NEXT: s_setpc_b64 s[30:31]6865;6866; GFX10-LABEL: freeze_bf16:6867; GFX10: ; %bb.0:6868; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6869; GFX10-NEXT: global_load_ushort v0, v[0:1], off6870; GFX10-NEXT: s_waitcnt vmcnt(0)6871; GFX10-NEXT: global_store_short v[2:3], v0, off6872; GFX10-NEXT: s_setpc_b64 s[30:31]6873;6874; GFX11-SDAG-TRUE16-LABEL: freeze_bf16:6875; GFX11-SDAG-TRUE16: ; %bb.0:6876; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6877; GFX11-SDAG-TRUE16-NEXT: global_load_d16_b16 v0, v[0:1], off6878; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0)6879; GFX11-SDAG-TRUE16-NEXT: global_store_b16 v[2:3], v0, off6880; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]6881;6882; GFX11-SDAG-FAKE16-LABEL: freeze_bf16:6883; GFX11-SDAG-FAKE16: ; %bb.0:6884; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6885; GFX11-SDAG-FAKE16-NEXT: global_load_u16 v0, v[0:1], off6886; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0)6887; GFX11-SDAG-FAKE16-NEXT: global_store_b16 v[2:3], v0, off6888; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]6889;6890; GFX11-GISEL-LABEL: freeze_bf16:6891; GFX11-GISEL: ; %bb.0:6892; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6893; GFX11-GISEL-NEXT: global_load_u16 v0, v[0:1], off6894; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)6895; GFX11-GISEL-NEXT: global_store_b16 v[2:3], v0, off6896; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]6897 %a = load bfloat, ptr addrspace(1) %ptra6898 %freeze = freeze bfloat %a6899 store bfloat %freeze, ptr addrspace(1) %ptrb6900 ret void6901}6902 6903define void @freeze_v2bf16(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {6904; GFX6-SDAG-LABEL: freeze_v2bf16:6905; GFX6-SDAG: ; %bb.0:6906; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6907; GFX6-SDAG-NEXT: s_mov_b32 s6, 06908; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0006909; GFX6-SDAG-NEXT: s_mov_b32 s4, s66910; GFX6-SDAG-NEXT: s_mov_b32 s5, s66911; GFX6-SDAG-NEXT: buffer_load_dword v0, v[0:1], s[4:7], 0 addr646912; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0)6913; GFX6-SDAG-NEXT: buffer_store_dword v0, v[2:3], s[4:7], 0 addr646914; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)6915; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]6916;6917; GFX6-GISEL-LABEL: freeze_v2bf16:6918; GFX6-GISEL: ; %bb.0:6919; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6920; GFX6-GISEL-NEXT: s_mov_b32 s6, 06921; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0006922; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 06923; GFX6-GISEL-NEXT: buffer_load_dword v0, v[0:1], s[4:7], 0 addr646924; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0)6925; GFX6-GISEL-NEXT: buffer_store_dword v0, v[2:3], s[4:7], 0 addr646926; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)6927; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]6928;6929; GFX7-SDAG-LABEL: freeze_v2bf16:6930; GFX7-SDAG: ; %bb.0:6931; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6932; GFX7-SDAG-NEXT: s_mov_b32 s6, 06933; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0006934; GFX7-SDAG-NEXT: s_mov_b32 s4, s66935; GFX7-SDAG-NEXT: s_mov_b32 s5, s66936; GFX7-SDAG-NEXT: buffer_load_dword v0, v[0:1], s[4:7], 0 addr646937; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)6938; GFX7-SDAG-NEXT: buffer_store_dword v0, v[2:3], s[4:7], 0 addr646939; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)6940; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]6941;6942; GFX7-GISEL-LABEL: freeze_v2bf16:6943; GFX7-GISEL: ; %bb.0:6944; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6945; GFX7-GISEL-NEXT: s_mov_b32 s6, 06946; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0006947; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 06948; GFX7-GISEL-NEXT: buffer_load_dword v0, v[0:1], s[4:7], 0 addr646949; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)6950; GFX7-GISEL-NEXT: buffer_store_dword v0, v[2:3], s[4:7], 0 addr646951; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)6952; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]6953;6954; GFX8-LABEL: freeze_v2bf16:6955; GFX8: ; %bb.0:6956; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6957; GFX8-NEXT: flat_load_dword v0, v[0:1]6958; GFX8-NEXT: s_waitcnt vmcnt(0)6959; GFX8-NEXT: flat_store_dword v[2:3], v06960; GFX8-NEXT: s_waitcnt vmcnt(0)6961; GFX8-NEXT: s_setpc_b64 s[30:31]6962;6963; GFX9-LABEL: freeze_v2bf16:6964; GFX9: ; %bb.0:6965; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6966; GFX9-NEXT: global_load_dword v0, v[0:1], off6967; GFX9-NEXT: s_waitcnt vmcnt(0)6968; GFX9-NEXT: global_store_dword v[2:3], v0, off6969; GFX9-NEXT: s_waitcnt vmcnt(0)6970; GFX9-NEXT: s_setpc_b64 s[30:31]6971;6972; GFX10-LABEL: freeze_v2bf16:6973; GFX10: ; %bb.0:6974; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6975; GFX10-NEXT: global_load_dword v0, v[0:1], off6976; GFX10-NEXT: s_waitcnt vmcnt(0)6977; GFX10-NEXT: global_store_dword v[2:3], v0, off6978; GFX10-NEXT: s_setpc_b64 s[30:31]6979;6980; GFX11-LABEL: freeze_v2bf16:6981; GFX11: ; %bb.0:6982; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6983; GFX11-NEXT: global_load_b32 v0, v[0:1], off6984; GFX11-NEXT: s_waitcnt vmcnt(0)6985; GFX11-NEXT: global_store_b32 v[2:3], v0, off6986; GFX11-NEXT: s_setpc_b64 s[30:31]6987 %a = load <2 x bfloat>, ptr addrspace(1) %ptra6988 %freeze = freeze <2 x bfloat> %a6989 store <2 x bfloat> %freeze, ptr addrspace(1) %ptrb6990 ret void6991}6992 6993define void @freeze_v3bf16(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {6994; GFX6-SDAG-LABEL: freeze_v3bf16:6995; GFX6-SDAG: ; %bb.0:6996; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6997; GFX6-SDAG-NEXT: s_mov_b32 s6, 06998; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0006999; GFX6-SDAG-NEXT: s_mov_b32 s4, s67000; GFX6-SDAG-NEXT: s_mov_b32 s5, s67001; GFX6-SDAG-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr647002; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0)7003; GFX6-SDAG-NEXT: v_and_b32_e32 v4, 0xffff0000, v07004; GFX6-SDAG-NEXT: v_lshlrev_b32_e32 v1, 16, v17005; GFX6-SDAG-NEXT: v_lshlrev_b32_e32 v0, 16, v07006; GFX6-SDAG-NEXT: v_mul_f32_e32 v4, 1.0, v47007; GFX6-SDAG-NEXT: v_mul_f32_e32 v1, 1.0, v17008; GFX6-SDAG-NEXT: v_mul_f32_e32 v0, 1.0, v07009; GFX6-SDAG-NEXT: v_lshrrev_b32_e32 v4, 16, v47010; GFX6-SDAG-NEXT: v_lshrrev_b32_e32 v1, 16, v17011; GFX6-SDAG-NEXT: v_alignbit_b32 v0, v4, v0, 167012; GFX6-SDAG-NEXT: buffer_store_short v1, v[2:3], s[4:7], 0 addr64 offset:47013; GFX6-SDAG-NEXT: buffer_store_dword v0, v[2:3], s[4:7], 0 addr647014; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)7015; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]7016;7017; GFX6-GISEL-LABEL: freeze_v3bf16:7018; GFX6-GISEL: ; %bb.0:7019; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7020; GFX6-GISEL-NEXT: s_mov_b32 s6, 07021; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0007022; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 07023; GFX6-GISEL-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr647024; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0)7025; GFX6-GISEL-NEXT: v_lshrrev_b32_e32 v4, 16, v07026; GFX6-GISEL-NEXT: buffer_store_short v0, v[2:3], s[4:7], 0 addr647027; GFX6-GISEL-NEXT: buffer_store_short v4, v[2:3], s[4:7], 0 addr64 offset:27028; GFX6-GISEL-NEXT: buffer_store_short v1, v[2:3], s[4:7], 0 addr64 offset:47029; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)7030; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]7031;7032; GFX7-SDAG-LABEL: freeze_v3bf16:7033; GFX7-SDAG: ; %bb.0:7034; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7035; GFX7-SDAG-NEXT: s_mov_b32 s6, 07036; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0007037; GFX7-SDAG-NEXT: s_mov_b32 s4, s67038; GFX7-SDAG-NEXT: s_mov_b32 s5, s67039; GFX7-SDAG-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr647040; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)7041; GFX7-SDAG-NEXT: v_and_b32_e32 v4, 0xffff0000, v07042; GFX7-SDAG-NEXT: v_lshlrev_b32_e32 v1, 16, v17043; GFX7-SDAG-NEXT: v_lshlrev_b32_e32 v0, 16, v07044; GFX7-SDAG-NEXT: v_mul_f32_e32 v4, 1.0, v47045; GFX7-SDAG-NEXT: v_mul_f32_e32 v1, 1.0, v17046; GFX7-SDAG-NEXT: v_mul_f32_e32 v0, 1.0, v07047; GFX7-SDAG-NEXT: v_lshrrev_b32_e32 v4, 16, v47048; GFX7-SDAG-NEXT: v_lshrrev_b32_e32 v1, 16, v17049; GFX7-SDAG-NEXT: v_alignbit_b32 v0, v4, v0, 167050; GFX7-SDAG-NEXT: buffer_store_short v1, v[2:3], s[4:7], 0 addr64 offset:47051; GFX7-SDAG-NEXT: buffer_store_dword v0, v[2:3], s[4:7], 0 addr647052; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)7053; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]7054;7055; GFX7-GISEL-LABEL: freeze_v3bf16:7056; GFX7-GISEL: ; %bb.0:7057; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7058; GFX7-GISEL-NEXT: s_mov_b32 s6, 07059; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0007060; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 07061; GFX7-GISEL-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr647062; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)7063; GFX7-GISEL-NEXT: v_lshrrev_b32_e32 v4, 16, v07064; GFX7-GISEL-NEXT: buffer_store_short v0, v[2:3], s[4:7], 0 addr647065; GFX7-GISEL-NEXT: buffer_store_short v4, v[2:3], s[4:7], 0 addr64 offset:27066; GFX7-GISEL-NEXT: buffer_store_short v1, v[2:3], s[4:7], 0 addr64 offset:47067; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)7068; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]7069;7070; GFX8-GISEL-LABEL: freeze_v3bf16:7071; GFX8-GISEL: ; %bb.0:7072; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7073; GFX8-GISEL-NEXT: flat_load_dwordx2 v[0:1], v[0:1]7074; GFX8-GISEL-NEXT: v_add_u32_e32 v4, vcc, 2, v27075; GFX8-GISEL-NEXT: v_addc_u32_e32 v5, vcc, 0, v3, vcc7076; GFX8-GISEL-NEXT: v_add_u32_e32 v6, vcc, 4, v27077; GFX8-GISEL-NEXT: v_addc_u32_e32 v7, vcc, 0, v3, vcc7078; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)7079; GFX8-GISEL-NEXT: v_lshrrev_b32_e32 v8, 16, v07080; GFX8-GISEL-NEXT: flat_store_short v[2:3], v07081; GFX8-GISEL-NEXT: flat_store_short v[4:5], v87082; GFX8-GISEL-NEXT: flat_store_short v[6:7], v17083; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)7084; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]7085;7086; GFX9-GISEL-LABEL: freeze_v3bf16:7087; GFX9-GISEL: ; %bb.0:7088; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7089; GFX9-GISEL-NEXT: global_load_dwordx2 v[0:1], v[0:1], off7090; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)7091; GFX9-GISEL-NEXT: global_store_short v[2:3], v0, off7092; GFX9-GISEL-NEXT: global_store_short_d16_hi v[2:3], v0, off offset:27093; GFX9-GISEL-NEXT: global_store_short v[2:3], v1, off offset:47094; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)7095; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]7096;7097; GFX10-SDAG-LABEL: freeze_v3bf16:7098; GFX10-SDAG: ; %bb.0:7099; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7100; GFX10-SDAG-NEXT: global_load_dwordx2 v[0:1], v[0:1], off7101; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)7102; GFX10-SDAG-NEXT: global_store_short v[2:3], v1, off offset:47103; GFX10-SDAG-NEXT: global_store_dword v[2:3], v0, off7104; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]7105;7106; GFX10-GISEL-LABEL: freeze_v3bf16:7107; GFX10-GISEL: ; %bb.0:7108; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7109; GFX10-GISEL-NEXT: global_load_dwordx2 v[0:1], v[0:1], off7110; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)7111; GFX10-GISEL-NEXT: global_store_short v[2:3], v0, off7112; GFX10-GISEL-NEXT: global_store_short_d16_hi v[2:3], v0, off offset:27113; GFX10-GISEL-NEXT: global_store_short v[2:3], v1, off offset:47114; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]7115;7116; GFX11-SDAG-LABEL: freeze_v3bf16:7117; GFX11-SDAG: ; %bb.0:7118; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7119; GFX11-SDAG-NEXT: global_load_b64 v[0:1], v[0:1], off7120; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0)7121; GFX11-SDAG-NEXT: s_clause 0x17122; GFX11-SDAG-NEXT: global_store_b16 v[2:3], v1, off offset:47123; GFX11-SDAG-NEXT: global_store_b32 v[2:3], v0, off7124; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]7125;7126; GFX11-GISEL-LABEL: freeze_v3bf16:7127; GFX11-GISEL: ; %bb.0:7128; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7129; GFX11-GISEL-NEXT: global_load_b64 v[0:1], v[0:1], off7130; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)7131; GFX11-GISEL-NEXT: s_clause 0x27132; GFX11-GISEL-NEXT: global_store_b16 v[2:3], v0, off7133; GFX11-GISEL-NEXT: global_store_d16_hi_b16 v[2:3], v0, off offset:27134; GFX11-GISEL-NEXT: global_store_b16 v[2:3], v1, off offset:47135; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]7136 %a = load <3 x bfloat>, ptr addrspace(1) %ptra7137 %freeze = freeze <3 x bfloat> %a7138 store <3 x bfloat> %freeze, ptr addrspace(1) %ptrb7139 ret void7140}7141 7142define void @freeze_v4bf16(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {7143; GFX6-SDAG-LABEL: freeze_v4bf16:7144; GFX6-SDAG: ; %bb.0:7145; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7146; GFX6-SDAG-NEXT: s_mov_b32 s6, 07147; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0007148; GFX6-SDAG-NEXT: s_mov_b32 s4, s67149; GFX6-SDAG-NEXT: s_mov_b32 s5, s67150; GFX6-SDAG-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr647151; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0)7152; GFX6-SDAG-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr647153; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)7154; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]7155;7156; GFX6-GISEL-LABEL: freeze_v4bf16:7157; GFX6-GISEL: ; %bb.0:7158; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7159; GFX6-GISEL-NEXT: s_mov_b32 s6, 07160; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0007161; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 07162; GFX6-GISEL-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr647163; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0)7164; GFX6-GISEL-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr647165; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)7166; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]7167;7168; GFX7-SDAG-LABEL: freeze_v4bf16:7169; GFX7-SDAG: ; %bb.0:7170; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7171; GFX7-SDAG-NEXT: s_mov_b32 s6, 07172; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0007173; GFX7-SDAG-NEXT: s_mov_b32 s4, s67174; GFX7-SDAG-NEXT: s_mov_b32 s5, s67175; GFX7-SDAG-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr647176; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)7177; GFX7-SDAG-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr647178; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)7179; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]7180;7181; GFX7-GISEL-LABEL: freeze_v4bf16:7182; GFX7-GISEL: ; %bb.0:7183; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7184; GFX7-GISEL-NEXT: s_mov_b32 s6, 07185; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0007186; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 07187; GFX7-GISEL-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr647188; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)7189; GFX7-GISEL-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr647190; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)7191; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]7192;7193; GFX8-LABEL: freeze_v4bf16:7194; GFX8: ; %bb.0:7195; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7196; GFX8-NEXT: flat_load_dwordx2 v[0:1], v[0:1]7197; GFX8-NEXT: s_waitcnt vmcnt(0)7198; GFX8-NEXT: flat_store_dwordx2 v[2:3], v[0:1]7199; GFX8-NEXT: s_waitcnt vmcnt(0)7200; GFX8-NEXT: s_setpc_b64 s[30:31]7201;7202; GFX9-LABEL: freeze_v4bf16:7203; GFX9: ; %bb.0:7204; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7205; GFX9-NEXT: global_load_dwordx2 v[0:1], v[0:1], off7206; GFX9-NEXT: s_waitcnt vmcnt(0)7207; GFX9-NEXT: global_store_dwordx2 v[2:3], v[0:1], off7208; GFX9-NEXT: s_waitcnt vmcnt(0)7209; GFX9-NEXT: s_setpc_b64 s[30:31]7210;7211; GFX10-LABEL: freeze_v4bf16:7212; GFX10: ; %bb.0:7213; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7214; GFX10-NEXT: global_load_dwordx2 v[0:1], v[0:1], off7215; GFX10-NEXT: s_waitcnt vmcnt(0)7216; GFX10-NEXT: global_store_dwordx2 v[2:3], v[0:1], off7217; GFX10-NEXT: s_setpc_b64 s[30:31]7218;7219; GFX11-LABEL: freeze_v4bf16:7220; GFX11: ; %bb.0:7221; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7222; GFX11-NEXT: global_load_b64 v[0:1], v[0:1], off7223; GFX11-NEXT: s_waitcnt vmcnt(0)7224; GFX11-NEXT: global_store_b64 v[2:3], v[0:1], off7225; GFX11-NEXT: s_setpc_b64 s[30:31]7226 %a = load <4 x bfloat>, ptr addrspace(1) %ptra7227 %freeze = freeze <4 x bfloat> %a7228 store <4 x bfloat> %freeze, ptr addrspace(1) %ptrb7229 ret void7230}7231 7232define void @freeze_v8bf16(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {7233; GFX6-SDAG-LABEL: freeze_v8bf16:7234; GFX6-SDAG: ; %bb.0:7235; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7236; GFX6-SDAG-NEXT: s_mov_b32 s6, 07237; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0007238; GFX6-SDAG-NEXT: s_mov_b32 s4, s67239; GFX6-SDAG-NEXT: s_mov_b32 s5, s67240; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr647241; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0)7242; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr647243; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)7244; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]7245;7246; GFX6-GISEL-LABEL: freeze_v8bf16:7247; GFX6-GISEL: ; %bb.0:7248; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7249; GFX6-GISEL-NEXT: s_mov_b32 s6, 07250; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0007251; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 07252; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr647253; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0)7254; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr647255; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)7256; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]7257;7258; GFX7-SDAG-LABEL: freeze_v8bf16:7259; GFX7-SDAG: ; %bb.0:7260; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7261; GFX7-SDAG-NEXT: s_mov_b32 s6, 07262; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0007263; GFX7-SDAG-NEXT: s_mov_b32 s4, s67264; GFX7-SDAG-NEXT: s_mov_b32 s5, s67265; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr647266; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)7267; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr647268; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)7269; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]7270;7271; GFX7-GISEL-LABEL: freeze_v8bf16:7272; GFX7-GISEL: ; %bb.0:7273; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7274; GFX7-GISEL-NEXT: s_mov_b32 s6, 07275; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0007276; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 07277; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr647278; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)7279; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr647280; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)7281; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]7282;7283; GFX8-LABEL: freeze_v8bf16:7284; GFX8: ; %bb.0:7285; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7286; GFX8-NEXT: flat_load_dwordx4 v[4:7], v[0:1]7287; GFX8-NEXT: s_waitcnt vmcnt(0)7288; GFX8-NEXT: flat_store_dwordx4 v[2:3], v[4:7]7289; GFX8-NEXT: s_waitcnt vmcnt(0)7290; GFX8-NEXT: s_setpc_b64 s[30:31]7291;7292; GFX9-LABEL: freeze_v8bf16:7293; GFX9: ; %bb.0:7294; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7295; GFX9-NEXT: global_load_dwordx4 v[4:7], v[0:1], off7296; GFX9-NEXT: s_waitcnt vmcnt(0)7297; GFX9-NEXT: global_store_dwordx4 v[2:3], v[4:7], off7298; GFX9-NEXT: s_waitcnt vmcnt(0)7299; GFX9-NEXT: s_setpc_b64 s[30:31]7300;7301; GFX10-LABEL: freeze_v8bf16:7302; GFX10: ; %bb.0:7303; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7304; GFX10-NEXT: global_load_dwordx4 v[4:7], v[0:1], off7305; GFX10-NEXT: s_waitcnt vmcnt(0)7306; GFX10-NEXT: global_store_dwordx4 v[2:3], v[4:7], off7307; GFX10-NEXT: s_setpc_b64 s[30:31]7308;7309; GFX11-LABEL: freeze_v8bf16:7310; GFX11: ; %bb.0:7311; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7312; GFX11-NEXT: global_load_b128 v[4:7], v[0:1], off7313; GFX11-NEXT: s_waitcnt vmcnt(0)7314; GFX11-NEXT: global_store_b128 v[2:3], v[4:7], off7315; GFX11-NEXT: s_setpc_b64 s[30:31]7316 %a = load <8 x bfloat>, ptr addrspace(1) %ptra7317 %freeze = freeze <8 x bfloat> %a7318 store <8 x bfloat> %freeze, ptr addrspace(1) %ptrb7319 ret void7320}7321 7322define void @freeze_f64(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {7323; GFX6-SDAG-LABEL: freeze_f64:7324; GFX6-SDAG: ; %bb.0:7325; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7326; GFX6-SDAG-NEXT: s_mov_b32 s6, 07327; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0007328; GFX6-SDAG-NEXT: s_mov_b32 s4, s67329; GFX6-SDAG-NEXT: s_mov_b32 s5, s67330; GFX6-SDAG-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr647331; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0)7332; GFX6-SDAG-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr647333; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)7334; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]7335;7336; GFX6-GISEL-LABEL: freeze_f64:7337; GFX6-GISEL: ; %bb.0:7338; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7339; GFX6-GISEL-NEXT: s_mov_b32 s6, 07340; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0007341; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 07342; GFX6-GISEL-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr647343; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0)7344; GFX6-GISEL-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr647345; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)7346; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]7347;7348; GFX7-SDAG-LABEL: freeze_f64:7349; GFX7-SDAG: ; %bb.0:7350; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7351; GFX7-SDAG-NEXT: s_mov_b32 s6, 07352; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0007353; GFX7-SDAG-NEXT: s_mov_b32 s4, s67354; GFX7-SDAG-NEXT: s_mov_b32 s5, s67355; GFX7-SDAG-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr647356; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)7357; GFX7-SDAG-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr647358; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)7359; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]7360;7361; GFX7-GISEL-LABEL: freeze_f64:7362; GFX7-GISEL: ; %bb.0:7363; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7364; GFX7-GISEL-NEXT: s_mov_b32 s6, 07365; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0007366; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 07367; GFX7-GISEL-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr647368; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)7369; GFX7-GISEL-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr647370; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)7371; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]7372;7373; GFX8-LABEL: freeze_f64:7374; GFX8: ; %bb.0:7375; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7376; GFX8-NEXT: flat_load_dwordx2 v[0:1], v[0:1]7377; GFX8-NEXT: s_waitcnt vmcnt(0)7378; GFX8-NEXT: flat_store_dwordx2 v[2:3], v[0:1]7379; GFX8-NEXT: s_waitcnt vmcnt(0)7380; GFX8-NEXT: s_setpc_b64 s[30:31]7381;7382; GFX9-LABEL: freeze_f64:7383; GFX9: ; %bb.0:7384; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7385; GFX9-NEXT: global_load_dwordx2 v[0:1], v[0:1], off7386; GFX9-NEXT: s_waitcnt vmcnt(0)7387; GFX9-NEXT: global_store_dwordx2 v[2:3], v[0:1], off7388; GFX9-NEXT: s_waitcnt vmcnt(0)7389; GFX9-NEXT: s_setpc_b64 s[30:31]7390;7391; GFX10-LABEL: freeze_f64:7392; GFX10: ; %bb.0:7393; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7394; GFX10-NEXT: global_load_dwordx2 v[0:1], v[0:1], off7395; GFX10-NEXT: s_waitcnt vmcnt(0)7396; GFX10-NEXT: global_store_dwordx2 v[2:3], v[0:1], off7397; GFX10-NEXT: s_setpc_b64 s[30:31]7398;7399; GFX11-LABEL: freeze_f64:7400; GFX11: ; %bb.0:7401; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7402; GFX11-NEXT: global_load_b64 v[0:1], v[0:1], off7403; GFX11-NEXT: s_waitcnt vmcnt(0)7404; GFX11-NEXT: global_store_b64 v[2:3], v[0:1], off7405; GFX11-NEXT: s_setpc_b64 s[30:31]7406 %a = load double, ptr addrspace(1) %ptra7407 %freeze = freeze double %a7408 store double %freeze, ptr addrspace(1) %ptrb7409 ret void7410}7411 7412define void @freeze_v2f64(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {7413; GFX6-SDAG-LABEL: freeze_v2f64:7414; GFX6-SDAG: ; %bb.0:7415; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7416; GFX6-SDAG-NEXT: s_mov_b32 s6, 07417; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0007418; GFX6-SDAG-NEXT: s_mov_b32 s4, s67419; GFX6-SDAG-NEXT: s_mov_b32 s5, s67420; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr647421; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0)7422; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr647423; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)7424; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]7425;7426; GFX6-GISEL-LABEL: freeze_v2f64:7427; GFX6-GISEL: ; %bb.0:7428; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7429; GFX6-GISEL-NEXT: s_mov_b32 s6, 07430; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0007431; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 07432; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr647433; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0)7434; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr647435; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)7436; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]7437;7438; GFX7-SDAG-LABEL: freeze_v2f64:7439; GFX7-SDAG: ; %bb.0:7440; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7441; GFX7-SDAG-NEXT: s_mov_b32 s6, 07442; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0007443; GFX7-SDAG-NEXT: s_mov_b32 s4, s67444; GFX7-SDAG-NEXT: s_mov_b32 s5, s67445; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr647446; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)7447; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr647448; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)7449; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]7450;7451; GFX7-GISEL-LABEL: freeze_v2f64:7452; GFX7-GISEL: ; %bb.0:7453; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7454; GFX7-GISEL-NEXT: s_mov_b32 s6, 07455; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0007456; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 07457; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr647458; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)7459; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr647460; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)7461; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]7462;7463; GFX8-LABEL: freeze_v2f64:7464; GFX8: ; %bb.0:7465; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7466; GFX8-NEXT: flat_load_dwordx4 v[4:7], v[0:1]7467; GFX8-NEXT: s_waitcnt vmcnt(0)7468; GFX8-NEXT: flat_store_dwordx4 v[2:3], v[4:7]7469; GFX8-NEXT: s_waitcnt vmcnt(0)7470; GFX8-NEXT: s_setpc_b64 s[30:31]7471;7472; GFX9-LABEL: freeze_v2f64:7473; GFX9: ; %bb.0:7474; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7475; GFX9-NEXT: global_load_dwordx4 v[4:7], v[0:1], off7476; GFX9-NEXT: s_waitcnt vmcnt(0)7477; GFX9-NEXT: global_store_dwordx4 v[2:3], v[4:7], off7478; GFX9-NEXT: s_waitcnt vmcnt(0)7479; GFX9-NEXT: s_setpc_b64 s[30:31]7480;7481; GFX10-LABEL: freeze_v2f64:7482; GFX10: ; %bb.0:7483; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7484; GFX10-NEXT: global_load_dwordx4 v[4:7], v[0:1], off7485; GFX10-NEXT: s_waitcnt vmcnt(0)7486; GFX10-NEXT: global_store_dwordx4 v[2:3], v[4:7], off7487; GFX10-NEXT: s_setpc_b64 s[30:31]7488;7489; GFX11-LABEL: freeze_v2f64:7490; GFX11: ; %bb.0:7491; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7492; GFX11-NEXT: global_load_b128 v[4:7], v[0:1], off7493; GFX11-NEXT: s_waitcnt vmcnt(0)7494; GFX11-NEXT: global_store_b128 v[2:3], v[4:7], off7495; GFX11-NEXT: s_setpc_b64 s[30:31]7496 %a = load <2 x double>, ptr addrspace(1) %ptra7497 %freeze = freeze <2 x double> %a7498 store <2 x double> %freeze, ptr addrspace(1) %ptrb7499 ret void7500}7501 7502define void @freeze_v3f64(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {7503; GFX6-SDAG-LABEL: freeze_v3f64:7504; GFX6-SDAG: ; %bb.0:7505; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7506; GFX6-SDAG-NEXT: s_mov_b32 s6, 07507; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0007508; GFX6-SDAG-NEXT: s_mov_b32 s4, s67509; GFX6-SDAG-NEXT: s_mov_b32 s5, s67510; GFX6-SDAG-NEXT: buffer_load_dwordx2 v[8:9], v[0:1], s[4:7], 0 addr64 offset:167511; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr647512; GFX6-SDAG-NEXT: s_waitcnt vmcnt(1)7513; GFX6-SDAG-NEXT: buffer_store_dwordx2 v[8:9], v[2:3], s[4:7], 0 addr64 offset:167514; GFX6-SDAG-NEXT: s_waitcnt vmcnt(1)7515; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr647516; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)7517; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]7518;7519; GFX6-GISEL-LABEL: freeze_v3f64:7520; GFX6-GISEL: ; %bb.0:7521; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7522; GFX6-GISEL-NEXT: s_mov_b32 s6, 07523; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0007524; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 07525; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr647526; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:167527; GFX6-GISEL-NEXT: s_waitcnt vmcnt(1)7528; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr647529; GFX6-GISEL-NEXT: s_waitcnt vmcnt(1)7530; GFX6-GISEL-NEXT: buffer_store_dwordx2 v[8:9], v[2:3], s[4:7], 0 addr64 offset:167531; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)7532; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]7533;7534; GFX7-SDAG-LABEL: freeze_v3f64:7535; GFX7-SDAG: ; %bb.0:7536; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7537; GFX7-SDAG-NEXT: s_mov_b32 s6, 07538; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0007539; GFX7-SDAG-NEXT: s_mov_b32 s4, s67540; GFX7-SDAG-NEXT: s_mov_b32 s5, s67541; GFX7-SDAG-NEXT: buffer_load_dwordx2 v[8:9], v[0:1], s[4:7], 0 addr64 offset:167542; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr647543; GFX7-SDAG-NEXT: s_waitcnt vmcnt(1)7544; GFX7-SDAG-NEXT: buffer_store_dwordx2 v[8:9], v[2:3], s[4:7], 0 addr64 offset:167545; GFX7-SDAG-NEXT: s_waitcnt vmcnt(1)7546; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr647547; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)7548; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]7549;7550; GFX7-GISEL-LABEL: freeze_v3f64:7551; GFX7-GISEL: ; %bb.0:7552; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7553; GFX7-GISEL-NEXT: s_mov_b32 s6, 07554; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0007555; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 07556; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr647557; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:167558; GFX7-GISEL-NEXT: s_waitcnt vmcnt(1)7559; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr647560; GFX7-GISEL-NEXT: s_waitcnt vmcnt(1)7561; GFX7-GISEL-NEXT: buffer_store_dwordx2 v[8:9], v[2:3], s[4:7], 0 addr64 offset:167562; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)7563; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]7564;7565; GFX8-GISEL-LABEL: freeze_v3f64:7566; GFX8-GISEL: ; %bb.0:7567; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7568; GFX8-GISEL-NEXT: flat_load_dwordx4 v[4:7], v[0:1]7569; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 16, v07570; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v1, vcc7571; GFX8-GISEL-NEXT: flat_load_dwordx4 v[8:11], v[0:1]7572; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 16, v27573; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v3, vcc7574; GFX8-GISEL-NEXT: s_waitcnt vmcnt(1)7575; GFX8-GISEL-NEXT: flat_store_dwordx4 v[2:3], v[4:7]7576; GFX8-GISEL-NEXT: s_waitcnt vmcnt(1)7577; GFX8-GISEL-NEXT: flat_store_dwordx2 v[0:1], v[8:9]7578; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)7579; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]7580;7581; GFX9-GISEL-LABEL: freeze_v3f64:7582; GFX9-GISEL: ; %bb.0:7583; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7584; GFX9-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off7585; GFX9-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:167586; GFX9-GISEL-NEXT: s_waitcnt vmcnt(1)7587; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off7588; GFX9-GISEL-NEXT: s_waitcnt vmcnt(1)7589; GFX9-GISEL-NEXT: global_store_dwordx2 v[2:3], v[8:9], off offset:167590; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)7591; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]7592;7593; GFX10-SDAG-LABEL: freeze_v3f64:7594; GFX10-SDAG: ; %bb.0:7595; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7596; GFX10-SDAG-NEXT: s_clause 0x17597; GFX10-SDAG-NEXT: global_load_dwordx2 v[8:9], v[0:1], off offset:167598; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off7599; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1)7600; GFX10-SDAG-NEXT: global_store_dwordx2 v[2:3], v[8:9], off offset:167601; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)7602; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off7603; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]7604;7605; GFX10-GISEL-LABEL: freeze_v3f64:7606; GFX10-GISEL: ; %bb.0:7607; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7608; GFX10-GISEL-NEXT: s_clause 0x17609; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off7610; GFX10-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:167611; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1)7612; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off7613; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)7614; GFX10-GISEL-NEXT: global_store_dwordx2 v[2:3], v[8:9], off offset:167615; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]7616;7617; GFX11-SDAG-LABEL: freeze_v3f64:7618; GFX11-SDAG: ; %bb.0:7619; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7620; GFX11-SDAG-NEXT: s_clause 0x17621; GFX11-SDAG-NEXT: global_load_b64 v[8:9], v[0:1], off offset:167622; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off7623; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1)7624; GFX11-SDAG-NEXT: global_store_b64 v[2:3], v[8:9], off offset:167625; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0)7626; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off7627; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]7628;7629; GFX11-GISEL-LABEL: freeze_v3f64:7630; GFX11-GISEL: ; %bb.0:7631; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7632; GFX11-GISEL-NEXT: s_clause 0x17633; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off7634; GFX11-GISEL-NEXT: global_load_b128 v[8:11], v[0:1], off offset:167635; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1)7636; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off7637; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)7638; GFX11-GISEL-NEXT: global_store_b64 v[2:3], v[8:9], off offset:167639; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]7640 %a = load <3 x double>, ptr addrspace(1) %ptra7641 %freeze = freeze <3 x double> %a7642 store <3 x double> %freeze, ptr addrspace(1) %ptrb7643 ret void7644}7645 7646define void @freeze_v4f64(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {7647; GFX6-SDAG-LABEL: freeze_v4f64:7648; GFX6-SDAG: ; %bb.0:7649; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7650; GFX6-SDAG-NEXT: s_mov_b32 s6, 07651; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0007652; GFX6-SDAG-NEXT: s_mov_b32 s4, s67653; GFX6-SDAG-NEXT: s_mov_b32 s5, s67654; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:167655; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr647656; GFX6-SDAG-NEXT: s_waitcnt vmcnt(1)7657; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:167658; GFX6-SDAG-NEXT: s_waitcnt vmcnt(1)7659; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr647660; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)7661; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]7662;7663; GFX6-GISEL-LABEL: freeze_v4f64:7664; GFX6-GISEL: ; %bb.0:7665; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7666; GFX6-GISEL-NEXT: s_mov_b32 s6, 07667; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0007668; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 07669; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr647670; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:167671; GFX6-GISEL-NEXT: s_waitcnt vmcnt(1)7672; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr647673; GFX6-GISEL-NEXT: s_waitcnt vmcnt(1)7674; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:167675; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)7676; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]7677;7678; GFX7-SDAG-LABEL: freeze_v4f64:7679; GFX7-SDAG: ; %bb.0:7680; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7681; GFX7-SDAG-NEXT: s_mov_b32 s6, 07682; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0007683; GFX7-SDAG-NEXT: s_mov_b32 s4, s67684; GFX7-SDAG-NEXT: s_mov_b32 s5, s67685; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:167686; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr647687; GFX7-SDAG-NEXT: s_waitcnt vmcnt(1)7688; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:167689; GFX7-SDAG-NEXT: s_waitcnt vmcnt(1)7690; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr647691; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)7692; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]7693;7694; GFX7-GISEL-LABEL: freeze_v4f64:7695; GFX7-GISEL: ; %bb.0:7696; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7697; GFX7-GISEL-NEXT: s_mov_b32 s6, 07698; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0007699; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 07700; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr647701; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:167702; GFX7-GISEL-NEXT: s_waitcnt vmcnt(1)7703; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr647704; GFX7-GISEL-NEXT: s_waitcnt vmcnt(1)7705; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:167706; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)7707; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]7708;7709; GFX8-GISEL-LABEL: freeze_v4f64:7710; GFX8-GISEL: ; %bb.0:7711; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7712; GFX8-GISEL-NEXT: flat_load_dwordx4 v[4:7], v[0:1]7713; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 16, v07714; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v1, vcc7715; GFX8-GISEL-NEXT: flat_load_dwordx4 v[8:11], v[0:1]7716; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 16, v27717; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v3, vcc7718; GFX8-GISEL-NEXT: s_waitcnt vmcnt(1)7719; GFX8-GISEL-NEXT: flat_store_dwordx4 v[2:3], v[4:7]7720; GFX8-GISEL-NEXT: s_waitcnt vmcnt(1)7721; GFX8-GISEL-NEXT: flat_store_dwordx4 v[0:1], v[8:11]7722; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)7723; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]7724;7725; GFX9-GISEL-LABEL: freeze_v4f64:7726; GFX9-GISEL: ; %bb.0:7727; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7728; GFX9-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off7729; GFX9-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:167730; GFX9-GISEL-NEXT: s_waitcnt vmcnt(1)7731; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off7732; GFX9-GISEL-NEXT: s_waitcnt vmcnt(1)7733; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:167734; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)7735; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]7736;7737; GFX10-SDAG-LABEL: freeze_v4f64:7738; GFX10-SDAG: ; %bb.0:7739; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7740; GFX10-SDAG-NEXT: s_clause 0x17741; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off offset:167742; GFX10-SDAG-NEXT: global_load_dwordx4 v[8:11], v[0:1], off7743; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1)7744; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off offset:167745; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)7746; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[8:11], off7747; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]7748;7749; GFX10-GISEL-LABEL: freeze_v4f64:7750; GFX10-GISEL: ; %bb.0:7751; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7752; GFX10-GISEL-NEXT: s_clause 0x17753; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off7754; GFX10-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:167755; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1)7756; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off7757; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)7758; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:167759; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]7760;7761; GFX11-SDAG-LABEL: freeze_v4f64:7762; GFX11-SDAG: ; %bb.0:7763; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7764; GFX11-SDAG-NEXT: s_clause 0x17765; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off offset:167766; GFX11-SDAG-NEXT: global_load_b128 v[8:11], v[0:1], off7767; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1)7768; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off offset:167769; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0)7770; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[8:11], off7771; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]7772;7773; GFX11-GISEL-LABEL: freeze_v4f64:7774; GFX11-GISEL: ; %bb.0:7775; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7776; GFX11-GISEL-NEXT: s_clause 0x17777; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off7778; GFX11-GISEL-NEXT: global_load_b128 v[8:11], v[0:1], off offset:167779; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1)7780; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off7781; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)7782; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[8:11], off offset:167783; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]7784 %a = load <4 x double>, ptr addrspace(1) %ptra7785 %freeze = freeze <4 x double> %a7786 store <4 x double> %freeze, ptr addrspace(1) %ptrb7787 ret void7788}7789 7790define void @freeze_v8f64(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {7791; GFX6-SDAG-LABEL: freeze_v8f64:7792; GFX6-SDAG: ; %bb.0:7793; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7794; GFX6-SDAG-NEXT: s_mov_b32 s6, 07795; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0007796; GFX6-SDAG-NEXT: s_mov_b32 s4, s67797; GFX6-SDAG-NEXT: s_mov_b32 s5, s67798; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:327799; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:487800; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr647801; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:167802; GFX6-SDAG-NEXT: s_waitcnt vmcnt(3)7803; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:327804; GFX6-SDAG-NEXT: s_waitcnt vmcnt(3)7805; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:487806; GFX6-SDAG-NEXT: s_waitcnt vmcnt(3)7807; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr647808; GFX6-SDAG-NEXT: s_waitcnt vmcnt(3)7809; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:167810; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)7811; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]7812;7813; GFX6-GISEL-LABEL: freeze_v8f64:7814; GFX6-GISEL: ; %bb.0:7815; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7816; GFX6-GISEL-NEXT: s_mov_b32 s6, 07817; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0007818; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 07819; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr647820; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:167821; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:327822; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:487823; GFX6-GISEL-NEXT: s_waitcnt vmcnt(3)7824; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr647825; GFX6-GISEL-NEXT: s_waitcnt vmcnt(3)7826; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:167827; GFX6-GISEL-NEXT: s_waitcnt vmcnt(3)7828; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:327829; GFX6-GISEL-NEXT: s_waitcnt vmcnt(3)7830; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:487831; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)7832; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]7833;7834; GFX7-SDAG-LABEL: freeze_v8f64:7835; GFX7-SDAG: ; %bb.0:7836; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7837; GFX7-SDAG-NEXT: s_mov_b32 s6, 07838; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0007839; GFX7-SDAG-NEXT: s_mov_b32 s4, s67840; GFX7-SDAG-NEXT: s_mov_b32 s5, s67841; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:327842; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:487843; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr647844; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:167845; GFX7-SDAG-NEXT: s_waitcnt vmcnt(3)7846; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:327847; GFX7-SDAG-NEXT: s_waitcnt vmcnt(3)7848; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:487849; GFX7-SDAG-NEXT: s_waitcnt vmcnt(3)7850; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr647851; GFX7-SDAG-NEXT: s_waitcnt vmcnt(3)7852; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:167853; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)7854; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]7855;7856; GFX7-GISEL-LABEL: freeze_v8f64:7857; GFX7-GISEL: ; %bb.0:7858; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7859; GFX7-GISEL-NEXT: s_mov_b32 s6, 07860; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0007861; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 07862; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr647863; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:167864; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:327865; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:487866; GFX7-GISEL-NEXT: s_waitcnt vmcnt(3)7867; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr647868; GFX7-GISEL-NEXT: s_waitcnt vmcnt(3)7869; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:167870; GFX7-GISEL-NEXT: s_waitcnt vmcnt(3)7871; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:327872; GFX7-GISEL-NEXT: s_waitcnt vmcnt(3)7873; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:487874; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)7875; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]7876;7877; GFX8-GISEL-LABEL: freeze_v8f64:7878; GFX8-GISEL: ; %bb.0:7879; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7880; GFX8-GISEL-NEXT: v_add_u32_e32 v8, vcc, 16, v07881; GFX8-GISEL-NEXT: v_addc_u32_e32 v9, vcc, 0, v1, vcc7882; GFX8-GISEL-NEXT: v_add_u32_e32 v12, vcc, 32, v07883; GFX8-GISEL-NEXT: flat_load_dwordx4 v[4:7], v[0:1]7884; GFX8-GISEL-NEXT: flat_load_dwordx4 v[8:11], v[8:9]7885; GFX8-GISEL-NEXT: v_addc_u32_e32 v13, vcc, 0, v1, vcc7886; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 48, v07887; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v1, vcc7888; GFX8-GISEL-NEXT: flat_load_dwordx4 v[12:15], v[12:13]7889; GFX8-GISEL-NEXT: flat_load_dwordx4 v[16:19], v[0:1]7890; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 16, v27891; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v3, vcc7892; GFX8-GISEL-NEXT: s_waitcnt vmcnt(3)7893; GFX8-GISEL-NEXT: flat_store_dwordx4 v[2:3], v[4:7]7894; GFX8-GISEL-NEXT: s_nop 07895; GFX8-GISEL-NEXT: v_add_u32_e32 v4, vcc, 32, v27896; GFX8-GISEL-NEXT: v_addc_u32_e32 v5, vcc, 0, v3, vcc7897; GFX8-GISEL-NEXT: v_add_u32_e32 v2, vcc, 48, v27898; GFX8-GISEL-NEXT: v_addc_u32_e32 v3, vcc, 0, v3, vcc7899; GFX8-GISEL-NEXT: s_waitcnt vmcnt(3)7900; GFX8-GISEL-NEXT: flat_store_dwordx4 v[0:1], v[8:11]7901; GFX8-GISEL-NEXT: s_waitcnt vmcnt(3)7902; GFX8-GISEL-NEXT: flat_store_dwordx4 v[4:5], v[12:15]7903; GFX8-GISEL-NEXT: s_waitcnt vmcnt(3)7904; GFX8-GISEL-NEXT: flat_store_dwordx4 v[2:3], v[16:19]7905; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)7906; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]7907;7908; GFX9-GISEL-LABEL: freeze_v8f64:7909; GFX9-GISEL: ; %bb.0:7910; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7911; GFX9-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off7912; GFX9-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:167913; GFX9-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:327914; GFX9-GISEL-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:487915; GFX9-GISEL-NEXT: s_waitcnt vmcnt(3)7916; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off7917; GFX9-GISEL-NEXT: s_waitcnt vmcnt(3)7918; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:167919; GFX9-GISEL-NEXT: s_waitcnt vmcnt(3)7920; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:327921; GFX9-GISEL-NEXT: s_waitcnt vmcnt(3)7922; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:487923; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)7924; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]7925;7926; GFX10-SDAG-LABEL: freeze_v8f64:7927; GFX10-SDAG: ; %bb.0:7928; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7929; GFX10-SDAG-NEXT: s_clause 0x37930; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off offset:327931; GFX10-SDAG-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:487932; GFX10-SDAG-NEXT: global_load_dwordx4 v[12:15], v[0:1], off7933; GFX10-SDAG-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:167934; GFX10-SDAG-NEXT: s_waitcnt vmcnt(3)7935; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off offset:327936; GFX10-SDAG-NEXT: s_waitcnt vmcnt(2)7937; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:487938; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1)7939; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[12:15], off7940; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)7941; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:167942; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]7943;7944; GFX10-GISEL-LABEL: freeze_v8f64:7945; GFX10-GISEL: ; %bb.0:7946; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7947; GFX10-GISEL-NEXT: s_clause 0x37948; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off7949; GFX10-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:167950; GFX10-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:327951; GFX10-GISEL-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:487952; GFX10-GISEL-NEXT: s_waitcnt vmcnt(3)7953; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off7954; GFX10-GISEL-NEXT: s_waitcnt vmcnt(2)7955; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:167956; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1)7957; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:327958; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)7959; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:487960; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]7961;7962; GFX11-SDAG-LABEL: freeze_v8f64:7963; GFX11-SDAG: ; %bb.0:7964; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7965; GFX11-SDAG-NEXT: s_clause 0x37966; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off offset:327967; GFX11-SDAG-NEXT: global_load_b128 v[8:11], v[0:1], off offset:487968; GFX11-SDAG-NEXT: global_load_b128 v[12:15], v[0:1], off7969; GFX11-SDAG-NEXT: global_load_b128 v[16:19], v[0:1], off offset:167970; GFX11-SDAG-NEXT: s_waitcnt vmcnt(3)7971; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off offset:327972; GFX11-SDAG-NEXT: s_waitcnt vmcnt(2)7973; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[8:11], off offset:487974; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1)7975; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[12:15], off7976; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0)7977; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[16:19], off offset:167978; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]7979;7980; GFX11-GISEL-LABEL: freeze_v8f64:7981; GFX11-GISEL: ; %bb.0:7982; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7983; GFX11-GISEL-NEXT: s_clause 0x37984; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off7985; GFX11-GISEL-NEXT: global_load_b128 v[8:11], v[0:1], off offset:167986; GFX11-GISEL-NEXT: global_load_b128 v[12:15], v[0:1], off offset:327987; GFX11-GISEL-NEXT: global_load_b128 v[16:19], v[0:1], off offset:487988; GFX11-GISEL-NEXT: s_waitcnt vmcnt(3)7989; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off7990; GFX11-GISEL-NEXT: s_waitcnt vmcnt(2)7991; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[8:11], off offset:167992; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1)7993; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[12:15], off offset:327994; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)7995; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[16:19], off offset:487996; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]7997 %a = load <8 x double>, ptr addrspace(1) %ptra7998 %freeze = freeze <8 x double> %a7999 store <8 x double> %freeze, ptr addrspace(1) %ptrb8000 ret void8001}8002 8003define void @freeze_p0(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {8004; GFX6-SDAG-LABEL: freeze_p0:8005; GFX6-SDAG: ; %bb.0:8006; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8007; GFX6-SDAG-NEXT: s_mov_b32 s6, 08008; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0008009; GFX6-SDAG-NEXT: s_mov_b32 s4, s68010; GFX6-SDAG-NEXT: s_mov_b32 s5, s68011; GFX6-SDAG-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr648012; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0)8013; GFX6-SDAG-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr648014; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)8015; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]8016;8017; GFX6-GISEL-LABEL: freeze_p0:8018; GFX6-GISEL: ; %bb.0:8019; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8020; GFX6-GISEL-NEXT: s_mov_b32 s6, 08021; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0008022; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 08023; GFX6-GISEL-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr648024; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0)8025; GFX6-GISEL-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr648026; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)8027; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]8028;8029; GFX7-SDAG-LABEL: freeze_p0:8030; GFX7-SDAG: ; %bb.0:8031; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8032; GFX7-SDAG-NEXT: s_mov_b32 s6, 08033; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0008034; GFX7-SDAG-NEXT: s_mov_b32 s4, s68035; GFX7-SDAG-NEXT: s_mov_b32 s5, s68036; GFX7-SDAG-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr648037; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)8038; GFX7-SDAG-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr648039; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)8040; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]8041;8042; GFX7-GISEL-LABEL: freeze_p0:8043; GFX7-GISEL: ; %bb.0:8044; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8045; GFX7-GISEL-NEXT: s_mov_b32 s6, 08046; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0008047; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 08048; GFX7-GISEL-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr648049; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)8050; GFX7-GISEL-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr648051; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)8052; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]8053;8054; GFX8-LABEL: freeze_p0:8055; GFX8: ; %bb.0:8056; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8057; GFX8-NEXT: flat_load_dwordx2 v[0:1], v[0:1]8058; GFX8-NEXT: s_waitcnt vmcnt(0)8059; GFX8-NEXT: flat_store_dwordx2 v[2:3], v[0:1]8060; GFX8-NEXT: s_waitcnt vmcnt(0)8061; GFX8-NEXT: s_setpc_b64 s[30:31]8062;8063; GFX9-LABEL: freeze_p0:8064; GFX9: ; %bb.0:8065; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8066; GFX9-NEXT: global_load_dwordx2 v[0:1], v[0:1], off8067; GFX9-NEXT: s_waitcnt vmcnt(0)8068; GFX9-NEXT: global_store_dwordx2 v[2:3], v[0:1], off8069; GFX9-NEXT: s_waitcnt vmcnt(0)8070; GFX9-NEXT: s_setpc_b64 s[30:31]8071;8072; GFX10-LABEL: freeze_p0:8073; GFX10: ; %bb.0:8074; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8075; GFX10-NEXT: global_load_dwordx2 v[0:1], v[0:1], off8076; GFX10-NEXT: s_waitcnt vmcnt(0)8077; GFX10-NEXT: global_store_dwordx2 v[2:3], v[0:1], off8078; GFX10-NEXT: s_setpc_b64 s[30:31]8079;8080; GFX11-LABEL: freeze_p0:8081; GFX11: ; %bb.0:8082; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8083; GFX11-NEXT: global_load_b64 v[0:1], v[0:1], off8084; GFX11-NEXT: s_waitcnt vmcnt(0)8085; GFX11-NEXT: global_store_b64 v[2:3], v[0:1], off8086; GFX11-NEXT: s_setpc_b64 s[30:31]8087 %a = load ptr, ptr addrspace(1) %ptra8088 %freeze = freeze ptr %a8089 store ptr %freeze, ptr addrspace(1) %ptrb8090 ret void8091}8092 8093define void @freeze_v2p0(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {8094; GFX6-SDAG-LABEL: freeze_v2p0:8095; GFX6-SDAG: ; %bb.0:8096; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8097; GFX6-SDAG-NEXT: s_mov_b32 s6, 08098; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0008099; GFX6-SDAG-NEXT: s_mov_b32 s4, s68100; GFX6-SDAG-NEXT: s_mov_b32 s5, s68101; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr648102; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0)8103; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr648104; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)8105; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]8106;8107; GFX6-GISEL-LABEL: freeze_v2p0:8108; GFX6-GISEL: ; %bb.0:8109; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8110; GFX6-GISEL-NEXT: s_mov_b32 s6, 08111; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0008112; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 08113; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr648114; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0)8115; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr648116; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)8117; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]8118;8119; GFX7-SDAG-LABEL: freeze_v2p0:8120; GFX7-SDAG: ; %bb.0:8121; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8122; GFX7-SDAG-NEXT: s_mov_b32 s6, 08123; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0008124; GFX7-SDAG-NEXT: s_mov_b32 s4, s68125; GFX7-SDAG-NEXT: s_mov_b32 s5, s68126; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr648127; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)8128; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr648129; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)8130; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]8131;8132; GFX7-GISEL-LABEL: freeze_v2p0:8133; GFX7-GISEL: ; %bb.0:8134; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8135; GFX7-GISEL-NEXT: s_mov_b32 s6, 08136; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0008137; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 08138; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr648139; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)8140; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr648141; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)8142; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]8143;8144; GFX8-LABEL: freeze_v2p0:8145; GFX8: ; %bb.0:8146; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8147; GFX8-NEXT: flat_load_dwordx4 v[4:7], v[0:1]8148; GFX8-NEXT: s_waitcnt vmcnt(0)8149; GFX8-NEXT: flat_store_dwordx4 v[2:3], v[4:7]8150; GFX8-NEXT: s_waitcnt vmcnt(0)8151; GFX8-NEXT: s_setpc_b64 s[30:31]8152;8153; GFX9-LABEL: freeze_v2p0:8154; GFX9: ; %bb.0:8155; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8156; GFX9-NEXT: global_load_dwordx4 v[4:7], v[0:1], off8157; GFX9-NEXT: s_waitcnt vmcnt(0)8158; GFX9-NEXT: global_store_dwordx4 v[2:3], v[4:7], off8159; GFX9-NEXT: s_waitcnt vmcnt(0)8160; GFX9-NEXT: s_setpc_b64 s[30:31]8161;8162; GFX10-LABEL: freeze_v2p0:8163; GFX10: ; %bb.0:8164; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8165; GFX10-NEXT: global_load_dwordx4 v[4:7], v[0:1], off8166; GFX10-NEXT: s_waitcnt vmcnt(0)8167; GFX10-NEXT: global_store_dwordx4 v[2:3], v[4:7], off8168; GFX10-NEXT: s_setpc_b64 s[30:31]8169;8170; GFX11-LABEL: freeze_v2p0:8171; GFX11: ; %bb.0:8172; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8173; GFX11-NEXT: global_load_b128 v[4:7], v[0:1], off8174; GFX11-NEXT: s_waitcnt vmcnt(0)8175; GFX11-NEXT: global_store_b128 v[2:3], v[4:7], off8176; GFX11-NEXT: s_setpc_b64 s[30:31]8177 %a = load <2 x ptr>, ptr addrspace(1) %ptra8178 %freeze = freeze <2 x ptr> %a8179 store <2 x ptr> %freeze, ptr addrspace(1) %ptrb8180 ret void8181}8182 8183define void @freeze_v3p0(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {8184; GFX6-SDAG-LABEL: freeze_v3p0:8185; GFX6-SDAG: ; %bb.0:8186; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8187; GFX6-SDAG-NEXT: s_mov_b32 s6, 08188; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0008189; GFX6-SDAG-NEXT: s_mov_b32 s4, s68190; GFX6-SDAG-NEXT: s_mov_b32 s5, s68191; GFX6-SDAG-NEXT: buffer_load_dwordx2 v[8:9], v[0:1], s[4:7], 0 addr64 offset:168192; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr648193; GFX6-SDAG-NEXT: s_waitcnt vmcnt(1)8194; GFX6-SDAG-NEXT: buffer_store_dwordx2 v[8:9], v[2:3], s[4:7], 0 addr64 offset:168195; GFX6-SDAG-NEXT: s_waitcnt vmcnt(1)8196; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr648197; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)8198; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]8199;8200; GFX6-GISEL-LABEL: freeze_v3p0:8201; GFX6-GISEL: ; %bb.0:8202; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8203; GFX6-GISEL-NEXT: s_mov_b32 s6, 08204; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0008205; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 08206; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr648207; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:168208; GFX6-GISEL-NEXT: s_waitcnt vmcnt(1)8209; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr648210; GFX6-GISEL-NEXT: s_waitcnt vmcnt(1)8211; GFX6-GISEL-NEXT: buffer_store_dwordx2 v[8:9], v[2:3], s[4:7], 0 addr64 offset:168212; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)8213; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]8214;8215; GFX7-SDAG-LABEL: freeze_v3p0:8216; GFX7-SDAG: ; %bb.0:8217; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8218; GFX7-SDAG-NEXT: s_mov_b32 s6, 08219; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0008220; GFX7-SDAG-NEXT: s_mov_b32 s4, s68221; GFX7-SDAG-NEXT: s_mov_b32 s5, s68222; GFX7-SDAG-NEXT: buffer_load_dwordx2 v[8:9], v[0:1], s[4:7], 0 addr64 offset:168223; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr648224; GFX7-SDAG-NEXT: s_waitcnt vmcnt(1)8225; GFX7-SDAG-NEXT: buffer_store_dwordx2 v[8:9], v[2:3], s[4:7], 0 addr64 offset:168226; GFX7-SDAG-NEXT: s_waitcnt vmcnt(1)8227; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr648228; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)8229; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]8230;8231; GFX7-GISEL-LABEL: freeze_v3p0:8232; GFX7-GISEL: ; %bb.0:8233; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8234; GFX7-GISEL-NEXT: s_mov_b32 s6, 08235; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0008236; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 08237; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr648238; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:168239; GFX7-GISEL-NEXT: s_waitcnt vmcnt(1)8240; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr648241; GFX7-GISEL-NEXT: s_waitcnt vmcnt(1)8242; GFX7-GISEL-NEXT: buffer_store_dwordx2 v[8:9], v[2:3], s[4:7], 0 addr64 offset:168243; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)8244; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]8245;8246; GFX8-GISEL-LABEL: freeze_v3p0:8247; GFX8-GISEL: ; %bb.0:8248; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8249; GFX8-GISEL-NEXT: flat_load_dwordx4 v[4:7], v[0:1]8250; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 16, v08251; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v1, vcc8252; GFX8-GISEL-NEXT: flat_load_dwordx4 v[8:11], v[0:1]8253; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 16, v28254; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v3, vcc8255; GFX8-GISEL-NEXT: s_waitcnt vmcnt(1)8256; GFX8-GISEL-NEXT: flat_store_dwordx4 v[2:3], v[4:7]8257; GFX8-GISEL-NEXT: s_waitcnt vmcnt(1)8258; GFX8-GISEL-NEXT: flat_store_dwordx2 v[0:1], v[8:9]8259; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)8260; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]8261;8262; GFX9-GISEL-LABEL: freeze_v3p0:8263; GFX9-GISEL: ; %bb.0:8264; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8265; GFX9-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off8266; GFX9-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:168267; GFX9-GISEL-NEXT: s_waitcnt vmcnt(1)8268; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off8269; GFX9-GISEL-NEXT: s_waitcnt vmcnt(1)8270; GFX9-GISEL-NEXT: global_store_dwordx2 v[2:3], v[8:9], off offset:168271; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)8272; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]8273;8274; GFX10-SDAG-LABEL: freeze_v3p0:8275; GFX10-SDAG: ; %bb.0:8276; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8277; GFX10-SDAG-NEXT: s_clause 0x18278; GFX10-SDAG-NEXT: global_load_dwordx2 v[8:9], v[0:1], off offset:168279; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off8280; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1)8281; GFX10-SDAG-NEXT: global_store_dwordx2 v[2:3], v[8:9], off offset:168282; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)8283; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off8284; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]8285;8286; GFX10-GISEL-LABEL: freeze_v3p0:8287; GFX10-GISEL: ; %bb.0:8288; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8289; GFX10-GISEL-NEXT: s_clause 0x18290; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off8291; GFX10-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:168292; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1)8293; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off8294; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)8295; GFX10-GISEL-NEXT: global_store_dwordx2 v[2:3], v[8:9], off offset:168296; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]8297;8298; GFX11-SDAG-LABEL: freeze_v3p0:8299; GFX11-SDAG: ; %bb.0:8300; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8301; GFX11-SDAG-NEXT: s_clause 0x18302; GFX11-SDAG-NEXT: global_load_b64 v[8:9], v[0:1], off offset:168303; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off8304; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1)8305; GFX11-SDAG-NEXT: global_store_b64 v[2:3], v[8:9], off offset:168306; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0)8307; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off8308; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]8309;8310; GFX11-GISEL-LABEL: freeze_v3p0:8311; GFX11-GISEL: ; %bb.0:8312; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8313; GFX11-GISEL-NEXT: s_clause 0x18314; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off8315; GFX11-GISEL-NEXT: global_load_b128 v[8:11], v[0:1], off offset:168316; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1)8317; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off8318; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)8319; GFX11-GISEL-NEXT: global_store_b64 v[2:3], v[8:9], off offset:168320; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]8321 %a = load <3 x ptr>, ptr addrspace(1) %ptra8322 %freeze = freeze <3 x ptr> %a8323 store <3 x ptr> %freeze, ptr addrspace(1) %ptrb8324 ret void8325}8326 8327define void @freeze_v4p0(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {8328; GFX6-SDAG-LABEL: freeze_v4p0:8329; GFX6-SDAG: ; %bb.0:8330; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8331; GFX6-SDAG-NEXT: s_mov_b32 s6, 08332; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0008333; GFX6-SDAG-NEXT: s_mov_b32 s4, s68334; GFX6-SDAG-NEXT: s_mov_b32 s5, s68335; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:168336; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr648337; GFX6-SDAG-NEXT: s_waitcnt vmcnt(1)8338; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:168339; GFX6-SDAG-NEXT: s_waitcnt vmcnt(1)8340; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr648341; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)8342; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]8343;8344; GFX6-GISEL-LABEL: freeze_v4p0:8345; GFX6-GISEL: ; %bb.0:8346; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8347; GFX6-GISEL-NEXT: s_mov_b32 s6, 08348; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0008349; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 08350; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr648351; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:168352; GFX6-GISEL-NEXT: s_waitcnt vmcnt(1)8353; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr648354; GFX6-GISEL-NEXT: s_waitcnt vmcnt(1)8355; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:168356; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)8357; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]8358;8359; GFX7-SDAG-LABEL: freeze_v4p0:8360; GFX7-SDAG: ; %bb.0:8361; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8362; GFX7-SDAG-NEXT: s_mov_b32 s6, 08363; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0008364; GFX7-SDAG-NEXT: s_mov_b32 s4, s68365; GFX7-SDAG-NEXT: s_mov_b32 s5, s68366; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:168367; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr648368; GFX7-SDAG-NEXT: s_waitcnt vmcnt(1)8369; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:168370; GFX7-SDAG-NEXT: s_waitcnt vmcnt(1)8371; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr648372; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)8373; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]8374;8375; GFX7-GISEL-LABEL: freeze_v4p0:8376; GFX7-GISEL: ; %bb.0:8377; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8378; GFX7-GISEL-NEXT: s_mov_b32 s6, 08379; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0008380; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 08381; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr648382; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:168383; GFX7-GISEL-NEXT: s_waitcnt vmcnt(1)8384; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr648385; GFX7-GISEL-NEXT: s_waitcnt vmcnt(1)8386; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:168387; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)8388; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]8389;8390; GFX8-GISEL-LABEL: freeze_v4p0:8391; GFX8-GISEL: ; %bb.0:8392; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8393; GFX8-GISEL-NEXT: flat_load_dwordx4 v[4:7], v[0:1]8394; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 16, v08395; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v1, vcc8396; GFX8-GISEL-NEXT: flat_load_dwordx4 v[8:11], v[0:1]8397; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 16, v28398; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v3, vcc8399; GFX8-GISEL-NEXT: s_waitcnt vmcnt(1)8400; GFX8-GISEL-NEXT: flat_store_dwordx4 v[2:3], v[4:7]8401; GFX8-GISEL-NEXT: s_waitcnt vmcnt(1)8402; GFX8-GISEL-NEXT: flat_store_dwordx4 v[0:1], v[8:11]8403; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)8404; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]8405;8406; GFX9-GISEL-LABEL: freeze_v4p0:8407; GFX9-GISEL: ; %bb.0:8408; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8409; GFX9-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off8410; GFX9-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:168411; GFX9-GISEL-NEXT: s_waitcnt vmcnt(1)8412; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off8413; GFX9-GISEL-NEXT: s_waitcnt vmcnt(1)8414; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:168415; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)8416; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]8417;8418; GFX10-SDAG-LABEL: freeze_v4p0:8419; GFX10-SDAG: ; %bb.0:8420; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8421; GFX10-SDAG-NEXT: s_clause 0x18422; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off offset:168423; GFX10-SDAG-NEXT: global_load_dwordx4 v[8:11], v[0:1], off8424; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1)8425; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off offset:168426; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)8427; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[8:11], off8428; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]8429;8430; GFX10-GISEL-LABEL: freeze_v4p0:8431; GFX10-GISEL: ; %bb.0:8432; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8433; GFX10-GISEL-NEXT: s_clause 0x18434; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off8435; GFX10-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:168436; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1)8437; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off8438; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)8439; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:168440; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]8441;8442; GFX11-SDAG-LABEL: freeze_v4p0:8443; GFX11-SDAG: ; %bb.0:8444; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8445; GFX11-SDAG-NEXT: s_clause 0x18446; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off offset:168447; GFX11-SDAG-NEXT: global_load_b128 v[8:11], v[0:1], off8448; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1)8449; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off offset:168450; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0)8451; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[8:11], off8452; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]8453;8454; GFX11-GISEL-LABEL: freeze_v4p0:8455; GFX11-GISEL: ; %bb.0:8456; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8457; GFX11-GISEL-NEXT: s_clause 0x18458; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off8459; GFX11-GISEL-NEXT: global_load_b128 v[8:11], v[0:1], off offset:168460; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1)8461; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off8462; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)8463; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[8:11], off offset:168464; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]8465 %a = load <4 x ptr>, ptr addrspace(1) %ptra8466 %freeze = freeze <4 x ptr> %a8467 store <4 x ptr> %freeze, ptr addrspace(1) %ptrb8468 ret void8469}8470 8471define void @freeze_v8p0(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {8472; GFX6-SDAG-LABEL: freeze_v8p0:8473; GFX6-SDAG: ; %bb.0:8474; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8475; GFX6-SDAG-NEXT: s_mov_b32 s6, 08476; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0008477; GFX6-SDAG-NEXT: s_mov_b32 s4, s68478; GFX6-SDAG-NEXT: s_mov_b32 s5, s68479; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:328480; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:488481; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr648482; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:168483; GFX6-SDAG-NEXT: s_waitcnt vmcnt(3)8484; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:328485; GFX6-SDAG-NEXT: s_waitcnt vmcnt(3)8486; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:488487; GFX6-SDAG-NEXT: s_waitcnt vmcnt(3)8488; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr648489; GFX6-SDAG-NEXT: s_waitcnt vmcnt(3)8490; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:168491; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)8492; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]8493;8494; GFX6-GISEL-LABEL: freeze_v8p0:8495; GFX6-GISEL: ; %bb.0:8496; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8497; GFX6-GISEL-NEXT: s_mov_b32 s6, 08498; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0008499; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 08500; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr648501; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:168502; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:328503; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:488504; GFX6-GISEL-NEXT: s_waitcnt vmcnt(3)8505; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr648506; GFX6-GISEL-NEXT: s_waitcnt vmcnt(3)8507; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:168508; GFX6-GISEL-NEXT: s_waitcnt vmcnt(3)8509; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:328510; GFX6-GISEL-NEXT: s_waitcnt vmcnt(3)8511; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:488512; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)8513; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]8514;8515; GFX7-SDAG-LABEL: freeze_v8p0:8516; GFX7-SDAG: ; %bb.0:8517; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8518; GFX7-SDAG-NEXT: s_mov_b32 s6, 08519; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0008520; GFX7-SDAG-NEXT: s_mov_b32 s4, s68521; GFX7-SDAG-NEXT: s_mov_b32 s5, s68522; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:328523; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:488524; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr648525; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:168526; GFX7-SDAG-NEXT: s_waitcnt vmcnt(3)8527; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:328528; GFX7-SDAG-NEXT: s_waitcnt vmcnt(3)8529; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:488530; GFX7-SDAG-NEXT: s_waitcnt vmcnt(3)8531; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr648532; GFX7-SDAG-NEXT: s_waitcnt vmcnt(3)8533; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:168534; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)8535; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]8536;8537; GFX7-GISEL-LABEL: freeze_v8p0:8538; GFX7-GISEL: ; %bb.0:8539; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8540; GFX7-GISEL-NEXT: s_mov_b32 s6, 08541; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0008542; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 08543; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr648544; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:168545; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:328546; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:488547; GFX7-GISEL-NEXT: s_waitcnt vmcnt(3)8548; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr648549; GFX7-GISEL-NEXT: s_waitcnt vmcnt(3)8550; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:168551; GFX7-GISEL-NEXT: s_waitcnt vmcnt(3)8552; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:328553; GFX7-GISEL-NEXT: s_waitcnt vmcnt(3)8554; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:488555; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)8556; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]8557;8558; GFX8-GISEL-LABEL: freeze_v8p0:8559; GFX8-GISEL: ; %bb.0:8560; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8561; GFX8-GISEL-NEXT: v_add_u32_e32 v8, vcc, 16, v08562; GFX8-GISEL-NEXT: v_addc_u32_e32 v9, vcc, 0, v1, vcc8563; GFX8-GISEL-NEXT: v_add_u32_e32 v12, vcc, 32, v08564; GFX8-GISEL-NEXT: flat_load_dwordx4 v[4:7], v[0:1]8565; GFX8-GISEL-NEXT: flat_load_dwordx4 v[8:11], v[8:9]8566; GFX8-GISEL-NEXT: v_addc_u32_e32 v13, vcc, 0, v1, vcc8567; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 48, v08568; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v1, vcc8569; GFX8-GISEL-NEXT: flat_load_dwordx4 v[12:15], v[12:13]8570; GFX8-GISEL-NEXT: flat_load_dwordx4 v[16:19], v[0:1]8571; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 16, v28572; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v3, vcc8573; GFX8-GISEL-NEXT: s_waitcnt vmcnt(3)8574; GFX8-GISEL-NEXT: flat_store_dwordx4 v[2:3], v[4:7]8575; GFX8-GISEL-NEXT: s_nop 08576; GFX8-GISEL-NEXT: v_add_u32_e32 v4, vcc, 32, v28577; GFX8-GISEL-NEXT: v_addc_u32_e32 v5, vcc, 0, v3, vcc8578; GFX8-GISEL-NEXT: v_add_u32_e32 v2, vcc, 48, v28579; GFX8-GISEL-NEXT: v_addc_u32_e32 v3, vcc, 0, v3, vcc8580; GFX8-GISEL-NEXT: s_waitcnt vmcnt(3)8581; GFX8-GISEL-NEXT: flat_store_dwordx4 v[0:1], v[8:11]8582; GFX8-GISEL-NEXT: s_waitcnt vmcnt(3)8583; GFX8-GISEL-NEXT: flat_store_dwordx4 v[4:5], v[12:15]8584; GFX8-GISEL-NEXT: s_waitcnt vmcnt(3)8585; GFX8-GISEL-NEXT: flat_store_dwordx4 v[2:3], v[16:19]8586; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)8587; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]8588;8589; GFX9-GISEL-LABEL: freeze_v8p0:8590; GFX9-GISEL: ; %bb.0:8591; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8592; GFX9-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off8593; GFX9-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:168594; GFX9-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:328595; GFX9-GISEL-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:488596; GFX9-GISEL-NEXT: s_waitcnt vmcnt(3)8597; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off8598; GFX9-GISEL-NEXT: s_waitcnt vmcnt(3)8599; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:168600; GFX9-GISEL-NEXT: s_waitcnt vmcnt(3)8601; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:328602; GFX9-GISEL-NEXT: s_waitcnt vmcnt(3)8603; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:488604; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)8605; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]8606;8607; GFX10-SDAG-LABEL: freeze_v8p0:8608; GFX10-SDAG: ; %bb.0:8609; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8610; GFX10-SDAG-NEXT: s_clause 0x38611; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off offset:328612; GFX10-SDAG-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:488613; GFX10-SDAG-NEXT: global_load_dwordx4 v[12:15], v[0:1], off8614; GFX10-SDAG-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:168615; GFX10-SDAG-NEXT: s_waitcnt vmcnt(3)8616; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off offset:328617; GFX10-SDAG-NEXT: s_waitcnt vmcnt(2)8618; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:488619; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1)8620; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[12:15], off8621; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)8622; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:168623; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]8624;8625; GFX10-GISEL-LABEL: freeze_v8p0:8626; GFX10-GISEL: ; %bb.0:8627; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8628; GFX10-GISEL-NEXT: s_clause 0x38629; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off8630; GFX10-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:168631; GFX10-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:328632; GFX10-GISEL-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:488633; GFX10-GISEL-NEXT: s_waitcnt vmcnt(3)8634; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off8635; GFX10-GISEL-NEXT: s_waitcnt vmcnt(2)8636; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:168637; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1)8638; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:328639; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)8640; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:488641; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]8642;8643; GFX11-SDAG-LABEL: freeze_v8p0:8644; GFX11-SDAG: ; %bb.0:8645; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8646; GFX11-SDAG-NEXT: s_clause 0x38647; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off offset:328648; GFX11-SDAG-NEXT: global_load_b128 v[8:11], v[0:1], off offset:488649; GFX11-SDAG-NEXT: global_load_b128 v[12:15], v[0:1], off8650; GFX11-SDAG-NEXT: global_load_b128 v[16:19], v[0:1], off offset:168651; GFX11-SDAG-NEXT: s_waitcnt vmcnt(3)8652; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off offset:328653; GFX11-SDAG-NEXT: s_waitcnt vmcnt(2)8654; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[8:11], off offset:488655; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1)8656; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[12:15], off8657; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0)8658; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[16:19], off offset:168659; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]8660;8661; GFX11-GISEL-LABEL: freeze_v8p0:8662; GFX11-GISEL: ; %bb.0:8663; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8664; GFX11-GISEL-NEXT: s_clause 0x38665; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off8666; GFX11-GISEL-NEXT: global_load_b128 v[8:11], v[0:1], off offset:168667; GFX11-GISEL-NEXT: global_load_b128 v[12:15], v[0:1], off offset:328668; GFX11-GISEL-NEXT: global_load_b128 v[16:19], v[0:1], off offset:488669; GFX11-GISEL-NEXT: s_waitcnt vmcnt(3)8670; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off8671; GFX11-GISEL-NEXT: s_waitcnt vmcnt(2)8672; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[8:11], off offset:168673; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1)8674; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[12:15], off offset:328675; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)8676; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[16:19], off offset:488677; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]8678 %a = load <8 x ptr>, ptr addrspace(1) %ptra8679 %freeze = freeze <8 x ptr> %a8680 store <8 x ptr> %freeze, ptr addrspace(1) %ptrb8681 ret void8682}8683 8684define void @freeze_v16p0(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {8685; GFX6-SDAG-LABEL: freeze_v16p0:8686; GFX6-SDAG: ; %bb.0:8687; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8688; GFX6-SDAG-NEXT: s_mov_b32 s6, 08689; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0008690; GFX6-SDAG-NEXT: s_mov_b32 s4, s68691; GFX6-SDAG-NEXT: s_mov_b32 s5, s68692; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:968693; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:1128694; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:648695; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:808696; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[20:23], v[0:1], s[4:7], 0 addr64 offset:328697; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[24:27], v[0:1], s[4:7], 0 addr64 offset:488698; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[28:31], v[0:1], s[4:7], 0 addr648699; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[32:35], v[0:1], s[4:7], 0 addr64 offset:168700; GFX6-SDAG-NEXT: s_waitcnt vmcnt(7)8701; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:968702; GFX6-SDAG-NEXT: s_waitcnt vmcnt(7)8703; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:1128704; GFX6-SDAG-NEXT: s_waitcnt vmcnt(7)8705; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:648706; GFX6-SDAG-NEXT: s_waitcnt vmcnt(7)8707; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:808708; GFX6-SDAG-NEXT: s_waitcnt vmcnt(7)8709; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[20:23], v[2:3], s[4:7], 0 addr64 offset:328710; GFX6-SDAG-NEXT: s_waitcnt vmcnt(7)8711; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[24:27], v[2:3], s[4:7], 0 addr64 offset:488712; GFX6-SDAG-NEXT: s_waitcnt vmcnt(7)8713; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[28:31], v[2:3], s[4:7], 0 addr648714; GFX6-SDAG-NEXT: s_waitcnt vmcnt(7)8715; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[32:35], v[2:3], s[4:7], 0 addr64 offset:168716; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)8717; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]8718;8719; GFX6-GISEL-LABEL: freeze_v16p0:8720; GFX6-GISEL: ; %bb.0:8721; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8722; GFX6-GISEL-NEXT: s_mov_b32 s6, 08723; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0008724; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 08725; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr648726; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:168727; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:328728; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:488729; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[20:23], v[0:1], s[4:7], 0 addr64 offset:648730; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[24:27], v[0:1], s[4:7], 0 addr64 offset:808731; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[28:31], v[0:1], s[4:7], 0 addr64 offset:968732; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[32:35], v[0:1], s[4:7], 0 addr64 offset:1128733; GFX6-GISEL-NEXT: s_waitcnt vmcnt(7)8734; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr648735; GFX6-GISEL-NEXT: s_waitcnt vmcnt(7)8736; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:168737; GFX6-GISEL-NEXT: s_waitcnt vmcnt(7)8738; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:328739; GFX6-GISEL-NEXT: s_waitcnt vmcnt(7)8740; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:488741; GFX6-GISEL-NEXT: s_waitcnt vmcnt(7)8742; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[20:23], v[2:3], s[4:7], 0 addr64 offset:648743; GFX6-GISEL-NEXT: s_waitcnt vmcnt(7)8744; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[24:27], v[2:3], s[4:7], 0 addr64 offset:808745; GFX6-GISEL-NEXT: s_waitcnt vmcnt(7)8746; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[28:31], v[2:3], s[4:7], 0 addr64 offset:968747; GFX6-GISEL-NEXT: s_waitcnt vmcnt(7)8748; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[32:35], v[2:3], s[4:7], 0 addr64 offset:1128749; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)8750; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]8751;8752; GFX7-SDAG-LABEL: freeze_v16p0:8753; GFX7-SDAG: ; %bb.0:8754; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8755; GFX7-SDAG-NEXT: s_mov_b32 s6, 08756; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0008757; GFX7-SDAG-NEXT: s_mov_b32 s4, s68758; GFX7-SDAG-NEXT: s_mov_b32 s5, s68759; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:968760; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:1128761; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:648762; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:808763; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[20:23], v[0:1], s[4:7], 0 addr64 offset:328764; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[24:27], v[0:1], s[4:7], 0 addr64 offset:488765; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[28:31], v[0:1], s[4:7], 0 addr648766; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[32:35], v[0:1], s[4:7], 0 addr64 offset:168767; GFX7-SDAG-NEXT: s_waitcnt vmcnt(7)8768; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:968769; GFX7-SDAG-NEXT: s_waitcnt vmcnt(7)8770; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:1128771; GFX7-SDAG-NEXT: s_waitcnt vmcnt(7)8772; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:648773; GFX7-SDAG-NEXT: s_waitcnt vmcnt(7)8774; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:808775; GFX7-SDAG-NEXT: s_waitcnt vmcnt(7)8776; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[20:23], v[2:3], s[4:7], 0 addr64 offset:328777; GFX7-SDAG-NEXT: s_waitcnt vmcnt(7)8778; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[24:27], v[2:3], s[4:7], 0 addr64 offset:488779; GFX7-SDAG-NEXT: s_waitcnt vmcnt(7)8780; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[28:31], v[2:3], s[4:7], 0 addr648781; GFX7-SDAG-NEXT: s_waitcnt vmcnt(7)8782; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[32:35], v[2:3], s[4:7], 0 addr64 offset:168783; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)8784; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]8785;8786; GFX7-GISEL-LABEL: freeze_v16p0:8787; GFX7-GISEL: ; %bb.0:8788; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8789; GFX7-GISEL-NEXT: s_mov_b32 s6, 08790; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0008791; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 08792; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr648793; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:168794; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:328795; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:488796; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[20:23], v[0:1], s[4:7], 0 addr64 offset:648797; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[24:27], v[0:1], s[4:7], 0 addr64 offset:808798; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[28:31], v[0:1], s[4:7], 0 addr64 offset:968799; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[32:35], v[0:1], s[4:7], 0 addr64 offset:1128800; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)8801; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr648802; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)8803; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:168804; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)8805; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:328806; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)8807; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:488808; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)8809; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[20:23], v[2:3], s[4:7], 0 addr64 offset:648810; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)8811; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[24:27], v[2:3], s[4:7], 0 addr64 offset:808812; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)8813; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[28:31], v[2:3], s[4:7], 0 addr64 offset:968814; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)8815; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[32:35], v[2:3], s[4:7], 0 addr64 offset:1128816; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)8817; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]8818;8819; GFX8-GISEL-LABEL: freeze_v16p0:8820; GFX8-GISEL: ; %bb.0:8821; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8822; GFX8-GISEL-NEXT: v_add_u32_e32 v4, vcc, 16, v08823; GFX8-GISEL-NEXT: v_addc_u32_e32 v5, vcc, 0, v1, vcc8824; GFX8-GISEL-NEXT: v_add_u32_e32 v12, vcc, 32, v08825; GFX8-GISEL-NEXT: v_addc_u32_e32 v13, vcc, 0, v1, vcc8826; GFX8-GISEL-NEXT: v_add_u32_e32 v16, vcc, 48, v08827; GFX8-GISEL-NEXT: v_addc_u32_e32 v17, vcc, 0, v1, vcc8828; GFX8-GISEL-NEXT: v_add_u32_e32 v20, vcc, 64, v08829; GFX8-GISEL-NEXT: flat_load_dwordx4 v[4:7], v[4:5]8830; GFX8-GISEL-NEXT: flat_load_dwordx4 v[8:11], v[0:1]8831; GFX8-GISEL-NEXT: v_addc_u32_e32 v21, vcc, 0, v1, vcc8832; GFX8-GISEL-NEXT: v_mov_b32_e32 v38, 0x508833; GFX8-GISEL-NEXT: v_add_u32_e32 v24, vcc, v0, v388834; GFX8-GISEL-NEXT: v_addc_u32_e32 v25, vcc, 0, v1, vcc8835; GFX8-GISEL-NEXT: v_mov_b32_e32 v14, 0x608836; GFX8-GISEL-NEXT: v_add_u32_e32 v28, vcc, v0, v148837; GFX8-GISEL-NEXT: v_addc_u32_e32 v29, vcc, 0, v1, vcc8838; GFX8-GISEL-NEXT: v_mov_b32_e32 v14, 0x708839; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, v0, v148840; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v1, vcc8841; GFX8-GISEL-NEXT: flat_load_dwordx4 v[12:15], v[12:13]8842; GFX8-GISEL-NEXT: flat_load_dwordx4 v[16:19], v[16:17]8843; GFX8-GISEL-NEXT: flat_load_dwordx4 v[20:23], v[20:21]8844; GFX8-GISEL-NEXT: flat_load_dwordx4 v[24:27], v[24:25]8845; GFX8-GISEL-NEXT: flat_load_dwordx4 v[28:31], v[28:29]8846; GFX8-GISEL-NEXT: flat_load_dwordx4 v[32:35], v[0:1]8847; GFX8-GISEL-NEXT: v_add_u32_e32 v36, vcc, 16, v28848; GFX8-GISEL-NEXT: v_addc_u32_e32 v37, vcc, 0, v3, vcc8849; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 32, v28850; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v3, vcc8851; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)8852; GFX8-GISEL-NEXT: flat_store_dwordx4 v[36:37], v[4:7]8853; GFX8-GISEL-NEXT: s_nop 08854; GFX8-GISEL-NEXT: v_add_u32_e32 v4, vcc, 48, v28855; GFX8-GISEL-NEXT: v_addc_u32_e32 v5, vcc, 0, v3, vcc8856; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)8857; GFX8-GISEL-NEXT: flat_store_dwordx4 v[2:3], v[8:11]8858; GFX8-GISEL-NEXT: v_add_u32_e32 v6, vcc, v2, v388859; GFX8-GISEL-NEXT: v_add_u32_e64 v8, s[4:5], 64, v28860; GFX8-GISEL-NEXT: v_addc_u32_e64 v9, s[4:5], 0, v3, s[4:5]8861; GFX8-GISEL-NEXT: s_mov_b64 s[4:5], vcc8862; GFX8-GISEL-NEXT: v_add_u32_e32 v10, vcc, 0x60, v28863; GFX8-GISEL-NEXT: v_addc_u32_e32 v11, vcc, 0, v3, vcc8864; GFX8-GISEL-NEXT: v_add_u32_e32 v2, vcc, 0x70, v28865; GFX8-GISEL-NEXT: v_addc_u32_e64 v7, s[4:5], 0, v3, s[4:5]8866; GFX8-GISEL-NEXT: v_addc_u32_e32 v3, vcc, 0, v3, vcc8867; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)8868; GFX8-GISEL-NEXT: flat_store_dwordx4 v[0:1], v[12:15]8869; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)8870; GFX8-GISEL-NEXT: flat_store_dwordx4 v[4:5], v[16:19]8871; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)8872; GFX8-GISEL-NEXT: flat_store_dwordx4 v[8:9], v[20:23]8873; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)8874; GFX8-GISEL-NEXT: flat_store_dwordx4 v[6:7], v[24:27]8875; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)8876; GFX8-GISEL-NEXT: flat_store_dwordx4 v[10:11], v[28:31]8877; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)8878; GFX8-GISEL-NEXT: flat_store_dwordx4 v[2:3], v[32:35]8879; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)8880; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]8881;8882; GFX9-GISEL-LABEL: freeze_v16p0:8883; GFX9-GISEL: ; %bb.0:8884; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8885; GFX9-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off8886; GFX9-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:168887; GFX9-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:328888; GFX9-GISEL-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:488889; GFX9-GISEL-NEXT: global_load_dwordx4 v[20:23], v[0:1], off offset:648890; GFX9-GISEL-NEXT: global_load_dwordx4 v[24:27], v[0:1], off offset:808891; GFX9-GISEL-NEXT: global_load_dwordx4 v[28:31], v[0:1], off offset:968892; GFX9-GISEL-NEXT: global_load_dwordx4 v[32:35], v[0:1], off offset:1128893; GFX9-GISEL-NEXT: s_waitcnt vmcnt(7)8894; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off8895; GFX9-GISEL-NEXT: s_waitcnt vmcnt(7)8896; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:168897; GFX9-GISEL-NEXT: s_waitcnt vmcnt(7)8898; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:328899; GFX9-GISEL-NEXT: s_waitcnt vmcnt(7)8900; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:488901; GFX9-GISEL-NEXT: s_waitcnt vmcnt(7)8902; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[20:23], off offset:648903; GFX9-GISEL-NEXT: s_waitcnt vmcnt(7)8904; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[24:27], off offset:808905; GFX9-GISEL-NEXT: s_waitcnt vmcnt(7)8906; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[28:31], off offset:968907; GFX9-GISEL-NEXT: s_waitcnt vmcnt(7)8908; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[32:35], off offset:1128909; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)8910; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]8911;8912; GFX10-SDAG-LABEL: freeze_v16p0:8913; GFX10-SDAG: ; %bb.0:8914; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8915; GFX10-SDAG-NEXT: s_clause 0x78916; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off offset:968917; GFX10-SDAG-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:1128918; GFX10-SDAG-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:648919; GFX10-SDAG-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:808920; GFX10-SDAG-NEXT: global_load_dwordx4 v[20:23], v[0:1], off offset:328921; GFX10-SDAG-NEXT: global_load_dwordx4 v[24:27], v[0:1], off offset:488922; GFX10-SDAG-NEXT: global_load_dwordx4 v[28:31], v[0:1], off8923; GFX10-SDAG-NEXT: global_load_dwordx4 v[32:35], v[0:1], off offset:168924; GFX10-SDAG-NEXT: s_waitcnt vmcnt(7)8925; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off offset:968926; GFX10-SDAG-NEXT: s_waitcnt vmcnt(6)8927; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:1128928; GFX10-SDAG-NEXT: s_waitcnt vmcnt(5)8929; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:648930; GFX10-SDAG-NEXT: s_waitcnt vmcnt(4)8931; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:808932; GFX10-SDAG-NEXT: s_waitcnt vmcnt(3)8933; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[20:23], off offset:328934; GFX10-SDAG-NEXT: s_waitcnt vmcnt(2)8935; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[24:27], off offset:488936; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1)8937; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[28:31], off8938; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)8939; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[32:35], off offset:168940; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]8941;8942; GFX10-GISEL-LABEL: freeze_v16p0:8943; GFX10-GISEL: ; %bb.0:8944; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8945; GFX10-GISEL-NEXT: s_clause 0x78946; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off8947; GFX10-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:168948; GFX10-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:328949; GFX10-GISEL-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:488950; GFX10-GISEL-NEXT: global_load_dwordx4 v[20:23], v[0:1], off offset:648951; GFX10-GISEL-NEXT: global_load_dwordx4 v[24:27], v[0:1], off offset:808952; GFX10-GISEL-NEXT: global_load_dwordx4 v[28:31], v[0:1], off offset:968953; GFX10-GISEL-NEXT: global_load_dwordx4 v[32:35], v[0:1], off offset:1128954; GFX10-GISEL-NEXT: s_waitcnt vmcnt(7)8955; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off8956; GFX10-GISEL-NEXT: s_waitcnt vmcnt(6)8957; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:168958; GFX10-GISEL-NEXT: s_waitcnt vmcnt(5)8959; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:328960; GFX10-GISEL-NEXT: s_waitcnt vmcnt(4)8961; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:488962; GFX10-GISEL-NEXT: s_waitcnt vmcnt(3)8963; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[20:23], off offset:648964; GFX10-GISEL-NEXT: s_waitcnt vmcnt(2)8965; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[24:27], off offset:808966; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1)8967; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[28:31], off offset:968968; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)8969; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[32:35], off offset:1128970; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]8971;8972; GFX11-SDAG-LABEL: freeze_v16p0:8973; GFX11-SDAG: ; %bb.0:8974; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8975; GFX11-SDAG-NEXT: s_clause 0x78976; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off offset:968977; GFX11-SDAG-NEXT: global_load_b128 v[8:11], v[0:1], off offset:1128978; GFX11-SDAG-NEXT: global_load_b128 v[12:15], v[0:1], off offset:648979; GFX11-SDAG-NEXT: global_load_b128 v[16:19], v[0:1], off offset:808980; GFX11-SDAG-NEXT: global_load_b128 v[20:23], v[0:1], off offset:328981; GFX11-SDAG-NEXT: global_load_b128 v[24:27], v[0:1], off offset:488982; GFX11-SDAG-NEXT: global_load_b128 v[28:31], v[0:1], off8983; GFX11-SDAG-NEXT: global_load_b128 v[32:35], v[0:1], off offset:168984; GFX11-SDAG-NEXT: s_waitcnt vmcnt(7)8985; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off offset:968986; GFX11-SDAG-NEXT: s_waitcnt vmcnt(6)8987; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[8:11], off offset:1128988; GFX11-SDAG-NEXT: s_waitcnt vmcnt(5)8989; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[12:15], off offset:648990; GFX11-SDAG-NEXT: s_waitcnt vmcnt(4)8991; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[16:19], off offset:808992; GFX11-SDAG-NEXT: s_waitcnt vmcnt(3)8993; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[20:23], off offset:328994; GFX11-SDAG-NEXT: s_waitcnt vmcnt(2)8995; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[24:27], off offset:488996; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1)8997; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[28:31], off8998; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0)8999; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[32:35], off offset:169000; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]9001;9002; GFX11-GISEL-LABEL: freeze_v16p0:9003; GFX11-GISEL: ; %bb.0:9004; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9005; GFX11-GISEL-NEXT: s_clause 0x79006; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off9007; GFX11-GISEL-NEXT: global_load_b128 v[8:11], v[0:1], off offset:169008; GFX11-GISEL-NEXT: global_load_b128 v[12:15], v[0:1], off offset:329009; GFX11-GISEL-NEXT: global_load_b128 v[16:19], v[0:1], off offset:489010; GFX11-GISEL-NEXT: global_load_b128 v[20:23], v[0:1], off offset:649011; GFX11-GISEL-NEXT: global_load_b128 v[24:27], v[0:1], off offset:809012; GFX11-GISEL-NEXT: global_load_b128 v[28:31], v[0:1], off offset:969013; GFX11-GISEL-NEXT: global_load_b128 v[32:35], v[0:1], off offset:1129014; GFX11-GISEL-NEXT: s_waitcnt vmcnt(7)9015; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off9016; GFX11-GISEL-NEXT: s_waitcnt vmcnt(6)9017; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[8:11], off offset:169018; GFX11-GISEL-NEXT: s_waitcnt vmcnt(5)9019; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[12:15], off offset:329020; GFX11-GISEL-NEXT: s_waitcnt vmcnt(4)9021; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[16:19], off offset:489022; GFX11-GISEL-NEXT: s_waitcnt vmcnt(3)9023; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[20:23], off offset:649024; GFX11-GISEL-NEXT: s_waitcnt vmcnt(2)9025; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[24:27], off offset:809026; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1)9027; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[28:31], off offset:969028; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)9029; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[32:35], off offset:1129030; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]9031 %a = load <16 x ptr>, ptr addrspace(1) %ptra9032 %freeze = freeze <16 x ptr> %a9033 store <16 x ptr> %freeze, ptr addrspace(1) %ptrb9034 ret void9035}9036 9037define void @freeze_p1(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {9038; GFX6-SDAG-LABEL: freeze_p1:9039; GFX6-SDAG: ; %bb.0:9040; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9041; GFX6-SDAG-NEXT: s_mov_b32 s6, 09042; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0009043; GFX6-SDAG-NEXT: s_mov_b32 s4, s69044; GFX6-SDAG-NEXT: s_mov_b32 s5, s69045; GFX6-SDAG-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr649046; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0)9047; GFX6-SDAG-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr649048; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)9049; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]9050;9051; GFX6-GISEL-LABEL: freeze_p1:9052; GFX6-GISEL: ; %bb.0:9053; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9054; GFX6-GISEL-NEXT: s_mov_b32 s6, 09055; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0009056; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 09057; GFX6-GISEL-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr649058; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0)9059; GFX6-GISEL-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr649060; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)9061; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]9062;9063; GFX7-SDAG-LABEL: freeze_p1:9064; GFX7-SDAG: ; %bb.0:9065; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9066; GFX7-SDAG-NEXT: s_mov_b32 s6, 09067; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0009068; GFX7-SDAG-NEXT: s_mov_b32 s4, s69069; GFX7-SDAG-NEXT: s_mov_b32 s5, s69070; GFX7-SDAG-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr649071; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)9072; GFX7-SDAG-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr649073; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)9074; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]9075;9076; GFX7-GISEL-LABEL: freeze_p1:9077; GFX7-GISEL: ; %bb.0:9078; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9079; GFX7-GISEL-NEXT: s_mov_b32 s6, 09080; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0009081; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 09082; GFX7-GISEL-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr649083; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)9084; GFX7-GISEL-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr649085; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)9086; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]9087;9088; GFX8-LABEL: freeze_p1:9089; GFX8: ; %bb.0:9090; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9091; GFX8-NEXT: flat_load_dwordx2 v[0:1], v[0:1]9092; GFX8-NEXT: s_waitcnt vmcnt(0)9093; GFX8-NEXT: flat_store_dwordx2 v[2:3], v[0:1]9094; GFX8-NEXT: s_waitcnt vmcnt(0)9095; GFX8-NEXT: s_setpc_b64 s[30:31]9096;9097; GFX9-LABEL: freeze_p1:9098; GFX9: ; %bb.0:9099; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9100; GFX9-NEXT: global_load_dwordx2 v[0:1], v[0:1], off9101; GFX9-NEXT: s_waitcnt vmcnt(0)9102; GFX9-NEXT: global_store_dwordx2 v[2:3], v[0:1], off9103; GFX9-NEXT: s_waitcnt vmcnt(0)9104; GFX9-NEXT: s_setpc_b64 s[30:31]9105;9106; GFX10-LABEL: freeze_p1:9107; GFX10: ; %bb.0:9108; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9109; GFX10-NEXT: global_load_dwordx2 v[0:1], v[0:1], off9110; GFX10-NEXT: s_waitcnt vmcnt(0)9111; GFX10-NEXT: global_store_dwordx2 v[2:3], v[0:1], off9112; GFX10-NEXT: s_setpc_b64 s[30:31]9113;9114; GFX11-LABEL: freeze_p1:9115; GFX11: ; %bb.0:9116; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9117; GFX11-NEXT: global_load_b64 v[0:1], v[0:1], off9118; GFX11-NEXT: s_waitcnt vmcnt(0)9119; GFX11-NEXT: global_store_b64 v[2:3], v[0:1], off9120; GFX11-NEXT: s_setpc_b64 s[30:31]9121 %a = load ptr addrspace(1), ptr addrspace(1) %ptra9122 %freeze = freeze ptr addrspace(1) %a9123 store ptr addrspace(1) %freeze, ptr addrspace(1) %ptrb9124 ret void9125}9126 9127define void @freeze_v2p1(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {9128; GFX6-SDAG-LABEL: freeze_v2p1:9129; GFX6-SDAG: ; %bb.0:9130; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9131; GFX6-SDAG-NEXT: s_mov_b32 s6, 09132; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0009133; GFX6-SDAG-NEXT: s_mov_b32 s4, s69134; GFX6-SDAG-NEXT: s_mov_b32 s5, s69135; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr649136; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0)9137; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr649138; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)9139; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]9140;9141; GFX6-GISEL-LABEL: freeze_v2p1:9142; GFX6-GISEL: ; %bb.0:9143; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9144; GFX6-GISEL-NEXT: s_mov_b32 s6, 09145; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0009146; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 09147; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr649148; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0)9149; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr649150; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)9151; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]9152;9153; GFX7-SDAG-LABEL: freeze_v2p1:9154; GFX7-SDAG: ; %bb.0:9155; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9156; GFX7-SDAG-NEXT: s_mov_b32 s6, 09157; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0009158; GFX7-SDAG-NEXT: s_mov_b32 s4, s69159; GFX7-SDAG-NEXT: s_mov_b32 s5, s69160; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr649161; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)9162; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr649163; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)9164; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]9165;9166; GFX7-GISEL-LABEL: freeze_v2p1:9167; GFX7-GISEL: ; %bb.0:9168; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9169; GFX7-GISEL-NEXT: s_mov_b32 s6, 09170; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0009171; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 09172; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr649173; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)9174; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr649175; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)9176; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]9177;9178; GFX8-LABEL: freeze_v2p1:9179; GFX8: ; %bb.0:9180; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9181; GFX8-NEXT: flat_load_dwordx4 v[4:7], v[0:1]9182; GFX8-NEXT: s_waitcnt vmcnt(0)9183; GFX8-NEXT: flat_store_dwordx4 v[2:3], v[4:7]9184; GFX8-NEXT: s_waitcnt vmcnt(0)9185; GFX8-NEXT: s_setpc_b64 s[30:31]9186;9187; GFX9-LABEL: freeze_v2p1:9188; GFX9: ; %bb.0:9189; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9190; GFX9-NEXT: global_load_dwordx4 v[4:7], v[0:1], off9191; GFX9-NEXT: s_waitcnt vmcnt(0)9192; GFX9-NEXT: global_store_dwordx4 v[2:3], v[4:7], off9193; GFX9-NEXT: s_waitcnt vmcnt(0)9194; GFX9-NEXT: s_setpc_b64 s[30:31]9195;9196; GFX10-LABEL: freeze_v2p1:9197; GFX10: ; %bb.0:9198; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9199; GFX10-NEXT: global_load_dwordx4 v[4:7], v[0:1], off9200; GFX10-NEXT: s_waitcnt vmcnt(0)9201; GFX10-NEXT: global_store_dwordx4 v[2:3], v[4:7], off9202; GFX10-NEXT: s_setpc_b64 s[30:31]9203;9204; GFX11-LABEL: freeze_v2p1:9205; GFX11: ; %bb.0:9206; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9207; GFX11-NEXT: global_load_b128 v[4:7], v[0:1], off9208; GFX11-NEXT: s_waitcnt vmcnt(0)9209; GFX11-NEXT: global_store_b128 v[2:3], v[4:7], off9210; GFX11-NEXT: s_setpc_b64 s[30:31]9211 %a = load <2 x ptr addrspace(1)>, ptr addrspace(1) %ptra9212 %freeze = freeze <2 x ptr addrspace(1)> %a9213 store <2 x ptr addrspace(1)> %freeze, ptr addrspace(1) %ptrb9214 ret void9215}9216 9217define void @freeze_v3p1(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {9218; GFX6-SDAG-LABEL: freeze_v3p1:9219; GFX6-SDAG: ; %bb.0:9220; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9221; GFX6-SDAG-NEXT: s_mov_b32 s6, 09222; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0009223; GFX6-SDAG-NEXT: s_mov_b32 s4, s69224; GFX6-SDAG-NEXT: s_mov_b32 s5, s69225; GFX6-SDAG-NEXT: buffer_load_dwordx2 v[8:9], v[0:1], s[4:7], 0 addr64 offset:169226; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr649227; GFX6-SDAG-NEXT: s_waitcnt vmcnt(1)9228; GFX6-SDAG-NEXT: buffer_store_dwordx2 v[8:9], v[2:3], s[4:7], 0 addr64 offset:169229; GFX6-SDAG-NEXT: s_waitcnt vmcnt(1)9230; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr649231; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)9232; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]9233;9234; GFX6-GISEL-LABEL: freeze_v3p1:9235; GFX6-GISEL: ; %bb.0:9236; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9237; GFX6-GISEL-NEXT: s_mov_b32 s6, 09238; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0009239; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 09240; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr649241; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:169242; GFX6-GISEL-NEXT: s_waitcnt vmcnt(1)9243; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr649244; GFX6-GISEL-NEXT: s_waitcnt vmcnt(1)9245; GFX6-GISEL-NEXT: buffer_store_dwordx2 v[8:9], v[2:3], s[4:7], 0 addr64 offset:169246; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)9247; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]9248;9249; GFX7-SDAG-LABEL: freeze_v3p1:9250; GFX7-SDAG: ; %bb.0:9251; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9252; GFX7-SDAG-NEXT: s_mov_b32 s6, 09253; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0009254; GFX7-SDAG-NEXT: s_mov_b32 s4, s69255; GFX7-SDAG-NEXT: s_mov_b32 s5, s69256; GFX7-SDAG-NEXT: buffer_load_dwordx2 v[8:9], v[0:1], s[4:7], 0 addr64 offset:169257; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr649258; GFX7-SDAG-NEXT: s_waitcnt vmcnt(1)9259; GFX7-SDAG-NEXT: buffer_store_dwordx2 v[8:9], v[2:3], s[4:7], 0 addr64 offset:169260; GFX7-SDAG-NEXT: s_waitcnt vmcnt(1)9261; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr649262; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)9263; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]9264;9265; GFX7-GISEL-LABEL: freeze_v3p1:9266; GFX7-GISEL: ; %bb.0:9267; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9268; GFX7-GISEL-NEXT: s_mov_b32 s6, 09269; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0009270; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 09271; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr649272; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:169273; GFX7-GISEL-NEXT: s_waitcnt vmcnt(1)9274; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr649275; GFX7-GISEL-NEXT: s_waitcnt vmcnt(1)9276; GFX7-GISEL-NEXT: buffer_store_dwordx2 v[8:9], v[2:3], s[4:7], 0 addr64 offset:169277; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)9278; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]9279;9280; GFX8-GISEL-LABEL: freeze_v3p1:9281; GFX8-GISEL: ; %bb.0:9282; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9283; GFX8-GISEL-NEXT: flat_load_dwordx4 v[4:7], v[0:1]9284; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 16, v09285; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v1, vcc9286; GFX8-GISEL-NEXT: flat_load_dwordx4 v[8:11], v[0:1]9287; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 16, v29288; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v3, vcc9289; GFX8-GISEL-NEXT: s_waitcnt vmcnt(1)9290; GFX8-GISEL-NEXT: flat_store_dwordx4 v[2:3], v[4:7]9291; GFX8-GISEL-NEXT: s_waitcnt vmcnt(1)9292; GFX8-GISEL-NEXT: flat_store_dwordx2 v[0:1], v[8:9]9293; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)9294; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]9295;9296; GFX9-GISEL-LABEL: freeze_v3p1:9297; GFX9-GISEL: ; %bb.0:9298; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9299; GFX9-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off9300; GFX9-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:169301; GFX9-GISEL-NEXT: s_waitcnt vmcnt(1)9302; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off9303; GFX9-GISEL-NEXT: s_waitcnt vmcnt(1)9304; GFX9-GISEL-NEXT: global_store_dwordx2 v[2:3], v[8:9], off offset:169305; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)9306; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]9307;9308; GFX10-SDAG-LABEL: freeze_v3p1:9309; GFX10-SDAG: ; %bb.0:9310; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9311; GFX10-SDAG-NEXT: s_clause 0x19312; GFX10-SDAG-NEXT: global_load_dwordx2 v[8:9], v[0:1], off offset:169313; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off9314; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1)9315; GFX10-SDAG-NEXT: global_store_dwordx2 v[2:3], v[8:9], off offset:169316; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)9317; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off9318; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]9319;9320; GFX10-GISEL-LABEL: freeze_v3p1:9321; GFX10-GISEL: ; %bb.0:9322; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9323; GFX10-GISEL-NEXT: s_clause 0x19324; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off9325; GFX10-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:169326; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1)9327; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off9328; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)9329; GFX10-GISEL-NEXT: global_store_dwordx2 v[2:3], v[8:9], off offset:169330; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]9331;9332; GFX11-SDAG-LABEL: freeze_v3p1:9333; GFX11-SDAG: ; %bb.0:9334; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9335; GFX11-SDAG-NEXT: s_clause 0x19336; GFX11-SDAG-NEXT: global_load_b64 v[8:9], v[0:1], off offset:169337; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off9338; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1)9339; GFX11-SDAG-NEXT: global_store_b64 v[2:3], v[8:9], off offset:169340; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0)9341; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off9342; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]9343;9344; GFX11-GISEL-LABEL: freeze_v3p1:9345; GFX11-GISEL: ; %bb.0:9346; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9347; GFX11-GISEL-NEXT: s_clause 0x19348; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off9349; GFX11-GISEL-NEXT: global_load_b128 v[8:11], v[0:1], off offset:169350; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1)9351; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off9352; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)9353; GFX11-GISEL-NEXT: global_store_b64 v[2:3], v[8:9], off offset:169354; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]9355 %a = load <3 x ptr addrspace(1)>, ptr addrspace(1) %ptra9356 %freeze = freeze <3 x ptr addrspace(1)> %a9357 store <3 x ptr addrspace(1)> %freeze, ptr addrspace(1) %ptrb9358 ret void9359}9360 9361define void @freeze_v4p1(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {9362; GFX6-SDAG-LABEL: freeze_v4p1:9363; GFX6-SDAG: ; %bb.0:9364; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9365; GFX6-SDAG-NEXT: s_mov_b32 s6, 09366; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0009367; GFX6-SDAG-NEXT: s_mov_b32 s4, s69368; GFX6-SDAG-NEXT: s_mov_b32 s5, s69369; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:169370; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr649371; GFX6-SDAG-NEXT: s_waitcnt vmcnt(1)9372; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:169373; GFX6-SDAG-NEXT: s_waitcnt vmcnt(1)9374; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr649375; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)9376; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]9377;9378; GFX6-GISEL-LABEL: freeze_v4p1:9379; GFX6-GISEL: ; %bb.0:9380; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9381; GFX6-GISEL-NEXT: s_mov_b32 s6, 09382; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0009383; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 09384; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr649385; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:169386; GFX6-GISEL-NEXT: s_waitcnt vmcnt(1)9387; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr649388; GFX6-GISEL-NEXT: s_waitcnt vmcnt(1)9389; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:169390; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)9391; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]9392;9393; GFX7-SDAG-LABEL: freeze_v4p1:9394; GFX7-SDAG: ; %bb.0:9395; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9396; GFX7-SDAG-NEXT: s_mov_b32 s6, 09397; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0009398; GFX7-SDAG-NEXT: s_mov_b32 s4, s69399; GFX7-SDAG-NEXT: s_mov_b32 s5, s69400; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:169401; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr649402; GFX7-SDAG-NEXT: s_waitcnt vmcnt(1)9403; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:169404; GFX7-SDAG-NEXT: s_waitcnt vmcnt(1)9405; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr649406; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)9407; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]9408;9409; GFX7-GISEL-LABEL: freeze_v4p1:9410; GFX7-GISEL: ; %bb.0:9411; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9412; GFX7-GISEL-NEXT: s_mov_b32 s6, 09413; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0009414; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 09415; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr649416; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:169417; GFX7-GISEL-NEXT: s_waitcnt vmcnt(1)9418; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr649419; GFX7-GISEL-NEXT: s_waitcnt vmcnt(1)9420; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:169421; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)9422; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]9423;9424; GFX8-GISEL-LABEL: freeze_v4p1:9425; GFX8-GISEL: ; %bb.0:9426; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9427; GFX8-GISEL-NEXT: flat_load_dwordx4 v[4:7], v[0:1]9428; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 16, v09429; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v1, vcc9430; GFX8-GISEL-NEXT: flat_load_dwordx4 v[8:11], v[0:1]9431; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 16, v29432; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v3, vcc9433; GFX8-GISEL-NEXT: s_waitcnt vmcnt(1)9434; GFX8-GISEL-NEXT: flat_store_dwordx4 v[2:3], v[4:7]9435; GFX8-GISEL-NEXT: s_waitcnt vmcnt(1)9436; GFX8-GISEL-NEXT: flat_store_dwordx4 v[0:1], v[8:11]9437; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)9438; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]9439;9440; GFX9-GISEL-LABEL: freeze_v4p1:9441; GFX9-GISEL: ; %bb.0:9442; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9443; GFX9-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off9444; GFX9-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:169445; GFX9-GISEL-NEXT: s_waitcnt vmcnt(1)9446; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off9447; GFX9-GISEL-NEXT: s_waitcnt vmcnt(1)9448; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:169449; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)9450; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]9451;9452; GFX10-SDAG-LABEL: freeze_v4p1:9453; GFX10-SDAG: ; %bb.0:9454; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9455; GFX10-SDAG-NEXT: s_clause 0x19456; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off offset:169457; GFX10-SDAG-NEXT: global_load_dwordx4 v[8:11], v[0:1], off9458; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1)9459; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off offset:169460; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)9461; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[8:11], off9462; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]9463;9464; GFX10-GISEL-LABEL: freeze_v4p1:9465; GFX10-GISEL: ; %bb.0:9466; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9467; GFX10-GISEL-NEXT: s_clause 0x19468; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off9469; GFX10-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:169470; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1)9471; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off9472; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)9473; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:169474; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]9475;9476; GFX11-SDAG-LABEL: freeze_v4p1:9477; GFX11-SDAG: ; %bb.0:9478; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9479; GFX11-SDAG-NEXT: s_clause 0x19480; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off offset:169481; GFX11-SDAG-NEXT: global_load_b128 v[8:11], v[0:1], off9482; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1)9483; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off offset:169484; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0)9485; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[8:11], off9486; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]9487;9488; GFX11-GISEL-LABEL: freeze_v4p1:9489; GFX11-GISEL: ; %bb.0:9490; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9491; GFX11-GISEL-NEXT: s_clause 0x19492; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off9493; GFX11-GISEL-NEXT: global_load_b128 v[8:11], v[0:1], off offset:169494; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1)9495; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off9496; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)9497; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[8:11], off offset:169498; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]9499 %a = load <4 x ptr addrspace(1)>, ptr addrspace(1) %ptra9500 %freeze = freeze <4 x ptr addrspace(1)> %a9501 store <4 x ptr addrspace(1)> %freeze, ptr addrspace(1) %ptrb9502 ret void9503}9504 9505define void @freeze_v8p1(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {9506; GFX6-SDAG-LABEL: freeze_v8p1:9507; GFX6-SDAG: ; %bb.0:9508; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9509; GFX6-SDAG-NEXT: s_mov_b32 s6, 09510; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0009511; GFX6-SDAG-NEXT: s_mov_b32 s4, s69512; GFX6-SDAG-NEXT: s_mov_b32 s5, s69513; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:329514; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:489515; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr649516; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:169517; GFX6-SDAG-NEXT: s_waitcnt vmcnt(3)9518; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:329519; GFX6-SDAG-NEXT: s_waitcnt vmcnt(3)9520; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:489521; GFX6-SDAG-NEXT: s_waitcnt vmcnt(3)9522; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr649523; GFX6-SDAG-NEXT: s_waitcnt vmcnt(3)9524; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:169525; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)9526; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]9527;9528; GFX6-GISEL-LABEL: freeze_v8p1:9529; GFX6-GISEL: ; %bb.0:9530; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9531; GFX6-GISEL-NEXT: s_mov_b32 s6, 09532; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0009533; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 09534; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr649535; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:169536; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:329537; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:489538; GFX6-GISEL-NEXT: s_waitcnt vmcnt(3)9539; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr649540; GFX6-GISEL-NEXT: s_waitcnt vmcnt(3)9541; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:169542; GFX6-GISEL-NEXT: s_waitcnt vmcnt(3)9543; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:329544; GFX6-GISEL-NEXT: s_waitcnt vmcnt(3)9545; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:489546; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)9547; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]9548;9549; GFX7-SDAG-LABEL: freeze_v8p1:9550; GFX7-SDAG: ; %bb.0:9551; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9552; GFX7-SDAG-NEXT: s_mov_b32 s6, 09553; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0009554; GFX7-SDAG-NEXT: s_mov_b32 s4, s69555; GFX7-SDAG-NEXT: s_mov_b32 s5, s69556; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:329557; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:489558; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr649559; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:169560; GFX7-SDAG-NEXT: s_waitcnt vmcnt(3)9561; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:329562; GFX7-SDAG-NEXT: s_waitcnt vmcnt(3)9563; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:489564; GFX7-SDAG-NEXT: s_waitcnt vmcnt(3)9565; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr649566; GFX7-SDAG-NEXT: s_waitcnt vmcnt(3)9567; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:169568; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)9569; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]9570;9571; GFX7-GISEL-LABEL: freeze_v8p1:9572; GFX7-GISEL: ; %bb.0:9573; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9574; GFX7-GISEL-NEXT: s_mov_b32 s6, 09575; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0009576; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 09577; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr649578; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:169579; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:329580; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:489581; GFX7-GISEL-NEXT: s_waitcnt vmcnt(3)9582; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr649583; GFX7-GISEL-NEXT: s_waitcnt vmcnt(3)9584; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:169585; GFX7-GISEL-NEXT: s_waitcnt vmcnt(3)9586; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:329587; GFX7-GISEL-NEXT: s_waitcnt vmcnt(3)9588; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:489589; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)9590; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]9591;9592; GFX8-GISEL-LABEL: freeze_v8p1:9593; GFX8-GISEL: ; %bb.0:9594; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9595; GFX8-GISEL-NEXT: v_add_u32_e32 v8, vcc, 16, v09596; GFX8-GISEL-NEXT: v_addc_u32_e32 v9, vcc, 0, v1, vcc9597; GFX8-GISEL-NEXT: v_add_u32_e32 v12, vcc, 32, v09598; GFX8-GISEL-NEXT: flat_load_dwordx4 v[4:7], v[0:1]9599; GFX8-GISEL-NEXT: flat_load_dwordx4 v[8:11], v[8:9]9600; GFX8-GISEL-NEXT: v_addc_u32_e32 v13, vcc, 0, v1, vcc9601; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 48, v09602; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v1, vcc9603; GFX8-GISEL-NEXT: flat_load_dwordx4 v[12:15], v[12:13]9604; GFX8-GISEL-NEXT: flat_load_dwordx4 v[16:19], v[0:1]9605; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 16, v29606; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v3, vcc9607; GFX8-GISEL-NEXT: s_waitcnt vmcnt(3)9608; GFX8-GISEL-NEXT: flat_store_dwordx4 v[2:3], v[4:7]9609; GFX8-GISEL-NEXT: s_nop 09610; GFX8-GISEL-NEXT: v_add_u32_e32 v4, vcc, 32, v29611; GFX8-GISEL-NEXT: v_addc_u32_e32 v5, vcc, 0, v3, vcc9612; GFX8-GISEL-NEXT: v_add_u32_e32 v2, vcc, 48, v29613; GFX8-GISEL-NEXT: v_addc_u32_e32 v3, vcc, 0, v3, vcc9614; GFX8-GISEL-NEXT: s_waitcnt vmcnt(3)9615; GFX8-GISEL-NEXT: flat_store_dwordx4 v[0:1], v[8:11]9616; GFX8-GISEL-NEXT: s_waitcnt vmcnt(3)9617; GFX8-GISEL-NEXT: flat_store_dwordx4 v[4:5], v[12:15]9618; GFX8-GISEL-NEXT: s_waitcnt vmcnt(3)9619; GFX8-GISEL-NEXT: flat_store_dwordx4 v[2:3], v[16:19]9620; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)9621; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]9622;9623; GFX9-GISEL-LABEL: freeze_v8p1:9624; GFX9-GISEL: ; %bb.0:9625; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9626; GFX9-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off9627; GFX9-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:169628; GFX9-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:329629; GFX9-GISEL-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:489630; GFX9-GISEL-NEXT: s_waitcnt vmcnt(3)9631; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off9632; GFX9-GISEL-NEXT: s_waitcnt vmcnt(3)9633; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:169634; GFX9-GISEL-NEXT: s_waitcnt vmcnt(3)9635; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:329636; GFX9-GISEL-NEXT: s_waitcnt vmcnt(3)9637; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:489638; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)9639; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]9640;9641; GFX10-SDAG-LABEL: freeze_v8p1:9642; GFX10-SDAG: ; %bb.0:9643; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9644; GFX10-SDAG-NEXT: s_clause 0x39645; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off offset:329646; GFX10-SDAG-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:489647; GFX10-SDAG-NEXT: global_load_dwordx4 v[12:15], v[0:1], off9648; GFX10-SDAG-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:169649; GFX10-SDAG-NEXT: s_waitcnt vmcnt(3)9650; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off offset:329651; GFX10-SDAG-NEXT: s_waitcnt vmcnt(2)9652; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:489653; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1)9654; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[12:15], off9655; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)9656; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:169657; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]9658;9659; GFX10-GISEL-LABEL: freeze_v8p1:9660; GFX10-GISEL: ; %bb.0:9661; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9662; GFX10-GISEL-NEXT: s_clause 0x39663; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off9664; GFX10-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:169665; GFX10-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:329666; GFX10-GISEL-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:489667; GFX10-GISEL-NEXT: s_waitcnt vmcnt(3)9668; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off9669; GFX10-GISEL-NEXT: s_waitcnt vmcnt(2)9670; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:169671; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1)9672; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:329673; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)9674; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:489675; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]9676;9677; GFX11-SDAG-LABEL: freeze_v8p1:9678; GFX11-SDAG: ; %bb.0:9679; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9680; GFX11-SDAG-NEXT: s_clause 0x39681; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off offset:329682; GFX11-SDAG-NEXT: global_load_b128 v[8:11], v[0:1], off offset:489683; GFX11-SDAG-NEXT: global_load_b128 v[12:15], v[0:1], off9684; GFX11-SDAG-NEXT: global_load_b128 v[16:19], v[0:1], off offset:169685; GFX11-SDAG-NEXT: s_waitcnt vmcnt(3)9686; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off offset:329687; GFX11-SDAG-NEXT: s_waitcnt vmcnt(2)9688; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[8:11], off offset:489689; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1)9690; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[12:15], off9691; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0)9692; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[16:19], off offset:169693; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]9694;9695; GFX11-GISEL-LABEL: freeze_v8p1:9696; GFX11-GISEL: ; %bb.0:9697; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9698; GFX11-GISEL-NEXT: s_clause 0x39699; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off9700; GFX11-GISEL-NEXT: global_load_b128 v[8:11], v[0:1], off offset:169701; GFX11-GISEL-NEXT: global_load_b128 v[12:15], v[0:1], off offset:329702; GFX11-GISEL-NEXT: global_load_b128 v[16:19], v[0:1], off offset:489703; GFX11-GISEL-NEXT: s_waitcnt vmcnt(3)9704; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off9705; GFX11-GISEL-NEXT: s_waitcnt vmcnt(2)9706; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[8:11], off offset:169707; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1)9708; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[12:15], off offset:329709; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)9710; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[16:19], off offset:489711; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]9712 %a = load <8 x ptr addrspace(1)>, ptr addrspace(1) %ptra9713 %freeze = freeze <8 x ptr addrspace(1)> %a9714 store <8 x ptr addrspace(1)> %freeze, ptr addrspace(1) %ptrb9715 ret void9716}9717 9718define void @freeze_v16p1(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {9719; GFX6-SDAG-LABEL: freeze_v16p1:9720; GFX6-SDAG: ; %bb.0:9721; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9722; GFX6-SDAG-NEXT: s_mov_b32 s6, 09723; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf0009724; GFX6-SDAG-NEXT: s_mov_b32 s4, s69725; GFX6-SDAG-NEXT: s_mov_b32 s5, s69726; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:969727; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:1129728; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:649729; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:809730; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[20:23], v[0:1], s[4:7], 0 addr64 offset:329731; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[24:27], v[0:1], s[4:7], 0 addr64 offset:489732; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[28:31], v[0:1], s[4:7], 0 addr649733; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[32:35], v[0:1], s[4:7], 0 addr64 offset:169734; GFX6-SDAG-NEXT: s_waitcnt vmcnt(7)9735; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:969736; GFX6-SDAG-NEXT: s_waitcnt vmcnt(7)9737; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:1129738; GFX6-SDAG-NEXT: s_waitcnt vmcnt(7)9739; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:649740; GFX6-SDAG-NEXT: s_waitcnt vmcnt(7)9741; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:809742; GFX6-SDAG-NEXT: s_waitcnt vmcnt(7)9743; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[20:23], v[2:3], s[4:7], 0 addr64 offset:329744; GFX6-SDAG-NEXT: s_waitcnt vmcnt(7)9745; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[24:27], v[2:3], s[4:7], 0 addr64 offset:489746; GFX6-SDAG-NEXT: s_waitcnt vmcnt(7)9747; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[28:31], v[2:3], s[4:7], 0 addr649748; GFX6-SDAG-NEXT: s_waitcnt vmcnt(7)9749; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[32:35], v[2:3], s[4:7], 0 addr64 offset:169750; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)9751; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]9752;9753; GFX6-GISEL-LABEL: freeze_v16p1:9754; GFX6-GISEL: ; %bb.0:9755; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9756; GFX6-GISEL-NEXT: s_mov_b32 s6, 09757; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf0009758; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 09759; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr649760; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:169761; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:329762; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:489763; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[20:23], v[0:1], s[4:7], 0 addr64 offset:649764; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[24:27], v[0:1], s[4:7], 0 addr64 offset:809765; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[28:31], v[0:1], s[4:7], 0 addr64 offset:969766; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[32:35], v[0:1], s[4:7], 0 addr64 offset:1129767; GFX6-GISEL-NEXT: s_waitcnt vmcnt(7)9768; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr649769; GFX6-GISEL-NEXT: s_waitcnt vmcnt(7)9770; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:169771; GFX6-GISEL-NEXT: s_waitcnt vmcnt(7)9772; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:329773; GFX6-GISEL-NEXT: s_waitcnt vmcnt(7)9774; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:489775; GFX6-GISEL-NEXT: s_waitcnt vmcnt(7)9776; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[20:23], v[2:3], s[4:7], 0 addr64 offset:649777; GFX6-GISEL-NEXT: s_waitcnt vmcnt(7)9778; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[24:27], v[2:3], s[4:7], 0 addr64 offset:809779; GFX6-GISEL-NEXT: s_waitcnt vmcnt(7)9780; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[28:31], v[2:3], s[4:7], 0 addr64 offset:969781; GFX6-GISEL-NEXT: s_waitcnt vmcnt(7)9782; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[32:35], v[2:3], s[4:7], 0 addr64 offset:1129783; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)9784; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]9785;9786; GFX7-SDAG-LABEL: freeze_v16p1:9787; GFX7-SDAG: ; %bb.0:9788; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9789; GFX7-SDAG-NEXT: s_mov_b32 s6, 09790; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf0009791; GFX7-SDAG-NEXT: s_mov_b32 s4, s69792; GFX7-SDAG-NEXT: s_mov_b32 s5, s69793; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr64 offset:969794; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:1129795; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:649796; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:809797; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[20:23], v[0:1], s[4:7], 0 addr64 offset:329798; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[24:27], v[0:1], s[4:7], 0 addr64 offset:489799; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[28:31], v[0:1], s[4:7], 0 addr649800; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[32:35], v[0:1], s[4:7], 0 addr64 offset:169801; GFX7-SDAG-NEXT: s_waitcnt vmcnt(7)9802; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr64 offset:969803; GFX7-SDAG-NEXT: s_waitcnt vmcnt(7)9804; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:1129805; GFX7-SDAG-NEXT: s_waitcnt vmcnt(7)9806; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:649807; GFX7-SDAG-NEXT: s_waitcnt vmcnt(7)9808; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:809809; GFX7-SDAG-NEXT: s_waitcnt vmcnt(7)9810; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[20:23], v[2:3], s[4:7], 0 addr64 offset:329811; GFX7-SDAG-NEXT: s_waitcnt vmcnt(7)9812; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[24:27], v[2:3], s[4:7], 0 addr64 offset:489813; GFX7-SDAG-NEXT: s_waitcnt vmcnt(7)9814; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[28:31], v[2:3], s[4:7], 0 addr649815; GFX7-SDAG-NEXT: s_waitcnt vmcnt(7)9816; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[32:35], v[2:3], s[4:7], 0 addr64 offset:169817; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)9818; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]9819;9820; GFX7-GISEL-LABEL: freeze_v16p1:9821; GFX7-GISEL: ; %bb.0:9822; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9823; GFX7-GISEL-NEXT: s_mov_b32 s6, 09824; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf0009825; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 09826; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr649827; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[8:11], v[0:1], s[4:7], 0 addr64 offset:169828; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[12:15], v[0:1], s[4:7], 0 addr64 offset:329829; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[16:19], v[0:1], s[4:7], 0 addr64 offset:489830; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[20:23], v[0:1], s[4:7], 0 addr64 offset:649831; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[24:27], v[0:1], s[4:7], 0 addr64 offset:809832; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[28:31], v[0:1], s[4:7], 0 addr64 offset:969833; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[32:35], v[0:1], s[4:7], 0 addr64 offset:1129834; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)9835; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr649836; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)9837; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[8:11], v[2:3], s[4:7], 0 addr64 offset:169838; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)9839; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[12:15], v[2:3], s[4:7], 0 addr64 offset:329840; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)9841; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[16:19], v[2:3], s[4:7], 0 addr64 offset:489842; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)9843; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[20:23], v[2:3], s[4:7], 0 addr64 offset:649844; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)9845; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[24:27], v[2:3], s[4:7], 0 addr64 offset:809846; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)9847; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[28:31], v[2:3], s[4:7], 0 addr64 offset:969848; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)9849; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[32:35], v[2:3], s[4:7], 0 addr64 offset:1129850; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)9851; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]9852;9853; GFX8-GISEL-LABEL: freeze_v16p1:9854; GFX8-GISEL: ; %bb.0:9855; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9856; GFX8-GISEL-NEXT: v_add_u32_e32 v4, vcc, 16, v09857; GFX8-GISEL-NEXT: v_addc_u32_e32 v5, vcc, 0, v1, vcc9858; GFX8-GISEL-NEXT: v_add_u32_e32 v12, vcc, 32, v09859; GFX8-GISEL-NEXT: v_addc_u32_e32 v13, vcc, 0, v1, vcc9860; GFX8-GISEL-NEXT: v_add_u32_e32 v16, vcc, 48, v09861; GFX8-GISEL-NEXT: v_addc_u32_e32 v17, vcc, 0, v1, vcc9862; GFX8-GISEL-NEXT: v_add_u32_e32 v20, vcc, 64, v09863; GFX8-GISEL-NEXT: flat_load_dwordx4 v[4:7], v[4:5]9864; GFX8-GISEL-NEXT: flat_load_dwordx4 v[8:11], v[0:1]9865; GFX8-GISEL-NEXT: v_addc_u32_e32 v21, vcc, 0, v1, vcc9866; GFX8-GISEL-NEXT: v_mov_b32_e32 v38, 0x509867; GFX8-GISEL-NEXT: v_add_u32_e32 v24, vcc, v0, v389868; GFX8-GISEL-NEXT: v_addc_u32_e32 v25, vcc, 0, v1, vcc9869; GFX8-GISEL-NEXT: v_mov_b32_e32 v14, 0x609870; GFX8-GISEL-NEXT: v_add_u32_e32 v28, vcc, v0, v149871; GFX8-GISEL-NEXT: v_addc_u32_e32 v29, vcc, 0, v1, vcc9872; GFX8-GISEL-NEXT: v_mov_b32_e32 v14, 0x709873; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, v0, v149874; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v1, vcc9875; GFX8-GISEL-NEXT: flat_load_dwordx4 v[12:15], v[12:13]9876; GFX8-GISEL-NEXT: flat_load_dwordx4 v[16:19], v[16:17]9877; GFX8-GISEL-NEXT: flat_load_dwordx4 v[20:23], v[20:21]9878; GFX8-GISEL-NEXT: flat_load_dwordx4 v[24:27], v[24:25]9879; GFX8-GISEL-NEXT: flat_load_dwordx4 v[28:31], v[28:29]9880; GFX8-GISEL-NEXT: flat_load_dwordx4 v[32:35], v[0:1]9881; GFX8-GISEL-NEXT: v_add_u32_e32 v36, vcc, 16, v29882; GFX8-GISEL-NEXT: v_addc_u32_e32 v37, vcc, 0, v3, vcc9883; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 32, v29884; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v3, vcc9885; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)9886; GFX8-GISEL-NEXT: flat_store_dwordx4 v[36:37], v[4:7]9887; GFX8-GISEL-NEXT: s_nop 09888; GFX8-GISEL-NEXT: v_add_u32_e32 v4, vcc, 48, v29889; GFX8-GISEL-NEXT: v_addc_u32_e32 v5, vcc, 0, v3, vcc9890; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)9891; GFX8-GISEL-NEXT: flat_store_dwordx4 v[2:3], v[8:11]9892; GFX8-GISEL-NEXT: v_add_u32_e32 v6, vcc, v2, v389893; GFX8-GISEL-NEXT: v_add_u32_e64 v8, s[4:5], 64, v29894; GFX8-GISEL-NEXT: v_addc_u32_e64 v9, s[4:5], 0, v3, s[4:5]9895; GFX8-GISEL-NEXT: s_mov_b64 s[4:5], vcc9896; GFX8-GISEL-NEXT: v_add_u32_e32 v10, vcc, 0x60, v29897; GFX8-GISEL-NEXT: v_addc_u32_e32 v11, vcc, 0, v3, vcc9898; GFX8-GISEL-NEXT: v_add_u32_e32 v2, vcc, 0x70, v29899; GFX8-GISEL-NEXT: v_addc_u32_e64 v7, s[4:5], 0, v3, s[4:5]9900; GFX8-GISEL-NEXT: v_addc_u32_e32 v3, vcc, 0, v3, vcc9901; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)9902; GFX8-GISEL-NEXT: flat_store_dwordx4 v[0:1], v[12:15]9903; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)9904; GFX8-GISEL-NEXT: flat_store_dwordx4 v[4:5], v[16:19]9905; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)9906; GFX8-GISEL-NEXT: flat_store_dwordx4 v[8:9], v[20:23]9907; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)9908; GFX8-GISEL-NEXT: flat_store_dwordx4 v[6:7], v[24:27]9909; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)9910; GFX8-GISEL-NEXT: flat_store_dwordx4 v[10:11], v[28:31]9911; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)9912; GFX8-GISEL-NEXT: flat_store_dwordx4 v[2:3], v[32:35]9913; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)9914; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]9915;9916; GFX9-GISEL-LABEL: freeze_v16p1:9917; GFX9-GISEL: ; %bb.0:9918; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9919; GFX9-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off9920; GFX9-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:169921; GFX9-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:329922; GFX9-GISEL-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:489923; GFX9-GISEL-NEXT: global_load_dwordx4 v[20:23], v[0:1], off offset:649924; GFX9-GISEL-NEXT: global_load_dwordx4 v[24:27], v[0:1], off offset:809925; GFX9-GISEL-NEXT: global_load_dwordx4 v[28:31], v[0:1], off offset:969926; GFX9-GISEL-NEXT: global_load_dwordx4 v[32:35], v[0:1], off offset:1129927; GFX9-GISEL-NEXT: s_waitcnt vmcnt(7)9928; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off9929; GFX9-GISEL-NEXT: s_waitcnt vmcnt(7)9930; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:169931; GFX9-GISEL-NEXT: s_waitcnt vmcnt(7)9932; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:329933; GFX9-GISEL-NEXT: s_waitcnt vmcnt(7)9934; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:489935; GFX9-GISEL-NEXT: s_waitcnt vmcnt(7)9936; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[20:23], off offset:649937; GFX9-GISEL-NEXT: s_waitcnt vmcnt(7)9938; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[24:27], off offset:809939; GFX9-GISEL-NEXT: s_waitcnt vmcnt(7)9940; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[28:31], off offset:969941; GFX9-GISEL-NEXT: s_waitcnt vmcnt(7)9942; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[32:35], off offset:1129943; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)9944; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]9945;9946; GFX10-SDAG-LABEL: freeze_v16p1:9947; GFX10-SDAG: ; %bb.0:9948; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9949; GFX10-SDAG-NEXT: s_clause 0x79950; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off offset:969951; GFX10-SDAG-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:1129952; GFX10-SDAG-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:649953; GFX10-SDAG-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:809954; GFX10-SDAG-NEXT: global_load_dwordx4 v[20:23], v[0:1], off offset:329955; GFX10-SDAG-NEXT: global_load_dwordx4 v[24:27], v[0:1], off offset:489956; GFX10-SDAG-NEXT: global_load_dwordx4 v[28:31], v[0:1], off9957; GFX10-SDAG-NEXT: global_load_dwordx4 v[32:35], v[0:1], off offset:169958; GFX10-SDAG-NEXT: s_waitcnt vmcnt(7)9959; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off offset:969960; GFX10-SDAG-NEXT: s_waitcnt vmcnt(6)9961; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:1129962; GFX10-SDAG-NEXT: s_waitcnt vmcnt(5)9963; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:649964; GFX10-SDAG-NEXT: s_waitcnt vmcnt(4)9965; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:809966; GFX10-SDAG-NEXT: s_waitcnt vmcnt(3)9967; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[20:23], off offset:329968; GFX10-SDAG-NEXT: s_waitcnt vmcnt(2)9969; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[24:27], off offset:489970; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1)9971; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[28:31], off9972; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)9973; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[32:35], off offset:169974; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]9975;9976; GFX10-GISEL-LABEL: freeze_v16p1:9977; GFX10-GISEL: ; %bb.0:9978; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9979; GFX10-GISEL-NEXT: s_clause 0x79980; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off9981; GFX10-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:169982; GFX10-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:329983; GFX10-GISEL-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:489984; GFX10-GISEL-NEXT: global_load_dwordx4 v[20:23], v[0:1], off offset:649985; GFX10-GISEL-NEXT: global_load_dwordx4 v[24:27], v[0:1], off offset:809986; GFX10-GISEL-NEXT: global_load_dwordx4 v[28:31], v[0:1], off offset:969987; GFX10-GISEL-NEXT: global_load_dwordx4 v[32:35], v[0:1], off offset:1129988; GFX10-GISEL-NEXT: s_waitcnt vmcnt(7)9989; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off9990; GFX10-GISEL-NEXT: s_waitcnt vmcnt(6)9991; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:169992; GFX10-GISEL-NEXT: s_waitcnt vmcnt(5)9993; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:329994; GFX10-GISEL-NEXT: s_waitcnt vmcnt(4)9995; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:489996; GFX10-GISEL-NEXT: s_waitcnt vmcnt(3)9997; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[20:23], off offset:649998; GFX10-GISEL-NEXT: s_waitcnt vmcnt(2)9999; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[24:27], off offset:8010000; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1)10001; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[28:31], off offset:9610002; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)10003; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[32:35], off offset:11210004; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]10005;10006; GFX11-SDAG-LABEL: freeze_v16p1:10007; GFX11-SDAG: ; %bb.0:10008; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10009; GFX11-SDAG-NEXT: s_clause 0x710010; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off offset:9610011; GFX11-SDAG-NEXT: global_load_b128 v[8:11], v[0:1], off offset:11210012; GFX11-SDAG-NEXT: global_load_b128 v[12:15], v[0:1], off offset:6410013; GFX11-SDAG-NEXT: global_load_b128 v[16:19], v[0:1], off offset:8010014; GFX11-SDAG-NEXT: global_load_b128 v[20:23], v[0:1], off offset:3210015; GFX11-SDAG-NEXT: global_load_b128 v[24:27], v[0:1], off offset:4810016; GFX11-SDAG-NEXT: global_load_b128 v[28:31], v[0:1], off10017; GFX11-SDAG-NEXT: global_load_b128 v[32:35], v[0:1], off offset:1610018; GFX11-SDAG-NEXT: s_waitcnt vmcnt(7)10019; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off offset:9610020; GFX11-SDAG-NEXT: s_waitcnt vmcnt(6)10021; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[8:11], off offset:11210022; GFX11-SDAG-NEXT: s_waitcnt vmcnt(5)10023; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[12:15], off offset:6410024; GFX11-SDAG-NEXT: s_waitcnt vmcnt(4)10025; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[16:19], off offset:8010026; GFX11-SDAG-NEXT: s_waitcnt vmcnt(3)10027; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[20:23], off offset:3210028; GFX11-SDAG-NEXT: s_waitcnt vmcnt(2)10029; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[24:27], off offset:4810030; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1)10031; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[28:31], off10032; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0)10033; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[32:35], off offset:1610034; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]10035;10036; GFX11-GISEL-LABEL: freeze_v16p1:10037; GFX11-GISEL: ; %bb.0:10038; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10039; GFX11-GISEL-NEXT: s_clause 0x710040; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off10041; GFX11-GISEL-NEXT: global_load_b128 v[8:11], v[0:1], off offset:1610042; GFX11-GISEL-NEXT: global_load_b128 v[12:15], v[0:1], off offset:3210043; GFX11-GISEL-NEXT: global_load_b128 v[16:19], v[0:1], off offset:4810044; GFX11-GISEL-NEXT: global_load_b128 v[20:23], v[0:1], off offset:6410045; GFX11-GISEL-NEXT: global_load_b128 v[24:27], v[0:1], off offset:8010046; GFX11-GISEL-NEXT: global_load_b128 v[28:31], v[0:1], off offset:9610047; GFX11-GISEL-NEXT: global_load_b128 v[32:35], v[0:1], off offset:11210048; GFX11-GISEL-NEXT: s_waitcnt vmcnt(7)10049; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off10050; GFX11-GISEL-NEXT: s_waitcnt vmcnt(6)10051; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[8:11], off offset:1610052; GFX11-GISEL-NEXT: s_waitcnt vmcnt(5)10053; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[12:15], off offset:3210054; GFX11-GISEL-NEXT: s_waitcnt vmcnt(4)10055; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[16:19], off offset:4810056; GFX11-GISEL-NEXT: s_waitcnt vmcnt(3)10057; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[20:23], off offset:6410058; GFX11-GISEL-NEXT: s_waitcnt vmcnt(2)10059; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[24:27], off offset:8010060; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1)10061; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[28:31], off offset:9610062; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)10063; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[32:35], off offset:11210064; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]10065 %a = load <16 x ptr addrspace(1)>, ptr addrspace(1) %ptra10066 %freeze = freeze <16 x ptr addrspace(1)> %a10067 store <16 x ptr addrspace(1)> %freeze, ptr addrspace(1) %ptrb10068 ret void10069}10070 10071define void @freeze_p3(ptr addrspace(3) %ptra, ptr addrspace(3) %ptrb) {10072; GFX6-LABEL: freeze_p3:10073; GFX6: ; %bb.0:10074; GFX6-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10075; GFX6-NEXT: s_mov_b32 m0, -110076; GFX6-NEXT: ds_read_b32 v0, v010077; GFX6-NEXT: s_waitcnt lgkmcnt(0)10078; GFX6-NEXT: ds_write_b32 v1, v010079; GFX6-NEXT: s_waitcnt lgkmcnt(0)10080; GFX6-NEXT: s_setpc_b64 s[30:31]10081;10082; GFX7-LABEL: freeze_p3:10083; GFX7: ; %bb.0:10084; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10085; GFX7-NEXT: s_mov_b32 m0, -110086; GFX7-NEXT: ds_read_b32 v0, v010087; GFX7-NEXT: s_waitcnt lgkmcnt(0)10088; GFX7-NEXT: ds_write_b32 v1, v010089; GFX7-NEXT: s_waitcnt lgkmcnt(0)10090; GFX7-NEXT: s_setpc_b64 s[30:31]10091;10092; GFX8-LABEL: freeze_p3:10093; GFX8: ; %bb.0:10094; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10095; GFX8-NEXT: s_mov_b32 m0, -110096; GFX8-NEXT: ds_read_b32 v0, v010097; GFX8-NEXT: s_waitcnt lgkmcnt(0)10098; GFX8-NEXT: ds_write_b32 v1, v010099; GFX8-NEXT: s_waitcnt lgkmcnt(0)10100; GFX8-NEXT: s_setpc_b64 s[30:31]10101;10102; GFX9-LABEL: freeze_p3:10103; GFX9: ; %bb.0:10104; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10105; GFX9-NEXT: ds_read_b32 v0, v010106; GFX9-NEXT: s_waitcnt lgkmcnt(0)10107; GFX9-NEXT: ds_write_b32 v1, v010108; GFX9-NEXT: s_waitcnt lgkmcnt(0)10109; GFX9-NEXT: s_setpc_b64 s[30:31]10110;10111; GFX10-LABEL: freeze_p3:10112; GFX10: ; %bb.0:10113; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10114; GFX10-NEXT: ds_read_b32 v0, v010115; GFX10-NEXT: s_waitcnt lgkmcnt(0)10116; GFX10-NEXT: ds_write_b32 v1, v010117; GFX10-NEXT: s_waitcnt lgkmcnt(0)10118; GFX10-NEXT: s_setpc_b64 s[30:31]10119;10120; GFX11-LABEL: freeze_p3:10121; GFX11: ; %bb.0:10122; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10123; GFX11-NEXT: ds_load_b32 v0, v010124; GFX11-NEXT: s_waitcnt lgkmcnt(0)10125; GFX11-NEXT: ds_store_b32 v1, v010126; GFX11-NEXT: s_waitcnt lgkmcnt(0)10127; GFX11-NEXT: s_setpc_b64 s[30:31]10128 %a = load ptr addrspace(3), ptr addrspace(3) %ptra10129 %freeze = freeze ptr addrspace(3) %a10130 store ptr addrspace(3) %freeze, ptr addrspace(3) %ptrb10131 ret void10132}10133 10134define void @freeze_v2p3(ptr addrspace(3) %ptra, ptr addrspace(3) %ptrb) {10135; GFX6-LABEL: freeze_v2p3:10136; GFX6: ; %bb.0:10137; GFX6-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10138; GFX6-NEXT: s_mov_b32 m0, -110139; GFX6-NEXT: ds_read_b64 v[2:3], v010140; GFX6-NEXT: s_waitcnt lgkmcnt(0)10141; GFX6-NEXT: ds_write_b64 v1, v[2:3]10142; GFX6-NEXT: s_waitcnt lgkmcnt(0)10143; GFX6-NEXT: s_setpc_b64 s[30:31]10144;10145; GFX7-LABEL: freeze_v2p3:10146; GFX7: ; %bb.0:10147; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10148; GFX7-NEXT: s_mov_b32 m0, -110149; GFX7-NEXT: ds_read_b64 v[2:3], v010150; GFX7-NEXT: s_waitcnt lgkmcnt(0)10151; GFX7-NEXT: ds_write_b64 v1, v[2:3]10152; GFX7-NEXT: s_waitcnt lgkmcnt(0)10153; GFX7-NEXT: s_setpc_b64 s[30:31]10154;10155; GFX8-LABEL: freeze_v2p3:10156; GFX8: ; %bb.0:10157; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10158; GFX8-NEXT: s_mov_b32 m0, -110159; GFX8-NEXT: ds_read_b64 v[2:3], v010160; GFX8-NEXT: s_waitcnt lgkmcnt(0)10161; GFX8-NEXT: ds_write_b64 v1, v[2:3]10162; GFX8-NEXT: s_waitcnt lgkmcnt(0)10163; GFX8-NEXT: s_setpc_b64 s[30:31]10164;10165; GFX9-LABEL: freeze_v2p3:10166; GFX9: ; %bb.0:10167; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10168; GFX9-NEXT: ds_read_b64 v[2:3], v010169; GFX9-NEXT: s_waitcnt lgkmcnt(0)10170; GFX9-NEXT: ds_write_b64 v1, v[2:3]10171; GFX9-NEXT: s_waitcnt lgkmcnt(0)10172; GFX9-NEXT: s_setpc_b64 s[30:31]10173;10174; GFX10-LABEL: freeze_v2p3:10175; GFX10: ; %bb.0:10176; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10177; GFX10-NEXT: ds_read_b64 v[2:3], v010178; GFX10-NEXT: s_waitcnt lgkmcnt(0)10179; GFX10-NEXT: ds_write_b64 v1, v[2:3]10180; GFX10-NEXT: s_waitcnt lgkmcnt(0)10181; GFX10-NEXT: s_setpc_b64 s[30:31]10182;10183; GFX11-LABEL: freeze_v2p3:10184; GFX11: ; %bb.0:10185; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10186; GFX11-NEXT: ds_load_b64 v[2:3], v010187; GFX11-NEXT: s_waitcnt lgkmcnt(0)10188; GFX11-NEXT: ds_store_b64 v1, v[2:3]10189; GFX11-NEXT: s_waitcnt lgkmcnt(0)10190; GFX11-NEXT: s_setpc_b64 s[30:31]10191 %a = load <2 x ptr addrspace(3)>, ptr addrspace(3) %ptra10192 %freeze = freeze <2 x ptr addrspace(3)> %a10193 store <2 x ptr addrspace(3)> %freeze, ptr addrspace(3) %ptrb10194 ret void10195}10196 10197define void @freeze_v3p3(ptr addrspace(3) %ptra, ptr addrspace(3) %ptrb) {10198; GFX6-SDAG-LABEL: freeze_v3p3:10199; GFX6-SDAG: ; %bb.0:10200; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10201; GFX6-SDAG-NEXT: v_add_i32_e32 v2, vcc, 8, v010202; GFX6-SDAG-NEXT: s_mov_b32 m0, -110203; GFX6-SDAG-NEXT: ds_read_b32 v4, v210204; GFX6-SDAG-NEXT: ds_read_b64 v[2:3], v010205; GFX6-SDAG-NEXT: v_add_i32_e32 v0, vcc, 8, v110206; GFX6-SDAG-NEXT: s_waitcnt lgkmcnt(1)10207; GFX6-SDAG-NEXT: ds_write_b32 v0, v410208; GFX6-SDAG-NEXT: s_waitcnt lgkmcnt(1)10209; GFX6-SDAG-NEXT: ds_write_b64 v1, v[2:3]10210; GFX6-SDAG-NEXT: s_waitcnt lgkmcnt(0)10211; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]10212;10213; GFX6-GISEL-LABEL: freeze_v3p3:10214; GFX6-GISEL: ; %bb.0:10215; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10216; GFX6-GISEL-NEXT: s_mov_b32 m0, -110217; GFX6-GISEL-NEXT: ds_read_b64 v[2:3], v010218; GFX6-GISEL-NEXT: v_add_i32_e32 v0, vcc, 8, v010219; GFX6-GISEL-NEXT: ds_read_b32 v0, v010220; GFX6-GISEL-NEXT: s_waitcnt lgkmcnt(1)10221; GFX6-GISEL-NEXT: ds_write_b64 v1, v[2:3]10222; GFX6-GISEL-NEXT: v_add_i32_e32 v1, vcc, 8, v110223; GFX6-GISEL-NEXT: s_waitcnt lgkmcnt(1)10224; GFX6-GISEL-NEXT: ds_write_b32 v1, v010225; GFX6-GISEL-NEXT: s_waitcnt lgkmcnt(0)10226; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]10227;10228; GFX7-LABEL: freeze_v3p3:10229; GFX7: ; %bb.0:10230; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10231; GFX7-NEXT: s_mov_b32 m0, -110232; GFX7-NEXT: ds_read_b96 v[2:4], v010233; GFX7-NEXT: s_waitcnt lgkmcnt(0)10234; GFX7-NEXT: ds_write_b96 v1, v[2:4]10235; GFX7-NEXT: s_waitcnt lgkmcnt(0)10236; GFX7-NEXT: s_setpc_b64 s[30:31]10237;10238; GFX8-LABEL: freeze_v3p3:10239; GFX8: ; %bb.0:10240; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10241; GFX8-NEXT: s_mov_b32 m0, -110242; GFX8-NEXT: ds_read_b96 v[2:4], v010243; GFX8-NEXT: s_waitcnt lgkmcnt(0)10244; GFX8-NEXT: ds_write_b96 v1, v[2:4]10245; GFX8-NEXT: s_waitcnt lgkmcnt(0)10246; GFX8-NEXT: s_setpc_b64 s[30:31]10247;10248; GFX9-LABEL: freeze_v3p3:10249; GFX9: ; %bb.0:10250; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10251; GFX9-NEXT: ds_read_b96 v[2:4], v010252; GFX9-NEXT: s_waitcnt lgkmcnt(0)10253; GFX9-NEXT: ds_write_b96 v1, v[2:4]10254; GFX9-NEXT: s_waitcnt lgkmcnt(0)10255; GFX9-NEXT: s_setpc_b64 s[30:31]10256;10257; GFX10-LABEL: freeze_v3p3:10258; GFX10: ; %bb.0:10259; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10260; GFX10-NEXT: ds_read_b96 v[2:4], v010261; GFX10-NEXT: s_waitcnt lgkmcnt(0)10262; GFX10-NEXT: ds_write_b96 v1, v[2:4]10263; GFX10-NEXT: s_waitcnt lgkmcnt(0)10264; GFX10-NEXT: s_setpc_b64 s[30:31]10265;10266; GFX11-LABEL: freeze_v3p3:10267; GFX11: ; %bb.0:10268; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10269; GFX11-NEXT: ds_load_b96 v[2:4], v010270; GFX11-NEXT: s_waitcnt lgkmcnt(0)10271; GFX11-NEXT: ds_store_b96 v1, v[2:4]10272; GFX11-NEXT: s_waitcnt lgkmcnt(0)10273; GFX11-NEXT: s_setpc_b64 s[30:31]10274 %a = load <3 x ptr addrspace(3)>, ptr addrspace(3) %ptra10275 %freeze = freeze <3 x ptr addrspace(3)> %a10276 store <3 x ptr addrspace(3)> %freeze, ptr addrspace(3) %ptrb10277 ret void10278}10279 10280define void @freeze_v4p3(ptr addrspace(3) %ptra, ptr addrspace(3) %ptrb) {10281; GFX6-LABEL: freeze_v4p3:10282; GFX6: ; %bb.0:10283; GFX6-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10284; GFX6-NEXT: s_mov_b32 m0, -110285; GFX6-NEXT: ds_read_b64 v[2:3], v010286; GFX6-NEXT: v_add_i32_e32 v0, vcc, 8, v010287; GFX6-NEXT: ds_read_b64 v[4:5], v010288; GFX6-NEXT: v_add_i32_e32 v0, vcc, 8, v110289; GFX6-NEXT: s_waitcnt lgkmcnt(1)10290; GFX6-NEXT: ds_write_b64 v1, v[2:3]10291; GFX6-NEXT: s_waitcnt lgkmcnt(1)10292; GFX6-NEXT: ds_write_b64 v0, v[4:5]10293; GFX6-NEXT: s_waitcnt lgkmcnt(0)10294; GFX6-NEXT: s_setpc_b64 s[30:31]10295;10296; GFX7-LABEL: freeze_v4p3:10297; GFX7: ; %bb.0:10298; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10299; GFX7-NEXT: s_mov_b32 m0, -110300; GFX7-NEXT: ds_read_b128 v[2:5], v010301; GFX7-NEXT: s_waitcnt lgkmcnt(0)10302; GFX7-NEXT: ds_write_b128 v1, v[2:5]10303; GFX7-NEXT: s_waitcnt lgkmcnt(0)10304; GFX7-NEXT: s_setpc_b64 s[30:31]10305;10306; GFX8-LABEL: freeze_v4p3:10307; GFX8: ; %bb.0:10308; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10309; GFX8-NEXT: s_mov_b32 m0, -110310; GFX8-NEXT: ds_read_b128 v[2:5], v010311; GFX8-NEXT: s_waitcnt lgkmcnt(0)10312; GFX8-NEXT: ds_write_b128 v1, v[2:5]10313; GFX8-NEXT: s_waitcnt lgkmcnt(0)10314; GFX8-NEXT: s_setpc_b64 s[30:31]10315;10316; GFX9-LABEL: freeze_v4p3:10317; GFX9: ; %bb.0:10318; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10319; GFX9-NEXT: ds_read_b128 v[2:5], v010320; GFX9-NEXT: s_waitcnt lgkmcnt(0)10321; GFX9-NEXT: ds_write_b128 v1, v[2:5]10322; GFX9-NEXT: s_waitcnt lgkmcnt(0)10323; GFX9-NEXT: s_setpc_b64 s[30:31]10324;10325; GFX10-LABEL: freeze_v4p3:10326; GFX10: ; %bb.0:10327; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10328; GFX10-NEXT: ds_read_b128 v[2:5], v010329; GFX10-NEXT: s_waitcnt lgkmcnt(0)10330; GFX10-NEXT: ds_write_b128 v1, v[2:5]10331; GFX10-NEXT: s_waitcnt lgkmcnt(0)10332; GFX10-NEXT: s_setpc_b64 s[30:31]10333;10334; GFX11-LABEL: freeze_v4p3:10335; GFX11: ; %bb.0:10336; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10337; GFX11-NEXT: ds_load_b128 v[2:5], v010338; GFX11-NEXT: s_waitcnt lgkmcnt(0)10339; GFX11-NEXT: ds_store_b128 v1, v[2:5]10340; GFX11-NEXT: s_waitcnt lgkmcnt(0)10341; GFX11-NEXT: s_setpc_b64 s[30:31]10342 %a = load <4 x ptr addrspace(3)>, ptr addrspace(3) %ptra10343 %freeze = freeze <4 x ptr addrspace(3)> %a10344 store <4 x ptr addrspace(3)> %freeze, ptr addrspace(3) %ptrb10345 ret void10346}10347 10348define void @freeze_v8p3(ptr addrspace(3) %ptra, ptr addrspace(3) %ptrb) {10349; GFX6-SDAG-LABEL: freeze_v8p3:10350; GFX6-SDAG: ; %bb.0:10351; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10352; GFX6-SDAG-NEXT: v_add_i32_e32 v2, vcc, 24, v010353; GFX6-SDAG-NEXT: v_add_i32_e32 v4, vcc, 16, v010354; GFX6-SDAG-NEXT: s_mov_b32 m0, -110355; GFX6-SDAG-NEXT: ds_read_b64 v[2:3], v210356; GFX6-SDAG-NEXT: ds_read_b64 v[4:5], v410357; GFX6-SDAG-NEXT: ds_read_b64 v[6:7], v010358; GFX6-SDAG-NEXT: v_add_i32_e32 v0, vcc, 8, v010359; GFX6-SDAG-NEXT: ds_read_b64 v[8:9], v010360; GFX6-SDAG-NEXT: v_add_i32_e32 v0, vcc, 16, v110361; GFX6-SDAG-NEXT: s_waitcnt lgkmcnt(2)10362; GFX6-SDAG-NEXT: ds_write_b64 v0, v[4:5]10363; GFX6-SDAG-NEXT: v_add_i32_e32 v0, vcc, 24, v110364; GFX6-SDAG-NEXT: ds_write_b64 v0, v[2:3]10365; GFX6-SDAG-NEXT: v_add_i32_e32 v0, vcc, 8, v110366; GFX6-SDAG-NEXT: s_waitcnt lgkmcnt(3)10367; GFX6-SDAG-NEXT: ds_write_b64 v1, v[6:7]10368; GFX6-SDAG-NEXT: s_waitcnt lgkmcnt(3)10369; GFX6-SDAG-NEXT: ds_write_b64 v0, v[8:9]10370; GFX6-SDAG-NEXT: s_waitcnt lgkmcnt(0)10371; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]10372;10373; GFX6-GISEL-LABEL: freeze_v8p3:10374; GFX6-GISEL: ; %bb.0:10375; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10376; GFX6-GISEL-NEXT: s_mov_b32 m0, -110377; GFX6-GISEL-NEXT: v_add_i32_e32 v4, vcc, 8, v010378; GFX6-GISEL-NEXT: v_add_i32_e32 v6, vcc, 16, v010379; GFX6-GISEL-NEXT: ds_read_b64 v[2:3], v010380; GFX6-GISEL-NEXT: v_add_i32_e32 v0, vcc, 24, v010381; GFX6-GISEL-NEXT: ds_read_b64 v[4:5], v410382; GFX6-GISEL-NEXT: ds_read_b64 v[6:7], v610383; GFX6-GISEL-NEXT: ds_read_b64 v[8:9], v010384; GFX6-GISEL-NEXT: v_add_i32_e32 v0, vcc, 8, v110385; GFX6-GISEL-NEXT: s_waitcnt lgkmcnt(2)10386; GFX6-GISEL-NEXT: ds_write_b64 v0, v[4:5]10387; GFX6-GISEL-NEXT: v_add_i32_e32 v0, vcc, 16, v110388; GFX6-GISEL-NEXT: s_waitcnt lgkmcnt(2)10389; GFX6-GISEL-NEXT: ds_write_b64 v0, v[6:7]10390; GFX6-GISEL-NEXT: v_add_i32_e32 v0, vcc, 24, v110391; GFX6-GISEL-NEXT: ds_write_b64 v1, v[2:3]10392; GFX6-GISEL-NEXT: s_waitcnt lgkmcnt(3)10393; GFX6-GISEL-NEXT: ds_write_b64 v0, v[8:9]10394; GFX6-GISEL-NEXT: s_waitcnt lgkmcnt(0)10395; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]10396;10397; GFX7-SDAG-LABEL: freeze_v8p3:10398; GFX7-SDAG: ; %bb.0:10399; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10400; GFX7-SDAG-NEXT: s_mov_b32 m0, -110401; GFX7-SDAG-NEXT: ds_read_b128 v[2:5], v0 offset:1610402; GFX7-SDAG-NEXT: ds_read_b128 v[6:9], v010403; GFX7-SDAG-NEXT: s_waitcnt lgkmcnt(1)10404; GFX7-SDAG-NEXT: ds_write_b128 v1, v[2:5] offset:1610405; GFX7-SDAG-NEXT: s_waitcnt lgkmcnt(1)10406; GFX7-SDAG-NEXT: ds_write_b128 v1, v[6:9]10407; GFX7-SDAG-NEXT: s_waitcnt lgkmcnt(0)10408; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]10409;10410; GFX7-GISEL-LABEL: freeze_v8p3:10411; GFX7-GISEL: ; %bb.0:10412; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10413; GFX7-GISEL-NEXT: s_mov_b32 m0, -110414; GFX7-GISEL-NEXT: ds_read_b128 v[2:5], v010415; GFX7-GISEL-NEXT: ds_read_b128 v[6:9], v0 offset:1610416; GFX7-GISEL-NEXT: s_waitcnt lgkmcnt(1)10417; GFX7-GISEL-NEXT: ds_write_b128 v1, v[2:5]10418; GFX7-GISEL-NEXT: s_waitcnt lgkmcnt(1)10419; GFX7-GISEL-NEXT: ds_write_b128 v1, v[6:9] offset:1610420; GFX7-GISEL-NEXT: s_waitcnt lgkmcnt(0)10421; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]10422;10423; GFX8-GISEL-LABEL: freeze_v8p3:10424; GFX8-GISEL: ; %bb.0:10425; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10426; GFX8-GISEL-NEXT: s_mov_b32 m0, -110427; GFX8-GISEL-NEXT: ds_read_b128 v[2:5], v010428; GFX8-GISEL-NEXT: ds_read_b128 v[6:9], v0 offset:1610429; GFX8-GISEL-NEXT: s_waitcnt lgkmcnt(1)10430; GFX8-GISEL-NEXT: ds_write_b128 v1, v[2:5]10431; GFX8-GISEL-NEXT: s_waitcnt lgkmcnt(1)10432; GFX8-GISEL-NEXT: ds_write_b128 v1, v[6:9] offset:1610433; GFX8-GISEL-NEXT: s_waitcnt lgkmcnt(0)10434; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]10435;10436; GFX9-GISEL-LABEL: freeze_v8p3:10437; GFX9-GISEL: ; %bb.0:10438; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10439; GFX9-GISEL-NEXT: ds_read_b128 v[2:5], v010440; GFX9-GISEL-NEXT: ds_read_b128 v[6:9], v0 offset:1610441; GFX9-GISEL-NEXT: s_waitcnt lgkmcnt(1)10442; GFX9-GISEL-NEXT: ds_write_b128 v1, v[2:5]10443; GFX9-GISEL-NEXT: s_waitcnt lgkmcnt(1)10444; GFX9-GISEL-NEXT: ds_write_b128 v1, v[6:9] offset:1610445; GFX9-GISEL-NEXT: s_waitcnt lgkmcnt(0)10446; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]10447;10448; GFX10-SDAG-LABEL: freeze_v8p3:10449; GFX10-SDAG: ; %bb.0:10450; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10451; GFX10-SDAG-NEXT: ds_read_b128 v[2:5], v0 offset:1610452; GFX10-SDAG-NEXT: ds_read_b128 v[6:9], v010453; GFX10-SDAG-NEXT: s_waitcnt lgkmcnt(1)10454; GFX10-SDAG-NEXT: ds_write_b128 v1, v[2:5] offset:1610455; GFX10-SDAG-NEXT: s_waitcnt lgkmcnt(1)10456; GFX10-SDAG-NEXT: ds_write_b128 v1, v[6:9]10457; GFX10-SDAG-NEXT: s_waitcnt lgkmcnt(0)10458; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]10459;10460; GFX10-GISEL-LABEL: freeze_v8p3:10461; GFX10-GISEL: ; %bb.0:10462; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10463; GFX10-GISEL-NEXT: ds_read_b128 v[2:5], v010464; GFX10-GISEL-NEXT: ds_read_b128 v[6:9], v0 offset:1610465; GFX10-GISEL-NEXT: s_waitcnt lgkmcnt(1)10466; GFX10-GISEL-NEXT: ds_write_b128 v1, v[2:5]10467; GFX10-GISEL-NEXT: s_waitcnt lgkmcnt(1)10468; GFX10-GISEL-NEXT: ds_write_b128 v1, v[6:9] offset:1610469; GFX10-GISEL-NEXT: s_waitcnt lgkmcnt(0)10470; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]10471;10472; GFX11-SDAG-LABEL: freeze_v8p3:10473; GFX11-SDAG: ; %bb.0:10474; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10475; GFX11-SDAG-NEXT: ds_load_b128 v[2:5], v0 offset:1610476; GFX11-SDAG-NEXT: ds_load_b128 v[6:9], v010477; GFX11-SDAG-NEXT: s_waitcnt lgkmcnt(1)10478; GFX11-SDAG-NEXT: ds_store_b128 v1, v[2:5] offset:1610479; GFX11-SDAG-NEXT: s_waitcnt lgkmcnt(1)10480; GFX11-SDAG-NEXT: ds_store_b128 v1, v[6:9]10481; GFX11-SDAG-NEXT: s_waitcnt lgkmcnt(0)10482; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]10483;10484; GFX11-GISEL-LABEL: freeze_v8p3:10485; GFX11-GISEL: ; %bb.0:10486; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10487; GFX11-GISEL-NEXT: ds_load_b128 v[2:5], v010488; GFX11-GISEL-NEXT: ds_load_b128 v[6:9], v0 offset:1610489; GFX11-GISEL-NEXT: s_waitcnt lgkmcnt(1)10490; GFX11-GISEL-NEXT: ds_store_b128 v1, v[2:5]10491; GFX11-GISEL-NEXT: s_waitcnt lgkmcnt(1)10492; GFX11-GISEL-NEXT: ds_store_b128 v1, v[6:9] offset:1610493; GFX11-GISEL-NEXT: s_waitcnt lgkmcnt(0)10494; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]10495 %a = load <8 x ptr addrspace(3)>, ptr addrspace(3) %ptra10496 %freeze = freeze <8 x ptr addrspace(3)> %a10497 store <8 x ptr addrspace(3)> %freeze, ptr addrspace(3) %ptrb10498 ret void10499}10500 10501define void @freeze_v16p3(ptr addrspace(3) %ptra, ptr addrspace(3) %ptrb) {10502; GFX6-SDAG-LABEL: freeze_v16p3:10503; GFX6-SDAG: ; %bb.0:10504; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10505; GFX6-SDAG-NEXT: v_add_i32_e32 v2, vcc, 8, v010506; GFX6-SDAG-NEXT: v_add_i32_e32 v4, vcc, 24, v010507; GFX6-SDAG-NEXT: v_add_i32_e32 v6, vcc, 16, v010508; GFX6-SDAG-NEXT: v_add_i32_e32 v10, vcc, 40, v010509; GFX6-SDAG-NEXT: v_add_i32_e32 v12, vcc, 32, v010510; GFX6-SDAG-NEXT: v_add_i32_e32 v16, vcc, 56, v010511; GFX6-SDAG-NEXT: v_add_i32_e32 v14, vcc, 48, v010512; GFX6-SDAG-NEXT: s_mov_b32 m0, -110513; GFX6-SDAG-NEXT: ds_read_b64 v[2:3], v210514; GFX6-SDAG-NEXT: ds_read_b64 v[4:5], v410515; GFX6-SDAG-NEXT: ds_read_b64 v[6:7], v610516; GFX6-SDAG-NEXT: ds_read_b64 v[8:9], v010517; GFX6-SDAG-NEXT: ds_read_b64 v[10:11], v1010518; GFX6-SDAG-NEXT: ds_read_b64 v[12:13], v1210519; GFX6-SDAG-NEXT: ds_read_b64 v[14:15], v1410520; GFX6-SDAG-NEXT: ds_read_b64 v[16:17], v1610521; GFX6-SDAG-NEXT: v_add_i32_e32 v0, vcc, 48, v110522; GFX6-SDAG-NEXT: s_waitcnt lgkmcnt(4)10523; GFX6-SDAG-NEXT: ds_write_b64 v1, v[8:9]10524; GFX6-SDAG-NEXT: s_waitcnt lgkmcnt(2)10525; GFX6-SDAG-NEXT: ds_write_b64 v0, v[14:15]10526; GFX6-SDAG-NEXT: v_add_i32_e32 v0, vcc, 56, v110527; GFX6-SDAG-NEXT: s_waitcnt lgkmcnt(2)10528; GFX6-SDAG-NEXT: ds_write_b64 v0, v[16:17]10529; GFX6-SDAG-NEXT: v_add_i32_e32 v0, vcc, 32, v110530; GFX6-SDAG-NEXT: ds_write_b64 v0, v[12:13]10531; GFX6-SDAG-NEXT: v_add_i32_e32 v0, vcc, 40, v110532; GFX6-SDAG-NEXT: ds_write_b64 v0, v[10:11]10533; GFX6-SDAG-NEXT: v_add_i32_e32 v0, vcc, 16, v110534; GFX6-SDAG-NEXT: ds_write_b64 v0, v[6:7]10535; GFX6-SDAG-NEXT: v_add_i32_e32 v0, vcc, 24, v110536; GFX6-SDAG-NEXT: ds_write_b64 v0, v[4:5]10537; GFX6-SDAG-NEXT: v_add_i32_e32 v0, vcc, 8, v110538; GFX6-SDAG-NEXT: ds_write_b64 v0, v[2:3]10539; GFX6-SDAG-NEXT: s_waitcnt lgkmcnt(0)10540; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]10541;10542; GFX6-GISEL-LABEL: freeze_v16p3:10543; GFX6-GISEL: ; %bb.0:10544; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10545; GFX6-GISEL-NEXT: v_add_i32_e32 v4, vcc, 8, v010546; GFX6-GISEL-NEXT: v_add_i32_e32 v6, vcc, 16, v010547; GFX6-GISEL-NEXT: v_add_i32_e32 v8, vcc, 24, v010548; GFX6-GISEL-NEXT: s_mov_b32 m0, -110549; GFX6-GISEL-NEXT: ds_read_b64 v[2:3], v010550; GFX6-GISEL-NEXT: ds_read_b64 v[4:5], v410551; GFX6-GISEL-NEXT: ds_read_b64 v[6:7], v610552; GFX6-GISEL-NEXT: ds_read_b64 v[8:9], v810553; GFX6-GISEL-NEXT: v_add_i32_e32 v10, vcc, 32, v010554; GFX6-GISEL-NEXT: v_add_i32_e32 v12, vcc, 40, v010555; GFX6-GISEL-NEXT: v_add_i32_e32 v14, vcc, 48, v010556; GFX6-GISEL-NEXT: v_add_i32_e32 v0, vcc, 56, v010557; GFX6-GISEL-NEXT: ds_read_b64 v[10:11], v1010558; GFX6-GISEL-NEXT: ds_read_b64 v[12:13], v1210559; GFX6-GISEL-NEXT: ds_read_b64 v[14:15], v1410560; GFX6-GISEL-NEXT: ds_read_b64 v[16:17], v010561; GFX6-GISEL-NEXT: v_add_i32_e32 v0, vcc, 8, v110562; GFX6-GISEL-NEXT: s_waitcnt lgkmcnt(6)10563; GFX6-GISEL-NEXT: ds_write_b64 v0, v[4:5]10564; GFX6-GISEL-NEXT: v_add_i32_e32 v0, vcc, 16, v110565; GFX6-GISEL-NEXT: s_waitcnt lgkmcnt(6)10566; GFX6-GISEL-NEXT: ds_write_b64 v0, v[6:7]10567; GFX6-GISEL-NEXT: v_add_i32_e32 v0, vcc, 24, v110568; GFX6-GISEL-NEXT: s_waitcnt lgkmcnt(6)10569; GFX6-GISEL-NEXT: ds_write_b64 v0, v[8:9]10570; GFX6-GISEL-NEXT: v_add_i32_e32 v0, vcc, 32, v110571; GFX6-GISEL-NEXT: s_waitcnt lgkmcnt(6)10572; GFX6-GISEL-NEXT: ds_write_b64 v0, v[10:11]10573; GFX6-GISEL-NEXT: v_add_i32_e32 v0, vcc, 40, v110574; GFX6-GISEL-NEXT: s_waitcnt lgkmcnt(6)10575; GFX6-GISEL-NEXT: ds_write_b64 v0, v[12:13]10576; GFX6-GISEL-NEXT: v_add_i32_e32 v0, vcc, 48, v110577; GFX6-GISEL-NEXT: s_waitcnt lgkmcnt(6)10578; GFX6-GISEL-NEXT: ds_write_b64 v0, v[14:15]10579; GFX6-GISEL-NEXT: v_add_i32_e32 v0, vcc, 56, v110580; GFX6-GISEL-NEXT: ds_write_b64 v1, v[2:3]10581; GFX6-GISEL-NEXT: s_waitcnt lgkmcnt(7)10582; GFX6-GISEL-NEXT: ds_write_b64 v0, v[16:17]10583; GFX6-GISEL-NEXT: s_waitcnt lgkmcnt(0)10584; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]10585;10586; GFX7-SDAG-LABEL: freeze_v16p3:10587; GFX7-SDAG: ; %bb.0:10588; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10589; GFX7-SDAG-NEXT: s_mov_b32 m0, -110590; GFX7-SDAG-NEXT: ds_read_b128 v[2:5], v0 offset:3210591; GFX7-SDAG-NEXT: ds_read_b128 v[6:9], v0 offset:4810592; GFX7-SDAG-NEXT: ds_read_b128 v[10:13], v010593; GFX7-SDAG-NEXT: ds_read_b128 v[14:17], v0 offset:1610594; GFX7-SDAG-NEXT: s_waitcnt lgkmcnt(3)10595; GFX7-SDAG-NEXT: ds_write_b128 v1, v[2:5] offset:3210596; GFX7-SDAG-NEXT: s_waitcnt lgkmcnt(3)10597; GFX7-SDAG-NEXT: ds_write_b128 v1, v[6:9] offset:4810598; GFX7-SDAG-NEXT: s_waitcnt lgkmcnt(3)10599; GFX7-SDAG-NEXT: ds_write_b128 v1, v[10:13]10600; GFX7-SDAG-NEXT: s_waitcnt lgkmcnt(3)10601; GFX7-SDAG-NEXT: ds_write_b128 v1, v[14:17] offset:1610602; GFX7-SDAG-NEXT: s_waitcnt lgkmcnt(0)10603; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]10604;10605; GFX7-GISEL-LABEL: freeze_v16p3:10606; GFX7-GISEL: ; %bb.0:10607; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10608; GFX7-GISEL-NEXT: s_mov_b32 m0, -110609; GFX7-GISEL-NEXT: ds_read_b128 v[2:5], v010610; GFX7-GISEL-NEXT: ds_read_b128 v[6:9], v0 offset:1610611; GFX7-GISEL-NEXT: ds_read_b128 v[10:13], v0 offset:3210612; GFX7-GISEL-NEXT: ds_read_b128 v[14:17], v0 offset:4810613; GFX7-GISEL-NEXT: s_waitcnt lgkmcnt(3)10614; GFX7-GISEL-NEXT: ds_write_b128 v1, v[2:5]10615; GFX7-GISEL-NEXT: s_waitcnt lgkmcnt(3)10616; GFX7-GISEL-NEXT: ds_write_b128 v1, v[6:9] offset:1610617; GFX7-GISEL-NEXT: s_waitcnt lgkmcnt(3)10618; GFX7-GISEL-NEXT: ds_write_b128 v1, v[10:13] offset:3210619; GFX7-GISEL-NEXT: s_waitcnt lgkmcnt(3)10620; GFX7-GISEL-NEXT: ds_write_b128 v1, v[14:17] offset:4810621; GFX7-GISEL-NEXT: s_waitcnt lgkmcnt(0)10622; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]10623;10624; GFX8-GISEL-LABEL: freeze_v16p3:10625; GFX8-GISEL: ; %bb.0:10626; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10627; GFX8-GISEL-NEXT: s_mov_b32 m0, -110628; GFX8-GISEL-NEXT: ds_read_b128 v[2:5], v010629; GFX8-GISEL-NEXT: ds_read_b128 v[6:9], v0 offset:1610630; GFX8-GISEL-NEXT: ds_read_b128 v[10:13], v0 offset:3210631; GFX8-GISEL-NEXT: ds_read_b128 v[14:17], v0 offset:4810632; GFX8-GISEL-NEXT: s_waitcnt lgkmcnt(3)10633; GFX8-GISEL-NEXT: ds_write_b128 v1, v[2:5]10634; GFX8-GISEL-NEXT: s_waitcnt lgkmcnt(3)10635; GFX8-GISEL-NEXT: ds_write_b128 v1, v[6:9] offset:1610636; GFX8-GISEL-NEXT: s_waitcnt lgkmcnt(3)10637; GFX8-GISEL-NEXT: ds_write_b128 v1, v[10:13] offset:3210638; GFX8-GISEL-NEXT: s_waitcnt lgkmcnt(3)10639; GFX8-GISEL-NEXT: ds_write_b128 v1, v[14:17] offset:4810640; GFX8-GISEL-NEXT: s_waitcnt lgkmcnt(0)10641; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]10642;10643; GFX9-GISEL-LABEL: freeze_v16p3:10644; GFX9-GISEL: ; %bb.0:10645; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10646; GFX9-GISEL-NEXT: ds_read_b128 v[2:5], v010647; GFX9-GISEL-NEXT: ds_read_b128 v[6:9], v0 offset:1610648; GFX9-GISEL-NEXT: ds_read_b128 v[10:13], v0 offset:3210649; GFX9-GISEL-NEXT: ds_read_b128 v[14:17], v0 offset:4810650; GFX9-GISEL-NEXT: s_waitcnt lgkmcnt(3)10651; GFX9-GISEL-NEXT: ds_write_b128 v1, v[2:5]10652; GFX9-GISEL-NEXT: s_waitcnt lgkmcnt(3)10653; GFX9-GISEL-NEXT: ds_write_b128 v1, v[6:9] offset:1610654; GFX9-GISEL-NEXT: s_waitcnt lgkmcnt(3)10655; GFX9-GISEL-NEXT: ds_write_b128 v1, v[10:13] offset:3210656; GFX9-GISEL-NEXT: s_waitcnt lgkmcnt(3)10657; GFX9-GISEL-NEXT: ds_write_b128 v1, v[14:17] offset:4810658; GFX9-GISEL-NEXT: s_waitcnt lgkmcnt(0)10659; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]10660;10661; GFX10-SDAG-LABEL: freeze_v16p3:10662; GFX10-SDAG: ; %bb.0:10663; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10664; GFX10-SDAG-NEXT: ds_read_b128 v[2:5], v0 offset:3210665; GFX10-SDAG-NEXT: ds_read_b128 v[6:9], v0 offset:4810666; GFX10-SDAG-NEXT: ds_read_b128 v[10:13], v010667; GFX10-SDAG-NEXT: ds_read_b128 v[14:17], v0 offset:1610668; GFX10-SDAG-NEXT: s_waitcnt lgkmcnt(3)10669; GFX10-SDAG-NEXT: ds_write_b128 v1, v[2:5] offset:3210670; GFX10-SDAG-NEXT: s_waitcnt lgkmcnt(3)10671; GFX10-SDAG-NEXT: ds_write_b128 v1, v[6:9] offset:4810672; GFX10-SDAG-NEXT: s_waitcnt lgkmcnt(3)10673; GFX10-SDAG-NEXT: ds_write_b128 v1, v[10:13]10674; GFX10-SDAG-NEXT: s_waitcnt lgkmcnt(3)10675; GFX10-SDAG-NEXT: ds_write_b128 v1, v[14:17] offset:1610676; GFX10-SDAG-NEXT: s_waitcnt lgkmcnt(0)10677; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]10678;10679; GFX10-GISEL-LABEL: freeze_v16p3:10680; GFX10-GISEL: ; %bb.0:10681; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10682; GFX10-GISEL-NEXT: ds_read_b128 v[2:5], v010683; GFX10-GISEL-NEXT: ds_read_b128 v[6:9], v0 offset:1610684; GFX10-GISEL-NEXT: ds_read_b128 v[10:13], v0 offset:3210685; GFX10-GISEL-NEXT: ds_read_b128 v[14:17], v0 offset:4810686; GFX10-GISEL-NEXT: s_waitcnt lgkmcnt(3)10687; GFX10-GISEL-NEXT: ds_write_b128 v1, v[2:5]10688; GFX10-GISEL-NEXT: s_waitcnt lgkmcnt(3)10689; GFX10-GISEL-NEXT: ds_write_b128 v1, v[6:9] offset:1610690; GFX10-GISEL-NEXT: s_waitcnt lgkmcnt(3)10691; GFX10-GISEL-NEXT: ds_write_b128 v1, v[10:13] offset:3210692; GFX10-GISEL-NEXT: s_waitcnt lgkmcnt(3)10693; GFX10-GISEL-NEXT: ds_write_b128 v1, v[14:17] offset:4810694; GFX10-GISEL-NEXT: s_waitcnt lgkmcnt(0)10695; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]10696;10697; GFX11-SDAG-LABEL: freeze_v16p3:10698; GFX11-SDAG: ; %bb.0:10699; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10700; GFX11-SDAG-NEXT: ds_load_b128 v[2:5], v0 offset:3210701; GFX11-SDAG-NEXT: ds_load_b128 v[6:9], v0 offset:4810702; GFX11-SDAG-NEXT: ds_load_b128 v[10:13], v010703; GFX11-SDAG-NEXT: ds_load_b128 v[14:17], v0 offset:1610704; GFX11-SDAG-NEXT: s_waitcnt lgkmcnt(3)10705; GFX11-SDAG-NEXT: ds_store_b128 v1, v[2:5] offset:3210706; GFX11-SDAG-NEXT: s_waitcnt lgkmcnt(3)10707; GFX11-SDAG-NEXT: ds_store_b128 v1, v[6:9] offset:4810708; GFX11-SDAG-NEXT: s_waitcnt lgkmcnt(3)10709; GFX11-SDAG-NEXT: ds_store_b128 v1, v[10:13]10710; GFX11-SDAG-NEXT: s_waitcnt lgkmcnt(3)10711; GFX11-SDAG-NEXT: ds_store_b128 v1, v[14:17] offset:1610712; GFX11-SDAG-NEXT: s_waitcnt lgkmcnt(0)10713; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]10714;10715; GFX11-GISEL-LABEL: freeze_v16p3:10716; GFX11-GISEL: ; %bb.0:10717; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10718; GFX11-GISEL-NEXT: ds_load_b128 v[2:5], v010719; GFX11-GISEL-NEXT: ds_load_b128 v[6:9], v0 offset:1610720; GFX11-GISEL-NEXT: ds_load_b128 v[10:13], v0 offset:3210721; GFX11-GISEL-NEXT: ds_load_b128 v[14:17], v0 offset:4810722; GFX11-GISEL-NEXT: s_waitcnt lgkmcnt(3)10723; GFX11-GISEL-NEXT: ds_store_b128 v1, v[2:5]10724; GFX11-GISEL-NEXT: s_waitcnt lgkmcnt(3)10725; GFX11-GISEL-NEXT: ds_store_b128 v1, v[6:9] offset:1610726; GFX11-GISEL-NEXT: s_waitcnt lgkmcnt(3)10727; GFX11-GISEL-NEXT: ds_store_b128 v1, v[10:13] offset:3210728; GFX11-GISEL-NEXT: s_waitcnt lgkmcnt(3)10729; GFX11-GISEL-NEXT: ds_store_b128 v1, v[14:17] offset:4810730; GFX11-GISEL-NEXT: s_waitcnt lgkmcnt(0)10731; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]10732 %a = load <16 x ptr addrspace(3)>, ptr addrspace(3) %ptra10733 %freeze = freeze <16 x ptr addrspace(3)> %a10734 store <16 x ptr addrspace(3)> %freeze, ptr addrspace(3) %ptrb10735 ret void10736}10737 10738define void @freeze_p5(ptr addrspace(5) %ptra, ptr addrspace(5) %ptrb) {10739; GFX6-LABEL: freeze_p5:10740; GFX6: ; %bb.0:10741; GFX6-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10742; GFX6-NEXT: buffer_load_dword v0, v0, s[0:3], 0 offen10743; GFX6-NEXT: s_waitcnt vmcnt(0)10744; GFX6-NEXT: buffer_store_dword v0, v1, s[0:3], 0 offen10745; GFX6-NEXT: s_waitcnt vmcnt(0) expcnt(0)10746; GFX6-NEXT: s_setpc_b64 s[30:31]10747;10748; GFX7-LABEL: freeze_p5:10749; GFX7: ; %bb.0:10750; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10751; GFX7-NEXT: buffer_load_dword v0, v0, s[0:3], 0 offen10752; GFX7-NEXT: s_waitcnt vmcnt(0)10753; GFX7-NEXT: buffer_store_dword v0, v1, s[0:3], 0 offen10754; GFX7-NEXT: s_waitcnt vmcnt(0)10755; GFX7-NEXT: s_setpc_b64 s[30:31]10756;10757; GFX8-LABEL: freeze_p5:10758; GFX8: ; %bb.0:10759; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10760; GFX8-NEXT: buffer_load_dword v0, v0, s[0:3], 0 offen10761; GFX8-NEXT: s_waitcnt vmcnt(0)10762; GFX8-NEXT: buffer_store_dword v0, v1, s[0:3], 0 offen10763; GFX8-NEXT: s_waitcnt vmcnt(0)10764; GFX8-NEXT: s_setpc_b64 s[30:31]10765;10766; GFX9-LABEL: freeze_p5:10767; GFX9: ; %bb.0:10768; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10769; GFX9-NEXT: buffer_load_dword v0, v0, s[0:3], 0 offen10770; GFX9-NEXT: s_waitcnt vmcnt(0)10771; GFX9-NEXT: buffer_store_dword v0, v1, s[0:3], 0 offen10772; GFX9-NEXT: s_waitcnt vmcnt(0)10773; GFX9-NEXT: s_setpc_b64 s[30:31]10774;10775; GFX10-LABEL: freeze_p5:10776; GFX10: ; %bb.0:10777; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10778; GFX10-NEXT: buffer_load_dword v0, v0, s[0:3], 0 offen10779; GFX10-NEXT: s_waitcnt vmcnt(0)10780; GFX10-NEXT: buffer_store_dword v0, v1, s[0:3], 0 offen10781; GFX10-NEXT: s_setpc_b64 s[30:31]10782;10783; GFX11-LABEL: freeze_p5:10784; GFX11: ; %bb.0:10785; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10786; GFX11-NEXT: scratch_load_b32 v0, v0, off10787; GFX11-NEXT: s_waitcnt vmcnt(0)10788; GFX11-NEXT: scratch_store_b32 v1, v0, off10789; GFX11-NEXT: s_setpc_b64 s[30:31]10790 %a = load ptr addrspace(5), ptr addrspace(5) %ptra10791 %freeze = freeze ptr addrspace(5) %a10792 store ptr addrspace(5) %freeze, ptr addrspace(5) %ptrb10793 ret void10794}10795 10796define void @freeze_v2p5(ptr addrspace(5) %ptra, ptr addrspace(5) %ptrb) {10797; GFX6-SDAG-LABEL: freeze_v2p5:10798; GFX6-SDAG: ; %bb.0:10799; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10800; GFX6-SDAG-NEXT: v_add_i32_e32 v2, vcc, 4, v010801; GFX6-SDAG-NEXT: buffer_load_dword v0, v0, s[0:3], 0 offen10802; GFX6-SDAG-NEXT: buffer_load_dword v2, v2, s[0:3], 0 offen10803; GFX6-SDAG-NEXT: v_add_i32_e32 v3, vcc, 4, v110804; GFX6-SDAG-NEXT: s_waitcnt vmcnt(1)10805; GFX6-SDAG-NEXT: buffer_store_dword v0, v1, s[0:3], 0 offen10806; GFX6-SDAG-NEXT: s_waitcnt vmcnt(1)10807; GFX6-SDAG-NEXT: buffer_store_dword v2, v3, s[0:3], 0 offen10808; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)10809; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]10810;10811; GFX6-GISEL-LABEL: freeze_v2p5:10812; GFX6-GISEL: ; %bb.0:10813; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10814; GFX6-GISEL-NEXT: buffer_load_dword v2, v0, s[0:3], 0 offen10815; GFX6-GISEL-NEXT: v_add_i32_e32 v0, vcc, 4, v010816; GFX6-GISEL-NEXT: buffer_load_dword v0, v0, s[0:3], 0 offen10817; GFX6-GISEL-NEXT: s_waitcnt vmcnt(1)10818; GFX6-GISEL-NEXT: buffer_store_dword v2, v1, s[0:3], 0 offen10819; GFX6-GISEL-NEXT: v_add_i32_e32 v1, vcc, 4, v110820; GFX6-GISEL-NEXT: s_waitcnt vmcnt(1)10821; GFX6-GISEL-NEXT: buffer_store_dword v0, v1, s[0:3], 0 offen10822; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)10823; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]10824;10825; GFX7-SDAG-LABEL: freeze_v2p5:10826; GFX7-SDAG: ; %bb.0:10827; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10828; GFX7-SDAG-NEXT: v_add_i32_e32 v2, vcc, 4, v010829; GFX7-SDAG-NEXT: buffer_load_dword v0, v0, s[0:3], 0 offen10830; GFX7-SDAG-NEXT: buffer_load_dword v2, v2, s[0:3], 0 offen10831; GFX7-SDAG-NEXT: v_add_i32_e32 v3, vcc, 4, v110832; GFX7-SDAG-NEXT: s_waitcnt vmcnt(1)10833; GFX7-SDAG-NEXT: buffer_store_dword v0, v1, s[0:3], 0 offen10834; GFX7-SDAG-NEXT: s_waitcnt vmcnt(1)10835; GFX7-SDAG-NEXT: buffer_store_dword v2, v3, s[0:3], 0 offen10836; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)10837; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]10838;10839; GFX7-GISEL-LABEL: freeze_v2p5:10840; GFX7-GISEL: ; %bb.0:10841; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10842; GFX7-GISEL-NEXT: buffer_load_dword v2, v0, s[0:3], 0 offen10843; GFX7-GISEL-NEXT: v_add_i32_e32 v0, vcc, 4, v010844; GFX7-GISEL-NEXT: buffer_load_dword v0, v0, s[0:3], 0 offen10845; GFX7-GISEL-NEXT: s_waitcnt vmcnt(1)10846; GFX7-GISEL-NEXT: buffer_store_dword v2, v1, s[0:3], 0 offen10847; GFX7-GISEL-NEXT: v_add_i32_e32 v1, vcc, 4, v110848; GFX7-GISEL-NEXT: s_waitcnt vmcnt(1)10849; GFX7-GISEL-NEXT: buffer_store_dword v0, v1, s[0:3], 0 offen10850; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)10851; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]10852;10853; GFX8-GISEL-LABEL: freeze_v2p5:10854; GFX8-GISEL: ; %bb.0:10855; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10856; GFX8-GISEL-NEXT: buffer_load_dword v2, v0, s[0:3], 0 offen10857; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 4, v010858; GFX8-GISEL-NEXT: buffer_load_dword v0, v0, s[0:3], 0 offen10859; GFX8-GISEL-NEXT: s_waitcnt vmcnt(1)10860; GFX8-GISEL-NEXT: buffer_store_dword v2, v1, s[0:3], 0 offen10861; GFX8-GISEL-NEXT: v_add_u32_e32 v1, vcc, 4, v110862; GFX8-GISEL-NEXT: s_waitcnt vmcnt(1)10863; GFX8-GISEL-NEXT: buffer_store_dword v0, v1, s[0:3], 0 offen10864; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)10865; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]10866;10867; GFX9-LABEL: freeze_v2p5:10868; GFX9: ; %bb.0:10869; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10870; GFX9-NEXT: buffer_load_dword v2, v0, s[0:3], 0 offen10871; GFX9-NEXT: buffer_load_dword v3, v0, s[0:3], 0 offen offset:410872; GFX9-NEXT: s_waitcnt vmcnt(1)10873; GFX9-NEXT: buffer_store_dword v2, v1, s[0:3], 0 offen10874; GFX9-NEXT: s_waitcnt vmcnt(1)10875; GFX9-NEXT: buffer_store_dword v3, v1, s[0:3], 0 offen offset:410876; GFX9-NEXT: s_waitcnt vmcnt(0)10877; GFX9-NEXT: s_setpc_b64 s[30:31]10878;10879; GFX10-LABEL: freeze_v2p5:10880; GFX10: ; %bb.0:10881; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10882; GFX10-NEXT: s_clause 0x110883; GFX10-NEXT: buffer_load_dword v2, v0, s[0:3], 0 offen10884; GFX10-NEXT: buffer_load_dword v3, v0, s[0:3], 0 offen offset:410885; GFX10-NEXT: s_waitcnt vmcnt(1)10886; GFX10-NEXT: buffer_store_dword v2, v1, s[0:3], 0 offen10887; GFX10-NEXT: s_waitcnt vmcnt(0)10888; GFX10-NEXT: buffer_store_dword v3, v1, s[0:3], 0 offen offset:410889; GFX10-NEXT: s_setpc_b64 s[30:31]10890;10891; GFX11-LABEL: freeze_v2p5:10892; GFX11: ; %bb.0:10893; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10894; GFX11-NEXT: scratch_load_b64 v[2:3], v0, off10895; GFX11-NEXT: s_waitcnt vmcnt(0)10896; GFX11-NEXT: scratch_store_b64 v1, v[2:3], off10897; GFX11-NEXT: s_setpc_b64 s[30:31]10898 %a = load <2 x ptr addrspace(5)>, ptr addrspace(5) %ptra10899 %freeze = freeze <2 x ptr addrspace(5)> %a10900 store <2 x ptr addrspace(5)> %freeze, ptr addrspace(5) %ptrb10901 ret void10902}10903 10904define void @freeze_v3p5(ptr addrspace(5) %ptra, ptr addrspace(5) %ptrb) {10905; GFX6-SDAG-LABEL: freeze_v3p5:10906; GFX6-SDAG: ; %bb.0:10907; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10908; GFX6-SDAG-NEXT: v_add_i32_e32 v2, vcc, 4, v010909; GFX6-SDAG-NEXT: buffer_load_dword v2, v2, s[0:3], 0 offen10910; GFX6-SDAG-NEXT: buffer_load_dword v3, v0, s[0:3], 0 offen10911; GFX6-SDAG-NEXT: v_add_i32_e32 v0, vcc, 8, v010912; GFX6-SDAG-NEXT: buffer_load_dword v0, v0, s[0:3], 0 offen10913; GFX6-SDAG-NEXT: v_add_i32_e32 v4, vcc, 4, v110914; GFX6-SDAG-NEXT: v_add_i32_e32 v5, vcc, 8, v110915; GFX6-SDAG-NEXT: s_waitcnt vmcnt(1)10916; GFX6-SDAG-NEXT: buffer_store_dword v3, v1, s[0:3], 0 offen10917; GFX6-SDAG-NEXT: buffer_store_dword v2, v4, s[0:3], 0 offen10918; GFX6-SDAG-NEXT: s_waitcnt vmcnt(2)10919; GFX6-SDAG-NEXT: buffer_store_dword v0, v5, s[0:3], 0 offen10920; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)10921; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]10922;10923; GFX6-GISEL-LABEL: freeze_v3p5:10924; GFX6-GISEL: ; %bb.0:10925; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10926; GFX6-GISEL-NEXT: v_add_i32_e32 v2, vcc, 4, v010927; GFX6-GISEL-NEXT: v_add_i32_e32 v3, vcc, 8, v010928; GFX6-GISEL-NEXT: buffer_load_dword v0, v0, s[0:3], 0 offen10929; GFX6-GISEL-NEXT: buffer_load_dword v2, v2, s[0:3], 0 offen10930; GFX6-GISEL-NEXT: buffer_load_dword v3, v3, s[0:3], 0 offen10931; GFX6-GISEL-NEXT: v_add_i32_e32 v4, vcc, 4, v110932; GFX6-GISEL-NEXT: v_add_i32_e32 v5, vcc, 8, v110933; GFX6-GISEL-NEXT: s_waitcnt vmcnt(2)10934; GFX6-GISEL-NEXT: buffer_store_dword v0, v1, s[0:3], 0 offen10935; GFX6-GISEL-NEXT: s_waitcnt vmcnt(2)10936; GFX6-GISEL-NEXT: buffer_store_dword v2, v4, s[0:3], 0 offen10937; GFX6-GISEL-NEXT: s_waitcnt vmcnt(2)10938; GFX6-GISEL-NEXT: buffer_store_dword v3, v5, s[0:3], 0 offen10939; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)10940; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]10941;10942; GFX7-SDAG-LABEL: freeze_v3p5:10943; GFX7-SDAG: ; %bb.0:10944; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10945; GFX7-SDAG-NEXT: v_add_i32_e32 v2, vcc, 4, v010946; GFX7-SDAG-NEXT: buffer_load_dword v2, v2, s[0:3], 0 offen10947; GFX7-SDAG-NEXT: buffer_load_dword v3, v0, s[0:3], 0 offen10948; GFX7-SDAG-NEXT: v_add_i32_e32 v0, vcc, 8, v010949; GFX7-SDAG-NEXT: buffer_load_dword v0, v0, s[0:3], 0 offen10950; GFX7-SDAG-NEXT: v_add_i32_e32 v4, vcc, 4, v110951; GFX7-SDAG-NEXT: v_add_i32_e32 v5, vcc, 8, v110952; GFX7-SDAG-NEXT: s_waitcnt vmcnt(1)10953; GFX7-SDAG-NEXT: buffer_store_dword v3, v1, s[0:3], 0 offen10954; GFX7-SDAG-NEXT: buffer_store_dword v2, v4, s[0:3], 0 offen10955; GFX7-SDAG-NEXT: s_waitcnt vmcnt(2)10956; GFX7-SDAG-NEXT: buffer_store_dword v0, v5, s[0:3], 0 offen10957; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)10958; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]10959;10960; GFX7-GISEL-LABEL: freeze_v3p5:10961; GFX7-GISEL: ; %bb.0:10962; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10963; GFX7-GISEL-NEXT: v_add_i32_e32 v2, vcc, 4, v010964; GFX7-GISEL-NEXT: v_add_i32_e32 v3, vcc, 8, v010965; GFX7-GISEL-NEXT: buffer_load_dword v0, v0, s[0:3], 0 offen10966; GFX7-GISEL-NEXT: buffer_load_dword v2, v2, s[0:3], 0 offen10967; GFX7-GISEL-NEXT: buffer_load_dword v3, v3, s[0:3], 0 offen10968; GFX7-GISEL-NEXT: v_add_i32_e32 v4, vcc, 4, v110969; GFX7-GISEL-NEXT: v_add_i32_e32 v5, vcc, 8, v110970; GFX7-GISEL-NEXT: s_waitcnt vmcnt(2)10971; GFX7-GISEL-NEXT: buffer_store_dword v0, v1, s[0:3], 0 offen10972; GFX7-GISEL-NEXT: s_waitcnt vmcnt(2)10973; GFX7-GISEL-NEXT: buffer_store_dword v2, v4, s[0:3], 0 offen10974; GFX7-GISEL-NEXT: s_waitcnt vmcnt(2)10975; GFX7-GISEL-NEXT: buffer_store_dword v3, v5, s[0:3], 0 offen10976; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)10977; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]10978;10979; GFX8-GISEL-LABEL: freeze_v3p5:10980; GFX8-GISEL: ; %bb.0:10981; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10982; GFX8-GISEL-NEXT: v_add_u32_e32 v2, vcc, 4, v010983; GFX8-GISEL-NEXT: v_add_u32_e32 v3, vcc, 8, v010984; GFX8-GISEL-NEXT: buffer_load_dword v0, v0, s[0:3], 0 offen10985; GFX8-GISEL-NEXT: buffer_load_dword v2, v2, s[0:3], 0 offen10986; GFX8-GISEL-NEXT: buffer_load_dword v3, v3, s[0:3], 0 offen10987; GFX8-GISEL-NEXT: v_add_u32_e32 v4, vcc, 4, v110988; GFX8-GISEL-NEXT: v_add_u32_e32 v5, vcc, 8, v110989; GFX8-GISEL-NEXT: s_waitcnt vmcnt(2)10990; GFX8-GISEL-NEXT: buffer_store_dword v0, v1, s[0:3], 0 offen10991; GFX8-GISEL-NEXT: s_waitcnt vmcnt(2)10992; GFX8-GISEL-NEXT: buffer_store_dword v2, v4, s[0:3], 0 offen10993; GFX8-GISEL-NEXT: s_waitcnt vmcnt(2)10994; GFX8-GISEL-NEXT: buffer_store_dword v3, v5, s[0:3], 0 offen10995; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)10996; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]10997;10998; GFX9-LABEL: freeze_v3p5:10999; GFX9: ; %bb.0:11000; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11001; GFX9-NEXT: buffer_load_dword v2, v0, s[0:3], 0 offen11002; GFX9-NEXT: buffer_load_dword v3, v0, s[0:3], 0 offen offset:411003; GFX9-NEXT: buffer_load_dword v4, v0, s[0:3], 0 offen offset:811004; GFX9-NEXT: s_waitcnt vmcnt(2)11005; GFX9-NEXT: buffer_store_dword v2, v1, s[0:3], 0 offen11006; GFX9-NEXT: s_waitcnt vmcnt(2)11007; GFX9-NEXT: buffer_store_dword v3, v1, s[0:3], 0 offen offset:411008; GFX9-NEXT: s_waitcnt vmcnt(2)11009; GFX9-NEXT: buffer_store_dword v4, v1, s[0:3], 0 offen offset:811010; GFX9-NEXT: s_waitcnt vmcnt(0)11011; GFX9-NEXT: s_setpc_b64 s[30:31]11012;11013; GFX10-LABEL: freeze_v3p5:11014; GFX10: ; %bb.0:11015; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11016; GFX10-NEXT: s_clause 0x211017; GFX10-NEXT: buffer_load_dword v2, v0, s[0:3], 0 offen11018; GFX10-NEXT: buffer_load_dword v3, v0, s[0:3], 0 offen offset:411019; GFX10-NEXT: buffer_load_dword v4, v0, s[0:3], 0 offen offset:811020; GFX10-NEXT: s_waitcnt vmcnt(2)11021; GFX10-NEXT: buffer_store_dword v2, v1, s[0:3], 0 offen11022; GFX10-NEXT: s_waitcnt vmcnt(1)11023; GFX10-NEXT: buffer_store_dword v3, v1, s[0:3], 0 offen offset:411024; GFX10-NEXT: s_waitcnt vmcnt(0)11025; GFX10-NEXT: buffer_store_dword v4, v1, s[0:3], 0 offen offset:811026; GFX10-NEXT: s_setpc_b64 s[30:31]11027;11028; GFX11-LABEL: freeze_v3p5:11029; GFX11: ; %bb.0:11030; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11031; GFX11-NEXT: scratch_load_b96 v[2:4], v0, off11032; GFX11-NEXT: s_waitcnt vmcnt(0)11033; GFX11-NEXT: scratch_store_b96 v1, v[2:4], off11034; GFX11-NEXT: s_setpc_b64 s[30:31]11035 %a = load <3 x ptr addrspace(5)>, ptr addrspace(5) %ptra11036 %freeze = freeze <3 x ptr addrspace(5)> %a11037 store <3 x ptr addrspace(5)> %freeze, ptr addrspace(5) %ptrb11038 ret void11039}11040 11041define void @freeze_v4p5(ptr addrspace(5) %ptra, ptr addrspace(5) %ptrb) {11042; GFX6-SDAG-LABEL: freeze_v4p5:11043; GFX6-SDAG: ; %bb.0:11044; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11045; GFX6-SDAG-NEXT: v_add_i32_e32 v2, vcc, 8, v011046; GFX6-SDAG-NEXT: v_add_i32_e32 v3, vcc, 4, v011047; GFX6-SDAG-NEXT: buffer_load_dword v2, v2, s[0:3], 0 offen11048; GFX6-SDAG-NEXT: buffer_load_dword v3, v3, s[0:3], 0 offen11049; GFX6-SDAG-NEXT: buffer_load_dword v4, v0, s[0:3], 0 offen11050; GFX6-SDAG-NEXT: v_add_i32_e32 v0, vcc, 12, v011051; GFX6-SDAG-NEXT: buffer_load_dword v0, v0, s[0:3], 0 offen11052; GFX6-SDAG-NEXT: v_add_i32_e32 v5, vcc, 4, v111053; GFX6-SDAG-NEXT: v_add_i32_e32 v6, vcc, 8, v111054; GFX6-SDAG-NEXT: v_add_i32_e32 v7, vcc, 12, v111055; GFX6-SDAG-NEXT: s_waitcnt vmcnt(1)11056; GFX6-SDAG-NEXT: buffer_store_dword v4, v1, s[0:3], 0 offen11057; GFX6-SDAG-NEXT: buffer_store_dword v3, v5, s[0:3], 0 offen11058; GFX6-SDAG-NEXT: buffer_store_dword v2, v6, s[0:3], 0 offen11059; GFX6-SDAG-NEXT: s_waitcnt vmcnt(3)11060; GFX6-SDAG-NEXT: buffer_store_dword v0, v7, s[0:3], 0 offen11061; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)11062; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]11063;11064; GFX6-GISEL-LABEL: freeze_v4p5:11065; GFX6-GISEL: ; %bb.0:11066; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11067; GFX6-GISEL-NEXT: v_add_i32_e32 v2, vcc, 4, v011068; GFX6-GISEL-NEXT: v_add_i32_e32 v3, vcc, 8, v011069; GFX6-GISEL-NEXT: v_add_i32_e32 v4, vcc, 12, v011070; GFX6-GISEL-NEXT: buffer_load_dword v0, v0, s[0:3], 0 offen11071; GFX6-GISEL-NEXT: buffer_load_dword v2, v2, s[0:3], 0 offen11072; GFX6-GISEL-NEXT: buffer_load_dword v3, v3, s[0:3], 0 offen11073; GFX6-GISEL-NEXT: buffer_load_dword v4, v4, s[0:3], 0 offen11074; GFX6-GISEL-NEXT: v_add_i32_e32 v5, vcc, 4, v111075; GFX6-GISEL-NEXT: v_add_i32_e32 v6, vcc, 8, v111076; GFX6-GISEL-NEXT: v_add_i32_e32 v7, vcc, 12, v111077; GFX6-GISEL-NEXT: s_waitcnt vmcnt(3)11078; GFX6-GISEL-NEXT: buffer_store_dword v0, v1, s[0:3], 0 offen11079; GFX6-GISEL-NEXT: s_waitcnt vmcnt(3)11080; GFX6-GISEL-NEXT: buffer_store_dword v2, v5, s[0:3], 0 offen11081; GFX6-GISEL-NEXT: s_waitcnt vmcnt(3)11082; GFX6-GISEL-NEXT: buffer_store_dword v3, v6, s[0:3], 0 offen11083; GFX6-GISEL-NEXT: s_waitcnt vmcnt(3)11084; GFX6-GISEL-NEXT: buffer_store_dword v4, v7, s[0:3], 0 offen11085; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)11086; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]11087;11088; GFX7-SDAG-LABEL: freeze_v4p5:11089; GFX7-SDAG: ; %bb.0:11090; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11091; GFX7-SDAG-NEXT: v_add_i32_e32 v2, vcc, 8, v011092; GFX7-SDAG-NEXT: v_add_i32_e32 v3, vcc, 4, v011093; GFX7-SDAG-NEXT: buffer_load_dword v2, v2, s[0:3], 0 offen11094; GFX7-SDAG-NEXT: buffer_load_dword v3, v3, s[0:3], 0 offen11095; GFX7-SDAG-NEXT: buffer_load_dword v4, v0, s[0:3], 0 offen11096; GFX7-SDAG-NEXT: v_add_i32_e32 v0, vcc, 12, v011097; GFX7-SDAG-NEXT: buffer_load_dword v0, v0, s[0:3], 0 offen11098; GFX7-SDAG-NEXT: v_add_i32_e32 v5, vcc, 4, v111099; GFX7-SDAG-NEXT: v_add_i32_e32 v6, vcc, 8, v111100; GFX7-SDAG-NEXT: v_add_i32_e32 v7, vcc, 12, v111101; GFX7-SDAG-NEXT: s_waitcnt vmcnt(1)11102; GFX7-SDAG-NEXT: buffer_store_dword v4, v1, s[0:3], 0 offen11103; GFX7-SDAG-NEXT: buffer_store_dword v3, v5, s[0:3], 0 offen11104; GFX7-SDAG-NEXT: buffer_store_dword v2, v6, s[0:3], 0 offen11105; GFX7-SDAG-NEXT: s_waitcnt vmcnt(3)11106; GFX7-SDAG-NEXT: buffer_store_dword v0, v7, s[0:3], 0 offen11107; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)11108; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]11109;11110; GFX7-GISEL-LABEL: freeze_v4p5:11111; GFX7-GISEL: ; %bb.0:11112; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11113; GFX7-GISEL-NEXT: v_add_i32_e32 v2, vcc, 4, v011114; GFX7-GISEL-NEXT: v_add_i32_e32 v3, vcc, 8, v011115; GFX7-GISEL-NEXT: v_add_i32_e32 v4, vcc, 12, v011116; GFX7-GISEL-NEXT: buffer_load_dword v0, v0, s[0:3], 0 offen11117; GFX7-GISEL-NEXT: buffer_load_dword v2, v2, s[0:3], 0 offen11118; GFX7-GISEL-NEXT: buffer_load_dword v3, v3, s[0:3], 0 offen11119; GFX7-GISEL-NEXT: buffer_load_dword v4, v4, s[0:3], 0 offen11120; GFX7-GISEL-NEXT: v_add_i32_e32 v5, vcc, 4, v111121; GFX7-GISEL-NEXT: v_add_i32_e32 v6, vcc, 8, v111122; GFX7-GISEL-NEXT: v_add_i32_e32 v7, vcc, 12, v111123; GFX7-GISEL-NEXT: s_waitcnt vmcnt(3)11124; GFX7-GISEL-NEXT: buffer_store_dword v0, v1, s[0:3], 0 offen11125; GFX7-GISEL-NEXT: s_waitcnt vmcnt(3)11126; GFX7-GISEL-NEXT: buffer_store_dword v2, v5, s[0:3], 0 offen11127; GFX7-GISEL-NEXT: s_waitcnt vmcnt(3)11128; GFX7-GISEL-NEXT: buffer_store_dword v3, v6, s[0:3], 0 offen11129; GFX7-GISEL-NEXT: s_waitcnt vmcnt(3)11130; GFX7-GISEL-NEXT: buffer_store_dword v4, v7, s[0:3], 0 offen11131; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)11132; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]11133;11134; GFX8-GISEL-LABEL: freeze_v4p5:11135; GFX8-GISEL: ; %bb.0:11136; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11137; GFX8-GISEL-NEXT: v_add_u32_e32 v2, vcc, 4, v011138; GFX8-GISEL-NEXT: v_add_u32_e32 v3, vcc, 8, v011139; GFX8-GISEL-NEXT: v_add_u32_e32 v4, vcc, 12, v011140; GFX8-GISEL-NEXT: buffer_load_dword v0, v0, s[0:3], 0 offen11141; GFX8-GISEL-NEXT: buffer_load_dword v2, v2, s[0:3], 0 offen11142; GFX8-GISEL-NEXT: buffer_load_dword v3, v3, s[0:3], 0 offen11143; GFX8-GISEL-NEXT: buffer_load_dword v4, v4, s[0:3], 0 offen11144; GFX8-GISEL-NEXT: v_add_u32_e32 v5, vcc, 4, v111145; GFX8-GISEL-NEXT: v_add_u32_e32 v6, vcc, 8, v111146; GFX8-GISEL-NEXT: v_add_u32_e32 v7, vcc, 12, v111147; GFX8-GISEL-NEXT: s_waitcnt vmcnt(3)11148; GFX8-GISEL-NEXT: buffer_store_dword v0, v1, s[0:3], 0 offen11149; GFX8-GISEL-NEXT: s_waitcnt vmcnt(3)11150; GFX8-GISEL-NEXT: buffer_store_dword v2, v5, s[0:3], 0 offen11151; GFX8-GISEL-NEXT: s_waitcnt vmcnt(3)11152; GFX8-GISEL-NEXT: buffer_store_dword v3, v6, s[0:3], 0 offen11153; GFX8-GISEL-NEXT: s_waitcnt vmcnt(3)11154; GFX8-GISEL-NEXT: buffer_store_dword v4, v7, s[0:3], 0 offen11155; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)11156; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]11157;11158; GFX9-LABEL: freeze_v4p5:11159; GFX9: ; %bb.0:11160; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11161; GFX9-NEXT: buffer_load_dword v2, v0, s[0:3], 0 offen11162; GFX9-NEXT: buffer_load_dword v3, v0, s[0:3], 0 offen offset:411163; GFX9-NEXT: buffer_load_dword v4, v0, s[0:3], 0 offen offset:811164; GFX9-NEXT: buffer_load_dword v5, v0, s[0:3], 0 offen offset:1211165; GFX9-NEXT: s_waitcnt vmcnt(3)11166; GFX9-NEXT: buffer_store_dword v2, v1, s[0:3], 0 offen11167; GFX9-NEXT: s_waitcnt vmcnt(3)11168; GFX9-NEXT: buffer_store_dword v3, v1, s[0:3], 0 offen offset:411169; GFX9-NEXT: s_waitcnt vmcnt(3)11170; GFX9-NEXT: buffer_store_dword v4, v1, s[0:3], 0 offen offset:811171; GFX9-NEXT: s_waitcnt vmcnt(3)11172; GFX9-NEXT: buffer_store_dword v5, v1, s[0:3], 0 offen offset:1211173; GFX9-NEXT: s_waitcnt vmcnt(0)11174; GFX9-NEXT: s_setpc_b64 s[30:31]11175;11176; GFX10-LABEL: freeze_v4p5:11177; GFX10: ; %bb.0:11178; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11179; GFX10-NEXT: s_clause 0x311180; GFX10-NEXT: buffer_load_dword v2, v0, s[0:3], 0 offen11181; GFX10-NEXT: buffer_load_dword v3, v0, s[0:3], 0 offen offset:411182; GFX10-NEXT: buffer_load_dword v4, v0, s[0:3], 0 offen offset:811183; GFX10-NEXT: buffer_load_dword v5, v0, s[0:3], 0 offen offset:1211184; GFX10-NEXT: s_waitcnt vmcnt(3)11185; GFX10-NEXT: buffer_store_dword v2, v1, s[0:3], 0 offen11186; GFX10-NEXT: s_waitcnt vmcnt(2)11187; GFX10-NEXT: buffer_store_dword v3, v1, s[0:3], 0 offen offset:411188; GFX10-NEXT: s_waitcnt vmcnt(1)11189; GFX10-NEXT: buffer_store_dword v4, v1, s[0:3], 0 offen offset:811190; GFX10-NEXT: s_waitcnt vmcnt(0)11191; GFX10-NEXT: buffer_store_dword v5, v1, s[0:3], 0 offen offset:1211192; GFX10-NEXT: s_setpc_b64 s[30:31]11193;11194; GFX11-LABEL: freeze_v4p5:11195; GFX11: ; %bb.0:11196; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11197; GFX11-NEXT: scratch_load_b128 v[2:5], v0, off11198; GFX11-NEXT: s_waitcnt vmcnt(0)11199; GFX11-NEXT: scratch_store_b128 v1, v[2:5], off11200; GFX11-NEXT: s_setpc_b64 s[30:31]11201 %a = load <4 x ptr addrspace(5)>, ptr addrspace(5) %ptra11202 %freeze = freeze <4 x ptr addrspace(5)> %a11203 store <4 x ptr addrspace(5)> %freeze, ptr addrspace(5) %ptrb11204 ret void11205}11206 11207define void @freeze_v8p5(ptr addrspace(5) %ptra, ptr addrspace(5) %ptrb) {11208; GFX6-SDAG-LABEL: freeze_v8p5:11209; GFX6-SDAG: ; %bb.0:11210; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11211; GFX6-SDAG-NEXT: v_add_i32_e32 v2, vcc, 24, v011212; GFX6-SDAG-NEXT: v_add_i32_e32 v3, vcc, 20, v011213; GFX6-SDAG-NEXT: v_add_i32_e32 v4, vcc, 16, v011214; GFX6-SDAG-NEXT: v_add_i32_e32 v5, vcc, 12, v011215; GFX6-SDAG-NEXT: v_add_i32_e32 v6, vcc, 8, v011216; GFX6-SDAG-NEXT: v_add_i32_e32 v7, vcc, 4, v011217; GFX6-SDAG-NEXT: buffer_load_dword v2, v2, s[0:3], 0 offen11218; GFX6-SDAG-NEXT: buffer_load_dword v3, v3, s[0:3], 0 offen11219; GFX6-SDAG-NEXT: buffer_load_dword v4, v4, s[0:3], 0 offen11220; GFX6-SDAG-NEXT: buffer_load_dword v5, v5, s[0:3], 0 offen11221; GFX6-SDAG-NEXT: buffer_load_dword v6, v6, s[0:3], 0 offen11222; GFX6-SDAG-NEXT: buffer_load_dword v7, v7, s[0:3], 0 offen11223; GFX6-SDAG-NEXT: buffer_load_dword v8, v0, s[0:3], 0 offen11224; GFX6-SDAG-NEXT: v_add_i32_e32 v0, vcc, 28, v011225; GFX6-SDAG-NEXT: buffer_load_dword v0, v0, s[0:3], 0 offen11226; GFX6-SDAG-NEXT: v_add_i32_e32 v9, vcc, 4, v111227; GFX6-SDAG-NEXT: v_add_i32_e32 v10, vcc, 8, v111228; GFX6-SDAG-NEXT: v_add_i32_e32 v11, vcc, 12, v111229; GFX6-SDAG-NEXT: v_add_i32_e32 v12, vcc, 16, v111230; GFX6-SDAG-NEXT: v_add_i32_e32 v13, vcc, 20, v111231; GFX6-SDAG-NEXT: v_add_i32_e32 v14, vcc, 24, v111232; GFX6-SDAG-NEXT: v_add_i32_e32 v15, vcc, 28, v111233; GFX6-SDAG-NEXT: s_waitcnt vmcnt(1)11234; GFX6-SDAG-NEXT: buffer_store_dword v8, v1, s[0:3], 0 offen11235; GFX6-SDAG-NEXT: buffer_store_dword v7, v9, s[0:3], 0 offen11236; GFX6-SDAG-NEXT: buffer_store_dword v6, v10, s[0:3], 0 offen11237; GFX6-SDAG-NEXT: buffer_store_dword v5, v11, s[0:3], 0 offen11238; GFX6-SDAG-NEXT: buffer_store_dword v4, v12, s[0:3], 0 offen11239; GFX6-SDAG-NEXT: buffer_store_dword v3, v13, s[0:3], 0 offen11240; GFX6-SDAG-NEXT: buffer_store_dword v2, v14, s[0:3], 0 offen11241; GFX6-SDAG-NEXT: s_waitcnt vmcnt(7)11242; GFX6-SDAG-NEXT: buffer_store_dword v0, v15, s[0:3], 0 offen11243; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)11244; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]11245;11246; GFX6-GISEL-LABEL: freeze_v8p5:11247; GFX6-GISEL: ; %bb.0:11248; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11249; GFX6-GISEL-NEXT: v_add_i32_e32 v2, vcc, 4, v011250; GFX6-GISEL-NEXT: v_add_i32_e32 v3, vcc, 8, v011251; GFX6-GISEL-NEXT: v_add_i32_e32 v4, vcc, 12, v011252; GFX6-GISEL-NEXT: v_add_i32_e32 v5, vcc, 16, v011253; GFX6-GISEL-NEXT: v_add_i32_e32 v6, vcc, 20, v011254; GFX6-GISEL-NEXT: v_add_i32_e32 v7, vcc, 24, v011255; GFX6-GISEL-NEXT: v_add_i32_e32 v8, vcc, 28, v011256; GFX6-GISEL-NEXT: buffer_load_dword v0, v0, s[0:3], 0 offen11257; GFX6-GISEL-NEXT: buffer_load_dword v2, v2, s[0:3], 0 offen11258; GFX6-GISEL-NEXT: buffer_load_dword v3, v3, s[0:3], 0 offen11259; GFX6-GISEL-NEXT: buffer_load_dword v4, v4, s[0:3], 0 offen11260; GFX6-GISEL-NEXT: buffer_load_dword v5, v5, s[0:3], 0 offen11261; GFX6-GISEL-NEXT: buffer_load_dword v6, v6, s[0:3], 0 offen11262; GFX6-GISEL-NEXT: buffer_load_dword v7, v7, s[0:3], 0 offen11263; GFX6-GISEL-NEXT: buffer_load_dword v8, v8, s[0:3], 0 offen11264; GFX6-GISEL-NEXT: v_add_i32_e32 v9, vcc, 4, v111265; GFX6-GISEL-NEXT: v_add_i32_e32 v10, vcc, 8, v111266; GFX6-GISEL-NEXT: v_add_i32_e32 v11, vcc, 12, v111267; GFX6-GISEL-NEXT: v_add_i32_e32 v12, vcc, 16, v111268; GFX6-GISEL-NEXT: v_add_i32_e32 v13, vcc, 20, v111269; GFX6-GISEL-NEXT: v_add_i32_e32 v14, vcc, 24, v111270; GFX6-GISEL-NEXT: v_add_i32_e32 v15, vcc, 28, v111271; GFX6-GISEL-NEXT: s_waitcnt vmcnt(7)11272; GFX6-GISEL-NEXT: buffer_store_dword v0, v1, s[0:3], 0 offen11273; GFX6-GISEL-NEXT: s_waitcnt vmcnt(7)11274; GFX6-GISEL-NEXT: buffer_store_dword v2, v9, s[0:3], 0 offen11275; GFX6-GISEL-NEXT: s_waitcnt vmcnt(7)11276; GFX6-GISEL-NEXT: buffer_store_dword v3, v10, s[0:3], 0 offen11277; GFX6-GISEL-NEXT: s_waitcnt vmcnt(7)11278; GFX6-GISEL-NEXT: buffer_store_dword v4, v11, s[0:3], 0 offen11279; GFX6-GISEL-NEXT: s_waitcnt vmcnt(7)11280; GFX6-GISEL-NEXT: buffer_store_dword v5, v12, s[0:3], 0 offen11281; GFX6-GISEL-NEXT: s_waitcnt vmcnt(7)11282; GFX6-GISEL-NEXT: buffer_store_dword v6, v13, s[0:3], 0 offen11283; GFX6-GISEL-NEXT: s_waitcnt vmcnt(7)11284; GFX6-GISEL-NEXT: buffer_store_dword v7, v14, s[0:3], 0 offen11285; GFX6-GISEL-NEXT: s_waitcnt vmcnt(7)11286; GFX6-GISEL-NEXT: buffer_store_dword v8, v15, s[0:3], 0 offen11287; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)11288; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]11289;11290; GFX7-SDAG-LABEL: freeze_v8p5:11291; GFX7-SDAG: ; %bb.0:11292; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11293; GFX7-SDAG-NEXT: v_add_i32_e32 v2, vcc, 24, v011294; GFX7-SDAG-NEXT: v_add_i32_e32 v3, vcc, 20, v011295; GFX7-SDAG-NEXT: v_add_i32_e32 v4, vcc, 16, v011296; GFX7-SDAG-NEXT: v_add_i32_e32 v5, vcc, 12, v011297; GFX7-SDAG-NEXT: v_add_i32_e32 v6, vcc, 8, v011298; GFX7-SDAG-NEXT: v_add_i32_e32 v7, vcc, 4, v011299; GFX7-SDAG-NEXT: buffer_load_dword v2, v2, s[0:3], 0 offen11300; GFX7-SDAG-NEXT: buffer_load_dword v3, v3, s[0:3], 0 offen11301; GFX7-SDAG-NEXT: buffer_load_dword v4, v4, s[0:3], 0 offen11302; GFX7-SDAG-NEXT: buffer_load_dword v5, v5, s[0:3], 0 offen11303; GFX7-SDAG-NEXT: buffer_load_dword v6, v6, s[0:3], 0 offen11304; GFX7-SDAG-NEXT: buffer_load_dword v7, v7, s[0:3], 0 offen11305; GFX7-SDAG-NEXT: buffer_load_dword v8, v0, s[0:3], 0 offen11306; GFX7-SDAG-NEXT: v_add_i32_e32 v0, vcc, 28, v011307; GFX7-SDAG-NEXT: buffer_load_dword v0, v0, s[0:3], 0 offen11308; GFX7-SDAG-NEXT: v_add_i32_e32 v9, vcc, 4, v111309; GFX7-SDAG-NEXT: v_add_i32_e32 v10, vcc, 8, v111310; GFX7-SDAG-NEXT: v_add_i32_e32 v11, vcc, 12, v111311; GFX7-SDAG-NEXT: v_add_i32_e32 v12, vcc, 16, v111312; GFX7-SDAG-NEXT: v_add_i32_e32 v13, vcc, 20, v111313; GFX7-SDAG-NEXT: v_add_i32_e32 v14, vcc, 24, v111314; GFX7-SDAG-NEXT: v_add_i32_e32 v15, vcc, 28, v111315; GFX7-SDAG-NEXT: s_waitcnt vmcnt(1)11316; GFX7-SDAG-NEXT: buffer_store_dword v8, v1, s[0:3], 0 offen11317; GFX7-SDAG-NEXT: buffer_store_dword v7, v9, s[0:3], 0 offen11318; GFX7-SDAG-NEXT: buffer_store_dword v6, v10, s[0:3], 0 offen11319; GFX7-SDAG-NEXT: buffer_store_dword v5, v11, s[0:3], 0 offen11320; GFX7-SDAG-NEXT: buffer_store_dword v4, v12, s[0:3], 0 offen11321; GFX7-SDAG-NEXT: buffer_store_dword v3, v13, s[0:3], 0 offen11322; GFX7-SDAG-NEXT: buffer_store_dword v2, v14, s[0:3], 0 offen11323; GFX7-SDAG-NEXT: s_waitcnt vmcnt(7)11324; GFX7-SDAG-NEXT: buffer_store_dword v0, v15, s[0:3], 0 offen11325; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)11326; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]11327;11328; GFX7-GISEL-LABEL: freeze_v8p5:11329; GFX7-GISEL: ; %bb.0:11330; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11331; GFX7-GISEL-NEXT: v_add_i32_e32 v2, vcc, 4, v011332; GFX7-GISEL-NEXT: v_add_i32_e32 v3, vcc, 8, v011333; GFX7-GISEL-NEXT: v_add_i32_e32 v4, vcc, 12, v011334; GFX7-GISEL-NEXT: v_add_i32_e32 v5, vcc, 16, v011335; GFX7-GISEL-NEXT: v_add_i32_e32 v6, vcc, 20, v011336; GFX7-GISEL-NEXT: v_add_i32_e32 v7, vcc, 24, v011337; GFX7-GISEL-NEXT: v_add_i32_e32 v8, vcc, 28, v011338; GFX7-GISEL-NEXT: buffer_load_dword v0, v0, s[0:3], 0 offen11339; GFX7-GISEL-NEXT: buffer_load_dword v2, v2, s[0:3], 0 offen11340; GFX7-GISEL-NEXT: buffer_load_dword v3, v3, s[0:3], 0 offen11341; GFX7-GISEL-NEXT: buffer_load_dword v4, v4, s[0:3], 0 offen11342; GFX7-GISEL-NEXT: buffer_load_dword v5, v5, s[0:3], 0 offen11343; GFX7-GISEL-NEXT: buffer_load_dword v6, v6, s[0:3], 0 offen11344; GFX7-GISEL-NEXT: buffer_load_dword v7, v7, s[0:3], 0 offen11345; GFX7-GISEL-NEXT: buffer_load_dword v8, v8, s[0:3], 0 offen11346; GFX7-GISEL-NEXT: v_add_i32_e32 v9, vcc, 4, v111347; GFX7-GISEL-NEXT: v_add_i32_e32 v10, vcc, 8, v111348; GFX7-GISEL-NEXT: v_add_i32_e32 v11, vcc, 12, v111349; GFX7-GISEL-NEXT: v_add_i32_e32 v12, vcc, 16, v111350; GFX7-GISEL-NEXT: v_add_i32_e32 v13, vcc, 20, v111351; GFX7-GISEL-NEXT: v_add_i32_e32 v14, vcc, 24, v111352; GFX7-GISEL-NEXT: v_add_i32_e32 v15, vcc, 28, v111353; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)11354; GFX7-GISEL-NEXT: buffer_store_dword v0, v1, s[0:3], 0 offen11355; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)11356; GFX7-GISEL-NEXT: buffer_store_dword v2, v9, s[0:3], 0 offen11357; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)11358; GFX7-GISEL-NEXT: buffer_store_dword v3, v10, s[0:3], 0 offen11359; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)11360; GFX7-GISEL-NEXT: buffer_store_dword v4, v11, s[0:3], 0 offen11361; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)11362; GFX7-GISEL-NEXT: buffer_store_dword v5, v12, s[0:3], 0 offen11363; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)11364; GFX7-GISEL-NEXT: buffer_store_dword v6, v13, s[0:3], 0 offen11365; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)11366; GFX7-GISEL-NEXT: buffer_store_dword v7, v14, s[0:3], 0 offen11367; GFX7-GISEL-NEXT: s_waitcnt vmcnt(7)11368; GFX7-GISEL-NEXT: buffer_store_dword v8, v15, s[0:3], 0 offen11369; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)11370; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]11371;11372; GFX8-GISEL-LABEL: freeze_v8p5:11373; GFX8-GISEL: ; %bb.0:11374; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11375; GFX8-GISEL-NEXT: v_add_u32_e32 v2, vcc, 4, v011376; GFX8-GISEL-NEXT: v_add_u32_e32 v3, vcc, 8, v011377; GFX8-GISEL-NEXT: v_add_u32_e32 v4, vcc, 12, v011378; GFX8-GISEL-NEXT: v_add_u32_e32 v5, vcc, 16, v011379; GFX8-GISEL-NEXT: v_add_u32_e32 v6, vcc, 20, v011380; GFX8-GISEL-NEXT: v_add_u32_e32 v7, vcc, 24, v011381; GFX8-GISEL-NEXT: v_add_u32_e32 v8, vcc, 28, v011382; GFX8-GISEL-NEXT: buffer_load_dword v0, v0, s[0:3], 0 offen11383; GFX8-GISEL-NEXT: buffer_load_dword v2, v2, s[0:3], 0 offen11384; GFX8-GISEL-NEXT: buffer_load_dword v3, v3, s[0:3], 0 offen11385; GFX8-GISEL-NEXT: buffer_load_dword v4, v4, s[0:3], 0 offen11386; GFX8-GISEL-NEXT: buffer_load_dword v5, v5, s[0:3], 0 offen11387; GFX8-GISEL-NEXT: buffer_load_dword v6, v6, s[0:3], 0 offen11388; GFX8-GISEL-NEXT: buffer_load_dword v7, v7, s[0:3], 0 offen11389; GFX8-GISEL-NEXT: buffer_load_dword v8, v8, s[0:3], 0 offen11390; GFX8-GISEL-NEXT: v_add_u32_e32 v9, vcc, 4, v111391; GFX8-GISEL-NEXT: v_add_u32_e32 v10, vcc, 8, v111392; GFX8-GISEL-NEXT: v_add_u32_e32 v11, vcc, 12, v111393; GFX8-GISEL-NEXT: v_add_u32_e32 v12, vcc, 16, v111394; GFX8-GISEL-NEXT: v_add_u32_e32 v13, vcc, 20, v111395; GFX8-GISEL-NEXT: v_add_u32_e32 v14, vcc, 24, v111396; GFX8-GISEL-NEXT: v_add_u32_e32 v15, vcc, 28, v111397; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)11398; GFX8-GISEL-NEXT: buffer_store_dword v0, v1, s[0:3], 0 offen11399; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)11400; GFX8-GISEL-NEXT: buffer_store_dword v2, v9, s[0:3], 0 offen11401; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)11402; GFX8-GISEL-NEXT: buffer_store_dword v3, v10, s[0:3], 0 offen11403; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)11404; GFX8-GISEL-NEXT: buffer_store_dword v4, v11, s[0:3], 0 offen11405; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)11406; GFX8-GISEL-NEXT: buffer_store_dword v5, v12, s[0:3], 0 offen11407; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)11408; GFX8-GISEL-NEXT: buffer_store_dword v6, v13, s[0:3], 0 offen11409; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)11410; GFX8-GISEL-NEXT: buffer_store_dword v7, v14, s[0:3], 0 offen11411; GFX8-GISEL-NEXT: s_waitcnt vmcnt(7)11412; GFX8-GISEL-NEXT: buffer_store_dword v8, v15, s[0:3], 0 offen11413; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)11414; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]11415;11416; GFX9-LABEL: freeze_v8p5:11417; GFX9: ; %bb.0:11418; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11419; GFX9-NEXT: buffer_load_dword v2, v0, s[0:3], 0 offen11420; GFX9-NEXT: buffer_load_dword v3, v0, s[0:3], 0 offen offset:411421; GFX9-NEXT: buffer_load_dword v4, v0, s[0:3], 0 offen offset:811422; GFX9-NEXT: buffer_load_dword v5, v0, s[0:3], 0 offen offset:1211423; GFX9-NEXT: buffer_load_dword v6, v0, s[0:3], 0 offen offset:1611424; GFX9-NEXT: buffer_load_dword v7, v0, s[0:3], 0 offen offset:2011425; GFX9-NEXT: buffer_load_dword v8, v0, s[0:3], 0 offen offset:2411426; GFX9-NEXT: buffer_load_dword v9, v0, s[0:3], 0 offen offset:2811427; GFX9-NEXT: s_waitcnt vmcnt(7)11428; GFX9-NEXT: buffer_store_dword v2, v1, s[0:3], 0 offen11429; GFX9-NEXT: s_waitcnt vmcnt(7)11430; GFX9-NEXT: buffer_store_dword v3, v1, s[0:3], 0 offen offset:411431; GFX9-NEXT: s_waitcnt vmcnt(7)11432; GFX9-NEXT: buffer_store_dword v4, v1, s[0:3], 0 offen offset:811433; GFX9-NEXT: s_waitcnt vmcnt(7)11434; GFX9-NEXT: buffer_store_dword v5, v1, s[0:3], 0 offen offset:1211435; GFX9-NEXT: s_waitcnt vmcnt(7)11436; GFX9-NEXT: buffer_store_dword v6, v1, s[0:3], 0 offen offset:1611437; GFX9-NEXT: s_waitcnt vmcnt(7)11438; GFX9-NEXT: buffer_store_dword v7, v1, s[0:3], 0 offen offset:2011439; GFX9-NEXT: s_waitcnt vmcnt(7)11440; GFX9-NEXT: buffer_store_dword v8, v1, s[0:3], 0 offen offset:2411441; GFX9-NEXT: s_waitcnt vmcnt(7)11442; GFX9-NEXT: buffer_store_dword v9, v1, s[0:3], 0 offen offset:2811443; GFX9-NEXT: s_waitcnt vmcnt(0)11444; GFX9-NEXT: s_setpc_b64 s[30:31]11445;11446; GFX10-LABEL: freeze_v8p5:11447; GFX10: ; %bb.0:11448; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11449; GFX10-NEXT: s_clause 0x711450; GFX10-NEXT: buffer_load_dword v2, v0, s[0:3], 0 offen11451; GFX10-NEXT: buffer_load_dword v3, v0, s[0:3], 0 offen offset:411452; GFX10-NEXT: buffer_load_dword v4, v0, s[0:3], 0 offen offset:811453; GFX10-NEXT: buffer_load_dword v5, v0, s[0:3], 0 offen offset:1211454; GFX10-NEXT: buffer_load_dword v6, v0, s[0:3], 0 offen offset:1611455; GFX10-NEXT: buffer_load_dword v7, v0, s[0:3], 0 offen offset:2011456; GFX10-NEXT: buffer_load_dword v8, v0, s[0:3], 0 offen offset:2411457; GFX10-NEXT: buffer_load_dword v9, v0, s[0:3], 0 offen offset:2811458; GFX10-NEXT: s_waitcnt vmcnt(7)11459; GFX10-NEXT: buffer_store_dword v2, v1, s[0:3], 0 offen11460; GFX10-NEXT: s_waitcnt vmcnt(6)11461; GFX10-NEXT: buffer_store_dword v3, v1, s[0:3], 0 offen offset:411462; GFX10-NEXT: s_waitcnt vmcnt(5)11463; GFX10-NEXT: buffer_store_dword v4, v1, s[0:3], 0 offen offset:811464; GFX10-NEXT: s_waitcnt vmcnt(4)11465; GFX10-NEXT: buffer_store_dword v5, v1, s[0:3], 0 offen offset:1211466; GFX10-NEXT: s_waitcnt vmcnt(3)11467; GFX10-NEXT: buffer_store_dword v6, v1, s[0:3], 0 offen offset:1611468; GFX10-NEXT: s_waitcnt vmcnt(2)11469; GFX10-NEXT: buffer_store_dword v7, v1, s[0:3], 0 offen offset:2011470; GFX10-NEXT: s_waitcnt vmcnt(1)11471; GFX10-NEXT: buffer_store_dword v8, v1, s[0:3], 0 offen offset:2411472; GFX10-NEXT: s_waitcnt vmcnt(0)11473; GFX10-NEXT: buffer_store_dword v9, v1, s[0:3], 0 offen offset:2811474; GFX10-NEXT: s_setpc_b64 s[30:31]11475;11476; GFX11-SDAG-LABEL: freeze_v8p5:11477; GFX11-SDAG: ; %bb.0:11478; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11479; GFX11-SDAG-NEXT: s_clause 0x111480; GFX11-SDAG-NEXT: scratch_load_b128 v[2:5], v0, off offset:1611481; GFX11-SDAG-NEXT: scratch_load_b128 v[6:9], v0, off11482; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1)11483; GFX11-SDAG-NEXT: scratch_store_b128 v1, v[2:5], off offset:1611484; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0)11485; GFX11-SDAG-NEXT: scratch_store_b128 v1, v[6:9], off11486; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]11487;11488; GFX11-GISEL-LABEL: freeze_v8p5:11489; GFX11-GISEL: ; %bb.0:11490; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11491; GFX11-GISEL-NEXT: s_clause 0x111492; GFX11-GISEL-NEXT: scratch_load_b128 v[2:5], v0, off11493; GFX11-GISEL-NEXT: scratch_load_b128 v[6:9], v0, off offset:1611494; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1)11495; GFX11-GISEL-NEXT: scratch_store_b128 v1, v[2:5], off11496; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)11497; GFX11-GISEL-NEXT: scratch_store_b128 v1, v[6:9], off offset:1611498; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]11499 %a = load <8 x ptr addrspace(5)>, ptr addrspace(5) %ptra11500 %freeze = freeze <8 x ptr addrspace(5)> %a11501 store <8 x ptr addrspace(5)> %freeze, ptr addrspace(5) %ptrb11502 ret void11503}11504 11505define void @freeze_v16p5(ptr addrspace(5) %ptra, ptr addrspace(5) %ptrb) {11506; GFX6-SDAG-LABEL: freeze_v16p5:11507; GFX6-SDAG: ; %bb.0:11508; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11509; GFX6-SDAG-NEXT: v_add_i32_e32 v5, vcc, 16, v011510; GFX6-SDAG-NEXT: v_add_i32_e32 v6, vcc, 12, v011511; GFX6-SDAG-NEXT: v_add_i32_e32 v7, vcc, 8, v011512; GFX6-SDAG-NEXT: v_add_i32_e32 v8, vcc, 4, v011513; GFX6-SDAG-NEXT: buffer_load_dword v5, v5, s[0:3], 0 offen11514; GFX6-SDAG-NEXT: buffer_load_dword v6, v6, s[0:3], 0 offen11515; GFX6-SDAG-NEXT: buffer_load_dword v7, v7, s[0:3], 0 offen11516; GFX6-SDAG-NEXT: buffer_load_dword v8, v8, s[0:3], 0 offen11517; GFX6-SDAG-NEXT: v_add_i32_e32 v2, vcc, 56, v011518; GFX6-SDAG-NEXT: v_add_i32_e32 v3, vcc, 52, v011519; GFX6-SDAG-NEXT: v_add_i32_e32 v4, vcc, 48, v011520; GFX6-SDAG-NEXT: v_add_i32_e32 v9, vcc, 44, v011521; GFX6-SDAG-NEXT: v_add_i32_e32 v10, vcc, 40, v011522; GFX6-SDAG-NEXT: v_add_i32_e32 v11, vcc, 36, v011523; GFX6-SDAG-NEXT: v_add_i32_e32 v12, vcc, 32, v011524; GFX6-SDAG-NEXT: v_add_i32_e32 v13, vcc, 28, v011525; GFX6-SDAG-NEXT: v_add_i32_e32 v14, vcc, 24, v011526; GFX6-SDAG-NEXT: v_add_i32_e32 v15, vcc, 20, v011527; GFX6-SDAG-NEXT: buffer_load_dword v2, v2, s[0:3], 0 offen11528; GFX6-SDAG-NEXT: buffer_load_dword v3, v3, s[0:3], 0 offen11529; GFX6-SDAG-NEXT: buffer_load_dword v4, v4, s[0:3], 0 offen11530; GFX6-SDAG-NEXT: buffer_load_dword v9, v9, s[0:3], 0 offen11531; GFX6-SDAG-NEXT: buffer_load_dword v10, v10, s[0:3], 0 offen11532; GFX6-SDAG-NEXT: buffer_load_dword v11, v11, s[0:3], 0 offen11533; GFX6-SDAG-NEXT: buffer_load_dword v16, v0, s[0:3], 0 offen11534; GFX6-SDAG-NEXT: buffer_load_dword v15, v15, s[0:3], 0 offen11535; GFX6-SDAG-NEXT: buffer_load_dword v14, v14, s[0:3], 0 offen11536; GFX6-SDAG-NEXT: buffer_load_dword v13, v13, s[0:3], 0 offen11537; GFX6-SDAG-NEXT: buffer_load_dword v12, v12, s[0:3], 0 offen11538; GFX6-SDAG-NEXT: v_add_i32_e32 v0, vcc, 60, v011539; GFX6-SDAG-NEXT: buffer_load_dword v0, v0, s[0:3], 0 offen11540; GFX6-SDAG-NEXT: v_add_i32_e32 v17, vcc, 4, v111541; GFX6-SDAG-NEXT: v_add_i32_e32 v18, vcc, 8, v111542; GFX6-SDAG-NEXT: v_add_i32_e32 v19, vcc, 12, v111543; GFX6-SDAG-NEXT: s_waitcnt vmcnt(14)11544; GFX6-SDAG-NEXT: buffer_store_dword v6, v19, s[0:3], 0 offen11545; GFX6-SDAG-NEXT: s_waitcnt vmcnt(14)11546; GFX6-SDAG-NEXT: buffer_store_dword v7, v18, s[0:3], 0 offen11547; GFX6-SDAG-NEXT: s_waitcnt vmcnt(14)11548; GFX6-SDAG-NEXT: buffer_store_dword v8, v17, s[0:3], 0 offen11549; GFX6-SDAG-NEXT: s_waitcnt expcnt(0)11550; GFX6-SDAG-NEXT: v_add_i32_e32 v8, vcc, 16, v111551; GFX6-SDAG-NEXT: buffer_store_dword v5, v8, s[0:3], 0 offen11552; GFX6-SDAG-NEXT: s_waitcnt expcnt(0)11553; GFX6-SDAG-NEXT: v_add_i32_e32 v5, vcc, 40, v111554; GFX6-SDAG-NEXT: v_add_i32_e32 v17, vcc, 20, v111555; GFX6-SDAG-NEXT: v_add_i32_e32 v7, vcc, 24, v111556; GFX6-SDAG-NEXT: v_add_i32_e32 v18, vcc, 28, v111557; GFX6-SDAG-NEXT: v_add_i32_e32 v6, vcc, 32, v111558; GFX6-SDAG-NEXT: v_add_i32_e32 v19, vcc, 36, v111559; GFX6-SDAG-NEXT: v_add_i32_e32 v8, vcc, 44, v111560; GFX6-SDAG-NEXT: s_waitcnt vmcnt(9)11561; GFX6-SDAG-NEXT: buffer_store_dword v16, v1, s[0:3], 0 offen11562; GFX6-SDAG-NEXT: s_waitcnt vmcnt(9)11563; GFX6-SDAG-NEXT: buffer_store_dword v15, v17, s[0:3], 0 offen11564; GFX6-SDAG-NEXT: s_waitcnt vmcnt(9)11565; GFX6-SDAG-NEXT: buffer_store_dword v14, v7, s[0:3], 0 offen11566; GFX6-SDAG-NEXT: s_waitcnt vmcnt(9)11567; GFX6-SDAG-NEXT: buffer_store_dword v13, v18, s[0:3], 0 offen11568; GFX6-SDAG-NEXT: s_waitcnt vmcnt(9)11569; GFX6-SDAG-NEXT: buffer_store_dword v12, v6, s[0:3], 0 offen11570; GFX6-SDAG-NEXT: buffer_store_dword v11, v19, s[0:3], 0 offen11571; GFX6-SDAG-NEXT: buffer_store_dword v10, v5, s[0:3], 0 offen11572; GFX6-SDAG-NEXT: buffer_store_dword v9, v8, s[0:3], 0 offen11573; GFX6-SDAG-NEXT: v_add_i32_e32 v5, vcc, 48, v111574; GFX6-SDAG-NEXT: buffer_store_dword v4, v5, s[0:3], 0 offen11575; GFX6-SDAG-NEXT: s_waitcnt expcnt(0)11576; GFX6-SDAG-NEXT: v_add_i32_e32 v4, vcc, 52, v111577; GFX6-SDAG-NEXT: buffer_store_dword v3, v4, s[0:3], 0 offen11578; GFX6-SDAG-NEXT: s_waitcnt expcnt(0)11579; GFX6-SDAG-NEXT: v_add_i32_e32 v3, vcc, 56, v111580; GFX6-SDAG-NEXT: v_add_i32_e32 v1, vcc, 60, v111581; GFX6-SDAG-NEXT: buffer_store_dword v2, v3, s[0:3], 0 offen11582; GFX6-SDAG-NEXT: s_waitcnt vmcnt(14)11583; GFX6-SDAG-NEXT: buffer_store_dword v0, v1, s[0:3], 0 offen11584; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)11585; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]11586;11587; GFX6-GISEL-LABEL: freeze_v16p5:11588; GFX6-GISEL: ; %bb.0:11589; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11590; GFX6-GISEL-NEXT: v_add_i32_e32 v2, vcc, 4, v011591; GFX6-GISEL-NEXT: v_add_i32_e32 v3, vcc, 8, v011592; GFX6-GISEL-NEXT: buffer_load_dword v2, v2, s[0:3], 0 offen11593; GFX6-GISEL-NEXT: buffer_load_dword v3, v3, s[0:3], 0 offen11594; GFX6-GISEL-NEXT: v_add_i32_e32 v4, vcc, 12, v011595; GFX6-GISEL-NEXT: v_add_i32_e32 v5, vcc, 16, v011596; GFX6-GISEL-NEXT: v_add_i32_e32 v6, vcc, 20, v011597; GFX6-GISEL-NEXT: v_add_i32_e32 v7, vcc, 24, v011598; GFX6-GISEL-NEXT: v_add_i32_e32 v8, vcc, 28, v011599; GFX6-GISEL-NEXT: v_add_i32_e32 v10, vcc, 32, v011600; GFX6-GISEL-NEXT: v_add_i32_e32 v11, vcc, 36, v011601; GFX6-GISEL-NEXT: v_add_i32_e32 v12, vcc, 40, v011602; GFX6-GISEL-NEXT: v_add_i32_e32 v13, vcc, 44, v011603; GFX6-GISEL-NEXT: buffer_load_dword v4, v4, s[0:3], 0 offen11604; GFX6-GISEL-NEXT: buffer_load_dword v9, v0, s[0:3], 0 offen11605; GFX6-GISEL-NEXT: buffer_load_dword v5, v5, s[0:3], 0 offen11606; GFX6-GISEL-NEXT: buffer_load_dword v6, v6, s[0:3], 0 offen11607; GFX6-GISEL-NEXT: buffer_load_dword v7, v7, s[0:3], 0 offen11608; GFX6-GISEL-NEXT: buffer_load_dword v8, v8, s[0:3], 0 offen11609; GFX6-GISEL-NEXT: buffer_load_dword v10, v10, s[0:3], 0 offen11610; GFX6-GISEL-NEXT: buffer_load_dword v11, v11, s[0:3], 0 offen11611; GFX6-GISEL-NEXT: buffer_load_dword v12, v12, s[0:3], 0 offen11612; GFX6-GISEL-NEXT: buffer_load_dword v13, v13, s[0:3], 0 offen11613; GFX6-GISEL-NEXT: v_add_i32_e32 v14, vcc, 48, v011614; GFX6-GISEL-NEXT: buffer_load_dword v14, v14, s[0:3], 0 offen11615; GFX6-GISEL-NEXT: v_add_i32_e32 v15, vcc, 52, v011616; GFX6-GISEL-NEXT: buffer_load_dword v15, v15, s[0:3], 0 offen11617; GFX6-GISEL-NEXT: v_add_i32_e32 v16, vcc, 56, v011618; GFX6-GISEL-NEXT: v_add_i32_e32 v0, vcc, 60, v011619; GFX6-GISEL-NEXT: buffer_load_dword v16, v16, s[0:3], 0 offen11620; GFX6-GISEL-NEXT: buffer_load_dword v0, v0, s[0:3], 0 offen11621; GFX6-GISEL-NEXT: v_add_i32_e32 v17, vcc, 4, v111622; GFX6-GISEL-NEXT: v_add_i32_e32 v18, vcc, 8, v111623; GFX6-GISEL-NEXT: v_add_i32_e32 v19, vcc, 12, v111624; GFX6-GISEL-NEXT: s_waitcnt vmcnt(14)11625; GFX6-GISEL-NEXT: buffer_store_dword v2, v17, s[0:3], 0 offen11626; GFX6-GISEL-NEXT: s_waitcnt expcnt(0)11627; GFX6-GISEL-NEXT: v_add_i32_e32 v2, vcc, 16, v111628; GFX6-GISEL-NEXT: v_add_i32_e32 v17, vcc, 20, v111629; GFX6-GISEL-NEXT: buffer_store_dword v3, v18, s[0:3], 0 offen11630; GFX6-GISEL-NEXT: s_waitcnt expcnt(0)11631; GFX6-GISEL-NEXT: v_add_i32_e32 v3, vcc, 24, v111632; GFX6-GISEL-NEXT: v_add_i32_e32 v18, vcc, 28, v111633; GFX6-GISEL-NEXT: s_waitcnt vmcnt(14)11634; GFX6-GISEL-NEXT: buffer_store_dword v4, v19, s[0:3], 0 offen11635; GFX6-GISEL-NEXT: s_waitcnt expcnt(0)11636; GFX6-GISEL-NEXT: v_add_i32_e32 v4, vcc, 32, v111637; GFX6-GISEL-NEXT: s_waitcnt vmcnt(14)11638; GFX6-GISEL-NEXT: buffer_store_dword v5, v2, s[0:3], 0 offen11639; GFX6-GISEL-NEXT: v_add_i32_e32 v2, vcc, 40, v111640; GFX6-GISEL-NEXT: v_add_i32_e32 v19, vcc, 36, v111641; GFX6-GISEL-NEXT: s_waitcnt expcnt(0)11642; GFX6-GISEL-NEXT: v_add_i32_e32 v5, vcc, 44, v111643; GFX6-GISEL-NEXT: buffer_store_dword v9, v1, s[0:3], 0 offen11644; GFX6-GISEL-NEXT: s_waitcnt vmcnt(14)11645; GFX6-GISEL-NEXT: buffer_store_dword v6, v17, s[0:3], 0 offen11646; GFX6-GISEL-NEXT: buffer_store_dword v7, v3, s[0:3], 0 offen11647; GFX6-GISEL-NEXT: s_waitcnt vmcnt(14)11648; GFX6-GISEL-NEXT: buffer_store_dword v8, v18, s[0:3], 0 offen11649; GFX6-GISEL-NEXT: buffer_store_dword v10, v4, s[0:3], 0 offen11650; GFX6-GISEL-NEXT: s_waitcnt vmcnt(14)11651; GFX6-GISEL-NEXT: buffer_store_dword v11, v19, s[0:3], 0 offen11652; GFX6-GISEL-NEXT: buffer_store_dword v12, v2, s[0:3], 0 offen11653; GFX6-GISEL-NEXT: s_waitcnt vmcnt(14)11654; GFX6-GISEL-NEXT: buffer_store_dword v13, v5, s[0:3], 0 offen11655; GFX6-GISEL-NEXT: v_add_i32_e32 v2, vcc, 48, v111656; GFX6-GISEL-NEXT: buffer_store_dword v14, v2, s[0:3], 0 offen11657; GFX6-GISEL-NEXT: v_add_i32_e32 v2, vcc, 52, v111658; GFX6-GISEL-NEXT: s_waitcnt vmcnt(14)11659; GFX6-GISEL-NEXT: buffer_store_dword v15, v2, s[0:3], 0 offen11660; GFX6-GISEL-NEXT: v_add_i32_e32 v2, vcc, 56, v111661; GFX6-GISEL-NEXT: v_add_i32_e32 v1, vcc, 60, v111662; GFX6-GISEL-NEXT: buffer_store_dword v16, v2, s[0:3], 0 offen11663; GFX6-GISEL-NEXT: s_waitcnt vmcnt(14)11664; GFX6-GISEL-NEXT: buffer_store_dword v0, v1, s[0:3], 0 offen11665; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)11666; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]11667;11668; GFX7-SDAG-LABEL: freeze_v16p5:11669; GFX7-SDAG: ; %bb.0:11670; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11671; GFX7-SDAG-NEXT: v_add_i32_e32 v5, vcc, 16, v011672; GFX7-SDAG-NEXT: v_add_i32_e32 v6, vcc, 12, v011673; GFX7-SDAG-NEXT: v_add_i32_e32 v7, vcc, 8, v011674; GFX7-SDAG-NEXT: v_add_i32_e32 v8, vcc, 4, v011675; GFX7-SDAG-NEXT: buffer_load_dword v5, v5, s[0:3], 0 offen11676; GFX7-SDAG-NEXT: buffer_load_dword v6, v6, s[0:3], 0 offen11677; GFX7-SDAG-NEXT: buffer_load_dword v7, v7, s[0:3], 0 offen11678; GFX7-SDAG-NEXT: buffer_load_dword v8, v8, s[0:3], 0 offen11679; GFX7-SDAG-NEXT: v_add_i32_e32 v2, vcc, 56, v011680; GFX7-SDAG-NEXT: v_add_i32_e32 v3, vcc, 52, v011681; GFX7-SDAG-NEXT: v_add_i32_e32 v4, vcc, 48, v011682; GFX7-SDAG-NEXT: v_add_i32_e32 v9, vcc, 44, v011683; GFX7-SDAG-NEXT: v_add_i32_e32 v10, vcc, 40, v011684; GFX7-SDAG-NEXT: v_add_i32_e32 v11, vcc, 36, v011685; GFX7-SDAG-NEXT: v_add_i32_e32 v12, vcc, 32, v011686; GFX7-SDAG-NEXT: v_add_i32_e32 v13, vcc, 28, v011687; GFX7-SDAG-NEXT: v_add_i32_e32 v14, vcc, 24, v011688; GFX7-SDAG-NEXT: v_add_i32_e32 v15, vcc, 20, v011689; GFX7-SDAG-NEXT: buffer_load_dword v2, v2, s[0:3], 0 offen11690; GFX7-SDAG-NEXT: buffer_load_dword v3, v3, s[0:3], 0 offen11691; GFX7-SDAG-NEXT: buffer_load_dword v4, v4, s[0:3], 0 offen11692; GFX7-SDAG-NEXT: buffer_load_dword v9, v9, s[0:3], 0 offen11693; GFX7-SDAG-NEXT: buffer_load_dword v10, v10, s[0:3], 0 offen11694; GFX7-SDAG-NEXT: buffer_load_dword v11, v11, s[0:3], 0 offen11695; GFX7-SDAG-NEXT: buffer_load_dword v16, v0, s[0:3], 0 offen11696; GFX7-SDAG-NEXT: buffer_load_dword v15, v15, s[0:3], 0 offen11697; GFX7-SDAG-NEXT: buffer_load_dword v14, v14, s[0:3], 0 offen11698; GFX7-SDAG-NEXT: buffer_load_dword v13, v13, s[0:3], 0 offen11699; GFX7-SDAG-NEXT: buffer_load_dword v12, v12, s[0:3], 0 offen11700; GFX7-SDAG-NEXT: v_add_i32_e32 v0, vcc, 60, v011701; GFX7-SDAG-NEXT: buffer_load_dword v0, v0, s[0:3], 0 offen11702; GFX7-SDAG-NEXT: v_add_i32_e32 v17, vcc, 4, v111703; GFX7-SDAG-NEXT: v_add_i32_e32 v18, vcc, 8, v111704; GFX7-SDAG-NEXT: v_add_i32_e32 v19, vcc, 12, v111705; GFX7-SDAG-NEXT: s_waitcnt vmcnt(14)11706; GFX7-SDAG-NEXT: buffer_store_dword v6, v19, s[0:3], 0 offen11707; GFX7-SDAG-NEXT: s_waitcnt vmcnt(14)11708; GFX7-SDAG-NEXT: buffer_store_dword v7, v18, s[0:3], 0 offen11709; GFX7-SDAG-NEXT: s_waitcnt vmcnt(14)11710; GFX7-SDAG-NEXT: buffer_store_dword v8, v17, s[0:3], 0 offen11711; GFX7-SDAG-NEXT: v_add_i32_e32 v8, vcc, 16, v111712; GFX7-SDAG-NEXT: buffer_store_dword v5, v8, s[0:3], 0 offen11713; GFX7-SDAG-NEXT: v_add_i32_e32 v5, vcc, 40, v111714; GFX7-SDAG-NEXT: v_add_i32_e32 v17, vcc, 20, v111715; GFX7-SDAG-NEXT: v_add_i32_e32 v7, vcc, 24, v111716; GFX7-SDAG-NEXT: v_add_i32_e32 v18, vcc, 28, v111717; GFX7-SDAG-NEXT: v_add_i32_e32 v6, vcc, 32, v111718; GFX7-SDAG-NEXT: v_add_i32_e32 v19, vcc, 36, v111719; GFX7-SDAG-NEXT: v_add_i32_e32 v8, vcc, 44, v111720; GFX7-SDAG-NEXT: s_waitcnt vmcnt(9)11721; GFX7-SDAG-NEXT: buffer_store_dword v16, v1, s[0:3], 0 offen11722; GFX7-SDAG-NEXT: s_waitcnt vmcnt(9)11723; GFX7-SDAG-NEXT: buffer_store_dword v15, v17, s[0:3], 0 offen11724; GFX7-SDAG-NEXT: s_waitcnt vmcnt(9)11725; GFX7-SDAG-NEXT: buffer_store_dword v14, v7, s[0:3], 0 offen11726; GFX7-SDAG-NEXT: s_waitcnt vmcnt(9)11727; GFX7-SDAG-NEXT: buffer_store_dword v13, v18, s[0:3], 0 offen11728; GFX7-SDAG-NEXT: s_waitcnt vmcnt(9)11729; GFX7-SDAG-NEXT: buffer_store_dword v12, v6, s[0:3], 0 offen11730; GFX7-SDAG-NEXT: buffer_store_dword v11, v19, s[0:3], 0 offen11731; GFX7-SDAG-NEXT: buffer_store_dword v10, v5, s[0:3], 0 offen11732; GFX7-SDAG-NEXT: buffer_store_dword v9, v8, s[0:3], 0 offen11733; GFX7-SDAG-NEXT: v_add_i32_e32 v5, vcc, 48, v111734; GFX7-SDAG-NEXT: buffer_store_dword v4, v5, s[0:3], 0 offen11735; GFX7-SDAG-NEXT: v_add_i32_e32 v4, vcc, 52, v111736; GFX7-SDAG-NEXT: buffer_store_dword v3, v4, s[0:3], 0 offen11737; GFX7-SDAG-NEXT: v_add_i32_e32 v3, vcc, 56, v111738; GFX7-SDAG-NEXT: v_add_i32_e32 v1, vcc, 60, v111739; GFX7-SDAG-NEXT: buffer_store_dword v2, v3, s[0:3], 0 offen11740; GFX7-SDAG-NEXT: s_waitcnt vmcnt(14)11741; GFX7-SDAG-NEXT: buffer_store_dword v0, v1, s[0:3], 0 offen11742; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)11743; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]11744;11745; GFX7-GISEL-LABEL: freeze_v16p5:11746; GFX7-GISEL: ; %bb.0:11747; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11748; GFX7-GISEL-NEXT: v_add_i32_e32 v2, vcc, 4, v011749; GFX7-GISEL-NEXT: v_add_i32_e32 v3, vcc, 8, v011750; GFX7-GISEL-NEXT: buffer_load_dword v2, v2, s[0:3], 0 offen11751; GFX7-GISEL-NEXT: buffer_load_dword v3, v3, s[0:3], 0 offen11752; GFX7-GISEL-NEXT: v_add_i32_e32 v4, vcc, 12, v011753; GFX7-GISEL-NEXT: v_add_i32_e32 v5, vcc, 16, v011754; GFX7-GISEL-NEXT: v_add_i32_e32 v6, vcc, 20, v011755; GFX7-GISEL-NEXT: v_add_i32_e32 v7, vcc, 24, v011756; GFX7-GISEL-NEXT: v_add_i32_e32 v8, vcc, 28, v011757; GFX7-GISEL-NEXT: v_add_i32_e32 v10, vcc, 32, v011758; GFX7-GISEL-NEXT: v_add_i32_e32 v11, vcc, 36, v011759; GFX7-GISEL-NEXT: v_add_i32_e32 v12, vcc, 40, v011760; GFX7-GISEL-NEXT: v_add_i32_e32 v13, vcc, 44, v011761; GFX7-GISEL-NEXT: buffer_load_dword v4, v4, s[0:3], 0 offen11762; GFX7-GISEL-NEXT: buffer_load_dword v9, v0, s[0:3], 0 offen11763; GFX7-GISEL-NEXT: buffer_load_dword v5, v5, s[0:3], 0 offen11764; GFX7-GISEL-NEXT: buffer_load_dword v6, v6, s[0:3], 0 offen11765; GFX7-GISEL-NEXT: buffer_load_dword v7, v7, s[0:3], 0 offen11766; GFX7-GISEL-NEXT: buffer_load_dword v8, v8, s[0:3], 0 offen11767; GFX7-GISEL-NEXT: buffer_load_dword v10, v10, s[0:3], 0 offen11768; GFX7-GISEL-NEXT: buffer_load_dword v11, v11, s[0:3], 0 offen11769; GFX7-GISEL-NEXT: buffer_load_dword v12, v12, s[0:3], 0 offen11770; GFX7-GISEL-NEXT: buffer_load_dword v13, v13, s[0:3], 0 offen11771; GFX7-GISEL-NEXT: v_add_i32_e32 v14, vcc, 48, v011772; GFX7-GISEL-NEXT: buffer_load_dword v14, v14, s[0:3], 0 offen11773; GFX7-GISEL-NEXT: v_add_i32_e32 v15, vcc, 52, v011774; GFX7-GISEL-NEXT: buffer_load_dword v15, v15, s[0:3], 0 offen11775; GFX7-GISEL-NEXT: v_add_i32_e32 v16, vcc, 56, v011776; GFX7-GISEL-NEXT: v_add_i32_e32 v0, vcc, 60, v011777; GFX7-GISEL-NEXT: buffer_load_dword v16, v16, s[0:3], 0 offen11778; GFX7-GISEL-NEXT: buffer_load_dword v0, v0, s[0:3], 0 offen11779; GFX7-GISEL-NEXT: v_add_i32_e32 v17, vcc, 4, v111780; GFX7-GISEL-NEXT: v_add_i32_e32 v18, vcc, 8, v111781; GFX7-GISEL-NEXT: v_add_i32_e32 v19, vcc, 12, v111782; GFX7-GISEL-NEXT: s_waitcnt vmcnt(14)11783; GFX7-GISEL-NEXT: buffer_store_dword v2, v17, s[0:3], 0 offen11784; GFX7-GISEL-NEXT: v_add_i32_e32 v2, vcc, 16, v111785; GFX7-GISEL-NEXT: v_add_i32_e32 v17, vcc, 20, v111786; GFX7-GISEL-NEXT: buffer_store_dword v3, v18, s[0:3], 0 offen11787; GFX7-GISEL-NEXT: v_add_i32_e32 v3, vcc, 24, v111788; GFX7-GISEL-NEXT: v_add_i32_e32 v18, vcc, 28, v111789; GFX7-GISEL-NEXT: s_waitcnt vmcnt(14)11790; GFX7-GISEL-NEXT: buffer_store_dword v4, v19, s[0:3], 0 offen11791; GFX7-GISEL-NEXT: v_add_i32_e32 v4, vcc, 32, v111792; GFX7-GISEL-NEXT: s_waitcnt vmcnt(14)11793; GFX7-GISEL-NEXT: buffer_store_dword v5, v2, s[0:3], 0 offen11794; GFX7-GISEL-NEXT: v_add_i32_e32 v2, vcc, 40, v111795; GFX7-GISEL-NEXT: v_add_i32_e32 v19, vcc, 36, v111796; GFX7-GISEL-NEXT: v_add_i32_e32 v5, vcc, 44, v111797; GFX7-GISEL-NEXT: buffer_store_dword v9, v1, s[0:3], 0 offen11798; GFX7-GISEL-NEXT: s_waitcnt vmcnt(14)11799; GFX7-GISEL-NEXT: buffer_store_dword v6, v17, s[0:3], 0 offen11800; GFX7-GISEL-NEXT: buffer_store_dword v7, v3, s[0:3], 0 offen11801; GFX7-GISEL-NEXT: s_waitcnt vmcnt(14)11802; GFX7-GISEL-NEXT: buffer_store_dword v8, v18, s[0:3], 0 offen11803; GFX7-GISEL-NEXT: buffer_store_dword v10, v4, s[0:3], 0 offen11804; GFX7-GISEL-NEXT: s_waitcnt vmcnt(14)11805; GFX7-GISEL-NEXT: buffer_store_dword v11, v19, s[0:3], 0 offen11806; GFX7-GISEL-NEXT: buffer_store_dword v12, v2, s[0:3], 0 offen11807; GFX7-GISEL-NEXT: s_waitcnt vmcnt(14)11808; GFX7-GISEL-NEXT: buffer_store_dword v13, v5, s[0:3], 0 offen11809; GFX7-GISEL-NEXT: v_add_i32_e32 v2, vcc, 48, v111810; GFX7-GISEL-NEXT: buffer_store_dword v14, v2, s[0:3], 0 offen11811; GFX7-GISEL-NEXT: v_add_i32_e32 v2, vcc, 52, v111812; GFX7-GISEL-NEXT: s_waitcnt vmcnt(14)11813; GFX7-GISEL-NEXT: buffer_store_dword v15, v2, s[0:3], 0 offen11814; GFX7-GISEL-NEXT: v_add_i32_e32 v2, vcc, 56, v111815; GFX7-GISEL-NEXT: v_add_i32_e32 v1, vcc, 60, v111816; GFX7-GISEL-NEXT: buffer_store_dword v16, v2, s[0:3], 0 offen11817; GFX7-GISEL-NEXT: s_waitcnt vmcnt(14)11818; GFX7-GISEL-NEXT: buffer_store_dword v0, v1, s[0:3], 0 offen11819; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)11820; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]11821;11822; GFX8-GISEL-LABEL: freeze_v16p5:11823; GFX8-GISEL: ; %bb.0:11824; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11825; GFX8-GISEL-NEXT: v_add_u32_e32 v2, vcc, 4, v011826; GFX8-GISEL-NEXT: v_add_u32_e32 v3, vcc, 8, v011827; GFX8-GISEL-NEXT: buffer_load_dword v2, v2, s[0:3], 0 offen11828; GFX8-GISEL-NEXT: buffer_load_dword v3, v3, s[0:3], 0 offen11829; GFX8-GISEL-NEXT: v_add_u32_e32 v4, vcc, 12, v011830; GFX8-GISEL-NEXT: v_add_u32_e32 v5, vcc, 16, v011831; GFX8-GISEL-NEXT: v_add_u32_e32 v6, vcc, 20, v011832; GFX8-GISEL-NEXT: v_add_u32_e32 v7, vcc, 24, v011833; GFX8-GISEL-NEXT: v_add_u32_e32 v8, vcc, 28, v011834; GFX8-GISEL-NEXT: v_add_u32_e32 v10, vcc, 32, v011835; GFX8-GISEL-NEXT: v_add_u32_e32 v11, vcc, 36, v011836; GFX8-GISEL-NEXT: v_add_u32_e32 v12, vcc, 40, v011837; GFX8-GISEL-NEXT: v_add_u32_e32 v13, vcc, 44, v011838; GFX8-GISEL-NEXT: buffer_load_dword v4, v4, s[0:3], 0 offen11839; GFX8-GISEL-NEXT: buffer_load_dword v9, v0, s[0:3], 0 offen11840; GFX8-GISEL-NEXT: buffer_load_dword v5, v5, s[0:3], 0 offen11841; GFX8-GISEL-NEXT: buffer_load_dword v6, v6, s[0:3], 0 offen11842; GFX8-GISEL-NEXT: buffer_load_dword v7, v7, s[0:3], 0 offen11843; GFX8-GISEL-NEXT: buffer_load_dword v8, v8, s[0:3], 0 offen11844; GFX8-GISEL-NEXT: buffer_load_dword v10, v10, s[0:3], 0 offen11845; GFX8-GISEL-NEXT: buffer_load_dword v11, v11, s[0:3], 0 offen11846; GFX8-GISEL-NEXT: buffer_load_dword v12, v12, s[0:3], 0 offen11847; GFX8-GISEL-NEXT: buffer_load_dword v13, v13, s[0:3], 0 offen11848; GFX8-GISEL-NEXT: v_add_u32_e32 v14, vcc, 48, v011849; GFX8-GISEL-NEXT: buffer_load_dword v14, v14, s[0:3], 0 offen11850; GFX8-GISEL-NEXT: v_add_u32_e32 v15, vcc, 52, v011851; GFX8-GISEL-NEXT: buffer_load_dword v15, v15, s[0:3], 0 offen11852; GFX8-GISEL-NEXT: v_add_u32_e32 v16, vcc, 56, v011853; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 60, v011854; GFX8-GISEL-NEXT: buffer_load_dword v16, v16, s[0:3], 0 offen11855; GFX8-GISEL-NEXT: buffer_load_dword v0, v0, s[0:3], 0 offen11856; GFX8-GISEL-NEXT: v_add_u32_e32 v17, vcc, 4, v111857; GFX8-GISEL-NEXT: v_add_u32_e32 v18, vcc, 8, v111858; GFX8-GISEL-NEXT: v_add_u32_e32 v19, vcc, 12, v111859; GFX8-GISEL-NEXT: s_waitcnt vmcnt(14)11860; GFX8-GISEL-NEXT: buffer_store_dword v2, v17, s[0:3], 0 offen11861; GFX8-GISEL-NEXT: v_add_u32_e32 v2, vcc, 16, v111862; GFX8-GISEL-NEXT: v_add_u32_e32 v17, vcc, 20, v111863; GFX8-GISEL-NEXT: buffer_store_dword v3, v18, s[0:3], 0 offen11864; GFX8-GISEL-NEXT: v_add_u32_e32 v3, vcc, 24, v111865; GFX8-GISEL-NEXT: v_add_u32_e32 v18, vcc, 28, v111866; GFX8-GISEL-NEXT: s_waitcnt vmcnt(14)11867; GFX8-GISEL-NEXT: buffer_store_dword v4, v19, s[0:3], 0 offen11868; GFX8-GISEL-NEXT: v_add_u32_e32 v4, vcc, 32, v111869; GFX8-GISEL-NEXT: s_waitcnt vmcnt(14)11870; GFX8-GISEL-NEXT: buffer_store_dword v5, v2, s[0:3], 0 offen11871; GFX8-GISEL-NEXT: v_add_u32_e32 v2, vcc, 40, v111872; GFX8-GISEL-NEXT: v_add_u32_e32 v19, vcc, 36, v111873; GFX8-GISEL-NEXT: v_add_u32_e32 v5, vcc, 44, v111874; GFX8-GISEL-NEXT: buffer_store_dword v9, v1, s[0:3], 0 offen11875; GFX8-GISEL-NEXT: s_waitcnt vmcnt(14)11876; GFX8-GISEL-NEXT: buffer_store_dword v6, v17, s[0:3], 0 offen11877; GFX8-GISEL-NEXT: buffer_store_dword v7, v3, s[0:3], 0 offen11878; GFX8-GISEL-NEXT: s_waitcnt vmcnt(14)11879; GFX8-GISEL-NEXT: buffer_store_dword v8, v18, s[0:3], 0 offen11880; GFX8-GISEL-NEXT: buffer_store_dword v10, v4, s[0:3], 0 offen11881; GFX8-GISEL-NEXT: s_waitcnt vmcnt(14)11882; GFX8-GISEL-NEXT: buffer_store_dword v11, v19, s[0:3], 0 offen11883; GFX8-GISEL-NEXT: buffer_store_dword v12, v2, s[0:3], 0 offen11884; GFX8-GISEL-NEXT: s_waitcnt vmcnt(14)11885; GFX8-GISEL-NEXT: buffer_store_dword v13, v5, s[0:3], 0 offen11886; GFX8-GISEL-NEXT: v_add_u32_e32 v2, vcc, 48, v111887; GFX8-GISEL-NEXT: buffer_store_dword v14, v2, s[0:3], 0 offen11888; GFX8-GISEL-NEXT: v_add_u32_e32 v2, vcc, 52, v111889; GFX8-GISEL-NEXT: s_waitcnt vmcnt(14)11890; GFX8-GISEL-NEXT: buffer_store_dword v15, v2, s[0:3], 0 offen11891; GFX8-GISEL-NEXT: v_add_u32_e32 v2, vcc, 56, v111892; GFX8-GISEL-NEXT: v_add_u32_e32 v1, vcc, 60, v111893; GFX8-GISEL-NEXT: buffer_store_dword v16, v2, s[0:3], 0 offen11894; GFX8-GISEL-NEXT: s_waitcnt vmcnt(14)11895; GFX8-GISEL-NEXT: buffer_store_dword v0, v1, s[0:3], 0 offen11896; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)11897; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]11898;11899; GFX9-LABEL: freeze_v16p5:11900; GFX9: ; %bb.0:11901; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11902; GFX9-NEXT: buffer_load_dword v2, v0, s[0:3], 0 offen11903; GFX9-NEXT: buffer_load_dword v3, v0, s[0:3], 0 offen offset:411904; GFX9-NEXT: buffer_load_dword v4, v0, s[0:3], 0 offen offset:811905; GFX9-NEXT: buffer_load_dword v5, v0, s[0:3], 0 offen offset:1211906; GFX9-NEXT: buffer_load_dword v6, v0, s[0:3], 0 offen offset:1611907; GFX9-NEXT: buffer_load_dword v7, v0, s[0:3], 0 offen offset:2011908; GFX9-NEXT: buffer_load_dword v8, v0, s[0:3], 0 offen offset:2411909; GFX9-NEXT: buffer_load_dword v9, v0, s[0:3], 0 offen offset:2811910; GFX9-NEXT: buffer_load_dword v10, v0, s[0:3], 0 offen offset:3211911; GFX9-NEXT: buffer_load_dword v11, v0, s[0:3], 0 offen offset:3611912; GFX9-NEXT: buffer_load_dword v12, v0, s[0:3], 0 offen offset:4011913; GFX9-NEXT: buffer_load_dword v13, v0, s[0:3], 0 offen offset:4411914; GFX9-NEXT: buffer_load_dword v14, v0, s[0:3], 0 offen offset:4811915; GFX9-NEXT: buffer_load_dword v15, v0, s[0:3], 0 offen offset:5211916; GFX9-NEXT: buffer_load_dword v16, v0, s[0:3], 0 offen offset:5611917; GFX9-NEXT: s_nop 011918; GFX9-NEXT: buffer_load_dword v0, v0, s[0:3], 0 offen offset:6011919; GFX9-NEXT: s_waitcnt vmcnt(15)11920; GFX9-NEXT: buffer_store_dword v2, v1, s[0:3], 0 offen11921; GFX9-NEXT: s_waitcnt vmcnt(15)11922; GFX9-NEXT: buffer_store_dword v3, v1, s[0:3], 0 offen offset:411923; GFX9-NEXT: s_waitcnt vmcnt(15)11924; GFX9-NEXT: buffer_store_dword v4, v1, s[0:3], 0 offen offset:811925; GFX9-NEXT: s_waitcnt vmcnt(15)11926; GFX9-NEXT: buffer_store_dword v5, v1, s[0:3], 0 offen offset:1211927; GFX9-NEXT: s_waitcnt vmcnt(15)11928; GFX9-NEXT: buffer_store_dword v6, v1, s[0:3], 0 offen offset:1611929; GFX9-NEXT: s_waitcnt vmcnt(15)11930; GFX9-NEXT: buffer_store_dword v7, v1, s[0:3], 0 offen offset:2011931; GFX9-NEXT: s_waitcnt vmcnt(15)11932; GFX9-NEXT: buffer_store_dword v8, v1, s[0:3], 0 offen offset:2411933; GFX9-NEXT: s_waitcnt vmcnt(15)11934; GFX9-NEXT: buffer_store_dword v9, v1, s[0:3], 0 offen offset:2811935; GFX9-NEXT: s_waitcnt vmcnt(15)11936; GFX9-NEXT: buffer_store_dword v10, v1, s[0:3], 0 offen offset:3211937; GFX9-NEXT: s_waitcnt vmcnt(15)11938; GFX9-NEXT: buffer_store_dword v11, v1, s[0:3], 0 offen offset:3611939; GFX9-NEXT: s_waitcnt vmcnt(15)11940; GFX9-NEXT: buffer_store_dword v12, v1, s[0:3], 0 offen offset:4011941; GFX9-NEXT: s_waitcnt vmcnt(15)11942; GFX9-NEXT: buffer_store_dword v13, v1, s[0:3], 0 offen offset:4411943; GFX9-NEXT: s_waitcnt vmcnt(15)11944; GFX9-NEXT: buffer_store_dword v14, v1, s[0:3], 0 offen offset:4811945; GFX9-NEXT: s_waitcnt vmcnt(15)11946; GFX9-NEXT: buffer_store_dword v15, v1, s[0:3], 0 offen offset:5211947; GFX9-NEXT: s_waitcnt vmcnt(15)11948; GFX9-NEXT: buffer_store_dword v16, v1, s[0:3], 0 offen offset:5611949; GFX9-NEXT: s_waitcnt vmcnt(15)11950; GFX9-NEXT: buffer_store_dword v0, v1, s[0:3], 0 offen offset:6011951; GFX9-NEXT: s_waitcnt vmcnt(0)11952; GFX9-NEXT: s_setpc_b64 s[30:31]11953;11954; GFX10-LABEL: freeze_v16p5:11955; GFX10: ; %bb.0:11956; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11957; GFX10-NEXT: s_clause 0xf11958; GFX10-NEXT: buffer_load_dword v2, v0, s[0:3], 0 offen11959; GFX10-NEXT: buffer_load_dword v3, v0, s[0:3], 0 offen offset:411960; GFX10-NEXT: buffer_load_dword v4, v0, s[0:3], 0 offen offset:811961; GFX10-NEXT: buffer_load_dword v5, v0, s[0:3], 0 offen offset:1211962; GFX10-NEXT: buffer_load_dword v6, v0, s[0:3], 0 offen offset:1611963; GFX10-NEXT: buffer_load_dword v7, v0, s[0:3], 0 offen offset:2011964; GFX10-NEXT: buffer_load_dword v8, v0, s[0:3], 0 offen offset:2411965; GFX10-NEXT: buffer_load_dword v9, v0, s[0:3], 0 offen offset:2811966; GFX10-NEXT: buffer_load_dword v10, v0, s[0:3], 0 offen offset:3211967; GFX10-NEXT: buffer_load_dword v11, v0, s[0:3], 0 offen offset:3611968; GFX10-NEXT: buffer_load_dword v12, v0, s[0:3], 0 offen offset:4011969; GFX10-NEXT: buffer_load_dword v13, v0, s[0:3], 0 offen offset:4411970; GFX10-NEXT: buffer_load_dword v14, v0, s[0:3], 0 offen offset:4811971; GFX10-NEXT: buffer_load_dword v15, v0, s[0:3], 0 offen offset:5211972; GFX10-NEXT: buffer_load_dword v16, v0, s[0:3], 0 offen offset:5611973; GFX10-NEXT: buffer_load_dword v0, v0, s[0:3], 0 offen offset:6011974; GFX10-NEXT: s_waitcnt vmcnt(15)11975; GFX10-NEXT: buffer_store_dword v2, v1, s[0:3], 0 offen11976; GFX10-NEXT: s_waitcnt vmcnt(14)11977; GFX10-NEXT: buffer_store_dword v3, v1, s[0:3], 0 offen offset:411978; GFX10-NEXT: s_waitcnt vmcnt(13)11979; GFX10-NEXT: buffer_store_dword v4, v1, s[0:3], 0 offen offset:811980; GFX10-NEXT: s_waitcnt vmcnt(12)11981; GFX10-NEXT: buffer_store_dword v5, v1, s[0:3], 0 offen offset:1211982; GFX10-NEXT: s_waitcnt vmcnt(11)11983; GFX10-NEXT: buffer_store_dword v6, v1, s[0:3], 0 offen offset:1611984; GFX10-NEXT: s_waitcnt vmcnt(10)11985; GFX10-NEXT: buffer_store_dword v7, v1, s[0:3], 0 offen offset:2011986; GFX10-NEXT: s_waitcnt vmcnt(9)11987; GFX10-NEXT: buffer_store_dword v8, v1, s[0:3], 0 offen offset:2411988; GFX10-NEXT: s_waitcnt vmcnt(8)11989; GFX10-NEXT: buffer_store_dword v9, v1, s[0:3], 0 offen offset:2811990; GFX10-NEXT: s_waitcnt vmcnt(7)11991; GFX10-NEXT: buffer_store_dword v10, v1, s[0:3], 0 offen offset:3211992; GFX10-NEXT: s_waitcnt vmcnt(6)11993; GFX10-NEXT: buffer_store_dword v11, v1, s[0:3], 0 offen offset:3611994; GFX10-NEXT: s_waitcnt vmcnt(5)11995; GFX10-NEXT: buffer_store_dword v12, v1, s[0:3], 0 offen offset:4011996; GFX10-NEXT: s_waitcnt vmcnt(4)11997; GFX10-NEXT: buffer_store_dword v13, v1, s[0:3], 0 offen offset:4411998; GFX10-NEXT: s_waitcnt vmcnt(3)11999; GFX10-NEXT: buffer_store_dword v14, v1, s[0:3], 0 offen offset:4812000; GFX10-NEXT: s_waitcnt vmcnt(2)12001; GFX10-NEXT: buffer_store_dword v15, v1, s[0:3], 0 offen offset:5212002; GFX10-NEXT: s_waitcnt vmcnt(1)12003; GFX10-NEXT: buffer_store_dword v16, v1, s[0:3], 0 offen offset:5612004; GFX10-NEXT: s_waitcnt vmcnt(0)12005; GFX10-NEXT: buffer_store_dword v0, v1, s[0:3], 0 offen offset:6012006; GFX10-NEXT: s_setpc_b64 s[30:31]12007;12008; GFX11-SDAG-LABEL: freeze_v16p5:12009; GFX11-SDAG: ; %bb.0:12010; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12011; GFX11-SDAG-NEXT: s_clause 0x312012; GFX11-SDAG-NEXT: scratch_load_b128 v[2:5], v0, off offset:3212013; GFX11-SDAG-NEXT: scratch_load_b128 v[6:9], v0, off offset:4812014; GFX11-SDAG-NEXT: scratch_load_b128 v[10:13], v0, off12015; GFX11-SDAG-NEXT: scratch_load_b128 v[14:17], v0, off offset:1612016; GFX11-SDAG-NEXT: s_waitcnt vmcnt(3)12017; GFX11-SDAG-NEXT: scratch_store_b128 v1, v[2:5], off offset:3212018; GFX11-SDAG-NEXT: s_waitcnt vmcnt(2)12019; GFX11-SDAG-NEXT: scratch_store_b128 v1, v[6:9], off offset:4812020; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1)12021; GFX11-SDAG-NEXT: scratch_store_b128 v1, v[10:13], off12022; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0)12023; GFX11-SDAG-NEXT: scratch_store_b128 v1, v[14:17], off offset:1612024; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]12025;12026; GFX11-GISEL-LABEL: freeze_v16p5:12027; GFX11-GISEL: ; %bb.0:12028; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12029; GFX11-GISEL-NEXT: s_clause 0x312030; GFX11-GISEL-NEXT: scratch_load_b128 v[2:5], v0, off12031; GFX11-GISEL-NEXT: scratch_load_b128 v[6:9], v0, off offset:1612032; GFX11-GISEL-NEXT: scratch_load_b128 v[10:13], v0, off offset:3212033; GFX11-GISEL-NEXT: scratch_load_b128 v[14:17], v0, off offset:4812034; GFX11-GISEL-NEXT: s_waitcnt vmcnt(3)12035; GFX11-GISEL-NEXT: scratch_store_b128 v1, v[2:5], off12036; GFX11-GISEL-NEXT: s_waitcnt vmcnt(2)12037; GFX11-GISEL-NEXT: scratch_store_b128 v1, v[6:9], off offset:1612038; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1)12039; GFX11-GISEL-NEXT: scratch_store_b128 v1, v[10:13], off offset:3212040; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)12041; GFX11-GISEL-NEXT: scratch_store_b128 v1, v[14:17], off offset:4812042; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]12043 %a = load <16 x ptr addrspace(5)>, ptr addrspace(5) %ptra12044 %freeze = freeze <16 x ptr addrspace(5)> %a12045 store <16 x ptr addrspace(5)> %freeze, ptr addrspace(5) %ptrb12046 ret void12047}12048 12049define void @freeze_i8(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {12050; GFX6-SDAG-LABEL: freeze_i8:12051; GFX6-SDAG: ; %bb.0:12052; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12053; GFX6-SDAG-NEXT: s_mov_b32 s6, 012054; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf00012055; GFX6-SDAG-NEXT: s_mov_b32 s4, s612056; GFX6-SDAG-NEXT: s_mov_b32 s5, s612057; GFX6-SDAG-NEXT: buffer_load_ubyte v0, v[0:1], s[4:7], 0 addr6412058; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0)12059; GFX6-SDAG-NEXT: buffer_store_byte v0, v[2:3], s[4:7], 0 addr6412060; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)12061; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]12062;12063; GFX6-GISEL-LABEL: freeze_i8:12064; GFX6-GISEL: ; %bb.0:12065; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12066; GFX6-GISEL-NEXT: s_mov_b32 s6, 012067; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf00012068; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 012069; GFX6-GISEL-NEXT: buffer_load_ubyte v0, v[0:1], s[4:7], 0 addr6412070; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0)12071; GFX6-GISEL-NEXT: buffer_store_byte v0, v[2:3], s[4:7], 0 addr6412072; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)12073; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]12074;12075; GFX7-SDAG-LABEL: freeze_i8:12076; GFX7-SDAG: ; %bb.0:12077; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12078; GFX7-SDAG-NEXT: s_mov_b32 s6, 012079; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf00012080; GFX7-SDAG-NEXT: s_mov_b32 s4, s612081; GFX7-SDAG-NEXT: s_mov_b32 s5, s612082; GFX7-SDAG-NEXT: buffer_load_ubyte v0, v[0:1], s[4:7], 0 addr6412083; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)12084; GFX7-SDAG-NEXT: buffer_store_byte v0, v[2:3], s[4:7], 0 addr6412085; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)12086; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]12087;12088; GFX7-GISEL-LABEL: freeze_i8:12089; GFX7-GISEL: ; %bb.0:12090; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12091; GFX7-GISEL-NEXT: s_mov_b32 s6, 012092; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf00012093; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 012094; GFX7-GISEL-NEXT: buffer_load_ubyte v0, v[0:1], s[4:7], 0 addr6412095; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)12096; GFX7-GISEL-NEXT: buffer_store_byte v0, v[2:3], s[4:7], 0 addr6412097; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)12098; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]12099;12100; GFX8-LABEL: freeze_i8:12101; GFX8: ; %bb.0:12102; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12103; GFX8-NEXT: flat_load_ubyte v0, v[0:1]12104; GFX8-NEXT: s_waitcnt vmcnt(0)12105; GFX8-NEXT: flat_store_byte v[2:3], v012106; GFX8-NEXT: s_waitcnt vmcnt(0)12107; GFX8-NEXT: s_setpc_b64 s[30:31]12108;12109; GFX9-LABEL: freeze_i8:12110; GFX9: ; %bb.0:12111; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12112; GFX9-NEXT: global_load_ubyte v0, v[0:1], off12113; GFX9-NEXT: s_waitcnt vmcnt(0)12114; GFX9-NEXT: global_store_byte v[2:3], v0, off12115; GFX9-NEXT: s_waitcnt vmcnt(0)12116; GFX9-NEXT: s_setpc_b64 s[30:31]12117;12118; GFX10-LABEL: freeze_i8:12119; GFX10: ; %bb.0:12120; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12121; GFX10-NEXT: global_load_ubyte v0, v[0:1], off12122; GFX10-NEXT: s_waitcnt vmcnt(0)12123; GFX10-NEXT: global_store_byte v[2:3], v0, off12124; GFX10-NEXT: s_setpc_b64 s[30:31]12125;12126; GFX11-SDAG-TRUE16-LABEL: freeze_i8:12127; GFX11-SDAG-TRUE16: ; %bb.0:12128; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12129; GFX11-SDAG-TRUE16-NEXT: global_load_d16_u8 v0, v[0:1], off12130; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0)12131; GFX11-SDAG-TRUE16-NEXT: global_store_b8 v[2:3], v0, off12132; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]12133;12134; GFX11-SDAG-FAKE16-LABEL: freeze_i8:12135; GFX11-SDAG-FAKE16: ; %bb.0:12136; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12137; GFX11-SDAG-FAKE16-NEXT: global_load_u8 v0, v[0:1], off12138; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0)12139; GFX11-SDAG-FAKE16-NEXT: global_store_b8 v[2:3], v0, off12140; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]12141;12142; GFX11-GISEL-LABEL: freeze_i8:12143; GFX11-GISEL: ; %bb.0:12144; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12145; GFX11-GISEL-NEXT: global_load_u8 v0, v[0:1], off12146; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)12147; GFX11-GISEL-NEXT: global_store_b8 v[2:3], v0, off12148; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]12149 %a = load i8, ptr addrspace(1) %ptra12150 %freeze = freeze i8 %a12151 store i8 %freeze, ptr addrspace(1) %ptrb12152 ret void12153}12154 12155define void @freeze_v2i8(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {12156; GFX6-SDAG-LABEL: freeze_v2i8:12157; GFX6-SDAG: ; %bb.0:12158; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12159; GFX6-SDAG-NEXT: s_mov_b32 s6, 012160; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf00012161; GFX6-SDAG-NEXT: s_mov_b32 s4, s612162; GFX6-SDAG-NEXT: s_mov_b32 s5, s612163; GFX6-SDAG-NEXT: buffer_load_ushort v0, v[0:1], s[4:7], 0 addr6412164; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0)12165; GFX6-SDAG-NEXT: buffer_store_short v0, v[2:3], s[4:7], 0 addr6412166; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)12167; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]12168;12169; GFX6-GISEL-LABEL: freeze_v2i8:12170; GFX6-GISEL: ; %bb.0:12171; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12172; GFX6-GISEL-NEXT: s_mov_b32 s6, 012173; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf00012174; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 012175; GFX6-GISEL-NEXT: buffer_load_ushort v0, v[0:1], s[4:7], 0 addr6412176; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0)12177; GFX6-GISEL-NEXT: v_lshrrev_b32_e32 v1, 8, v012178; GFX6-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v112179; GFX6-GISEL-NEXT: v_and_b32_e32 v0, 0xff, v012180; GFX6-GISEL-NEXT: v_lshlrev_b32_e32 v1, 8, v112181; GFX6-GISEL-NEXT: v_or_b32_e32 v0, v0, v112182; GFX6-GISEL-NEXT: buffer_store_short v0, v[2:3], s[4:7], 0 addr6412183; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)12184; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]12185;12186; GFX7-SDAG-LABEL: freeze_v2i8:12187; GFX7-SDAG: ; %bb.0:12188; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12189; GFX7-SDAG-NEXT: s_mov_b32 s6, 012190; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf00012191; GFX7-SDAG-NEXT: s_mov_b32 s4, s612192; GFX7-SDAG-NEXT: s_mov_b32 s5, s612193; GFX7-SDAG-NEXT: buffer_load_ushort v0, v[0:1], s[4:7], 0 addr6412194; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)12195; GFX7-SDAG-NEXT: buffer_store_short v0, v[2:3], s[4:7], 0 addr6412196; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)12197; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]12198;12199; GFX7-GISEL-LABEL: freeze_v2i8:12200; GFX7-GISEL: ; %bb.0:12201; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12202; GFX7-GISEL-NEXT: s_mov_b32 s6, 012203; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf00012204; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 012205; GFX7-GISEL-NEXT: buffer_load_ushort v0, v[0:1], s[4:7], 0 addr6412206; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)12207; GFX7-GISEL-NEXT: v_lshrrev_b32_e32 v1, 8, v012208; GFX7-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v112209; GFX7-GISEL-NEXT: v_and_b32_e32 v0, 0xff, v012210; GFX7-GISEL-NEXT: v_lshlrev_b32_e32 v1, 8, v112211; GFX7-GISEL-NEXT: v_or_b32_e32 v0, v0, v112212; GFX7-GISEL-NEXT: buffer_store_short v0, v[2:3], s[4:7], 0 addr6412213; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)12214; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]12215;12216; GFX8-GISEL-LABEL: freeze_v2i8:12217; GFX8-GISEL: ; %bb.0:12218; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12219; GFX8-GISEL-NEXT: flat_load_ushort v0, v[0:1]12220; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)12221; GFX8-GISEL-NEXT: v_lshrrev_b32_e32 v1, 8, v012222; GFX8-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v112223; GFX8-GISEL-NEXT: v_lshlrev_b16_e32 v1, 8, v112224; GFX8-GISEL-NEXT: v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD12225; GFX8-GISEL-NEXT: flat_store_short v[2:3], v012226; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)12227; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]12228;12229; GFX9-GISEL-LABEL: freeze_v2i8:12230; GFX9-GISEL: ; %bb.0:12231; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12232; GFX9-GISEL-NEXT: global_load_ushort v0, v[0:1], off12233; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)12234; GFX9-GISEL-NEXT: v_lshrrev_b32_e32 v1, 8, v012235; GFX9-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v112236; GFX9-GISEL-NEXT: v_lshlrev_b16_e32 v1, 8, v112237; GFX9-GISEL-NEXT: v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD12238; GFX9-GISEL-NEXT: global_store_short v[2:3], v0, off12239; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)12240; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]12241;12242; GFX10-SDAG-LABEL: freeze_v2i8:12243; GFX10-SDAG: ; %bb.0:12244; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12245; GFX10-SDAG-NEXT: global_load_ushort v0, v[0:1], off12246; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)12247; GFX10-SDAG-NEXT: global_store_short v[2:3], v0, off12248; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]12249;12250; GFX10-GISEL-LABEL: freeze_v2i8:12251; GFX10-GISEL: ; %bb.0:12252; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12253; GFX10-GISEL-NEXT: global_load_ushort v0, v[0:1], off12254; GFX10-GISEL-NEXT: v_mov_b32_e32 v4, 0xff12255; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)12256; GFX10-GISEL-NEXT: v_lshrrev_b32_e32 v1, 8, v012257; GFX10-GISEL-NEXT: v_and_b32_sdwa v1, v1, v4 dst_sel:BYTE_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD12258; GFX10-GISEL-NEXT: v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD12259; GFX10-GISEL-NEXT: global_store_short v[2:3], v0, off12260; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]12261;12262; GFX11-SDAG-TRUE16-LABEL: freeze_v2i8:12263; GFX11-SDAG-TRUE16: ; %bb.0:12264; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12265; GFX11-SDAG-TRUE16-NEXT: global_load_d16_b16 v0, v[0:1], off12266; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0)12267; GFX11-SDAG-TRUE16-NEXT: global_store_b16 v[2:3], v0, off12268; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]12269;12270; GFX11-SDAG-FAKE16-LABEL: freeze_v2i8:12271; GFX11-SDAG-FAKE16: ; %bb.0:12272; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12273; GFX11-SDAG-FAKE16-NEXT: global_load_u16 v0, v[0:1], off12274; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0)12275; GFX11-SDAG-FAKE16-NEXT: global_store_b16 v[2:3], v0, off12276; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]12277;12278; GFX11-GISEL-LABEL: freeze_v2i8:12279; GFX11-GISEL: ; %bb.0:12280; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12281; GFX11-GISEL-NEXT: global_load_u16 v0, v[0:1], off12282; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)12283; GFX11-GISEL-NEXT: v_lshrrev_b32_e32 v1, 8, v012284; GFX11-GISEL-NEXT: v_and_b32_e32 v0, 0xff, v012285; GFX11-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v112286; GFX11-GISEL-NEXT: v_lshlrev_b16 v1, 8, v112287; GFX11-GISEL-NEXT: v_or_b32_e32 v0, v0, v112288; GFX11-GISEL-NEXT: global_store_b16 v[2:3], v0, off12289; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]12290 %a = load <2 x i8>, ptr addrspace(1) %ptra12291 %freeze = freeze <2 x i8> %a12292 store <2 x i8> %freeze, ptr addrspace(1) %ptrb12293 ret void12294}12295 12296define void @freeze_v3i8(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {12297; GFX6-SDAG-LABEL: freeze_v3i8:12298; GFX6-SDAG: ; %bb.0:12299; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12300; GFX6-SDAG-NEXT: s_mov_b32 s6, 012301; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf00012302; GFX6-SDAG-NEXT: s_mov_b32 s4, s612303; GFX6-SDAG-NEXT: s_mov_b32 s5, s612304; GFX6-SDAG-NEXT: buffer_load_dword v0, v[0:1], s[4:7], 0 addr6412305; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0)12306; GFX6-SDAG-NEXT: v_lshrrev_b32_e32 v1, 16, v012307; GFX6-SDAG-NEXT: buffer_store_short v0, v[2:3], s[4:7], 0 addr6412308; GFX6-SDAG-NEXT: buffer_store_byte v1, v[2:3], s[4:7], 0 addr64 offset:212309; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)12310; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]12311;12312; GFX6-GISEL-LABEL: freeze_v3i8:12313; GFX6-GISEL: ; %bb.0:12314; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12315; GFX6-GISEL-NEXT: s_mov_b32 s6, 012316; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf00012317; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 012318; GFX6-GISEL-NEXT: buffer_load_dword v0, v[0:1], s[4:7], 0 addr6412319; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0)12320; GFX6-GISEL-NEXT: v_lshrrev_b32_e32 v1, 8, v012321; GFX6-GISEL-NEXT: v_lshrrev_b32_e32 v4, 16, v012322; GFX6-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v112323; GFX6-GISEL-NEXT: v_and_b32_e32 v0, 0xff, v012324; GFX6-GISEL-NEXT: v_and_b32_e32 v4, 0xff, v412325; GFX6-GISEL-NEXT: v_lshlrev_b32_e32 v1, 8, v112326; GFX6-GISEL-NEXT: v_and_b32_e32 v4, 0xffff, v412327; GFX6-GISEL-NEXT: v_or_b32_e32 v0, v0, v112328; GFX6-GISEL-NEXT: v_lshlrev_b32_e32 v1, 16, v412329; GFX6-GISEL-NEXT: v_and_b32_e32 v0, 0xffff, v012330; GFX6-GISEL-NEXT: v_or_b32_e32 v0, v0, v112331; GFX6-GISEL-NEXT: v_lshrrev_b32_e32 v1, 16, v012332; GFX6-GISEL-NEXT: buffer_store_short v0, v[2:3], s[4:7], 0 addr6412333; GFX6-GISEL-NEXT: buffer_store_byte v1, v[2:3], s[4:7], 0 addr64 offset:212334; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)12335; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]12336;12337; GFX7-SDAG-LABEL: freeze_v3i8:12338; GFX7-SDAG: ; %bb.0:12339; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12340; GFX7-SDAG-NEXT: s_mov_b32 s6, 012341; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf00012342; GFX7-SDAG-NEXT: s_mov_b32 s4, s612343; GFX7-SDAG-NEXT: s_mov_b32 s5, s612344; GFX7-SDAG-NEXT: buffer_load_dword v0, v[0:1], s[4:7], 0 addr6412345; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)12346; GFX7-SDAG-NEXT: v_lshrrev_b32_e32 v1, 16, v012347; GFX7-SDAG-NEXT: buffer_store_short v0, v[2:3], s[4:7], 0 addr6412348; GFX7-SDAG-NEXT: buffer_store_byte v1, v[2:3], s[4:7], 0 addr64 offset:212349; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)12350; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]12351;12352; GFX7-GISEL-LABEL: freeze_v3i8:12353; GFX7-GISEL: ; %bb.0:12354; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12355; GFX7-GISEL-NEXT: s_mov_b32 s6, 012356; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf00012357; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 012358; GFX7-GISEL-NEXT: buffer_load_dword v0, v[0:1], s[4:7], 0 addr6412359; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)12360; GFX7-GISEL-NEXT: v_lshrrev_b32_e32 v1, 8, v012361; GFX7-GISEL-NEXT: v_lshrrev_b32_e32 v4, 16, v012362; GFX7-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v112363; GFX7-GISEL-NEXT: v_and_b32_e32 v0, 0xff, v012364; GFX7-GISEL-NEXT: v_and_b32_e32 v4, 0xff, v412365; GFX7-GISEL-NEXT: v_lshlrev_b32_e32 v1, 8, v112366; GFX7-GISEL-NEXT: v_and_b32_e32 v4, 0xffff, v412367; GFX7-GISEL-NEXT: v_or_b32_e32 v0, v0, v112368; GFX7-GISEL-NEXT: v_lshlrev_b32_e32 v1, 16, v412369; GFX7-GISEL-NEXT: v_and_b32_e32 v0, 0xffff, v012370; GFX7-GISEL-NEXT: v_or_b32_e32 v0, v0, v112371; GFX7-GISEL-NEXT: v_lshrrev_b32_e32 v1, 16, v012372; GFX7-GISEL-NEXT: buffer_store_short v0, v[2:3], s[4:7], 0 addr6412373; GFX7-GISEL-NEXT: buffer_store_byte v1, v[2:3], s[4:7], 0 addr64 offset:212374; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)12375; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]12376;12377; GFX8-GISEL-LABEL: freeze_v3i8:12378; GFX8-GISEL: ; %bb.0:12379; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12380; GFX8-GISEL-NEXT: flat_load_dword v4, v[0:1]12381; GFX8-GISEL-NEXT: v_mov_b32_e32 v5, 0xff12382; GFX8-GISEL-NEXT: v_add_u32_e32 v0, vcc, 2, v212383; GFX8-GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v3, vcc12384; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)12385; GFX8-GISEL-NEXT: v_lshrrev_b32_e32 v6, 8, v412386; GFX8-GISEL-NEXT: v_and_b32_sdwa v5, v4, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD12387; GFX8-GISEL-NEXT: v_and_b32_e32 v6, 0xff, v612388; GFX8-GISEL-NEXT: v_and_b32_e32 v5, 0xffff, v512389; GFX8-GISEL-NEXT: v_lshlrev_b16_e32 v6, 8, v612390; GFX8-GISEL-NEXT: v_lshlrev_b32_e32 v5, 16, v512391; GFX8-GISEL-NEXT: v_or_b32_sdwa v4, v4, v6 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD12392; GFX8-GISEL-NEXT: v_or_b32_sdwa v4, v4, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD12393; GFX8-GISEL-NEXT: v_lshrrev_b32_e32 v5, 16, v412394; GFX8-GISEL-NEXT: flat_store_short v[2:3], v412395; GFX8-GISEL-NEXT: flat_store_byte v[0:1], v512396; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)12397; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]12398;12399; GFX9-GISEL-LABEL: freeze_v3i8:12400; GFX9-GISEL: ; %bb.0:12401; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12402; GFX9-GISEL-NEXT: global_load_dword v0, v[0:1], off12403; GFX9-GISEL-NEXT: v_mov_b32_e32 v1, 0xff12404; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)12405; GFX9-GISEL-NEXT: v_lshrrev_b32_e32 v4, 8, v012406; GFX9-GISEL-NEXT: v_and_b32_e32 v4, 0xff, v412407; GFX9-GISEL-NEXT: v_lshlrev_b16_e32 v4, 8, v412408; GFX9-GISEL-NEXT: v_and_b32_sdwa v1, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD12409; GFX9-GISEL-NEXT: v_or_b32_sdwa v0, v0, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD12410; GFX9-GISEL-NEXT: v_and_b32_e32 v1, 0xffff, v112411; GFX9-GISEL-NEXT: v_and_b32_e32 v0, 0xffff, v012412; GFX9-GISEL-NEXT: v_lshl_or_b32 v0, v1, 16, v012413; GFX9-GISEL-NEXT: global_store_short v[2:3], v0, off12414; GFX9-GISEL-NEXT: global_store_byte_d16_hi v[2:3], v0, off offset:212415; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)12416; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]12417;12418; GFX10-SDAG-LABEL: freeze_v3i8:12419; GFX10-SDAG: ; %bb.0:12420; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12421; GFX10-SDAG-NEXT: global_load_dword v0, v[0:1], off12422; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)12423; GFX10-SDAG-NEXT: global_store_byte_d16_hi v[2:3], v0, off offset:212424; GFX10-SDAG-NEXT: global_store_short v[2:3], v0, off12425; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]12426;12427; GFX10-GISEL-LABEL: freeze_v3i8:12428; GFX10-GISEL: ; %bb.0:12429; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12430; GFX10-GISEL-NEXT: global_load_dword v0, v[0:1], off12431; GFX10-GISEL-NEXT: v_mov_b32_e32 v1, 0xff12432; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)12433; GFX10-GISEL-NEXT: v_lshrrev_b32_e32 v4, 8, v012434; GFX10-GISEL-NEXT: v_and_b32_sdwa v4, v4, v1 dst_sel:BYTE_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD12435; GFX10-GISEL-NEXT: v_and_b32_sdwa v1, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD12436; GFX10-GISEL-NEXT: v_or_b32_sdwa v0, v0, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD12437; GFX10-GISEL-NEXT: v_and_b32_e32 v1, 0xffff, v112438; GFX10-GISEL-NEXT: v_and_b32_e32 v0, 0xffff, v012439; GFX10-GISEL-NEXT: v_lshl_or_b32 v0, v1, 16, v012440; GFX10-GISEL-NEXT: global_store_short v[2:3], v0, off12441; GFX10-GISEL-NEXT: global_store_byte_d16_hi v[2:3], v0, off offset:212442; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]12443;12444; GFX11-SDAG-LABEL: freeze_v3i8:12445; GFX11-SDAG: ; %bb.0:12446; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12447; GFX11-SDAG-NEXT: global_load_b32 v0, v[0:1], off12448; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0)12449; GFX11-SDAG-NEXT: s_clause 0x112450; GFX11-SDAG-NEXT: global_store_d16_hi_b8 v[2:3], v0, off offset:212451; GFX11-SDAG-NEXT: global_store_b16 v[2:3], v0, off12452; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]12453;12454; GFX11-GISEL-LABEL: freeze_v3i8:12455; GFX11-GISEL: ; %bb.0:12456; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12457; GFX11-GISEL-NEXT: global_load_b32 v0, v[0:1], off12458; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)12459; GFX11-GISEL-NEXT: v_lshrrev_b32_e32 v1, 8, v012460; GFX11-GISEL-NEXT: v_lshrrev_b32_e32 v4, 16, v012461; GFX11-GISEL-NEXT: v_and_b32_e32 v0, 0xff, v012462; GFX11-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v112463; GFX11-GISEL-NEXT: v_and_b32_e32 v4, 0xff, v412464; GFX11-GISEL-NEXT: v_lshlrev_b16 v1, 8, v112465; GFX11-GISEL-NEXT: v_or_b32_e32 v0, v0, v112466; GFX11-GISEL-NEXT: v_and_b32_e32 v1, 0xffff, v412467; GFX11-GISEL-NEXT: v_and_b32_e32 v0, 0xffff, v012468; GFX11-GISEL-NEXT: v_lshl_or_b32 v0, v1, 16, v012469; GFX11-GISEL-NEXT: s_clause 0x112470; GFX11-GISEL-NEXT: global_store_b16 v[2:3], v0, off12471; GFX11-GISEL-NEXT: global_store_d16_hi_b8 v[2:3], v0, off offset:212472; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]12473 %a = load <3 x i8>, ptr addrspace(1) %ptra12474 %freeze = freeze <3 x i8> %a12475 store <3 x i8> %freeze, ptr addrspace(1) %ptrb12476 ret void12477}12478 12479define void @freeze_v4i8(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {12480; GFX6-SDAG-LABEL: freeze_v4i8:12481; GFX6-SDAG: ; %bb.0:12482; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12483; GFX6-SDAG-NEXT: s_mov_b32 s6, 012484; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf00012485; GFX6-SDAG-NEXT: s_mov_b32 s4, s612486; GFX6-SDAG-NEXT: s_mov_b32 s5, s612487; GFX6-SDAG-NEXT: buffer_load_dword v0, v[0:1], s[4:7], 0 addr6412488; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0)12489; GFX6-SDAG-NEXT: buffer_store_dword v0, v[2:3], s[4:7], 0 addr6412490; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)12491; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]12492;12493; GFX6-GISEL-LABEL: freeze_v4i8:12494; GFX6-GISEL: ; %bb.0:12495; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12496; GFX6-GISEL-NEXT: s_mov_b32 s6, 012497; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf00012498; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 012499; GFX6-GISEL-NEXT: buffer_load_dword v0, v[0:1], s[4:7], 0 addr6412500; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0)12501; GFX6-GISEL-NEXT: v_lshrrev_b32_e32 v1, 8, v012502; GFX6-GISEL-NEXT: v_lshrrev_b32_e32 v4, 16, v012503; GFX6-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v112504; GFX6-GISEL-NEXT: v_lshrrev_b32_e32 v5, 24, v012505; GFX6-GISEL-NEXT: v_and_b32_e32 v0, 0xff, v012506; GFX6-GISEL-NEXT: v_and_b32_e32 v4, 0xff, v412507; GFX6-GISEL-NEXT: v_lshlrev_b32_e32 v1, 8, v112508; GFX6-GISEL-NEXT: v_and_b32_e32 v5, 0xff, v512509; GFX6-GISEL-NEXT: v_lshlrev_b32_e32 v4, 16, v412510; GFX6-GISEL-NEXT: v_or_b32_e32 v0, v0, v112511; GFX6-GISEL-NEXT: v_or_b32_e32 v0, v0, v412512; GFX6-GISEL-NEXT: v_lshlrev_b32_e32 v1, 24, v512513; GFX6-GISEL-NEXT: v_or_b32_e32 v0, v0, v112514; GFX6-GISEL-NEXT: buffer_store_dword v0, v[2:3], s[4:7], 0 addr6412515; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)12516; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]12517;12518; GFX7-SDAG-LABEL: freeze_v4i8:12519; GFX7-SDAG: ; %bb.0:12520; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12521; GFX7-SDAG-NEXT: s_mov_b32 s6, 012522; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf00012523; GFX7-SDAG-NEXT: s_mov_b32 s4, s612524; GFX7-SDAG-NEXT: s_mov_b32 s5, s612525; GFX7-SDAG-NEXT: buffer_load_dword v0, v[0:1], s[4:7], 0 addr6412526; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)12527; GFX7-SDAG-NEXT: buffer_store_dword v0, v[2:3], s[4:7], 0 addr6412528; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)12529; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]12530;12531; GFX7-GISEL-LABEL: freeze_v4i8:12532; GFX7-GISEL: ; %bb.0:12533; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12534; GFX7-GISEL-NEXT: s_mov_b32 s6, 012535; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf00012536; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 012537; GFX7-GISEL-NEXT: buffer_load_dword v0, v[0:1], s[4:7], 0 addr6412538; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)12539; GFX7-GISEL-NEXT: v_lshrrev_b32_e32 v1, 8, v012540; GFX7-GISEL-NEXT: v_lshrrev_b32_e32 v4, 16, v012541; GFX7-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v112542; GFX7-GISEL-NEXT: v_lshrrev_b32_e32 v5, 24, v012543; GFX7-GISEL-NEXT: v_and_b32_e32 v0, 0xff, v012544; GFX7-GISEL-NEXT: v_and_b32_e32 v4, 0xff, v412545; GFX7-GISEL-NEXT: v_lshlrev_b32_e32 v1, 8, v112546; GFX7-GISEL-NEXT: v_and_b32_e32 v5, 0xff, v512547; GFX7-GISEL-NEXT: v_lshlrev_b32_e32 v4, 16, v412548; GFX7-GISEL-NEXT: v_or_b32_e32 v0, v0, v112549; GFX7-GISEL-NEXT: v_or_b32_e32 v0, v0, v412550; GFX7-GISEL-NEXT: v_lshlrev_b32_e32 v1, 24, v512551; GFX7-GISEL-NEXT: v_or_b32_e32 v0, v0, v112552; GFX7-GISEL-NEXT: buffer_store_dword v0, v[2:3], s[4:7], 0 addr6412553; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)12554; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]12555;12556; GFX8-GISEL-LABEL: freeze_v4i8:12557; GFX8-GISEL: ; %bb.0:12558; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12559; GFX8-GISEL-NEXT: flat_load_dword v0, v[0:1]12560; GFX8-GISEL-NEXT: v_mov_b32_e32 v4, 812561; GFX8-GISEL-NEXT: v_mov_b32_e32 v1, 0xff12562; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)12563; GFX8-GISEL-NEXT: v_lshrrev_b32_e32 v5, 8, v012564; GFX8-GISEL-NEXT: v_lshlrev_b32_sdwa v4, v4, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_012565; GFX8-GISEL-NEXT: v_and_b32_sdwa v6, v0, v1 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD12566; GFX8-GISEL-NEXT: v_or_b32_sdwa v4, v0, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD12567; GFX8-GISEL-NEXT: v_or_b32_e32 v4, v4, v612568; GFX8-GISEL-NEXT: v_and_b32_sdwa v0, v0, v1 dst_sel:BYTE_3 dst_unused:UNUSED_PAD src0_sel:BYTE_3 src1_sel:DWORD12569; GFX8-GISEL-NEXT: v_or_b32_e32 v0, v4, v012570; GFX8-GISEL-NEXT: flat_store_dword v[2:3], v012571; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)12572; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]12573;12574; GFX9-GISEL-LABEL: freeze_v4i8:12575; GFX9-GISEL: ; %bb.0:12576; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12577; GFX9-GISEL-NEXT: global_load_dword v0, v[0:1], off12578; GFX9-GISEL-NEXT: v_mov_b32_e32 v4, 812579; GFX9-GISEL-NEXT: v_mov_b32_e32 v1, 0xff12580; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)12581; GFX9-GISEL-NEXT: v_lshrrev_b32_e32 v5, 8, v012582; GFX9-GISEL-NEXT: v_lshlrev_b32_sdwa v4, v4, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_012583; GFX9-GISEL-NEXT: v_and_b32_sdwa v6, v0, v1 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD12584; GFX9-GISEL-NEXT: v_and_or_b32 v4, v0, v1, v412585; GFX9-GISEL-NEXT: v_and_b32_sdwa v0, v0, v1 dst_sel:BYTE_3 dst_unused:UNUSED_PAD src0_sel:BYTE_3 src1_sel:DWORD12586; GFX9-GISEL-NEXT: v_or3_b32 v0, v4, v6, v012587; GFX9-GISEL-NEXT: global_store_dword v[2:3], v0, off12588; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)12589; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]12590;12591; GFX10-SDAG-LABEL: freeze_v4i8:12592; GFX10-SDAG: ; %bb.0:12593; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12594; GFX10-SDAG-NEXT: global_load_dword v0, v[0:1], off12595; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)12596; GFX10-SDAG-NEXT: global_store_dword v[2:3], v0, off12597; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]12598;12599; GFX10-GISEL-LABEL: freeze_v4i8:12600; GFX10-GISEL: ; %bb.0:12601; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12602; GFX10-GISEL-NEXT: global_load_dword v0, v[0:1], off12603; GFX10-GISEL-NEXT: v_mov_b32_e32 v1, 812604; GFX10-GISEL-NEXT: v_mov_b32_e32 v5, 0xff12605; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)12606; GFX10-GISEL-NEXT: v_lshrrev_b32_e32 v4, 8, v012607; GFX10-GISEL-NEXT: v_lshlrev_b32_sdwa v1, v1, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_012608; GFX10-GISEL-NEXT: v_and_b32_sdwa v4, v0, v5 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD12609; GFX10-GISEL-NEXT: v_and_or_b32 v1, 0xff, v0, v112610; GFX10-GISEL-NEXT: v_and_b32_sdwa v0, v0, v5 dst_sel:BYTE_3 dst_unused:UNUSED_PAD src0_sel:BYTE_3 src1_sel:DWORD12611; GFX10-GISEL-NEXT: v_or3_b32 v0, v1, v4, v012612; GFX10-GISEL-NEXT: global_store_dword v[2:3], v0, off12613; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]12614;12615; GFX11-SDAG-LABEL: freeze_v4i8:12616; GFX11-SDAG: ; %bb.0:12617; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12618; GFX11-SDAG-NEXT: global_load_b32 v0, v[0:1], off12619; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0)12620; GFX11-SDAG-NEXT: global_store_b32 v[2:3], v0, off12621; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]12622;12623; GFX11-GISEL-LABEL: freeze_v4i8:12624; GFX11-GISEL: ; %bb.0:12625; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12626; GFX11-GISEL-NEXT: global_load_b32 v0, v[0:1], off12627; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)12628; GFX11-GISEL-NEXT: v_lshrrev_b32_e32 v1, 8, v012629; GFX11-GISEL-NEXT: v_lshrrev_b32_e32 v4, 16, v012630; GFX11-GISEL-NEXT: v_lshrrev_b32_e32 v5, 24, v012631; GFX11-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v112632; GFX11-GISEL-NEXT: v_and_b32_e32 v4, 0xff, v412633; GFX11-GISEL-NEXT: v_and_b32_e32 v5, 0xff, v512634; GFX11-GISEL-NEXT: v_lshlrev_b32_e32 v1, 8, v112635; GFX11-GISEL-NEXT: v_lshlrev_b32_e32 v4, 16, v412636; GFX11-GISEL-NEXT: v_and_or_b32 v0, 0xff, v0, v112637; GFX11-GISEL-NEXT: v_lshlrev_b32_e32 v1, 24, v512638; GFX11-GISEL-NEXT: v_or3_b32 v0, v0, v4, v112639; GFX11-GISEL-NEXT: global_store_b32 v[2:3], v0, off12640; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]12641 %a = load <4 x i8>, ptr addrspace(1) %ptra12642 %freeze = freeze <4 x i8> %a12643 store <4 x i8> %freeze, ptr addrspace(1) %ptrb12644 ret void12645}12646 12647define void @freeze_v8i8(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {12648; GFX6-SDAG-LABEL: freeze_v8i8:12649; GFX6-SDAG: ; %bb.0:12650; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12651; GFX6-SDAG-NEXT: s_mov_b32 s6, 012652; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf00012653; GFX6-SDAG-NEXT: s_mov_b32 s4, s612654; GFX6-SDAG-NEXT: s_mov_b32 s5, s612655; GFX6-SDAG-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr6412656; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0)12657; GFX6-SDAG-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr6412658; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)12659; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]12660;12661; GFX6-GISEL-LABEL: freeze_v8i8:12662; GFX6-GISEL: ; %bb.0:12663; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12664; GFX6-GISEL-NEXT: s_mov_b32 s6, 012665; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf00012666; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 012667; GFX6-GISEL-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr6412668; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0)12669; GFX6-GISEL-NEXT: v_lshrrev_b32_e32 v4, 8, v012670; GFX6-GISEL-NEXT: v_lshrrev_b32_e32 v7, 8, v112671; GFX6-GISEL-NEXT: v_lshrrev_b32_e32 v5, 16, v012672; GFX6-GISEL-NEXT: v_lshrrev_b32_e32 v8, 16, v112673; GFX6-GISEL-NEXT: v_and_b32_e32 v4, 0xff, v412674; GFX6-GISEL-NEXT: v_and_b32_e32 v7, 0xff, v712675; GFX6-GISEL-NEXT: v_lshrrev_b32_e32 v6, 24, v012676; GFX6-GISEL-NEXT: v_lshrrev_b32_e32 v9, 24, v112677; GFX6-GISEL-NEXT: v_and_b32_e32 v0, 0xff, v012678; GFX6-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v112679; GFX6-GISEL-NEXT: v_and_b32_e32 v5, 0xff, v512680; GFX6-GISEL-NEXT: v_and_b32_e32 v8, 0xff, v812681; GFX6-GISEL-NEXT: v_lshlrev_b32_e32 v4, 8, v412682; GFX6-GISEL-NEXT: v_lshlrev_b32_e32 v7, 8, v712683; GFX6-GISEL-NEXT: v_and_b32_e32 v6, 0xff, v612684; GFX6-GISEL-NEXT: v_and_b32_e32 v9, 0xff, v912685; GFX6-GISEL-NEXT: v_lshlrev_b32_e32 v5, 16, v512686; GFX6-GISEL-NEXT: v_lshlrev_b32_e32 v8, 16, v812687; GFX6-GISEL-NEXT: v_or_b32_e32 v0, v0, v412688; GFX6-GISEL-NEXT: v_or_b32_e32 v1, v1, v712689; GFX6-GISEL-NEXT: v_lshlrev_b32_e32 v6, 24, v612690; GFX6-GISEL-NEXT: v_lshlrev_b32_e32 v9, 24, v912691; GFX6-GISEL-NEXT: v_or_b32_e32 v0, v0, v512692; GFX6-GISEL-NEXT: v_or_b32_e32 v1, v1, v812693; GFX6-GISEL-NEXT: v_or_b32_e32 v0, v0, v612694; GFX6-GISEL-NEXT: v_or_b32_e32 v1, v1, v912695; GFX6-GISEL-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr6412696; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)12697; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]12698;12699; GFX7-SDAG-LABEL: freeze_v8i8:12700; GFX7-SDAG: ; %bb.0:12701; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12702; GFX7-SDAG-NEXT: s_mov_b32 s6, 012703; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf00012704; GFX7-SDAG-NEXT: s_mov_b32 s4, s612705; GFX7-SDAG-NEXT: s_mov_b32 s5, s612706; GFX7-SDAG-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr6412707; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)12708; GFX7-SDAG-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr6412709; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)12710; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]12711;12712; GFX7-GISEL-LABEL: freeze_v8i8:12713; GFX7-GISEL: ; %bb.0:12714; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12715; GFX7-GISEL-NEXT: s_mov_b32 s6, 012716; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf00012717; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 012718; GFX7-GISEL-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr6412719; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)12720; GFX7-GISEL-NEXT: v_lshrrev_b32_e32 v4, 8, v012721; GFX7-GISEL-NEXT: v_lshrrev_b32_e32 v7, 8, v112722; GFX7-GISEL-NEXT: v_lshrrev_b32_e32 v5, 16, v012723; GFX7-GISEL-NEXT: v_lshrrev_b32_e32 v8, 16, v112724; GFX7-GISEL-NEXT: v_and_b32_e32 v4, 0xff, v412725; GFX7-GISEL-NEXT: v_and_b32_e32 v7, 0xff, v712726; GFX7-GISEL-NEXT: v_lshrrev_b32_e32 v6, 24, v012727; GFX7-GISEL-NEXT: v_lshrrev_b32_e32 v9, 24, v112728; GFX7-GISEL-NEXT: v_and_b32_e32 v0, 0xff, v012729; GFX7-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v112730; GFX7-GISEL-NEXT: v_and_b32_e32 v5, 0xff, v512731; GFX7-GISEL-NEXT: v_and_b32_e32 v8, 0xff, v812732; GFX7-GISEL-NEXT: v_lshlrev_b32_e32 v4, 8, v412733; GFX7-GISEL-NEXT: v_lshlrev_b32_e32 v7, 8, v712734; GFX7-GISEL-NEXT: v_and_b32_e32 v6, 0xff, v612735; GFX7-GISEL-NEXT: v_and_b32_e32 v9, 0xff, v912736; GFX7-GISEL-NEXT: v_lshlrev_b32_e32 v5, 16, v512737; GFX7-GISEL-NEXT: v_lshlrev_b32_e32 v8, 16, v812738; GFX7-GISEL-NEXT: v_or_b32_e32 v0, v0, v412739; GFX7-GISEL-NEXT: v_or_b32_e32 v1, v1, v712740; GFX7-GISEL-NEXT: v_lshlrev_b32_e32 v6, 24, v612741; GFX7-GISEL-NEXT: v_lshlrev_b32_e32 v9, 24, v912742; GFX7-GISEL-NEXT: v_or_b32_e32 v0, v0, v512743; GFX7-GISEL-NEXT: v_or_b32_e32 v1, v1, v812744; GFX7-GISEL-NEXT: v_or_b32_e32 v0, v0, v612745; GFX7-GISEL-NEXT: v_or_b32_e32 v1, v1, v912746; GFX7-GISEL-NEXT: buffer_store_dwordx2 v[0:1], v[2:3], s[4:7], 0 addr6412747; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)12748; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]12749;12750; GFX8-GISEL-LABEL: freeze_v8i8:12751; GFX8-GISEL: ; %bb.0:12752; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12753; GFX8-GISEL-NEXT: flat_load_dwordx2 v[0:1], v[0:1]12754; GFX8-GISEL-NEXT: v_mov_b32_e32 v5, 812755; GFX8-GISEL-NEXT: v_mov_b32_e32 v4, 0xff12756; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)12757; GFX8-GISEL-NEXT: v_lshrrev_b32_e32 v6, 8, v012758; GFX8-GISEL-NEXT: v_lshrrev_b32_e32 v7, 8, v112759; GFX8-GISEL-NEXT: v_lshlrev_b32_sdwa v6, v5, v6 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_012760; GFX8-GISEL-NEXT: v_lshlrev_b32_sdwa v5, v5, v7 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_012761; GFX8-GISEL-NEXT: v_and_b32_sdwa v8, v0, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD12762; GFX8-GISEL-NEXT: v_and_b32_sdwa v9, v0, v4 dst_sel:BYTE_3 dst_unused:UNUSED_PAD src0_sel:BYTE_3 src1_sel:DWORD12763; GFX8-GISEL-NEXT: v_and_b32_sdwa v10, v1, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD12764; GFX8-GISEL-NEXT: v_and_b32_sdwa v4, v1, v4 dst_sel:BYTE_3 dst_unused:UNUSED_PAD src0_sel:BYTE_3 src1_sel:DWORD12765; GFX8-GISEL-NEXT: v_or_b32_sdwa v0, v0, v6 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD12766; GFX8-GISEL-NEXT: v_or_b32_sdwa v1, v1, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD12767; GFX8-GISEL-NEXT: v_or_b32_e32 v0, v0, v812768; GFX8-GISEL-NEXT: v_or_b32_e32 v1, v1, v1012769; GFX8-GISEL-NEXT: v_or_b32_e32 v0, v0, v912770; GFX8-GISEL-NEXT: v_or_b32_e32 v1, v1, v412771; GFX8-GISEL-NEXT: flat_store_dwordx2 v[2:3], v[0:1]12772; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)12773; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]12774;12775; GFX9-GISEL-LABEL: freeze_v8i8:12776; GFX9-GISEL: ; %bb.0:12777; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12778; GFX9-GISEL-NEXT: global_load_dwordx2 v[0:1], v[0:1], off12779; GFX9-GISEL-NEXT: v_mov_b32_e32 v5, 812780; GFX9-GISEL-NEXT: v_mov_b32_e32 v4, 0xff12781; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)12782; GFX9-GISEL-NEXT: v_lshrrev_b32_e32 v6, 8, v012783; GFX9-GISEL-NEXT: v_lshrrev_b32_e32 v7, 8, v112784; GFX9-GISEL-NEXT: v_lshlrev_b32_sdwa v6, v5, v6 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_012785; GFX9-GISEL-NEXT: v_lshlrev_b32_sdwa v5, v5, v7 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_012786; GFX9-GISEL-NEXT: v_and_b32_sdwa v8, v0, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD12787; GFX9-GISEL-NEXT: v_and_b32_sdwa v9, v0, v4 dst_sel:BYTE_3 dst_unused:UNUSED_PAD src0_sel:BYTE_3 src1_sel:DWORD12788; GFX9-GISEL-NEXT: v_and_b32_sdwa v10, v1, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD12789; GFX9-GISEL-NEXT: v_and_b32_sdwa v11, v1, v4 dst_sel:BYTE_3 dst_unused:UNUSED_PAD src0_sel:BYTE_3 src1_sel:DWORD12790; GFX9-GISEL-NEXT: v_and_or_b32 v0, v0, v4, v612791; GFX9-GISEL-NEXT: v_and_or_b32 v1, v1, v4, v512792; GFX9-GISEL-NEXT: v_or3_b32 v0, v0, v8, v912793; GFX9-GISEL-NEXT: v_or3_b32 v1, v1, v10, v1112794; GFX9-GISEL-NEXT: global_store_dwordx2 v[2:3], v[0:1], off12795; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)12796; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]12797;12798; GFX10-SDAG-LABEL: freeze_v8i8:12799; GFX10-SDAG: ; %bb.0:12800; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12801; GFX10-SDAG-NEXT: global_load_dwordx2 v[0:1], v[0:1], off12802; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)12803; GFX10-SDAG-NEXT: global_store_dwordx2 v[2:3], v[0:1], off12804; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]12805;12806; GFX10-GISEL-LABEL: freeze_v8i8:12807; GFX10-GISEL: ; %bb.0:12808; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12809; GFX10-GISEL-NEXT: global_load_dwordx2 v[0:1], v[0:1], off12810; GFX10-GISEL-NEXT: v_mov_b32_e32 v4, 812811; GFX10-GISEL-NEXT: v_mov_b32_e32 v5, 0xff12812; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)12813; GFX10-GISEL-NEXT: v_lshrrev_b32_e32 v6, 8, v012814; GFX10-GISEL-NEXT: v_lshrrev_b32_e32 v7, 8, v112815; GFX10-GISEL-NEXT: v_and_b32_sdwa v8, v0, v5 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD12816; GFX10-GISEL-NEXT: v_and_b32_sdwa v9, v1, v5 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD12817; GFX10-GISEL-NEXT: v_lshlrev_b32_sdwa v6, v4, v6 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_012818; GFX10-GISEL-NEXT: v_lshlrev_b32_sdwa v4, v4, v7 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_012819; GFX10-GISEL-NEXT: v_and_b32_sdwa v7, v0, v5 dst_sel:BYTE_3 dst_unused:UNUSED_PAD src0_sel:BYTE_3 src1_sel:DWORD12820; GFX10-GISEL-NEXT: v_and_b32_sdwa v5, v1, v5 dst_sel:BYTE_3 dst_unused:UNUSED_PAD src0_sel:BYTE_3 src1_sel:DWORD12821; GFX10-GISEL-NEXT: v_and_or_b32 v0, 0xff, v0, v612822; GFX10-GISEL-NEXT: v_and_or_b32 v1, 0xff, v1, v412823; GFX10-GISEL-NEXT: v_or3_b32 v0, v0, v8, v712824; GFX10-GISEL-NEXT: v_or3_b32 v1, v1, v9, v512825; GFX10-GISEL-NEXT: global_store_dwordx2 v[2:3], v[0:1], off12826; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]12827;12828; GFX11-SDAG-LABEL: freeze_v8i8:12829; GFX11-SDAG: ; %bb.0:12830; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12831; GFX11-SDAG-NEXT: global_load_b64 v[0:1], v[0:1], off12832; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0)12833; GFX11-SDAG-NEXT: global_store_b64 v[2:3], v[0:1], off12834; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]12835;12836; GFX11-GISEL-LABEL: freeze_v8i8:12837; GFX11-GISEL: ; %bb.0:12838; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12839; GFX11-GISEL-NEXT: global_load_b64 v[0:1], v[0:1], off12840; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)12841; GFX11-GISEL-NEXT: v_lshrrev_b32_e32 v4, 8, v012842; GFX11-GISEL-NEXT: v_lshrrev_b32_e32 v7, 8, v112843; GFX11-GISEL-NEXT: v_lshrrev_b32_e32 v5, 16, v012844; GFX11-GISEL-NEXT: v_lshrrev_b32_e32 v6, 24, v012845; GFX11-GISEL-NEXT: v_lshrrev_b32_e32 v8, 16, v112846; GFX11-GISEL-NEXT: v_lshrrev_b32_e32 v9, 24, v112847; GFX11-GISEL-NEXT: v_and_b32_e32 v4, 0xff, v412848; GFX11-GISEL-NEXT: v_and_b32_e32 v7, 0xff, v712849; GFX11-GISEL-NEXT: v_and_b32_e32 v5, 0xff, v512850; GFX11-GISEL-NEXT: v_and_b32_e32 v6, 0xff, v612851; GFX11-GISEL-NEXT: v_and_b32_e32 v8, 0xff, v812852; GFX11-GISEL-NEXT: v_and_b32_e32 v9, 0xff, v912853; GFX11-GISEL-NEXT: v_lshlrev_b32_e32 v4, 8, v412854; GFX11-GISEL-NEXT: v_lshlrev_b32_e32 v7, 8, v712855; GFX11-GISEL-NEXT: v_lshlrev_b32_e32 v5, 16, v512856; GFX11-GISEL-NEXT: v_lshlrev_b32_e32 v6, 24, v612857; GFX11-GISEL-NEXT: v_lshlrev_b32_e32 v8, 16, v812858; GFX11-GISEL-NEXT: v_lshlrev_b32_e32 v9, 24, v912859; GFX11-GISEL-NEXT: v_and_or_b32 v0, 0xff, v0, v412860; GFX11-GISEL-NEXT: v_and_or_b32 v1, 0xff, v1, v712861; GFX11-GISEL-NEXT: v_or3_b32 v0, v0, v5, v612862; GFX11-GISEL-NEXT: v_or3_b32 v1, v1, v8, v912863; GFX11-GISEL-NEXT: global_store_b64 v[2:3], v[0:1], off12864; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]12865 %a = load <8 x i8>, ptr addrspace(1) %ptra12866 %freeze = freeze <8 x i8> %a12867 store <8 x i8> %freeze, ptr addrspace(1) %ptrb12868 ret void12869}12870 12871define void @freeze_v16i8(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {12872; GFX6-SDAG-LABEL: freeze_v16i8:12873; GFX6-SDAG: ; %bb.0:12874; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12875; GFX6-SDAG-NEXT: s_mov_b32 s6, 012876; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf00012877; GFX6-SDAG-NEXT: s_mov_b32 s4, s612878; GFX6-SDAG-NEXT: s_mov_b32 s5, s612879; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr6412880; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0)12881; GFX6-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr6412882; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)12883; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]12884;12885; GFX6-GISEL-LABEL: freeze_v16i8:12886; GFX6-GISEL: ; %bb.0:12887; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12888; GFX6-GISEL-NEXT: s_mov_b32 s6, 012889; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf00012890; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 012891; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr6412892; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0)12893; GFX6-GISEL-NEXT: v_lshrrev_b32_e32 v0, 8, v412894; GFX6-GISEL-NEXT: v_lshrrev_b32_e32 v9, 8, v512895; GFX6-GISEL-NEXT: v_lshrrev_b32_e32 v12, 8, v612896; GFX6-GISEL-NEXT: v_lshrrev_b32_e32 v15, 8, v712897; GFX6-GISEL-NEXT: v_lshrrev_b32_e32 v1, 16, v412898; GFX6-GISEL-NEXT: v_lshrrev_b32_e32 v10, 16, v512899; GFX6-GISEL-NEXT: v_lshrrev_b32_e32 v13, 16, v612900; GFX6-GISEL-NEXT: v_lshrrev_b32_e32 v16, 16, v712901; GFX6-GISEL-NEXT: v_and_b32_e32 v0, 0xff, v012902; GFX6-GISEL-NEXT: v_and_b32_e32 v9, 0xff, v912903; GFX6-GISEL-NEXT: v_and_b32_e32 v12, 0xff, v1212904; GFX6-GISEL-NEXT: v_and_b32_e32 v15, 0xff, v1512905; GFX6-GISEL-NEXT: v_lshrrev_b32_e32 v8, 24, v412906; GFX6-GISEL-NEXT: v_lshrrev_b32_e32 v11, 24, v512907; GFX6-GISEL-NEXT: v_lshrrev_b32_e32 v14, 24, v612908; GFX6-GISEL-NEXT: v_lshrrev_b32_e32 v17, 24, v712909; GFX6-GISEL-NEXT: v_and_b32_e32 v4, 0xff, v412910; GFX6-GISEL-NEXT: v_and_b32_e32 v5, 0xff, v512911; GFX6-GISEL-NEXT: v_and_b32_e32 v6, 0xff, v612912; GFX6-GISEL-NEXT: v_and_b32_e32 v7, 0xff, v712913; GFX6-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v112914; GFX6-GISEL-NEXT: v_and_b32_e32 v10, 0xff, v1012915; GFX6-GISEL-NEXT: v_and_b32_e32 v13, 0xff, v1312916; GFX6-GISEL-NEXT: v_and_b32_e32 v16, 0xff, v1612917; GFX6-GISEL-NEXT: v_lshlrev_b32_e32 v0, 8, v012918; GFX6-GISEL-NEXT: v_lshlrev_b32_e32 v9, 8, v912919; GFX6-GISEL-NEXT: v_lshlrev_b32_e32 v12, 8, v1212920; GFX6-GISEL-NEXT: v_lshlrev_b32_e32 v15, 8, v1512921; GFX6-GISEL-NEXT: v_and_b32_e32 v8, 0xff, v812922; GFX6-GISEL-NEXT: v_and_b32_e32 v11, 0xff, v1112923; GFX6-GISEL-NEXT: v_and_b32_e32 v14, 0xff, v1412924; GFX6-GISEL-NEXT: v_and_b32_e32 v17, 0xff, v1712925; GFX6-GISEL-NEXT: v_lshlrev_b32_e32 v1, 16, v112926; GFX6-GISEL-NEXT: v_lshlrev_b32_e32 v10, 16, v1012927; GFX6-GISEL-NEXT: v_lshlrev_b32_e32 v13, 16, v1312928; GFX6-GISEL-NEXT: v_lshlrev_b32_e32 v16, 16, v1612929; GFX6-GISEL-NEXT: v_or_b32_e32 v0, v4, v012930; GFX6-GISEL-NEXT: v_or_b32_e32 v4, v5, v912931; GFX6-GISEL-NEXT: v_or_b32_e32 v5, v6, v1212932; GFX6-GISEL-NEXT: v_or_b32_e32 v6, v7, v1512933; GFX6-GISEL-NEXT: v_lshlrev_b32_e32 v8, 24, v812934; GFX6-GISEL-NEXT: v_lshlrev_b32_e32 v11, 24, v1112935; GFX6-GISEL-NEXT: v_lshlrev_b32_e32 v14, 24, v1412936; GFX6-GISEL-NEXT: v_lshlrev_b32_e32 v17, 24, v1712937; GFX6-GISEL-NEXT: v_or_b32_e32 v0, v0, v112938; GFX6-GISEL-NEXT: v_or_b32_e32 v1, v4, v1012939; GFX6-GISEL-NEXT: v_or_b32_e32 v7, v5, v1312940; GFX6-GISEL-NEXT: v_or_b32_e32 v9, v6, v1612941; GFX6-GISEL-NEXT: v_or_b32_e32 v4, v0, v812942; GFX6-GISEL-NEXT: v_or_b32_e32 v5, v1, v1112943; GFX6-GISEL-NEXT: v_or_b32_e32 v6, v7, v1412944; GFX6-GISEL-NEXT: v_or_b32_e32 v7, v9, v1712945; GFX6-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr6412946; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)12947; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]12948;12949; GFX7-SDAG-LABEL: freeze_v16i8:12950; GFX7-SDAG: ; %bb.0:12951; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12952; GFX7-SDAG-NEXT: s_mov_b32 s6, 012953; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf00012954; GFX7-SDAG-NEXT: s_mov_b32 s4, s612955; GFX7-SDAG-NEXT: s_mov_b32 s5, s612956; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr6412957; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)12958; GFX7-SDAG-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr6412959; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)12960; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]12961;12962; GFX7-GISEL-LABEL: freeze_v16i8:12963; GFX7-GISEL: ; %bb.0:12964; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12965; GFX7-GISEL-NEXT: s_mov_b32 s6, 012966; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf00012967; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 012968; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr6412969; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)12970; GFX7-GISEL-NEXT: v_lshrrev_b32_e32 v0, 8, v412971; GFX7-GISEL-NEXT: v_lshrrev_b32_e32 v9, 8, v512972; GFX7-GISEL-NEXT: v_lshrrev_b32_e32 v12, 8, v612973; GFX7-GISEL-NEXT: v_lshrrev_b32_e32 v15, 8, v712974; GFX7-GISEL-NEXT: v_lshrrev_b32_e32 v1, 16, v412975; GFX7-GISEL-NEXT: v_lshrrev_b32_e32 v10, 16, v512976; GFX7-GISEL-NEXT: v_lshrrev_b32_e32 v13, 16, v612977; GFX7-GISEL-NEXT: v_lshrrev_b32_e32 v16, 16, v712978; GFX7-GISEL-NEXT: v_and_b32_e32 v0, 0xff, v012979; GFX7-GISEL-NEXT: v_and_b32_e32 v9, 0xff, v912980; GFX7-GISEL-NEXT: v_and_b32_e32 v12, 0xff, v1212981; GFX7-GISEL-NEXT: v_and_b32_e32 v15, 0xff, v1512982; GFX7-GISEL-NEXT: v_lshrrev_b32_e32 v8, 24, v412983; GFX7-GISEL-NEXT: v_lshrrev_b32_e32 v11, 24, v512984; GFX7-GISEL-NEXT: v_lshrrev_b32_e32 v14, 24, v612985; GFX7-GISEL-NEXT: v_lshrrev_b32_e32 v17, 24, v712986; GFX7-GISEL-NEXT: v_and_b32_e32 v4, 0xff, v412987; GFX7-GISEL-NEXT: v_and_b32_e32 v5, 0xff, v512988; GFX7-GISEL-NEXT: v_and_b32_e32 v6, 0xff, v612989; GFX7-GISEL-NEXT: v_and_b32_e32 v7, 0xff, v712990; GFX7-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v112991; GFX7-GISEL-NEXT: v_and_b32_e32 v10, 0xff, v1012992; GFX7-GISEL-NEXT: v_and_b32_e32 v13, 0xff, v1312993; GFX7-GISEL-NEXT: v_and_b32_e32 v16, 0xff, v1612994; GFX7-GISEL-NEXT: v_lshlrev_b32_e32 v0, 8, v012995; GFX7-GISEL-NEXT: v_lshlrev_b32_e32 v9, 8, v912996; GFX7-GISEL-NEXT: v_lshlrev_b32_e32 v12, 8, v1212997; GFX7-GISEL-NEXT: v_lshlrev_b32_e32 v15, 8, v1512998; GFX7-GISEL-NEXT: v_and_b32_e32 v8, 0xff, v812999; GFX7-GISEL-NEXT: v_and_b32_e32 v11, 0xff, v1113000; GFX7-GISEL-NEXT: v_and_b32_e32 v14, 0xff, v1413001; GFX7-GISEL-NEXT: v_and_b32_e32 v17, 0xff, v1713002; GFX7-GISEL-NEXT: v_lshlrev_b32_e32 v1, 16, v113003; GFX7-GISEL-NEXT: v_lshlrev_b32_e32 v10, 16, v1013004; GFX7-GISEL-NEXT: v_lshlrev_b32_e32 v13, 16, v1313005; GFX7-GISEL-NEXT: v_lshlrev_b32_e32 v16, 16, v1613006; GFX7-GISEL-NEXT: v_or_b32_e32 v0, v4, v013007; GFX7-GISEL-NEXT: v_or_b32_e32 v4, v5, v913008; GFX7-GISEL-NEXT: v_or_b32_e32 v5, v6, v1213009; GFX7-GISEL-NEXT: v_or_b32_e32 v6, v7, v1513010; GFX7-GISEL-NEXT: v_lshlrev_b32_e32 v8, 24, v813011; GFX7-GISEL-NEXT: v_lshlrev_b32_e32 v11, 24, v1113012; GFX7-GISEL-NEXT: v_lshlrev_b32_e32 v14, 24, v1413013; GFX7-GISEL-NEXT: v_lshlrev_b32_e32 v17, 24, v1713014; GFX7-GISEL-NEXT: v_or_b32_e32 v0, v0, v113015; GFX7-GISEL-NEXT: v_or_b32_e32 v1, v4, v1013016; GFX7-GISEL-NEXT: v_or_b32_e32 v7, v5, v1313017; GFX7-GISEL-NEXT: v_or_b32_e32 v9, v6, v1613018; GFX7-GISEL-NEXT: v_or_b32_e32 v4, v0, v813019; GFX7-GISEL-NEXT: v_or_b32_e32 v5, v1, v1113020; GFX7-GISEL-NEXT: v_or_b32_e32 v6, v7, v1413021; GFX7-GISEL-NEXT: v_or_b32_e32 v7, v9, v1713022; GFX7-GISEL-NEXT: buffer_store_dwordx4 v[4:7], v[2:3], s[4:7], 0 addr6413023; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)13024; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]13025;13026; GFX8-GISEL-LABEL: freeze_v16i8:13027; GFX8-GISEL: ; %bb.0:13028; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13029; GFX8-GISEL-NEXT: flat_load_dwordx4 v[4:7], v[0:1]13030; GFX8-GISEL-NEXT: v_mov_b32_e32 v1, 813031; GFX8-GISEL-NEXT: v_mov_b32_e32 v0, 0xff13032; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)13033; GFX8-GISEL-NEXT: v_lshrrev_b32_e32 v8, 8, v413034; GFX8-GISEL-NEXT: v_lshrrev_b32_e32 v9, 8, v513035; GFX8-GISEL-NEXT: v_lshrrev_b32_e32 v10, 8, v613036; GFX8-GISEL-NEXT: v_lshrrev_b32_e32 v11, 8, v713037; GFX8-GISEL-NEXT: v_lshlrev_b32_sdwa v8, v1, v8 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_013038; GFX8-GISEL-NEXT: v_lshlrev_b32_sdwa v9, v1, v9 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_013039; GFX8-GISEL-NEXT: v_lshlrev_b32_sdwa v10, v1, v10 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_013040; GFX8-GISEL-NEXT: v_lshlrev_b32_sdwa v1, v1, v11 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_013041; GFX8-GISEL-NEXT: v_and_b32_sdwa v12, v4, v0 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD13042; GFX8-GISEL-NEXT: v_and_b32_sdwa v13, v4, v0 dst_sel:BYTE_3 dst_unused:UNUSED_PAD src0_sel:BYTE_3 src1_sel:DWORD13043; GFX8-GISEL-NEXT: v_and_b32_sdwa v14, v5, v0 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD13044; GFX8-GISEL-NEXT: v_and_b32_sdwa v15, v5, v0 dst_sel:BYTE_3 dst_unused:UNUSED_PAD src0_sel:BYTE_3 src1_sel:DWORD13045; GFX8-GISEL-NEXT: v_and_b32_sdwa v16, v6, v0 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD13046; GFX8-GISEL-NEXT: v_and_b32_sdwa v17, v6, v0 dst_sel:BYTE_3 dst_unused:UNUSED_PAD src0_sel:BYTE_3 src1_sel:DWORD13047; GFX8-GISEL-NEXT: v_and_b32_sdwa v18, v7, v0 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD13048; GFX8-GISEL-NEXT: v_or_b32_sdwa v4, v4, v8 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD13049; GFX8-GISEL-NEXT: v_or_b32_sdwa v5, v5, v9 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD13050; GFX8-GISEL-NEXT: v_or_b32_sdwa v6, v6, v10 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD13051; GFX8-GISEL-NEXT: v_or_b32_sdwa v1, v7, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD13052; GFX8-GISEL-NEXT: v_and_b32_sdwa v0, v7, v0 dst_sel:BYTE_3 dst_unused:UNUSED_PAD src0_sel:BYTE_3 src1_sel:DWORD13053; GFX8-GISEL-NEXT: v_or_b32_e32 v4, v4, v1213054; GFX8-GISEL-NEXT: v_or_b32_e32 v5, v5, v1413055; GFX8-GISEL-NEXT: v_or_b32_e32 v6, v6, v1613056; GFX8-GISEL-NEXT: v_or_b32_e32 v1, v1, v1813057; GFX8-GISEL-NEXT: v_or_b32_e32 v4, v4, v1313058; GFX8-GISEL-NEXT: v_or_b32_e32 v5, v5, v1513059; GFX8-GISEL-NEXT: v_or_b32_e32 v6, v6, v1713060; GFX8-GISEL-NEXT: v_or_b32_e32 v7, v1, v013061; GFX8-GISEL-NEXT: flat_store_dwordx4 v[2:3], v[4:7]13062; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)13063; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]13064;13065; GFX9-GISEL-LABEL: freeze_v16i8:13066; GFX9-GISEL: ; %bb.0:13067; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13068; GFX9-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off13069; GFX9-GISEL-NEXT: v_mov_b32_e32 v1, 813070; GFX9-GISEL-NEXT: v_mov_b32_e32 v0, 0xff13071; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)13072; GFX9-GISEL-NEXT: v_lshrrev_b32_e32 v8, 8, v413073; GFX9-GISEL-NEXT: v_lshrrev_b32_e32 v9, 8, v513074; GFX9-GISEL-NEXT: v_lshrrev_b32_e32 v10, 8, v613075; GFX9-GISEL-NEXT: v_lshrrev_b32_e32 v11, 8, v713076; GFX9-GISEL-NEXT: v_lshlrev_b32_sdwa v8, v1, v8 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_013077; GFX9-GISEL-NEXT: v_lshlrev_b32_sdwa v9, v1, v9 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_013078; GFX9-GISEL-NEXT: v_lshlrev_b32_sdwa v10, v1, v10 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_013079; GFX9-GISEL-NEXT: v_lshlrev_b32_sdwa v1, v1, v11 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_013080; GFX9-GISEL-NEXT: v_and_b32_sdwa v12, v4, v0 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD13081; GFX9-GISEL-NEXT: v_and_b32_sdwa v13, v4, v0 dst_sel:BYTE_3 dst_unused:UNUSED_PAD src0_sel:BYTE_3 src1_sel:DWORD13082; GFX9-GISEL-NEXT: v_and_b32_sdwa v14, v5, v0 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD13083; GFX9-GISEL-NEXT: v_and_b32_sdwa v15, v5, v0 dst_sel:BYTE_3 dst_unused:UNUSED_PAD src0_sel:BYTE_3 src1_sel:DWORD13084; GFX9-GISEL-NEXT: v_and_b32_sdwa v16, v6, v0 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD13085; GFX9-GISEL-NEXT: v_and_b32_sdwa v17, v6, v0 dst_sel:BYTE_3 dst_unused:UNUSED_PAD src0_sel:BYTE_3 src1_sel:DWORD13086; GFX9-GISEL-NEXT: v_and_b32_sdwa v18, v7, v0 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD13087; GFX9-GISEL-NEXT: v_and_b32_sdwa v19, v7, v0 dst_sel:BYTE_3 dst_unused:UNUSED_PAD src0_sel:BYTE_3 src1_sel:DWORD13088; GFX9-GISEL-NEXT: v_and_or_b32 v4, v4, v0, v813089; GFX9-GISEL-NEXT: v_and_or_b32 v5, v5, v0, v913090; GFX9-GISEL-NEXT: v_and_or_b32 v6, v6, v0, v1013091; GFX9-GISEL-NEXT: v_and_or_b32 v0, v7, v0, v113092; GFX9-GISEL-NEXT: v_or3_b32 v4, v4, v12, v1313093; GFX9-GISEL-NEXT: v_or3_b32 v5, v5, v14, v1513094; GFX9-GISEL-NEXT: v_or3_b32 v6, v6, v16, v1713095; GFX9-GISEL-NEXT: v_or3_b32 v7, v0, v18, v1913096; GFX9-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off13097; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)13098; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]13099;13100; GFX10-SDAG-LABEL: freeze_v16i8:13101; GFX10-SDAG: ; %bb.0:13102; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13103; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off13104; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)13105; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off13106; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]13107;13108; GFX10-GISEL-LABEL: freeze_v16i8:13109; GFX10-GISEL: ; %bb.0:13110; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13111; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off13112; GFX10-GISEL-NEXT: v_mov_b32_e32 v0, 813113; GFX10-GISEL-NEXT: v_mov_b32_e32 v1, 0xff13114; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)13115; GFX10-GISEL-NEXT: v_lshrrev_b32_e32 v8, 8, v413116; GFX10-GISEL-NEXT: v_lshrrev_b32_e32 v9, 8, v513117; GFX10-GISEL-NEXT: v_lshrrev_b32_e32 v10, 8, v613118; GFX10-GISEL-NEXT: v_lshrrev_b32_e32 v11, 8, v713119; GFX10-GISEL-NEXT: v_and_b32_sdwa v12, v4, v1 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD13120; GFX10-GISEL-NEXT: v_lshlrev_b32_sdwa v8, v0, v8 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_013121; GFX10-GISEL-NEXT: v_lshlrev_b32_sdwa v9, v0, v9 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_013122; GFX10-GISEL-NEXT: v_lshlrev_b32_sdwa v10, v0, v10 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_013123; GFX10-GISEL-NEXT: v_lshlrev_b32_sdwa v0, v0, v11 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_013124; GFX10-GISEL-NEXT: v_and_b32_sdwa v13, v4, v1 dst_sel:BYTE_3 dst_unused:UNUSED_PAD src0_sel:BYTE_3 src1_sel:DWORD13125; GFX10-GISEL-NEXT: v_and_b32_sdwa v14, v5, v1 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD13126; GFX10-GISEL-NEXT: v_and_b32_sdwa v15, v5, v1 dst_sel:BYTE_3 dst_unused:UNUSED_PAD src0_sel:BYTE_3 src1_sel:DWORD13127; GFX10-GISEL-NEXT: v_and_b32_sdwa v16, v6, v1 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD13128; GFX10-GISEL-NEXT: v_and_b32_sdwa v17, v6, v1 dst_sel:BYTE_3 dst_unused:UNUSED_PAD src0_sel:BYTE_3 src1_sel:DWORD13129; GFX10-GISEL-NEXT: v_and_b32_sdwa v18, v7, v1 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD13130; GFX10-GISEL-NEXT: v_and_b32_sdwa v1, v7, v1 dst_sel:BYTE_3 dst_unused:UNUSED_PAD src0_sel:BYTE_3 src1_sel:DWORD13131; GFX10-GISEL-NEXT: v_and_or_b32 v4, 0xff, v4, v813132; GFX10-GISEL-NEXT: v_and_or_b32 v5, 0xff, v5, v913133; GFX10-GISEL-NEXT: v_and_or_b32 v6, 0xff, v6, v1013134; GFX10-GISEL-NEXT: v_and_or_b32 v0, 0xff, v7, v013135; GFX10-GISEL-NEXT: v_or3_b32 v4, v4, v12, v1313136; GFX10-GISEL-NEXT: v_or3_b32 v5, v5, v14, v1513137; GFX10-GISEL-NEXT: v_or3_b32 v6, v6, v16, v1713138; GFX10-GISEL-NEXT: v_or3_b32 v7, v0, v18, v113139; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off13140; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]13141;13142; GFX11-SDAG-LABEL: freeze_v16i8:13143; GFX11-SDAG: ; %bb.0:13144; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13145; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off13146; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0)13147; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off13148; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]13149;13150; GFX11-GISEL-LABEL: freeze_v16i8:13151; GFX11-GISEL: ; %bb.0:13152; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13153; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off13154; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)13155; GFX11-GISEL-NEXT: v_lshrrev_b32_e32 v0, 8, v413156; GFX11-GISEL-NEXT: v_lshrrev_b32_e32 v9, 8, v513157; GFX11-GISEL-NEXT: v_lshrrev_b32_e32 v12, 8, v613158; GFX11-GISEL-NEXT: v_lshrrev_b32_e32 v15, 8, v713159; GFX11-GISEL-NEXT: v_lshrrev_b32_e32 v1, 16, v413160; GFX11-GISEL-NEXT: v_lshrrev_b32_e32 v8, 24, v413161; GFX11-GISEL-NEXT: v_lshrrev_b32_e32 v10, 16, v513162; GFX11-GISEL-NEXT: v_lshrrev_b32_e32 v11, 24, v513163; GFX11-GISEL-NEXT: v_lshrrev_b32_e32 v13, 16, v613164; GFX11-GISEL-NEXT: v_lshrrev_b32_e32 v14, 24, v613165; GFX11-GISEL-NEXT: v_lshrrev_b32_e32 v16, 16, v713166; GFX11-GISEL-NEXT: v_lshrrev_b32_e32 v17, 24, v713167; GFX11-GISEL-NEXT: v_and_b32_e32 v0, 0xff, v013168; GFX11-GISEL-NEXT: v_and_b32_e32 v9, 0xff, v913169; GFX11-GISEL-NEXT: v_and_b32_e32 v12, 0xff, v1213170; GFX11-GISEL-NEXT: v_and_b32_e32 v15, 0xff, v1513171; GFX11-GISEL-NEXT: v_and_b32_e32 v1, 0xff, v113172; GFX11-GISEL-NEXT: v_and_b32_e32 v8, 0xff, v813173; GFX11-GISEL-NEXT: v_and_b32_e32 v10, 0xff, v1013174; GFX11-GISEL-NEXT: v_and_b32_e32 v11, 0xff, v1113175; GFX11-GISEL-NEXT: v_and_b32_e32 v13, 0xff, v1313176; GFX11-GISEL-NEXT: v_and_b32_e32 v14, 0xff, v1413177; GFX11-GISEL-NEXT: v_and_b32_e32 v16, 0xff, v1613178; GFX11-GISEL-NEXT: v_and_b32_e32 v17, 0xff, v1713179; GFX11-GISEL-NEXT: v_lshlrev_b32_e32 v0, 8, v013180; GFX11-GISEL-NEXT: v_lshlrev_b32_e32 v9, 8, v913181; GFX11-GISEL-NEXT: v_lshlrev_b32_e32 v12, 8, v1213182; GFX11-GISEL-NEXT: v_lshlrev_b32_e32 v15, 8, v1513183; GFX11-GISEL-NEXT: v_lshlrev_b32_e32 v1, 16, v113184; GFX11-GISEL-NEXT: v_lshlrev_b32_e32 v8, 24, v813185; GFX11-GISEL-NEXT: v_lshlrev_b32_e32 v10, 16, v1013186; GFX11-GISEL-NEXT: v_lshlrev_b32_e32 v11, 24, v1113187; GFX11-GISEL-NEXT: v_lshlrev_b32_e32 v13, 16, v1313188; GFX11-GISEL-NEXT: v_lshlrev_b32_e32 v14, 24, v1413189; GFX11-GISEL-NEXT: v_lshlrev_b32_e32 v16, 16, v1613190; GFX11-GISEL-NEXT: v_lshlrev_b32_e32 v17, 24, v1713191; GFX11-GISEL-NEXT: v_and_or_b32 v0, 0xff, v4, v013192; GFX11-GISEL-NEXT: v_and_or_b32 v5, 0xff, v5, v913193; GFX11-GISEL-NEXT: v_and_or_b32 v6, 0xff, v6, v1213194; GFX11-GISEL-NEXT: v_and_or_b32 v7, 0xff, v7, v1513195; GFX11-GISEL-NEXT: v_or3_b32 v4, v0, v1, v813196; GFX11-GISEL-NEXT: v_or3_b32 v5, v5, v10, v1113197; GFX11-GISEL-NEXT: v_or3_b32 v6, v6, v13, v1413198; GFX11-GISEL-NEXT: v_or3_b32 v7, v7, v16, v1713199; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off13200; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]13201 %a = load <16 x i8>, ptr addrspace(1) %ptra13202 %freeze = freeze <16 x i8> %a13203 store <16 x i8> %freeze, ptr addrspace(1) %ptrb13204 ret void13205}13206 13207define void @freeze_i1(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {13208; GFX6-SDAG-LABEL: freeze_i1:13209; GFX6-SDAG: ; %bb.0:13210; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13211; GFX6-SDAG-NEXT: s_mov_b32 s6, 013212; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf00013213; GFX6-SDAG-NEXT: s_mov_b32 s4, s613214; GFX6-SDAG-NEXT: s_mov_b32 s5, s613215; GFX6-SDAG-NEXT: buffer_load_ubyte v0, v[0:1], s[4:7], 0 addr6413216; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0)13217; GFX6-SDAG-NEXT: v_and_b32_e32 v0, 1, v013218; GFX6-SDAG-NEXT: buffer_store_byte v0, v[2:3], s[4:7], 0 addr6413219; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)13220; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]13221;13222; GFX6-GISEL-LABEL: freeze_i1:13223; GFX6-GISEL: ; %bb.0:13224; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13225; GFX6-GISEL-NEXT: s_mov_b32 s6, 013226; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf00013227; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 013228; GFX6-GISEL-NEXT: buffer_load_ubyte v0, v[0:1], s[4:7], 0 addr6413229; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0)13230; GFX6-GISEL-NEXT: v_and_b32_e32 v0, 1, v013231; GFX6-GISEL-NEXT: buffer_store_byte v0, v[2:3], s[4:7], 0 addr6413232; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)13233; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]13234;13235; GFX7-SDAG-LABEL: freeze_i1:13236; GFX7-SDAG: ; %bb.0:13237; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13238; GFX7-SDAG-NEXT: s_mov_b32 s6, 013239; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf00013240; GFX7-SDAG-NEXT: s_mov_b32 s4, s613241; GFX7-SDAG-NEXT: s_mov_b32 s5, s613242; GFX7-SDAG-NEXT: buffer_load_ubyte v0, v[0:1], s[4:7], 0 addr6413243; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)13244; GFX7-SDAG-NEXT: v_and_b32_e32 v0, 1, v013245; GFX7-SDAG-NEXT: buffer_store_byte v0, v[2:3], s[4:7], 0 addr6413246; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)13247; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]13248;13249; GFX7-GISEL-LABEL: freeze_i1:13250; GFX7-GISEL: ; %bb.0:13251; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13252; GFX7-GISEL-NEXT: s_mov_b32 s6, 013253; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf00013254; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 013255; GFX7-GISEL-NEXT: buffer_load_ubyte v0, v[0:1], s[4:7], 0 addr6413256; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)13257; GFX7-GISEL-NEXT: v_and_b32_e32 v0, 1, v013258; GFX7-GISEL-NEXT: buffer_store_byte v0, v[2:3], s[4:7], 0 addr6413259; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)13260; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]13261;13262; GFX8-LABEL: freeze_i1:13263; GFX8: ; %bb.0:13264; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13265; GFX8-NEXT: flat_load_ubyte v0, v[0:1]13266; GFX8-NEXT: s_waitcnt vmcnt(0)13267; GFX8-NEXT: v_and_b32_e32 v0, 1, v013268; GFX8-NEXT: flat_store_byte v[2:3], v013269; GFX8-NEXT: s_waitcnt vmcnt(0)13270; GFX8-NEXT: s_setpc_b64 s[30:31]13271;13272; GFX9-LABEL: freeze_i1:13273; GFX9: ; %bb.0:13274; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13275; GFX9-NEXT: global_load_ubyte v0, v[0:1], off13276; GFX9-NEXT: s_waitcnt vmcnt(0)13277; GFX9-NEXT: v_and_b32_e32 v0, 1, v013278; GFX9-NEXT: global_store_byte v[2:3], v0, off13279; GFX9-NEXT: s_waitcnt vmcnt(0)13280; GFX9-NEXT: s_setpc_b64 s[30:31]13281;13282; GFX10-LABEL: freeze_i1:13283; GFX10: ; %bb.0:13284; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13285; GFX10-NEXT: global_load_ubyte v0, v[0:1], off13286; GFX10-NEXT: s_waitcnt vmcnt(0)13287; GFX10-NEXT: v_and_b32_e32 v0, 1, v013288; GFX10-NEXT: global_store_byte v[2:3], v0, off13289; GFX10-NEXT: s_setpc_b64 s[30:31]13290;13291; GFX11-LABEL: freeze_i1:13292; GFX11: ; %bb.0:13293; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13294; GFX11-NEXT: global_load_u8 v0, v[0:1], off13295; GFX11-NEXT: s_waitcnt vmcnt(0)13296; GFX11-NEXT: v_and_b32_e32 v0, 1, v013297; GFX11-NEXT: global_store_b8 v[2:3], v0, off13298; GFX11-NEXT: s_setpc_b64 s[30:31]13299 %a = load i1, ptr addrspace(1) %ptra13300 %freeze = freeze i1 %a13301 store i1 %freeze, ptr addrspace(1) %ptrb13302 ret void13303}13304 13305define void @freeze_v2i1(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {13306; GFX6-SDAG-LABEL: freeze_v2i1:13307; GFX6-SDAG: ; %bb.0:13308; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13309; GFX6-SDAG-NEXT: s_mov_b32 s6, 013310; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf00013311; GFX6-SDAG-NEXT: s_mov_b32 s4, s613312; GFX6-SDAG-NEXT: s_mov_b32 s5, s613313; GFX6-SDAG-NEXT: buffer_load_ubyte v0, v[0:1], s[4:7], 0 addr6413314; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0)13315; GFX6-SDAG-NEXT: v_and_b32_e32 v0, 3, v013316; GFX6-SDAG-NEXT: buffer_store_byte v0, v[2:3], s[4:7], 0 addr6413317; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)13318; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]13319;13320; GFX6-GISEL-LABEL: freeze_v2i1:13321; GFX6-GISEL: ; %bb.0:13322; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13323; GFX6-GISEL-NEXT: s_mov_b32 s6, 013324; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf00013325; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 013326; GFX6-GISEL-NEXT: buffer_load_ubyte v0, v[0:1], s[4:7], 0 addr6413327; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0)13328; GFX6-GISEL-NEXT: v_lshrrev_b32_e32 v1, 1, v013329; GFX6-GISEL-NEXT: v_and_b32_e32 v1, 1, v113330; GFX6-GISEL-NEXT: v_and_b32_e32 v0, 1, v013331; GFX6-GISEL-NEXT: v_lshlrev_b32_e32 v1, 1, v113332; GFX6-GISEL-NEXT: v_or_b32_e32 v0, v0, v113333; GFX6-GISEL-NEXT: v_and_b32_e32 v0, 3, v013334; GFX6-GISEL-NEXT: buffer_store_byte v0, v[2:3], s[4:7], 0 addr6413335; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)13336; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]13337;13338; GFX7-SDAG-LABEL: freeze_v2i1:13339; GFX7-SDAG: ; %bb.0:13340; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13341; GFX7-SDAG-NEXT: s_mov_b32 s6, 013342; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf00013343; GFX7-SDAG-NEXT: s_mov_b32 s4, s613344; GFX7-SDAG-NEXT: s_mov_b32 s5, s613345; GFX7-SDAG-NEXT: buffer_load_ubyte v0, v[0:1], s[4:7], 0 addr6413346; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)13347; GFX7-SDAG-NEXT: v_and_b32_e32 v0, 3, v013348; GFX7-SDAG-NEXT: buffer_store_byte v0, v[2:3], s[4:7], 0 addr6413349; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)13350; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]13351;13352; GFX7-GISEL-LABEL: freeze_v2i1:13353; GFX7-GISEL: ; %bb.0:13354; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13355; GFX7-GISEL-NEXT: s_mov_b32 s6, 013356; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf00013357; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 013358; GFX7-GISEL-NEXT: buffer_load_ubyte v0, v[0:1], s[4:7], 0 addr6413359; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)13360; GFX7-GISEL-NEXT: v_lshrrev_b32_e32 v1, 1, v013361; GFX7-GISEL-NEXT: v_and_b32_e32 v1, 1, v113362; GFX7-GISEL-NEXT: v_and_b32_e32 v0, 1, v013363; GFX7-GISEL-NEXT: v_lshlrev_b32_e32 v1, 1, v113364; GFX7-GISEL-NEXT: v_or_b32_e32 v0, v0, v113365; GFX7-GISEL-NEXT: v_and_b32_e32 v0, 3, v013366; GFX7-GISEL-NEXT: buffer_store_byte v0, v[2:3], s[4:7], 0 addr6413367; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)13368; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]13369;13370; GFX8-GISEL-LABEL: freeze_v2i1:13371; GFX8-GISEL: ; %bb.0:13372; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13373; GFX8-GISEL-NEXT: flat_load_ubyte v0, v[0:1]13374; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)13375; GFX8-GISEL-NEXT: v_lshrrev_b32_e32 v1, 1, v013376; GFX8-GISEL-NEXT: v_and_b32_e32 v1, 1, v113377; GFX8-GISEL-NEXT: v_and_b32_e32 v0, 1, v013378; GFX8-GISEL-NEXT: v_lshlrev_b16_e32 v1, 1, v113379; GFX8-GISEL-NEXT: v_or_b32_e32 v0, v0, v113380; GFX8-GISEL-NEXT: v_and_b32_e32 v0, 3, v013381; GFX8-GISEL-NEXT: flat_store_byte v[2:3], v013382; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)13383; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]13384;13385; GFX9-GISEL-LABEL: freeze_v2i1:13386; GFX9-GISEL: ; %bb.0:13387; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13388; GFX9-GISEL-NEXT: global_load_ubyte v0, v[0:1], off13389; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)13390; GFX9-GISEL-NEXT: v_lshrrev_b32_e32 v1, 1, v013391; GFX9-GISEL-NEXT: v_and_b32_e32 v1, 1, v113392; GFX9-GISEL-NEXT: v_and_b32_e32 v0, 1, v013393; GFX9-GISEL-NEXT: v_lshlrev_b16_e32 v1, 1, v113394; GFX9-GISEL-NEXT: v_or_b32_e32 v0, v0, v113395; GFX9-GISEL-NEXT: v_and_b32_e32 v0, 3, v013396; GFX9-GISEL-NEXT: global_store_byte v[2:3], v0, off13397; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)13398; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]13399;13400; GFX10-SDAG-LABEL: freeze_v2i1:13401; GFX10-SDAG: ; %bb.0:13402; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13403; GFX10-SDAG-NEXT: global_load_ubyte v0, v[0:1], off13404; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)13405; GFX10-SDAG-NEXT: v_and_b32_e32 v0, 3, v013406; GFX10-SDAG-NEXT: global_store_byte v[2:3], v0, off13407; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]13408;13409; GFX10-GISEL-LABEL: freeze_v2i1:13410; GFX10-GISEL: ; %bb.0:13411; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13412; GFX10-GISEL-NEXT: global_load_ubyte v0, v[0:1], off13413; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)13414; GFX10-GISEL-NEXT: v_lshrrev_b32_e32 v1, 1, v013415; GFX10-GISEL-NEXT: v_and_b32_e32 v0, 1, v013416; GFX10-GISEL-NEXT: v_and_b32_e32 v1, 1, v113417; GFX10-GISEL-NEXT: v_lshlrev_b16 v1, 1, v113418; GFX10-GISEL-NEXT: v_or_b32_e32 v0, v0, v113419; GFX10-GISEL-NEXT: v_and_b32_e32 v0, 3, v013420; GFX10-GISEL-NEXT: global_store_byte v[2:3], v0, off13421; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]13422;13423; GFX11-SDAG-TRUE16-LABEL: freeze_v2i1:13424; GFX11-SDAG-TRUE16: ; %bb.0:13425; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13426; GFX11-SDAG-TRUE16-NEXT: global_load_d16_u8 v0, v[0:1], off13427; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0)13428; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v0.l, v0.l, 313429; GFX11-SDAG-TRUE16-NEXT: global_store_b8 v[2:3], v0, off13430; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]13431;13432; GFX11-SDAG-FAKE16-LABEL: freeze_v2i1:13433; GFX11-SDAG-FAKE16: ; %bb.0:13434; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13435; GFX11-SDAG-FAKE16-NEXT: global_load_u8 v0, v[0:1], off13436; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0)13437; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v0, 3, v013438; GFX11-SDAG-FAKE16-NEXT: global_store_b8 v[2:3], v0, off13439; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]13440;13441; GFX11-GISEL-LABEL: freeze_v2i1:13442; GFX11-GISEL: ; %bb.0:13443; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13444; GFX11-GISEL-NEXT: global_load_u8 v0, v[0:1], off13445; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)13446; GFX11-GISEL-NEXT: v_lshrrev_b32_e32 v1, 1, v013447; GFX11-GISEL-NEXT: v_and_b32_e32 v0, 1, v013448; GFX11-GISEL-NEXT: v_and_b32_e32 v1, 1, v113449; GFX11-GISEL-NEXT: v_lshlrev_b16 v1, 1, v113450; GFX11-GISEL-NEXT: v_or_b32_e32 v0, v0, v113451; GFX11-GISEL-NEXT: v_and_b32_e32 v0, 3, v013452; GFX11-GISEL-NEXT: global_store_b8 v[2:3], v0, off13453; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]13454 %a = load <2 x i1>, ptr addrspace(1) %ptra13455 %freeze = freeze <2 x i1> %a13456 store <2 x i1> %freeze, ptr addrspace(1) %ptrb13457 ret void13458}13459 13460define void @freeze_v3i1(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {13461; GFX6-SDAG-LABEL: freeze_v3i1:13462; GFX6-SDAG: ; %bb.0:13463; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13464; GFX6-SDAG-NEXT: s_mov_b32 s6, 013465; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf00013466; GFX6-SDAG-NEXT: s_mov_b32 s4, s613467; GFX6-SDAG-NEXT: s_mov_b32 s5, s613468; GFX6-SDAG-NEXT: buffer_load_ubyte v0, v[0:1], s[4:7], 0 addr6413469; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0)13470; GFX6-SDAG-NEXT: v_and_b32_e32 v0, 7, v013471; GFX6-SDAG-NEXT: buffer_store_byte v0, v[2:3], s[4:7], 0 addr6413472; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)13473; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]13474;13475; GFX6-GISEL-LABEL: freeze_v3i1:13476; GFX6-GISEL: ; %bb.0:13477; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13478; GFX6-GISEL-NEXT: s_mov_b32 s6, 013479; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf00013480; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 013481; GFX6-GISEL-NEXT: buffer_load_ubyte v0, v[0:1], s[4:7], 0 addr6413482; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0)13483; GFX6-GISEL-NEXT: v_lshrrev_b32_e32 v1, 1, v013484; GFX6-GISEL-NEXT: v_lshrrev_b32_e32 v4, 2, v013485; GFX6-GISEL-NEXT: v_and_b32_e32 v1, 1, v113486; GFX6-GISEL-NEXT: v_and_b32_e32 v0, 1, v013487; GFX6-GISEL-NEXT: v_and_b32_e32 v4, 1, v413488; GFX6-GISEL-NEXT: v_lshlrev_b32_e32 v1, 1, v113489; GFX6-GISEL-NEXT: v_or_b32_e32 v0, v0, v113490; GFX6-GISEL-NEXT: v_lshlrev_b32_e32 v1, 2, v413491; GFX6-GISEL-NEXT: v_or_b32_e32 v0, v0, v113492; GFX6-GISEL-NEXT: v_and_b32_e32 v0, 7, v013493; GFX6-GISEL-NEXT: buffer_store_byte v0, v[2:3], s[4:7], 0 addr6413494; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)13495; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]13496;13497; GFX7-SDAG-LABEL: freeze_v3i1:13498; GFX7-SDAG: ; %bb.0:13499; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13500; GFX7-SDAG-NEXT: s_mov_b32 s6, 013501; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf00013502; GFX7-SDAG-NEXT: s_mov_b32 s4, s613503; GFX7-SDAG-NEXT: s_mov_b32 s5, s613504; GFX7-SDAG-NEXT: buffer_load_ubyte v0, v[0:1], s[4:7], 0 addr6413505; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)13506; GFX7-SDAG-NEXT: v_and_b32_e32 v0, 7, v013507; GFX7-SDAG-NEXT: buffer_store_byte v0, v[2:3], s[4:7], 0 addr6413508; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)13509; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]13510;13511; GFX7-GISEL-LABEL: freeze_v3i1:13512; GFX7-GISEL: ; %bb.0:13513; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13514; GFX7-GISEL-NEXT: s_mov_b32 s6, 013515; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf00013516; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 013517; GFX7-GISEL-NEXT: buffer_load_ubyte v0, v[0:1], s[4:7], 0 addr6413518; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)13519; GFX7-GISEL-NEXT: v_lshrrev_b32_e32 v1, 1, v013520; GFX7-GISEL-NEXT: v_lshrrev_b32_e32 v4, 2, v013521; GFX7-GISEL-NEXT: v_and_b32_e32 v1, 1, v113522; GFX7-GISEL-NEXT: v_and_b32_e32 v0, 1, v013523; GFX7-GISEL-NEXT: v_and_b32_e32 v4, 1, v413524; GFX7-GISEL-NEXT: v_lshlrev_b32_e32 v1, 1, v113525; GFX7-GISEL-NEXT: v_or_b32_e32 v0, v0, v113526; GFX7-GISEL-NEXT: v_lshlrev_b32_e32 v1, 2, v413527; GFX7-GISEL-NEXT: v_or_b32_e32 v0, v0, v113528; GFX7-GISEL-NEXT: v_and_b32_e32 v0, 7, v013529; GFX7-GISEL-NEXT: buffer_store_byte v0, v[2:3], s[4:7], 0 addr6413530; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)13531; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]13532;13533; GFX8-GISEL-LABEL: freeze_v3i1:13534; GFX8-GISEL: ; %bb.0:13535; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13536; GFX8-GISEL-NEXT: flat_load_ubyte v0, v[0:1]13537; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)13538; GFX8-GISEL-NEXT: v_lshrrev_b32_e32 v1, 1, v013539; GFX8-GISEL-NEXT: v_lshrrev_b32_e32 v4, 2, v013540; GFX8-GISEL-NEXT: v_and_b32_e32 v1, 1, v113541; GFX8-GISEL-NEXT: v_and_b32_e32 v0, 1, v013542; GFX8-GISEL-NEXT: v_and_b32_e32 v4, 1, v413543; GFX8-GISEL-NEXT: v_lshlrev_b16_e32 v1, 1, v113544; GFX8-GISEL-NEXT: v_or_b32_e32 v0, v0, v113545; GFX8-GISEL-NEXT: v_lshlrev_b16_e32 v1, 2, v413546; GFX8-GISEL-NEXT: v_or_b32_e32 v0, v0, v113547; GFX8-GISEL-NEXT: v_and_b32_e32 v0, 7, v013548; GFX8-GISEL-NEXT: flat_store_byte v[2:3], v013549; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)13550; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]13551;13552; GFX9-GISEL-LABEL: freeze_v3i1:13553; GFX9-GISEL: ; %bb.0:13554; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13555; GFX9-GISEL-NEXT: global_load_ubyte v0, v[0:1], off13556; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)13557; GFX9-GISEL-NEXT: v_lshrrev_b32_e32 v1, 1, v013558; GFX9-GISEL-NEXT: v_lshrrev_b32_e32 v4, 2, v013559; GFX9-GISEL-NEXT: v_and_b32_e32 v1, 1, v113560; GFX9-GISEL-NEXT: v_and_b32_e32 v0, 1, v013561; GFX9-GISEL-NEXT: v_and_b32_e32 v4, 1, v413562; GFX9-GISEL-NEXT: v_lshlrev_b16_e32 v1, 1, v113563; GFX9-GISEL-NEXT: v_or_b32_e32 v0, v0, v113564; GFX9-GISEL-NEXT: v_lshlrev_b16_e32 v1, 2, v413565; GFX9-GISEL-NEXT: v_or_b32_e32 v0, v0, v113566; GFX9-GISEL-NEXT: v_and_b32_e32 v0, 7, v013567; GFX9-GISEL-NEXT: global_store_byte v[2:3], v0, off13568; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)13569; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]13570;13571; GFX10-SDAG-LABEL: freeze_v3i1:13572; GFX10-SDAG: ; %bb.0:13573; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13574; GFX10-SDAG-NEXT: global_load_ubyte v0, v[0:1], off13575; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)13576; GFX10-SDAG-NEXT: v_and_b32_e32 v0, 7, v013577; GFX10-SDAG-NEXT: global_store_byte v[2:3], v0, off13578; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]13579;13580; GFX10-GISEL-LABEL: freeze_v3i1:13581; GFX10-GISEL: ; %bb.0:13582; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13583; GFX10-GISEL-NEXT: global_load_ubyte v0, v[0:1], off13584; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)13585; GFX10-GISEL-NEXT: v_lshrrev_b32_e32 v1, 1, v013586; GFX10-GISEL-NEXT: v_lshrrev_b32_e32 v4, 2, v013587; GFX10-GISEL-NEXT: v_and_b32_e32 v0, 1, v013588; GFX10-GISEL-NEXT: v_and_b32_e32 v1, 1, v113589; GFX10-GISEL-NEXT: v_and_b32_e32 v4, 1, v413590; GFX10-GISEL-NEXT: v_lshlrev_b16 v1, 1, v113591; GFX10-GISEL-NEXT: v_or_b32_e32 v0, v0, v113592; GFX10-GISEL-NEXT: v_lshlrev_b16 v1, 2, v413593; GFX10-GISEL-NEXT: v_or_b32_e32 v0, v0, v113594; GFX10-GISEL-NEXT: v_and_b32_e32 v0, 7, v013595; GFX10-GISEL-NEXT: global_store_byte v[2:3], v0, off13596; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]13597;13598; GFX11-SDAG-TRUE16-LABEL: freeze_v3i1:13599; GFX11-SDAG-TRUE16: ; %bb.0:13600; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13601; GFX11-SDAG-TRUE16-NEXT: global_load_d16_u8 v0, v[0:1], off13602; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0)13603; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v0.l, v0.l, 713604; GFX11-SDAG-TRUE16-NEXT: global_store_b8 v[2:3], v0, off13605; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]13606;13607; GFX11-SDAG-FAKE16-LABEL: freeze_v3i1:13608; GFX11-SDAG-FAKE16: ; %bb.0:13609; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13610; GFX11-SDAG-FAKE16-NEXT: global_load_u8 v0, v[0:1], off13611; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0)13612; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v0, 7, v013613; GFX11-SDAG-FAKE16-NEXT: global_store_b8 v[2:3], v0, off13614; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]13615;13616; GFX11-GISEL-LABEL: freeze_v3i1:13617; GFX11-GISEL: ; %bb.0:13618; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13619; GFX11-GISEL-NEXT: global_load_u8 v0, v[0:1], off13620; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)13621; GFX11-GISEL-NEXT: v_lshrrev_b32_e32 v1, 1, v013622; GFX11-GISEL-NEXT: v_lshrrev_b32_e32 v4, 2, v013623; GFX11-GISEL-NEXT: v_and_b32_e32 v0, 1, v013624; GFX11-GISEL-NEXT: v_and_b32_e32 v1, 1, v113625; GFX11-GISEL-NEXT: v_and_b32_e32 v4, 1, v413626; GFX11-GISEL-NEXT: v_lshlrev_b16 v1, 1, v113627; GFX11-GISEL-NEXT: v_or_b32_e32 v0, v0, v113628; GFX11-GISEL-NEXT: v_lshlrev_b16 v1, 2, v413629; GFX11-GISEL-NEXT: v_or_b32_e32 v0, v0, v113630; GFX11-GISEL-NEXT: v_and_b32_e32 v0, 7, v013631; GFX11-GISEL-NEXT: global_store_b8 v[2:3], v0, off13632; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]13633 %a = load <3 x i1>, ptr addrspace(1) %ptra13634 %freeze = freeze <3 x i1> %a13635 store <3 x i1> %freeze, ptr addrspace(1) %ptrb13636 ret void13637}13638 13639define void @freeze_i1_vcc(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {13640; GFX6-SDAG-LABEL: freeze_i1_vcc:13641; GFX6-SDAG: ; %bb.0:13642; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13643; GFX6-SDAG-NEXT: s_mov_b32 s6, 013644; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf00013645; GFX6-SDAG-NEXT: s_mov_b32 s4, s613646; GFX6-SDAG-NEXT: s_mov_b32 s5, s613647; GFX6-SDAG-NEXT: buffer_load_dword v0, v[0:1], s[4:7], 0 addr6413648; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0)13649; GFX6-SDAG-NEXT: v_cmp_eq_u32_e32 vcc, 0, v013650; GFX6-SDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc13651; GFX6-SDAG-NEXT: buffer_store_byte v0, v[2:3], s[4:7], 0 addr6413652; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)13653; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]13654;13655; GFX6-GISEL-LABEL: freeze_i1_vcc:13656; GFX6-GISEL: ; %bb.0:13657; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13658; GFX6-GISEL-NEXT: s_mov_b32 s6, 013659; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf00013660; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 013661; GFX6-GISEL-NEXT: buffer_load_dword v0, v[0:1], s[4:7], 0 addr6413662; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0)13663; GFX6-GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v013664; GFX6-GISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc13665; GFX6-GISEL-NEXT: buffer_store_byte v0, v[2:3], s[4:7], 0 addr6413666; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)13667; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]13668;13669; GFX7-SDAG-LABEL: freeze_i1_vcc:13670; GFX7-SDAG: ; %bb.0:13671; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13672; GFX7-SDAG-NEXT: s_mov_b32 s6, 013673; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf00013674; GFX7-SDAG-NEXT: s_mov_b32 s4, s613675; GFX7-SDAG-NEXT: s_mov_b32 s5, s613676; GFX7-SDAG-NEXT: buffer_load_dword v0, v[0:1], s[4:7], 0 addr6413677; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)13678; GFX7-SDAG-NEXT: v_cmp_eq_u32_e32 vcc, 0, v013679; GFX7-SDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc13680; GFX7-SDAG-NEXT: buffer_store_byte v0, v[2:3], s[4:7], 0 addr6413681; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)13682; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]13683;13684; GFX7-GISEL-LABEL: freeze_i1_vcc:13685; GFX7-GISEL: ; %bb.0:13686; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13687; GFX7-GISEL-NEXT: s_mov_b32 s6, 013688; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf00013689; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 013690; GFX7-GISEL-NEXT: buffer_load_dword v0, v[0:1], s[4:7], 0 addr6413691; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)13692; GFX7-GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v013693; GFX7-GISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc13694; GFX7-GISEL-NEXT: buffer_store_byte v0, v[2:3], s[4:7], 0 addr6413695; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)13696; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]13697;13698; GFX8-LABEL: freeze_i1_vcc:13699; GFX8: ; %bb.0:13700; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13701; GFX8-NEXT: flat_load_dword v0, v[0:1]13702; GFX8-NEXT: s_waitcnt vmcnt(0)13703; GFX8-NEXT: v_cmp_eq_u32_e32 vcc, 0, v013704; GFX8-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc13705; GFX8-NEXT: flat_store_byte v[2:3], v013706; GFX8-NEXT: s_waitcnt vmcnt(0)13707; GFX8-NEXT: s_setpc_b64 s[30:31]13708;13709; GFX9-LABEL: freeze_i1_vcc:13710; GFX9: ; %bb.0:13711; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13712; GFX9-NEXT: global_load_dword v0, v[0:1], off13713; GFX9-NEXT: s_waitcnt vmcnt(0)13714; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v013715; GFX9-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc13716; GFX9-NEXT: global_store_byte v[2:3], v0, off13717; GFX9-NEXT: s_waitcnt vmcnt(0)13718; GFX9-NEXT: s_setpc_b64 s[30:31]13719;13720; GFX10-LABEL: freeze_i1_vcc:13721; GFX10: ; %bb.0:13722; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13723; GFX10-NEXT: global_load_dword v0, v[0:1], off13724; GFX10-NEXT: s_waitcnt vmcnt(0)13725; GFX10-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v013726; GFX10-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo13727; GFX10-NEXT: global_store_byte v[2:3], v0, off13728; GFX10-NEXT: s_setpc_b64 s[30:31]13729;13730; GFX11-LABEL: freeze_i1_vcc:13731; GFX11: ; %bb.0:13732; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13733; GFX11-NEXT: global_load_b32 v0, v[0:1], off13734; GFX11-NEXT: s_waitcnt vmcnt(0)13735; GFX11-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v013736; GFX11-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo13737; GFX11-NEXT: global_store_b8 v[2:3], v0, off13738; GFX11-NEXT: s_setpc_b64 s[30:31]13739 %a = load i32, ptr addrspace(1) %ptra13740 %cmp = icmp eq i32 %a, 013741 %freeze = freeze i1 %cmp13742 store i1 %freeze, ptr addrspace(1) %ptrb13743 ret void13744}13745 13746define void @freeze_v2i1_vcc(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {13747; GFX6-SDAG-LABEL: freeze_v2i1_vcc:13748; GFX6-SDAG: ; %bb.0:13749; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13750; GFX6-SDAG-NEXT: s_mov_b32 s6, 013751; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf00013752; GFX6-SDAG-NEXT: s_mov_b32 s4, s613753; GFX6-SDAG-NEXT: s_mov_b32 s5, s613754; GFX6-SDAG-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr6413755; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0)13756; GFX6-SDAG-NEXT: v_cmp_eq_u32_e32 vcc, 0, v113757; GFX6-SDAG-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc13758; GFX6-SDAG-NEXT: v_cmp_eq_u32_e32 vcc, 0, v013759; GFX6-SDAG-NEXT: v_lshlrev_b32_e32 v1, 1, v113760; GFX6-SDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc13761; GFX6-SDAG-NEXT: v_or_b32_e32 v0, v0, v113762; GFX6-SDAG-NEXT: v_and_b32_e32 v0, 3, v013763; GFX6-SDAG-NEXT: buffer_store_byte v0, v[2:3], s[4:7], 0 addr6413764; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)13765; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]13766;13767; GFX6-GISEL-LABEL: freeze_v2i1_vcc:13768; GFX6-GISEL: ; %bb.0:13769; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13770; GFX6-GISEL-NEXT: s_mov_b32 s6, 013771; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf00013772; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 013773; GFX6-GISEL-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr6413774; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0)13775; GFX6-GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v013776; GFX6-GISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc13777; GFX6-GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v113778; GFX6-GISEL-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc13779; GFX6-GISEL-NEXT: v_and_b32_e32 v1, 1, v113780; GFX6-GISEL-NEXT: v_and_b32_e32 v0, 1, v013781; GFX6-GISEL-NEXT: v_lshlrev_b32_e32 v1, 1, v113782; GFX6-GISEL-NEXT: v_or_b32_e32 v0, v0, v113783; GFX6-GISEL-NEXT: v_and_b32_e32 v0, 3, v013784; GFX6-GISEL-NEXT: buffer_store_byte v0, v[2:3], s[4:7], 0 addr6413785; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)13786; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]13787;13788; GFX7-SDAG-LABEL: freeze_v2i1_vcc:13789; GFX7-SDAG: ; %bb.0:13790; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13791; GFX7-SDAG-NEXT: s_mov_b32 s6, 013792; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf00013793; GFX7-SDAG-NEXT: s_mov_b32 s4, s613794; GFX7-SDAG-NEXT: s_mov_b32 s5, s613795; GFX7-SDAG-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr6413796; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)13797; GFX7-SDAG-NEXT: v_cmp_eq_u32_e32 vcc, 0, v113798; GFX7-SDAG-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc13799; GFX7-SDAG-NEXT: v_cmp_eq_u32_e32 vcc, 0, v013800; GFX7-SDAG-NEXT: v_lshlrev_b32_e32 v1, 1, v113801; GFX7-SDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc13802; GFX7-SDAG-NEXT: v_or_b32_e32 v0, v0, v113803; GFX7-SDAG-NEXT: v_and_b32_e32 v0, 3, v013804; GFX7-SDAG-NEXT: buffer_store_byte v0, v[2:3], s[4:7], 0 addr6413805; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)13806; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]13807;13808; GFX7-GISEL-LABEL: freeze_v2i1_vcc:13809; GFX7-GISEL: ; %bb.0:13810; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13811; GFX7-GISEL-NEXT: s_mov_b32 s6, 013812; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf00013813; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 013814; GFX7-GISEL-NEXT: buffer_load_dwordx2 v[0:1], v[0:1], s[4:7], 0 addr6413815; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)13816; GFX7-GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v013817; GFX7-GISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc13818; GFX7-GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v113819; GFX7-GISEL-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc13820; GFX7-GISEL-NEXT: v_and_b32_e32 v1, 1, v113821; GFX7-GISEL-NEXT: v_and_b32_e32 v0, 1, v013822; GFX7-GISEL-NEXT: v_lshlrev_b32_e32 v1, 1, v113823; GFX7-GISEL-NEXT: v_or_b32_e32 v0, v0, v113824; GFX7-GISEL-NEXT: v_and_b32_e32 v0, 3, v013825; GFX7-GISEL-NEXT: buffer_store_byte v0, v[2:3], s[4:7], 0 addr6413826; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)13827; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]13828;13829; GFX8-GISEL-LABEL: freeze_v2i1_vcc:13830; GFX8-GISEL: ; %bb.0:13831; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13832; GFX8-GISEL-NEXT: flat_load_dwordx2 v[0:1], v[0:1]13833; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)13834; GFX8-GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v013835; GFX8-GISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc13836; GFX8-GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v113837; GFX8-GISEL-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc13838; GFX8-GISEL-NEXT: v_and_b32_e32 v1, 1, v113839; GFX8-GISEL-NEXT: v_and_b32_e32 v0, 1, v013840; GFX8-GISEL-NEXT: v_lshlrev_b16_e32 v1, 1, v113841; GFX8-GISEL-NEXT: v_or_b32_e32 v0, v0, v113842; GFX8-GISEL-NEXT: v_and_b32_e32 v0, 3, v013843; GFX8-GISEL-NEXT: flat_store_byte v[2:3], v013844; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)13845; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]13846;13847; GFX9-GISEL-LABEL: freeze_v2i1_vcc:13848; GFX9-GISEL: ; %bb.0:13849; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13850; GFX9-GISEL-NEXT: global_load_dwordx2 v[0:1], v[0:1], off13851; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)13852; GFX9-GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v013853; GFX9-GISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc13854; GFX9-GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v113855; GFX9-GISEL-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc13856; GFX9-GISEL-NEXT: v_and_b32_e32 v1, 1, v113857; GFX9-GISEL-NEXT: v_and_b32_e32 v0, 1, v013858; GFX9-GISEL-NEXT: v_lshlrev_b16_e32 v1, 1, v113859; GFX9-GISEL-NEXT: v_or_b32_e32 v0, v0, v113860; GFX9-GISEL-NEXT: v_and_b32_e32 v0, 3, v013861; GFX9-GISEL-NEXT: global_store_byte v[2:3], v0, off13862; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)13863; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]13864;13865; GFX10-SDAG-LABEL: freeze_v2i1_vcc:13866; GFX10-SDAG: ; %bb.0:13867; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13868; GFX10-SDAG-NEXT: global_load_dwordx2 v[0:1], v[0:1], off13869; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)13870; GFX10-SDAG-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v113871; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc_lo13872; GFX10-SDAG-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v013873; GFX10-SDAG-NEXT: v_lshlrev_b16 v1, 1, v113874; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo13875; GFX10-SDAG-NEXT: v_or_b32_e32 v0, v0, v113876; GFX10-SDAG-NEXT: v_and_b32_e32 v0, 3, v013877; GFX10-SDAG-NEXT: global_store_byte v[2:3], v0, off13878; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]13879;13880; GFX10-GISEL-LABEL: freeze_v2i1_vcc:13881; GFX10-GISEL: ; %bb.0:13882; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13883; GFX10-GISEL-NEXT: global_load_dwordx2 v[0:1], v[0:1], off13884; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)13885; GFX10-GISEL-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v113886; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc_lo13887; GFX10-GISEL-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v013888; GFX10-GISEL-NEXT: v_and_b32_e32 v1, 1, v113889; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo13890; GFX10-GISEL-NEXT: v_lshlrev_b16 v1, 1, v113891; GFX10-GISEL-NEXT: v_and_b32_e32 v0, 1, v013892; GFX10-GISEL-NEXT: v_or_b32_e32 v0, v0, v113893; GFX10-GISEL-NEXT: v_and_b32_e32 v0, 3, v013894; GFX10-GISEL-NEXT: global_store_byte v[2:3], v0, off13895; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]13896;13897; GFX11-SDAG-TRUE16-LABEL: freeze_v2i1_vcc:13898; GFX11-SDAG-TRUE16: ; %bb.0:13899; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13900; GFX11-SDAG-TRUE16-NEXT: global_load_b64 v[4:5], v[0:1], off13901; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0)13902; GFX11-SDAG-TRUE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v513903; GFX11-SDAG-TRUE16-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo13904; GFX11-SDAG-TRUE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v413905; GFX11-SDAG-TRUE16-NEXT: v_lshlrev_b16 v0.l, 1, v0.l13906; GFX11-SDAG-TRUE16-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc_lo13907; GFX11-SDAG-TRUE16-NEXT: v_or_b16 v0.l, v1.l, v0.l13908; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v0.l, v0.l, 313909; GFX11-SDAG-TRUE16-NEXT: global_store_b8 v[2:3], v0, off13910; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]13911;13912; GFX11-SDAG-FAKE16-LABEL: freeze_v2i1_vcc:13913; GFX11-SDAG-FAKE16: ; %bb.0:13914; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13915; GFX11-SDAG-FAKE16-NEXT: global_load_b64 v[0:1], v[0:1], off13916; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0)13917; GFX11-SDAG-FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v113918; GFX11-SDAG-FAKE16-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc_lo13919; GFX11-SDAG-FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v013920; GFX11-SDAG-FAKE16-NEXT: v_lshlrev_b16 v1, 1, v113921; GFX11-SDAG-FAKE16-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo13922; GFX11-SDAG-FAKE16-NEXT: v_or_b32_e32 v0, v0, v113923; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v0, 3, v013924; GFX11-SDAG-FAKE16-NEXT: global_store_b8 v[2:3], v0, off13925; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]13926;13927; GFX11-GISEL-LABEL: freeze_v2i1_vcc:13928; GFX11-GISEL: ; %bb.0:13929; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13930; GFX11-GISEL-NEXT: global_load_b64 v[0:1], v[0:1], off13931; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)13932; GFX11-GISEL-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v113933; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc_lo13934; GFX11-GISEL-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v013935; GFX11-GISEL-NEXT: v_and_b32_e32 v1, 1, v113936; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo13937; GFX11-GISEL-NEXT: v_lshlrev_b16 v1, 1, v113938; GFX11-GISEL-NEXT: v_and_b32_e32 v0, 1, v013939; GFX11-GISEL-NEXT: v_or_b32_e32 v0, v0, v113940; GFX11-GISEL-NEXT: v_and_b32_e32 v0, 3, v013941; GFX11-GISEL-NEXT: global_store_b8 v[2:3], v0, off13942; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]13943 %a = load <2 x i32>, ptr addrspace(1) %ptra13944 %cmp = icmp eq <2 x i32> %a, zeroinitializer13945 %freeze = freeze <2 x i1> %cmp13946 store <2 x i1> %freeze, ptr addrspace(1) %ptrb13947 ret void13948}13949 13950define void @freeze_v3i1_vcc(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {13951; GFX6-SDAG-LABEL: freeze_v3i1_vcc:13952; GFX6-SDAG: ; %bb.0:13953; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13954; GFX6-SDAG-NEXT: s_mov_b32 s6, 013955; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf00013956; GFX6-SDAG-NEXT: s_mov_b32 s4, s613957; GFX6-SDAG-NEXT: s_mov_b32 s5, s613958; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr6413959; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0)13960; GFX6-SDAG-NEXT: v_cmp_eq_u32_e32 vcc, 0, v513961; GFX6-SDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc13962; GFX6-SDAG-NEXT: v_cmp_eq_u32_e32 vcc, 0, v413963; GFX6-SDAG-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc13964; GFX6-SDAG-NEXT: v_cmp_eq_u32_e32 vcc, 0, v613965; GFX6-SDAG-NEXT: v_cndmask_b32_e64 v4, 0, 1, vcc13966; GFX6-SDAG-NEXT: v_lshlrev_b32_e32 v0, 1, v013967; GFX6-SDAG-NEXT: v_or_b32_e32 v0, v1, v013968; GFX6-SDAG-NEXT: v_lshlrev_b32_e32 v1, 2, v413969; GFX6-SDAG-NEXT: v_or_b32_e32 v0, v0, v113970; GFX6-SDAG-NEXT: v_and_b32_e32 v0, 7, v013971; GFX6-SDAG-NEXT: buffer_store_byte v0, v[2:3], s[4:7], 0 addr6413972; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)13973; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]13974;13975; GFX6-GISEL-LABEL: freeze_v3i1_vcc:13976; GFX6-GISEL: ; %bb.0:13977; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13978; GFX6-GISEL-NEXT: s_mov_b32 s6, 013979; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf00013980; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 013981; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr6413982; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0)13983; GFX6-GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v413984; GFX6-GISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc13985; GFX6-GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v513986; GFX6-GISEL-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc13987; GFX6-GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v613988; GFX6-GISEL-NEXT: v_cndmask_b32_e64 v4, 0, 1, vcc13989; GFX6-GISEL-NEXT: v_and_b32_e32 v1, 1, v113990; GFX6-GISEL-NEXT: v_and_b32_e32 v0, 1, v013991; GFX6-GISEL-NEXT: v_and_b32_e32 v4, 1, v413992; GFX6-GISEL-NEXT: v_lshlrev_b32_e32 v1, 1, v113993; GFX6-GISEL-NEXT: v_or_b32_e32 v0, v0, v113994; GFX6-GISEL-NEXT: v_lshlrev_b32_e32 v1, 2, v413995; GFX6-GISEL-NEXT: v_or_b32_e32 v0, v0, v113996; GFX6-GISEL-NEXT: v_and_b32_e32 v0, 7, v013997; GFX6-GISEL-NEXT: buffer_store_byte v0, v[2:3], s[4:7], 0 addr6413998; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)13999; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]14000;14001; GFX7-SDAG-LABEL: freeze_v3i1_vcc:14002; GFX7-SDAG: ; %bb.0:14003; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14004; GFX7-SDAG-NEXT: s_mov_b32 s6, 014005; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf00014006; GFX7-SDAG-NEXT: s_mov_b32 s4, s614007; GFX7-SDAG-NEXT: s_mov_b32 s5, s614008; GFX7-SDAG-NEXT: buffer_load_dwordx3 v[4:6], v[0:1], s[4:7], 0 addr6414009; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)14010; GFX7-SDAG-NEXT: v_cmp_eq_u32_e32 vcc, 0, v514011; GFX7-SDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc14012; GFX7-SDAG-NEXT: v_cmp_eq_u32_e32 vcc, 0, v414013; GFX7-SDAG-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc14014; GFX7-SDAG-NEXT: v_cmp_eq_u32_e32 vcc, 0, v614015; GFX7-SDAG-NEXT: v_cndmask_b32_e64 v4, 0, 1, vcc14016; GFX7-SDAG-NEXT: v_lshlrev_b32_e32 v0, 1, v014017; GFX7-SDAG-NEXT: v_or_b32_e32 v0, v1, v014018; GFX7-SDAG-NEXT: v_lshlrev_b32_e32 v1, 2, v414019; GFX7-SDAG-NEXT: v_or_b32_e32 v0, v0, v114020; GFX7-SDAG-NEXT: v_and_b32_e32 v0, 7, v014021; GFX7-SDAG-NEXT: buffer_store_byte v0, v[2:3], s[4:7], 0 addr6414022; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)14023; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]14024;14025; GFX7-GISEL-LABEL: freeze_v3i1_vcc:14026; GFX7-GISEL: ; %bb.0:14027; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14028; GFX7-GISEL-NEXT: s_mov_b32 s6, 014029; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf00014030; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 014031; GFX7-GISEL-NEXT: buffer_load_dwordx3 v[4:6], v[0:1], s[4:7], 0 addr6414032; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)14033; GFX7-GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v414034; GFX7-GISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc14035; GFX7-GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v514036; GFX7-GISEL-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc14037; GFX7-GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v614038; GFX7-GISEL-NEXT: v_cndmask_b32_e64 v4, 0, 1, vcc14039; GFX7-GISEL-NEXT: v_and_b32_e32 v1, 1, v114040; GFX7-GISEL-NEXT: v_and_b32_e32 v0, 1, v014041; GFX7-GISEL-NEXT: v_and_b32_e32 v4, 1, v414042; GFX7-GISEL-NEXT: v_lshlrev_b32_e32 v1, 1, v114043; GFX7-GISEL-NEXT: v_or_b32_e32 v0, v0, v114044; GFX7-GISEL-NEXT: v_lshlrev_b32_e32 v1, 2, v414045; GFX7-GISEL-NEXT: v_or_b32_e32 v0, v0, v114046; GFX7-GISEL-NEXT: v_and_b32_e32 v0, 7, v014047; GFX7-GISEL-NEXT: buffer_store_byte v0, v[2:3], s[4:7], 0 addr6414048; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)14049; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]14050;14051; GFX8-GISEL-LABEL: freeze_v3i1_vcc:14052; GFX8-GISEL: ; %bb.0:14053; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14054; GFX8-GISEL-NEXT: flat_load_dwordx3 v[4:6], v[0:1]14055; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)14056; GFX8-GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v414057; GFX8-GISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc14058; GFX8-GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v514059; GFX8-GISEL-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc14060; GFX8-GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v614061; GFX8-GISEL-NEXT: v_cndmask_b32_e64 v4, 0, 1, vcc14062; GFX8-GISEL-NEXT: v_and_b32_e32 v1, 1, v114063; GFX8-GISEL-NEXT: v_and_b32_e32 v0, 1, v014064; GFX8-GISEL-NEXT: v_and_b32_e32 v4, 1, v414065; GFX8-GISEL-NEXT: v_lshlrev_b16_e32 v1, 1, v114066; GFX8-GISEL-NEXT: v_or_b32_e32 v0, v0, v114067; GFX8-GISEL-NEXT: v_lshlrev_b16_e32 v1, 2, v414068; GFX8-GISEL-NEXT: v_or_b32_e32 v0, v0, v114069; GFX8-GISEL-NEXT: v_and_b32_e32 v0, 7, v014070; GFX8-GISEL-NEXT: flat_store_byte v[2:3], v014071; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)14072; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]14073;14074; GFX9-GISEL-LABEL: freeze_v3i1_vcc:14075; GFX9-GISEL: ; %bb.0:14076; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14077; GFX9-GISEL-NEXT: global_load_dwordx3 v[4:6], v[0:1], off14078; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)14079; GFX9-GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v414080; GFX9-GISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc14081; GFX9-GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v514082; GFX9-GISEL-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc14083; GFX9-GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v614084; GFX9-GISEL-NEXT: v_cndmask_b32_e64 v4, 0, 1, vcc14085; GFX9-GISEL-NEXT: v_and_b32_e32 v1, 1, v114086; GFX9-GISEL-NEXT: v_and_b32_e32 v0, 1, v014087; GFX9-GISEL-NEXT: v_and_b32_e32 v4, 1, v414088; GFX9-GISEL-NEXT: v_lshlrev_b16_e32 v1, 1, v114089; GFX9-GISEL-NEXT: v_or_b32_e32 v0, v0, v114090; GFX9-GISEL-NEXT: v_lshlrev_b16_e32 v1, 2, v414091; GFX9-GISEL-NEXT: v_or_b32_e32 v0, v0, v114092; GFX9-GISEL-NEXT: v_and_b32_e32 v0, 7, v014093; GFX9-GISEL-NEXT: global_store_byte v[2:3], v0, off14094; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)14095; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]14096;14097; GFX10-SDAG-LABEL: freeze_v3i1_vcc:14098; GFX10-SDAG: ; %bb.0:14099; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14100; GFX10-SDAG-NEXT: global_load_dwordx3 v[4:6], v[0:1], off14101; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)14102; GFX10-SDAG-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v514103; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo14104; GFX10-SDAG-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v414105; GFX10-SDAG-NEXT: v_lshlrev_b16 v0, 1, v014106; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc_lo14107; GFX10-SDAG-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v614108; GFX10-SDAG-NEXT: v_or_b32_e32 v0, v1, v014109; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v4, 0, 1, vcc_lo14110; GFX10-SDAG-NEXT: v_lshlrev_b16 v1, 2, v414111; GFX10-SDAG-NEXT: v_or_b32_e32 v0, v0, v114112; GFX10-SDAG-NEXT: v_and_b32_e32 v0, 7, v014113; GFX10-SDAG-NEXT: global_store_byte v[2:3], v0, off14114; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]14115;14116; GFX10-GISEL-LABEL: freeze_v3i1_vcc:14117; GFX10-GISEL: ; %bb.0:14118; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14119; GFX10-GISEL-NEXT: global_load_dwordx3 v[4:6], v[0:1], off14120; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)14121; GFX10-GISEL-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v514122; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo14123; GFX10-GISEL-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v414124; GFX10-GISEL-NEXT: v_and_b32_e32 v0, 1, v014125; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc_lo14126; GFX10-GISEL-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v614127; GFX10-GISEL-NEXT: v_lshlrev_b16 v0, 1, v014128; GFX10-GISEL-NEXT: v_and_b32_e32 v1, 1, v114129; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v4, 0, 1, vcc_lo14130; GFX10-GISEL-NEXT: v_or_b32_e32 v0, v1, v014131; GFX10-GISEL-NEXT: v_and_b32_e32 v4, 1, v414132; GFX10-GISEL-NEXT: v_lshlrev_b16 v1, 2, v414133; GFX10-GISEL-NEXT: v_or_b32_e32 v0, v0, v114134; GFX10-GISEL-NEXT: v_and_b32_e32 v0, 7, v014135; GFX10-GISEL-NEXT: global_store_byte v[2:3], v0, off14136; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]14137;14138; GFX11-SDAG-TRUE16-LABEL: freeze_v3i1_vcc:14139; GFX11-SDAG-TRUE16: ; %bb.0:14140; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14141; GFX11-SDAG-TRUE16-NEXT: global_load_b96 v[4:6], v[0:1], off14142; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0)14143; GFX11-SDAG-TRUE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v514144; GFX11-SDAG-TRUE16-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo14145; GFX11-SDAG-TRUE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v414146; GFX11-SDAG-TRUE16-NEXT: v_lshlrev_b16 v0.l, 1, v0.l14147; GFX11-SDAG-TRUE16-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc_lo14148; GFX11-SDAG-TRUE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v614149; GFX11-SDAG-TRUE16-NEXT: v_or_b16 v0.l, v1.l, v0.l14150; GFX11-SDAG-TRUE16-NEXT: v_cndmask_b32_e64 v4, 0, 1, vcc_lo14151; GFX11-SDAG-TRUE16-NEXT: v_lshlrev_b16 v0.h, 2, v4.l14152; GFX11-SDAG-TRUE16-NEXT: v_or_b16 v0.l, v0.l, v0.h14153; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v0.l, v0.l, 714154; GFX11-SDAG-TRUE16-NEXT: global_store_b8 v[2:3], v0, off14155; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]14156;14157; GFX11-SDAG-FAKE16-LABEL: freeze_v3i1_vcc:14158; GFX11-SDAG-FAKE16: ; %bb.0:14159; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14160; GFX11-SDAG-FAKE16-NEXT: global_load_b96 v[4:6], v[0:1], off14161; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0)14162; GFX11-SDAG-FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v514163; GFX11-SDAG-FAKE16-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo14164; GFX11-SDAG-FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v414165; GFX11-SDAG-FAKE16-NEXT: v_lshlrev_b16 v0, 1, v014166; GFX11-SDAG-FAKE16-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc_lo14167; GFX11-SDAG-FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v614168; GFX11-SDAG-FAKE16-NEXT: v_or_b32_e32 v0, v1, v014169; GFX11-SDAG-FAKE16-NEXT: v_cndmask_b32_e64 v4, 0, 1, vcc_lo14170; GFX11-SDAG-FAKE16-NEXT: v_lshlrev_b16 v1, 2, v414171; GFX11-SDAG-FAKE16-NEXT: v_or_b32_e32 v0, v0, v114172; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v0, 7, v014173; GFX11-SDAG-FAKE16-NEXT: global_store_b8 v[2:3], v0, off14174; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]14175;14176; GFX11-GISEL-LABEL: freeze_v3i1_vcc:14177; GFX11-GISEL: ; %bb.0:14178; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14179; GFX11-GISEL-NEXT: global_load_b96 v[4:6], v[0:1], off14180; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)14181; GFX11-GISEL-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v514182; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo14183; GFX11-GISEL-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v414184; GFX11-GISEL-NEXT: v_and_b32_e32 v0, 1, v014185; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc_lo14186; GFX11-GISEL-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v614187; GFX11-GISEL-NEXT: v_lshlrev_b16 v0, 1, v014188; GFX11-GISEL-NEXT: v_and_b32_e32 v1, 1, v114189; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v4, 0, 1, vcc_lo14190; GFX11-GISEL-NEXT: v_or_b32_e32 v0, v1, v014191; GFX11-GISEL-NEXT: v_and_b32_e32 v4, 1, v414192; GFX11-GISEL-NEXT: v_lshlrev_b16 v1, 2, v414193; GFX11-GISEL-NEXT: v_or_b32_e32 v0, v0, v114194; GFX11-GISEL-NEXT: v_and_b32_e32 v0, 7, v014195; GFX11-GISEL-NEXT: global_store_b8 v[2:3], v0, off14196; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]14197 %a = load <3 x i32>, ptr addrspace(1) %ptra14198 %cmp = icmp eq <3 x i32> %a, zeroinitializer14199 %freeze = freeze <3 x i1> %cmp14200 store <3 x i1> %freeze, ptr addrspace(1) %ptrb14201 ret void14202}14203 14204define void @freeze_v4i1_vcc(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) {14205; GFX6-SDAG-LABEL: freeze_v4i1_vcc:14206; GFX6-SDAG: ; %bb.0:14207; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14208; GFX6-SDAG-NEXT: s_mov_b32 s6, 014209; GFX6-SDAG-NEXT: s_mov_b32 s7, 0xf00014210; GFX6-SDAG-NEXT: s_mov_b32 s4, s614211; GFX6-SDAG-NEXT: s_mov_b32 s5, s614212; GFX6-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr6414213; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0)14214; GFX6-SDAG-NEXT: v_cmp_eq_u32_e32 vcc, 0, v514215; GFX6-SDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc14216; GFX6-SDAG-NEXT: v_cmp_eq_u32_e32 vcc, 0, v414217; GFX6-SDAG-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc14218; GFX6-SDAG-NEXT: v_cmp_eq_u32_e32 vcc, 0, v614219; GFX6-SDAG-NEXT: v_cndmask_b32_e64 v4, 0, 1, vcc14220; GFX6-SDAG-NEXT: v_cmp_eq_u32_e32 vcc, 0, v714221; GFX6-SDAG-NEXT: v_lshlrev_b32_e32 v0, 1, v014222; GFX6-SDAG-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc14223; GFX6-SDAG-NEXT: v_lshlrev_b32_e32 v4, 2, v414224; GFX6-SDAG-NEXT: v_or_b32_e32 v0, v1, v014225; GFX6-SDAG-NEXT: v_or_b32_e32 v0, v0, v414226; GFX6-SDAG-NEXT: v_lshlrev_b32_e32 v1, 3, v514227; GFX6-SDAG-NEXT: v_or_b32_e32 v0, v0, v114228; GFX6-SDAG-NEXT: v_and_b32_e32 v0, 15, v014229; GFX6-SDAG-NEXT: buffer_store_byte v0, v[2:3], s[4:7], 0 addr6414230; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0)14231; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]14232;14233; GFX6-GISEL-LABEL: freeze_v4i1_vcc:14234; GFX6-GISEL: ; %bb.0:14235; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14236; GFX6-GISEL-NEXT: s_mov_b32 s6, 014237; GFX6-GISEL-NEXT: s_mov_b32 s7, 0xf00014238; GFX6-GISEL-NEXT: s_mov_b64 s[4:5], 014239; GFX6-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr6414240; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0)14241; GFX6-GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v414242; GFX6-GISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc14243; GFX6-GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v514244; GFX6-GISEL-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc14245; GFX6-GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v614246; GFX6-GISEL-NEXT: v_cndmask_b32_e64 v4, 0, 1, vcc14247; GFX6-GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v714248; GFX6-GISEL-NEXT: v_and_b32_e32 v1, 1, v114249; GFX6-GISEL-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc14250; GFX6-GISEL-NEXT: v_and_b32_e32 v0, 1, v014251; GFX6-GISEL-NEXT: v_and_b32_e32 v4, 1, v414252; GFX6-GISEL-NEXT: v_lshlrev_b32_e32 v1, 1, v114253; GFX6-GISEL-NEXT: v_and_b32_e32 v5, 1, v514254; GFX6-GISEL-NEXT: v_lshlrev_b32_e32 v4, 2, v414255; GFX6-GISEL-NEXT: v_or_b32_e32 v0, v0, v114256; GFX6-GISEL-NEXT: v_or_b32_e32 v0, v0, v414257; GFX6-GISEL-NEXT: v_lshlrev_b32_e32 v1, 3, v514258; GFX6-GISEL-NEXT: v_or_b32_e32 v0, v0, v114259; GFX6-GISEL-NEXT: v_and_b32_e32 v0, 15, v014260; GFX6-GISEL-NEXT: buffer_store_byte v0, v[2:3], s[4:7], 0 addr6414261; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0)14262; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]14263;14264; GFX7-SDAG-LABEL: freeze_v4i1_vcc:14265; GFX7-SDAG: ; %bb.0:14266; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14267; GFX7-SDAG-NEXT: s_mov_b32 s6, 014268; GFX7-SDAG-NEXT: s_mov_b32 s7, 0xf00014269; GFX7-SDAG-NEXT: s_mov_b32 s4, s614270; GFX7-SDAG-NEXT: s_mov_b32 s5, s614271; GFX7-SDAG-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr6414272; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)14273; GFX7-SDAG-NEXT: v_cmp_eq_u32_e32 vcc, 0, v514274; GFX7-SDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc14275; GFX7-SDAG-NEXT: v_cmp_eq_u32_e32 vcc, 0, v414276; GFX7-SDAG-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc14277; GFX7-SDAG-NEXT: v_cmp_eq_u32_e32 vcc, 0, v614278; GFX7-SDAG-NEXT: v_cndmask_b32_e64 v4, 0, 1, vcc14279; GFX7-SDAG-NEXT: v_cmp_eq_u32_e32 vcc, 0, v714280; GFX7-SDAG-NEXT: v_lshlrev_b32_e32 v0, 1, v014281; GFX7-SDAG-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc14282; GFX7-SDAG-NEXT: v_lshlrev_b32_e32 v4, 2, v414283; GFX7-SDAG-NEXT: v_or_b32_e32 v0, v1, v014284; GFX7-SDAG-NEXT: v_or_b32_e32 v0, v0, v414285; GFX7-SDAG-NEXT: v_lshlrev_b32_e32 v1, 3, v514286; GFX7-SDAG-NEXT: v_or_b32_e32 v0, v0, v114287; GFX7-SDAG-NEXT: v_and_b32_e32 v0, 15, v014288; GFX7-SDAG-NEXT: buffer_store_byte v0, v[2:3], s[4:7], 0 addr6414289; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0)14290; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]14291;14292; GFX7-GISEL-LABEL: freeze_v4i1_vcc:14293; GFX7-GISEL: ; %bb.0:14294; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14295; GFX7-GISEL-NEXT: s_mov_b32 s6, 014296; GFX7-GISEL-NEXT: s_mov_b32 s7, 0xf00014297; GFX7-GISEL-NEXT: s_mov_b64 s[4:5], 014298; GFX7-GISEL-NEXT: buffer_load_dwordx4 v[4:7], v[0:1], s[4:7], 0 addr6414299; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)14300; GFX7-GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v414301; GFX7-GISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc14302; GFX7-GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v514303; GFX7-GISEL-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc14304; GFX7-GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v614305; GFX7-GISEL-NEXT: v_cndmask_b32_e64 v4, 0, 1, vcc14306; GFX7-GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v714307; GFX7-GISEL-NEXT: v_and_b32_e32 v1, 1, v114308; GFX7-GISEL-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc14309; GFX7-GISEL-NEXT: v_and_b32_e32 v0, 1, v014310; GFX7-GISEL-NEXT: v_and_b32_e32 v4, 1, v414311; GFX7-GISEL-NEXT: v_lshlrev_b32_e32 v1, 1, v114312; GFX7-GISEL-NEXT: v_and_b32_e32 v5, 1, v514313; GFX7-GISEL-NEXT: v_lshlrev_b32_e32 v4, 2, v414314; GFX7-GISEL-NEXT: v_or_b32_e32 v0, v0, v114315; GFX7-GISEL-NEXT: v_or_b32_e32 v0, v0, v414316; GFX7-GISEL-NEXT: v_lshlrev_b32_e32 v1, 3, v514317; GFX7-GISEL-NEXT: v_or_b32_e32 v0, v0, v114318; GFX7-GISEL-NEXT: v_and_b32_e32 v0, 15, v014319; GFX7-GISEL-NEXT: buffer_store_byte v0, v[2:3], s[4:7], 0 addr6414320; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0)14321; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]14322;14323; GFX8-GISEL-LABEL: freeze_v4i1_vcc:14324; GFX8-GISEL: ; %bb.0:14325; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14326; GFX8-GISEL-NEXT: flat_load_dwordx4 v[4:7], v[0:1]14327; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)14328; GFX8-GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v414329; GFX8-GISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc14330; GFX8-GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v514331; GFX8-GISEL-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc14332; GFX8-GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v614333; GFX8-GISEL-NEXT: v_cndmask_b32_e64 v4, 0, 1, vcc14334; GFX8-GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v714335; GFX8-GISEL-NEXT: v_and_b32_e32 v1, 1, v114336; GFX8-GISEL-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc14337; GFX8-GISEL-NEXT: v_and_b32_e32 v0, 1, v014338; GFX8-GISEL-NEXT: v_and_b32_e32 v4, 1, v414339; GFX8-GISEL-NEXT: v_lshlrev_b16_e32 v1, 1, v114340; GFX8-GISEL-NEXT: v_and_b32_e32 v5, 1, v514341; GFX8-GISEL-NEXT: v_lshlrev_b16_e32 v4, 2, v414342; GFX8-GISEL-NEXT: v_or_b32_e32 v0, v0, v114343; GFX8-GISEL-NEXT: v_or_b32_e32 v0, v0, v414344; GFX8-GISEL-NEXT: v_lshlrev_b16_e32 v1, 3, v514345; GFX8-GISEL-NEXT: v_or_b32_e32 v0, v0, v114346; GFX8-GISEL-NEXT: v_and_b32_e32 v0, 15, v014347; GFX8-GISEL-NEXT: flat_store_byte v[2:3], v014348; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0)14349; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]14350;14351; GFX9-GISEL-LABEL: freeze_v4i1_vcc:14352; GFX9-GISEL: ; %bb.0:14353; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14354; GFX9-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off14355; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)14356; GFX9-GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v414357; GFX9-GISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc14358; GFX9-GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v514359; GFX9-GISEL-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc14360; GFX9-GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v614361; GFX9-GISEL-NEXT: v_cndmask_b32_e64 v4, 0, 1, vcc14362; GFX9-GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v714363; GFX9-GISEL-NEXT: v_and_b32_e32 v1, 1, v114364; GFX9-GISEL-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc14365; GFX9-GISEL-NEXT: v_and_b32_e32 v0, 1, v014366; GFX9-GISEL-NEXT: v_and_b32_e32 v4, 1, v414367; GFX9-GISEL-NEXT: v_lshlrev_b16_e32 v1, 1, v114368; GFX9-GISEL-NEXT: v_and_b32_e32 v5, 1, v514369; GFX9-GISEL-NEXT: v_lshlrev_b16_e32 v4, 2, v414370; GFX9-GISEL-NEXT: v_or_b32_e32 v0, v0, v114371; GFX9-GISEL-NEXT: v_or_b32_e32 v0, v0, v414372; GFX9-GISEL-NEXT: v_lshlrev_b16_e32 v1, 3, v514373; GFX9-GISEL-NEXT: v_or_b32_e32 v0, v0, v114374; GFX9-GISEL-NEXT: v_and_b32_e32 v0, 15, v014375; GFX9-GISEL-NEXT: global_store_byte v[2:3], v0, off14376; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0)14377; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]14378;14379; GFX10-SDAG-LABEL: freeze_v4i1_vcc:14380; GFX10-SDAG: ; %bb.0:14381; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14382; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off14383; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0)14384; GFX10-SDAG-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v514385; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo14386; GFX10-SDAG-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v414387; GFX10-SDAG-NEXT: v_lshlrev_b16 v0, 1, v014388; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc_lo14389; GFX10-SDAG-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v614390; GFX10-SDAG-NEXT: v_or_b32_e32 v0, v1, v014391; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v4, 0, 1, vcc_lo14392; GFX10-SDAG-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v714393; GFX10-SDAG-NEXT: v_lshlrev_b16 v4, 2, v414394; GFX10-SDAG-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc_lo14395; GFX10-SDAG-NEXT: v_or_b32_e32 v0, v0, v414396; GFX10-SDAG-NEXT: v_lshlrev_b16 v1, 3, v114397; GFX10-SDAG-NEXT: v_or_b32_e32 v0, v0, v114398; GFX10-SDAG-NEXT: v_and_b32_e32 v0, 15, v014399; GFX10-SDAG-NEXT: global_store_byte v[2:3], v0, off14400; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]14401;14402; GFX10-GISEL-LABEL: freeze_v4i1_vcc:14403; GFX10-GISEL: ; %bb.0:14404; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14405; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off14406; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0)14407; GFX10-GISEL-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v514408; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo14409; GFX10-GISEL-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v414410; GFX10-GISEL-NEXT: v_and_b32_e32 v0, 1, v014411; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc_lo14412; GFX10-GISEL-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v614413; GFX10-GISEL-NEXT: v_lshlrev_b16 v0, 1, v014414; GFX10-GISEL-NEXT: v_and_b32_e32 v1, 1, v114415; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v4, 0, 1, vcc_lo14416; GFX10-GISEL-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v714417; GFX10-GISEL-NEXT: v_or_b32_e32 v0, v1, v014418; GFX10-GISEL-NEXT: v_and_b32_e32 v4, 1, v414419; GFX10-GISEL-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc_lo14420; GFX10-GISEL-NEXT: v_lshlrev_b16 v4, 2, v414421; GFX10-GISEL-NEXT: v_and_b32_e32 v1, 1, v514422; GFX10-GISEL-NEXT: v_or_b32_e32 v0, v0, v414423; GFX10-GISEL-NEXT: v_lshlrev_b16 v1, 3, v114424; GFX10-GISEL-NEXT: v_or_b32_e32 v0, v0, v114425; GFX10-GISEL-NEXT: v_and_b32_e32 v0, 15, v014426; GFX10-GISEL-NEXT: global_store_byte v[2:3], v0, off14427; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]14428;14429; GFX11-SDAG-TRUE16-LABEL: freeze_v4i1_vcc:14430; GFX11-SDAG-TRUE16: ; %bb.0:14431; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14432; GFX11-SDAG-TRUE16-NEXT: global_load_b128 v[4:7], v[0:1], off14433; GFX11-SDAG-TRUE16-NEXT: s_waitcnt vmcnt(0)14434; GFX11-SDAG-TRUE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v514435; GFX11-SDAG-TRUE16-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo14436; GFX11-SDAG-TRUE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v414437; GFX11-SDAG-TRUE16-NEXT: v_lshlrev_b16 v0.l, 1, v0.l14438; GFX11-SDAG-TRUE16-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc_lo14439; GFX11-SDAG-TRUE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v614440; GFX11-SDAG-TRUE16-NEXT: v_or_b16 v0.l, v1.l, v0.l14441; GFX11-SDAG-TRUE16-NEXT: v_cndmask_b32_e64 v4, 0, 1, vcc_lo14442; GFX11-SDAG-TRUE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v714443; GFX11-SDAG-TRUE16-NEXT: v_lshlrev_b16 v0.h, 2, v4.l14444; GFX11-SDAG-TRUE16-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc_lo14445; GFX11-SDAG-TRUE16-NEXT: v_or_b16 v0.l, v0.l, v0.h14446; GFX11-SDAG-TRUE16-NEXT: v_mov_b16_e32 v1.l, v5.l14447; GFX11-SDAG-TRUE16-NEXT: v_lshlrev_b16 v0.h, 3, v1.l14448; GFX11-SDAG-TRUE16-NEXT: v_or_b16 v0.l, v0.l, v0.h14449; GFX11-SDAG-TRUE16-NEXT: v_and_b16 v0.l, v0.l, 1514450; GFX11-SDAG-TRUE16-NEXT: global_store_b8 v[2:3], v0, off14451; GFX11-SDAG-TRUE16-NEXT: s_setpc_b64 s[30:31]14452;14453; GFX11-SDAG-FAKE16-LABEL: freeze_v4i1_vcc:14454; GFX11-SDAG-FAKE16: ; %bb.0:14455; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14456; GFX11-SDAG-FAKE16-NEXT: global_load_b128 v[4:7], v[0:1], off14457; GFX11-SDAG-FAKE16-NEXT: s_waitcnt vmcnt(0)14458; GFX11-SDAG-FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v514459; GFX11-SDAG-FAKE16-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo14460; GFX11-SDAG-FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v414461; GFX11-SDAG-FAKE16-NEXT: v_lshlrev_b16 v0, 1, v014462; GFX11-SDAG-FAKE16-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc_lo14463; GFX11-SDAG-FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v614464; GFX11-SDAG-FAKE16-NEXT: v_or_b32_e32 v0, v1, v014465; GFX11-SDAG-FAKE16-NEXT: v_cndmask_b32_e64 v4, 0, 1, vcc_lo14466; GFX11-SDAG-FAKE16-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v714467; GFX11-SDAG-FAKE16-NEXT: v_lshlrev_b16 v4, 2, v414468; GFX11-SDAG-FAKE16-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc_lo14469; GFX11-SDAG-FAKE16-NEXT: v_or_b32_e32 v0, v0, v414470; GFX11-SDAG-FAKE16-NEXT: v_lshlrev_b16 v1, 3, v114471; GFX11-SDAG-FAKE16-NEXT: v_or_b32_e32 v0, v0, v114472; GFX11-SDAG-FAKE16-NEXT: v_and_b32_e32 v0, 15, v014473; GFX11-SDAG-FAKE16-NEXT: global_store_b8 v[2:3], v0, off14474; GFX11-SDAG-FAKE16-NEXT: s_setpc_b64 s[30:31]14475;14476; GFX11-GISEL-LABEL: freeze_v4i1_vcc:14477; GFX11-GISEL: ; %bb.0:14478; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14479; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off14480; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0)14481; GFX11-GISEL-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v514482; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo14483; GFX11-GISEL-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v414484; GFX11-GISEL-NEXT: v_and_b32_e32 v0, 1, v014485; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc_lo14486; GFX11-GISEL-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v614487; GFX11-GISEL-NEXT: v_lshlrev_b16 v0, 1, v014488; GFX11-GISEL-NEXT: v_and_b32_e32 v1, 1, v114489; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v4, 0, 1, vcc_lo14490; GFX11-GISEL-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v714491; GFX11-GISEL-NEXT: v_or_b32_e32 v0, v1, v014492; GFX11-GISEL-NEXT: v_and_b32_e32 v4, 1, v414493; GFX11-GISEL-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc_lo14494; GFX11-GISEL-NEXT: v_lshlrev_b16 v4, 2, v414495; GFX11-GISEL-NEXT: v_and_b32_e32 v1, 1, v514496; GFX11-GISEL-NEXT: v_or_b32_e32 v0, v0, v414497; GFX11-GISEL-NEXT: v_lshlrev_b16 v1, 3, v114498; GFX11-GISEL-NEXT: v_or_b32_e32 v0, v0, v114499; GFX11-GISEL-NEXT: v_and_b32_e32 v0, 15, v014500; GFX11-GISEL-NEXT: global_store_b8 v[2:3], v0, off14501; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]14502 %a = load <4 x i32>, ptr addrspace(1) %ptra14503 %cmp = icmp eq <4 x i32> %a, zeroinitializer14504 %freeze = freeze <4 x i1> %cmp14505 store <4 x i1> %freeze, ptr addrspace(1) %ptrb14506 ret void14507}14508 14509define double @freeze_fabs_double(float %a, double %b, double %c) {14510; GFX6-SDAG-LABEL: freeze_fabs_double:14511; GFX6-SDAG: ; %bb.0:14512; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14513; GFX6-SDAG-NEXT: v_mov_b32_e32 v5, v014514; GFX6-SDAG-NEXT: v_add_f64 v[0:1], |v[4:5]|, v[1:2]14515; GFX6-SDAG-NEXT: v_add_f64 v[2:3], |v[4:5]|, v[3:4]14516; GFX6-SDAG-NEXT: v_add_f64 v[0:1], v[0:1], v[2:3]14517; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]14518;14519; GFX6-GISEL-LABEL: freeze_fabs_double:14520; GFX6-GISEL: ; %bb.0:14521; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14522; GFX6-GISEL-NEXT: v_and_b32_e32 v5, 0x7fffffff, v014523; GFX6-GISEL-NEXT: v_add_f64 v[0:1], v[4:5], v[1:2]14524; GFX6-GISEL-NEXT: v_add_f64 v[2:3], v[4:5], v[3:4]14525; GFX6-GISEL-NEXT: v_add_f64 v[0:1], v[0:1], v[2:3]14526; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]14527;14528; GFX7-SDAG-LABEL: freeze_fabs_double:14529; GFX7-SDAG: ; %bb.0:14530; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14531; GFX7-SDAG-NEXT: v_mov_b32_e32 v5, v014532; GFX7-SDAG-NEXT: v_add_f64 v[0:1], |v[4:5]|, v[1:2]14533; GFX7-SDAG-NEXT: v_add_f64 v[2:3], |v[4:5]|, v[3:4]14534; GFX7-SDAG-NEXT: v_add_f64 v[0:1], v[0:1], v[2:3]14535; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]14536;14537; GFX7-GISEL-LABEL: freeze_fabs_double:14538; GFX7-GISEL: ; %bb.0:14539; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14540; GFX7-GISEL-NEXT: v_and_b32_e32 v5, 0x7fffffff, v014541; GFX7-GISEL-NEXT: v_add_f64 v[0:1], v[4:5], v[1:2]14542; GFX7-GISEL-NEXT: v_add_f64 v[2:3], v[4:5], v[3:4]14543; GFX7-GISEL-NEXT: v_add_f64 v[0:1], v[0:1], v[2:3]14544; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]14545;14546; GFX8-SDAG-LABEL: freeze_fabs_double:14547; GFX8-SDAG: ; %bb.0:14548; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14549; GFX8-SDAG-NEXT: v_mov_b32_e32 v5, v014550; GFX8-SDAG-NEXT: v_add_f64 v[0:1], |v[4:5]|, v[1:2]14551; GFX8-SDAG-NEXT: v_add_f64 v[2:3], |v[4:5]|, v[3:4]14552; GFX8-SDAG-NEXT: v_add_f64 v[0:1], v[0:1], v[2:3]14553; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]14554;14555; GFX8-GISEL-LABEL: freeze_fabs_double:14556; GFX8-GISEL: ; %bb.0:14557; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14558; GFX8-GISEL-NEXT: v_and_b32_e32 v5, 0x7fffffff, v014559; GFX8-GISEL-NEXT: v_add_f64 v[0:1], v[4:5], v[1:2]14560; GFX8-GISEL-NEXT: v_add_f64 v[2:3], v[4:5], v[3:4]14561; GFX8-GISEL-NEXT: v_add_f64 v[0:1], v[0:1], v[2:3]14562; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]14563;14564; GFX9-GISEL-LABEL: freeze_fabs_double:14565; GFX9-GISEL: ; %bb.0:14566; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14567; GFX9-GISEL-NEXT: v_and_b32_e32 v5, 0x7fffffff, v014568; GFX9-GISEL-NEXT: v_add_f64 v[0:1], v[4:5], v[1:2]14569; GFX9-GISEL-NEXT: v_add_f64 v[2:3], v[4:5], v[3:4]14570; GFX9-GISEL-NEXT: v_add_f64 v[0:1], v[0:1], v[2:3]14571; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]14572;14573; GFX10-SDAG-LABEL: freeze_fabs_double:14574; GFX10-SDAG: ; %bb.0:14575; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14576; GFX10-SDAG-NEXT: v_mov_b32_e32 v5, v014577; GFX10-SDAG-NEXT: v_add_f64 v[0:1], |v[4:5]|, v[1:2]14578; GFX10-SDAG-NEXT: v_add_f64 v[2:3], |v[4:5]|, v[3:4]14579; GFX10-SDAG-NEXT: v_add_f64 v[0:1], v[0:1], v[2:3]14580; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]14581;14582; GFX10-GISEL-LABEL: freeze_fabs_double:14583; GFX10-GISEL: ; %bb.0:14584; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14585; GFX10-GISEL-NEXT: v_and_b32_e32 v5, 0x7fffffff, v014586; GFX10-GISEL-NEXT: v_add_f64 v[0:1], v[4:5], v[1:2]14587; GFX10-GISEL-NEXT: v_add_f64 v[2:3], v[4:5], v[3:4]14588; GFX10-GISEL-NEXT: v_add_f64 v[0:1], v[0:1], v[2:3]14589; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]14590;14591; GFX11-SDAG-LABEL: freeze_fabs_double:14592; GFX11-SDAG: ; %bb.0:14593; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14594; GFX11-SDAG-NEXT: v_mov_b32_e32 v5, v014595; GFX11-SDAG-NEXT: v_add_f64 v[0:1], |v[4:5]|, v[1:2]14596; GFX11-SDAG-NEXT: v_add_f64 v[2:3], |v[4:5]|, v[3:4]14597; GFX11-SDAG-NEXT: v_add_f64 v[0:1], v[0:1], v[2:3]14598; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]14599;14600; GFX11-GISEL-LABEL: freeze_fabs_double:14601; GFX11-GISEL: ; %bb.0:14602; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14603; GFX11-GISEL-NEXT: v_and_b32_e32 v5, 0x7fffffff, v014604; GFX11-GISEL-NEXT: v_add_f64 v[0:1], v[4:5], v[1:2]14605; GFX11-GISEL-NEXT: v_add_f64 v[2:3], v[4:5], v[3:4]14606; GFX11-GISEL-NEXT: v_add_f64 v[0:1], v[0:1], v[2:3]14607; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]14608 %pv = insertelement <2 x float> poison, float %a, i32 114609 %d = bitcast <2 x float> %pv to double14610 %r = call double @llvm.fabs.f64(double %d)14611 %fr = freeze double %r14612 %add1 = fadd double %fr, %b14613 %add2 = fadd double %fr, %c14614 %add = fadd double %add1, %add214615 ret double %add14616}14617 14618define <4 x float> @freeze_fabs_v4float(<4 x float> %A, <4 x float> %B) {14619; GFX6-SDAG-LABEL: freeze_fabs_v4float:14620; GFX6-SDAG: ; %bb.0:14621; GFX6-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14622; GFX6-SDAG-NEXT: v_and_b32_e32 v0, 0x7fffffff, v014623; GFX6-SDAG-NEXT: v_and_b32_e32 v1, 0x7fffffff, v114624; GFX6-SDAG-NEXT: v_and_b32_e32 v2, 0x7fffffff, v214625; GFX6-SDAG-NEXT: v_and_b32_e32 v3, 0x7fffffff, v314626; GFX6-SDAG-NEXT: s_setpc_b64 s[30:31]14627;14628; GFX6-GISEL-LABEL: freeze_fabs_v4float:14629; GFX6-GISEL: ; %bb.0:14630; GFX6-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14631; GFX6-GISEL-NEXT: v_and_b32_e32 v0, 0x7fffffff, v014632; GFX6-GISEL-NEXT: v_and_b32_e32 v1, 0x7fffffff, v114633; GFX6-GISEL-NEXT: v_and_b32_e32 v2, 0x7fffffff, v214634; GFX6-GISEL-NEXT: v_and_b32_e32 v3, 0x7fffffff, v314635; GFX6-GISEL-NEXT: v_and_b32_e32 v0, 0x7fffffff, v014636; GFX6-GISEL-NEXT: v_and_b32_e32 v1, 0x7fffffff, v114637; GFX6-GISEL-NEXT: v_and_b32_e32 v2, 0x7fffffff, v214638; GFX6-GISEL-NEXT: v_and_b32_e32 v3, 0x7fffffff, v314639; GFX6-GISEL-NEXT: s_setpc_b64 s[30:31]14640;14641; GFX7-SDAG-LABEL: freeze_fabs_v4float:14642; GFX7-SDAG: ; %bb.0:14643; GFX7-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14644; GFX7-SDAG-NEXT: v_and_b32_e32 v0, 0x7fffffff, v014645; GFX7-SDAG-NEXT: v_and_b32_e32 v1, 0x7fffffff, v114646; GFX7-SDAG-NEXT: v_and_b32_e32 v2, 0x7fffffff, v214647; GFX7-SDAG-NEXT: v_and_b32_e32 v3, 0x7fffffff, v314648; GFX7-SDAG-NEXT: s_setpc_b64 s[30:31]14649;14650; GFX7-GISEL-LABEL: freeze_fabs_v4float:14651; GFX7-GISEL: ; %bb.0:14652; GFX7-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14653; GFX7-GISEL-NEXT: v_and_b32_e32 v0, 0x7fffffff, v014654; GFX7-GISEL-NEXT: v_and_b32_e32 v1, 0x7fffffff, v114655; GFX7-GISEL-NEXT: v_and_b32_e32 v2, 0x7fffffff, v214656; GFX7-GISEL-NEXT: v_and_b32_e32 v3, 0x7fffffff, v314657; GFX7-GISEL-NEXT: v_and_b32_e32 v0, 0x7fffffff, v014658; GFX7-GISEL-NEXT: v_and_b32_e32 v1, 0x7fffffff, v114659; GFX7-GISEL-NEXT: v_and_b32_e32 v2, 0x7fffffff, v214660; GFX7-GISEL-NEXT: v_and_b32_e32 v3, 0x7fffffff, v314661; GFX7-GISEL-NEXT: s_setpc_b64 s[30:31]14662;14663; GFX8-SDAG-LABEL: freeze_fabs_v4float:14664; GFX8-SDAG: ; %bb.0:14665; GFX8-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14666; GFX8-SDAG-NEXT: v_and_b32_e32 v0, 0x7fffffff, v014667; GFX8-SDAG-NEXT: v_and_b32_e32 v1, 0x7fffffff, v114668; GFX8-SDAG-NEXT: v_and_b32_e32 v2, 0x7fffffff, v214669; GFX8-SDAG-NEXT: v_and_b32_e32 v3, 0x7fffffff, v314670; GFX8-SDAG-NEXT: s_setpc_b64 s[30:31]14671;14672; GFX8-GISEL-LABEL: freeze_fabs_v4float:14673; GFX8-GISEL: ; %bb.0:14674; GFX8-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14675; GFX8-GISEL-NEXT: v_and_b32_e32 v0, 0x7fffffff, v014676; GFX8-GISEL-NEXT: v_and_b32_e32 v1, 0x7fffffff, v114677; GFX8-GISEL-NEXT: v_and_b32_e32 v2, 0x7fffffff, v214678; GFX8-GISEL-NEXT: v_and_b32_e32 v3, 0x7fffffff, v314679; GFX8-GISEL-NEXT: v_and_b32_e32 v0, 0x7fffffff, v014680; GFX8-GISEL-NEXT: v_and_b32_e32 v1, 0x7fffffff, v114681; GFX8-GISEL-NEXT: v_and_b32_e32 v2, 0x7fffffff, v214682; GFX8-GISEL-NEXT: v_and_b32_e32 v3, 0x7fffffff, v314683; GFX8-GISEL-NEXT: s_setpc_b64 s[30:31]14684;14685; GFX9-GISEL-LABEL: freeze_fabs_v4float:14686; GFX9-GISEL: ; %bb.0:14687; GFX9-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14688; GFX9-GISEL-NEXT: v_and_b32_e32 v0, 0x7fffffff, v014689; GFX9-GISEL-NEXT: v_and_b32_e32 v1, 0x7fffffff, v114690; GFX9-GISEL-NEXT: v_and_b32_e32 v2, 0x7fffffff, v214691; GFX9-GISEL-NEXT: v_and_b32_e32 v3, 0x7fffffff, v314692; GFX9-GISEL-NEXT: v_and_b32_e32 v0, 0x7fffffff, v014693; GFX9-GISEL-NEXT: v_and_b32_e32 v1, 0x7fffffff, v114694; GFX9-GISEL-NEXT: v_and_b32_e32 v2, 0x7fffffff, v214695; GFX9-GISEL-NEXT: v_and_b32_e32 v3, 0x7fffffff, v314696; GFX9-GISEL-NEXT: s_setpc_b64 s[30:31]14697;14698; GFX10-SDAG-LABEL: freeze_fabs_v4float:14699; GFX10-SDAG: ; %bb.0:14700; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14701; GFX10-SDAG-NEXT: v_and_b32_e32 v0, 0x7fffffff, v014702; GFX10-SDAG-NEXT: v_and_b32_e32 v1, 0x7fffffff, v114703; GFX10-SDAG-NEXT: v_and_b32_e32 v2, 0x7fffffff, v214704; GFX10-SDAG-NEXT: v_and_b32_e32 v3, 0x7fffffff, v314705; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31]14706;14707; GFX10-GISEL-LABEL: freeze_fabs_v4float:14708; GFX10-GISEL: ; %bb.0:14709; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14710; GFX10-GISEL-NEXT: v_and_b32_e32 v0, 0x7fffffff, v014711; GFX10-GISEL-NEXT: v_and_b32_e32 v1, 0x7fffffff, v114712; GFX10-GISEL-NEXT: v_and_b32_e32 v2, 0x7fffffff, v214713; GFX10-GISEL-NEXT: v_and_b32_e32 v3, 0x7fffffff, v314714; GFX10-GISEL-NEXT: v_and_b32_e32 v0, 0x7fffffff, v014715; GFX10-GISEL-NEXT: v_and_b32_e32 v1, 0x7fffffff, v114716; GFX10-GISEL-NEXT: v_and_b32_e32 v2, 0x7fffffff, v214717; GFX10-GISEL-NEXT: v_and_b32_e32 v3, 0x7fffffff, v314718; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31]14719;14720; GFX11-SDAG-LABEL: freeze_fabs_v4float:14721; GFX11-SDAG: ; %bb.0:14722; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14723; GFX11-SDAG-NEXT: v_and_b32_e32 v0, 0x7fffffff, v014724; GFX11-SDAG-NEXT: v_and_b32_e32 v1, 0x7fffffff, v114725; GFX11-SDAG-NEXT: v_and_b32_e32 v2, 0x7fffffff, v214726; GFX11-SDAG-NEXT: v_and_b32_e32 v3, 0x7fffffff, v314727; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31]14728;14729; GFX11-GISEL-LABEL: freeze_fabs_v4float:14730; GFX11-GISEL: ; %bb.0:14731; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14732; GFX11-GISEL-NEXT: v_and_b32_e32 v0, 0x7fffffff, v014733; GFX11-GISEL-NEXT: v_and_b32_e32 v1, 0x7fffffff, v114734; GFX11-GISEL-NEXT: v_and_b32_e32 v2, 0x7fffffff, v214735; GFX11-GISEL-NEXT: v_and_b32_e32 v3, 0x7fffffff, v314736; GFX11-GISEL-NEXT: v_and_b32_e32 v0, 0x7fffffff, v014737; GFX11-GISEL-NEXT: v_and_b32_e32 v1, 0x7fffffff, v114738; GFX11-GISEL-NEXT: v_and_b32_e32 v2, 0x7fffffff, v214739; GFX11-GISEL-NEXT: v_and_b32_e32 v3, 0x7fffffff, v314740; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31]14741 %A0 = call <4 x float> @llvm.fabs.v4f32(<4 x float> %A)14742 %F1 = freeze <4 x float> %A014743 %A1 = call <4 x float> @llvm.fabs.v4f32(<4 x float> %F1)14744 ret <4 x float> %A114745}14746