brintos

brintos / llvm-project-archived public Read only

0
0
Text · 13.5 KiB · 92add00 Raw
372 lines · plain
1; RUN: llc -mtriple=amdgcn-- < %s | FileCheck -check-prefix=GCN -check-prefix=FUNC %s2; RUN: llc -mtriple=amdgcn-- -mcpu=tonga -mattr=-flat-for-global < %s | FileCheck -check-prefix=GCN -check-prefix=FUNC %s3; RUN: llc -mtriple=r600-- -mcpu=cypress < %s | FileCheck -check-prefix=EG -check-prefix=FUNC %s4 5; FUNC-LABEL: {{^}}global_load_i1:6; GCN: buffer_load_ubyte7; GCN: v_and_b32_e32 v{{[0-9]+}}, 18; GCN: buffer_store_byte9 10; EG: VTX_READ_811; EG: AND_INT12define amdgpu_kernel void @global_load_i1(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {13  %load = load i1, ptr addrspace(1) %in14  store i1 %load, ptr addrspace(1) %out15  ret void16}17 18; FUNC-LABEL: {{^}}global_load_v2i1:19define amdgpu_kernel void @global_load_v2i1(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {20  %load = load <2 x i1>, ptr addrspace(1) %in21  store <2 x i1> %load, ptr addrspace(1) %out22  ret void23}24 25; FUNC-LABEL: {{^}}global_load_v3i1:26define amdgpu_kernel void @global_load_v3i1(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {27  %load = load <3 x i1>, ptr addrspace(1) %in28  store <3 x i1> %load, ptr addrspace(1) %out29  ret void30}31 32; FUNC-LABEL: {{^}}global_load_v4i1:33define amdgpu_kernel void @global_load_v4i1(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {34  %load = load <4 x i1>, ptr addrspace(1) %in35  store <4 x i1> %load, ptr addrspace(1) %out36  ret void37}38 39; FUNC-LABEL: {{^}}global_load_v8i1:40define amdgpu_kernel void @global_load_v8i1(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {41  %load = load <8 x i1>, ptr addrspace(1) %in42  store <8 x i1> %load, ptr addrspace(1) %out43  ret void44}45 46; FUNC-LABEL: {{^}}global_load_v16i1:47define amdgpu_kernel void @global_load_v16i1(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {48  %load = load <16 x i1>, ptr addrspace(1) %in49  store <16 x i1> %load, ptr addrspace(1) %out50  ret void51}52 53; FUNC-LABEL: {{^}}global_load_v32i1:54define amdgpu_kernel void @global_load_v32i1(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {55  %load = load <32 x i1>, ptr addrspace(1) %in56  store <32 x i1> %load, ptr addrspace(1) %out57  ret void58}59 60; FUNC-LABEL: {{^}}global_load_v64i1:61define amdgpu_kernel void @global_load_v64i1(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {62  %load = load <64 x i1>, ptr addrspace(1) %in63  store <64 x i1> %load, ptr addrspace(1) %out64  ret void65}66 67; FUNC-LABEL: {{^}}global_zextload_i1_to_i32:68; GCN: buffer_load_ubyte69; GCN: buffer_store_dword70define amdgpu_kernel void @global_zextload_i1_to_i32(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {71  %a = load i1, ptr addrspace(1) %in72  %ext = zext i1 %a to i3273  store i32 %ext, ptr addrspace(1) %out74  ret void75}76 77; FUNC-LABEL: {{^}}global_sextload_i1_to_i32:78; GCN: buffer_load_ubyte79; GCN: v_bfe_i32 {{v[0-9]+}}, {{v[0-9]+}}, 0, 1{{$}}80; GCN: buffer_store_dword81 82; EG: VTX_READ_883; EG: BFE_INT84define amdgpu_kernel void @global_sextload_i1_to_i32(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {85  %a = load i1, ptr addrspace(1) %in86  %ext = sext i1 %a to i3287  store i32 %ext, ptr addrspace(1) %out88  ret void89}90 91; FUNC-LABEL: {{^}}global_zextload_v1i1_to_v1i32:92define amdgpu_kernel void @global_zextload_v1i1_to_v1i32(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {93  %load = load <1 x i1>, ptr addrspace(1) %in94  %ext = zext <1 x i1> %load to <1 x i32>95  store <1 x i32> %ext, ptr addrspace(1) %out96  ret void97}98 99; FUNC-LABEL: {{^}}global_sextload_v1i1_to_v1i32:100define amdgpu_kernel void @global_sextload_v1i1_to_v1i32(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {101  %load = load <1 x i1>, ptr addrspace(1) %in102  %ext = sext <1 x i1> %load to <1 x i32>103  store <1 x i32> %ext, ptr addrspace(1) %out104  ret void105}106 107; FUNC-LABEL: {{^}}global_zextload_v2i1_to_v2i32:108define amdgpu_kernel void @global_zextload_v2i1_to_v2i32(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {109  %load = load <2 x i1>, ptr addrspace(1) %in110  %ext = zext <2 x i1> %load to <2 x i32>111  store <2 x i32> %ext, ptr addrspace(1) %out112  ret void113}114 115; FUNC-LABEL: {{^}}global_sextload_v2i1_to_v2i32:116define amdgpu_kernel void @global_sextload_v2i1_to_v2i32(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {117  %load = load <2 x i1>, ptr addrspace(1) %in118  %ext = sext <2 x i1> %load to <2 x i32>119  store <2 x i32> %ext, ptr addrspace(1) %out120  ret void121}122 123; FUNC-LABEL: {{^}}global_zextload_v3i1_to_v3i32:124define amdgpu_kernel void @global_zextload_v3i1_to_v3i32(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {125  %load = load <3 x i1>, ptr addrspace(1) %in126  %ext = zext <3 x i1> %load to <3 x i32>127  store <3 x i32> %ext, ptr addrspace(1) %out128  ret void129}130 131; FUNC-LABEL: {{^}}global_sextload_v3i1_to_v3i32:132define amdgpu_kernel void @global_sextload_v3i1_to_v3i32(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {133  %load = load <3 x i1>, ptr addrspace(1) %in134  %ext = sext <3 x i1> %load to <3 x i32>135  store <3 x i32> %ext, ptr addrspace(1) %out136  ret void137}138 139; FUNC-LABEL: {{^}}global_zextload_v4i1_to_v4i32:140define amdgpu_kernel void @global_zextload_v4i1_to_v4i32(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {141  %load = load <4 x i1>, ptr addrspace(1) %in142  %ext = zext <4 x i1> %load to <4 x i32>143  store <4 x i32> %ext, ptr addrspace(1) %out144  ret void145}146 147; FUNC-LABEL: {{^}}global_sextload_v4i1_to_v4i32:148define amdgpu_kernel void @global_sextload_v4i1_to_v4i32(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {149  %load = load <4 x i1>, ptr addrspace(1) %in150  %ext = sext <4 x i1> %load to <4 x i32>151  store <4 x i32> %ext, ptr addrspace(1) %out152  ret void153}154 155; FUNC-LABEL: {{^}}global_zextload_v8i1_to_v8i32:156define amdgpu_kernel void @global_zextload_v8i1_to_v8i32(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {157  %load = load <8 x i1>, ptr addrspace(1) %in158  %ext = zext <8 x i1> %load to <8 x i32>159  store <8 x i32> %ext, ptr addrspace(1) %out160  ret void161}162 163; FUNC-LABEL: {{^}}global_sextload_v8i1_to_v8i32:164define amdgpu_kernel void @global_sextload_v8i1_to_v8i32(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {165  %load = load <8 x i1>, ptr addrspace(1) %in166  %ext = sext <8 x i1> %load to <8 x i32>167  store <8 x i32> %ext, ptr addrspace(1) %out168  ret void169}170 171; FUNC-LABEL: {{^}}global_zextload_v16i1_to_v16i32:172define amdgpu_kernel void @global_zextload_v16i1_to_v16i32(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {173  %load = load <16 x i1>, ptr addrspace(1) %in174  %ext = zext <16 x i1> %load to <16 x i32>175  store <16 x i32> %ext, ptr addrspace(1) %out176  ret void177}178 179; FUNC-LABEL: {{^}}global_sextload_v16i1_to_v16i32:180define amdgpu_kernel void @global_sextload_v16i1_to_v16i32(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {181  %load = load <16 x i1>, ptr addrspace(1) %in182  %ext = sext <16 x i1> %load to <16 x i32>183  store <16 x i32> %ext, ptr addrspace(1) %out184  ret void185}186 187; FUNC-LABEL: {{^}}global_zextload_v32i1_to_v32i32:188define amdgpu_kernel void @global_zextload_v32i1_to_v32i32(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {189  %load = load <32 x i1>, ptr addrspace(1) %in190  %ext = zext <32 x i1> %load to <32 x i32>191  store <32 x i32> %ext, ptr addrspace(1) %out192  ret void193}194 195; FUNC-LABEL: {{^}}global_sextload_v32i1_to_v32i32:196define amdgpu_kernel void @global_sextload_v32i1_to_v32i32(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {197  %load = load <32 x i1>, ptr addrspace(1) %in198  %ext = sext <32 x i1> %load to <32 x i32>199  store <32 x i32> %ext, ptr addrspace(1) %out200  ret void201}202 203; FUNC-LABEL: {{^}}global_zextload_v64i1_to_v64i32:204define amdgpu_kernel void @global_zextload_v64i1_to_v64i32(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {205  %load = load <64 x i1>, ptr addrspace(1) %in206  %ext = zext <64 x i1> %load to <64 x i32>207  store <64 x i32> %ext, ptr addrspace(1) %out208  ret void209}210 211; FUNC-LABEL: {{^}}global_sextload_v64i1_to_v64i32:212define amdgpu_kernel void @global_sextload_v64i1_to_v64i32(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {213  %load = load <64 x i1>, ptr addrspace(1) %in214  %ext = sext <64 x i1> %load to <64 x i32>215  store <64 x i32> %ext, ptr addrspace(1) %out216  ret void217}218 219; FUNC-LABEL: {{^}}global_zextload_i1_to_i64:220; GCN-DAG: buffer_load_ubyte [[LOAD:v[0-9]+]],221; GCN-DAG: v_mov_b32_e32 {{v[0-9]+}}, 0{{$}}222; GCN-DAG: v_and_b32_e32 {{v[0-9]+}}, 1, [[LOAD]]{{$}}223; GCN: buffer_store_dwordx2224define amdgpu_kernel void @global_zextload_i1_to_i64(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {225  %a = load i1, ptr addrspace(1) %in226  %ext = zext i1 %a to i64227  store i64 %ext, ptr addrspace(1) %out228  ret void229}230 231; FUNC-LABEL: {{^}}global_sextload_i1_to_i64:232; GCN: buffer_load_ubyte [[LOAD:v[0-9]+]],233; GCN: v_bfe_i32 [[BFE:v[0-9]+]], {{v[0-9]+}}, 0, 1{{$}}234; GCN: v_ashrrev_i32_e32 v{{[0-9]+}}, 31, [[BFE]]235; GCN: buffer_store_dwordx2236define amdgpu_kernel void @global_sextload_i1_to_i64(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {237  %a = load i1, ptr addrspace(1) %in238  %ext = sext i1 %a to i64239  store i64 %ext, ptr addrspace(1) %out240  ret void241}242 243; FUNC-LABEL: {{^}}global_zextload_v1i1_to_v1i64:244define amdgpu_kernel void @global_zextload_v1i1_to_v1i64(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {245  %load = load <1 x i1>, ptr addrspace(1) %in246  %ext = zext <1 x i1> %load to <1 x i64>247  store <1 x i64> %ext, ptr addrspace(1) %out248  ret void249}250 251; FUNC-LABEL: {{^}}global_sextload_v1i1_to_v1i64:252define amdgpu_kernel void @global_sextload_v1i1_to_v1i64(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {253  %load = load <1 x i1>, ptr addrspace(1) %in254  %ext = sext <1 x i1> %load to <1 x i64>255  store <1 x i64> %ext, ptr addrspace(1) %out256  ret void257}258 259; FUNC-LABEL: {{^}}global_zextload_v2i1_to_v2i64:260define amdgpu_kernel void @global_zextload_v2i1_to_v2i64(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {261  %load = load <2 x i1>, ptr addrspace(1) %in262  %ext = zext <2 x i1> %load to <2 x i64>263  store <2 x i64> %ext, ptr addrspace(1) %out264  ret void265}266 267; FUNC-LABEL: {{^}}global_sextload_v2i1_to_v2i64:268define amdgpu_kernel void @global_sextload_v2i1_to_v2i64(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {269  %load = load <2 x i1>, ptr addrspace(1) %in270  %ext = sext <2 x i1> %load to <2 x i64>271  store <2 x i64> %ext, ptr addrspace(1) %out272  ret void273}274 275; FUNC-LABEL: {{^}}global_zextload_v3i1_to_v3i64:276define amdgpu_kernel void @global_zextload_v3i1_to_v3i64(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {277  %load = load <3 x i1>, ptr addrspace(1) %in278  %ext = zext <3 x i1> %load to <3 x i64>279  store <3 x i64> %ext, ptr addrspace(1) %out280  ret void281}282 283; FUNC-LABEL: {{^}}global_sextload_v3i1_to_v3i64:284define amdgpu_kernel void @global_sextload_v3i1_to_v3i64(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {285  %load = load <3 x i1>, ptr addrspace(1) %in286  %ext = sext <3 x i1> %load to <3 x i64>287  store <3 x i64> %ext, ptr addrspace(1) %out288  ret void289}290 291; FUNC-LABEL: {{^}}global_zextload_v4i1_to_v4i64:292define amdgpu_kernel void @global_zextload_v4i1_to_v4i64(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {293  %load = load <4 x i1>, ptr addrspace(1) %in294  %ext = zext <4 x i1> %load to <4 x i64>295  store <4 x i64> %ext, ptr addrspace(1) %out296  ret void297}298 299; FUNC-LABEL: {{^}}global_sextload_v4i1_to_v4i64:300define amdgpu_kernel void @global_sextload_v4i1_to_v4i64(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {301  %load = load <4 x i1>, ptr addrspace(1) %in302  %ext = sext <4 x i1> %load to <4 x i64>303  store <4 x i64> %ext, ptr addrspace(1) %out304  ret void305}306 307; FUNC-LABEL: {{^}}global_zextload_v8i1_to_v8i64:308define amdgpu_kernel void @global_zextload_v8i1_to_v8i64(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {309  %load = load <8 x i1>, ptr addrspace(1) %in310  %ext = zext <8 x i1> %load to <8 x i64>311  store <8 x i64> %ext, ptr addrspace(1) %out312  ret void313}314 315; FUNC-LABEL: {{^}}global_sextload_v8i1_to_v8i64:316define amdgpu_kernel void @global_sextload_v8i1_to_v8i64(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {317  %load = load <8 x i1>, ptr addrspace(1) %in318  %ext = sext <8 x i1> %load to <8 x i64>319  store <8 x i64> %ext, ptr addrspace(1) %out320  ret void321}322 323; FUNC-LABEL: {{^}}global_zextload_v16i1_to_v16i64:324define amdgpu_kernel void @global_zextload_v16i1_to_v16i64(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {325  %load = load <16 x i1>, ptr addrspace(1) %in326  %ext = zext <16 x i1> %load to <16 x i64>327  store <16 x i64> %ext, ptr addrspace(1) %out328  ret void329}330 331; FUNC-LABEL: {{^}}global_sextload_v16i1_to_v16i64:332define amdgpu_kernel void @global_sextload_v16i1_to_v16i64(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {333  %load = load <16 x i1>, ptr addrspace(1) %in334  %ext = sext <16 x i1> %load to <16 x i64>335  store <16 x i64> %ext, ptr addrspace(1) %out336  ret void337}338 339; FUNC-LABEL: {{^}}global_zextload_v32i1_to_v32i64:340define amdgpu_kernel void @global_zextload_v32i1_to_v32i64(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {341  %load = load <32 x i1>, ptr addrspace(1) %in342  %ext = zext <32 x i1> %load to <32 x i64>343  store <32 x i64> %ext, ptr addrspace(1) %out344  ret void345}346 347; FUNC-LABEL: {{^}}global_sextload_v32i1_to_v32i64:348define amdgpu_kernel void @global_sextload_v32i1_to_v32i64(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {349  %load = load <32 x i1>, ptr addrspace(1) %in350  %ext = sext <32 x i1> %load to <32 x i64>351  store <32 x i64> %ext, ptr addrspace(1) %out352  ret void353}354 355; FUNC-LABEL: {{^}}global_zextload_v64i1_to_v64i64:356define amdgpu_kernel void @global_zextload_v64i1_to_v64i64(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {357  %load = load <64 x i1>, ptr addrspace(1) %in358  %ext = zext <64 x i1> %load to <64 x i64>359  store <64 x i64> %ext, ptr addrspace(1) %out360  ret void361}362 363; FUNC-LABEL: {{^}}global_sextload_v64i1_to_v64i64:364define amdgpu_kernel void @global_sextload_v64i1_to_v64i64(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {365  %load = load <64 x i1>, ptr addrspace(1) %in366  %ext = sext <64 x i1> %load to <64 x i64>367  store <64 x i64> %ext, ptr addrspace(1) %out368  ret void369}370 371attributes #0 = { nounwind }372