[llvm-dev] Creating a pattern detection pass for Mips backend

Catello Cioffi via llvm-dev llvm-dev at lists.llvm.org
Tue Jan 24 07:22:58 PST 2017


HI all,

I'm trying to add a new FunctionPas to Mips backend in order to recognise a
specific loop and substitute it with an intrinsic. The pattern that I want
to recognise is:

  %7 = load i32, i32* %i, align 4
  %arrayidx = getelementptr inbounds [1024 x i32], [1024 x i32]* %seq, i32
0, i32 %7
  %8 = load i32, i32* %arrayidx, align 4
  %9 = load i32, i32* %j, align 4
  %mul = mul nsw i32 %9, 2
  %shl = shl i32 3, %mul
  %and = and i32 %8, %shl
  %10 = load i32, i32* %j, align 4
  %mul2 = mul nsw i32 %10, 2
  %shr = ashr i32 %and, %mul2
  %conv = trunc i32 %shr to i8
  store i8 %conv, i8* %hn, align 1
  %11 = load i8, i8* %hn, align 1
  %conv3 = sext i8 %11 to i32
  %cmp4 = icmp eq i32 %conv3, 2
  br i1 %cmp4, label %12, label %14

; <label>:12:                                     ; preds = %6
  %13 = load i32, i32* %cnt, align 4
  %inc = add nsw i32 %13, 1
  store i32 %inc, i32* %cnt, align 4
  br label %14

How can I detect it? There is a similar thing in other backends that I can
use for my purpose?

Thanks,

Catello
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170124/16eb4573/attachment.html>


More information about the llvm-dev mailing list