brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.1 KiB · b558c09 Raw
51 lines · plain
1; RUN: opt -mtriple=amdgcn-amd-amdhsa -passes=load-store-vectorizer -S -o - %s | FileCheck %s2; RUN: opt -mtriple=amdgcn-amd-amdhsa -aa-pipeline=basic-aa -passes='function(load-store-vectorizer)' -S -o - %s | FileCheck %s3 4declare i64 @_Z12get_local_idj(i32)5 6declare i64 @_Z12get_group_idj(i32)7 8declare double @llvm.fmuladd.f64(double, double, double)9 10; CHECK-LABEL: @factorizedVsNonfactorizedAccess(11; CHECK: load <2 x float>12; CHECK: store <2 x float>13define amdgpu_kernel void @factorizedVsNonfactorizedAccess(ptr addrspace(1) nocapture %c) {14entry:15  %call = tail call i64 @_Z12get_local_idj(i32 0)16  %call1 = tail call i64 @_Z12get_group_idj(i32 0)17  %div = lshr i64 %call, 418  %div2 = lshr i64 %call1, 319  %mul = shl i64 %div2, 720  %rem = shl i64 %call, 321  %mul3 = and i64 %rem, 12022  %add = or i64 %mul, %mul323  %rem4 = shl i64 %call1, 724  %mul5 = and i64 %rem4, 89625  %mul6 = shl nuw nsw i64 %div, 326  %add7 = add nuw i64 %mul5, %mul627  %mul9 = shl i64 %add7, 1028  %add10 = add i64 %mul9, %add29  %arrayidx = getelementptr inbounds float, ptr addrspace(1) %c, i64 %add1030  %load1 = load float, ptr addrspace(1) %arrayidx, align 431  %conv = fpext float %load1 to double32  %mul11 = fmul double %conv, 0x3FEAB481D8F3550633  %conv12 = fptrunc double %mul11 to float34  %conv18 = fpext float %conv12 to double35  %storeval1 = tail call double @llvm.fmuladd.f64(double 0x3FF4FFAFBBEC946A, double 0.000000e+00, double %conv18)36  %cstoreval1 = fptrunc double %storeval1 to float37  store float %cstoreval1, ptr addrspace(1) %arrayidx, align 438 39  %add23 = or disjoint i64 %add10, 140  %arrayidx24 = getelementptr inbounds float, ptr addrspace(1) %c, i64 %add2341  %load2 = load float, ptr addrspace(1) %arrayidx24, align 442  %conv25 = fpext float %load2 to double43  %mul26 = fmul double %conv25, 0x3FEAB481D8F3550644  %conv27 = fptrunc double %mul26 to float45  %conv34 = fpext float %conv27 to double46  %storeval2 = tail call double @llvm.fmuladd.f64(double 0x3FF4FFAFBBEC946A, double 0.000000e+00, double %conv34)47  %cstoreval2 = fptrunc double %storeval2 to float48  store float %cstoreval2, ptr addrspace(1) %arrayidx24, align 449  ret void50}51