vivek pandya via llvm-dev
2017-Feb-15 14:49 UTC
[llvm-dev] Help lowering byte wise compare instruction
Hello LLVM Devs, Hope you are doing well. I am implementing LLVM back-end for an architecture which has instruction that performs byte by byte comparison and stores result for each byte. pcmpbf rD, rA, rB --> bytewise comparison returning position of first match in rd So with this regard I wanted to find similar instruction lowering for nay other architecture which have similar instruction. I found some thing similar on PPC. If I am wrong kindly suggest some example. I am trying to understand following statement from PPCInstrInfo.td file: def CMPRB : X_BF3_L1_RS5_RS5<31, 192, (outs crbitrc:$BF), (ins u1imm:$L, g8rc:$rA, g8rc:$rB), "cmprb $BF, $L, $rA, $rB", IIC_IntCompare, []>, Requires<[IsISA3_0]>; Here I am not able to understand against which DAG pattern this gets matched ? By doing grep I don't get any code which provide me the required info. Basically I want to know which LLVM IR instruction or intrinsic has similar semantics and then how I can lower it correctly. Sincerely, Vivek -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170215/38e9958b/attachment.html>
Hal Finkel via llvm-dev
2017-Feb-15 18:06 UTC
[llvm-dev] Help lowering byte wise compare instruction
On 02/15/2017 08:49 AM, vivek pandya via llvm-dev wrote:> > Hello LLVM Devs, > > > Hope you are doing well. > I am implementing LLVM back-end for an architecture which has > instruction that performs byte by byte comparison and stores result > for each byte. > > pcmpbf rD, rA, rB --> bytewise comparison returning position of first > match in rd > > So with this regard I wanted to find similar instruction lowering for > nay other architecture which have similar instruction. > I found some thing similar on PPC. If I am wrong kindly suggest some > example. > > I am trying to understand following statement from PPCInstrInfo.td file: > def CMPRB : X_BF3_L1_RS5_RS5<31, 192, (outs crbitrc:$BF), > (ins u1imm:$L, g8rc:$rA, g8rc:$rB), > "cmprb $BF, $L, $rA, $rB", > IIC_IntCompare, []>, > Requires<[IsISA3_0]>; > Here I am not able to understand against which DAG pattern this gets > matched ? By doing grep I don't get any code which provide me the > required info.I don't think we have a pattern for that instruction currently. We have a CMPB instruction, which we can automatically generate, and sounds similar to your desired semantics, see PPCDAGToDAGISel::combineToCMPB in PPCISelDAGToDAG.cpp. -Hal> > Basically I want to know which LLVM IR instruction or intrinsic has > similar semantics and then how I can lower it correctly. > > Sincerely, > Vivek > > > > > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev-- Hal Finkel Lead, Compiler Technology and Programming Languages Leadership Computing Facility Argonne National Laboratory -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170215/75751ab0/attachment.html>