mirror of
https://github.com/opnsense/src.git
synced 2026-05-28 04:12:45 -04:00
Merge llvm-project release/19.x llvmorg-19.1.7-0-gcd708029e0b2
This updates llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to llvm-project release/19.x llvmorg-19.1.7-0-gcd708029e0b2, a.k.a. 19.1.7 release. PR: 280562 MFC after: 3 days (cherry picked from commit 6c05f3a74f30934ee60919cc97e16ec69b542b06)
This commit is contained in:
parent
6ede5a29d5
commit
dc3f24ea8a
25 changed files with 138 additions and 87 deletions
|
|
@ -6189,6 +6189,11 @@ std::string Driver::GetFilePath(StringRef Name, const ToolChain &TC) const {
|
|||
if (auto P = SearchPaths(TC.getFilePaths()))
|
||||
return *P;
|
||||
|
||||
SmallString<128> R2(ResourceDir);
|
||||
llvm::sys::path::append(R2, "..", "..", Name);
|
||||
if (llvm::sys::fs::exists(Twine(R2)))
|
||||
return std::string(R2);
|
||||
|
||||
return std::string(Name);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -379,9 +379,9 @@ constructHexagonLinkArgs(Compilation &C, const JobAction &JA,
|
|||
if (NeedsXRayDeps)
|
||||
linkXRayRuntimeDeps(HTC, Args, CmdArgs);
|
||||
|
||||
CmdArgs.push_back("-lclang_rt.builtins-hexagon");
|
||||
if (!Args.hasArg(options::OPT_nolibc))
|
||||
CmdArgs.push_back("-lc");
|
||||
CmdArgs.push_back("-lclang_rt.builtins-hexagon");
|
||||
}
|
||||
if (D.CCCIsCXX()) {
|
||||
if (HTC.ShouldLinkCXXStdlib(Args))
|
||||
|
|
|
|||
|
|
@ -512,7 +512,7 @@ void UnwrappedLineParser::calculateBraceTypes(bool ExpectClassBody) {
|
|||
break;
|
||||
do {
|
||||
NextTok = Tokens->getNextToken();
|
||||
} while (NextTok->NewlinesBefore == 0 && NextTok->isNot(tok::eof));
|
||||
} while (!NextTok->HasUnescapedNewline && NextTok->isNot(tok::eof));
|
||||
|
||||
while (NextTok->is(tok::comment))
|
||||
NextTok = Tokens->getNextToken();
|
||||
|
|
|
|||
|
|
@ -11919,7 +11919,7 @@ bool Sema::isStdInitializerList(QualType Ty, QualType *Element) {
|
|||
if (TemplateClass->getIdentifier() !=
|
||||
&PP.getIdentifierTable().get("initializer_list") ||
|
||||
!getStdNamespace()->InEnclosingNamespaceSetOf(
|
||||
TemplateClass->getDeclContext()))
|
||||
TemplateClass->getNonTransparentDeclContext()))
|
||||
return false;
|
||||
// This is a template called std::initializer_list, but is it the right
|
||||
// template?
|
||||
|
|
|
|||
|
|
@ -77,6 +77,8 @@ INTERCEPTOR(void*, malloc, uptr size) {
|
|||
}
|
||||
|
||||
INTERCEPTOR(void, free, void *p) {
|
||||
if (UNLIKELY(!p))
|
||||
return;
|
||||
if (DlsymAlloc::PointerIsMine(p))
|
||||
return DlsymAlloc::Free(p);
|
||||
ENSURE_LSAN_INITED;
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@
|
|||
// _LIBCPP_VERSION represents the version of libc++, which matches the version of LLVM.
|
||||
// Given a LLVM release LLVM XX.YY.ZZ (e.g. LLVM 17.0.1 == 17.00.01), _LIBCPP_VERSION is
|
||||
// defined to XXYYZZ.
|
||||
# define _LIBCPP_VERSION 190105
|
||||
# define _LIBCPP_VERSION 190107
|
||||
|
||||
# define _LIBCPP_CONCAT_IMPL(_X, _Y) _X##_Y
|
||||
# define _LIBCPP_CONCAT(_X, _Y) _LIBCPP_CONCAT_IMPL(_X, _Y)
|
||||
|
|
|
|||
|
|
@ -838,7 +838,7 @@ private:
|
|||
SDValue ScalarizeVecRes_BUILD_VECTOR(SDNode *N);
|
||||
SDValue ScalarizeVecRes_EXTRACT_SUBVECTOR(SDNode *N);
|
||||
SDValue ScalarizeVecRes_FP_ROUND(SDNode *N);
|
||||
SDValue ScalarizeVecRes_ExpOp(SDNode *N);
|
||||
SDValue ScalarizeVecRes_UnaryOpWithExtraInput(SDNode *N);
|
||||
SDValue ScalarizeVecRes_INSERT_VECTOR_ELT(SDNode *N);
|
||||
SDValue ScalarizeVecRes_LOAD(LoadSDNode *N);
|
||||
SDValue ScalarizeVecRes_SCALAR_TO_VECTOR(SDNode *N);
|
||||
|
|
|
|||
|
|
@ -58,7 +58,11 @@ void DAGTypeLegalizer::ScalarizeVectorResult(SDNode *N, unsigned ResNo) {
|
|||
case ISD::BUILD_VECTOR: R = ScalarizeVecRes_BUILD_VECTOR(N); break;
|
||||
case ISD::EXTRACT_SUBVECTOR: R = ScalarizeVecRes_EXTRACT_SUBVECTOR(N); break;
|
||||
case ISD::FP_ROUND: R = ScalarizeVecRes_FP_ROUND(N); break;
|
||||
case ISD::FPOWI: R = ScalarizeVecRes_ExpOp(N); break;
|
||||
case ISD::AssertZext:
|
||||
case ISD::AssertSext:
|
||||
case ISD::FPOWI:
|
||||
R = ScalarizeVecRes_UnaryOpWithExtraInput(N);
|
||||
break;
|
||||
case ISD::INSERT_VECTOR_ELT: R = ScalarizeVecRes_INSERT_VECTOR_ELT(N); break;
|
||||
case ISD::LOAD: R = ScalarizeVecRes_LOAD(cast<LoadSDNode>(N));break;
|
||||
case ISD::SCALAR_TO_VECTOR: R = ScalarizeVecRes_SCALAR_TO_VECTOR(N); break;
|
||||
|
|
@ -426,7 +430,7 @@ SDValue DAGTypeLegalizer::ScalarizeVecRes_FP_ROUND(SDNode *N) {
|
|||
N->getOperand(1));
|
||||
}
|
||||
|
||||
SDValue DAGTypeLegalizer::ScalarizeVecRes_ExpOp(SDNode *N) {
|
||||
SDValue DAGTypeLegalizer::ScalarizeVecRes_UnaryOpWithExtraInput(SDNode *N) {
|
||||
SDValue Op = GetScalarizedVector(N->getOperand(0));
|
||||
return DAG.getNode(N->getOpcode(), SDLoc(N), Op.getValueType(), Op,
|
||||
N->getOperand(1));
|
||||
|
|
|
|||
|
|
@ -1326,6 +1326,22 @@ static bool isInSymtab(const MCSymbolWasm &Sym) {
|
|||
return true;
|
||||
}
|
||||
|
||||
static bool isSectionReferenced(MCAssembler &Asm, MCSectionWasm &Section) {
|
||||
StringRef SectionName = Section.getName();
|
||||
|
||||
for (const MCSymbol &S : Asm.symbols()) {
|
||||
const auto &WS = static_cast<const MCSymbolWasm &>(S);
|
||||
if (WS.isData() && WS.isInSection()) {
|
||||
auto &RefSection = static_cast<MCSectionWasm &>(WS.getSection());
|
||||
if (RefSection.getName() == SectionName) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void WasmObjectWriter::prepareImports(
|
||||
SmallVectorImpl<wasm::WasmImport> &Imports, MCAssembler &Asm) {
|
||||
// For now, always emit the memory import, since loads and stores are not
|
||||
|
|
@ -1482,8 +1498,10 @@ uint64_t WasmObjectWriter::writeOneObject(MCAssembler &Asm,
|
|||
LLVM_DEBUG(dbgs() << "Processing Section " << SectionName << " group "
|
||||
<< Section.getGroup() << "\n";);
|
||||
|
||||
// .init_array sections are handled specially elsewhere.
|
||||
if (SectionName.starts_with(".init_array"))
|
||||
// .init_array sections are handled specially elsewhere, include them in
|
||||
// data segments if and only if referenced by a symbol.
|
||||
if (SectionName.starts_with(".init_array") &&
|
||||
!isSectionReferenced(Asm, Section))
|
||||
continue;
|
||||
|
||||
// Code is handled separately
|
||||
|
|
@ -1853,49 +1871,54 @@ uint64_t WasmObjectWriter::writeOneObject(MCAssembler &Asm,
|
|||
if (EmptyFrag.getKind() != MCFragment::FT_Data)
|
||||
report_fatal_error(".init_array section should be aligned");
|
||||
|
||||
const MCFragment &AlignFrag = *EmptyFrag.getNext();
|
||||
if (AlignFrag.getKind() != MCFragment::FT_Align)
|
||||
report_fatal_error(".init_array section should be aligned");
|
||||
if (cast<MCAlignFragment>(AlignFrag).getAlignment() !=
|
||||
Align(is64Bit() ? 8 : 4))
|
||||
report_fatal_error(".init_array section should be aligned for pointers");
|
||||
|
||||
const MCFragment &Frag = *AlignFrag.getNext();
|
||||
if (Frag.hasInstructions() || Frag.getKind() != MCFragment::FT_Data)
|
||||
report_fatal_error("only data supported in .init_array section");
|
||||
|
||||
uint16_t Priority = UINT16_MAX;
|
||||
unsigned PrefixLength = strlen(".init_array");
|
||||
if (WS.getName().size() > PrefixLength) {
|
||||
if (WS.getName()[PrefixLength] != '.')
|
||||
const MCFragment *nextFrag = EmptyFrag.getNext();
|
||||
while (nextFrag != nullptr) {
|
||||
const MCFragment &AlignFrag = *nextFrag;
|
||||
if (AlignFrag.getKind() != MCFragment::FT_Align)
|
||||
report_fatal_error(".init_array section should be aligned");
|
||||
if (cast<MCAlignFragment>(AlignFrag).getAlignment() !=
|
||||
Align(is64Bit() ? 8 : 4))
|
||||
report_fatal_error(
|
||||
".init_array section priority should start with '.'");
|
||||
if (WS.getName().substr(PrefixLength + 1).getAsInteger(10, Priority))
|
||||
report_fatal_error("invalid .init_array section priority");
|
||||
}
|
||||
const auto &DataFrag = cast<MCDataFragment>(Frag);
|
||||
const SmallVectorImpl<char> &Contents = DataFrag.getContents();
|
||||
for (const uint8_t *
|
||||
P = (const uint8_t *)Contents.data(),
|
||||
*End = (const uint8_t *)Contents.data() + Contents.size();
|
||||
P != End; ++P) {
|
||||
if (*P != 0)
|
||||
report_fatal_error("non-symbolic data in .init_array section");
|
||||
}
|
||||
for (const MCFixup &Fixup : DataFrag.getFixups()) {
|
||||
assert(Fixup.getKind() ==
|
||||
MCFixup::getKindForSize(is64Bit() ? 8 : 4, false));
|
||||
const MCExpr *Expr = Fixup.getValue();
|
||||
auto *SymRef = dyn_cast<MCSymbolRefExpr>(Expr);
|
||||
if (!SymRef)
|
||||
report_fatal_error("fixups in .init_array should be symbol references");
|
||||
const auto &TargetSym = cast<const MCSymbolWasm>(SymRef->getSymbol());
|
||||
if (TargetSym.getIndex() == InvalidIndex)
|
||||
report_fatal_error("symbols in .init_array should exist in symtab");
|
||||
if (!TargetSym.isFunction())
|
||||
report_fatal_error("symbols in .init_array should be for functions");
|
||||
InitFuncs.push_back(
|
||||
std::make_pair(Priority, TargetSym.getIndex()));
|
||||
".init_array section should be aligned for pointers");
|
||||
|
||||
const MCFragment &Frag = *AlignFrag.getNext();
|
||||
nextFrag = Frag.getNext();
|
||||
if (Frag.hasInstructions() || Frag.getKind() != MCFragment::FT_Data)
|
||||
report_fatal_error("only data supported in .init_array section");
|
||||
|
||||
uint16_t Priority = UINT16_MAX;
|
||||
unsigned PrefixLength = strlen(".init_array");
|
||||
if (WS.getName().size() > PrefixLength) {
|
||||
if (WS.getName()[PrefixLength] != '.')
|
||||
report_fatal_error(
|
||||
".init_array section priority should start with '.'");
|
||||
if (WS.getName().substr(PrefixLength + 1).getAsInteger(10, Priority))
|
||||
report_fatal_error("invalid .init_array section priority");
|
||||
}
|
||||
const auto &DataFrag = cast<MCDataFragment>(Frag);
|
||||
const SmallVectorImpl<char> &Contents = DataFrag.getContents();
|
||||
for (const uint8_t *
|
||||
P = (const uint8_t *)Contents.data(),
|
||||
*End = (const uint8_t *)Contents.data() + Contents.size();
|
||||
P != End; ++P) {
|
||||
if (*P != 0)
|
||||
report_fatal_error("non-symbolic data in .init_array section");
|
||||
}
|
||||
for (const MCFixup &Fixup : DataFrag.getFixups()) {
|
||||
assert(Fixup.getKind() ==
|
||||
MCFixup::getKindForSize(is64Bit() ? 8 : 4, false));
|
||||
const MCExpr *Expr = Fixup.getValue();
|
||||
auto *SymRef = dyn_cast<MCSymbolRefExpr>(Expr);
|
||||
if (!SymRef)
|
||||
report_fatal_error(
|
||||
"fixups in .init_array should be symbol references");
|
||||
const auto &TargetSym = cast<const MCSymbolWasm>(SymRef->getSymbol());
|
||||
if (TargetSym.getIndex() == InvalidIndex)
|
||||
report_fatal_error("symbols in .init_array should exist in symtab");
|
||||
if (!TargetSym.isFunction())
|
||||
report_fatal_error("symbols in .init_array should be for functions");
|
||||
InitFuncs.push_back(std::make_pair(Priority, TargetSym.getIndex()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3796,6 +3796,8 @@ EVT HexagonTargetLowering::getOptimalMemOpType(
|
|||
bool HexagonTargetLowering::allowsMemoryAccess(
|
||||
LLVMContext &Context, const DataLayout &DL, EVT VT, unsigned AddrSpace,
|
||||
Align Alignment, MachineMemOperand::Flags Flags, unsigned *Fast) const {
|
||||
if (!VT.isSimple())
|
||||
return false;
|
||||
MVT SVT = VT.getSimpleVT();
|
||||
if (Subtarget.isHVXVectorType(SVT, true))
|
||||
return allowsHvxMemoryAccess(SVT, Flags, Fast);
|
||||
|
|
@ -3806,6 +3808,8 @@ bool HexagonTargetLowering::allowsMemoryAccess(
|
|||
bool HexagonTargetLowering::allowsMisalignedMemoryAccesses(
|
||||
EVT VT, unsigned AddrSpace, Align Alignment, MachineMemOperand::Flags Flags,
|
||||
unsigned *Fast) const {
|
||||
if (!VT.isSimple())
|
||||
return false;
|
||||
MVT SVT = VT.getSimpleVT();
|
||||
if (Subtarget.isHVXVectorType(SVT, true))
|
||||
return allowsHvxMisalignedMemoryAccesses(SVT, Flags, Fast);
|
||||
|
|
|
|||
|
|
@ -1396,8 +1396,9 @@ RISCVTargetLowering::RISCVTargetLowering(const TargetMachine &TM,
|
|||
}
|
||||
|
||||
// Custom-legalize bitcasts from fixed-length vectors to scalar types.
|
||||
setOperationAction(ISD::BITCAST, {MVT::i8, MVT::i16, MVT::i32, MVT::i64},
|
||||
Custom);
|
||||
setOperationAction(ISD::BITCAST, {MVT::i8, MVT::i16, MVT::i32}, Custom);
|
||||
if (Subtarget.is64Bit())
|
||||
setOperationAction(ISD::BITCAST, MVT::i64, Custom);
|
||||
if (Subtarget.hasStdExtZfhminOrZhinxmin())
|
||||
setOperationAction(ISD::BITCAST, MVT::f16, Custom);
|
||||
if (Subtarget.hasStdExtFOrZfinx())
|
||||
|
|
@ -6317,7 +6318,8 @@ SDValue RISCVTargetLowering::LowerOperation(SDValue Op,
|
|||
DAG.getNode(RISCVISD::FMV_W_X_RV64, DL, MVT::f32, NewOp0);
|
||||
return FPConv;
|
||||
}
|
||||
if (VT == MVT::f64 && Op0VT == MVT::i64 && XLenVT == MVT::i32) {
|
||||
if (VT == MVT::f64 && Op0VT == MVT::i64 && !Subtarget.is64Bit() &&
|
||||
Subtarget.hasStdExtDOrZdinx()) {
|
||||
SDValue Lo, Hi;
|
||||
std::tie(Lo, Hi) = DAG.SplitScalar(Op0, DL, MVT::i32, MVT::i32);
|
||||
SDValue RetReg =
|
||||
|
|
@ -12616,7 +12618,8 @@ void RISCVTargetLowering::ReplaceNodeResults(SDNode *N,
|
|||
SDValue FPConv =
|
||||
DAG.getNode(RISCVISD::FMV_X_ANYEXTW_RV64, DL, MVT::i64, Op0);
|
||||
Results.push_back(DAG.getNode(ISD::TRUNCATE, DL, MVT::i32, FPConv));
|
||||
} else if (VT == MVT::i64 && Op0VT == MVT::f64 && XLenVT == MVT::i32) {
|
||||
} else if (VT == MVT::i64 && Op0VT == MVT::f64 && !Subtarget.is64Bit() &&
|
||||
Subtarget.hasStdExtDOrZdinx()) {
|
||||
SDValue NewReg = DAG.getNode(RISCVISD::SplitF64, DL,
|
||||
DAG.getVTList(MVT::i32, MVT::i32), Op0);
|
||||
SDValue RetReg = DAG.getNode(ISD::BUILD_PAIR, DL, MVT::i64,
|
||||
|
|
|
|||
|
|
@ -2536,6 +2536,13 @@ bool RISCVInstrInfo::verifyInstruction(const MachineInstr &MI,
|
|||
}
|
||||
}
|
||||
|
||||
if (int Idx = RISCVII::getFRMOpNum(Desc);
|
||||
Idx >= 0 && MI.getOperand(Idx).getImm() == RISCVFPRndMode::DYN &&
|
||||
!MI.readsRegister(RISCV::FRM, /*TRI=*/nullptr)) {
|
||||
ErrInfo = "dynamic rounding mode should read FRM";
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -6471,7 +6471,7 @@ defm PseudoVFRDIV : VPseudoVFRDIV_VF_RM;
|
|||
//===----------------------------------------------------------------------===//
|
||||
// 13.5. Vector Widening Floating-Point Multiply
|
||||
//===----------------------------------------------------------------------===//
|
||||
let mayRaiseFPException = true, hasSideEffects = 0 in {
|
||||
let mayRaiseFPException = true, hasSideEffects = 0, hasPostISelHook = 1 in {
|
||||
defm PseudoVFWMUL : VPseudoVWMUL_VV_VF_RM;
|
||||
}
|
||||
|
||||
|
|
@ -6504,7 +6504,7 @@ defm PseudoVFWMACCBF16 : VPseudoVWMAC_VV_VF_BF_RM;
|
|||
//===----------------------------------------------------------------------===//
|
||||
// 13.8. Vector Floating-Point Square-Root Instruction
|
||||
//===----------------------------------------------------------------------===//
|
||||
let mayRaiseFPException = true, hasSideEffects = 0 in
|
||||
let mayRaiseFPException = true, hasSideEffects = 0, hasPostISelHook = 1 in
|
||||
defm PseudoVFSQRT : VPseudoVSQR_V_RM;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
|
@ -6516,7 +6516,7 @@ defm PseudoVFRSQRT7 : VPseudoVRCP_V;
|
|||
//===----------------------------------------------------------------------===//
|
||||
// 13.10. Vector Floating-Point Reciprocal Estimate Instruction
|
||||
//===----------------------------------------------------------------------===//
|
||||
let mayRaiseFPException = true, hasSideEffects = 0 in
|
||||
let mayRaiseFPException = true, hasSideEffects = 0, hasPostISelHook = 1 in
|
||||
defm PseudoVFREC7 : VPseudoVRCP_V_RM;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
|
@ -6627,9 +6627,10 @@ defm PseudoVFNCVT_F_X : VPseudoVNCVTF_W_RM;
|
|||
defm PseudoVFNCVT_RM_F_XU : VPseudoVNCVTF_RM_W;
|
||||
defm PseudoVFNCVT_RM_F_X : VPseudoVNCVTF_RM_W;
|
||||
|
||||
let hasSideEffects = 0, hasPostISelHook = 1 in
|
||||
let hasSideEffects = 0, hasPostISelHook = 1 in {
|
||||
defm PseudoVFNCVT_F_F : VPseudoVNCVTD_W_RM;
|
||||
defm PseudoVFNCVTBF16_F_F : VPseudoVNCVTD_W_RM;
|
||||
}
|
||||
|
||||
defm PseudoVFNCVT_ROD_F_F : VPseudoVNCVTD_W;
|
||||
} // mayRaiseFPException = true
|
||||
|
|
@ -6665,8 +6666,7 @@ let Predicates = [HasVInstructionsAnyF] in {
|
|||
//===----------------------------------------------------------------------===//
|
||||
// 14.3. Vector Single-Width Floating-Point Reduction Instructions
|
||||
//===----------------------------------------------------------------------===//
|
||||
let mayRaiseFPException = true,
|
||||
hasSideEffects = 0 in {
|
||||
let mayRaiseFPException = true, hasSideEffects = 0, hasPostISelHook = 1 in {
|
||||
defm PseudoVFREDOSUM : VPseudoVFREDO_VS_RM;
|
||||
defm PseudoVFREDUSUM : VPseudoVFRED_VS_RM;
|
||||
}
|
||||
|
|
@ -6678,9 +6678,8 @@ defm PseudoVFREDMAX : VPseudoVFREDMINMAX_VS;
|
|||
//===----------------------------------------------------------------------===//
|
||||
// 14.4. Vector Widening Floating-Point Reduction Instructions
|
||||
//===----------------------------------------------------------------------===//
|
||||
let IsRVVWideningReduction = 1,
|
||||
hasSideEffects = 0,
|
||||
mayRaiseFPException = true in {
|
||||
let IsRVVWideningReduction = 1, hasSideEffects = 0, mayRaiseFPException = true,
|
||||
hasPostISelHook = 1 in {
|
||||
defm PseudoVFWREDUSUM : VPseudoVFWRED_VS_RM;
|
||||
defm PseudoVFWREDOSUM : VPseudoVFWREDO_VS_RM;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -694,7 +694,7 @@ let Predicates = [HasVendorXCVmem, IsRV32], AddedComplexity = 1 in {
|
|||
def : CVStriPat<post_store, CV_SW_ri_inc>;
|
||||
|
||||
def : CVStrriPat<post_truncsti8, CV_SB_rr_inc>;
|
||||
def : CVStrriPat<post_truncsti16, CV_SH_ri_inc>;
|
||||
def : CVStrriPat<post_truncsti16, CV_SH_rr_inc>;
|
||||
def : CVStrriPat<post_store, CV_SW_rr_inc>;
|
||||
|
||||
def : CVStrrPat<truncstorei8, CV_SB_rr>;
|
||||
|
|
|
|||
|
|
@ -217,7 +217,8 @@ let Predicates = [HasVendorXSfvfwmaccqqq], DecoderNamespace = "XSfvfwmaccqqq" in
|
|||
def VFWMACC_4x4x4 : CustomSiFiveVMACC<0b111100, OPFVV, "sf.vfwmacc.4x4x4">;
|
||||
}
|
||||
|
||||
let Predicates = [HasVendorXSfvfnrclipxfqf], DecoderNamespace = "XSfvfnrclipxfqf" in {
|
||||
let Predicates = [HasVendorXSfvfnrclipxfqf], DecoderNamespace = "XSfvfnrclipxfqf",
|
||||
Uses = [FRM] in {
|
||||
def VFNRCLIP_XU_F_QF : CustomSiFiveVFNRCLIP<0b100010, OPFVF, "sf.vfnrclip.xu.f.qf">;
|
||||
def VFNRCLIP_X_F_QF : CustomSiFiveVFNRCLIP<0b100011, OPFVF, "sf.vfnrclip.x.f.qf">;
|
||||
}
|
||||
|
|
@ -399,7 +400,7 @@ multiclass VPseudoSiFiveVFWMACC<string Constraint = ""> {
|
|||
|
||||
multiclass VPseudoSiFiveVFNRCLIP<string Constraint = "@earlyclobber $rd"> {
|
||||
foreach i = 0-4 in
|
||||
let hasSideEffects = 0 in
|
||||
let hasSideEffects = 0, hasPostISelHook = 1 in
|
||||
defm "Pseudo" # NAME : VPseudoBinaryRoundingMode<MxListW[i].vrclass,
|
||||
MxListVF4[i].vrclass,
|
||||
FPR32, MxListW[i],
|
||||
|
|
|
|||
|
|
@ -811,8 +811,7 @@ static bool foldConsecutiveLoads(Instruction &I, const DataLayout &DL,
|
|||
APInt Offset1(DL.getIndexTypeSizeInBits(Load1Ptr->getType()), 0);
|
||||
Load1Ptr = Load1Ptr->stripAndAccumulateConstantOffsets(
|
||||
DL, Offset1, /* AllowNonInbounds */ true);
|
||||
Load1Ptr = Builder.CreatePtrAdd(Load1Ptr,
|
||||
Builder.getInt32(Offset1.getZExtValue()));
|
||||
Load1Ptr = Builder.CreatePtrAdd(Load1Ptr, Builder.getInt(Offset1));
|
||||
}
|
||||
// Generate wider load.
|
||||
NewLoad = Builder.CreateAlignedLoad(WiderType, Load1Ptr, LI1->getAlign(),
|
||||
|
|
|
|||
|
|
@ -1249,8 +1249,9 @@ static BasicBlock *buildClonedLoopBlocks(
|
|||
assert(VMap.lookup(&I) == &ClonedI && "Mismatch in the value map!");
|
||||
|
||||
// Forget SCEVs based on exit phis in case SCEV looked through the phi.
|
||||
if (SE && isa<PHINode>(I))
|
||||
SE->forgetValue(&I);
|
||||
if (SE)
|
||||
if (auto *PN = dyn_cast<PHINode>(&I))
|
||||
SE->forgetLcssaPhiWithNewPredecessor(&L, PN);
|
||||
|
||||
BasicBlock::iterator InsertPt = MergeBB->getFirstInsertionPt();
|
||||
|
||||
|
|
|
|||
|
|
@ -18596,8 +18596,11 @@ bool SLPVectorizerPass::vectorizeCmpInsts(iterator_range<ItT> CmpInsts,
|
|||
if (R.isDeleted(I))
|
||||
continue;
|
||||
for (Value *Op : I->operands())
|
||||
if (auto *RootOp = dyn_cast<Instruction>(Op))
|
||||
if (auto *RootOp = dyn_cast<Instruction>(Op)) {
|
||||
Changed |= vectorizeRootInstruction(nullptr, RootOp, BB, R, TTI);
|
||||
if (R.isDeleted(I))
|
||||
break;
|
||||
}
|
||||
}
|
||||
// Try to vectorize operands as vector bundles.
|
||||
for (CmpInst *I : CmpInsts) {
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
#define LLVM_REVISION "llvmorg-19.1.5-0-gab4b5a2db582"
|
||||
#define LLVM_REVISION "llvmorg-19.1.7-0-gcd708029e0b2"
|
||||
#define LLVM_REPOSITORY "https://github.com/llvm/llvm-project.git"
|
||||
|
||||
#define CLANG_REVISION "llvmorg-19.1.5-0-gab4b5a2db582"
|
||||
#define CLANG_REVISION "llvmorg-19.1.7-0-gcd708029e0b2"
|
||||
#define CLANG_REPOSITORY "https://github.com/llvm/llvm-project.git"
|
||||
|
||||
#define LLDB_REVISION "llvmorg-19.1.5-0-gab4b5a2db582"
|
||||
#define LLDB_REVISION "llvmorg-19.1.7-0-gcd708029e0b2"
|
||||
#define LLDB_REPOSITORY "https://github.com/llvm/llvm-project.git"
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
#define CLANG_VERSION 19.1.5
|
||||
#define CLANG_VERSION_STRING "19.1.5"
|
||||
#define CLANG_VERSION 19.1.7
|
||||
#define CLANG_VERSION_STRING "19.1.7"
|
||||
#define CLANG_VERSION_MAJOR 19
|
||||
#define CLANG_VERSION_MAJOR_STRING "19"
|
||||
#define CLANG_VERSION_MINOR 1
|
||||
#define CLANG_VERSION_PATCHLEVEL 5
|
||||
#define CLANG_VERSION_PATCHLEVEL 7
|
||||
|
||||
#define CLANG_VENDOR "FreeBSD "
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
// Local identifier in __FreeBSD_version style
|
||||
#define LLD_FREEBSD_VERSION 1400007
|
||||
|
||||
#define LLD_VERSION_STRING "19.1.5 (FreeBSD llvmorg-19.1.5-0-gab4b5a2db582-" __XSTRING(LLD_FREEBSD_VERSION) ")"
|
||||
#define LLD_VERSION_STRING "19.1.7 (FreeBSD llvmorg-19.1.7-0-gcd708029e0b2-" __XSTRING(LLD_FREEBSD_VERSION) ")"
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
#define LLDB_VERSION 19.1.5
|
||||
#define LLDB_VERSION_STRING "19.1.5"
|
||||
#define LLDB_VERSION 19.1.7
|
||||
#define LLDB_VERSION_STRING "19.1.7"
|
||||
#define LLDB_VERSION_MAJOR 19
|
||||
#define LLDB_VERSION_MINOR 1
|
||||
#define LLDB_VERSION_PATCH 5
|
||||
#define LLDB_VERSION_PATCH 7
|
||||
/* #undef LLDB_FULL_VERSION_STRING */
|
||||
|
|
|
|||
|
|
@ -338,10 +338,10 @@
|
|||
#define PACKAGE_NAME "LLVM"
|
||||
|
||||
/* Define to the full name and version of this package. */
|
||||
#define PACKAGE_STRING "LLVM 19.1.5"
|
||||
#define PACKAGE_STRING "LLVM 19.1.7"
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#define PACKAGE_VERSION "19.1.5"
|
||||
#define PACKAGE_VERSION "19.1.7"
|
||||
|
||||
/* Define to the vendor of this package. */
|
||||
/* #undef PACKAGE_VENDOR */
|
||||
|
|
|
|||
|
|
@ -176,10 +176,10 @@
|
|||
#define LLVM_VERSION_MINOR 1
|
||||
|
||||
/* Patch version of the LLVM API */
|
||||
#define LLVM_VERSION_PATCH 5
|
||||
#define LLVM_VERSION_PATCH 7
|
||||
|
||||
/* LLVM version string */
|
||||
#define LLVM_VERSION_STRING "19.1.5"
|
||||
#define LLVM_VERSION_STRING "19.1.7"
|
||||
|
||||
/* Whether LLVM records statistics for use with GetStatistics(),
|
||||
* PrintStatistics() or PrintStatisticsJSON()
|
||||
|
|
|
|||
|
|
@ -1,2 +1,2 @@
|
|||
#define LLVM_REVISION "llvmorg-19.1.5-0-gab4b5a2db582"
|
||||
#define LLVM_REVISION "llvmorg-19.1.7-0-gcd708029e0b2"
|
||||
#define LLVM_REPOSITORY "https://github.com/llvm/llvm-project.git"
|
||||
|
|
|
|||
Loading…
Reference in a new issue