1; RUN: llc -amdgpu-scalarize-global-loads=false -march=amdgcn -verify-machineinstrs < %s | FileCheck -allow-deprecated-dag-overlap -check-prefix=GCN -check-prefix=GCN-NOHSA -check-prefix=FUNC %s 2; RUN: llc -amdgpu-scalarize-global-loads=false -mtriple=amdgcn--amdhsa -mcpu=kaveri -verify-machineinstrs < %s | FileCheck -allow-deprecated-dag-overlap -check-prefix=GCN -check-prefix=GCN-HSA -check-prefix=FUNC %s 3; RUN: llc -amdgpu-scalarize-global-loads=false -march=amdgcn -mcpu=tonga -mattr=-flat-for-global -verify-machineinstrs < %s | FileCheck -allow-deprecated-dag-overlap -check-prefix=GCN -check-prefix=GCN-NOHSA -check-prefix=FUNC %s 4; RUN: llc -amdgpu-scalarize-global-loads=false -march=r600 -mcpu=redwood < %s | FileCheck -allow-deprecated-dag-overlap -check-prefix=EG -check-prefix=FUNC %s 5; RUN: llc -amdgpu-scalarize-global-loads=false -mtriple=amdgcn--amdhsa -mcpu=gfx900 -verify-machineinstrs < %s | FileCheck -allow-deprecated-dag-overlap -check-prefix=GCN -check-prefix=GCN-HSA -check-prefix=FUNC %s 6 7 8; FUNC-LABEL: {{^}}global_load_i32: 9; GCN-NOHSA: buffer_load_dword v{{[0-9]+}} 10; GCN-HSA: {{flat|global}}_load_dword 11 12; EG: VTX_READ_32 T{{[0-9]+}}.X, T{{[0-9]+}}.X, 0 13define amdgpu_kernel void @global_load_i32(i32 addrspace(1)* %out, i32 addrspace(1)* %in) #0 { 14entry: 15 %ld = load i32, i32 addrspace(1)* %in 16 store i32 %ld, i32 addrspace(1)* %out 17 ret void 18} 19 20; FUNC-LABEL: {{^}}global_load_v2i32: 21; GCN-NOHSA: buffer_load_dwordx2 22; GCN-HSA: {{flat|global}}_load_dwordx2 23 24; EG: VTX_READ_64 25define amdgpu_kernel void @global_load_v2i32(<2 x i32> addrspace(1)* %out, <2 x i32> addrspace(1)* %in) #0 { 26entry: 27 %ld = load <2 x i32>, <2 x i32> addrspace(1)* %in 28 store <2 x i32> %ld, <2 x i32> addrspace(1)* %out 29 ret void 30} 31 32; FUNC-LABEL: {{^}}global_load_v3i32: 33; GCN-NOHSA: buffer_load_dwordx4 34; GCN-HSA: {{flat|global}}_load_dwordx4 35 36; EG: VTX_READ_128 37define amdgpu_kernel void @global_load_v3i32(<3 x i32> addrspace(1)* %out, <3 x i32> addrspace(1)* %in) #0 { 38entry: 39 %ld = load <3 x i32>, <3 x i32> addrspace(1)* %in 40 store <3 x i32> %ld, <3 x i32> addrspace(1)* %out 41 ret void 42} 43 44; FUNC-LABEL: {{^}}global_load_v4i32: 45; GCN-NOHSA: buffer_load_dwordx4 46; GCN-HSA: {{flat|global}}_load_dwordx4 47 48; EG: VTX_READ_128 49define amdgpu_kernel void @global_load_v4i32(<4 x i32> addrspace(1)* %out, <4 x i32> addrspace(1)* %in) #0 { 50entry: 51 %ld = load <4 x i32>, <4 x i32> addrspace(1)* %in 52 store <4 x i32> %ld, <4 x i32> addrspace(1)* %out 53 ret void 54} 55 56; FUNC-LABEL: {{^}}global_load_v8i32: 57; GCN-NOHSA: buffer_load_dwordx4 58; GCN-NOHSA: buffer_load_dwordx4 59; GCN-HSA: {{flat|global}}_load_dwordx4 60; GCN-HSA: {{flat|global}}_load_dwordx4 61 62; EG: VTX_READ_128 63; EG: VTX_READ_128 64define amdgpu_kernel void @global_load_v8i32(<8 x i32> addrspace(1)* %out, <8 x i32> addrspace(1)* %in) #0 { 65entry: 66 %ld = load <8 x i32>, <8 x i32> addrspace(1)* %in 67 store <8 x i32> %ld, <8 x i32> addrspace(1)* %out 68 ret void 69} 70 71; FUNC-LABEL: {{^}}global_load_v16i32: 72; GCN-NOHSA: buffer_load_dwordx4 73; GCN-NOHSA: buffer_load_dwordx4 74; GCN-NOHSA: buffer_load_dwordx4 75; GCN-NOHSA: buffer_load_dwordx4 76 77; GCN-HSA: {{flat|global}}_load_dwordx4 78; GCN-HSA: {{flat|global}}_load_dwordx4 79; GCN-HSA: {{flat|global}}_load_dwordx4 80; GCN-HSA: {{flat|global}}_load_dwordx4 81 82; EG: VTX_READ_128 83; EG: VTX_READ_128 84; EG: VTX_READ_128 85; EG: VTX_READ_128 86define amdgpu_kernel void @global_load_v16i32(<16 x i32> addrspace(1)* %out, <16 x i32> addrspace(1)* %in) #0 { 87entry: 88 %ld = load <16 x i32>, <16 x i32> addrspace(1)* %in 89 store <16 x i32> %ld, <16 x i32> addrspace(1)* %out 90 ret void 91} 92 93; FUNC-LABEL: {{^}}global_zextload_i32_to_i64: 94; GCN-NOHSA-DAG: buffer_load_dword v[[LO:[0-9]+]], 95; GCN-HSA-DAG: {{flat|global}}_load_dword v[[LO:[0-9]+]], 96; GCN-DAG: v_mov_b32_e32 v[[HI:[0-9]+]], 0{{$}} 97 98; GCN-NOHSA: buffer_store_dwordx2 v{{\[}}[[LO]]:[[HI]]] 99; GCN-HSA: {{flat|global}}_store_dwordx2 v{{\[[0-9]+:[0-9]+\]}}, v{{\[}}[[LO]]:[[HI]]] 100 101; EG: MEM_RAT_CACHELESS STORE_RAW T{{[0-9]+}}.XY 102define amdgpu_kernel void @global_zextload_i32_to_i64(i64 addrspace(1)* %out, i32 addrspace(1)* %in) #0 { 103 %ld = load i32, i32 addrspace(1)* %in 104 %ext = zext i32 %ld to i64 105 store i64 %ext, i64 addrspace(1)* %out 106 ret void 107} 108 109; FUNC-LABEL: {{^}}global_sextload_i32_to_i64: 110; GCN-NOHSA: buffer_load_dword v[[LO:[0-9]+]] 111; GCN-HSA: {{flat|global}}_load_dword v[[LO:[0-9]+]] 112; GCN: v_ashrrev_i32_e32 v[[HI:[0-9]+]], 31, v[[LO]] 113; GCN-NOHSA: buffer_store_dwordx2 v{{\[}}[[LO]]:[[HI]]{{\]}} 114; GCN-HSA: {{flat|global}}_store_dwordx2 v{{\[[0-9]+:[0-9]+\]}}, v{{\[}}[[LO]]:[[HI]]{{\]}} 115 116 117; EG: MEM_RAT 118; EG: VTX_READ_32 119; EG: ASHR {{[* ]*}}T{{[0-9]\.[XYZW]}}, T{{[0-9]\.[XYZW]}}, literal. 120; EG: 31 121define amdgpu_kernel void @global_sextload_i32_to_i64(i64 addrspace(1)* %out, i32 addrspace(1)* %in) #0 { 122 %ld = load i32, i32 addrspace(1)* %in 123 %ext = sext i32 %ld to i64 124 store i64 %ext, i64 addrspace(1)* %out 125 ret void 126} 127 128; FUNC-LABEL: {{^}}global_zextload_v1i32_to_v1i64: 129; GCN-NOHSA: buffer_load_dword 130; GCN-NOHSA: buffer_store_dwordx2 131 132; GCN-HSA: {{flat|global}}_load_dword 133; GCN-HSA: {{flat|global}}_store_dwordx2 134define amdgpu_kernel void @global_zextload_v1i32_to_v1i64(<1 x i64> addrspace(1)* %out, <1 x i32> addrspace(1)* %in) #0 { 135 %ld = load <1 x i32>, <1 x i32> addrspace(1)* %in 136 %ext = zext <1 x i32> %ld to <1 x i64> 137 store <1 x i64> %ext, <1 x i64> addrspace(1)* %out 138 ret void 139} 140 141; FUNC-LABEL: {{^}}global_sextload_v1i32_to_v1i64: 142; GCN-NOHSA: buffer_load_dword v[[LO:[0-9]+]] 143; GCN-HSA: {{flat|global}}_load_dword v[[LO:[0-9]+]] 144; GCN: v_ashrrev_i32_e32 v[[HI:[0-9]+]], 31, v[[LO]] 145; GCN-NOHSA: buffer_store_dwordx2 v{{\[}}[[LO]]:[[HI]]{{\]}} 146; GCN-HSA: {{flat|global}}_store_dwordx2 v{{\[[0-9]+:[0-9]+\]}}, v{{\[}}[[LO]]:[[HI]]{{\]}} 147define amdgpu_kernel void @global_sextload_v1i32_to_v1i64(<1 x i64> addrspace(1)* %out, <1 x i32> addrspace(1)* %in) #0 { 148 %ld = load <1 x i32>, <1 x i32> addrspace(1)* %in 149 %ext = sext <1 x i32> %ld to <1 x i64> 150 store <1 x i64> %ext, <1 x i64> addrspace(1)* %out 151 ret void 152} 153 154; FUNC-LABEL: {{^}}global_zextload_v2i32_to_v2i64: 155; GCN-NOHSA: buffer_load_dwordx2 156; GCN-NOHSA: buffer_store_dwordx4 157 158; GCN-HSA: {{flat|global}}_load_dwordx2 159; GCN-HSA: {{flat|global}}_store_dwordx4 160define amdgpu_kernel void @global_zextload_v2i32_to_v2i64(<2 x i64> addrspace(1)* %out, <2 x i32> addrspace(1)* %in) #0 { 161 %ld = load <2 x i32>, <2 x i32> addrspace(1)* %in 162 %ext = zext <2 x i32> %ld to <2 x i64> 163 store <2 x i64> %ext, <2 x i64> addrspace(1)* %out 164 ret void 165} 166 167; FUNC-LABEL: {{^}}global_sextload_v2i32_to_v2i64: 168; GCN-NOHSA: buffer_load_dwordx2 169; GCN-HSA: {{flat|global}}_load_dwordx2 170 171; GCN-DAG: v_ashrrev_i32 172; GCN-DAG: v_ashrrev_i32 173 174; GCN-NOHSA-DAG: buffer_store_dwordx4 175; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 176define amdgpu_kernel void @global_sextload_v2i32_to_v2i64(<2 x i64> addrspace(1)* %out, <2 x i32> addrspace(1)* %in) #0 { 177 %ld = load <2 x i32>, <2 x i32> addrspace(1)* %in 178 %ext = sext <2 x i32> %ld to <2 x i64> 179 store <2 x i64> %ext, <2 x i64> addrspace(1)* %out 180 ret void 181} 182 183; FUNC-LABEL: {{^}}global_zextload_v4i32_to_v4i64: 184; GCN-NOHSA: buffer_load_dwordx4 185; GCN-NOHSA: buffer_store_dwordx4 186; GCN-NOHSA: buffer_store_dwordx4 187 188; GCN-HSA: {{flat|global}}_load_dwordx4 189; GCN-HSA: {{flat|global}}_store_dwordx4 190; GCN-HSA: {{flat|global}}_store_dwordx4 191define amdgpu_kernel void @global_zextload_v4i32_to_v4i64(<4 x i64> addrspace(1)* %out, <4 x i32> addrspace(1)* %in) #0 { 192 %ld = load <4 x i32>, <4 x i32> addrspace(1)* %in 193 %ext = zext <4 x i32> %ld to <4 x i64> 194 store <4 x i64> %ext, <4 x i64> addrspace(1)* %out 195 ret void 196} 197 198; FUNC-LABEL: {{^}}global_sextload_v4i32_to_v4i64: 199; GCN-NOHSA: buffer_load_dwordx4 200; GCN-HSA: {{flat|global}}_load_dwordx4 201 202; GCN-DAG: v_ashrrev_i32 203; GCN-DAG: v_ashrrev_i32 204; GCN-DAG: v_ashrrev_i32 205; GCN-DAG: v_ashrrev_i32 206 207; GCN-NOHSA-DAG: buffer_store_dwordx4 208; GCN-NOHSA-DAG: buffer_store_dwordx4 209 210; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 211; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 212define amdgpu_kernel void @global_sextload_v4i32_to_v4i64(<4 x i64> addrspace(1)* %out, <4 x i32> addrspace(1)* %in) #0 { 213 %ld = load <4 x i32>, <4 x i32> addrspace(1)* %in 214 %ext = sext <4 x i32> %ld to <4 x i64> 215 store <4 x i64> %ext, <4 x i64> addrspace(1)* %out 216 ret void 217} 218 219; FUNC-LABEL: {{^}}global_zextload_v8i32_to_v8i64: 220; GCN-NOHSA: buffer_load_dwordx4 221; GCN-NOHSA: buffer_load_dwordx4 222 223; GCN-HSA: {{flat|global}}_load_dwordx4 224; GCN-HSA: {{flat|global}}_load_dwordx4 225 226; GCN-NOHSA-DAG: buffer_store_dwordx4 227; GCN-NOHSA-DAG: buffer_store_dwordx4 228; GCN-NOHSA-DAG: buffer_store_dwordx4 229; GCN-NOHSA-DAG: buffer_store_dwordx4 230 231; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 232; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 233; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 234; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 235define amdgpu_kernel void @global_zextload_v8i32_to_v8i64(<8 x i64> addrspace(1)* %out, <8 x i32> addrspace(1)* %in) #0 { 236 %ld = load <8 x i32>, <8 x i32> addrspace(1)* %in 237 %ext = zext <8 x i32> %ld to <8 x i64> 238 store <8 x i64> %ext, <8 x i64> addrspace(1)* %out 239 ret void 240} 241 242; FUNC-LABEL: {{^}}global_sextload_v8i32_to_v8i64: 243; GCN-NOHSA: buffer_load_dwordx4 244; GCN-NOHSA: buffer_load_dwordx4 245 246; GCN-HSA: {{flat|global}}_load_dwordx4 247; GCN-HSA: {{flat|global}}_load_dwordx4 248 249; GCN-DAG: v_ashrrev_i32 250; GCN-DAG: v_ashrrev_i32 251; GCN-DAG: v_ashrrev_i32 252; GCN-DAG: v_ashrrev_i32 253; GCN-DAG: v_ashrrev_i32 254; GCN-DAG: v_ashrrev_i32 255; GCN-DAG: v_ashrrev_i32 256; GCN-DAG: v_ashrrev_i32 257 258; GCN-NOHSA-DAG: buffer_store_dwordx4 259; GCN-NOHSA-DAG: buffer_store_dwordx4 260; GCN-NOHSA-DAG: buffer_store_dwordx4 261; GCN-NOHSA-DAG: buffer_store_dwordx4 262 263; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 264; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 265; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 266; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 267define amdgpu_kernel void @global_sextload_v8i32_to_v8i64(<8 x i64> addrspace(1)* %out, <8 x i32> addrspace(1)* %in) #0 { 268 %ld = load <8 x i32>, <8 x i32> addrspace(1)* %in 269 %ext = sext <8 x i32> %ld to <8 x i64> 270 store <8 x i64> %ext, <8 x i64> addrspace(1)* %out 271 ret void 272} 273 274; FUNC-LABEL: {{^}}global_sextload_v16i32_to_v16i64: 275; GCN-NOHSA: buffer_load_dwordx4 276; GCN-NOHSA: buffer_load_dwordx4 277; GCN-NOHSA: buffer_load_dwordx4 278; GCN-NOHSA: buffer_load_dwordx4 279 280; GCN-HSA: {{flat|global}}_load_dwordx4 281; GCN-HSA: {{flat|global}}_load_dwordx4 282; GCN-HSA: {{flat|global}}_load_dwordx4 283; GCN-HSA: {{flat|global}}_load_dwordx4 284 285 286; GCN-DAG: v_ashrrev_i32 287; GCN-DAG: v_ashrrev_i32 288; GCN-DAG: v_ashrrev_i32 289; GCN-DAG: v_ashrrev_i32 290; GCN-NOHSA-DAG: buffer_store_dwordx4 291; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 292 293; GCN-DAG: v_ashrrev_i32 294; GCN-DAG: v_ashrrev_i32 295; GCN-DAG: v_ashrrev_i32 296; GCN-DAG: v_ashrrev_i32 297; GCN-NOHSA-DAG: buffer_store_dwordx4 298; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 299 300; GCN-DAG: v_ashrrev_i32 301; GCN-DAG: v_ashrrev_i32 302; GCN-DAG: v_ashrrev_i32 303; GCN-DAG: v_ashrrev_i32 304; GCN-NOHSA-DAG: buffer_store_dwordx4 305; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 306 307; GCN-DAG: v_ashrrev_i32 308; GCN-DAG: v_ashrrev_i32 309; GCN-DAG: v_ashrrev_i32 310; GCN-DAG: v_ashrrev_i32 311; GCN-NOHSA-DAG: buffer_store_dwordx4 312; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 313define amdgpu_kernel void @global_sextload_v16i32_to_v16i64(<16 x i64> addrspace(1)* %out, <16 x i32> addrspace(1)* %in) #0 { 314 %ld = load <16 x i32>, <16 x i32> addrspace(1)* %in 315 %ext = sext <16 x i32> %ld to <16 x i64> 316 store <16 x i64> %ext, <16 x i64> addrspace(1)* %out 317 ret void 318} 319 320; FUNC-LABEL: {{^}}global_zextload_v16i32_to_v16i64 321; GCN-NOHSA: buffer_load_dwordx4 322; GCN-NOHSA: buffer_load_dwordx4 323; GCN-NOHSA: buffer_load_dwordx4 324; GCN-NOHSA: buffer_load_dwordx4 325 326; GCN-HSA: {{flat|global}}_load_dwordx4 327; GCN-HSA: {{flat|global}}_load_dwordx4 328; GCN-HSA: {{flat|global}}_load_dwordx4 329; GCN-HSA: {{flat|global}}_load_dwordx4 330 331; GCN-NOHSA: buffer_store_dwordx4 332; GCN-NOHSA: buffer_store_dwordx4 333; GCN-NOHSA: buffer_store_dwordx4 334; GCN-NOHSA: buffer_store_dwordx4 335; GCN-NOHSA: buffer_store_dwordx4 336; GCN-NOHSA: buffer_store_dwordx4 337; GCN-NOHSA: buffer_store_dwordx4 338; GCN-NOHSA: buffer_store_dwordx4 339 340; GCN-HSA: {{flat|global}}_store_dwordx4 341; GCN-HSA: {{flat|global}}_store_dwordx4 342; GCN-HSA: {{flat|global}}_store_dwordx4 343; GCN-HSA: {{flat|global}}_store_dwordx4 344; GCN-HSA: {{flat|global}}_store_dwordx4 345; GCN-HSA: {{flat|global}}_store_dwordx4 346; GCN-HSA: {{flat|global}}_store_dwordx4 347; GCN-HSA: {{flat|global}}_store_dwordx4 348define amdgpu_kernel void @global_zextload_v16i32_to_v16i64(<16 x i64> addrspace(1)* %out, <16 x i32> addrspace(1)* %in) #0 { 349 %ld = load <16 x i32>, <16 x i32> addrspace(1)* %in 350 %ext = zext <16 x i32> %ld to <16 x i64> 351 store <16 x i64> %ext, <16 x i64> addrspace(1)* %out 352 ret void 353} 354 355; FUNC-LABEL: {{^}}global_sextload_v32i32_to_v32i64: 356 357; GCN-NOHSA: buffer_load_dwordx4 358; GCN-NOHSA: buffer_load_dwordx4 359; GCN-NOHSA: buffer_load_dwordx4 360; GCN-NOHSA: buffer_load_dwordx4 361; GCN-NOHSA: buffer_load_dwordx4 362; GCN-NOHSA: buffer_load_dwordx4 363; GCN-NOHSA: buffer_load_dwordx4 364; GCN-NOHSA-DAG: buffer_load_dwordx4 365 366; GCN-HSA: {{flat|global}}_load_dwordx4 367; GCN-HSA: {{flat|global}}_load_dwordx4 368; GCN-HSA: {{flat|global}}_load_dwordx4 369; GCN-HSA: {{flat|global}}_load_dwordx4 370; GCN-HSA: {{flat|global}}_load_dwordx4 371; GCN-HSA: {{flat|global}}_load_dwordx4 372; GCN-HSA: {{flat|global}}_load_dwordx4 373; GCN-HSA: {{flat|global}}_load_dwordx4 374 375; GCN-DAG: v_ashrrev_i32 376; GCN-DAG: v_ashrrev_i32 377; GCN-DAG: v_ashrrev_i32 378; GCN-DAG: v_ashrrev_i32 379; GCN-DAG: v_ashrrev_i32 380; GCN-DAG: v_ashrrev_i32 381; GCN-DAG: v_ashrrev_i32 382; GCN-DAG: v_ashrrev_i32 383; GCN-DAG: v_ashrrev_i32 384; GCN-DAG: v_ashrrev_i32 385; GCN-DAG: v_ashrrev_i32 386; GCN-DAG: v_ashrrev_i32 387; GCN-DAG: v_ashrrev_i32 388; GCN-DAG: v_ashrrev_i32 389; GCN-DAG: v_ashrrev_i32 390; GCN-DAG: v_ashrrev_i32 391; GCN-DAG: v_ashrrev_i32 392; GCN-DAG: v_ashrrev_i32 393; GCN-DAG: v_ashrrev_i32 394; GCN-DAG: v_ashrrev_i32 395; GCN-DAG: v_ashrrev_i32 396; GCN-DAG: v_ashrrev_i32 397; GCN-DAG: v_ashrrev_i32 398; GCN-DAG: v_ashrrev_i32 399; GCN-DAG: v_ashrrev_i32 400; GCN-DAG: v_ashrrev_i32 401; GCN-DAG: v_ashrrev_i32 402; GCN-DAG: v_ashrrev_i32 403; GCN-DAG: v_ashrrev_i32 404; GCN-DAG: v_ashrrev_i32 405; GCN-DAG: v_ashrrev_i32 406; GCN-DAG: v_ashrrev_i32 407 408; GCN-NOHSA: buffer_store_dwordx4 409; GCN-NOHSA: buffer_store_dwordx4 410; GCN-NOHSA: buffer_store_dwordx4 411; GCN-NOHSA: buffer_store_dwordx4 412 413; GCN-NOHSA: buffer_store_dwordx4 414; GCN-NOHSA: buffer_store_dwordx4 415; GCN-NOHSA: buffer_store_dwordx4 416; GCN-NOHSA: buffer_store_dwordx4 417 418; GCN-NOHSA: buffer_store_dwordx4 419; GCN-NOHSA: buffer_store_dwordx4 420; GCN-NOHSA: buffer_store_dwordx4 421; GCN-NOHSA: buffer_store_dwordx4 422 423; GCN-NOHSA: buffer_store_dwordx4 424; GCN-NOHSA: buffer_store_dwordx4 425; GCN-NOHSA: buffer_store_dwordx4 426; GCN-NOHSA: buffer_store_dwordx4 427 428; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 429; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 430; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 431; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 432 433; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 434; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 435; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 436; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 437 438; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 439; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 440; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 441; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 442 443; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 444; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 445; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 446; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 447 448define amdgpu_kernel void @global_sextload_v32i32_to_v32i64(<32 x i64> addrspace(1)* %out, <32 x i32> addrspace(1)* %in) #0 { 449 %ld = load <32 x i32>, <32 x i32> addrspace(1)* %in 450 %ext = sext <32 x i32> %ld to <32 x i64> 451 store <32 x i64> %ext, <32 x i64> addrspace(1)* %out 452 ret void 453} 454 455; FUNC-LABEL: {{^}}global_zextload_v32i32_to_v32i64: 456; GCN-NOHSA: buffer_load_dwordx4 457; GCN-NOHSA: buffer_load_dwordx4 458; GCN-NOHSA: buffer_load_dwordx4 459; GCN-NOHSA: buffer_load_dwordx4 460; GCN-NOHSA: buffer_load_dwordx4 461; GCN-NOHSA: buffer_load_dwordx4 462; GCN-NOHSA: buffer_load_dwordx4 463; GCN-NOHSA: buffer_load_dwordx4 464 465; GCN-HSA: {{flat|global}}_load_dwordx4 466; GCN-HSA: {{flat|global}}_load_dwordx4 467; GCN-HSA: {{flat|global}}_load_dwordx4 468; GCN-HSA: {{flat|global}}_load_dwordx4 469; GCN-HSA: {{flat|global}}_load_dwordx4 470; GCN-HSA: {{flat|global}}_load_dwordx4 471; GCN-HSA: {{flat|global}}_load_dwordx4 472; GCN-HSA: {{flat|global}}_load_dwordx4 473 474 475; GCN-NOHSA-DAG: buffer_store_dwordx4 476; GCN-NOHSA-DAG: buffer_store_dwordx4 477; GCN-NOHSA-DAG: buffer_store_dwordx4 478; GCN-NOHSA-DAG: buffer_store_dwordx4 479 480; GCN-NOHSA-DAG: buffer_store_dwordx4 481; GCN-NOHSA-DAG: buffer_store_dwordx4 482; GCN-NOHSA-DAG: buffer_store_dwordx4 483; GCN-NOHSA-DAG: buffer_store_dwordx4 484 485; GCN-NOHSA-DAG: buffer_store_dwordx4 486; GCN-NOHSA-DAG: buffer_store_dwordx4 487; GCN-NOHSA-DAG: buffer_store_dwordx4 488; GCN-NOHSA-DAG: buffer_store_dwordx4 489 490; GCN-NOHSA-DAG: buffer_store_dwordx4 491; GCN-NOHSA-DAG: buffer_store_dwordx4 492; GCN-NOHSA-DAG: buffer_store_dwordx4 493; GCN-NOHSA-DAG: buffer_store_dwordx4 494 495 496; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 497; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 498; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 499; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 500 501; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 502; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 503; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 504; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 505 506; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 507; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 508; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 509; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 510 511; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 512; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 513; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 514; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 515define amdgpu_kernel void @global_zextload_v32i32_to_v32i64(<32 x i64> addrspace(1)* %out, <32 x i32> addrspace(1)* %in) #0 { 516 %ld = load <32 x i32>, <32 x i32> addrspace(1)* %in 517 %ext = zext <32 x i32> %ld to <32 x i64> 518 store <32 x i64> %ext, <32 x i64> addrspace(1)* %out 519 ret void 520} 521 522; FUNC-LABEL: {{^}}global_load_v32i32: 523; GCN-NOHSA: buffer_load_dwordx4 524; GCN-NOHSA: buffer_load_dwordx4 525; GCN-NOHSA: buffer_load_dwordx4 526; GCN-NOHSA: buffer_load_dwordx4 527; GCN-NOHSA: buffer_load_dwordx4 528; GCN-NOHSA: buffer_load_dwordx4 529; GCN-NOHSA: buffer_load_dwordx4 530; GCN-NOHSA: buffer_load_dwordx4 531 532; GCN-HSA: {{flat|global}}_load_dwordx4 533; GCN-HSA: {{flat|global}}_load_dwordx4 534; GCN-HSA: {{flat|global}}_load_dwordx4 535; GCN-HSA: {{flat|global}}_load_dwordx4 536; GCN-HSA: {{flat|global}}_load_dwordx4 537; GCN-HSA: {{flat|global}}_load_dwordx4 538; GCN-HSA: {{flat|global}}_load_dwordx4 539; GCN-HSA: {{flat|global}}_load_dwordx4 540 541 542; GCN-NOHSA-DAG: buffer_store_dwordx4 543; GCN-NOHSA-DAG: buffer_store_dwordx4 544; GCN-NOHSA-DAG: buffer_store_dwordx4 545; GCN-NOHSA-DAG: buffer_store_dwordx4 546 547; GCN-NOHSA-DAG: buffer_store_dwordx4 548; GCN-NOHSA-DAG: buffer_store_dwordx4 549; GCN-NOHSA-DAG: buffer_store_dwordx4 550; GCN-NOHSA-DAG: buffer_store_dwordx4 551 552; GCN-NOHSA-DAG: buffer_store_dwordx4 553; GCN-NOHSA-DAG: buffer_store_dwordx4 554; GCN-NOHSA-DAG: buffer_store_dwordx4 555; GCN-NOHSA-DAG: buffer_store_dwordx4 556 557; GCN-NOHSA-DAG: buffer_store_dwordx4 558; GCN-NOHSA-DAG: buffer_store_dwordx4 559; GCN-NOHSA-DAG: buffer_store_dwordx4 560; GCN-NOHSA-DAG: buffer_store_dwordx4 561 562; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 563; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 564; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 565; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 566 567; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 568; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 569; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 570; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 571 572; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 573; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 574; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 575; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 576 577; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 578; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 579; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 580; GCN-HSA-DAG: {{flat|global}}_store_dwordx4 581define amdgpu_kernel void @global_load_v32i32(<32 x i32> addrspace(1)* %out, <32 x i32> addrspace(1)* %in) #0 { 582 %ld = load <32 x i32>, <32 x i32> addrspace(1)* %in 583 store <32 x i32> %ld, <32 x i32> addrspace(1)* %out 584 ret void 585} 586 587attributes #0 = { nounwind } 588