vhscampos marked an inline comment as done.
vhscampos added a comment.

Added support for `__clsll` as requested.



================
Comment at: clang/lib/Headers/arm_acle.h:150
+__clsl(unsigned long __t) {
+#if __SIZEOF_LONG__ == 4
+  return __builtin_arm_cls(__t);
----------------
compnerd wrote:
> vhscampos wrote:
> > compnerd wrote:
> > > vhscampos wrote:
> > > > compnerd wrote:
> > > > > I don't see a pattern match for the `cls64` on ARM32, would that not 
> > > > > fail to lower?
> > > > Yes. However, for now, I am not enabling support for `cls64` on ARM32 
> > > > as it is not done yet.
> > > Is the difference not just the parameter type?  I think that implementing 
> > > it should be a trivial change to the existing implementation.  Is there a 
> > > reason that you are not implementing that?
> > At clang's side, yes, but not in the backend: Arm32 does not have a `cls` 
> > instruction, thus the CLS operations need to be custom lowered. In the 
> > `llvm.arm.cls(i32)` case, lowering is quite simple, and it's been included 
> > in this patch. For `llvm.arm.cls64(i64)`, on the other hand, it is not as 
> > trivial since it's necessary to break its logic into 32-bit instructions.
> > 
> > So the reason not to implement that (yet) is just to split work in two 
> > different efforts.
> Would it not be sufficient to do the top half (after a shift right of 
> 32-bits), and if it is exactly 32, then do the bottom 32-bits, otherwise, 
> you're done?
Sort of. How we interpret the bottom half depends on the value of the top half. 
I've added this custom lowering in the latest revision.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D69250



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to