================
@@ -1247,6 +1286,91 @@ RValue CIRGenFunction::emitBuiltinExpr(const GlobalDecl
&gd, unsigned builtinID,
getTarget().isCLZForZeroUndef());
case Builtin::BI__builtin_ctzg:
return emitBuiltinBitOpWithFallback<cir::BitCtzOp>(*this, e);
+ case Builtin::BIstdc_trailing_zeros_uc:
+ case Builtin::BIstdc_trailing_zeros_us:
+ case Builtin::BIstdc_trailing_zeros_ui:
+ case Builtin::BIstdc_trailing_zeros_ul:
+ case Builtin::BIstdc_trailing_zeros_ull:
+ case Builtin::BI__builtin_stdc_trailing_zeros:
+ return emitStdcCountOp<cir::BitCtzOp>(*this, e, /*invertArg=*/false,
+ /*poisonZero=*/false);
+
+ case Builtin::BIstdc_leading_zeros_uc:
+ case Builtin::BIstdc_leading_zeros_us:
+ case Builtin::BIstdc_leading_zeros_ui:
+ case Builtin::BIstdc_leading_zeros_ul:
+ case Builtin::BIstdc_leading_zeros_ull:
+ case Builtin::BI__builtin_stdc_leading_zeros:
+ return emitStdcCountOp<cir::BitClzOp>(*this, e, /*invertArg=*/false,
+ /*poisonZero=*/false);
+
+ case Builtin::BIstdc_trailing_ones_uc:
+ case Builtin::BIstdc_trailing_ones_us:
+ case Builtin::BIstdc_trailing_ones_ui:
+ case Builtin::BIstdc_trailing_ones_ul:
+ case Builtin::BIstdc_trailing_ones_ull:
+ case Builtin::BI__builtin_stdc_trailing_ones:
+ return emitStdcCountOp<cir::BitCtzOp>(*this, e, /*invertArg=*/true,
+ /*poisonZero=*/false);
+
+ case Builtin::BIstdc_leading_ones_uc:
+ case Builtin::BIstdc_leading_ones_us:
+ case Builtin::BIstdc_leading_ones_ui:
+ case Builtin::BIstdc_leading_ones_ul:
+ case Builtin::BIstdc_leading_ones_ull:
+ case Builtin::BI__builtin_stdc_leading_ones:
+ return emitStdcCountOp<cir::BitClzOp>(*this, e, /*invertArg=*/true,
+ /*poisonZero=*/false);
+
+ case Builtin::BIstdc_bit_width_uc:
+ case Builtin::BIstdc_bit_width_us:
+ case Builtin::BIstdc_bit_width_ui:
+ case Builtin::BIstdc_bit_width_ul:
+ case Builtin::BIstdc_bit_width_ull:
+ case Builtin::BI__builtin_stdc_bit_width:
+ return emitStdcBitWidthMinus<cir::BitClzOp>(*this, e,
+ /*poisonZero=*/false);
+
+ case Builtin::BIstdc_count_zeros_uc:
+ case Builtin::BIstdc_count_zeros_us:
+ case Builtin::BIstdc_count_zeros_ui:
+ case Builtin::BIstdc_count_zeros_ul:
+ case Builtin::BIstdc_count_zeros_ull:
+ case Builtin::BI__builtin_stdc_count_zeros:
+ return emitStdcBitWidthMinus<cir::BitPopcountOp>(*this, e);
+
+ case Builtin::BIstdc_count_ones_uc:
+ case Builtin::BIstdc_count_ones_us:
+ case Builtin::BIstdc_count_ones_ui:
+ case Builtin::BIstdc_count_ones_ul:
+ case Builtin::BIstdc_count_ones_ull:
+ case Builtin::BI__builtin_stdc_count_ones:
+ return emitStdcCountOp<cir::BitPopcountOp>(*this, e,
+ /*invertArg=*/false);
+
+ case Builtin::BIstdc_has_single_bit_uc:
+ case Builtin::BIstdc_has_single_bit_us:
+ case Builtin::BIstdc_has_single_bit_ui:
+ case Builtin::BIstdc_has_single_bit_ul:
+ case Builtin::BIstdc_has_single_bit_ull:
+ case Builtin::BI__builtin_stdc_has_single_bit:
+ return errorBuiltinNYI(*this, e, builtinID);
+
+ case Builtin::BIstdc_bit_ceil_uc:
+ case Builtin::BIstdc_bit_ceil_us:
+ case Builtin::BIstdc_bit_ceil_ui:
+ case Builtin::BIstdc_bit_ceil_ul:
+ case Builtin::BIstdc_bit_ceil_ull:
+ case Builtin::BI__builtin_stdc_bit_ceil:
+ return errorBuiltinNYI(*this, e, builtinID);
+
+ case Builtin::BIstdc_bit_floor_uc:
----------------
xakep8 wrote:
Handled this one
https://github.com/llvm/llvm-project/pull/214931
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits