@@ -22515,31 +22515,32 @@ Value *CodeGenFunction::EmitRISCVCpuIs(const CallExpr *E) {
2251522515Value *CodeGenFunction::EmitRISCVCpuIs(StringRef CPUStr) {
2251622516 llvm::Type *Int32Ty = Builder.getInt32Ty();
2251722517 llvm::Type *Int64Ty = Builder.getInt64Ty();
22518- llvm::Type *StructTy = llvm::StructType::get(Int32Ty, Int64Ty, Int64Ty);
22518+ llvm::StructType *StructTy = llvm::StructType::get(Int32Ty, Int64Ty, Int64Ty);
2251922519 llvm::Constant *RISCVCPUModel =
2252022520 CGM.CreateRuntimeVariable(StructTy, "__riscv_cpu_model");
2252122521 cast<llvm::GlobalValue>(RISCVCPUModel)->setDSOLocal(true);
2252222522
22523- auto loadRISCVCPUID = [&](unsigned Index, llvm::Type *ValueTy ) {
22523+ auto loadRISCVCPUID = [&](unsigned Index) {
2252422524 Value *Ptr = Builder.CreateStructGEP(StructTy, RISCVCPUModel, Index);
22525- Value *CPUID = Builder.CreateAlignedLoad(ValueTy, Ptr, llvm::MaybeAlign());
22525+ Value *CPUID = Builder.CreateAlignedLoad(StructTy->getTypeAtIndex(Index),
22526+ Ptr, llvm::MaybeAlign());
2252622527 return CPUID;
2252722528 };
2252822529
2252922530 const llvm::RISCV::CPUModel CPUModel = llvm::RISCV::getCPUModel(CPUStr);
2253022531
2253122532 // Compare mvendorid.
22532- Value *VendorID = loadRISCVCPUID(0, Int32Ty );
22533+ Value *VendorID = loadRISCVCPUID(0);
2253322534 Value *Result =
2253422535 Builder.CreateICmpEQ(VendorID, Builder.getInt32(CPUModel.MVendorID));
2253522536
2253622537 // Compare marchid.
22537- Value *ArchID = loadRISCVCPUID(1, Int64Ty );
22538+ Value *ArchID = loadRISCVCPUID(1);
2253822539 Result = Builder.CreateAnd(
2253922540 Result, Builder.CreateICmpEQ(ArchID, Builder.getInt64(CPUModel.MArchID)));
2254022541
2254122542 // Compare mimplid.
22542- Value *ImplID = loadRISCVCPUID(2, Int64Ty );
22543+ Value *ImplID = loadRISCVCPUID(2);
2254322544 Result = Builder.CreateAnd(
2254422545 Result, Builder.CreateICmpEQ(ImplID, Builder.getInt64(CPUModel.MImpID)));
2254522546
0 commit comments