brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.3 KiB · 2893952 Raw
95 lines · plain
1; RUN:  llc -amdgpu-scalarize-global-loads=false  -mtriple=amdgcn -mcpu=verde < %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; RUN:  llc -amdgpu-scalarize-global-loads=false  -mtriple=r600 -mcpu=redwood < %s | FileCheck -check-prefix=EG -check-prefix=FUNC %s4 5; The code generated by urem is long and complex and may frequently6; change.  The goal of this test is to make sure the ISel doesn't fail7; when it gets a v2i32/v4i32 urem8 9; FUNC-LABEL: {{^}}test_urem_i32:10; SI: s_endpgm11; EG: CF_END12define amdgpu_kernel void @test_urem_i32(ptr addrspace(1) %out, ptr addrspace(1) %in) {13  %b_ptr = getelementptr i32, ptr addrspace(1) %in, i32 114  %a = load i32, ptr addrspace(1) %in15  %b = load i32, ptr addrspace(1) %b_ptr16  %result = urem i32 %a, %b17  store i32 %result, ptr addrspace(1) %out18  ret void19}20 21; FUNC-LABEL: {{^}}test_urem_i32_7:22; SI: s_mov_b32 [[MAGIC:s[0-9]+]], 0x2492492523; SI: v_mul_hi_u32 {{v[0-9]+}}, {{v[0-9]+}}, [[MAGIC]]24; SI: v_sub_{{[iu]}}3225; SI: v_mul_lo_u3226; SI: v_subrev_{{[iu]}}3227; SI: buffer_store_dword28; SI: s_endpgm29define amdgpu_kernel void @test_urem_i32_7(ptr addrspace(1) %out, ptr addrspace(1) %in) {30  %num = load i32, ptr addrspace(1) %in31  %result = urem i32 %num, 732  store i32 %result, ptr addrspace(1) %out33  ret void34}35 36; FUNC-LABEL: {{^}}test_urem_v2i32:37; SI: s_endpgm38; EG: CF_END39define amdgpu_kernel void @test_urem_v2i32(ptr addrspace(1) %out, ptr addrspace(1) %in) {40  %b_ptr = getelementptr <2 x i32>, ptr addrspace(1) %in, i32 141  %a = load <2 x i32>, ptr addrspace(1) %in42  %b = load <2 x i32>, ptr addrspace(1) %b_ptr43  %result = urem <2 x i32> %a, %b44  store <2 x i32> %result, ptr addrspace(1) %out45  ret void46}47 48; FUNC-LABEL: {{^}}test_urem_v4i32:49; SI: s_endpgm50; EG: CF_END51define amdgpu_kernel void @test_urem_v4i32(ptr addrspace(1) %out, ptr addrspace(1) %in) {52  %b_ptr = getelementptr <4 x i32>, ptr addrspace(1) %in, i32 153  %a = load <4 x i32>, ptr addrspace(1) %in54  %b = load <4 x i32>, ptr addrspace(1) %b_ptr55  %result = urem <4 x i32> %a, %b56  store <4 x i32> %result, ptr addrspace(1) %out57  ret void58}59 60; FUNC-LABEL: {{^}}test_urem_i64:61; SI: s_endpgm62; EG: CF_END63define amdgpu_kernel void @test_urem_i64(ptr addrspace(1) %out, ptr addrspace(1) %in) {64  %b_ptr = getelementptr i64, ptr addrspace(1) %in, i64 165  %a = load i64, ptr addrspace(1) %in66  %b = load i64, ptr addrspace(1) %b_ptr67  %result = urem i64 %a, %b68  store i64 %result, ptr addrspace(1) %out69  ret void70}71 72; FUNC-LABEL: {{^}}test_urem_v2i64:73; SI: s_endpgm74; EG: CF_END75define amdgpu_kernel void @test_urem_v2i64(ptr addrspace(1) %out, ptr addrspace(1) %in) {76  %b_ptr = getelementptr <2 x i64>, ptr addrspace(1) %in, i64 177  %a = load <2 x i64>, ptr addrspace(1) %in78  %b = load <2 x i64>, ptr addrspace(1) %b_ptr79  %result = urem <2 x i64> %a, %b80  store <2 x i64> %result, ptr addrspace(1) %out81  ret void82}83 84; FUNC-LABEL: {{^}}test_urem_v4i64:85; SI: s_endpgm86; EG: CF_END87define amdgpu_kernel void @test_urem_v4i64(ptr addrspace(1) %out, ptr addrspace(1) %in) {88  %b_ptr = getelementptr <4 x i64>, ptr addrspace(1) %in, i64 189  %a = load <4 x i64>, ptr addrspace(1) %in90  %b = load <4 x i64>, ptr addrspace(1) %b_ptr91  %result = urem <4 x i64> %a, %b92  store <4 x i64> %result, ptr addrspace(1) %out93  ret void94}95