1; RUN: llc -mtriple=amdgcn -verify-machineinstrs < %s | FileCheck -check-prefix=FUNC %s 2; RUN: llc -mtriple=amdgcn-amdhsa -mcpu=kaveri -verify-machineinstrs < %s | FileCheck -check-prefix=FUNC %s 3; RUN: llc -mtriple=amdgcn -mcpu=tonga -mattr=-flat-for-global -verify-machineinstrs < %s | FileCheck -check-prefix=FUNC %s 4; RUN: llc -mtriple=r600 -mcpu=redwood < %s | FileCheck --check-prefixes=EG,FUNC %s 5 6; FIXME: This seems to not ever actually become an extload 7; FUNC-LABEL: {{^}}global_anyext_load_i8: 8; GCN: buffer_load_dword v{{[0-9]+}} 9; GCN: buffer_store_dword v{{[0-9]+}} 10 11; EG: MEM_RAT_CACHELESS STORE_RAW [[VAL:T[0-9]+.[XYZW]]], 12; EG: VTX_READ_32 [[VAL]] 13define amdgpu_kernel void @global_anyext_load_i8(ptr addrspace(1) nocapture noalias %out, ptr addrspace(1) nocapture noalias %src) nounwind { 14 %load = load i32, ptr addrspace(1) %src 15 %x = bitcast i32 %load to <4 x i8> 16 store <4 x i8> %x, ptr addrspace(1) %out 17 ret void 18} 19 20; FUNC-LABEL: {{^}}global_anyext_load_i16: 21; GCN: buffer_load_dword v{{[0-9]+}} 22; GCN: buffer_store_dword v{{[0-9]+}} 23 24; EG: MEM_RAT_CACHELESS STORE_RAW [[VAL:T[0-9]+.[XYZW]]], 25; EG: VTX_READ_32 [[VAL]] 26define amdgpu_kernel void @global_anyext_load_i16(ptr addrspace(1) nocapture noalias %out, ptr addrspace(1) nocapture noalias %src) nounwind { 27 %load = load i32, ptr addrspace(1) %src 28 %x = bitcast i32 %load to <2 x i16> 29 store <2 x i16> %x, ptr addrspace(1) %out 30 ret void 31} 32 33; FUNC-LABEL: {{^}}local_anyext_load_i8: 34; GCN: ds_read_b32 v{{[0-9]+}} 35; GCN: ds_write_b32 v{{[0-9]+}} 36 37; EG: LDS_READ_RET {{.*}}, [[VAL:T[0-9]+.[XYZW]]] 38; EG: LDS_WRITE * [[VAL]] 39define amdgpu_kernel void @local_anyext_load_i8(ptr addrspace(3) nocapture noalias %out, ptr addrspace(3) nocapture noalias %src) nounwind { 40 %load = load i32, ptr addrspace(3) %src 41 %x = bitcast i32 %load to <4 x i8> 42 store <4 x i8> %x, ptr addrspace(3) %out 43 ret void 44} 45 46; FUNC-LABEL: {{^}}local_anyext_load_i16: 47; GCN: ds_read_b32 v{{[0-9]+}} 48; GCN: ds_write_b32 v{{[0-9]+}} 49 50; EG: LDS_READ_RET {{.*}}, [[VAL:T[0-9]+.[XYZW]]] 51; EG: LDS_WRITE * [[VAL]] 52define amdgpu_kernel void @local_anyext_load_i16(ptr addrspace(3) nocapture noalias %out, ptr addrspace(3) nocapture noalias %src) nounwind { 53 %load = load i32, ptr addrspace(3) %src 54 %x = bitcast i32 %load to <2 x i16> 55 store <2 x i16> %x, ptr addrspace(3) %out 56 ret void 57} 58