1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc -global-isel=0 -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx1010 < %s | FileCheck -check-prefixes=GFX10,GFX10-SDAG %s 3; RUN: llc -global-isel=1 -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx1010 < %s | FileCheck -check-prefixes=GFX10,GFX10-GISEL %s 4; RUN: llc -global-isel=0 -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx1100 -amdgpu-enable-delay-alu=0 < %s | FileCheck -check-prefixes=GFX11,GFX11-SDAG %s 5; RUN: llc -global-isel=1 -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx1100 -amdgpu-enable-delay-alu=0 < %s | FileCheck -check-prefixes=GFX11,GFX11-GISEL %s 6 7define void @freeze_v2i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) { 8; GFX10-LABEL: freeze_v2i32: 9; GFX10: ; %bb.0: 10; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11; GFX10-NEXT: global_load_dwordx2 v[0:1], v[0:1], off 12; GFX10-NEXT: s_waitcnt vmcnt(0) 13; GFX10-NEXT: global_store_dwordx2 v[2:3], v[0:1], off 14; GFX10-NEXT: s_setpc_b64 s[30:31] 15; 16; GFX11-LABEL: freeze_v2i32: 17; GFX11: ; %bb.0: 18; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19; GFX11-NEXT: global_load_b64 v[0:1], v[0:1], off 20; GFX11-NEXT: s_waitcnt vmcnt(0) 21; GFX11-NEXT: global_store_b64 v[2:3], v[0:1], off 22; GFX11-NEXT: s_setpc_b64 s[30:31] 23 %a = load <2 x i32>, ptr addrspace(1) %ptra, align 4 24 %freeze = freeze <2 x i32> %a 25 store <2 x i32> %freeze, ptr addrspace(1) %ptrb, align 4 26 ret void 27} 28 29define void @freeze_v3i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) { 30; GFX10-LABEL: freeze_v3i32: 31; GFX10: ; %bb.0: 32; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 33; GFX10-NEXT: global_load_dwordx3 v[4:6], v[0:1], off 34; GFX10-NEXT: s_waitcnt vmcnt(0) 35; GFX10-NEXT: global_store_dwordx3 v[2:3], v[4:6], off 36; GFX10-NEXT: s_setpc_b64 s[30:31] 37; 38; GFX11-LABEL: freeze_v3i32: 39; GFX11: ; %bb.0: 40; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 41; GFX11-NEXT: global_load_b96 v[4:6], v[0:1], off 42; GFX11-NEXT: s_waitcnt vmcnt(0) 43; GFX11-NEXT: global_store_b96 v[2:3], v[4:6], off 44; GFX11-NEXT: s_setpc_b64 s[30:31] 45 %a = load <3 x i32>, ptr addrspace(1) %ptra, align 4 46 %freeze = freeze <3 x i32> %a 47 store <3 x i32> %freeze, ptr addrspace(1) %ptrb, align 4 48 ret void 49} 50 51define void @freeze_v4i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) { 52; GFX10-LABEL: freeze_v4i32: 53; GFX10: ; %bb.0: 54; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 55; GFX10-NEXT: global_load_dwordx4 v[4:7], v[0:1], off 56; GFX10-NEXT: s_waitcnt vmcnt(0) 57; GFX10-NEXT: global_store_dwordx4 v[2:3], v[4:7], off 58; GFX10-NEXT: s_setpc_b64 s[30:31] 59; 60; GFX11-LABEL: freeze_v4i32: 61; GFX11: ; %bb.0: 62; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 63; GFX11-NEXT: global_load_b128 v[4:7], v[0:1], off 64; GFX11-NEXT: s_waitcnt vmcnt(0) 65; GFX11-NEXT: global_store_b128 v[2:3], v[4:7], off 66; GFX11-NEXT: s_setpc_b64 s[30:31] 67 %a = load <4 x i32>, ptr addrspace(1) %ptra, align 4 68 %freeze = freeze <4 x i32> %a 69 store <4 x i32> %freeze, ptr addrspace(1) %ptrb, align 4 70 ret void 71} 72 73define void @freeze_v5i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) { 74; GFX10-SDAG-LABEL: freeze_v5i32: 75; GFX10-SDAG: ; %bb.0: 76; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 77; GFX10-SDAG-NEXT: s_clause 0x1 78; GFX10-SDAG-NEXT: global_load_dword v8, v[0:1], off offset:16 79; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off 80; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1) 81; GFX10-SDAG-NEXT: global_store_dword v[2:3], v8, off offset:16 82; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) 83; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off 84; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31] 85; 86; GFX10-GISEL-LABEL: freeze_v5i32: 87; GFX10-GISEL: ; %bb.0: 88; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 89; GFX10-GISEL-NEXT: s_clause 0x1 90; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off 91; GFX10-GISEL-NEXT: global_load_dword v8, v[0:1], off offset:16 92; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1) 93; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off 94; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) 95; GFX10-GISEL-NEXT: global_store_dword v[2:3], v8, off offset:16 96; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31] 97; 98; GFX11-SDAG-LABEL: freeze_v5i32: 99; GFX11-SDAG: ; %bb.0: 100; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 101; GFX11-SDAG-NEXT: s_clause 0x1 102; GFX11-SDAG-NEXT: global_load_b32 v8, v[0:1], off offset:16 103; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off 104; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1) 105; GFX11-SDAG-NEXT: global_store_b32 v[2:3], v8, off offset:16 106; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) 107; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off 108; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31] 109; 110; GFX11-GISEL-LABEL: freeze_v5i32: 111; GFX11-GISEL: ; %bb.0: 112; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 113; GFX11-GISEL-NEXT: s_clause 0x1 114; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off 115; GFX11-GISEL-NEXT: global_load_b32 v0, v[0:1], off offset:16 116; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1) 117; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off 118; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) 119; GFX11-GISEL-NEXT: global_store_b32 v[2:3], v0, off offset:16 120; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31] 121 %a = load <5 x i32>, ptr addrspace(1) %ptra, align 4 122 %freeze = freeze <5 x i32> %a 123 store <5 x i32> %freeze, ptr addrspace(1) %ptrb, align 4 124 ret void 125} 126 127define void @freeze_v6i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) { 128; GFX10-SDAG-LABEL: freeze_v6i32: 129; GFX10-SDAG: ; %bb.0: 130; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 131; GFX10-SDAG-NEXT: s_clause 0x1 132; GFX10-SDAG-NEXT: global_load_dwordx2 v[8:9], v[0:1], off offset:16 133; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off 134; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1) 135; GFX10-SDAG-NEXT: global_store_dwordx2 v[2:3], v[8:9], off offset:16 136; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) 137; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off 138; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31] 139; 140; GFX10-GISEL-LABEL: freeze_v6i32: 141; GFX10-GISEL: ; %bb.0: 142; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 143; GFX10-GISEL-NEXT: s_clause 0x1 144; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off 145; GFX10-GISEL-NEXT: global_load_dwordx2 v[8:9], v[0:1], off offset:16 146; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1) 147; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off 148; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) 149; GFX10-GISEL-NEXT: global_store_dwordx2 v[2:3], v[8:9], off offset:16 150; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31] 151; 152; GFX11-SDAG-LABEL: freeze_v6i32: 153; GFX11-SDAG: ; %bb.0: 154; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 155; GFX11-SDAG-NEXT: s_clause 0x1 156; GFX11-SDAG-NEXT: global_load_b64 v[8:9], v[0:1], off offset:16 157; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off 158; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1) 159; GFX11-SDAG-NEXT: global_store_b64 v[2:3], v[8:9], off offset:16 160; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) 161; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off 162; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31] 163; 164; GFX11-GISEL-LABEL: freeze_v6i32: 165; GFX11-GISEL: ; %bb.0: 166; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 167; GFX11-GISEL-NEXT: s_clause 0x1 168; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off 169; GFX11-GISEL-NEXT: global_load_b64 v[0:1], v[0:1], off offset:16 170; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1) 171; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off 172; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) 173; GFX11-GISEL-NEXT: global_store_b64 v[2:3], v[0:1], off offset:16 174; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31] 175 %a = load <6 x i32>, ptr addrspace(1) %ptra, align 4 176 %freeze = freeze <6 x i32> %a 177 store <6 x i32> %freeze, ptr addrspace(1) %ptrb, align 4 178 ret void 179} 180 181define void @freeze_v7i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) { 182; GFX10-SDAG-LABEL: freeze_v7i32: 183; GFX10-SDAG: ; %bb.0: 184; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 185; GFX10-SDAG-NEXT: s_clause 0x1 186; GFX10-SDAG-NEXT: global_load_dwordx3 v[8:10], v[0:1], off offset:16 187; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off 188; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1) 189; GFX10-SDAG-NEXT: global_store_dwordx3 v[2:3], v[8:10], off offset:16 190; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) 191; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off 192; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31] 193; 194; GFX10-GISEL-LABEL: freeze_v7i32: 195; GFX10-GISEL: ; %bb.0: 196; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 197; GFX10-GISEL-NEXT: s_clause 0x1 198; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off 199; GFX10-GISEL-NEXT: global_load_dwordx3 v[8:10], v[0:1], off offset:16 200; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1) 201; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off 202; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) 203; GFX10-GISEL-NEXT: global_store_dwordx3 v[2:3], v[8:10], off offset:16 204; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31] 205; 206; GFX11-SDAG-LABEL: freeze_v7i32: 207; GFX11-SDAG: ; %bb.0: 208; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 209; GFX11-SDAG-NEXT: s_clause 0x1 210; GFX11-SDAG-NEXT: global_load_b96 v[8:10], v[0:1], off offset:16 211; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off 212; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1) 213; GFX11-SDAG-NEXT: global_store_b96 v[2:3], v[8:10], off offset:16 214; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) 215; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off 216; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31] 217; 218; GFX11-GISEL-LABEL: freeze_v7i32: 219; GFX11-GISEL: ; %bb.0: 220; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 221; GFX11-GISEL-NEXT: s_clause 0x1 222; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off 223; GFX11-GISEL-NEXT: global_load_b96 v[8:10], v[0:1], off offset:16 224; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1) 225; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off 226; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) 227; GFX11-GISEL-NEXT: global_store_b96 v[2:3], v[8:10], off offset:16 228; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31] 229 %a = load <7 x i32>, ptr addrspace(1) %ptra, align 4 230 %freeze = freeze <7 x i32> %a 231 store <7 x i32> %freeze, ptr addrspace(1) %ptrb, align 4 232 ret void 233} 234 235define void @freeze_v8i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) { 236; GFX10-SDAG-LABEL: freeze_v8i32: 237; GFX10-SDAG: ; %bb.0: 238; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 239; GFX10-SDAG-NEXT: s_clause 0x1 240; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off offset:16 241; GFX10-SDAG-NEXT: global_load_dwordx4 v[8:11], v[0:1], off 242; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1) 243; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off offset:16 244; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) 245; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[8:11], off 246; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31] 247; 248; GFX10-GISEL-LABEL: freeze_v8i32: 249; GFX10-GISEL: ; %bb.0: 250; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 251; GFX10-GISEL-NEXT: s_clause 0x1 252; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off 253; GFX10-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:16 254; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1) 255; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off 256; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) 257; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:16 258; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31] 259; 260; GFX11-SDAG-LABEL: freeze_v8i32: 261; GFX11-SDAG: ; %bb.0: 262; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 263; GFX11-SDAG-NEXT: s_clause 0x1 264; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off offset:16 265; GFX11-SDAG-NEXT: global_load_b128 v[8:11], v[0:1], off 266; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1) 267; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off offset:16 268; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) 269; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[8:11], off 270; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31] 271; 272; GFX11-GISEL-LABEL: freeze_v8i32: 273; GFX11-GISEL: ; %bb.0: 274; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 275; GFX11-GISEL-NEXT: s_clause 0x1 276; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off 277; GFX11-GISEL-NEXT: global_load_b128 v[8:11], v[0:1], off offset:16 278; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1) 279; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off 280; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) 281; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[8:11], off offset:16 282; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31] 283 %a = load <8 x i32>, ptr addrspace(1) %ptra, align 4 284 %freeze = freeze <8 x i32> %a 285 store <8 x i32> %freeze, ptr addrspace(1) %ptrb, align 4 286 ret void 287} 288 289define void @freeze_v9i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) { 290; GFX10-SDAG-LABEL: freeze_v9i32: 291; GFX10-SDAG: ; %bb.0: 292; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 293; GFX10-SDAG-NEXT: s_clause 0x2 294; GFX10-SDAG-NEXT: global_load_dword v12, v[0:1], off offset:32 295; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off 296; GFX10-SDAG-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:16 297; GFX10-SDAG-NEXT: s_waitcnt vmcnt(2) 298; GFX10-SDAG-NEXT: global_store_dword v[2:3], v12, off offset:32 299; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1) 300; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off 301; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) 302; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:16 303; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31] 304; 305; GFX10-GISEL-LABEL: freeze_v9i32: 306; GFX10-GISEL: ; %bb.0: 307; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 308; GFX10-GISEL-NEXT: s_clause 0x2 309; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off 310; GFX10-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:16 311; GFX10-GISEL-NEXT: global_load_dword v12, v[0:1], off offset:32 312; GFX10-GISEL-NEXT: s_waitcnt vmcnt(2) 313; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off 314; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1) 315; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:16 316; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) 317; GFX10-GISEL-NEXT: global_store_dword v[2:3], v12, off offset:32 318; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31] 319; 320; GFX11-SDAG-LABEL: freeze_v9i32: 321; GFX11-SDAG: ; %bb.0: 322; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 323; GFX11-SDAG-NEXT: s_clause 0x2 324; GFX11-SDAG-NEXT: global_load_b32 v12, v[0:1], off offset:32 325; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off 326; GFX11-SDAG-NEXT: global_load_b128 v[8:11], v[0:1], off offset:16 327; GFX11-SDAG-NEXT: s_waitcnt vmcnt(2) 328; GFX11-SDAG-NEXT: global_store_b32 v[2:3], v12, off offset:32 329; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1) 330; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off 331; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) 332; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[8:11], off offset:16 333; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31] 334; 335; GFX11-GISEL-LABEL: freeze_v9i32: 336; GFX11-GISEL: ; %bb.0: 337; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 338; GFX11-GISEL-NEXT: s_clause 0x2 339; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off 340; GFX11-GISEL-NEXT: global_load_b128 v[8:11], v[0:1], off offset:16 341; GFX11-GISEL-NEXT: global_load_b32 v0, v[0:1], off offset:32 342; GFX11-GISEL-NEXT: s_waitcnt vmcnt(2) 343; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off 344; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1) 345; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[8:11], off offset:16 346; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) 347; GFX11-GISEL-NEXT: global_store_b32 v[2:3], v0, off offset:32 348; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31] 349 %a = load <9 x i32>, ptr addrspace(1) %ptra, align 4 350 %freeze = freeze <9 x i32> %a 351 store <9 x i32> %freeze, ptr addrspace(1) %ptrb, align 4 352 ret void 353} 354 355define void @freeze_v10i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) { 356; GFX10-LABEL: freeze_v10i32: 357; GFX10: ; %bb.0: 358; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 359; GFX10-NEXT: s_clause 0x2 360; GFX10-NEXT: global_load_dwordx4 v[4:7], v[0:1], off 361; GFX10-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:16 362; GFX10-NEXT: global_load_dwordx2 v[12:13], v[0:1], off offset:32 363; GFX10-NEXT: s_waitcnt vmcnt(2) 364; GFX10-NEXT: global_store_dwordx4 v[2:3], v[4:7], off 365; GFX10-NEXT: s_waitcnt vmcnt(1) 366; GFX10-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:16 367; GFX10-NEXT: s_waitcnt vmcnt(0) 368; GFX10-NEXT: global_store_dwordx2 v[2:3], v[12:13], off offset:32 369; GFX10-NEXT: s_setpc_b64 s[30:31] 370; 371; GFX11-LABEL: freeze_v10i32: 372; GFX11: ; %bb.0: 373; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 374; GFX11-NEXT: s_clause 0x2 375; GFX11-NEXT: global_load_b128 v[4:7], v[0:1], off 376; GFX11-NEXT: global_load_b128 v[8:11], v[0:1], off offset:16 377; GFX11-NEXT: global_load_b64 v[0:1], v[0:1], off offset:32 378; GFX11-NEXT: s_waitcnt vmcnt(2) 379; GFX11-NEXT: global_store_b128 v[2:3], v[4:7], off 380; GFX11-NEXT: s_waitcnt vmcnt(1) 381; GFX11-NEXT: global_store_b128 v[2:3], v[8:11], off offset:16 382; GFX11-NEXT: s_waitcnt vmcnt(0) 383; GFX11-NEXT: global_store_b64 v[2:3], v[0:1], off offset:32 384; GFX11-NEXT: s_setpc_b64 s[30:31] 385 %a = load <10 x i32>, ptr addrspace(1) %ptra, align 4 386 %freeze = freeze <10 x i32> %a 387 store <10 x i32> %freeze, ptr addrspace(1) %ptrb, align 4 388 ret void 389} 390 391define void @freeze_v11i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) { 392; GFX10-LABEL: freeze_v11i32: 393; GFX10: ; %bb.0: 394; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 395; GFX10-NEXT: s_clause 0x2 396; GFX10-NEXT: global_load_dwordx4 v[4:7], v[0:1], off 397; GFX10-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:16 398; GFX10-NEXT: global_load_dwordx3 v[12:14], v[0:1], off offset:32 399; GFX10-NEXT: s_waitcnt vmcnt(2) 400; GFX10-NEXT: global_store_dwordx4 v[2:3], v[4:7], off 401; GFX10-NEXT: s_waitcnt vmcnt(1) 402; GFX10-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:16 403; GFX10-NEXT: s_waitcnt vmcnt(0) 404; GFX10-NEXT: global_store_dwordx3 v[2:3], v[12:14], off offset:32 405; GFX10-NEXT: s_setpc_b64 s[30:31] 406; 407; GFX11-LABEL: freeze_v11i32: 408; GFX11: ; %bb.0: 409; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 410; GFX11-NEXT: s_clause 0x2 411; GFX11-NEXT: global_load_b128 v[4:7], v[0:1], off 412; GFX11-NEXT: global_load_b128 v[8:11], v[0:1], off offset:16 413; GFX11-NEXT: global_load_b96 v[12:14], v[0:1], off offset:32 414; GFX11-NEXT: s_waitcnt vmcnt(2) 415; GFX11-NEXT: global_store_b128 v[2:3], v[4:7], off 416; GFX11-NEXT: s_waitcnt vmcnt(1) 417; GFX11-NEXT: global_store_b128 v[2:3], v[8:11], off offset:16 418; GFX11-NEXT: s_waitcnt vmcnt(0) 419; GFX11-NEXT: global_store_b96 v[2:3], v[12:14], off offset:32 420; GFX11-NEXT: s_setpc_b64 s[30:31] 421 %a = load <11 x i32>, ptr addrspace(1) %ptra, align 4 422 %freeze = freeze <11 x i32> %a 423 store <11 x i32> %freeze, ptr addrspace(1) %ptrb, align 4 424 ret void 425} 426 427define void @freeze_v12i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) { 428; GFX10-LABEL: freeze_v12i32: 429; GFX10: ; %bb.0: 430; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 431; GFX10-NEXT: s_clause 0x2 432; GFX10-NEXT: global_load_dwordx4 v[4:7], v[0:1], off 433; GFX10-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:16 434; GFX10-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:32 435; GFX10-NEXT: s_waitcnt vmcnt(2) 436; GFX10-NEXT: global_store_dwordx4 v[2:3], v[4:7], off 437; GFX10-NEXT: s_waitcnt vmcnt(1) 438; GFX10-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:16 439; GFX10-NEXT: s_waitcnt vmcnt(0) 440; GFX10-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:32 441; GFX10-NEXT: s_setpc_b64 s[30:31] 442; 443; GFX11-LABEL: freeze_v12i32: 444; GFX11: ; %bb.0: 445; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 446; GFX11-NEXT: s_clause 0x2 447; GFX11-NEXT: global_load_b128 v[4:7], v[0:1], off 448; GFX11-NEXT: global_load_b128 v[8:11], v[0:1], off offset:16 449; GFX11-NEXT: global_load_b128 v[12:15], v[0:1], off offset:32 450; GFX11-NEXT: s_waitcnt vmcnt(2) 451; GFX11-NEXT: global_store_b128 v[2:3], v[4:7], off 452; GFX11-NEXT: s_waitcnt vmcnt(1) 453; GFX11-NEXT: global_store_b128 v[2:3], v[8:11], off offset:16 454; GFX11-NEXT: s_waitcnt vmcnt(0) 455; GFX11-NEXT: global_store_b128 v[2:3], v[12:15], off offset:32 456; GFX11-NEXT: s_setpc_b64 s[30:31] 457 %a = load <12 x i32>, ptr addrspace(1) %ptra, align 4 458 %freeze = freeze <12 x i32> %a 459 store <12 x i32> %freeze, ptr addrspace(1) %ptrb, align 4 460 ret void 461} 462define void @freeze_v13i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) { 463; GFX10-SDAG-LABEL: freeze_v13i32: 464; GFX10-SDAG: ; %bb.0: 465; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 466; GFX10-SDAG-NEXT: s_clause 0x3 467; GFX10-SDAG-NEXT: global_load_dword v16, v[0:1], off offset:48 468; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off offset:32 469; GFX10-SDAG-NEXT: global_load_dwordx4 v[8:11], v[0:1], off 470; GFX10-SDAG-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:16 471; GFX10-SDAG-NEXT: s_waitcnt vmcnt(3) 472; GFX10-SDAG-NEXT: global_store_dword v[2:3], v16, off offset:48 473; GFX10-SDAG-NEXT: s_waitcnt vmcnt(2) 474; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off offset:32 475; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1) 476; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[8:11], off 477; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) 478; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:16 479; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31] 480; 481; GFX10-GISEL-LABEL: freeze_v13i32: 482; GFX10-GISEL: ; %bb.0: 483; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 484; GFX10-GISEL-NEXT: s_clause 0x3 485; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off 486; GFX10-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:16 487; GFX10-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:32 488; GFX10-GISEL-NEXT: global_load_dword v16, v[0:1], off offset:48 489; GFX10-GISEL-NEXT: s_waitcnt vmcnt(3) 490; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off 491; GFX10-GISEL-NEXT: s_waitcnt vmcnt(2) 492; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:16 493; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1) 494; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:32 495; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) 496; GFX10-GISEL-NEXT: global_store_dword v[2:3], v16, off offset:48 497; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31] 498; 499; GFX11-SDAG-LABEL: freeze_v13i32: 500; GFX11-SDAG: ; %bb.0: 501; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 502; GFX11-SDAG-NEXT: s_clause 0x3 503; GFX11-SDAG-NEXT: global_load_b32 v16, v[0:1], off offset:48 504; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off offset:32 505; GFX11-SDAG-NEXT: global_load_b128 v[8:11], v[0:1], off 506; GFX11-SDAG-NEXT: global_load_b128 v[12:15], v[0:1], off offset:16 507; GFX11-SDAG-NEXT: s_waitcnt vmcnt(3) 508; GFX11-SDAG-NEXT: global_store_b32 v[2:3], v16, off offset:48 509; GFX11-SDAG-NEXT: s_waitcnt vmcnt(2) 510; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off offset:32 511; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1) 512; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[8:11], off 513; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) 514; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[12:15], off offset:16 515; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31] 516; 517; GFX11-GISEL-LABEL: freeze_v13i32: 518; GFX11-GISEL: ; %bb.0: 519; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 520; GFX11-GISEL-NEXT: s_clause 0x3 521; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off 522; GFX11-GISEL-NEXT: global_load_b128 v[8:11], v[0:1], off offset:16 523; GFX11-GISEL-NEXT: global_load_b128 v[12:15], v[0:1], off offset:32 524; GFX11-GISEL-NEXT: global_load_b32 v0, v[0:1], off offset:48 525; GFX11-GISEL-NEXT: s_waitcnt vmcnt(3) 526; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off 527; GFX11-GISEL-NEXT: s_waitcnt vmcnt(2) 528; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[8:11], off offset:16 529; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1) 530; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[12:15], off offset:32 531; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) 532; GFX11-GISEL-NEXT: global_store_b32 v[2:3], v0, off offset:48 533; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31] 534 %a = load <13 x i32>, ptr addrspace(1) %ptra, align 4 535 %freeze = freeze <13 x i32> %a 536 store <13 x i32> %freeze, ptr addrspace(1) %ptrb, align 4 537 ret void 538} 539 540define void @freeze_v14i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) { 541; GFX10-SDAG-LABEL: freeze_v14i32: 542; GFX10-SDAG: ; %bb.0: 543; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 544; GFX10-SDAG-NEXT: s_clause 0x3 545; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off offset:32 546; GFX10-SDAG-NEXT: global_load_dwordx2 v[16:17], v[0:1], off offset:48 547; GFX10-SDAG-NEXT: global_load_dwordx4 v[8:11], v[0:1], off 548; GFX10-SDAG-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:16 549; GFX10-SDAG-NEXT: s_waitcnt vmcnt(3) 550; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off offset:32 551; GFX10-SDAG-NEXT: s_waitcnt vmcnt(2) 552; GFX10-SDAG-NEXT: global_store_dwordx2 v[2:3], v[16:17], off offset:48 553; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1) 554; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[8:11], off 555; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) 556; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:16 557; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31] 558; 559; GFX10-GISEL-LABEL: freeze_v14i32: 560; GFX10-GISEL: ; %bb.0: 561; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 562; GFX10-GISEL-NEXT: s_clause 0x3 563; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off 564; GFX10-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:16 565; GFX10-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:32 566; GFX10-GISEL-NEXT: global_load_dwordx2 v[16:17], v[0:1], off offset:48 567; GFX10-GISEL-NEXT: s_waitcnt vmcnt(3) 568; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off 569; GFX10-GISEL-NEXT: s_waitcnt vmcnt(2) 570; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:16 571; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1) 572; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:32 573; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) 574; GFX10-GISEL-NEXT: global_store_dwordx2 v[2:3], v[16:17], off offset:48 575; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31] 576; 577; GFX11-SDAG-LABEL: freeze_v14i32: 578; GFX11-SDAG: ; %bb.0: 579; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 580; GFX11-SDAG-NEXT: s_clause 0x3 581; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off offset:32 582; GFX11-SDAG-NEXT: global_load_b64 v[16:17], v[0:1], off offset:48 583; GFX11-SDAG-NEXT: global_load_b128 v[8:11], v[0:1], off 584; GFX11-SDAG-NEXT: global_load_b128 v[12:15], v[0:1], off offset:16 585; GFX11-SDAG-NEXT: s_waitcnt vmcnt(3) 586; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off offset:32 587; GFX11-SDAG-NEXT: s_waitcnt vmcnt(2) 588; GFX11-SDAG-NEXT: global_store_b64 v[2:3], v[16:17], off offset:48 589; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1) 590; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[8:11], off 591; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) 592; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[12:15], off offset:16 593; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31] 594; 595; GFX11-GISEL-LABEL: freeze_v14i32: 596; GFX11-GISEL: ; %bb.0: 597; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 598; GFX11-GISEL-NEXT: s_clause 0x3 599; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off 600; GFX11-GISEL-NEXT: global_load_b128 v[8:11], v[0:1], off offset:16 601; GFX11-GISEL-NEXT: global_load_b128 v[12:15], v[0:1], off offset:32 602; GFX11-GISEL-NEXT: global_load_b64 v[0:1], v[0:1], off offset:48 603; GFX11-GISEL-NEXT: s_waitcnt vmcnt(3) 604; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off 605; GFX11-GISEL-NEXT: s_waitcnt vmcnt(2) 606; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[8:11], off offset:16 607; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1) 608; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[12:15], off offset:32 609; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) 610; GFX11-GISEL-NEXT: global_store_b64 v[2:3], v[0:1], off offset:48 611; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31] 612 %a = load <14 x i32>, ptr addrspace(1) %ptra, align 4 613 %freeze = freeze <14 x i32> %a 614 store <14 x i32> %freeze, ptr addrspace(1) %ptrb, align 4 615 ret void 616} 617 618define void @freeze_v15i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) { 619; GFX10-SDAG-LABEL: freeze_v15i32: 620; GFX10-SDAG: ; %bb.0: 621; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 622; GFX10-SDAG-NEXT: s_clause 0x3 623; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off offset:32 624; GFX10-SDAG-NEXT: global_load_dwordx3 v[16:18], v[0:1], off offset:48 625; GFX10-SDAG-NEXT: global_load_dwordx4 v[8:11], v[0:1], off 626; GFX10-SDAG-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:16 627; GFX10-SDAG-NEXT: s_waitcnt vmcnt(3) 628; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off offset:32 629; GFX10-SDAG-NEXT: s_waitcnt vmcnt(2) 630; GFX10-SDAG-NEXT: global_store_dwordx3 v[2:3], v[16:18], off offset:48 631; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1) 632; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[8:11], off 633; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) 634; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:16 635; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31] 636; 637; GFX10-GISEL-LABEL: freeze_v15i32: 638; GFX10-GISEL: ; %bb.0: 639; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 640; GFX10-GISEL-NEXT: s_clause 0x3 641; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off 642; GFX10-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:16 643; GFX10-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:32 644; GFX10-GISEL-NEXT: global_load_dwordx3 v[16:18], v[0:1], off offset:48 645; GFX10-GISEL-NEXT: s_waitcnt vmcnt(3) 646; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off 647; GFX10-GISEL-NEXT: s_waitcnt vmcnt(2) 648; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:16 649; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1) 650; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:32 651; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) 652; GFX10-GISEL-NEXT: global_store_dwordx3 v[2:3], v[16:18], off offset:48 653; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31] 654; 655; GFX11-SDAG-LABEL: freeze_v15i32: 656; GFX11-SDAG: ; %bb.0: 657; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 658; GFX11-SDAG-NEXT: s_clause 0x3 659; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off offset:32 660; GFX11-SDAG-NEXT: global_load_b96 v[16:18], v[0:1], off offset:48 661; GFX11-SDAG-NEXT: global_load_b128 v[8:11], v[0:1], off 662; GFX11-SDAG-NEXT: global_load_b128 v[12:15], v[0:1], off offset:16 663; GFX11-SDAG-NEXT: s_waitcnt vmcnt(3) 664; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off offset:32 665; GFX11-SDAG-NEXT: s_waitcnt vmcnt(2) 666; GFX11-SDAG-NEXT: global_store_b96 v[2:3], v[16:18], off offset:48 667; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1) 668; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[8:11], off 669; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) 670; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[12:15], off offset:16 671; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31] 672; 673; GFX11-GISEL-LABEL: freeze_v15i32: 674; GFX11-GISEL: ; %bb.0: 675; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 676; GFX11-GISEL-NEXT: s_clause 0x3 677; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off 678; GFX11-GISEL-NEXT: global_load_b128 v[8:11], v[0:1], off offset:16 679; GFX11-GISEL-NEXT: global_load_b128 v[12:15], v[0:1], off offset:32 680; GFX11-GISEL-NEXT: global_load_b96 v[16:18], v[0:1], off offset:48 681; GFX11-GISEL-NEXT: s_waitcnt vmcnt(3) 682; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off 683; GFX11-GISEL-NEXT: s_waitcnt vmcnt(2) 684; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[8:11], off offset:16 685; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1) 686; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[12:15], off offset:32 687; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) 688; GFX11-GISEL-NEXT: global_store_b96 v[2:3], v[16:18], off offset:48 689; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31] 690 %a = load <15 x i32>, ptr addrspace(1) %ptra, align 4 691 %freeze = freeze <15 x i32> %a 692 store <15 x i32> %freeze, ptr addrspace(1) %ptrb, align 4 693 ret void 694} 695 696define void @freeze_v16i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) { 697; GFX10-SDAG-LABEL: freeze_v16i32: 698; GFX10-SDAG: ; %bb.0: 699; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 700; GFX10-SDAG-NEXT: s_clause 0x3 701; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off offset:32 702; GFX10-SDAG-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:48 703; GFX10-SDAG-NEXT: global_load_dwordx4 v[12:15], v[0:1], off 704; GFX10-SDAG-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:16 705; GFX10-SDAG-NEXT: s_waitcnt vmcnt(3) 706; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off offset:32 707; GFX10-SDAG-NEXT: s_waitcnt vmcnt(2) 708; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:48 709; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1) 710; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[12:15], off 711; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) 712; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:16 713; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31] 714; 715; GFX10-GISEL-LABEL: freeze_v16i32: 716; GFX10-GISEL: ; %bb.0: 717; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 718; GFX10-GISEL-NEXT: s_clause 0x3 719; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off 720; GFX10-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:16 721; GFX10-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:32 722; GFX10-GISEL-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:48 723; GFX10-GISEL-NEXT: s_waitcnt vmcnt(3) 724; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off 725; GFX10-GISEL-NEXT: s_waitcnt vmcnt(2) 726; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:16 727; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1) 728; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:32 729; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) 730; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:48 731; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31] 732; 733; GFX11-SDAG-LABEL: freeze_v16i32: 734; GFX11-SDAG: ; %bb.0: 735; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 736; GFX11-SDAG-NEXT: s_clause 0x3 737; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off offset:32 738; GFX11-SDAG-NEXT: global_load_b128 v[8:11], v[0:1], off offset:48 739; GFX11-SDAG-NEXT: global_load_b128 v[12:15], v[0:1], off 740; GFX11-SDAG-NEXT: global_load_b128 v[16:19], v[0:1], off offset:16 741; GFX11-SDAG-NEXT: s_waitcnt vmcnt(3) 742; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off offset:32 743; GFX11-SDAG-NEXT: s_waitcnt vmcnt(2) 744; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[8:11], off offset:48 745; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1) 746; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[12:15], off 747; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) 748; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[16:19], off offset:16 749; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31] 750; 751; GFX11-GISEL-LABEL: freeze_v16i32: 752; GFX11-GISEL: ; %bb.0: 753; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 754; GFX11-GISEL-NEXT: s_clause 0x3 755; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off 756; GFX11-GISEL-NEXT: global_load_b128 v[8:11], v[0:1], off offset:16 757; GFX11-GISEL-NEXT: global_load_b128 v[12:15], v[0:1], off offset:32 758; GFX11-GISEL-NEXT: global_load_b128 v[16:19], v[0:1], off offset:48 759; GFX11-GISEL-NEXT: s_waitcnt vmcnt(3) 760; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off 761; GFX11-GISEL-NEXT: s_waitcnt vmcnt(2) 762; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[8:11], off offset:16 763; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1) 764; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[12:15], off offset:32 765; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) 766; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[16:19], off offset:48 767; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31] 768 %a = load <16 x i32>, ptr addrspace(1) %ptra, align 4 769 %freeze = freeze <16 x i32> %a 770 store <16 x i32> %freeze, ptr addrspace(1) %ptrb, align 4 771 ret void 772} 773 774define void @freeze_v17i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) { 775; GFX10-SDAG-LABEL: freeze_v17i32: 776; GFX10-SDAG: ; %bb.0: 777; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 778; GFX10-SDAG-NEXT: s_clause 0x4 779; GFX10-SDAG-NEXT: global_load_dword v20, v[0:1], off offset:64 780; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off offset:32 781; GFX10-SDAG-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:48 782; GFX10-SDAG-NEXT: global_load_dwordx4 v[12:15], v[0:1], off 783; GFX10-SDAG-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:16 784; GFX10-SDAG-NEXT: s_waitcnt vmcnt(4) 785; GFX10-SDAG-NEXT: global_store_dword v[2:3], v20, off offset:64 786; GFX10-SDAG-NEXT: s_waitcnt vmcnt(3) 787; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off offset:32 788; GFX10-SDAG-NEXT: s_waitcnt vmcnt(2) 789; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:48 790; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1) 791; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[12:15], off 792; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) 793; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:16 794; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31] 795; 796; GFX10-GISEL-LABEL: freeze_v17i32: 797; GFX10-GISEL: ; %bb.0: 798; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 799; GFX10-GISEL-NEXT: s_clause 0x4 800; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off 801; GFX10-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:16 802; GFX10-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:32 803; GFX10-GISEL-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:48 804; GFX10-GISEL-NEXT: global_load_dword v20, v[0:1], off offset:64 805; GFX10-GISEL-NEXT: s_waitcnt vmcnt(4) 806; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off 807; GFX10-GISEL-NEXT: s_waitcnt vmcnt(3) 808; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:16 809; GFX10-GISEL-NEXT: s_waitcnt vmcnt(2) 810; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:32 811; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1) 812; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:48 813; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) 814; GFX10-GISEL-NEXT: global_store_dword v[2:3], v20, off offset:64 815; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31] 816; 817; GFX11-SDAG-LABEL: freeze_v17i32: 818; GFX11-SDAG: ; %bb.0: 819; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 820; GFX11-SDAG-NEXT: s_clause 0x4 821; GFX11-SDAG-NEXT: global_load_b32 v20, v[0:1], off offset:64 822; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off offset:32 823; GFX11-SDAG-NEXT: global_load_b128 v[8:11], v[0:1], off offset:48 824; GFX11-SDAG-NEXT: global_load_b128 v[12:15], v[0:1], off 825; GFX11-SDAG-NEXT: global_load_b128 v[16:19], v[0:1], off offset:16 826; GFX11-SDAG-NEXT: s_waitcnt vmcnt(4) 827; GFX11-SDAG-NEXT: global_store_b32 v[2:3], v20, off offset:64 828; GFX11-SDAG-NEXT: s_waitcnt vmcnt(3) 829; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off offset:32 830; GFX11-SDAG-NEXT: s_waitcnt vmcnt(2) 831; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[8:11], off offset:48 832; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1) 833; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[12:15], off 834; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) 835; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[16:19], off offset:16 836; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31] 837; 838; GFX11-GISEL-LABEL: freeze_v17i32: 839; GFX11-GISEL: ; %bb.0: 840; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 841; GFX11-GISEL-NEXT: s_clause 0x4 842; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off 843; GFX11-GISEL-NEXT: global_load_b128 v[8:11], v[0:1], off offset:16 844; GFX11-GISEL-NEXT: global_load_b128 v[12:15], v[0:1], off offset:32 845; GFX11-GISEL-NEXT: global_load_b128 v[16:19], v[0:1], off offset:48 846; GFX11-GISEL-NEXT: global_load_b32 v0, v[0:1], off offset:64 847; GFX11-GISEL-NEXT: s_waitcnt vmcnt(4) 848; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off 849; GFX11-GISEL-NEXT: s_waitcnt vmcnt(3) 850; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[8:11], off offset:16 851; GFX11-GISEL-NEXT: s_waitcnt vmcnt(2) 852; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[12:15], off offset:32 853; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1) 854; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[16:19], off offset:48 855; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) 856; GFX11-GISEL-NEXT: global_store_b32 v[2:3], v0, off offset:64 857; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31] 858 %a = load <17 x i32>, ptr addrspace(1) %ptra, align 4 859 %freeze = freeze <17 x i32> %a 860 store <17 x i32> %freeze, ptr addrspace(1) %ptrb, align 4 861 ret void 862} 863 864define void @freeze_v18i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) { 865; GFX10-SDAG-LABEL: freeze_v18i32: 866; GFX10-SDAG: ; %bb.0: 867; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 868; GFX10-SDAG-NEXT: s_clause 0x4 869; GFX10-SDAG-NEXT: global_load_dwordx2 v[20:21], v[0:1], off offset:64 870; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off offset:32 871; GFX10-SDAG-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:48 872; GFX10-SDAG-NEXT: global_load_dwordx4 v[12:15], v[0:1], off 873; GFX10-SDAG-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:16 874; GFX10-SDAG-NEXT: s_waitcnt vmcnt(4) 875; GFX10-SDAG-NEXT: global_store_dwordx2 v[2:3], v[20:21], off offset:64 876; GFX10-SDAG-NEXT: s_waitcnt vmcnt(3) 877; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off offset:32 878; GFX10-SDAG-NEXT: s_waitcnt vmcnt(2) 879; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:48 880; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1) 881; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[12:15], off 882; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) 883; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:16 884; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31] 885; 886; GFX10-GISEL-LABEL: freeze_v18i32: 887; GFX10-GISEL: ; %bb.0: 888; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 889; GFX10-GISEL-NEXT: s_clause 0x4 890; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off 891; GFX10-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:16 892; GFX10-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:32 893; GFX10-GISEL-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:48 894; GFX10-GISEL-NEXT: global_load_dwordx2 v[20:21], v[0:1], off offset:64 895; GFX10-GISEL-NEXT: s_waitcnt vmcnt(4) 896; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off 897; GFX10-GISEL-NEXT: s_waitcnt vmcnt(3) 898; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:16 899; GFX10-GISEL-NEXT: s_waitcnt vmcnt(2) 900; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:32 901; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1) 902; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:48 903; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) 904; GFX10-GISEL-NEXT: global_store_dwordx2 v[2:3], v[20:21], off offset:64 905; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31] 906; 907; GFX11-SDAG-LABEL: freeze_v18i32: 908; GFX11-SDAG: ; %bb.0: 909; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 910; GFX11-SDAG-NEXT: s_clause 0x4 911; GFX11-SDAG-NEXT: global_load_b64 v[20:21], v[0:1], off offset:64 912; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off offset:32 913; GFX11-SDAG-NEXT: global_load_b128 v[8:11], v[0:1], off offset:48 914; GFX11-SDAG-NEXT: global_load_b128 v[12:15], v[0:1], off 915; GFX11-SDAG-NEXT: global_load_b128 v[16:19], v[0:1], off offset:16 916; GFX11-SDAG-NEXT: s_waitcnt vmcnt(4) 917; GFX11-SDAG-NEXT: global_store_b64 v[2:3], v[20:21], off offset:64 918; GFX11-SDAG-NEXT: s_waitcnt vmcnt(3) 919; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off offset:32 920; GFX11-SDAG-NEXT: s_waitcnt vmcnt(2) 921; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[8:11], off offset:48 922; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1) 923; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[12:15], off 924; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) 925; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[16:19], off offset:16 926; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31] 927; 928; GFX11-GISEL-LABEL: freeze_v18i32: 929; GFX11-GISEL: ; %bb.0: 930; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 931; GFX11-GISEL-NEXT: s_clause 0x4 932; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off 933; GFX11-GISEL-NEXT: global_load_b128 v[8:11], v[0:1], off offset:16 934; GFX11-GISEL-NEXT: global_load_b128 v[12:15], v[0:1], off offset:32 935; GFX11-GISEL-NEXT: global_load_b128 v[16:19], v[0:1], off offset:48 936; GFX11-GISEL-NEXT: global_load_b64 v[0:1], v[0:1], off offset:64 937; GFX11-GISEL-NEXT: s_waitcnt vmcnt(4) 938; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off 939; GFX11-GISEL-NEXT: s_waitcnt vmcnt(3) 940; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[8:11], off offset:16 941; GFX11-GISEL-NEXT: s_waitcnt vmcnt(2) 942; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[12:15], off offset:32 943; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1) 944; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[16:19], off offset:48 945; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) 946; GFX11-GISEL-NEXT: global_store_b64 v[2:3], v[0:1], off offset:64 947; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31] 948 %a = load <18 x i32>, ptr addrspace(1) %ptra, align 4 949 %freeze = freeze <18 x i32> %a 950 store <18 x i32> %freeze, ptr addrspace(1) %ptrb, align 4 951 ret void 952} 953 954define void @freeze_v19i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) { 955; GFX10-SDAG-LABEL: freeze_v19i32: 956; GFX10-SDAG: ; %bb.0: 957; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 958; GFX10-SDAG-NEXT: s_clause 0x4 959; GFX10-SDAG-NEXT: global_load_dwordx3 v[20:22], v[0:1], off offset:64 960; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off offset:32 961; GFX10-SDAG-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:48 962; GFX10-SDAG-NEXT: global_load_dwordx4 v[12:15], v[0:1], off 963; GFX10-SDAG-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:16 964; GFX10-SDAG-NEXT: s_waitcnt vmcnt(4) 965; GFX10-SDAG-NEXT: global_store_dwordx3 v[2:3], v[20:22], off offset:64 966; GFX10-SDAG-NEXT: s_waitcnt vmcnt(3) 967; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off offset:32 968; GFX10-SDAG-NEXT: s_waitcnt vmcnt(2) 969; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:48 970; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1) 971; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[12:15], off 972; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) 973; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:16 974; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31] 975; 976; GFX10-GISEL-LABEL: freeze_v19i32: 977; GFX10-GISEL: ; %bb.0: 978; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 979; GFX10-GISEL-NEXT: s_clause 0x4 980; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off 981; GFX10-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:16 982; GFX10-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:32 983; GFX10-GISEL-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:48 984; GFX10-GISEL-NEXT: global_load_dwordx3 v[20:22], v[0:1], off offset:64 985; GFX10-GISEL-NEXT: s_waitcnt vmcnt(4) 986; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off 987; GFX10-GISEL-NEXT: s_waitcnt vmcnt(3) 988; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:16 989; GFX10-GISEL-NEXT: s_waitcnt vmcnt(2) 990; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:32 991; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1) 992; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:48 993; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) 994; GFX10-GISEL-NEXT: global_store_dwordx3 v[2:3], v[20:22], off offset:64 995; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31] 996; 997; GFX11-SDAG-LABEL: freeze_v19i32: 998; GFX11-SDAG: ; %bb.0: 999; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1000; GFX11-SDAG-NEXT: s_clause 0x4 1001; GFX11-SDAG-NEXT: global_load_b96 v[20:22], v[0:1], off offset:64 1002; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off offset:32 1003; GFX11-SDAG-NEXT: global_load_b128 v[8:11], v[0:1], off offset:48 1004; GFX11-SDAG-NEXT: global_load_b128 v[12:15], v[0:1], off 1005; GFX11-SDAG-NEXT: global_load_b128 v[16:19], v[0:1], off offset:16 1006; GFX11-SDAG-NEXT: s_waitcnt vmcnt(4) 1007; GFX11-SDAG-NEXT: global_store_b96 v[2:3], v[20:22], off offset:64 1008; GFX11-SDAG-NEXT: s_waitcnt vmcnt(3) 1009; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off offset:32 1010; GFX11-SDAG-NEXT: s_waitcnt vmcnt(2) 1011; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[8:11], off offset:48 1012; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1) 1013; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[12:15], off 1014; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) 1015; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[16:19], off offset:16 1016; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31] 1017; 1018; GFX11-GISEL-LABEL: freeze_v19i32: 1019; GFX11-GISEL: ; %bb.0: 1020; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1021; GFX11-GISEL-NEXT: s_clause 0x4 1022; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off 1023; GFX11-GISEL-NEXT: global_load_b128 v[8:11], v[0:1], off offset:16 1024; GFX11-GISEL-NEXT: global_load_b128 v[12:15], v[0:1], off offset:32 1025; GFX11-GISEL-NEXT: global_load_b128 v[16:19], v[0:1], off offset:48 1026; GFX11-GISEL-NEXT: global_load_b96 v[20:22], v[0:1], off offset:64 1027; GFX11-GISEL-NEXT: s_waitcnt vmcnt(4) 1028; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off 1029; GFX11-GISEL-NEXT: s_waitcnt vmcnt(3) 1030; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[8:11], off offset:16 1031; GFX11-GISEL-NEXT: s_waitcnt vmcnt(2) 1032; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[12:15], off offset:32 1033; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1) 1034; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[16:19], off offset:48 1035; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) 1036; GFX11-GISEL-NEXT: global_store_b96 v[2:3], v[20:22], off offset:64 1037; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31] 1038 %a = load <19 x i32>, ptr addrspace(1) %ptra, align 4 1039 %freeze = freeze <19 x i32> %a 1040 store <19 x i32> %freeze, ptr addrspace(1) %ptrb, align 4 1041 ret void 1042} 1043 1044define void @freeze_v20i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) { 1045; GFX10-SDAG-LABEL: freeze_v20i32: 1046; GFX10-SDAG: ; %bb.0: 1047; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1048; GFX10-SDAG-NEXT: s_clause 0x4 1049; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off offset:64 1050; GFX10-SDAG-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:32 1051; GFX10-SDAG-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:48 1052; GFX10-SDAG-NEXT: global_load_dwordx4 v[16:19], v[0:1], off 1053; GFX10-SDAG-NEXT: global_load_dwordx4 v[20:23], v[0:1], off offset:16 1054; GFX10-SDAG-NEXT: s_waitcnt vmcnt(4) 1055; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off offset:64 1056; GFX10-SDAG-NEXT: s_waitcnt vmcnt(3) 1057; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:32 1058; GFX10-SDAG-NEXT: s_waitcnt vmcnt(2) 1059; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:48 1060; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1) 1061; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[16:19], off 1062; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) 1063; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[20:23], off offset:16 1064; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31] 1065; 1066; GFX10-GISEL-LABEL: freeze_v20i32: 1067; GFX10-GISEL: ; %bb.0: 1068; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1069; GFX10-GISEL-NEXT: s_clause 0x4 1070; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off 1071; GFX10-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:16 1072; GFX10-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:32 1073; GFX10-GISEL-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:48 1074; GFX10-GISEL-NEXT: global_load_dwordx4 v[20:23], v[0:1], off offset:64 1075; GFX10-GISEL-NEXT: s_waitcnt vmcnt(4) 1076; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off 1077; GFX10-GISEL-NEXT: s_waitcnt vmcnt(3) 1078; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:16 1079; GFX10-GISEL-NEXT: s_waitcnt vmcnt(2) 1080; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:32 1081; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1) 1082; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:48 1083; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) 1084; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[20:23], off offset:64 1085; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31] 1086; 1087; GFX11-SDAG-LABEL: freeze_v20i32: 1088; GFX11-SDAG: ; %bb.0: 1089; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1090; GFX11-SDAG-NEXT: s_clause 0x4 1091; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off offset:64 1092; GFX11-SDAG-NEXT: global_load_b128 v[8:11], v[0:1], off offset:32 1093; GFX11-SDAG-NEXT: global_load_b128 v[12:15], v[0:1], off offset:48 1094; GFX11-SDAG-NEXT: global_load_b128 v[16:19], v[0:1], off 1095; GFX11-SDAG-NEXT: global_load_b128 v[20:23], v[0:1], off offset:16 1096; GFX11-SDAG-NEXT: s_waitcnt vmcnt(4) 1097; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off offset:64 1098; GFX11-SDAG-NEXT: s_waitcnt vmcnt(3) 1099; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[8:11], off offset:32 1100; GFX11-SDAG-NEXT: s_waitcnt vmcnt(2) 1101; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[12:15], off offset:48 1102; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1) 1103; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[16:19], off 1104; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) 1105; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[20:23], off offset:16 1106; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31] 1107; 1108; GFX11-GISEL-LABEL: freeze_v20i32: 1109; GFX11-GISEL: ; %bb.0: 1110; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1111; GFX11-GISEL-NEXT: s_clause 0x4 1112; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off 1113; GFX11-GISEL-NEXT: global_load_b128 v[8:11], v[0:1], off offset:16 1114; GFX11-GISEL-NEXT: global_load_b128 v[12:15], v[0:1], off offset:32 1115; GFX11-GISEL-NEXT: global_load_b128 v[16:19], v[0:1], off offset:48 1116; GFX11-GISEL-NEXT: global_load_b128 v[20:23], v[0:1], off offset:64 1117; GFX11-GISEL-NEXT: s_waitcnt vmcnt(4) 1118; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off 1119; GFX11-GISEL-NEXT: s_waitcnt vmcnt(3) 1120; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[8:11], off offset:16 1121; GFX11-GISEL-NEXT: s_waitcnt vmcnt(2) 1122; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[12:15], off offset:32 1123; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1) 1124; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[16:19], off offset:48 1125; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) 1126; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[20:23], off offset:64 1127; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31] 1128 %a = load <20 x i32>, ptr addrspace(1) %ptra, align 4 1129 %freeze = freeze <20 x i32> %a 1130 store <20 x i32> %freeze, ptr addrspace(1) %ptrb, align 4 1131 ret void 1132} 1133 1134define void @freeze_v21i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) { 1135; GFX10-SDAG-LABEL: freeze_v21i32: 1136; GFX10-SDAG: ; %bb.0: 1137; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1138; GFX10-SDAG-NEXT: s_clause 0x5 1139; GFX10-SDAG-NEXT: global_load_dword v24, v[0:1], off offset:80 1140; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off offset:64 1141; GFX10-SDAG-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:32 1142; GFX10-SDAG-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:48 1143; GFX10-SDAG-NEXT: global_load_dwordx4 v[16:19], v[0:1], off 1144; GFX10-SDAG-NEXT: global_load_dwordx4 v[20:23], v[0:1], off offset:16 1145; GFX10-SDAG-NEXT: s_waitcnt vmcnt(5) 1146; GFX10-SDAG-NEXT: global_store_dword v[2:3], v24, off offset:80 1147; GFX10-SDAG-NEXT: s_waitcnt vmcnt(4) 1148; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off offset:64 1149; GFX10-SDAG-NEXT: s_waitcnt vmcnt(3) 1150; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:32 1151; GFX10-SDAG-NEXT: s_waitcnt vmcnt(2) 1152; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:48 1153; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1) 1154; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[16:19], off 1155; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) 1156; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[20:23], off offset:16 1157; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31] 1158; 1159; GFX10-GISEL-LABEL: freeze_v21i32: 1160; GFX10-GISEL: ; %bb.0: 1161; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1162; GFX10-GISEL-NEXT: s_clause 0x5 1163; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off 1164; GFX10-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:16 1165; GFX10-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:32 1166; GFX10-GISEL-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:48 1167; GFX10-GISEL-NEXT: global_load_dwordx4 v[20:23], v[0:1], off offset:64 1168; GFX10-GISEL-NEXT: global_load_dword v24, v[0:1], off offset:80 1169; GFX10-GISEL-NEXT: s_waitcnt vmcnt(5) 1170; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off 1171; GFX10-GISEL-NEXT: s_waitcnt vmcnt(4) 1172; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:16 1173; GFX10-GISEL-NEXT: s_waitcnt vmcnt(3) 1174; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:32 1175; GFX10-GISEL-NEXT: s_waitcnt vmcnt(2) 1176; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:48 1177; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1) 1178; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[20:23], off offset:64 1179; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) 1180; GFX10-GISEL-NEXT: global_store_dword v[2:3], v24, off offset:80 1181; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31] 1182; 1183; GFX11-SDAG-LABEL: freeze_v21i32: 1184; GFX11-SDAG: ; %bb.0: 1185; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1186; GFX11-SDAG-NEXT: s_clause 0x5 1187; GFX11-SDAG-NEXT: global_load_b32 v24, v[0:1], off offset:80 1188; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off offset:64 1189; GFX11-SDAG-NEXT: global_load_b128 v[8:11], v[0:1], off offset:32 1190; GFX11-SDAG-NEXT: global_load_b128 v[12:15], v[0:1], off offset:48 1191; GFX11-SDAG-NEXT: global_load_b128 v[16:19], v[0:1], off 1192; GFX11-SDAG-NEXT: global_load_b128 v[20:23], v[0:1], off offset:16 1193; GFX11-SDAG-NEXT: s_waitcnt vmcnt(5) 1194; GFX11-SDAG-NEXT: global_store_b32 v[2:3], v24, off offset:80 1195; GFX11-SDAG-NEXT: s_waitcnt vmcnt(4) 1196; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off offset:64 1197; GFX11-SDAG-NEXT: s_waitcnt vmcnt(3) 1198; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[8:11], off offset:32 1199; GFX11-SDAG-NEXT: s_waitcnt vmcnt(2) 1200; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[12:15], off offset:48 1201; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1) 1202; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[16:19], off 1203; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) 1204; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[20:23], off offset:16 1205; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31] 1206; 1207; GFX11-GISEL-LABEL: freeze_v21i32: 1208; GFX11-GISEL: ; %bb.0: 1209; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1210; GFX11-GISEL-NEXT: s_clause 0x5 1211; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off 1212; GFX11-GISEL-NEXT: global_load_b128 v[8:11], v[0:1], off offset:16 1213; GFX11-GISEL-NEXT: global_load_b128 v[12:15], v[0:1], off offset:32 1214; GFX11-GISEL-NEXT: global_load_b128 v[16:19], v[0:1], off offset:48 1215; GFX11-GISEL-NEXT: global_load_b128 v[20:23], v[0:1], off offset:64 1216; GFX11-GISEL-NEXT: global_load_b32 v0, v[0:1], off offset:80 1217; GFX11-GISEL-NEXT: s_waitcnt vmcnt(5) 1218; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off 1219; GFX11-GISEL-NEXT: s_waitcnt vmcnt(4) 1220; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[8:11], off offset:16 1221; GFX11-GISEL-NEXT: s_waitcnt vmcnt(3) 1222; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[12:15], off offset:32 1223; GFX11-GISEL-NEXT: s_waitcnt vmcnt(2) 1224; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[16:19], off offset:48 1225; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1) 1226; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[20:23], off offset:64 1227; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) 1228; GFX11-GISEL-NEXT: global_store_b32 v[2:3], v0, off offset:80 1229; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31] 1230 %a = load <21 x i32>, ptr addrspace(1) %ptra, align 4 1231 %freeze = freeze <21 x i32> %a 1232 store <21 x i32> %freeze, ptr addrspace(1) %ptrb, align 4 1233 ret void 1234} 1235 1236define void @freeze_v22i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) { 1237; GFX10-SDAG-LABEL: freeze_v22i32: 1238; GFX10-SDAG: ; %bb.0: 1239; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1240; GFX10-SDAG-NEXT: s_clause 0x5 1241; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off offset:64 1242; GFX10-SDAG-NEXT: global_load_dwordx2 v[24:25], v[0:1], off offset:80 1243; GFX10-SDAG-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:32 1244; GFX10-SDAG-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:48 1245; GFX10-SDAG-NEXT: global_load_dwordx4 v[16:19], v[0:1], off 1246; GFX10-SDAG-NEXT: global_load_dwordx4 v[20:23], v[0:1], off offset:16 1247; GFX10-SDAG-NEXT: s_waitcnt vmcnt(5) 1248; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off offset:64 1249; GFX10-SDAG-NEXT: s_waitcnt vmcnt(4) 1250; GFX10-SDAG-NEXT: global_store_dwordx2 v[2:3], v[24:25], off offset:80 1251; GFX10-SDAG-NEXT: s_waitcnt vmcnt(3) 1252; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:32 1253; GFX10-SDAG-NEXT: s_waitcnt vmcnt(2) 1254; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:48 1255; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1) 1256; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[16:19], off 1257; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) 1258; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[20:23], off offset:16 1259; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31] 1260; 1261; GFX10-GISEL-LABEL: freeze_v22i32: 1262; GFX10-GISEL: ; %bb.0: 1263; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1264; GFX10-GISEL-NEXT: s_clause 0x5 1265; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off 1266; GFX10-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:16 1267; GFX10-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:32 1268; GFX10-GISEL-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:48 1269; GFX10-GISEL-NEXT: global_load_dwordx4 v[20:23], v[0:1], off offset:64 1270; GFX10-GISEL-NEXT: global_load_dwordx2 v[24:25], v[0:1], off offset:80 1271; GFX10-GISEL-NEXT: s_waitcnt vmcnt(5) 1272; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off 1273; GFX10-GISEL-NEXT: s_waitcnt vmcnt(4) 1274; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:16 1275; GFX10-GISEL-NEXT: s_waitcnt vmcnt(3) 1276; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:32 1277; GFX10-GISEL-NEXT: s_waitcnt vmcnt(2) 1278; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:48 1279; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1) 1280; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[20:23], off offset:64 1281; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) 1282; GFX10-GISEL-NEXT: global_store_dwordx2 v[2:3], v[24:25], off offset:80 1283; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31] 1284; 1285; GFX11-SDAG-LABEL: freeze_v22i32: 1286; GFX11-SDAG: ; %bb.0: 1287; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1288; GFX11-SDAG-NEXT: s_clause 0x5 1289; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off offset:64 1290; GFX11-SDAG-NEXT: global_load_b64 v[24:25], v[0:1], off offset:80 1291; GFX11-SDAG-NEXT: global_load_b128 v[8:11], v[0:1], off offset:32 1292; GFX11-SDAG-NEXT: global_load_b128 v[12:15], v[0:1], off offset:48 1293; GFX11-SDAG-NEXT: global_load_b128 v[16:19], v[0:1], off 1294; GFX11-SDAG-NEXT: global_load_b128 v[20:23], v[0:1], off offset:16 1295; GFX11-SDAG-NEXT: s_waitcnt vmcnt(5) 1296; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off offset:64 1297; GFX11-SDAG-NEXT: s_waitcnt vmcnt(4) 1298; GFX11-SDAG-NEXT: global_store_b64 v[2:3], v[24:25], off offset:80 1299; GFX11-SDAG-NEXT: s_waitcnt vmcnt(3) 1300; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[8:11], off offset:32 1301; GFX11-SDAG-NEXT: s_waitcnt vmcnt(2) 1302; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[12:15], off offset:48 1303; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1) 1304; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[16:19], off 1305; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) 1306; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[20:23], off offset:16 1307; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31] 1308; 1309; GFX11-GISEL-LABEL: freeze_v22i32: 1310; GFX11-GISEL: ; %bb.0: 1311; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1312; GFX11-GISEL-NEXT: s_clause 0x5 1313; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off 1314; GFX11-GISEL-NEXT: global_load_b128 v[8:11], v[0:1], off offset:16 1315; GFX11-GISEL-NEXT: global_load_b128 v[12:15], v[0:1], off offset:32 1316; GFX11-GISEL-NEXT: global_load_b128 v[16:19], v[0:1], off offset:48 1317; GFX11-GISEL-NEXT: global_load_b128 v[20:23], v[0:1], off offset:64 1318; GFX11-GISEL-NEXT: global_load_b64 v[0:1], v[0:1], off offset:80 1319; GFX11-GISEL-NEXT: s_waitcnt vmcnt(5) 1320; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off 1321; GFX11-GISEL-NEXT: s_waitcnt vmcnt(4) 1322; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[8:11], off offset:16 1323; GFX11-GISEL-NEXT: s_waitcnt vmcnt(3) 1324; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[12:15], off offset:32 1325; GFX11-GISEL-NEXT: s_waitcnt vmcnt(2) 1326; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[16:19], off offset:48 1327; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1) 1328; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[20:23], off offset:64 1329; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) 1330; GFX11-GISEL-NEXT: global_store_b64 v[2:3], v[0:1], off offset:80 1331; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31] 1332 %a = load <22 x i32>, ptr addrspace(1) %ptra, align 4 1333 %freeze = freeze <22 x i32> %a 1334 store <22 x i32> %freeze, ptr addrspace(1) %ptrb, align 4 1335 ret void 1336} 1337 1338define void @freeze_v30i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) { 1339; GFX10-SDAG-LABEL: freeze_v30i32: 1340; GFX10-SDAG: ; %bb.0: 1341; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1342; GFX10-SDAG-NEXT: s_clause 0x7 1343; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off offset:96 1344; GFX10-SDAG-NEXT: global_load_dwordx2 v[32:33], v[0:1], off offset:112 1345; GFX10-SDAG-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:64 1346; GFX10-SDAG-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:80 1347; GFX10-SDAG-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:32 1348; GFX10-SDAG-NEXT: global_load_dwordx4 v[20:23], v[0:1], off offset:48 1349; GFX10-SDAG-NEXT: global_load_dwordx4 v[24:27], v[0:1], off 1350; GFX10-SDAG-NEXT: global_load_dwordx4 v[28:31], v[0:1], off offset:16 1351; GFX10-SDAG-NEXT: s_waitcnt vmcnt(7) 1352; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off offset:96 1353; GFX10-SDAG-NEXT: s_waitcnt vmcnt(6) 1354; GFX10-SDAG-NEXT: global_store_dwordx2 v[2:3], v[32:33], off offset:112 1355; GFX10-SDAG-NEXT: s_waitcnt vmcnt(5) 1356; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:64 1357; GFX10-SDAG-NEXT: s_waitcnt vmcnt(4) 1358; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:80 1359; GFX10-SDAG-NEXT: s_waitcnt vmcnt(3) 1360; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:32 1361; GFX10-SDAG-NEXT: s_waitcnt vmcnt(2) 1362; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[20:23], off offset:48 1363; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1) 1364; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[24:27], off 1365; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) 1366; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[28:31], off offset:16 1367; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31] 1368; 1369; GFX10-GISEL-LABEL: freeze_v30i32: 1370; GFX10-GISEL: ; %bb.0: 1371; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1372; GFX10-GISEL-NEXT: s_clause 0x7 1373; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off 1374; GFX10-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:16 1375; GFX10-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:32 1376; GFX10-GISEL-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:48 1377; GFX10-GISEL-NEXT: global_load_dwordx4 v[20:23], v[0:1], off offset:64 1378; GFX10-GISEL-NEXT: global_load_dwordx4 v[24:27], v[0:1], off offset:80 1379; GFX10-GISEL-NEXT: global_load_dwordx4 v[28:31], v[0:1], off offset:96 1380; GFX10-GISEL-NEXT: global_load_dwordx2 v[32:33], v[0:1], off offset:112 1381; GFX10-GISEL-NEXT: s_waitcnt vmcnt(7) 1382; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off 1383; GFX10-GISEL-NEXT: s_waitcnt vmcnt(6) 1384; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:16 1385; GFX10-GISEL-NEXT: s_waitcnt vmcnt(5) 1386; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:32 1387; GFX10-GISEL-NEXT: s_waitcnt vmcnt(4) 1388; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:48 1389; GFX10-GISEL-NEXT: s_waitcnt vmcnt(3) 1390; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[20:23], off offset:64 1391; GFX10-GISEL-NEXT: s_waitcnt vmcnt(2) 1392; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[24:27], off offset:80 1393; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1) 1394; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[28:31], off offset:96 1395; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) 1396; GFX10-GISEL-NEXT: global_store_dwordx2 v[2:3], v[32:33], off offset:112 1397; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31] 1398; 1399; GFX11-SDAG-LABEL: freeze_v30i32: 1400; GFX11-SDAG: ; %bb.0: 1401; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1402; GFX11-SDAG-NEXT: s_clause 0x7 1403; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off offset:96 1404; GFX11-SDAG-NEXT: global_load_b64 v[32:33], v[0:1], off offset:112 1405; GFX11-SDAG-NEXT: global_load_b128 v[8:11], v[0:1], off offset:64 1406; GFX11-SDAG-NEXT: global_load_b128 v[12:15], v[0:1], off offset:80 1407; GFX11-SDAG-NEXT: global_load_b128 v[16:19], v[0:1], off offset:32 1408; GFX11-SDAG-NEXT: global_load_b128 v[20:23], v[0:1], off offset:48 1409; GFX11-SDAG-NEXT: global_load_b128 v[24:27], v[0:1], off 1410; GFX11-SDAG-NEXT: global_load_b128 v[28:31], v[0:1], off offset:16 1411; GFX11-SDAG-NEXT: s_waitcnt vmcnt(7) 1412; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off offset:96 1413; GFX11-SDAG-NEXT: s_waitcnt vmcnt(6) 1414; GFX11-SDAG-NEXT: global_store_b64 v[2:3], v[32:33], off offset:112 1415; GFX11-SDAG-NEXT: s_waitcnt vmcnt(5) 1416; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[8:11], off offset:64 1417; GFX11-SDAG-NEXT: s_waitcnt vmcnt(4) 1418; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[12:15], off offset:80 1419; GFX11-SDAG-NEXT: s_waitcnt vmcnt(3) 1420; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[16:19], off offset:32 1421; GFX11-SDAG-NEXT: s_waitcnt vmcnt(2) 1422; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[20:23], off offset:48 1423; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1) 1424; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[24:27], off 1425; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) 1426; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[28:31], off offset:16 1427; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31] 1428; 1429; GFX11-GISEL-LABEL: freeze_v30i32: 1430; GFX11-GISEL: ; %bb.0: 1431; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1432; GFX11-GISEL-NEXT: s_clause 0x7 1433; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off 1434; GFX11-GISEL-NEXT: global_load_b128 v[8:11], v[0:1], off offset:16 1435; GFX11-GISEL-NEXT: global_load_b128 v[12:15], v[0:1], off offset:32 1436; GFX11-GISEL-NEXT: global_load_b128 v[16:19], v[0:1], off offset:48 1437; GFX11-GISEL-NEXT: global_load_b128 v[20:23], v[0:1], off offset:64 1438; GFX11-GISEL-NEXT: global_load_b128 v[24:27], v[0:1], off offset:80 1439; GFX11-GISEL-NEXT: global_load_b128 v[28:31], v[0:1], off offset:96 1440; GFX11-GISEL-NEXT: global_load_b64 v[0:1], v[0:1], off offset:112 1441; GFX11-GISEL-NEXT: s_waitcnt vmcnt(7) 1442; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off 1443; GFX11-GISEL-NEXT: s_waitcnt vmcnt(6) 1444; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[8:11], off offset:16 1445; GFX11-GISEL-NEXT: s_waitcnt vmcnt(5) 1446; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[12:15], off offset:32 1447; GFX11-GISEL-NEXT: s_waitcnt vmcnt(4) 1448; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[16:19], off offset:48 1449; GFX11-GISEL-NEXT: s_waitcnt vmcnt(3) 1450; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[20:23], off offset:64 1451; GFX11-GISEL-NEXT: s_waitcnt vmcnt(2) 1452; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[24:27], off offset:80 1453; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1) 1454; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[28:31], off offset:96 1455; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) 1456; GFX11-GISEL-NEXT: global_store_b64 v[2:3], v[0:1], off offset:112 1457; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31] 1458 %a = load <30 x i32>, ptr addrspace(1) %ptra, align 4 1459 %freeze = freeze <30 x i32> %a 1460 store <30 x i32> %freeze, ptr addrspace(1) %ptrb, align 4 1461 ret void 1462} 1463 1464define void @freeze_v31i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) { 1465; GFX10-SDAG-LABEL: freeze_v31i32: 1466; GFX10-SDAG: ; %bb.0: 1467; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1468; GFX10-SDAG-NEXT: s_clause 0x7 1469; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off offset:96 1470; GFX10-SDAG-NEXT: global_load_dwordx3 v[32:34], v[0:1], off offset:112 1471; GFX10-SDAG-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:64 1472; GFX10-SDAG-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:80 1473; GFX10-SDAG-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:32 1474; GFX10-SDAG-NEXT: global_load_dwordx4 v[20:23], v[0:1], off offset:48 1475; GFX10-SDAG-NEXT: global_load_dwordx4 v[24:27], v[0:1], off 1476; GFX10-SDAG-NEXT: global_load_dwordx4 v[28:31], v[0:1], off offset:16 1477; GFX10-SDAG-NEXT: s_waitcnt vmcnt(7) 1478; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off offset:96 1479; GFX10-SDAG-NEXT: s_waitcnt vmcnt(6) 1480; GFX10-SDAG-NEXT: global_store_dwordx3 v[2:3], v[32:34], off offset:112 1481; GFX10-SDAG-NEXT: s_waitcnt vmcnt(5) 1482; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:64 1483; GFX10-SDAG-NEXT: s_waitcnt vmcnt(4) 1484; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:80 1485; GFX10-SDAG-NEXT: s_waitcnt vmcnt(3) 1486; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:32 1487; GFX10-SDAG-NEXT: s_waitcnt vmcnt(2) 1488; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[20:23], off offset:48 1489; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1) 1490; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[24:27], off 1491; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) 1492; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[28:31], off offset:16 1493; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31] 1494; 1495; GFX10-GISEL-LABEL: freeze_v31i32: 1496; GFX10-GISEL: ; %bb.0: 1497; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1498; GFX10-GISEL-NEXT: s_clause 0x7 1499; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off 1500; GFX10-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:16 1501; GFX10-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:32 1502; GFX10-GISEL-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:48 1503; GFX10-GISEL-NEXT: global_load_dwordx4 v[20:23], v[0:1], off offset:64 1504; GFX10-GISEL-NEXT: global_load_dwordx4 v[24:27], v[0:1], off offset:80 1505; GFX10-GISEL-NEXT: global_load_dwordx4 v[28:31], v[0:1], off offset:96 1506; GFX10-GISEL-NEXT: global_load_dwordx3 v[32:34], v[0:1], off offset:112 1507; GFX10-GISEL-NEXT: s_waitcnt vmcnt(7) 1508; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off 1509; GFX10-GISEL-NEXT: s_waitcnt vmcnt(6) 1510; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:16 1511; GFX10-GISEL-NEXT: s_waitcnt vmcnt(5) 1512; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:32 1513; GFX10-GISEL-NEXT: s_waitcnt vmcnt(4) 1514; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:48 1515; GFX10-GISEL-NEXT: s_waitcnt vmcnt(3) 1516; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[20:23], off offset:64 1517; GFX10-GISEL-NEXT: s_waitcnt vmcnt(2) 1518; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[24:27], off offset:80 1519; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1) 1520; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[28:31], off offset:96 1521; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) 1522; GFX10-GISEL-NEXT: global_store_dwordx3 v[2:3], v[32:34], off offset:112 1523; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31] 1524; 1525; GFX11-SDAG-LABEL: freeze_v31i32: 1526; GFX11-SDAG: ; %bb.0: 1527; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1528; GFX11-SDAG-NEXT: s_clause 0x7 1529; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off offset:96 1530; GFX11-SDAG-NEXT: global_load_b96 v[32:34], v[0:1], off offset:112 1531; GFX11-SDAG-NEXT: global_load_b128 v[8:11], v[0:1], off offset:64 1532; GFX11-SDAG-NEXT: global_load_b128 v[12:15], v[0:1], off offset:80 1533; GFX11-SDAG-NEXT: global_load_b128 v[16:19], v[0:1], off offset:32 1534; GFX11-SDAG-NEXT: global_load_b128 v[20:23], v[0:1], off offset:48 1535; GFX11-SDAG-NEXT: global_load_b128 v[24:27], v[0:1], off 1536; GFX11-SDAG-NEXT: global_load_b128 v[28:31], v[0:1], off offset:16 1537; GFX11-SDAG-NEXT: s_waitcnt vmcnt(7) 1538; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off offset:96 1539; GFX11-SDAG-NEXT: s_waitcnt vmcnt(6) 1540; GFX11-SDAG-NEXT: global_store_b96 v[2:3], v[32:34], off offset:112 1541; GFX11-SDAG-NEXT: s_waitcnt vmcnt(5) 1542; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[8:11], off offset:64 1543; GFX11-SDAG-NEXT: s_waitcnt vmcnt(4) 1544; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[12:15], off offset:80 1545; GFX11-SDAG-NEXT: s_waitcnt vmcnt(3) 1546; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[16:19], off offset:32 1547; GFX11-SDAG-NEXT: s_waitcnt vmcnt(2) 1548; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[20:23], off offset:48 1549; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1) 1550; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[24:27], off 1551; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) 1552; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[28:31], off offset:16 1553; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31] 1554; 1555; GFX11-GISEL-LABEL: freeze_v31i32: 1556; GFX11-GISEL: ; %bb.0: 1557; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1558; GFX11-GISEL-NEXT: s_clause 0x7 1559; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off 1560; GFX11-GISEL-NEXT: global_load_b128 v[8:11], v[0:1], off offset:16 1561; GFX11-GISEL-NEXT: global_load_b128 v[12:15], v[0:1], off offset:32 1562; GFX11-GISEL-NEXT: global_load_b128 v[16:19], v[0:1], off offset:48 1563; GFX11-GISEL-NEXT: global_load_b128 v[20:23], v[0:1], off offset:64 1564; GFX11-GISEL-NEXT: global_load_b128 v[24:27], v[0:1], off offset:80 1565; GFX11-GISEL-NEXT: global_load_b128 v[28:31], v[0:1], off offset:96 1566; GFX11-GISEL-NEXT: global_load_b96 v[32:34], v[0:1], off offset:112 1567; GFX11-GISEL-NEXT: s_waitcnt vmcnt(7) 1568; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off 1569; GFX11-GISEL-NEXT: s_waitcnt vmcnt(6) 1570; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[8:11], off offset:16 1571; GFX11-GISEL-NEXT: s_waitcnt vmcnt(5) 1572; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[12:15], off offset:32 1573; GFX11-GISEL-NEXT: s_waitcnt vmcnt(4) 1574; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[16:19], off offset:48 1575; GFX11-GISEL-NEXT: s_waitcnt vmcnt(3) 1576; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[20:23], off offset:64 1577; GFX11-GISEL-NEXT: s_waitcnt vmcnt(2) 1578; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[24:27], off offset:80 1579; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1) 1580; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[28:31], off offset:96 1581; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) 1582; GFX11-GISEL-NEXT: global_store_b96 v[2:3], v[32:34], off offset:112 1583; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31] 1584 %a = load <31 x i32>, ptr addrspace(1) %ptra, align 4 1585 %freeze = freeze <31 x i32> %a 1586 store <31 x i32> %freeze, ptr addrspace(1) %ptrb, align 4 1587 ret void 1588} 1589 1590define void @freeze_v32i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) { 1591; GFX10-SDAG-LABEL: freeze_v32i32: 1592; GFX10-SDAG: ; %bb.0: 1593; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1594; GFX10-SDAG-NEXT: s_clause 0x7 1595; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off offset:96 1596; GFX10-SDAG-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:112 1597; GFX10-SDAG-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:64 1598; GFX10-SDAG-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:80 1599; GFX10-SDAG-NEXT: global_load_dwordx4 v[20:23], v[0:1], off offset:32 1600; GFX10-SDAG-NEXT: global_load_dwordx4 v[24:27], v[0:1], off offset:48 1601; GFX10-SDAG-NEXT: global_load_dwordx4 v[28:31], v[0:1], off 1602; GFX10-SDAG-NEXT: global_load_dwordx4 v[32:35], v[0:1], off offset:16 1603; GFX10-SDAG-NEXT: s_waitcnt vmcnt(7) 1604; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off offset:96 1605; GFX10-SDAG-NEXT: s_waitcnt vmcnt(6) 1606; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:112 1607; GFX10-SDAG-NEXT: s_waitcnt vmcnt(5) 1608; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:64 1609; GFX10-SDAG-NEXT: s_waitcnt vmcnt(4) 1610; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:80 1611; GFX10-SDAG-NEXT: s_waitcnt vmcnt(3) 1612; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[20:23], off offset:32 1613; GFX10-SDAG-NEXT: s_waitcnt vmcnt(2) 1614; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[24:27], off offset:48 1615; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1) 1616; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[28:31], off 1617; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) 1618; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[32:35], off offset:16 1619; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31] 1620; 1621; GFX10-GISEL-LABEL: freeze_v32i32: 1622; GFX10-GISEL: ; %bb.0: 1623; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1624; GFX10-GISEL-NEXT: s_clause 0x7 1625; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off 1626; GFX10-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:16 1627; GFX10-GISEL-NEXT: global_load_dwordx4 v[12:15], v[0:1], off offset:32 1628; GFX10-GISEL-NEXT: global_load_dwordx4 v[16:19], v[0:1], off offset:48 1629; GFX10-GISEL-NEXT: global_load_dwordx4 v[20:23], v[0:1], off offset:64 1630; GFX10-GISEL-NEXT: global_load_dwordx4 v[24:27], v[0:1], off offset:80 1631; GFX10-GISEL-NEXT: global_load_dwordx4 v[28:31], v[0:1], off offset:96 1632; GFX10-GISEL-NEXT: global_load_dwordx4 v[32:35], v[0:1], off offset:112 1633; GFX10-GISEL-NEXT: s_waitcnt vmcnt(7) 1634; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off 1635; GFX10-GISEL-NEXT: s_waitcnt vmcnt(6) 1636; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:16 1637; GFX10-GISEL-NEXT: s_waitcnt vmcnt(5) 1638; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[12:15], off offset:32 1639; GFX10-GISEL-NEXT: s_waitcnt vmcnt(4) 1640; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[16:19], off offset:48 1641; GFX10-GISEL-NEXT: s_waitcnt vmcnt(3) 1642; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[20:23], off offset:64 1643; GFX10-GISEL-NEXT: s_waitcnt vmcnt(2) 1644; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[24:27], off offset:80 1645; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1) 1646; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[28:31], off offset:96 1647; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) 1648; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[32:35], off offset:112 1649; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31] 1650; 1651; GFX11-SDAG-LABEL: freeze_v32i32: 1652; GFX11-SDAG: ; %bb.0: 1653; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1654; GFX11-SDAG-NEXT: s_clause 0x7 1655; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off offset:96 1656; GFX11-SDAG-NEXT: global_load_b128 v[8:11], v[0:1], off offset:112 1657; GFX11-SDAG-NEXT: global_load_b128 v[12:15], v[0:1], off offset:64 1658; GFX11-SDAG-NEXT: global_load_b128 v[16:19], v[0:1], off offset:80 1659; GFX11-SDAG-NEXT: global_load_b128 v[20:23], v[0:1], off offset:32 1660; GFX11-SDAG-NEXT: global_load_b128 v[24:27], v[0:1], off offset:48 1661; GFX11-SDAG-NEXT: global_load_b128 v[28:31], v[0:1], off 1662; GFX11-SDAG-NEXT: global_load_b128 v[32:35], v[0:1], off offset:16 1663; GFX11-SDAG-NEXT: s_waitcnt vmcnt(7) 1664; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off offset:96 1665; GFX11-SDAG-NEXT: s_waitcnt vmcnt(6) 1666; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[8:11], off offset:112 1667; GFX11-SDAG-NEXT: s_waitcnt vmcnt(5) 1668; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[12:15], off offset:64 1669; GFX11-SDAG-NEXT: s_waitcnt vmcnt(4) 1670; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[16:19], off offset:80 1671; GFX11-SDAG-NEXT: s_waitcnt vmcnt(3) 1672; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[20:23], off offset:32 1673; GFX11-SDAG-NEXT: s_waitcnt vmcnt(2) 1674; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[24:27], off offset:48 1675; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1) 1676; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[28:31], off 1677; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) 1678; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[32:35], off offset:16 1679; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31] 1680; 1681; GFX11-GISEL-LABEL: freeze_v32i32: 1682; GFX11-GISEL: ; %bb.0: 1683; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1684; GFX11-GISEL-NEXT: s_clause 0x7 1685; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off 1686; GFX11-GISEL-NEXT: global_load_b128 v[8:11], v[0:1], off offset:16 1687; GFX11-GISEL-NEXT: global_load_b128 v[12:15], v[0:1], off offset:32 1688; GFX11-GISEL-NEXT: global_load_b128 v[16:19], v[0:1], off offset:48 1689; GFX11-GISEL-NEXT: global_load_b128 v[20:23], v[0:1], off offset:64 1690; GFX11-GISEL-NEXT: global_load_b128 v[24:27], v[0:1], off offset:80 1691; GFX11-GISEL-NEXT: global_load_b128 v[28:31], v[0:1], off offset:96 1692; GFX11-GISEL-NEXT: global_load_b128 v[32:35], v[0:1], off offset:112 1693; GFX11-GISEL-NEXT: s_waitcnt vmcnt(7) 1694; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off 1695; GFX11-GISEL-NEXT: s_waitcnt vmcnt(6) 1696; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[8:11], off offset:16 1697; GFX11-GISEL-NEXT: s_waitcnt vmcnt(5) 1698; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[12:15], off offset:32 1699; GFX11-GISEL-NEXT: s_waitcnt vmcnt(4) 1700; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[16:19], off offset:48 1701; GFX11-GISEL-NEXT: s_waitcnt vmcnt(3) 1702; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[20:23], off offset:64 1703; GFX11-GISEL-NEXT: s_waitcnt vmcnt(2) 1704; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[24:27], off offset:80 1705; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1) 1706; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[28:31], off offset:96 1707; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) 1708; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[32:35], off offset:112 1709; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31] 1710 %a = load <32 x i32>, ptr addrspace(1) %ptra, align 4 1711 %freeze = freeze <32 x i32> %a 1712 store <32 x i32> %freeze, ptr addrspace(1) %ptrb, align 4 1713 ret void 1714} 1715 1716define void @freeze_i32(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) { 1717; GFX10-LABEL: freeze_i32: 1718; GFX10: ; %bb.0: 1719; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1720; GFX10-NEXT: global_load_dword v0, v[0:1], off 1721; GFX10-NEXT: s_waitcnt vmcnt(0) 1722; GFX10-NEXT: global_store_dword v[2:3], v0, off 1723; GFX10-NEXT: s_setpc_b64 s[30:31] 1724; 1725; GFX11-LABEL: freeze_i32: 1726; GFX11: ; %bb.0: 1727; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1728; GFX11-NEXT: global_load_b32 v0, v[0:1], off 1729; GFX11-NEXT: s_waitcnt vmcnt(0) 1730; GFX11-NEXT: global_store_b32 v[2:3], v0, off 1731; GFX11-NEXT: s_setpc_b64 s[30:31] 1732 %a = load i32, ptr addrspace(1) %ptra, align 4 1733 %freeze = freeze i32 %a 1734 store i32 %freeze, ptr addrspace(1) %ptrb, align 4 1735 ret void 1736} 1737 1738define void @freeze_i64(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) { 1739; GFX10-LABEL: freeze_i64: 1740; GFX10: ; %bb.0: 1741; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1742; GFX10-NEXT: global_load_dwordx2 v[0:1], v[0:1], off 1743; GFX10-NEXT: s_waitcnt vmcnt(0) 1744; GFX10-NEXT: global_store_dwordx2 v[2:3], v[0:1], off 1745; GFX10-NEXT: s_setpc_b64 s[30:31] 1746; 1747; GFX11-LABEL: freeze_i64: 1748; GFX11: ; %bb.0: 1749; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1750; GFX11-NEXT: global_load_b64 v[0:1], v[0:1], off 1751; GFX11-NEXT: s_waitcnt vmcnt(0) 1752; GFX11-NEXT: global_store_b64 v[2:3], v[0:1], off 1753; GFX11-NEXT: s_setpc_b64 s[30:31] 1754 %a = load i64, ptr addrspace(1) %ptra, align 4 1755 %freeze = freeze i64 %a 1756 store i64 %freeze, ptr addrspace(1) %ptrb, align 4 1757 ret void 1758} 1759 1760define void @freeze_float(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) { 1761; GFX10-LABEL: freeze_float: 1762; GFX10: ; %bb.0: 1763; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1764; GFX10-NEXT: global_load_dword v0, v[0:1], off 1765; GFX10-NEXT: s_waitcnt vmcnt(0) 1766; GFX10-NEXT: global_store_dword v[2:3], v0, off 1767; GFX10-NEXT: s_setpc_b64 s[30:31] 1768; 1769; GFX11-LABEL: freeze_float: 1770; GFX11: ; %bb.0: 1771; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1772; GFX11-NEXT: global_load_b32 v0, v[0:1], off 1773; GFX11-NEXT: s_waitcnt vmcnt(0) 1774; GFX11-NEXT: global_store_b32 v[2:3], v0, off 1775; GFX11-NEXT: s_setpc_b64 s[30:31] 1776 %a = load float, ptr addrspace(1) %ptra, align 4 1777 %freeze = freeze float %a 1778 store float %freeze, ptr addrspace(1) %ptrb, align 4 1779 ret void 1780} 1781 1782define void @freeze_i128(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) { 1783; GFX10-LABEL: freeze_i128: 1784; GFX10: ; %bb.0: 1785; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1786; GFX10-NEXT: global_load_dwordx4 v[4:7], v[0:1], off 1787; GFX10-NEXT: s_waitcnt vmcnt(0) 1788; GFX10-NEXT: global_store_dwordx4 v[2:3], v[4:7], off 1789; GFX10-NEXT: s_setpc_b64 s[30:31] 1790; 1791; GFX11-LABEL: freeze_i128: 1792; GFX11: ; %bb.0: 1793; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1794; GFX11-NEXT: global_load_b128 v[4:7], v[0:1], off 1795; GFX11-NEXT: s_waitcnt vmcnt(0) 1796; GFX11-NEXT: global_store_b128 v[2:3], v[4:7], off 1797; GFX11-NEXT: s_setpc_b64 s[30:31] 1798 %a = load i128, ptr addrspace(1) %ptra, align 4 1799 %freeze = freeze i128 %a 1800 store i128 %freeze, ptr addrspace(1) %ptrb, align 4 1801 ret void 1802} 1803 1804define void @freeze_i256(ptr addrspace(1) %ptra, ptr addrspace(1) %ptrb) { 1805; GFX10-SDAG-LABEL: freeze_i256: 1806; GFX10-SDAG: ; %bb.0: 1807; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1808; GFX10-SDAG-NEXT: s_clause 0x1 1809; GFX10-SDAG-NEXT: global_load_dwordx4 v[4:7], v[0:1], off offset:16 1810; GFX10-SDAG-NEXT: global_load_dwordx4 v[8:11], v[0:1], off 1811; GFX10-SDAG-NEXT: s_waitcnt vmcnt(1) 1812; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[4:7], off offset:16 1813; GFX10-SDAG-NEXT: s_waitcnt vmcnt(0) 1814; GFX10-SDAG-NEXT: global_store_dwordx4 v[2:3], v[8:11], off 1815; GFX10-SDAG-NEXT: s_setpc_b64 s[30:31] 1816; 1817; GFX10-GISEL-LABEL: freeze_i256: 1818; GFX10-GISEL: ; %bb.0: 1819; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1820; GFX10-GISEL-NEXT: s_clause 0x1 1821; GFX10-GISEL-NEXT: global_load_dwordx4 v[4:7], v[0:1], off 1822; GFX10-GISEL-NEXT: global_load_dwordx4 v[8:11], v[0:1], off offset:16 1823; GFX10-GISEL-NEXT: s_waitcnt vmcnt(1) 1824; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[4:7], off 1825; GFX10-GISEL-NEXT: s_waitcnt vmcnt(0) 1826; GFX10-GISEL-NEXT: global_store_dwordx4 v[2:3], v[8:11], off offset:16 1827; GFX10-GISEL-NEXT: s_setpc_b64 s[30:31] 1828; 1829; GFX11-SDAG-LABEL: freeze_i256: 1830; GFX11-SDAG: ; %bb.0: 1831; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1832; GFX11-SDAG-NEXT: s_clause 0x1 1833; GFX11-SDAG-NEXT: global_load_b128 v[4:7], v[0:1], off offset:16 1834; GFX11-SDAG-NEXT: global_load_b128 v[8:11], v[0:1], off 1835; GFX11-SDAG-NEXT: s_waitcnt vmcnt(1) 1836; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[4:7], off offset:16 1837; GFX11-SDAG-NEXT: s_waitcnt vmcnt(0) 1838; GFX11-SDAG-NEXT: global_store_b128 v[2:3], v[8:11], off 1839; GFX11-SDAG-NEXT: s_setpc_b64 s[30:31] 1840; 1841; GFX11-GISEL-LABEL: freeze_i256: 1842; GFX11-GISEL: ; %bb.0: 1843; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1844; GFX11-GISEL-NEXT: s_clause 0x1 1845; GFX11-GISEL-NEXT: global_load_b128 v[4:7], v[0:1], off 1846; GFX11-GISEL-NEXT: global_load_b128 v[8:11], v[0:1], off offset:16 1847; GFX11-GISEL-NEXT: s_waitcnt vmcnt(1) 1848; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[4:7], off 1849; GFX11-GISEL-NEXT: s_waitcnt vmcnt(0) 1850; GFX11-GISEL-NEXT: global_store_b128 v[2:3], v[8:11], off offset:16 1851; GFX11-GISEL-NEXT: s_setpc_b64 s[30:31] 1852 %a = load i256, ptr addrspace(1) %ptra, align 4 1853 %freeze = freeze i256 %a 1854 store i256 %freeze, ptr addrspace(1) %ptrb, align 4 1855 ret void 1856} 1857