Lines Matching defs:ICV
300 /// The name of the ICV.
303 /// Environment variable associated with this ICV.
312 /// Setter RTL function associated with this ICV.
315 /// Getter RTL function associated with this ICV.
318 /// RTL Function corresponding to the override clause of this ICV
431 /// Map from ICV kind to the ICV description.
441 auto &ICV = ICVs[_Name]; \
442 ICV.Setter = RTL; \
446 auto &ICV = ICVs[Name]; \
447 ICV.Getter = RTL; \
451 auto &ICV = ICVs[Enum]; \
452 ICV.Name = _Name; \
453 ICV.Kind = Enum; \
454 ICV.InitKind = Init; \
455 ICV.EnvVarName = _EnvVarName; \
456 switch (ICV.InitKind) { \
458 ICV.InitValue = nullptr; \
461 ICV.InitValue = ConstantInt::get( \
465 ICV.InitValue = ConstantInt::getFalse(OMPBuilder.Int1->getContext()); \
988 /// Print initial ICV values for testing.
995 for (auto ICV : ICVs) {
996 auto ICVInfo = OMPInfoCache.ICVs[ICV];
998 return ORA << "OpenMP ICV " << ore::NV("OpenMPICV", ICVInfo.Name)
1349 // TODO: ICV tracking to detect compatibility.
2245 /// Abstract Attribute for tracking ICV values.
2259 /// Return the value with which \p I can be replaced for specific \p ICV.
2260 virtual std::optional<Value *> getReplacementValue(InternalControlVar ICV,
2266 /// Return an assumed unique ICV value if a single candidate is found. If
2270 getUniqueReplacementValue(InternalControlVar ICV) const = 0;
2307 // Map of ICV to their values at specific program point.
2319 for (InternalControlVar ICV : TrackableICVs) {
2320 auto &SetterRFI = OMPInfoCache.RFIs[OMPInfoCache.ICVs[ICV].Setter];
2322 auto &ValuesMap = ICVReplacementValuesMap[ICV];
2337 std::optional<Value *> ReplVal = getValueForCall(A, I, ICV);
2344 // Track all changes of an ICV.
2365 InternalControlVar &ICV) const {
2373 auto &GetterRFI = OMPInfoCache.RFIs[OMPInfoCache.ICVs[ICV].Getter];
2374 auto &SetterRFI = OMPInfoCache.RFIs[OMPInfoCache.ICVs[ICV].Setter];
2377 // Indirect call, assume ICV changes.
2383 if (ICVReplacementValuesMap[ICV].count(&I))
2384 return ICVReplacementValuesMap[ICV].lookup(&I);
2389 // Since we don't know, assume it changes the ICV.
2398 ICVTrackingAA->getUniqueReplacementValue(ICV);
2410 getUniqueReplacementValue(InternalControlVar ICV) const override {
2414 /// Return the value with which \p I can be replaced for specific \p ICV.
2415 std::optional<Value *> getReplacementValue(InternalControlVar ICV,
2418 const auto &ValuesMap = ICVReplacementValuesMap[ICV];
2436 // ICV.
2454 std::optional<Value *> NewReplVal = getValueForCall(A, *CurrInst, ICV);
2501 // Map of ICV to their values at specific program point.
2506 /// Return the value with which \p I can be replaced for specific \p ICV.
2508 getUniqueReplacementValue(InternalControlVar ICV) const override {
2509 return ICVReplacementValuesMap[ICV];
2520 for (InternalControlVar ICV : TrackableICVs) {
2521 std::optional<Value *> &ReplVal = ICVReplacementValuesMap[ICV];
2526 ICVTrackingAA->getReplacementValue(ICV, &I, A);
2528 // If we found a second ICV value there is no unique returned value.
2561 // We only initialize this AA for getters, so we need to know which ICV it
2564 for (InternalControlVar ICV : TrackableICVs) {
2565 auto ICVInfo = OMPInfoCache.ICVs[ICV];
2573 /// Unknown ICV.
2602 // We don't have any information, so we assume it changes the ICV.
2617 // \p ICV.
2619 getUniqueReplacementValue(InternalControlVar ICV) const override {
2641 // Map of ICV to their values at specific program point.
2647 /// \p ICV.
2649 getUniqueReplacementValue(InternalControlVar ICV) const override {
2650 return ICVReplacementValuesMap[ICV];
2659 // We don't have any information, so we assume it changes the ICV.
2663 for (InternalControlVar ICV : TrackableICVs) {
2664 std::optional<Value *> &ReplVal = ICVReplacementValuesMap[ICV];
2666 ICVTrackingAA->getUniqueReplacementValue(ICV);