[llvm-commits] Removed intrinsics in r149367

Duncan Sands baldrick at free.fr
Mon Feb 13 08:14:48 PST 2012


Hi Elena,

> You removed pcmpgt/pcmpeq intrinsic, but we use them.
> Could you, please, put them back?

you can either implement them using generic IR like I did in dragonegg:

   case pcmpeqb128:
   case pcmpeqb256:
   case pcmpeqd128:
   case pcmpeqd256:
   case pcmpeqq:
   case pcmpeqq256:
   case pcmpeqw128:
   case pcmpeqw256:
     Result = Builder.CreateICmpEQ(Ops[0], Ops[1]);
     // Need to sign extend since icmp returns a vector of i1.
     Result = Builder.CreateSExt(Result, ResultType);
     return true;
   case pcmpgtb128:
   case pcmpgtb256:
   case pcmpgtd128:
   case pcmpgtd256:
   case pcmpgtq:
   case pcmpgtq256:
   case pcmpgtw128:
   case pcmpgtw256:
     Result = Builder.CreateICmpSGT(Ops[0], Ops[1]);
     // Need to sign extend since icmp returns a vector of i1.
     Result = Builder.CreateSExt(Result, ResultType);

Or have your front-end spit an appropriate inline asm into the IR.

Ciao, Duncan.



More information about the llvm-commits mailing list