Я хочу создать LLVM IR для следующего выражения, чтобы добавить скаляр к вектору
[1,2,3,4]+1
Я нашел правильные методы для создания сложения и скалярного выражения, но не для вектора.
Value *L = //Missing code here
Value *R = ConstantFP::get(getGlobalContext(), APFloat(Val));
Value *exp = Builder.CreateFAdd(L, R, "addresult");
Как я могу создать этот вектор?
Сначала убедитесь, что вам действительно нужно вектор то есть тип данных, с которым вы можете работать параллельно (SIMD / SIMT), а не простой массив.
После этого убедитесь, что тип, который вы намереваетесь использовать, правильный (APFloat — произвольная точность с плавающей точкой).
Создание вектора может продолжаться так же, как вы добавляете элементы через insertelement
Type* u32Ty = Type::getInt32Ty( llvmContext );
Type* vecTy = VectorType::get(u32Ty, 4);
Value* emptyVec = UndefValue::get(vecTy);
Constant* index0 = Constant::getIntegerValue(u32Ty, llvm::APInt(32, 0));
Value* insert1 = InsertElementInst(/*First integer value*/, emptyVec, index0, 0);