[PATCH] D57779: [SLP] Add support for throttling.

Dinar Temirbulatov via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Feb 12 05:01:12 PST 2021


dtemirbulatov added a comment.

Here is another example:
source_filename = "psspread.c"
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

define dso_local void @spread_q_poisson() local_unnamed_addr #0 {
entry:

  %div.i = fdiv float undef, undef
  %conv13.i = fdiv float 1.000000e+00, %div.i
  %conv18.i = fdiv float 1.000000e+00, undef
  %conv23.i = fdiv float 1.000000e+00, undef
  %conv162 = fptosi float undef to i32
  %0 = load float, float* undef, align 4
  %1 = load i32, i32* undef, align 4
  %add187.us = add nsw i32 %1, %conv162
  %add191.us = add nsw i32 undef, undef
  %add195.us = add nsw i32 undef, undef
  %conv196.us = sitofp i32 %add187.us to float
  %mul197.us = fmul float %conv13.i, %conv196.us
  %sub198.us = fsub float undef, %mul197.us
  %mul.i363.us = fmul float %sub198.us, %sub198.us
  %conv200.us = sitofp i32 %add191.us to float
  %mul201.us = fmul float %conv18.i, %conv200.us
  %sub202.us = fsub float undef, %mul201.us
  %mul.i362.us = fmul float %sub202.us, %sub202.us
  %conv204.us = sitofp i32 %add195.us to float
  %mul205.us = fmul float %conv23.i, %conv204.us
  %sub206.us = fsub float %0, %mul205.us
  %mul.i.us = fmul float %sub206.us, %sub206.us
  %add208.us = fadd float %mul.i363.us, %mul.i362.us
  %add209.us = fadd float %add208.us, %mul.i.us
  %cmp210.us = fcmp olt float %add209.us, undef
  %add230.us = add nsw i32 undef, %add195.us
  unreachable

}

attributes #0 = { "use-soft-float"="false" }

!llvm.ident = !{!0}

!0 = !{!"clang version 13.0.0 (/home/dtemirbulatov/llvm/llvm-project-thl/llvm/tools/clang eec04092d67b94f47439a9065b6bd4cd60165be2 <https://reviews.llvm.org/rGeec04092d67b94f47439a9065b6bd4cd60165be2>)"}

with proposed change it produces :
; ModuleID = 'bug.ll'
source_filename = "psspread.c"
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

define dso_local void @spread_q_poisson() local_unnamed_addr #0 {
entry:

  %div.i = fdiv float undef, undef
  %conv13.i = fdiv float 1.000000e+00, %div.i
  %conv162 = fptosi float undef to i32
  %0 = load float, float* undef, align 4
  %1 = load i32, i32* undef, align 4
  %add187.us = add nsw i32 %1, %conv162
  %conv196.us = sitofp i32 %add187.us to float
  %mul197.us = fmul float %conv13.i, %conv196.us
  %sub198.us = fsub float undef, %mul197.us
  %mul.i363.us = fmul float %sub198.us, %sub198.us
  %2 = insertelement <2 x float> <float undef, float poison>, float %0, i32 1
  %3 = fsub <2 x float> %2, <float 0x7FF8000000000000, float 0x7FF8000000000000>
  %4 = fmul <2 x float> %3, %3
  %5 = extractelement <2 x float> %4, i32 0
  %add208.us = fadd float %mul.i363.us, %5
  %6 = extractelement <2 x float> %4, i32 1
  %add209.us = fadd float %add208.us, %6
  %cmp210.us = fcmp olt float %add209.us, undef
  %add230.us = add nsw i32 undef, undef
  unreachable

}

attributes #0 = { "use-soft-float"="false" }

!llvm.ident = !{!0}

!0 = !{!"clang version 13.0.0 (/home/dtemirbulatov/llvm/llvm-project-thl/llvm/tools/clang eec04092d67b94f47439a9065b6bd4cd60165be2 <https://reviews.llvm.org/rGeec04092d67b94f47439a9065b6bd4cd60165be2>)"}

but if we immediately decide to vectorize patrially to get this output:
; ModuleID = 'bug.ll'
source_filename = "psspread.c"
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

define dso_local void @spread_q_poisson() local_unnamed_addr #0 {
entry:

  %div.i = fdiv float undef, undef
  %conv18.i = fdiv float 1.000000e+00, undef
  %0 = insertelement <2 x float> poison, float %div.i, i32 0
  %1 = insertelement <2 x float> %0, float undef, i32 1
  %2 = fdiv <2 x float> <float 1.000000e+00, float 1.000000e+00>, %1
  %conv162 = fptosi float undef to i32
  %3 = load float, float* undef, align 4
  %4 = load i32, i32* undef, align 4
  %add187.us = add nsw i32 %4, %conv162
  %add191.us = add nsw i32 undef, undef
  %add195.us = add nsw i32 undef, undef
  %conv200.us = sitofp i32 %add191.us to float
  %mul201.us = fmul float %conv18.i, %conv200.us
  %sub202.us = fsub float undef, %mul201.us
  %mul.i362.us = fmul float %sub202.us, %sub202.us
  %5 = insertelement <2 x i32> poison, i32 %add187.us, i32 0
  %6 = insertelement <2 x i32> %5, i32 %add195.us, i32 1
  %7 = sitofp <2 x i32> %6 to <2 x float>
  %8 = fmul <2 x float> %2, %7
  %9 = insertelement <2 x float> <float undef, float poison>, float %3, i32 1
  %10 = fsub <2 x float> %9, %8
  %11 = fmul <2 x float> %10, %10
  %12 = extractelement <2 x float> %11, i32 0
  %add208.us = fadd float %12, %mul.i362.us
  %13 = extractelement <2 x float> %11, i32 1
  %add209.us = fadd float %add208.us, %13
  %cmp210.us = fcmp olt float %add209.us, undef
  %add230.us = add nsw i32 undef, %add195.us
  unreachable

}

attributes #0 = { "use-soft-float"="false" }

!llvm.ident = !{!0}

!0 = !{!"clang version 13.0.0 (/home/dtemirbulatov/llvm/llvm-project-thl/llvm/tools/clang eec04092d67b94f47439a9065b6bd4cd60165be2 <https://reviews.llvm.org/rGeec04092d67b94f47439a9065b6bd4cd60165be2>)"}


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D57779/new/

https://reviews.llvm.org/D57779



More information about the llvm-commits mailing list