================
@@ -1693,6 +1693,22 @@ getBitTestAtomicOrdering(BitTest::InterlockingKind I) {
llvm_unreachable("invalid interlocking");
}
+static llvm::Value *EmitIntegerExpr(CodeGenFunction &CGF, const Expr *E) {
+ llvm::Value *ArgValue = CGF.EmitScalarExpr(E);
+ llvm::Type *ArgType = ArgValue->getType();
+
+ if (auto *VT = dyn_cast<llvm::FixedVectorType>(ArgType);
+ VT && VT->getElementType()->isIntegerTy(1)) {
+ llvm::Type *StorageType = CGF.ConvertTypeForMem(E->getType());
+ ArgValue = CGF.emitBoolVecConversion(
+ ArgValue, StorageType->getPrimitiveSizeInBits(), "insertvec");
+ ArgValue = CGF.Builder.CreateBitCast(ArgValue, StorageType);
----------------
jhuber6 wrote:
Yes, this is re-using the existing handling for it. But that's a good point
about `clz`. We'll likely need to subtract the difference between the 'true'
vector and the rounded up storage size.
https://github.com/llvm/llvm-project/pull/154203
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits