brintos

brintos / llvm-project-archived public Read only

0
0
Text · 11.4 KiB · ca84288 Raw
303 lines · plain
1; RUN:  llc -amdgpu-scalarize-global-loads=false  -mtriple=amdgcn < %s | FileCheck -check-prefix=SI -check-prefix=FUNC %s2; RUN:  llc -amdgpu-scalarize-global-loads=false  -mtriple=amdgcn -mcpu=tonga -mattr=-flat-for-global < %s | FileCheck -check-prefix=SI -check-prefix=FUNC %s3; XUN: llc -mtriple=r600 -mcpu=cypress < %s | FileCheck -check-prefix=EG -check-prefix=FUNC %s4; FIXME: cypress is broken because the bigger testcases spill and it's not implemented5 6; FUNC-LABEL: {{^}}zextload_global_i16_to_i32:7; SI: buffer_load_ushort8; SI: buffer_store_dword9; SI: s_endpgm10define amdgpu_kernel void @zextload_global_i16_to_i32(ptr addrspace(1) %out, ptr addrspace(1) %in) nounwind {11  %a = load i16, ptr addrspace(1) %in12  %ext = zext i16 %a to i3213  store i32 %ext, ptr addrspace(1) %out14  ret void15}16 17; FUNC-LABEL: {{^}}sextload_global_i16_to_i32:18; SI: buffer_load_sshort19; SI: buffer_store_dword20; SI: s_endpgm21define amdgpu_kernel void @sextload_global_i16_to_i32(ptr addrspace(1) %out, ptr addrspace(1) %in) nounwind {22  %a = load i16, ptr addrspace(1) %in23  %ext = sext i16 %a to i3224  store i32 %ext, ptr addrspace(1) %out25  ret void26}27 28; FUNC-LABEL: {{^}}zextload_global_v1i16_to_v1i32:29; SI: buffer_load_ushort30; SI: s_endpgm31define amdgpu_kernel void @zextload_global_v1i16_to_v1i32(ptr addrspace(1) %out, ptr addrspace(1) nocapture %in) nounwind {32  %load = load <1 x i16>, ptr addrspace(1) %in33  %ext = zext <1 x i16> %load to <1 x i32>34  store <1 x i32> %ext, ptr addrspace(1) %out35  ret void36}37 38; FUNC-LABEL: {{^}}sextload_global_v1i16_to_v1i32:39; SI: buffer_load_sshort40; SI: s_endpgm41define amdgpu_kernel void @sextload_global_v1i16_to_v1i32(ptr addrspace(1) %out, ptr addrspace(1) nocapture %in) nounwind {42  %load = load <1 x i16>, ptr addrspace(1) %in43  %ext = sext <1 x i16> %load to <1 x i32>44  store <1 x i32> %ext, ptr addrspace(1) %out45  ret void46}47 48; FUNC-LABEL: {{^}}zextload_global_v2i16_to_v2i32:49; SI: s_endpgm50define amdgpu_kernel void @zextload_global_v2i16_to_v2i32(ptr addrspace(1) %out, ptr addrspace(1) nocapture %in) nounwind {51  %load = load <2 x i16>, ptr addrspace(1) %in52  %ext = zext <2 x i16> %load to <2 x i32>53  store <2 x i32> %ext, ptr addrspace(1) %out54  ret void55}56 57; FUNC-LABEL: {{^}}sextload_global_v2i16_to_v2i32:58; SI: s_endpgm59define amdgpu_kernel void @sextload_global_v2i16_to_v2i32(ptr addrspace(1) %out, ptr addrspace(1) nocapture %in) nounwind {60  %load = load <2 x i16>, ptr addrspace(1) %in61  %ext = sext <2 x i16> %load to <2 x i32>62  store <2 x i32> %ext, ptr addrspace(1) %out63  ret void64}65 66; FUNC-LABEL: {{^}}zextload_global_v4i16_to_v4i32:67; SI: s_endpgm68define amdgpu_kernel void @zextload_global_v4i16_to_v4i32(ptr addrspace(1) %out, ptr addrspace(1) nocapture %in) nounwind {69  %load = load <4 x i16>, ptr addrspace(1) %in70  %ext = zext <4 x i16> %load to <4 x i32>71  store <4 x i32> %ext, ptr addrspace(1) %out72  ret void73}74 75; FUNC-LABEL: {{^}}sextload_global_v4i16_to_v4i32:76; SI: s_endpgm77define amdgpu_kernel void @sextload_global_v4i16_to_v4i32(ptr addrspace(1) %out, ptr addrspace(1) nocapture %in) nounwind {78  %load = load <4 x i16>, ptr addrspace(1) %in79  %ext = sext <4 x i16> %load to <4 x i32>80  store <4 x i32> %ext, ptr addrspace(1) %out81  ret void82}83 84; FUNC-LABEL: {{^}}zextload_global_v8i16_to_v8i32:85; SI: s_endpgm86define amdgpu_kernel void @zextload_global_v8i16_to_v8i32(ptr addrspace(1) %out, ptr addrspace(1) nocapture %in) nounwind {87  %load = load <8 x i16>, ptr addrspace(1) %in88  %ext = zext <8 x i16> %load to <8 x i32>89  store <8 x i32> %ext, ptr addrspace(1) %out90  ret void91}92 93; FUNC-LABEL: {{^}}sextload_global_v8i16_to_v8i32:94; SI: s_endpgm95define amdgpu_kernel void @sextload_global_v8i16_to_v8i32(ptr addrspace(1) %out, ptr addrspace(1) nocapture %in) nounwind {96  %load = load <8 x i16>, ptr addrspace(1) %in97  %ext = sext <8 x i16> %load to <8 x i32>98  store <8 x i32> %ext, ptr addrspace(1) %out99  ret void100}101 102; FUNC-LABEL: {{^}}zextload_global_v16i16_to_v16i32:103; SI: s_endpgm104define amdgpu_kernel void @zextload_global_v16i16_to_v16i32(ptr addrspace(1) %out, ptr addrspace(1) nocapture %in) nounwind {105  %load = load <16 x i16>, ptr addrspace(1) %in106  %ext = zext <16 x i16> %load to <16 x i32>107  store <16 x i32> %ext, ptr addrspace(1) %out108  ret void109}110 111; FUNC-LABEL: {{^}}sextload_global_v16i16_to_v16i32:112; SI: s_endpgm113define amdgpu_kernel void @sextload_global_v16i16_to_v16i32(ptr addrspace(1) %out, ptr addrspace(1) nocapture %in) nounwind {114  %load = load <16 x i16>, ptr addrspace(1) %in115  %ext = sext <16 x i16> %load to <16 x i32>116  store <16 x i32> %ext, ptr addrspace(1) %out117  ret void118}119 120; FUNC-LABEL: {{^}}zextload_global_v32i16_to_v32i32:121; SI: s_endpgm122define amdgpu_kernel void @zextload_global_v32i16_to_v32i32(ptr addrspace(1) %out, ptr addrspace(1) nocapture %in) nounwind {123  %load = load <32 x i16>, ptr addrspace(1) %in124  %ext = zext <32 x i16> %load to <32 x i32>125  store <32 x i32> %ext, ptr addrspace(1) %out126  ret void127}128 129; FUNC-LABEL: {{^}}sextload_global_v32i16_to_v32i32:130; SI: s_endpgm131define amdgpu_kernel void @sextload_global_v32i16_to_v32i32(ptr addrspace(1) %out, ptr addrspace(1) nocapture %in) nounwind {132  %load = load <32 x i16>, ptr addrspace(1) %in133  %ext = sext <32 x i16> %load to <32 x i32>134  store <32 x i32> %ext, ptr addrspace(1) %out135  ret void136}137 138; FUNC-LABEL: {{^}}zextload_global_v64i16_to_v64i32:139; SI: s_endpgm140define amdgpu_kernel void @zextload_global_v64i16_to_v64i32(ptr addrspace(1) %out, ptr addrspace(1) nocapture %in) nounwind {141  %load = load <64 x i16>, ptr addrspace(1) %in142  %ext = zext <64 x i16> %load to <64 x i32>143  store <64 x i32> %ext, ptr addrspace(1) %out144  ret void145}146 147; FUNC-LABEL: {{^}}sextload_global_v64i16_to_v64i32:148; SI: s_endpgm149define amdgpu_kernel void @sextload_global_v64i16_to_v64i32(ptr addrspace(1) %out, ptr addrspace(1) nocapture %in) nounwind {150  %load = load <64 x i16>, ptr addrspace(1) %in151  %ext = sext <64 x i16> %load to <64 x i32>152  store <64 x i32> %ext, ptr addrspace(1) %out153  ret void154}155 156; FUNC-LABEL: {{^}}zextload_global_i16_to_i64:157; SI-DAG: buffer_load_ushort v[[LO:[0-9]+]],158; SI-DAG: v_mov_b32_e32 v[[HI:[0-9]+]], 0{{$}}159; SI: buffer_store_dwordx2 v[[[LO]]:[[HI]]]160define amdgpu_kernel void @zextload_global_i16_to_i64(ptr addrspace(1) %out, ptr addrspace(1) %in) nounwind {161  %a = load i16, ptr addrspace(1) %in162  %ext = zext i16 %a to i64163  store i64 %ext, ptr addrspace(1) %out164  ret void165}166 167; FUNC-LABEL: {{^}}sextload_global_i16_to_i64:168; VI: buffer_load_ushort [[LOAD:v[0-9]+]], s[{{[0-9]+:[0-9]+}}], 0169; VI: v_ashrrev_i32_e32 v{{[0-9]+}}, 31, [[LOAD]]170; VI: buffer_store_dwordx2 v[{{[0-9]+:[0-9]+}}], s[{{[0-9]+:[0-9]+}}], 0171define amdgpu_kernel void @sextload_global_i16_to_i64(ptr addrspace(1) %out, ptr addrspace(1) %in) nounwind {172  %a = load i16, ptr addrspace(1) %in173  %ext = sext i16 %a to i64174  store i64 %ext, ptr addrspace(1) %out175  ret void176}177 178; FUNC-LABEL: {{^}}zextload_global_v1i16_to_v1i64:179; SI: s_endpgm180define amdgpu_kernel void @zextload_global_v1i16_to_v1i64(ptr addrspace(1) %out, ptr addrspace(1) nocapture %in) nounwind {181  %load = load <1 x i16>, ptr addrspace(1) %in182  %ext = zext <1 x i16> %load to <1 x i64>183  store <1 x i64> %ext, ptr addrspace(1) %out184  ret void185}186 187; FUNC-LABEL: {{^}}sextload_global_v1i16_to_v1i64:188; SI: s_endpgm189define amdgpu_kernel void @sextload_global_v1i16_to_v1i64(ptr addrspace(1) %out, ptr addrspace(1) nocapture %in) nounwind {190  %load = load <1 x i16>, ptr addrspace(1) %in191  %ext = sext <1 x i16> %load to <1 x i64>192  store <1 x i64> %ext, ptr addrspace(1) %out193  ret void194}195 196; FUNC-LABEL: {{^}}zextload_global_v2i16_to_v2i64:197; SI: s_endpgm198define amdgpu_kernel void @zextload_global_v2i16_to_v2i64(ptr addrspace(1) %out, ptr addrspace(1) nocapture %in) nounwind {199  %load = load <2 x i16>, ptr addrspace(1) %in200  %ext = zext <2 x i16> %load to <2 x i64>201  store <2 x i64> %ext, ptr addrspace(1) %out202  ret void203}204 205; FUNC-LABEL: {{^}}sextload_global_v2i16_to_v2i64:206; SI: s_endpgm207define amdgpu_kernel void @sextload_global_v2i16_to_v2i64(ptr addrspace(1) %out, ptr addrspace(1) nocapture %in) nounwind {208  %load = load <2 x i16>, ptr addrspace(1) %in209  %ext = sext <2 x i16> %load to <2 x i64>210  store <2 x i64> %ext, ptr addrspace(1) %out211  ret void212}213 214; FUNC-LABEL: {{^}}zextload_global_v4i16_to_v4i64:215; SI: s_endpgm216define amdgpu_kernel void @zextload_global_v4i16_to_v4i64(ptr addrspace(1) %out, ptr addrspace(1) nocapture %in) nounwind {217  %load = load <4 x i16>, ptr addrspace(1) %in218  %ext = zext <4 x i16> %load to <4 x i64>219  store <4 x i64> %ext, ptr addrspace(1) %out220  ret void221}222 223; FUNC-LABEL: {{^}}sextload_global_v4i16_to_v4i64:224; SI: s_endpgm225define amdgpu_kernel void @sextload_global_v4i16_to_v4i64(ptr addrspace(1) %out, ptr addrspace(1) nocapture %in) nounwind {226  %load = load <4 x i16>, ptr addrspace(1) %in227  %ext = sext <4 x i16> %load to <4 x i64>228  store <4 x i64> %ext, ptr addrspace(1) %out229  ret void230}231 232; FUNC-LABEL: {{^}}zextload_global_v8i16_to_v8i64:233; SI: s_endpgm234define amdgpu_kernel void @zextload_global_v8i16_to_v8i64(ptr addrspace(1) %out, ptr addrspace(1) nocapture %in) nounwind {235  %load = load <8 x i16>, ptr addrspace(1) %in236  %ext = zext <8 x i16> %load to <8 x i64>237  store <8 x i64> %ext, ptr addrspace(1) %out238  ret void239}240 241; FUNC-LABEL: {{^}}sextload_global_v8i16_to_v8i64:242; SI: s_endpgm243define amdgpu_kernel void @sextload_global_v8i16_to_v8i64(ptr addrspace(1) %out, ptr addrspace(1) nocapture %in) nounwind {244  %load = load <8 x i16>, ptr addrspace(1) %in245  %ext = sext <8 x i16> %load to <8 x i64>246  store <8 x i64> %ext, ptr addrspace(1) %out247  ret void248}249 250; FUNC-LABEL: {{^}}zextload_global_v16i16_to_v16i64:251; SI: s_endpgm252define amdgpu_kernel void @zextload_global_v16i16_to_v16i64(ptr addrspace(1) %out, ptr addrspace(1) nocapture %in) nounwind {253  %load = load <16 x i16>, ptr addrspace(1) %in254  %ext = zext <16 x i16> %load to <16 x i64>255  store <16 x i64> %ext, ptr addrspace(1) %out256  ret void257}258 259; FUNC-LABEL: {{^}}sextload_global_v16i16_to_v16i64:260; SI: s_endpgm261define amdgpu_kernel void @sextload_global_v16i16_to_v16i64(ptr addrspace(1) %out, ptr addrspace(1) nocapture %in) nounwind {262  %load = load <16 x i16>, ptr addrspace(1) %in263  %ext = sext <16 x i16> %load to <16 x i64>264  store <16 x i64> %ext, ptr addrspace(1) %out265  ret void266}267 268; FUNC-LABEL: {{^}}zextload_global_v32i16_to_v32i64:269; SI: s_endpgm270define amdgpu_kernel void @zextload_global_v32i16_to_v32i64(ptr addrspace(1) %out, ptr addrspace(1) nocapture %in) nounwind {271  %load = load <32 x i16>, ptr addrspace(1) %in272  %ext = zext <32 x i16> %load to <32 x i64>273  store <32 x i64> %ext, ptr addrspace(1) %out274  ret void275}276 277; FUNC-LABEL: {{^}}sextload_global_v32i16_to_v32i64:278; SI: s_endpgm279define amdgpu_kernel void @sextload_global_v32i16_to_v32i64(ptr addrspace(1) %out, ptr addrspace(1) nocapture %in) nounwind {280  %load = load <32 x i16>, ptr addrspace(1) %in281  %ext = sext <32 x i16> %load to <32 x i64>282  store <32 x i64> %ext, ptr addrspace(1) %out283  ret void284}285 286; FUNC-LABEL: {{^}}zextload_global_v64i16_to_v64i64:287; SI: s_endpgm288define amdgpu_kernel void @zextload_global_v64i16_to_v64i64(ptr addrspace(1) %out, ptr addrspace(1) nocapture %in) nounwind {289  %load = load <64 x i16>, ptr addrspace(1) %in290  %ext = zext <64 x i16> %load to <64 x i64>291  store <64 x i64> %ext, ptr addrspace(1) %out292  ret void293}294 295; FUNC-LABEL: {{^}}sextload_global_v64i16_to_v64i64:296; SI: s_endpgm297define amdgpu_kernel void @sextload_global_v64i16_to_v64i64(ptr addrspace(1) %out, ptr addrspace(1) nocapture %in) nounwind {298  %load = load <64 x i16>, ptr addrspace(1) %in299  %ext = sext <64 x i16> %load to <64 x i64>300  store <64 x i64> %ext, ptr addrspace(1) %out301  ret void302}303