//===-- include/llvm/CodeGen/ByteProvider.h - Map bytes ---------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // \file // This file implements ByteProvider. The purpose of ByteProvider is to provide // a map between a target node's byte (byte position is DestOffset) and the // source (and byte position) that provides it (in Src and SrcOffset // respectively) See CodeGen/SelectionDAG/DAGCombiner.cpp MatchLoadCombine // //===----------------------------------------------------------------------===// #ifndef LLVM_CODEGEN_BYTEPROVIDER_H #define LLVM_CODEGEN_BYTEPROVIDER_H #include <optional> #include <type_traits> namespace llvm { /// Represents known origin of an individual byte in combine pattern. The /// value of the byte is either constant zero, or comes from memory / /// some other productive instruction (e.g. arithmetic instructions). /// Bit manipulation instructions like shifts are not ByteProviders, rather /// are used to extract Bytes. template <typename ISelOp> class ByteProvider { … }; } // end namespace llvm #endif // LLVM_CODEGEN_BYTEPROVIDER_H