================
@@ -1815,7 +1817,8 @@ SparcTargetLowering::SparcTargetLowering(const 
TargetMachine &TM,
   setOperationAction(ISD::FREM , MVT::f32, Expand);
   setOperationAction(ISD::FMA  , MVT::f32, Expand);
   setOperationAction(ISD::CTTZ , MVT::i32, Expand);
-  setOperationAction(ISD::CTLZ , MVT::i32, Expand);
+  setOperationAction(ISD::CTLZ, MVT::i32,
+                     Subtarget->isVIS3() ? Promote : LibCall);
----------------
s-barannikov wrote:

The libcall corresponds to `_ZERO_UNDEF` version (it doesn't support zero 
input), hence no changes in tests.
`CTLZ` should be left set to `Expand`, it should be expanded into a zero check 
+ libcall + select.

---
It may be worth double checking that `libgcc` provides `clzsi2`. It may so 
happen that it only provides 64-bit version (`clzdi2`) on 64-bit Sparc.
`compiler-rt` should provide both, but if I'm not mistaken it is not the 
default compiler support library?


https://github.com/llvm/llvm-project/pull/135715
_______________________________________________
llvm-branch-commits mailing list
llvm-branch-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits

Reply via email to