================ @@ -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