3atv精品不卡视频,97人人超碰国产精品最新,中文字幕av一区二区三区人妻少妇,久久久精品波多野结衣,日韩一区二区三区精品

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

AI基础架构Pass Infrastructure

發布時間:2023/11/28 生活经验 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AI基础架构Pass Infrastructure 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

AI基礎架構Pass Infrastructure
? Operation Pass
o OperationPass : Op-Specific
o OperationPass : Op-Agnostic
o Dependent Dialects
o Initialization
? Analysis Management
o Querying Analyses
o Preserving Analyses
? Pass Failure
? Pass Manager
o OpPassManager
? Dynamic Pass Pipelines
? Instance Specific Pass Options
? Pass Statistics
? Pass Registration
o Pass Pipeline Registration
o Textual Pass Pipeline Specification
? Declarative Pass Specification
o Tablegen Specification
? Pass Instrumentation
o Standard Instrumentations
? Crash and Failure Reproduction
o Local Reproducer Generation
Passes represent the basic infrastructure for transformation and optimization. This document provides an overview of the pass infrastructure in MLIR and how to use it.
See MLIR specification for more information about MLIR and its core aspects, such as the IR structure and operations.
See MLIR Rewrites for a quick start on graph rewriting in MLIR. If a transformation involves pattern matching operation DAGs, this is a great place to start.
Passes代表了轉換和優化的基本基礎架構。本文概述了MLIR中的Passes基礎結構以及如何使用。
有關MLIR 及其核心方面(如IR結構和算子)的更多信息,請參見 MLIR規范。
有關 在MLIR中進行圖形重寫的快速入門,請參見 MLIR Rewrites。如果轉換涉及模式匹配算子作DAG,那么這是一個很好的起點。
Operation Pass
In MLIR, the main unit of abstraction and transformation is an operation . As such, the pass manager is designed to work on instances of operations at different levels of nesting. The structure of the pass manager , and the concept of nesting, is detailed further below. All passes in MLIR derive from OperationPass and adhere to the following restrictions; any noncompliance will lead to problematic behavior in multithreaded and other advanced scenarios:
? Modify any state referenced or relied upon outside the current being operated on. This includes adding or removing operations from the parent block, changing the attributes(depending on the contract of the current operation)/operands/results/successors of the current operation.
? Modify the state of another operation not nested within the current operation being operated on.
o Other threads may be operating on these operations simultaneously.
? Inspect the state of sibling operations.
o Other threads may be modifying these operations in parallel.
o Inspecting the state of ancestor/parent operations is permitted.
? Maintain mutable pass state across invocations of runOnOperation. A pass may be run on many different operations with no guarantee of execution order.
o When multithreading, a specific pass instance may not even execute on all operations within the IR. As such, a pass should not rely on running on all operations.
? Maintain any global mutable state, e.g. static variables within the source file. All mutable state should be maintained by an instance of the pass.
? Must be copy-constructible
o Multiple instances of the pass may be created by the pass manager to process operations in parallel.
When creating an operation pass, there are two different types to choose from depending on the usage scenario:
在MLIR中,抽象和轉換的主要單元是一個 算子 。這樣,通過管理器被設計為在不同嵌套級別上的算子實例上工作。Passes管理器的結構 和嵌套的概念將詳細介紹。MLIR中的所有Passes均源自OperationPass并遵守限制;在多線程和其它高級方案中,任何不符合都會導致有問題的行為:
? 修改正在算子的電流之外引用或依賴的任何狀態。這包括在父塊中添加或刪除算子,更改屬性(取決于當前算子的協議)/當前算子的算子數/結果/后繼對象。
? 修改另一個未嵌套在當前算子中的算子的狀態。
o 其它線程可能同時在這些算子上運行。
? 檢查同級算子的狀態。
o 其它線程可能正在并行修改這些算子。
o 允許檢查祖先/父項算子的狀態。
? 跨調用保持可變的通過狀態runOnOperation。傳遞可能在許多不同的算子上運行,而不能保證執行順序。
o 在進行多線程處理時,特定的傳遞實例甚至可能不會在IR內的所有算子上執行。因此,傳遞不應該依賴于所有算子上的運行。
? 保持任何全局可變狀態,例如源文件中的靜態變量。所有可變狀態都應通過傳遞實例來維護。
? 必須是可復制的
o 流程管理器可以創建流程的多個實例,以并行處理算子。
創建算子傳遞時,根據使用情況,有兩種不同的類型可供選擇:
OperationPass : Op-Specific
An op-specific operation pass operates explicitly on a given operation type. This operation type must adhere to the restrictions set by the pass manager for pass execution.
To define an op-specific operation pass, a derived class must adhere to the following:
? Inherit from the CRTP class OperationPass and provide the operation type as an additional template parameter.
? Override the virtual void runOnOperation() method.
A simple pass may look like:
在op-specific算子上傳遞給定類型明確的算子。此類型必須遵守pass管理器為pass執行設置的限制。
要定義特定于算子的通道,派生類必須遵守以下規定:
? 繼承自CRTP類,OperationPass并提供算子類型作為附加模板參數。
? 覆蓋虛擬void runOnOperation()方法。
一個簡單的pass可能看起來像:
namespace {
/// Here we utilize the CRTP PassWrapper utility class to provide some
/// necessary utility hooks. This is only necessary for passes defined directly
/// in C++. Passes defined declaratively use a cleaner mechanism for providing
/// these utilities.
struct MyFunctionPass : public PassWrapper<OperationPass,
MyFunctionPass> {
void runOnOperation() override {
// Get the current FuncOp operation being operated on.
FuncOp f = getOperation();

// Walk the operations within the function.
f.walk([](Operation *inst) {....
});

}
};
} // end anonymous namespace

/// Register this pass so that it can be built via from a textual pass pipeline.
/// (Pass registration is discussed more below)
void registerMyPass() {
PassRegistration(
“flag-name-to-invoke-pass-via-mlir-opt”, “Pass description here”);
}
OperationPass : Op-Agnostic
An op-agnostic pass operates on the operation type of the pass manager that it is added to. This means that passes of this type may operate on several different operation types. Passes of this type are generally written generically using operation interfaces and traits . Examples of this type of pass are Common Sub-Expression Elimination and Inlining .
To create an operation pass, a derived class must adhere to the following:
? Inherit from the CRTP class OperationPass.
? Override the virtual void runOnOperation() method.
A simple pass may look like:
op-agnostic上,被添加到管理器的算子類型進行運算。這意味著這種類型的通道可以在幾種不同的算子類型上進行運算。通常使用算子接口 和 特征來寫這種類型的pass 。此類傳遞的示例包括“ 常見子表達式消除” 和“ 內聯” 。
要創建算子傳遞,派生類必須遵守以下內容:
? 繼承自CRTP類OperationPass。
? 覆蓋虛擬void runOnOperation()方法。
一個簡單的pass可能看起來像:
/// Here we utilize the CRTP PassWrapper utility class to provide some
/// necessary utility hooks. This is only necessary for passes defined directly
/// in C++. Passes defined declaratively use a cleaner mechanism for providing
/// these utilities.
struct MyOperationPass : public PassWrapper<OperationPass<>, MyOperationPass> {
void runOnOperation() override {
// Get the current operation being operated on.
Operation *op = getOperation();

}
};
Dependent Dialects
Dialects must be loaded in the MLIRContext before entities from these dialects (operations, types, attributes, …) can be created. Dialects must also be loaded before starting the execution of a multi-threaded pass pipeline. To this end, a pass that may create an entity from a dialect that isn’t guaranteed to already ne loaded must express this by overriding the getDependentDialects() method and declare this list of Dialects explicitly.
必須先在MLIRContext中加載語言對話,然后才能從這些語言對話創建實體(算子,類型,屬性等)。在開始執行多線程傳遞pass之前,還必須加載語言對話。可能無法保證已從其加載的語言對話創建實體的pass,必須通過重寫getDependentDialects() 方法并明確聲明此語言對話列表來表達。
Initialization
In certain situations, a Pass may contain state that is constructed dynamically, but is potentially expensive to recompute in successive runs of the Pass. One such example is when using PDL-based patterns , which are compiled into a bytecode during runtime. In these situations, a pass may override the following hook to initialize this heavy state:
? LogicalResult initialize(MLIRContext context)
This hook is executed once per run of a full pass pipeline, meaning that it does not have access to the state available during a runOnOperation call. More concretely, all necessary accesses to an MLIRContext should be driven via the provided context parameter, and methods that utilize “per-run” state such as getContext/getOperation/getAnalysis/etc. must not be used. In case of an error during initialization, the pass is expected to emit an error diagnostic and return a failure() which will abort the pass pipeline execution.
在某些情況下,通過可能包含動態構造的狀態,但是在連續運行過程中重新計算可能會很費時。一個這樣的例子就是使用 PDL基于 模式的模式 ,該模式在運行時被編譯成字節碼。在這些情況下,通過可能會覆蓋以下hook,初始化此重載狀態:
? LogicalResult initialize(MLIRContext context)
此hook在一次完整pass管道的每次運行中執行一次,意味著無法訪問runOnOperation調用期間的可用狀態。更具體地,所有必要的訪問的MLIRContext應通過提供驅動context參數,利用 “per-run”狀態,諸如 getContext/ getOperation/ getAnalysis/等,不得使用。如果初始化期間發生錯誤,則該傳遞將發出錯誤診斷并返回a failure(),中止pass管道的執行。
Analysis Management
An important concept, along with transformation passes, are analyses. These are conceptually similar to transformation passes, except that they compute information on a specific operation without modifying it. In MLIR, analyses are not passes but free-standing classes that are computed lazily on-demand and cached to avoid unnecessary recomputation. An analysis in MLIR must adhere to the following:
? Provide a valid constructor taking an Operation
.
? Must not modify the given operation.
An analysis may provide additional hooks to control various behavior:
? bool isInvalidated(const AnalysisManager::PreservedAnalyses &)
Given a preserved analysis set, the analysis returns true if it should truly be invalidated. This allows for more fine-tuned invalidation in cases where an analysis wasn’t explicitly marked preserved, but may be preserved (or invalidated) based upon other properties such as analyses sets.
一個重要的概念,以及轉換過程,都是分析。這些在概念上與轉換過程相似,除了在不修改計算信息的特定算子情況下。在MLIR中,分析不是pass,而是pass獨立式類,這些類是按需延遲計算并緩存,以避免不必要的重新計算。MLIR中的分析必須遵循以下條件:
? 提供有效構造函數Operation

? 一定不能修改給定的算子。
分析可能會提供其它hook來控制各種行為:
? bool isInvalidated(const AnalysisManager::PreservedAnalyses &)
給定一個保留的分析集,如果該分析真無效,則分析返回true。如果沒有明確標記保留分析,但可以根據其它屬性(例如分析集)保留(或使之無效),則可以進行更精細的無效化。
Querying Analyses
The base OperationPass class provides utilities for querying and preserving analyses for the current operation being processed.
? OperationPass automatically provides the following utilities for querying analyses:
o getAnalysis<>
? Get an analysis for the current operation, constructing it if necessary.
o getCachedAnalysis<>
? Get an analysis for the current operation, if it already exists.
o getCachedParentAnalysis<>
? Get an analysis for a given parent operation, if it exists.
o getCachedChildAnalysis<>
? Get an analysis for a given child operation, if it exists.
o getChildAnalysis<>
? Get an analysis for a given child operation, constructing it if necessary.
Using the example passes defined above, let’s see some examples:
OperationPass基類提供用于查詢和保留當前正在處理算子和分析的實用程序。
? OperationPass自動提供以下實用程序來查詢分析:
o getAnalysis<>
? 獲得當前算子的分析,并在必要時進行構建。
o getCachedAnalysis<>
? 獲取當前算子的分析(如果已經存在)。
o getCachedParentAnalysis<>
? 獲取給定父算子的分析(如果存在)。
o getCachedChildAnalysis<>
? 對給定的子算子(如果存在)進行分析。
o getChildAnalysis<>
? 對給定的子算子進行分析,并在必要時進行構造。
使用上面定義的示例傳遞,看一些示例:
/// An interesting analysis.
struct MyOperationAnalysis {
// Compute this analysis with the provided operation.
MyOperationAnalysis(Operation *op);
};

void MyOperationPass::runOnOperation() {
// Query MyOperationAnalysis for the current operation.
MyOperationAnalysis &myAnalysis = getAnalysis();

// Query a cached instance of MyOperationAnalysis for the current operation.
// It will not be computed if it doesn’t exist.
auto optionalAnalysis = getCachedAnalysis();
if (optionalAnalysis)

// Query a cached instance of MyOperationAnalysis for the parent operation of
// the current operation. It will not be computed if it doesn’t exist.
auto optionalAnalysis = getCachedParentAnalysis();
if (optionalAnalysis)

}
Preserving Analyses
Analyses that are constructed after being queried by a pass are cached to avoid unnecessary computation if they are requested again later. To avoid stale analyses, all analyses are assumed to be invalidated by a pass. To avoid invalidation, a pass must specifically mark analyses that are known to be preserved.
? All Pass classes automatically provide the following utilities for preserving analyses:
o markAllAnalysesPreserved
o markAnalysesPreserved<>
通過查詢后構造的分析將被緩存,以避免不必要的計算(如果稍后再次請求的話)。為了避免過時的分析,假定所有分析都通過了一次pass驗證就無效了。為避免無效,pass必須特別標記已知保留的分析。
? 所有Pass類都會自動提供以下用于保留分析的實用程序:
o markAllAnalysesPreserved
o markAnalysesPreserved<>
void MyOperationPass::runOnOperation() {
// Mark all analyses as preserved. This is useful if a pass can guarantee
// that no transformation was performed.
markAllAnalysesPreserved();

// Mark specific analyses as preserved. This is used if some transformation
// was performed, but some analyses were either unaffected or explicitly
// preserved.
markAnalysesPreserved<MyAnalysis, MyAnalyses…>();
}
Pass Failure
Passes in MLIR are allowed to gracefully fail. This may happen if some invariant of the pass was broken, potentially leaving the IR in some invalid state. If such a situation occurs, the pass can directly signal a failure to the pass manager via the signalPassFailure method. If a pass signaled a failure when executing, no other passes in the pipeline will execute and the top-level call to PassManager::run will return failure.
允許MLIR中的傳遞正常失敗。如果pass的某些不變式被破壞,可能會使IR處于某種無效狀態,則可能會發生這種情況。如果發生這種情況,則pass可以該signalPassFailure方法直接向pass管理器發出故障信號。如果在執行過程中pass指示失敗,則流水線中將不會執行其它任何傳遞,并且對PassManager::run頂級調用,返回failure。
void MyOperationPass::runOnOperation() {
// Signal failure on a broken invariant.
if (some_broken_invariant)
return signalPassFailure();
}
Pass Manager
The above sections introduced the different types of passes and their invariants. This section introduces the concept of a PassManager, and how it can be used to configure and schedule a pass pipeline. There are two main classes related to pass management, the PassManager and the OpPassManager. The PassManager class acts as the top-level entry point, and contains various configurations used for the entire pass pipeline. The OpPassManager class is used to schedule passes to run at a specific level of nesting. The top-level PassManager also functions as an OpPassManager.
以上各節介紹了pass的不同類型及其不變性。本節介紹PassManager的概念,以及如何配置和計劃pass管道。與pass管理相關的主要類別有兩種:PassManager和OpPassManager。PassManager類作為頂層的入口點,包含用于整個pass管道的各種配置。該OpPassManager用于調度類會將以嵌套的一個特定的水平上運行。頂級 PassManager還用作OpPassManager。
OpPassManager
An OpPassManager is essentially a collection of passes to execute on an operation of a specific type. This operation type must adhere to the following requirement:
? Must be registered and marked IsolatedFromAbove .
o Passes are expected to not modify operations at or above the current operation being processed. If the operation is not isolated, it may inadvertently modify or traverse the SSA use-list of an operation it is not supposed to.
Passes can be added to a pass manager via addPass. The pass must either be an op-specific pass operating on the same operation type as OpPassManager, or an op-agnostic pass.
An OpPassManager is generally created by explicitly nesting a pipeline within another existing OpPassManager via the nest<> method. This method takes the operation type that the nested pass manager will operate on. At the top-level, a PassManager acts as an OpPassManager. Nesting in this sense, corresponds to the structural nesting within Regions of the IR.
For example, the following .mlir:
AnOpPassManager本質上是要在特定類型的算子上執行的pass的集合。算子類型必須符合以下要求:
? 必須注冊并標記 IsolatedFromAbove 。
o 預期pass不會修改正在處理的當前操作或更高的操作。如果操作不是孤立的,則可能會無意間修改或遍歷不應執行的操作的SSA使用列表。
可以通過將pass添加到pass管理器addPass。該pass必須是采用 op-specific與相同的算子類型進行操作OpPassManager的op-agnosticpass,或者是pass。
OpPassManager通常OpPassManager通過將該nest<>方法顯式嵌套在另一個現有pass中來創建An 。此方法采用嵌套pass管理器,將對其進行操作的操作類型。在頂層,a PassManager充當OpPassManager。從這個意義上講,嵌套對應 于 IR區域內的 結構嵌套 。
例如,以下內容.mlir:
module {
spv.module “Logical” “GLSL450” {
func @foo() {

}
}
}
Has the nesting structure of:
module
spv.module
function
Below is an example of constructing a pipeline that operates on the above structure:
// Create a top-level PassManager class. If an operation type is not
// explicitly specific, the default is the builtin module operation.
PassManager pm(ctx);
// Note: We could also create the above PassManager this way.
PassManager pm(ctx, /operationName=/“module”);

// Add a pass on the top-level module operation.
pm.addPass(std::make_unique());

// Nest a pass manager that operates on spirv.module operations nested
// directly under the top-level module.
OpPassManager &nestedModulePM = pm.nestspirv::ModuleOp();
nestedModulePM.addPass(std::make_unique());

// Nest a pass manager that operates on functions within the nested SPIRV
// module.
OpPassManager &nestedFunctionPM = nestedModulePM.nest();
nestedFunctionPM.addPass(std::make_unique());

// Run the pass manager on the top-level module.
ModuleOp m = …;
if (failed(pm.run(m)))
… // One of the passes signaled a failure.
The above pass manager contains the following pipeline structure:
OpPassManager
MyModulePass
OpPassManagerspirv::ModuleOp
MySPIRVModulePass
OpPassManager
MyFunctionPass
These pipelines are then run over a single operation at a time. This means that, for example, given a series of consecutive passes on FuncOp, it will execute all on the first function, then all on the second function, etc. until the entire program has been run through the passes. This provides several benefits:
? This improves the cache behavior of the compiler, because it is only touching a single function at a time, instead of traversing the entire program.
? This improves multi-threading performance by reducing the number of jobs that need to be scheduled, as well as increasing the efficiency of each job. An entire function pipeline can be run on each function asynchronously.
Dynamic Pass Pipelines
In some situations it may be useful to run a pass pipeline within another pass, to allow configuring or filtering based on some invariants of the current operation being operated on. For example, the Inliner Pass may want to run intraprocedural simplification passes while it is inlining to produce a better cost model, and provide more optimal inlining. To enable this, passes may run an arbitrary OpPassManager on the current operation being operated on or any operation nested within the current operation via the LogicalResult Pass::runPipeline(OpPassManager &, Operation *) method. This method returns whether the dynamic pipeline succeeded or failed, similarly to the result of the top-level PassManager::run method. A simple example is shown below:
void MyModulePass::runOnOperation() {
ModuleOp module = getOperation();
if (hasSomeSpecificProperty(module)) {
OpPassManager dynamicPM(“module”);
…; // Build the dynamic pipeline.
if (failed(runPipeline(dynamicPM, module)))
return signalPassFailure();
}
}
Note: though above the dynamic pipeline was constructed within the runOnOperation method, this is not necessary and pipelines should be cached when possible as the OpPassManager class can be safely copy constructed.
The mechanism described in this section should be used whenever a pass pipeline should run in a nested fashion, i.e. when the nested pipeline cannot be scheduled statically along with the rest of the main pass pipeline. More specifically, a PassManager should generally never need to be constructed within a Pass. Using runPipeline also ensures that all analyses, instrumentations , and other pass manager related components are integrated with the dynamic pipeline being executed.
Instance Specific Pass Options
MLIR provides a builtin mechanism for passes to specify options that configure its behavior. These options are parsed at pass construction time independently for each instance of the pass. Options are defined using the Option<> and ListOption<> classes, and follow the LLVM command line flag definition rules. See below for a few examples:
struct MyPass … {
/// Make sure that we have a valid default constructor and copy constructor to
/// ensure that the options are initialized properly.
MyPass() = default;
MyPass(const MyPass& pass) {}

/// Any parameters after the description are forwarded to llvm:🆑:list and
/// llvm:🆑:opt respectively.
Option exampleOption{*this, “flag-name”, llvm:🆑:desc("…")};
ListOption exampleListOption{*this, “list-flag-name”,
llvm:🆑:desc("…")};
};
For pass pipelines, the PassPipelineRegistration templates take an additional template parameter for an optional Option struct definition. This struct should inherit from mlir::PassPipelineOptions and contain the desired pipeline options. When using PassPipelineRegistration, the constructor now takes a function with the signature void (OpPassManager &pm, const MyPipelineOptions&) which should construct the passes from the options and pass them to the pm:
struct MyPipelineOptions : public PassPipelineOptions {
// The structure of these options is the same as those for pass options.
Option exampleOption{*this, “flag-name”, llvm:🆑:desc("…")};
ListOption exampleListOption{*this, “list-flag-name”,
llvm:🆑:desc("…")};
};

void registerMyPasses() {
PassPipelineRegistration(
“example-pipeline”, “Run an example pipeline.”,
[](OpPassManager &pm, const MyPipelineOptions &pipelineOptions) {
// Initialize the pass manager.
});
}
Pass Statistics
Statistics are a way to keep track of what the compiler is doing and how effective various transformations are. It is often useful to see what effect specific transformations have on a particular input, and how often they trigger. Pass statistics are specific to each pass instance, which allow for seeing the effect of placing a particular transformation at specific places within the pass pipeline. For example, they help answer questions like “What happens if I run CSE again here?”.
Statistics can be added to a pass by using the ‘Pass::Statistic’ class. This class takes as a constructor arguments: the parent pass, a name, and a description. This class acts like an atomic unsigned integer, and may be incremented and updated accordingly. These statistics rely on the same infrastructure as llvm::Statistic and thus have similar usage constraints. Collected statistics can be dumped by the pass manager programmatically via PassManager::enableStatistics; or via -pass-statistics and -pass-statistics-display on the command line.
An example is shown below:
struct MyPass … {
/// Make sure that we have a valid default constructor and copy constructor to
/// ensure that the options are initialized properly.
MyPass() = default;
MyPass(const MyPass& pass) {}

/// Define the statistic to track during the execution of MyPass.
Statistic exampleStat{this, “exampleStat”, “An example statistic”};

void runOnOperation() {

// Update the statistic after some invariant was hit.
++exampleStat;...

}
};
The collected statistics may be aggregated in two types of views:
A pipeline view that models the structure of the pass manager, this is the default view:
$ mlir-opt -pass-pipeline=‘func(my-pass,my-pass)’ foo.mlir -pass-statistics

=-------------------------------------------------------------------------=
… Pass statistics report …
=-------------------------------------------------------------------------=
‘func’ Pipeline
MyPass
(S) 15 exampleStat - An example statistic
VerifierPass
MyPass
(S) 6 exampleStat - An example statistic
VerifierPass
VerifierPass
A list view that aggregates the statistics of all instances of a specific pass together:
$ mlir-opt -pass-pipeline=‘func(my-pass, my-pass)’ foo.mlir -pass-statistics -pass-statistics-display=list

=-------------------------------------------------------------------------=
… Pass statistics report …
=-------------------------------------------------------------------------=
MyPass
(S) 21 exampleStat - An example statistic
Pass Registration
Briefly shown in the example definitions of the various pass types is the PassRegistration class. This mechanism allows for registering pass classes so that they may be created within a textual pass pipeline description . An example registration is shown below:
void registerMyPass() {
PassRegistration(“argument”, “description”);
}
? MyPass is the name of the derived pass class.
? “argument” is the argument used to refer to the pass in the textual format.
? “description” is a brief description of the pass.
For passes that cannot be default-constructed, PassRegistration accepts an optional third argument that takes a callback to create the pass:
void registerMyPass() {
PassRegistration(
“argument”, “description”,
-> std::unique_ptr {
std::unique_ptr p = std::make_unique(/options/);
/… non-trivial-logic to configure the pass …/;
return p;
});
}
This variant of registration can be used, for example, to accept the configuration of a pass from command-line arguments and pass it to the pass constructor.
Note: Make sure that the pass is copy-constructible in a way that does not share data as the pass manager may create copies of the pass to run in parallel.
Pass Pipeline Registration
Described above is the mechanism used for registering a specific derived pass class. On top of that, MLIR allows for registering custom pass pipelines in a similar fashion. This allows for custom pipelines to be available to tools like mlir-opt in the same way that passes are, which is useful for encapsulating common pipelines like the “-O1” series of passes. Pipelines are registered via a similar mechanism to passes in the form of PassPipelineRegistration. Compared to PassRegistration, this class takes an additional parameter in the form of a pipeline builder that modifies a provided OpPassManager.
void pipelineBuilder(OpPassManager &pm) {
pm.addPass(std::make_unique());
pm.addPass(std::make_unique());
}

void registerMyPasses() {
// Register an existing pipeline builder function.
PassPipelineRegistration<>(
“argument”, “description”, pipelineBuilder);

// Register an inline pipeline builder.
PassPipelineRegistration<>(
“argument”, “description”, [](OpPassManager &pm) {
pm.addPass(std::make_unique());
pm.addPass(std::make_unique());
});
}
Textual Pass Pipeline Specification
The previous sections detailed how to register passes and pass pipelines with a specific argument and description. Once registered, these can be used to configure a pass manager from a string description. This is especially useful for tools like mlir-opt, that configure pass managers from the command line, or as options to passes that utilize dynamic pass pipelines .
To support the ability to describe the full structure of pass pipelines, MLIR supports a custom textual description of pass pipelines. The textual description includes the nesting structure, the arguments of the passes and pass pipelines to run, and any options for those passes and pipelines. A textual pipeline is defined as a series of names, each of which may in itself recursively contain a nested pipeline description. The syntax for this specification is as follows:
pipeline ::= op-name ( pipeline-element (, pipeline-element)* )
pipeline-element ::= pipeline | (pass-name | pass-pipeline-name) options?
options ::= ‘{’ (key (’=’ value)?)+ ‘}’
? op-name
o This corresponds to the mnemonic name of an operation to run passes on, e.g. func or module.
? pass-name | pass-pipeline-name
o This corresponds to the argument of a registered pass or pass pipeline, e.g. cse or canonicalize.
? options
o Options are specific key value pairs representing options defined by a pass or pass pipeline, as described in the “Instance Specific Pass Options” section. See this section for an example usage in a textual pipeline.
For example, the following pipeline:
$ mlir-opt foo.mlir -cse -canonicalize -convert-std-to-llvm=‘use-bare-ptr-memref-call-conv=1’
Can also be specified as (via the -pass-pipeline flag):
$ mlir-opt foo.mlir -pass-pipeline=‘func(cse,canonicalize),convert-std-to-llvm{use-bare-ptr-memref-call-conv=1}’
In order to support round-tripping a pass to the textual representation using OpPassManager::printAsTextualPipeline(raw_ostream&), override StringRef Pass::getArgument() to specify the argument used when registering a pass.
Declarative Pass Specification
Some aspects of a Pass may be specified declaratively, in a form similar to operations . This specification simplifies several mechanisms used when defining passes. It can be used for generating pass registration calls, defining boilerplate pass utilities, and generating pass documentation.
Consider the following pass specified in C++:
struct MyPass : PassWrapper<MyPass, OperationPass> {
MyPass() = default;
MyPass(const MyPass &) {}

// Specify any options.
Option option{
*this, “example-option”,
llvm:🆑:desc(“An example option”), llvm:🆑:init(true)};
ListOption<int64_t> listOption{
*this, “example-list”,
llvm:🆑:desc(“An example list option”), llvm:🆑:ZeroOrMore,
llvm:🆑:MiscFlags::CommaSeparated};

// Specify any statistics.
Statistic statistic{this, “example-statistic”, “An example statistic”};
};

/// Expose this pass to the outside world.
std::unique_ptr foo::createMyPass() {
return std::make_unique();
}

/// Register this pass.
void foo::registerMyPass() {
PassRegistration(“my-pass”, “My pass summary”);
}
This pass may be specified declaratively as so:
def MyPass : Pass<“my-pass”, “ModuleOp”> {
let summary = “My Pass Summary”;
let description = [{
Here we can now give a much larger description of MyPass, including all of
its various constraints and behavior.
}];

// A constructor must be provided to specify how to create a default instance
// of MyPass.
let constructor = “foo::createMyPass()”;

// Specify any options.
let options = [
Option<“option”, “example-option”, “bool”, /default=/“true”,
“An example option”>,
ListOption<“listOption”, “example-list”, “int64_t”,
“An example list option”,
“llvm:🆑:ZeroOrMore, llvm:🆑:MiscFlags::CommaSeparated”>
];

// Specify any statistics.
let statistics = [
Statistic<“statistic”, “example-statistic”, “An example statistic”>
];
}
Using the gen-pass-decls generator, we can generate most of the boilerplate above automatically. This generator takes as an input a -name parameter, that provides a tag for the group of passes that are being generated. This generator produces two chunks of output:
The first is a code block for registering the declarative passes with the global registry. For each pass, the generator produces a registerFooPass where Foo is the name of the definition specified in tablegen. It also generates a registerGroupPasses, where Group is the tag provided via the -name input parameter, that registers all of the passes present.
// gen-pass-decls -name=“Example”

#define GEN_PASS_REGISTRATION
#include “Passes.h.inc”

void registerMyPasses() {
// Register all of the passes.
registerExamplePasses();

// Register MyPass specifically.
registerMyPassPass();
}
The second is a base class for each of the passes, containing most of the boiler plate related to pass definitions. These classes are named in the form of MyPassBase, where MyPass is the name of the pass definition in tablegen. We can update the original C++ pass definition as so:
/// Include the generated base pass class definitions.
#define GEN_PASS_CLASSES
#include “Passes.h.inc”

/// Define the main class as deriving from the generated base class.
struct MyPass : MyPassBase {
/// The explicit constructor is no longer explicitly necessary when defining
/// pass options and statistics, the base class takes care of that
/// automatically.

/// The definitions of the options and statistics are now generated within
/// the base class, but are accessible in the same way.
};

/// Expose this pass to the outside world.
std::unique_ptr foo::createMyPass() {
return std::make_unique();
}
Using the gen-pass-doc generator, markdown documentation for each of the passes can be generated. See Passes.md for example output of real MLIR passes.
Tablegen Specification
The Pass class is used to begin a new pass definition. This class takes as an argument the registry argument to attribute to the pass, as well as an optional string corresponding to the operation type that the pass operates on. The class contains the following fields:
? summary
o A short one line summary of the pass, used as the description when registering the pass.
? description
o A longer, more detailed description of the pass. This is used when generating pass documentation.
? dependentDialects
o A list of strings representing the Dialect classes this pass may introduce entities, Attributes/Operations/Types/etc., of.
? constructor
o A code block used to create a default instance of the pass.
? options
o A list of pass options used by the pass.
? statistics
o A list of pass statistics used by the pass.
Options
Options may be specified via the Option and ListOption classes. The Option class takes the following template parameters:
? C++ variable name
o A name to use for the generated option variable.
? argument
o The argument name of the option.
? type
o The C++ type of the option.
? default value
o The default option value.
? description
o A one line description of the option.
? additional option flags
o A string containing any additional options necessary to construct the option.
def MyPass : Pass<“my-pass”> {
let options = [
Option<“option”, “example-option”, “bool”, /default=/“true”,
“An example option”>,
];
}
The ListOption class takes the following fields:
? C++ variable name
o A name to use for the generated option variable.
? argument
o The argument name of the option.
? element type
o The C++ type of the list element.
? description
o A one line description of the option.
? additional option flags
o A string containing any additional options necessary to construct the option.
def MyPass : Pass<“my-pass”> {
let options = [
ListOption<“listOption”, “example-list”, “int64_t”,
“An example list option”,
“llvm:🆑:ZeroOrMore, llvm:🆑:MiscFlags::CommaSeparated”>
];
}
Statistic
Statistics may be specified via the Statistic, which takes the following template parameters:
? C++ variable name
o A name to use for the generated statistic variable.
? display name
o The name used when displaying the statistic.
? description
o A one line description of the statistic.
def MyPass : Pass<“my-pass”> {
let statistics = [
Statistic<“statistic”, “example-statistic”, “An example statistic”>
];
}
Pass Instrumentation
MLIR provides a customizable framework to instrument pass execution and analysis computation, via the PassInstrumentation class. This class provides hooks into the PassManager that observe various events:
? runBeforePipeline
o This callback is run just before a pass pipeline, i.e. pass manager, is executed.
? runAfterPipeline
o This callback is run right after a pass pipeline has been executed, successfully or not.
? runBeforePass
o This callback is run just before a pass is executed.
? runAfterPass
o This callback is run right after a pass has been successfully executed. If this hook is executed, runAfterPassFailed will not be.
? runAfterPassFailed
o This callback is run right after a pass execution fails. If this hook is executed, runAfterPass will not be.
? runBeforeAnalysis
o This callback is run just before an analysis is computed.
? runAfterAnalysis
o This callback is run right after an analysis is computed.
PassInstrumentation instances may be registered directly with a PassManager instance via the addInstrumentation method. Instrumentations added to the PassManager are run in a stack like fashion, i.e. the last instrumentation to execute a runBefore* hook will be the first to execute the respective runAfter* hook. The hooks of a PassInstrumentation class are guaranteed to be executed in a thread safe fashion, so additional synchronization is not necessary. Below in an example instrumentation that counts the number of times the DominanceInfo analysis is computed:
struct DominanceCounterInstrumentation : public PassInstrumentation {
/// The cumulative count of how many times dominance has been calculated.
unsigned &count;

DominanceCounterInstrumentation(unsigned &count) : count(count) {}
void runAfterAnalysis(llvm::StringRef, TypeID id, Operation *) override {
if (id == TypeID::get())
++count;
}
};

MLIRContext *ctx = …;
PassManager pm(ctx);

// Add the instrumentation to the pass manager.
unsigned domInfoCount;
pm.addInstrumentation(
std::make_unique(domInfoCount));

// Run the pass manager on a module operation.
ModuleOp m = …;
if (failed(pm.run(m)))

llvm::errs() << “DominanceInfo was computed " << domInfoCount << " times!\n”;
Standard Instrumentations
MLIR utilizes the pass instrumentation framework to provide a few useful developer tools and utilities. Each of these instrumentations are directly available to all users of the MLIR pass framework.
Pass Timing
The PassTiming instrumentation provides timing information about the execution of passes and computation of analyses. This provides a quick glimpse into what passes are taking the most time to execute, as well as how much of an effect a pass has on the total execution time of the pipeline. Users can enable this instrumentation directly on the PassManager via enableTiming. This instrumentation is also made available in mlir-opt via the -pass-timing flag. The PassTiming instrumentation provides several different display modes for the timing results, each of which is described below:
List Display Mode
In this mode, the results are displayed in a list sorted by total time with each pass/analysis instance aggregated into one unique result. This view is useful for getting an overview of what analyses/passes are taking the most time in a pipeline. This display mode is available in mlir-opt via -pass-timing-display=list.
$ mlir-opt foo.mlir -mlir-disable-threading -pass-pipeline=‘func(cse,canonicalize)’ -convert-std-to-llvm -pass-timing -pass-timing-display=list

=-------------------------------------------------------------------------=
… Pass execution timing report …
=-------------------------------------------------------------------------=
Total Execution Time: 0.0203 seconds

—Wall Time— — Name —
0.0047 ( 55.9%) Canonicalizer
0.0019 ( 22.2%) VerifierPass
0.0016 ( 18.5%) LLVMLoweringPass
0.0003 ( 3.4%) CSE
0.0002 ( 1.9%) (A) DominanceInfo
0.0084 (100.0%) Total
Pipeline Display Mode
In this mode, the results are displayed in a nested pipeline view that mirrors the internal pass pipeline that is being executed in the pass manager. This view is useful for understanding specifically which parts of the pipeline are taking the most time, and can also be used to identify when analyses are being invalidated and recomputed. This is the default display mode.
$ mlir-opt foo.mlir -mlir-disable-threading -pass-pipeline=‘func(cse,canonicalize)’ -convert-std-to-llvm -pass-timing

=-------------------------------------------------------------------------=
… Pass execution timing report …
=-------------------------------------------------------------------------=
Total Execution Time: 0.0249 seconds

—Wall Time— — Name —
0.0058 ( 70.8%) ‘func’ Pipeline
0.0004 ( 4.3%) CSE
0.0002 ( 2.6%) (A) DominanceInfo
0.0004 ( 4.8%) VerifierPass
0.0046 ( 55.4%) Canonicalizer
0.0005 ( 6.2%) VerifierPass
0.0005 ( 5.8%) VerifierPass
0.0014 ( 17.2%) LLVMLoweringPass
0.0005 ( 6.2%) VerifierPass
0.0082 (100.0%) Total
Multi-threaded Pass Timing
When multi-threading is enabled in the pass manager the meaning of the display slightly changes. First, a new timing column is added, User Time, that displays the total time spent across all threads. Secondly, the Wall Time column displays the longest individual time spent amongst all of the threads. This means that the Wall Time column will continue to give an indicator on the perceived time, or clock time, whereas the User Time will display the total cpu time.
$ mlir-opt foo.mlir -pass-pipeline=‘func(cse,canonicalize)’ -convert-std-to-llvm -pass-timing

=-------------------------------------------------------------------------=
… Pass execution timing report …
=-------------------------------------------------------------------------=
Total Execution Time: 0.0078 seconds

—User Time— —Wall Time— — Name —
0.0177 ( 88.5%) 0.0057 ( 71.3%) ‘func’ Pipeline
0.0044 ( 22.0%) 0.0015 ( 18.9%) CSE
0.0029 ( 14.5%) 0.0012 ( 15.2%) (A) DominanceInfo
0.0038 ( 18.9%) 0.0015 ( 18.7%) VerifierPass
0.0089 ( 44.6%) 0.0025 ( 31.1%) Canonicalizer
0.0006 ( 3.0%) 0.0002 ( 2.6%) VerifierPass
0.0004 ( 2.2%) 0.0004 ( 5.4%) VerifierPass
0.0013 ( 6.5%) 0.0013 ( 16.3%) LLVMLoweringPass
0.0006 ( 2.8%) 0.0006 ( 7.0%) VerifierPass
0.0200 (100.0%) 0.0081 (100.0%) Total
IR Printing
When debugging it is often useful to dump the IR at various stages of a pass pipeline. This is where the IR printing instrumentation comes into play. This instrumentation allows for conditionally printing the IR before and after pass execution by optionally filtering on the pass being executed. This instrumentation can be added directly to the PassManager via the enableIRPrinting method. mlir-opt provides a few useful flags for utilizing this instrumentation:
? print-ir-before=(comma-separated-pass-list)
o Print the IR before each of the passes provided within the pass list.
? print-ir-before-all
o Print the IR before every pass in the pipeline.
$ mlir-opt foo.mlir -pass-pipeline=‘func(cse)’ -print-ir-before=cse

*** IR Dump Before CSE ***
func @simple_constant() -> (i32, i32) {
%c1_i32 = constant 1 : i32
%c1_i32_0 = constant 1 : i32
return %c1_i32, %c1_i32_0 : i32, i32
}
? print-ir-after=(comma-separated-pass-list)
o Print the IR after each of the passes provided within the pass list.
? print-ir-after-all
o Print the IR after every pass in the pipeline.
$ mlir-opt foo.mlir -pass-pipeline=‘func(cse)’ -print-ir-after=cse

*** IR Dump After CSE ***
func @simple_constant() -> (i32, i32) {
%c1_i32 = constant 1 : i32
return %c1_i32, %c1_i32 : i32, i32
}
? print-ir-after-change
o Only print the IR after a pass if the pass mutated the IR. This helps to reduce the number of IR dumps for “uninteresting” passes.
o Note: Changes are detected by comparing a hash of the operation before and after the pass. This adds additional run-time to compute the hash of the IR, and in some rare cases may result in false-positives depending on the collision rate of the hash algorithm used.
o Note: This option should be used in unison with one of the other ‘print-ir-after’ options above, as this option alone does not enable printing.
$ mlir-opt foo.mlir -pass-pipeline=‘func(cse,cse)’ -print-ir-after=cse -print-ir-after-change

*** IR Dump After CSE ***
func @simple_constant() -> (i32, i32) {
%c1_i32 = constant 1 : i32
return %c1_i32, %c1_i32 : i32, i32
}
? print-ir-module-scope
o Always print the top-level module operation, regardless of pass type or operation nesting level.
o Note: Printing at module scope should only be used when multi-threading is disabled(-mlir-disable-threading)
$ mlir-opt foo.mlir -mlir-disable-threading -pass-pipeline=‘func(cse)’ -print-ir-after=cse -print-ir-module-scope

*** IR Dump After CSE *** (‘func’ operation: @bar)
func @bar(%arg0: f32, %arg1: f32) -> f32 {

}

func @simple_constant() -> (i32, i32) {
%c1_i32 = constant 1 : i32
%c1_i32_0 = constant 1 : i32
return %c1_i32, %c1_i32_0 : i32, i32
}

*** IR Dump After CSE *** (‘func’ operation: @simple_constant)
func @bar(%arg0: f32, %arg1: f32) -> f32 {

}

func @simple_constant() -> (i32, i32) {
%c1_i32 = constant 1 : i32
return %c1_i32, %c1_i32 : i32, i32
}
Crash and Failure Reproduction
The pass manager in MLIR contains a builtin mechanism to generate reproducibles in the event of a crash, or a pass failure . This functionality can be enabled via PassManager::enableCrashReproducerGeneration or via the command line flag pass-pipeline-crash-reproducer. In either case, an argument is provided that corresponds to the output .mlir file name that the reproducible should be written to. The reproducible contains the configuration of the pass manager that was executing, as well as the initial IR before any passes were run. A potential reproducible may have the form:
// configuration: -pass-pipeline=‘func(cse,canonicalize),inline’ -verify-each

module {
func @foo() {

}
}
The configuration dumped can be passed to mlir-opt by specifying -run-reproducer flag. This will result in parsing the first line configuration of the reproducer and adding those to the command line options.
Beyond specifying a filename, one can also register a ReproducerStreamFactory function that would be invoked in the case of a crash and the reproducer written to its stream.
Local Reproducer Generation
An additional flag may be passed to PassManager::enableCrashReproducerGeneration, and specified via pass-pipeline-local-reproducer on the command line, that signals that the pass manager should attempt to generate a “local” reproducer. This will attempt to generate a reproducer containing IR right before the pass that fails. This is useful for situations where the crash is known to be within a specific pass, or when the original input relies on components (like dialects or passes) that may not always be available.
For example, if the failure in the previous example came from canonicalize, the following reproducer will be generated:
// configuration: -pass-pipeline=‘func(canonicalize)’ -verify-each

module {
func @foo() {

}
}

總結

以上是生活随笔為你收集整理的AI基础架构Pass Infrastructure的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

国产av无码专区亚洲a∨毛片 | 亚洲欧美日韩国产精品一区二区 | 国产精品二区一区二区aⅴ污介绍 | 一二三四社区在线中文视频 | 久久久成人毛片无码 | 精品久久久久久亚洲精品 | 日本在线高清不卡免费播放 | 最近免费中文字幕中文高清百度 | 精品国产一区二区三区四区 | 暴力强奷在线播放无码 | 老子影院午夜伦不卡 | 久久伊人色av天堂九九小黄鸭 | 久久 国产 尿 小便 嘘嘘 | 国内少妇偷人精品视频免费 | 免费国产成人高清在线观看网站 | 99久久99久久免费精品蜜桃 | 精品亚洲成av人在线观看 | 无码国模国产在线观看 | 精品国产成人一区二区三区 | 天下第一社区视频www日本 | 亚洲精品国产第一综合99久久 | 国产亚洲精品久久久久久 | 无码av最新清无码专区吞精 | 男女爱爱好爽视频免费看 | 久久久久久久人妻无码中文字幕爆 | а天堂中文在线官网 | 高潮喷水的毛片 | 欧美精品国产综合久久 | 精品水蜜桃久久久久久久 | 成人av无码一区二区三区 | 熟妇人妻中文av无码 | 国产精品第一国产精品 | 欧美午夜特黄aaaaaa片 | 精品国产青草久久久久福利 | 欧美xxxxx精品 | 欧美日韩综合一区二区三区 | 人人妻人人澡人人爽欧美一区九九 | 午夜精品久久久久久久 | 久久午夜无码鲁丝片午夜精品 | 无码人妻黑人中文字幕 | 精品乱子伦一区二区三区 | 国产精品沙发午睡系列 | 欧美国产亚洲日韩在线二区 | 精品国精品国产自在久国产87 | 两性色午夜视频免费播放 | 亚洲欧美日韩综合久久久 | 自拍偷自拍亚洲精品被多人伦好爽 | 美女黄网站人色视频免费国产 | 无码人妻出轨黑人中文字幕 | 伊人久久大香线蕉av一区二区 | 巨爆乳无码视频在线观看 | 国精产品一区二区三区 | 国产一区二区三区影院 | 乱人伦人妻中文字幕无码久久网 | 色综合久久88色综合天天 | 亚洲色在线无码国产精品不卡 | 欧美人与动性行为视频 | 久久亚洲中文字幕无码 | 全球成人中文在线 | 久久人人爽人人人人片 | 男女猛烈xx00免费视频试看 | 精品人妻人人做人人爽夜夜爽 | 国产熟妇高潮叫床视频播放 | 国产亚洲精品久久久久久久 | 亚洲国产成人a精品不卡在线 | 日韩欧美中文字幕在线三区 | 欧美人与物videos另类 | 自拍偷自拍亚洲精品10p | 97无码免费人妻超级碰碰夜夜 | 国产精品亚洲а∨无码播放麻豆 | 亚洲中文字幕无码一久久区 | 亚洲国产精品久久久久久 | 67194成是人免费无码 | 久久国产精品萌白酱免费 | 日韩少妇内射免费播放 | 国产无套粉嫩白浆在线 | 麻花豆传媒剧国产免费mv在线 | 婷婷丁香六月激情综合啪 | 日韩av无码一区二区三区不卡 | 亚洲а∨天堂久久精品2021 | 精品乱码久久久久久久 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 天堂а√在线地址中文在线 | 亚洲综合久久一区二区 | 国产精品亚洲а∨无码播放麻豆 | 亚洲精品成人av在线 | 在线 国产 欧美 亚洲 天堂 | 欧美人与物videos另类 | 亚洲人成影院在线无码按摩店 | 成 人影片 免费观看 | 色欲久久久天天天综合网精品 | 高潮喷水的毛片 | 中文字幕无码免费久久9一区9 | 国产疯狂伦交大片 | 国产精华av午夜在线观看 | 国产精品无套呻吟在线 | 小泽玛莉亚一区二区视频在线 | 亚洲天堂2017无码 | 亚洲国产欧美日韩精品一区二区三区 | 天天拍夜夜添久久精品大 | 久久99精品久久久久久 | 免费观看黄网站 | 强奷人妻日本中文字幕 | 欧美一区二区三区 | 亚洲精品成a人在线观看 | 亚洲男人av天堂午夜在 | 欧美丰满老熟妇xxxxx性 | 夜夜影院未满十八勿进 | 人人妻人人澡人人爽人人精品浪潮 | 乱人伦中文视频在线观看 | 亚洲精品久久久久久久久久久 | 亚洲精品一区二区三区四区五区 | 久久国语露脸国产精品电影 | 人人妻人人澡人人爽欧美精品 | 国产亚洲欧美在线专区 | 少妇邻居内射在线 | 波多野结衣av一区二区全免费观看 | 男女猛烈xx00免费视频试看 | 野外少妇愉情中文字幕 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 日日碰狠狠躁久久躁蜜桃 | 亚洲成av人在线观看网址 | 亚洲熟熟妇xxxx | 欧美35页视频在线观看 | 欧美一区二区三区 | 亚洲日韩一区二区 | 丰满人妻一区二区三区免费视频 | 天堂а√在线地址中文在线 | 性生交大片免费看女人按摩摩 | 永久免费观看美女裸体的网站 | 久久精品一区二区三区四区 | 内射巨臀欧美在线视频 | 亚洲男人av天堂午夜在 | 精品欧美一区二区三区久久久 | 一本无码人妻在中文字幕免费 | 国产 精品 自在自线 | 网友自拍区视频精品 | 动漫av一区二区在线观看 | 狂野欧美性猛xxxx乱大交 | 国产精品第一区揄拍无码 | 网友自拍区视频精品 | 国产精品18久久久久久麻辣 | 18无码粉嫩小泬无套在线观看 | 激情内射日本一区二区三区 | 夜夜影院未满十八勿进 | 欧美喷潮久久久xxxxx | 久久精品国产一区二区三区肥胖 | 水蜜桃av无码 | 精品国产成人一区二区三区 | 狠狠色噜噜狠狠狠狠7777米奇 | 久久久久久国产精品无码下载 | 欧美日韩久久久精品a片 | 色婷婷av一区二区三区之红樱桃 | 欧美日韩久久久精品a片 | 精品久久综合1区2区3区激情 | 午夜福利试看120秒体验区 | 成熟妇人a片免费看网站 | 熟女少妇人妻中文字幕 | 国产精品18久久久久久麻辣 | 免费国产成人高清在线观看网站 | 午夜性刺激在线视频免费 | 双乳奶水饱满少妇呻吟 | 亚洲伊人久久精品影院 | 自拍偷自拍亚洲精品10p | 国产口爆吞精在线视频 | 自拍偷自拍亚洲精品10p | 欧洲欧美人成视频在线 | 桃花色综合影院 | 国产一区二区三区影院 | 亚洲精品午夜无码电影网 | 国产综合色产在线精品 | 人人妻人人澡人人爽欧美精品 | 国产精品国产自线拍免费软件 | 成熟女人特级毛片www免费 | 天堂а√在线中文在线 | 日韩精品无码免费一区二区三区 | 无码人妻丰满熟妇区五十路百度 | 人人澡人人透人人爽 | 国产精品内射视频免费 | 亚洲中文字幕成人无码 | 天堂а√在线地址中文在线 | 亚洲春色在线视频 | 99久久人妻精品免费二区 | 人妻与老人中文字幕 | 无遮挡国产高潮视频免费观看 | 国产精品亚洲专区无码不卡 | 久久国产精品_国产精品 | 亚洲一区二区观看播放 | 日日碰狠狠丁香久燥 | 国产内射老熟女aaaa | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 无码精品人妻一区二区三区av | 国产精品美女久久久久av爽李琼 | 久久久久久av无码免费看大片 | 色综合久久88色综合天天 | 亚洲中文字幕无码中文字在线 | 天海翼激烈高潮到腰振不止 | 国产肉丝袜在线观看 | 久久婷婷五月综合色国产香蕉 | 风流少妇按摩来高潮 | 欧美熟妇另类久久久久久不卡 | 久久精品视频在线看15 | 亚洲第一网站男人都懂 | 无码人妻精品一区二区三区不卡 | 97久久国产亚洲精品超碰热 | 久久综合香蕉国产蜜臀av | 成人无码精品1区2区3区免费看 | 亚洲精品一区二区三区四区五区 | 波多野结衣av一区二区全免费观看 | 中文字幕乱码亚洲无线三区 | 精品偷拍一区二区三区在线看 | 成人免费视频一区二区 | 国产成人无码专区 | 人人妻人人藻人人爽欧美一区 | 亚洲精品一区二区三区在线观看 | 久久综合激激的五月天 | 无码人妻久久一区二区三区不卡 | 自拍偷自拍亚洲精品被多人伦好爽 | 两性色午夜视频免费播放 | 欧洲精品码一区二区三区免费看 | 秋霞成人午夜鲁丝一区二区三区 | 久久久久99精品成人片 | 久久精品视频在线看15 | 大肉大捧一进一出好爽视频 | 欧美阿v高清资源不卡在线播放 | 在线观看国产午夜福利片 | 久久精品国产一区二区三区 | 97资源共享在线视频 | 亚洲精品国偷拍自产在线观看蜜桃 | aⅴ亚洲 日韩 色 图网站 播放 | 日韩视频 中文字幕 视频一区 | 中文字幕亚洲情99在线 | 久久亚洲a片com人成 | 67194成是人免费无码 | 久久久精品456亚洲影院 | 国产农村妇女高潮大叫 | 东京无码熟妇人妻av在线网址 | 蜜臀av无码人妻精品 | 国产激情无码一区二区 | 日本一本二本三区免费 | 四十如虎的丰满熟妇啪啪 | 秋霞特色aa大片 | 亚洲国产欧美在线成人 | 亚洲国产精华液网站w | 精品少妇爆乳无码av无码专区 | 国产激情无码一区二区app | 理论片87福利理论电影 | 久久综合网欧美色妞网 | 久久午夜无码鲁丝片午夜精品 | 亚洲日韩一区二区 | 日韩人妻系列无码专区 | 中文字幕av无码一区二区三区电影 | 丰满护士巨好爽好大乳 | av无码电影一区二区三区 | 欧美日韩亚洲国产精品 | 亚洲精品成a人在线观看 | 亚洲精品国产精品乱码视色 | 欧美老妇交乱视频在线观看 | 黑人粗大猛烈进出高潮视频 | 色婷婷久久一区二区三区麻豆 | 熟女体下毛毛黑森林 | 亚洲精品久久久久avwww潮水 | 亚洲国产一区二区三区在线观看 | 伊人久久大香线蕉av一区二区 | 麻豆md0077饥渴少妇 | 狂野欧美激情性xxxx | 在线播放亚洲第一字幕 | 在线播放无码字幕亚洲 | 性生交大片免费看女人按摩摩 | 荫蒂被男人添的好舒服爽免费视频 | 国产精品亚洲а∨无码播放麻豆 | 无遮无挡爽爽免费视频 | 夜精品a片一区二区三区无码白浆 | 牲欲强的熟妇农村老妇女视频 | 亚洲精品久久久久avwww潮水 | 午夜免费福利小电影 | 欧美阿v高清资源不卡在线播放 | 中文字幕乱码人妻二区三区 | 99久久精品日本一区二区免费 | 夜精品a片一区二区三区无码白浆 | 无码精品人妻一区二区三区av | 国产高潮视频在线观看 | 国产麻豆精品一区二区三区v视界 | 女人高潮内射99精品 | 中文字幕乱码亚洲无线三区 | 乱中年女人伦av三区 | 国产成人久久精品流白浆 | 人妻插b视频一区二区三区 | 久久久国产一区二区三区 | 久久精品女人天堂av免费观看 | 色综合天天综合狠狠爱 | 色噜噜亚洲男人的天堂 | 国产av久久久久精东av | 日本爽爽爽爽爽爽在线观看免 | 国产真实伦对白全集 | 青青青手机频在线观看 | 97夜夜澡人人爽人人喊中国片 | 一区二区三区高清视频一 | 色五月五月丁香亚洲综合网 | 亚洲国产精品无码久久久久高潮 | 久久视频在线观看精品 | 亚洲另类伦春色综合小说 | 日本免费一区二区三区最新 | 色一情一乱一伦一区二区三欧美 | 中文精品无码中文字幕无码专区 | 欧美丰满老熟妇xxxxx性 | 亚洲色欲色欲天天天www | 激情五月综合色婷婷一区二区 | 国内少妇偷人精品视频免费 | 亚洲 日韩 欧美 成人 在线观看 | 国产精品对白交换视频 | 秋霞特色aa大片 | 色欲av亚洲一区无码少妇 | 窝窝午夜理论片影院 | 国产精品沙发午睡系列 | 日韩av无码中文无码电影 | 国产精品无码成人午夜电影 | 色爱情人网站 | 精品厕所偷拍各类美女tp嘘嘘 | 国产疯狂伦交大片 | 亚洲 另类 在线 欧美 制服 | 国色天香社区在线视频 | 亚洲成在人网站无码天堂 | 色综合久久网 | 国产欧美亚洲精品a | 欧美亚洲国产一区二区三区 | 亚洲区小说区激情区图片区 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 欧美丰满熟妇xxxx性ppx人交 | 国产无遮挡又黄又爽又色 | 男人的天堂av网站 | 欧美xxxxx精品 | 日韩人妻少妇一区二区三区 | 九月婷婷人人澡人人添人人爽 | 亚洲色偷偷男人的天堂 | 日韩无套无码精品 | 国产情侣作爱视频免费观看 | 色综合久久88色综合天天 | 四虎国产精品一区二区 | 亚洲国产欧美在线成人 | 又紧又大又爽精品一区二区 | 天堂一区人妻无码 | 清纯唯美经典一区二区 | 久久精品一区二区三区四区 | 国产午夜亚洲精品不卡 | 九九热爱视频精品 | 国产极品美女高潮无套在线观看 | 国产一区二区三区四区五区加勒比 | 国产免费观看黄av片 | 中国女人内谢69xxxxxa片 | 国产乱人偷精品人妻a片 | 九九综合va免费看 | 55夜色66夜色国产精品视频 | 色一情一乱一伦 | 狠狠亚洲超碰狼人久久 | 亚洲娇小与黑人巨大交 | 亚洲国产精品久久人人爱 | 熟女体下毛毛黑森林 | 中文字幕无码人妻少妇免费 | 精品人妻中文字幕有码在线 | 国产熟妇高潮叫床视频播放 | 无码国模国产在线观看 | 国产欧美精品一区二区三区 | 国产后入清纯学生妹 | 日本一区二区更新不卡 | 久久视频在线观看精品 | 一本久久伊人热热精品中文字幕 | 麻豆精品国产精华精华液好用吗 | 99久久久无码国产aaa精品 | 女人被男人爽到呻吟的视频 | 亚洲成av人片天堂网无码】 | 午夜精品一区二区三区在线观看 | 欧美阿v高清资源不卡在线播放 | 亚洲精品一区二区三区在线 | 国产亚洲精品久久久久久 | 国产艳妇av在线观看果冻传媒 | 在线观看免费人成视频 | 又大又硬又黄的免费视频 | 色综合久久网 | 最近的中文字幕在线看视频 | 熟女少妇人妻中文字幕 | 国产成人精品无码播放 | 久久精品国产精品国产精品污 | 免费观看的无遮挡av | 四虎国产精品一区二区 | 久久综合网欧美色妞网 | 少妇被黑人到高潮喷出白浆 | 久久久av男人的天堂 | 未满小14洗澡无码视频网站 | 丝袜足控一区二区三区 | 俺去俺来也在线www色官网 | 内射白嫩少妇超碰 | 久久久国产精品无码免费专区 | 成人免费视频视频在线观看 免费 | 波多野结衣乳巨码无在线观看 | 综合激情五月综合激情五月激情1 | 亚洲精品国偷拍自产在线观看蜜桃 | 国产麻豆精品一区二区三区v视界 | 久久久精品国产sm最大网站 | 少妇人妻大乳在线视频 | 88国产精品欧美一区二区三区 | 免费网站看v片在线18禁无码 | 国产高清不卡无码视频 | 欧美人妻一区二区三区 | 欧美老人巨大xxxx做受 | 任你躁国产自任一区二区三区 | 乱码av麻豆丝袜熟女系列 | 久久久久亚洲精品男人的天堂 | 国产精品久久国产精品99 | 成人性做爰aaa片免费看 | 久久久久久av无码免费看大片 | 少妇被黑人到高潮喷出白浆 | 欧美成人免费全部网站 | 少妇激情av一区二区 | 天堂а√在线地址中文在线 | 人妻无码αv中文字幕久久琪琪布 | 色狠狠av一区二区三区 | 一本久道久久综合狠狠爱 | 天天爽夜夜爽夜夜爽 | 99久久精品日本一区二区免费 | 亚洲精品中文字幕久久久久 | 日韩精品成人一区二区三区 | 久久人妻内射无码一区三区 | 樱花草在线播放免费中文 | 人妻少妇精品无码专区动漫 | 男女性色大片免费网站 | 久久亚洲精品成人无码 | 欧美亚洲日韩国产人成在线播放 | 麻豆成人精品国产免费 | av无码不卡在线观看免费 | 扒开双腿吃奶呻吟做受视频 | 亚洲精品午夜无码电影网 | 婷婷六月久久综合丁香 | 国产精品怡红院永久免费 | 内射后入在线观看一区 | 国产av无码专区亚洲awww | 夜夜影院未满十八勿进 | 国产后入清纯学生妹 | 亚洲精品一区国产 | 国产人妖乱国产精品人妖 | 熟妇人妻无码xxx视频 | 国产莉萝无码av在线播放 | 无码成人精品区在线观看 | 欧美放荡的少妇 | 人妻少妇精品视频专区 | 免费视频欧美无人区码 | 人人爽人人爽人人片av亚洲 | аⅴ资源天堂资源库在线 | 国产乱人无码伦av在线a | 欧美野外疯狂做受xxxx高潮 | 亚洲成在人网站无码天堂 | 成人精品天堂一区二区三区 | 波多野结衣高清一区二区三区 | 麻豆人妻少妇精品无码专区 | 久久国产自偷自偷免费一区调 | 色综合久久网 | 18禁黄网站男男禁片免费观看 | 美女极度色诱视频国产 | 亚洲国产欧美在线成人 | 国产区女主播在线观看 | 国产欧美熟妇另类久久久 | 日本大香伊一区二区三区 | 无码人妻出轨黑人中文字幕 | 人人爽人人澡人人人妻 | 精品日本一区二区三区在线观看 | 丰满人妻翻云覆雨呻吟视频 | 国产情侣作爱视频免费观看 | 国产精品久久久久久久影院 | 久久久精品456亚洲影院 | 国产精品亚洲五月天高清 | 日韩精品无码免费一区二区三区 | 色偷偷av老熟女 久久精品人妻少妇一区二区三区 | 性生交片免费无码看人 | 天堂а√在线地址中文在线 | 国产艳妇av在线观看果冻传媒 | 国产乱子伦视频在线播放 | 福利一区二区三区视频在线观看 | 亚洲精品久久久久avwww潮水 | 99视频精品全部免费免费观看 | 熟妇人妻激情偷爽文 | 日本www一道久久久免费榴莲 | 国产手机在线αⅴ片无码观看 | 国产精品毛多多水多 | 国产精品久久久一区二区三区 | 少妇久久久久久人妻无码 | 日韩 欧美 动漫 国产 制服 | 国产成人无码一二三区视频 | 强伦人妻一区二区三区视频18 | 内射欧美老妇wbb | 丰腴饱满的极品熟妇 | 亚洲一区二区三区香蕉 | 欧美激情综合亚洲一二区 | 欧美真人作爱免费视频 | 日本va欧美va欧美va精品 | 欧美精品无码一区二区三区 | 日韩人妻无码一区二区三区久久99 | 国产麻豆精品一区二区三区v视界 | 精品厕所偷拍各类美女tp嘘嘘 | 蜜桃视频韩日免费播放 | 国产成人无码一二三区视频 | 成人无码影片精品久久久 | 精品国产成人一区二区三区 | 荫蒂添的好舒服视频囗交 | 无码人妻出轨黑人中文字幕 | 丁香啪啪综合成人亚洲 | 久久久久99精品成人片 | 国产女主播喷水视频在线观看 | 成人影院yy111111在线观看 | 久久久精品国产sm最大网站 | 久久亚洲中文字幕精品一区 | 中文字幕无码av激情不卡 | 亚洲自偷自拍另类第1页 | 亚洲日本一区二区三区在线 | 国产国产精品人在线视 | 少妇邻居内射在线 | 麻豆国产人妻欲求不满 | 欧美日韩人成综合在线播放 | 动漫av一区二区在线观看 | 大乳丰满人妻中文字幕日本 | 国产精品高潮呻吟av久久4虎 | 久久精品国产日本波多野结衣 | 久久精品女人天堂av免费观看 | 亚洲一区二区三区国产精华液 | 久久精品一区二区三区四区 | 自拍偷自拍亚洲精品被多人伦好爽 | 国产免费观看黄av片 | 最近的中文字幕在线看视频 | 一本大道伊人av久久综合 | 欧美第一黄网免费网站 | 中文字幕乱码人妻二区三区 | 亚洲区欧美区综合区自拍区 | 国产97色在线 | 免 | 97精品国产97久久久久久免费 | 帮老师解开蕾丝奶罩吸乳网站 | 欧美成人家庭影院 | 国产精品内射视频免费 | 日本一本二本三区免费 | 精品少妇爆乳无码av无码专区 | 强伦人妻一区二区三区视频18 | 两性色午夜视频免费播放 | 欧美人与禽猛交狂配 | 国产成人无码午夜视频在线观看 | 国产精品理论片在线观看 | 国产精品无码久久av | 久久国产36精品色熟妇 | 国产亚av手机在线观看 | 妺妺窝人体色www在线小说 | 国产欧美熟妇另类久久久 | 中国女人内谢69xxxx | 九九久久精品国产免费看小说 | 免费观看黄网站 | 欧美亚洲日韩国产人成在线播放 | 国产av一区二区精品久久凹凸 | 国产成人精品无码播放 | 欧美性猛交内射兽交老熟妇 | 国产激情综合五月久久 | 国产成人精品视频ⅴa片软件竹菊 | 中文亚洲成a人片在线观看 | 国产精品成人av在线观看 | 国产福利视频一区二区 | 中文无码精品a∨在线观看不卡 | 日日碰狠狠丁香久燥 | 亚洲综合久久一区二区 | 成人免费无码大片a毛片 | 黑人巨大精品欧美一区二区 | 少妇性荡欲午夜性开放视频剧场 | 国产又爽又黄又刺激的视频 | 国产免费无码一区二区视频 | 久久精品一区二区三区四区 | 亚洲中文字幕乱码av波多ji | 捆绑白丝粉色jk震动捧喷白浆 | 欧美亚洲国产一区二区三区 | 久久午夜无码鲁丝片秋霞 | 日韩欧美群交p片內射中文 | 人人妻人人澡人人爽欧美一区 | 国产又粗又硬又大爽黄老大爷视 | 国产精品人人爽人人做我的可爱 | 色偷偷人人澡人人爽人人模 | 午夜不卡av免费 一本久久a久久精品vr综合 | 国产做国产爱免费视频 | 亚洲中文字幕无码一久久区 | 久久久久99精品国产片 | 天下第一社区视频www日本 | 中文亚洲成a人片在线观看 | 成在人线av无码免费 | 亚洲中文字幕在线无码一区二区 | 少妇一晚三次一区二区三区 | 久久99精品久久久久久动态图 | 夜夜夜高潮夜夜爽夜夜爰爰 | 麻豆精品国产精华精华液好用吗 | 国产艳妇av在线观看果冻传媒 | 丁香花在线影院观看在线播放 | 国产精品毛片一区二区 | 一本色道婷婷久久欧美 | 午夜无码区在线观看 | 中文字幕无码免费久久9一区9 | 欧美阿v高清资源不卡在线播放 | 男女下面进入的视频免费午夜 | 国产精品-区区久久久狼 | 永久免费精品精品永久-夜色 | 无码免费一区二区三区 | 精品国产乱码久久久久乱码 | 无码精品人妻一区二区三区av | 久久久久国色av免费观看性色 | 亚洲爆乳精品无码一区二区三区 | 在线观看国产一区二区三区 | 一个人看的视频www在线 | 国产卡一卡二卡三 | 两性色午夜视频免费播放 | 精品亚洲成av人在线观看 | 亚洲中文字幕在线观看 | 欧美野外疯狂做受xxxx高潮 | 国产 精品 自在自线 | 欧美freesex黑人又粗又大 | 国产极品视觉盛宴 | 在线亚洲高清揄拍自拍一品区 | 日产精品高潮呻吟av久久 | 国产亚洲人成a在线v网站 | 暴力强奷在线播放无码 | 精品国产乱码久久久久乱码 | 国产精品国产三级国产专播 | 欧美午夜特黄aaaaaa片 | 日韩av激情在线观看 | 色婷婷综合激情综在线播放 | 精品无码成人片一区二区98 | 影音先锋中文字幕无码 | 无码精品国产va在线观看dvd | 狠狠噜狠狠狠狠丁香五月 | 国产肉丝袜在线观看 | 性做久久久久久久免费看 | 蜜臀av无码人妻精品 | 强伦人妻一区二区三区视频18 | 久久国内精品自在自线 | 欧美日韩在线亚洲综合国产人 | 亚洲国产成人a精品不卡在线 | 亚洲人亚洲人成电影网站色 | 亚洲午夜久久久影院 | 老熟妇仑乱视频一区二区 | 国语精品一区二区三区 | 日韩精品无码一区二区中文字幕 | 精品人妻人人做人人爽夜夜爽 | 国产人成高清在线视频99最全资源 | 欧洲精品码一区二区三区免费看 | 久久精品人妻少妇一区二区三区 | 亚洲小说春色综合另类 | 搡女人真爽免费视频大全 | 久久精品无码一区二区三区 | 国产成人一区二区三区别 | 中文字幕无码免费久久9一区9 | 人妻少妇精品视频专区 | 国产成人精品视频ⅴa片软件竹菊 | 国产在热线精品视频 | 国产美女极度色诱视频www | 久久99热只有频精品8 | 久久 国产 尿 小便 嘘嘘 | 欧美zoozzooz性欧美 | 亚洲欧美日韩国产精品一区二区 | 乱码午夜-极国产极内射 | 亚洲国产成人av在线观看 | 强辱丰满人妻hd中文字幕 | 久久精品丝袜高跟鞋 | 少妇久久久久久人妻无码 | 午夜熟女插插xx免费视频 | 成年美女黄网站色大免费视频 | 女高中生第一次破苞av | 久久无码专区国产精品s | 青草视频在线播放 | 女人被男人爽到呻吟的视频 | 九九热爱视频精品 | 风流少妇按摩来高潮 | 一区二区三区乱码在线 | 欧洲 | 亚洲国产精品无码一区二区三区 | 狠狠色丁香久久婷婷综合五月 | 久久97精品久久久久久久不卡 | 一本一道久久综合久久 | 日韩欧美中文字幕在线三区 | 在线а√天堂中文官网 | 国产精品无码成人午夜电影 | 色爱情人网站 | 亚洲日韩av片在线观看 | 亚洲精品一区二区三区四区五区 | 国产精品第一国产精品 | 成人免费视频一区二区 | 四虎影视成人永久免费观看视频 | 精品国产一区二区三区四区 | 国产黑色丝袜在线播放 | 男女下面进入的视频免费午夜 | 国产成人精品无码播放 | 精品偷拍一区二区三区在线看 | 国产精品igao视频网 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 国产艳妇av在线观看果冻传媒 | √8天堂资源地址中文在线 | 99久久精品国产一区二区蜜芽 | 欧美日本免费一区二区三区 | 捆绑白丝粉色jk震动捧喷白浆 | 天堂亚洲2017在线观看 | 亚洲一区二区三区播放 | 日本大香伊一区二区三区 | 人人妻人人澡人人爽欧美一区九九 | 波多野结衣一区二区三区av免费 | 日本丰满护士爆乳xxxx | 国产午夜亚洲精品不卡下载 | 日韩人妻系列无码专区 | 18禁止看的免费污网站 | 精品国产av色一区二区深夜久久 | 97人妻精品一区二区三区 | 中文字幕色婷婷在线视频 | 国产高清av在线播放 | 日韩欧美中文字幕在线三区 | 国产乱人伦偷精品视频 | 少妇无码吹潮 | 在线成人www免费观看视频 | 香港三级日本三级妇三级 | 亚洲人成无码网www | 欧美人与禽猛交狂配 | 未满小14洗澡无码视频网站 | 中文字幕无码免费久久99 | 永久免费精品精品永久-夜色 | 成在人线av无码免观看麻豆 | 少妇高潮喷潮久久久影院 | 在线精品国产一区二区三区 | 夜夜躁日日躁狠狠久久av | 蜜桃av抽搐高潮一区二区 | 日日噜噜噜噜夜夜爽亚洲精品 | 国产日产欧产精品精品app | 久久精品无码一区二区三区 | 狠狠色噜噜狠狠狠狠7777米奇 | 激情内射亚州一区二区三区爱妻 | 精品熟女少妇av免费观看 | 成人亚洲精品久久久久 | 久久亚洲日韩精品一区二区三区 | 帮老师解开蕾丝奶罩吸乳网站 | 国产精品香蕉在线观看 | 国产亚洲人成在线播放 | 国产人妻精品一区二区三区不卡 | 学生妹亚洲一区二区 | 一区二区三区乱码在线 | 欧洲 | 久久精品女人的天堂av | 男女爱爱好爽视频免费看 | 在线观看国产一区二区三区 | 天堂在线观看www | 国产精品国产自线拍免费软件 | 国产成人无码午夜视频在线观看 | 日韩精品无码一区二区中文字幕 | 国产舌乚八伦偷品w中 | av小次郎收藏 | 午夜男女很黄的视频 | 国产偷抇久久精品a片69 | 亚洲精品午夜无码电影网 | www一区二区www免费 | 亚洲成a人片在线观看无码3d | 一本色道久久综合狠狠躁 | 日韩亚洲欧美精品综合 | 一本色道久久综合亚洲精品不卡 | 久久亚洲日韩精品一区二区三区 | 亚洲日韩av一区二区三区四区 | 欧美国产日产一区二区 | 国产av一区二区精品久久凹凸 | 曰本女人与公拘交酡免费视频 | 亚洲天堂2017无码中文 | 亚洲一区二区三区 | 国产特级毛片aaaaaa高潮流水 | 正在播放老肥熟妇露脸 | 天堂无码人妻精品一区二区三区 | 国产人妻大战黑人第1集 | 少妇人妻大乳在线视频 | 精品国产乱码久久久久乱码 | 国产精品va在线观看无码 | 妺妺窝人体色www在线小说 | 丰满少妇高潮惨叫视频 | 国产成人av免费观看 | 国产9 9在线 | 中文 | 久久久精品人妻久久影视 | 国产午夜亚洲精品不卡下载 | 久久精品国产精品国产精品污 | 国产网红无码精品视频 | av无码不卡在线观看免费 | 影音先锋中文字幕无码 | 亚洲大尺度无码无码专区 | 国产亚洲精品久久久久久大师 | 久久精品99久久香蕉国产色戒 | 日本熟妇浓毛 | 国产精品久久久久久亚洲影视内衣 | 国产精品对白交换视频 | 夜夜躁日日躁狠狠久久av | 老头边吃奶边弄进去呻吟 | 人妻有码中文字幕在线 | 午夜福利电影 | 国产精品久久久久影院嫩草 | 十八禁真人啪啪免费网站 | 亚洲va中文字幕无码久久不卡 | 国产高清av在线播放 | 亚洲中文字幕无码中文字在线 | 久久熟妇人妻午夜寂寞影院 | 波多野结衣av一区二区全免费观看 | 久久人人爽人人爽人人片av高清 | 天天躁日日躁狠狠躁免费麻豆 | 亚洲国产成人av在线观看 | 乱人伦人妻中文字幕无码 | 无码人妻精品一区二区三区不卡 | 中文字幕人妻无码一区二区三区 | 国产乱子伦视频在线播放 | 国产香蕉尹人综合在线观看 | 亚洲人成网站在线播放942 | 亚洲成熟女人毛毛耸耸多 | 国产成人无码a区在线观看视频app | 樱花草在线社区www | 人人妻人人藻人人爽欧美一区 | 精品欧美一区二区三区久久久 | 桃花色综合影院 | 亚洲欧洲日本无在线码 | 亚洲国产成人a精品不卡在线 | 高潮毛片无遮挡高清免费视频 | 超碰97人人射妻 | 久久综合色之久久综合 | 亚洲精品国产第一综合99久久 | 精品无码国产自产拍在线观看蜜 | 国产精品人妻一区二区三区四 | 国产av一区二区三区最新精品 | a片免费视频在线观看 | 欧美精品一区二区精品久久 | 久久无码人妻影院 | 精品一区二区三区波多野结衣 | 欧美三级a做爰在线观看 | 麻豆蜜桃av蜜臀av色欲av | 精品国产一区二区三区四区在线看 | 麻豆成人精品国产免费 | 日韩人妻系列无码专区 | 亚洲a无码综合a国产av中文 | 偷窥日本少妇撒尿chinese | 丝袜人妻一区二区三区 | 精品国产一区二区三区四区 | 无码精品国产va在线观看dvd | 国内精品人妻无码久久久影院蜜桃 | 国产成人一区二区三区别 | 中文字幕无码人妻少妇免费 | 成人无码精品一区二区三区 | 少妇久久久久久人妻无码 | 黑人巨大精品欧美一区二区 | 中文字幕乱码人妻无码久久 | 在线观看免费人成视频 | 1000部啪啪未满十八勿入下载 | 欧美丰满少妇xxxx性 | 亚洲国产精品久久久久久 | 久久国语露脸国产精品电影 | 在教室伦流澡到高潮hnp视频 | 久久精品国产一区二区三区 | 最新国产乱人伦偷精品免费网站 | 国产真实乱对白精彩久久 | 日韩视频 中文字幕 视频一区 | 男女爱爱好爽视频免费看 | 啦啦啦www在线观看免费视频 | 日日鲁鲁鲁夜夜爽爽狠狠 | 搡女人真爽免费视频大全 | 久久久婷婷五月亚洲97号色 | 国产亚洲精品久久久久久大师 | 国产av一区二区精品久久凹凸 | 日韩视频 中文字幕 视频一区 | 亚洲精品欧美二区三区中文字幕 | 99久久精品国产一区二区蜜芽 | 久久精品中文闷骚内射 | 在线播放亚洲第一字幕 | 日韩av无码一区二区三区 | 波多野结衣高清一区二区三区 | 久久精品丝袜高跟鞋 | 激情国产av做激情国产爱 | 免费观看又污又黄的网站 | 中文字幕乱妇无码av在线 | 无码任你躁久久久久久久 | 丰满少妇高潮惨叫视频 | 国内少妇偷人精品视频 | 人人妻人人澡人人爽人人精品 | 日本丰满熟妇videos | 久久久精品人妻久久影视 | 亚洲人成网站色7799 | 牲欲强的熟妇农村老妇女视频 | 亚洲一区二区三区四区 | 天堂无码人妻精品一区二区三区 | 无码吃奶揉捏奶头高潮视频 | 精品乱码久久久久久久 | 三级4级全黄60分钟 | 国产精品亚洲五月天高清 | 欧美熟妇另类久久久久久多毛 | 大屁股大乳丰满人妻 | 日韩欧美群交p片內射中文 | 高潮毛片无遮挡高清免费视频 | 特大黑人娇小亚洲女 | 午夜理论片yy44880影院 | 中文字幕 人妻熟女 | 欧美三级a做爰在线观看 | 国产无套粉嫩白浆在线 | 秋霞成人午夜鲁丝一区二区三区 | 婷婷六月久久综合丁香 | 97资源共享在线视频 | 国产一区二区三区影院 | 荫蒂添的好舒服视频囗交 | 欧美阿v高清资源不卡在线播放 | 久久久久久久人妻无码中文字幕爆 | 亚洲男人av香蕉爽爽爽爽 | 精品久久久久久人妻无码中文字幕 | 夜精品a片一区二区三区无码白浆 | 精品国产一区二区三区av 性色 | a片免费视频在线观看 | 亚洲a无码综合a国产av中文 | 免费无码av一区二区 | 美女黄网站人色视频免费国产 | 亚洲精品成a人在线观看 | 国产亚洲tv在线观看 | 日本一区二区三区免费高清 | 日韩av无码一区二区三区不卡 | 曰本女人与公拘交酡免费视频 | 97se亚洲精品一区 | 亚洲自偷自拍另类第1页 | 欧洲精品码一区二区三区免费看 | 又黄又爽又色的视频 | 亚洲色欲色欲欲www在线 | 免费人成在线观看网站 | 久久 国产 尿 小便 嘘嘘 | 日韩av无码中文无码电影 | 国产人妻久久精品二区三区老狼 | 综合网日日天干夜夜久久 | 成年美女黄网站色大免费视频 | 欧美三级不卡在线观看 | 夜夜高潮次次欢爽av女 | 国产精品二区一区二区aⅴ污介绍 | 天下第一社区视频www日本 | 中国女人内谢69xxxxxa片 | 久久99精品国产麻豆 | 无码av最新清无码专区吞精 | 日韩少妇白浆无码系列 | 日本一区二区三区免费高清 | 日日噜噜噜噜夜夜爽亚洲精品 | 成人免费视频一区二区 | 亚洲欧洲日本无在线码 | 熟妇人妻无乱码中文字幕 | 国产成人无码av片在线观看不卡 | 精品一二三区久久aaa片 | 毛片内射-百度 | 国产无遮挡吃胸膜奶免费看 | 少妇无码一区二区二三区 | 又大又硬又黄的免费视频 | 免费中文字幕日韩欧美 | 国产艳妇av在线观看果冻传媒 | 国产精品久久久久7777 | 日本熟妇人妻xxxxx人hd | 日韩精品无码免费一区二区三区 | 欧美熟妇另类久久久久久不卡 | 亚洲精品综合一区二区三区在线 | 亚洲国产欧美日韩精品一区二区三区 | 日韩成人一区二区三区在线观看 | 国产午夜无码精品免费看 | 国产情侣作爱视频免费观看 | 久久天天躁狠狠躁夜夜免费观看 | 国产婷婷色一区二区三区在线 | 国产艳妇av在线观看果冻传媒 | 欧美精品国产综合久久 | 日日摸夜夜摸狠狠摸婷婷 | 初尝人妻少妇中文字幕 | 精品人人妻人人澡人人爽人人 | 鲁鲁鲁爽爽爽在线视频观看 | 高清不卡一区二区三区 | 久久精品国产一区二区三区肥胖 | 精品乱码久久久久久久 | 国产精品永久免费视频 | 国产成人精品三级麻豆 | 丰满人妻翻云覆雨呻吟视频 | 天堂久久天堂av色综合 | 久久无码专区国产精品s | 亚洲va中文字幕无码久久不卡 | 亚洲成av人影院在线观看 | 少女韩国电视剧在线观看完整 | 国产高清av在线播放 | 国精品人妻无码一区二区三区蜜柚 | 蜜桃视频插满18在线观看 | 色婷婷香蕉在线一区二区 | 久久天天躁狠狠躁夜夜免费观看 | 初尝人妻少妇中文字幕 | 无码帝国www无码专区色综合 | 中文字幕无码av波多野吉衣 | 成人亚洲精品久久久久软件 | 又粗又大又硬毛片免费看 | 亚洲乱码中文字幕在线 | 日韩视频 中文字幕 视频一区 | 天天躁日日躁狠狠躁免费麻豆 | 性欧美熟妇videofreesex | 午夜时刻免费入口 | 成人无码视频免费播放 | 国产精品美女久久久久av爽李琼 | 久久久久人妻一区精品色欧美 | 日韩少妇内射免费播放 | 欧洲极品少妇 | 欧美老妇与禽交 | 精品久久8x国产免费观看 | 国产绳艺sm调教室论坛 | 无码人妻精品一区二区三区下载 | 亚洲成在人网站无码天堂 | 亚洲一区二区观看播放 | 永久免费观看国产裸体美女 | 成人一区二区免费视频 | 亚洲精品一区国产 | 任你躁在线精品免费 | 男女作爱免费网站 | 在线精品国产一区二区三区 | 天天躁夜夜躁狠狠是什么心态 | 亚洲精品国产精品乱码视色 | 亚洲精品久久久久久久久久久 | 少妇性荡欲午夜性开放视频剧场 | 高潮毛片无遮挡高清免费 | 亚洲最大成人网站 | 在线观看欧美一区二区三区 | 任你躁在线精品免费 | 中文字幕av日韩精品一区二区 | 99久久人妻精品免费一区 | 亚洲日韩中文字幕在线播放 | 香港三级日本三级妇三级 | 99久久精品午夜一区二区 | 色婷婷久久一区二区三区麻豆 | 无码人妻少妇伦在线电影 | 给我免费的视频在线观看 | 欧美人与禽猛交狂配 | 国产成人无码av片在线观看不卡 | 色欲久久久天天天综合网精品 | 少妇久久久久久人妻无码 | 日日天日日夜日日摸 | 亚洲成在人网站无码天堂 | 午夜精品一区二区三区的区别 | 麻豆国产97在线 | 欧洲 | 久久精品成人欧美大片 | 国产在线无码精品电影网 | 成人欧美一区二区三区黑人免费 | 欧美精品免费观看二区 | 无套内谢老熟女 | 久久午夜夜伦鲁鲁片无码免费 | 久久精品一区二区三区四区 | 色婷婷久久一区二区三区麻豆 | 国产女主播喷水视频在线观看 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 又大又黄又粗又爽的免费视频 | 久久人妻内射无码一区三区 | 亚洲精品中文字幕乱码 | 国产精品人人爽人人做我的可爱 | 亚洲精品国产精品乱码不卡 | 中文字幕人妻无码一夲道 | 国产成人无码午夜视频在线观看 | 亚洲精品综合五月久久小说 | 无套内谢老熟女 | 大肉大捧一进一出好爽视频 | 扒开双腿吃奶呻吟做受视频 | 精品日本一区二区三区在线观看 | 国内综合精品午夜久久资源 | 日本爽爽爽爽爽爽在线观看免 | 亚洲色成人中文字幕网站 | 久久久亚洲欧洲日产国码αv | 国产黄在线观看免费观看不卡 | 亚洲精品久久久久avwww潮水 | 国产精品久久久久久亚洲影视内衣 | 老熟妇乱子伦牲交视频 | 2019午夜福利不卡片在线 | 色偷偷人人澡人人爽人人模 | 国产午夜福利100集发布 | 色五月五月丁香亚洲综合网 | 亚洲精品午夜国产va久久成人 | 国内精品久久毛片一区二区 | 日本欧美一区二区三区乱码 | 无码av中文字幕免费放 | 丰满少妇人妻久久久久久 | 久久www免费人成人片 | 性欧美videos高清精品 | 日本大香伊一区二区三区 | 一区二区传媒有限公司 | 国产亚洲日韩欧美另类第八页 | 高清国产亚洲精品自在久久 | 少妇人妻大乳在线视频 | 欧美xxxx黑人又粗又长 | 99久久精品午夜一区二区 | 久久综合色之久久综合 | 亚洲爆乳精品无码一区二区三区 | 亚欧洲精品在线视频免费观看 | 丰满人妻精品国产99aⅴ | 久久精品人妻少妇一区二区三区 | 无码任你躁久久久久久久 | 久久精品人妻少妇一区二区三区 | 小sao货水好多真紧h无码视频 | 俺去俺来也在线www色官网 | av人摸人人人澡人人超碰下载 | 亚洲综合伊人久久大杳蕉 | a在线亚洲男人的天堂 | 国产三级精品三级男人的天堂 | 四虎国产精品一区二区 | 国产无遮挡吃胸膜奶免费看 | 丰腴饱满的极品熟妇 | 亚洲熟熟妇xxxx | 中文字幕av伊人av无码av | 国产精品资源一区二区 | 亚洲无人区一区二区三区 | 无码精品国产va在线观看dvd | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 久久天天躁狠狠躁夜夜免费观看 | 国产精品理论片在线观看 | 成熟女人特级毛片www免费 | 成人亚洲精品久久久久软件 | 国产精品人妻一区二区三区四 | 久久婷婷五月综合色国产香蕉 | 精品 日韩 国产 欧美 视频 | 久久午夜无码鲁丝片午夜精品 | 成人免费视频视频在线观看 免费 | 少妇无套内谢久久久久 | 又大又紧又粉嫩18p少妇 | а√天堂www在线天堂小说 | 97se亚洲精品一区 | 婷婷丁香六月激情综合啪 | 97夜夜澡人人爽人人喊中国片 | 乌克兰少妇xxxx做受 | 国产av剧情md精品麻豆 | 乌克兰少妇性做爰 | 澳门永久av免费网站 | 国产精品理论片在线观看 | 国产另类ts人妖一区二区 | 亚洲一区二区三区国产精华液 | 国产三级精品三级男人的天堂 | 国产成人无码区免费内射一片色欲 | 久久国产精品萌白酱免费 | 中文字幕人妻无码一夲道 | 亚洲a无码综合a国产av中文 | 成人无码视频免费播放 | 婷婷五月综合激情中文字幕 | 又大又黄又粗又爽的免费视频 | 精品国产av色一区二区深夜久久 | 亚无码乱人伦一区二区 | 麻豆人妻少妇精品无码专区 | 午夜理论片yy44880影院 | 亚洲欧美国产精品专区久久 | 精品人妻人人做人人爽 | 日韩欧美群交p片內射中文 | a国产一区二区免费入口 | 成年美女黄网站色大免费视频 | 人人妻在人人 | 九九在线中文字幕无码 | 亚洲 激情 小说 另类 欧美 | 亚洲日本va中文字幕 | 色一情一乱一伦一区二区三欧美 | 国产亚洲精品精品国产亚洲综合 | 免费国产黄网站在线观看 | 欧美一区二区三区视频在线观看 | 色一情一乱一伦一区二区三欧美 | 亚洲综合色区中文字幕 | 亚洲国产日韩a在线播放 | 18黄暴禁片在线观看 | 色欲av亚洲一区无码少妇 | 无码av免费一区二区三区试看 | 中文无码成人免费视频在线观看 | 成 人影片 免费观看 | 男人和女人高潮免费网站 | 亚洲国产精品美女久久久久 | 亚洲成av人综合在线观看 | 无码国产乱人伦偷精品视频 | 丰满人妻一区二区三区免费视频 | 精品久久综合1区2区3区激情 | 激情国产av做激情国产爱 | 女人被爽到呻吟gif动态图视看 | 欧美人与动性行为视频 | 亚洲成av人片天堂网无码】 | 亚洲一区二区三区在线观看网站 | 久久久久成人精品免费播放动漫 | 亚洲精品国偷拍自产在线麻豆 | 久久午夜无码鲁丝片 | 久久精品人人做人人综合 | 国产精品国产自线拍免费软件 | 久9re热视频这里只有精品 | 国产色视频一区二区三区 | 四虎国产精品一区二区 | 免费看男女做好爽好硬视频 | 亚洲男女内射在线播放 | 波多野结衣av一区二区全免费观看 | 无码人妻少妇伦在线电影 | 最近免费中文字幕中文高清百度 | 欧美 亚洲 国产 另类 | 精品无人国产偷自产在线 | 国产精品怡红院永久免费 | 人人爽人人澡人人人妻 | 亚洲va欧美va天堂v国产综合 | 国产精品毛片一区二区 | 久久综合香蕉国产蜜臀av | 成人精品视频一区二区 | 国产成人无码a区在线观看视频app | 免费看男女做好爽好硬视频 | 久久久亚洲欧洲日产国码αv | 久久午夜夜伦鲁鲁片无码免费 | 日欧一片内射va在线影院 | 日本高清一区免费中文视频 | 久久视频在线观看精品 | 久久久久成人片免费观看蜜芽 | 亚洲s色大片在线观看 | 图片区 小说区 区 亚洲五月 | 人人爽人人澡人人人妻 | 久久综合九色综合97网 | 久精品国产欧美亚洲色aⅴ大片 | 精品无人区无码乱码毛片国产 | 波多野结衣一区二区三区av免费 | 97色伦图片97综合影院 | 亚洲日韩av一区二区三区中文 | aⅴ在线视频男人的天堂 | 日韩精品久久久肉伦网站 | 亚洲熟妇色xxxxx欧美老妇y | 无码国产激情在线观看 | 久久国产36精品色熟妇 | 99精品国产综合久久久久五月天 | 午夜熟女插插xx免费视频 | 999久久久国产精品消防器材 | 亚洲欧美国产精品专区久久 | 色综合久久久久综合一本到桃花网 | 国产绳艺sm调教室论坛 | 东京热无码av男人的天堂 | 伊人久久大香线蕉午夜 | 国产精品无码一区二区桃花视频 | 高清不卡一区二区三区 | 亚洲第一无码av无码专区 | 亚洲成a人片在线观看无码 | 又粗又大又硬毛片免费看 | 国产精品福利视频导航 | 成人动漫在线观看 | 精品无人国产偷自产在线 | 兔费看少妇性l交大片免费 | 精品国产国产综合精品 | 一本久道久久综合狠狠爱 | 成年美女黄网站色大免费全看 | 色老头在线一区二区三区 | 青青久在线视频免费观看 | 荫蒂被男人添的好舒服爽免费视频 | 欧美刺激性大交 | 亚洲中文字幕乱码av波多ji | 熟妇人妻中文av无码 | 国产乱人偷精品人妻a片 | 无码精品国产va在线观看dvd | 2019午夜福利不卡片在线 | 成人三级无码视频在线观看 | 377p欧洲日本亚洲大胆 | 黑人巨大精品欧美黑寡妇 | 日本熟妇乱子伦xxxx | 久久99国产综合精品 | 亚洲无人区午夜福利码高清完整版 | 亚洲欧美国产精品专区久久 | 青草视频在线播放 | 亚洲国产精品久久久天堂 | 欧美激情内射喷水高潮 | 日韩av无码中文无码电影 | 亚洲日韩中文字幕在线播放 | 国内揄拍国内精品人妻 | 国产激情无码一区二区 | 精品国产av色一区二区深夜久久 | 精品少妇爆乳无码av无码专区 | 国产精品久久久久无码av色戒 | 久久久久久九九精品久 | 18黄暴禁片在线观看 | 黑人粗大猛烈进出高潮视频 | 日韩视频 中文字幕 视频一区 | 天天摸天天碰天天添 | 成人精品一区二区三区中文字幕 | 亚洲熟妇色xxxxx欧美老妇 | 欧美真人作爱免费视频 | 极品嫩模高潮叫床 | 国产精品.xx视频.xxtv | 久久精品女人天堂av免费观看 | 国产精品99久久精品爆乳 | 黄网在线观看免费网站 | 女人被男人爽到呻吟的视频 | 国产精品18久久久久久麻辣 | 国产精品va在线播放 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 亚洲午夜福利在线观看 | 中文毛片无遮挡高清免费 | a在线观看免费网站大全 | 东京热无码av男人的天堂 | 久久久精品国产sm最大网站 | 性生交片免费无码看人 | 亚洲欧美日韩成人高清在线一区 | 国产在线aaa片一区二区99 | 7777奇米四色成人眼影 | 高中生自慰www网站 | 日产精品高潮呻吟av久久 | 真人与拘做受免费视频 | 国产免费无码一区二区视频 | 丁香啪啪综合成人亚洲 | 国产色精品久久人妻 | 又色又爽又黄的美女裸体网站 | 国产 精品 自在自线 | 久久亚洲日韩精品一区二区三区 | 国产电影无码午夜在线播放 | 97资源共享在线视频 | 国产精品永久免费视频 | 青青青手机频在线观看 | 精品亚洲成av人在线观看 | 色婷婷欧美在线播放内射 | 色欲人妻aaaaaaa无码 | 国产真人无遮挡作爱免费视频 | 久久久久se色偷偷亚洲精品av | ass日本丰满熟妇pics | 国产人妖乱国产精品人妖 | 三上悠亚人妻中文字幕在线 | 国产精品久久久午夜夜伦鲁鲁 | 自拍偷自拍亚洲精品被多人伦好爽 | 极品嫩模高潮叫床 | 毛片内射-百度 | 无码av岛国片在线播放 | 欧美三级a做爰在线观看 | 国内精品人妻无码久久久影院蜜桃 | 色综合久久中文娱乐网 | 波多野结衣 黑人 | 少妇人妻偷人精品无码视频 | 蜜桃av抽搐高潮一区二区 | 无码中文字幕色专区 | 亚洲精品久久久久久一区二区 | 国内丰满熟女出轨videos | 久久综合激激的五月天 | 99国产精品白浆在线观看免费 | 高潮毛片无遮挡高清免费 | 巨爆乳无码视频在线观看 | 欧美性生交活xxxxxdddd | 久久久久久国产精品无码下载 | 亚洲热妇无码av在线播放 | 特级做a爰片毛片免费69 | 日韩少妇白浆无码系列 | 久久久亚洲欧洲日产国码αv | 亚洲精品无码人妻无码 | 国产成人综合色在线观看网站 | 永久免费精品精品永久-夜色 | 丰满少妇弄高潮了www | 麻豆果冻传媒2021精品传媒一区下载 | 亚洲综合色区中文字幕 | 国产精品嫩草久久久久 | 国产av无码专区亚洲awww | 亚洲狠狠婷婷综合久久 | 精品无人国产偷自产在线 | 骚片av蜜桃精品一区 | 国产精品理论片在线观看 | 亚洲中文字幕va福利 | 成人毛片一区二区 | 性生交大片免费看l | 高清不卡一区二区三区 | 性做久久久久久久久 | 又大又硬又爽免费视频 | 六十路熟妇乱子伦 | 综合人妻久久一区二区精品 | 免费网站看v片在线18禁无码 | 99精品无人区乱码1区2区3区 | 十八禁真人啪啪免费网站 | 亚洲熟妇色xxxxx欧美老妇 | 精品无码一区二区三区的天堂 | 天堂久久天堂av色综合 | а天堂中文在线官网 | 国产亚洲精品精品国产亚洲综合 | 欧美性生交活xxxxxdddd | 性色欲情网站iwww九文堂 | 国产亚洲精品久久久闺蜜 | 日韩欧美中文字幕在线三区 | 精品亚洲成av人在线观看 | 国产午夜无码视频在线观看 | 男人和女人高潮免费网站 | 国产香蕉尹人综合在线观看 | 亚洲成a人片在线观看无码3d | 日本在线高清不卡免费播放 | 亚洲人成影院在线无码按摩店 | 无码精品国产va在线观看dvd | 国产精品久久福利网站 | 亚洲色偷偷男人的天堂 | 天下第一社区视频www日本 | 久热国产vs视频在线观看 | 日韩精品久久久肉伦网站 | 亚洲精品一区二区三区四区五区 | 日日摸夜夜摸狠狠摸婷婷 | 国产成人久久精品流白浆 | 日日噜噜噜噜夜夜爽亚洲精品 | 亚洲精品国产品国语在线观看 | 精品无码一区二区三区的天堂 | 国产无套粉嫩白浆在线 | 大肉大捧一进一出视频出来呀 | 波多野结衣一区二区三区av免费 | 久久午夜无码鲁丝片秋霞 | 国产xxx69麻豆国语对白 | 国产精品亚洲综合色区韩国 | 一本大道久久东京热无码av | 夜夜躁日日躁狠狠久久av | 亚洲 a v无 码免 费 成 人 a v | 亚洲aⅴ无码成人网站国产app | 色综合久久网 | 亚洲国产精品一区二区第一页 | 精品日本一区二区三区在线观看 | 精品久久综合1区2区3区激情 | 久久人妻内射无码一区三区 | 日本在线高清不卡免费播放 | 日日麻批免费40分钟无码 | 午夜男女很黄的视频 | 久久综合给久久狠狠97色 | 国产精品久久久久久久9999 | 久久午夜无码鲁丝片午夜精品 | 国产激情艳情在线看视频 | 欧美精品一区二区精品久久 | 一区二区传媒有限公司 | 成人影院yy111111在线观看 | 久久久亚洲欧洲日产国码αv | 又湿又紧又大又爽a视频国产 | 久久精品99久久香蕉国产色戒 | 国产办公室秘书无码精品99 | 成人三级无码视频在线观看 | 欧美精品在线观看 | 丰满少妇高潮惨叫视频 | 国产精品香蕉在线观看 | 精品欧洲av无码一区二区三区 | 97久久精品无码一区二区 | 亚洲精品一区三区三区在线观看 | 无码乱肉视频免费大全合集 | 久久无码专区国产精品s | 一区二区三区高清视频一 | 成人片黄网站色大片免费观看 | 性做久久久久久久久 | 婷婷五月综合激情中文字幕 | 国产精品久久久久7777 | 中文字幕无码av激情不卡 | √天堂中文官网8在线 | 麻豆国产人妻欲求不满谁演的 | 欧美激情一区二区三区成人 | 中文字幕无码免费久久99 | 老头边吃奶边弄进去呻吟 | 国产色视频一区二区三区 | 久久综合色之久久综合 | 狂野欧美性猛xxxx乱大交 | 日本一本二本三区免费 | 久久久久人妻一区精品色欧美 | 日欧一片内射va在线影院 | 欧美激情综合亚洲一二区 | 亚洲精品国产a久久久久久 | 亚洲精品无码人妻无码 | 国产精品免费大片 | 男女超爽视频免费播放 | 东京热男人av天堂 | 人妻无码αv中文字幕久久琪琪布 | 对白脏话肉麻粗话av | 荫蒂添的好舒服视频囗交 | 67194成是人免费无码 | 亚洲中文字幕久久无码 | 伦伦影院午夜理论片 | 国产农村妇女高潮大叫 | 久久国产精品偷任你爽任你 | 欧美成人高清在线播放 | 一本色道久久综合亚洲精品不卡 | 免费乱码人妻系列无码专区 | 国产精品久久久久9999小说 | 精品无码国产自产拍在线观看蜜 | 亚洲精品久久久久中文第一幕 | 精品国产av色一区二区深夜久久 | 成人av无码一区二区三区 | 国产午夜视频在线观看 | 无套内谢的新婚少妇国语播放 | 99久久久无码国产aaa精品 | 青春草在线视频免费观看 | 久久人人爽人人爽人人片ⅴ | 玩弄人妻少妇500系列视频 | 日韩av激情在线观看 | 亚洲色欲色欲欲www在线 | 熟女少妇人妻中文字幕 | 中文无码成人免费视频在线观看 | 国产婷婷色一区二区三区在线 | 女人和拘做爰正片视频 | 久久综合网欧美色妞网 | 一本加勒比波多野结衣 | 欧美三级a做爰在线观看 | 亚洲欧美日韩成人高清在线一区 | 国产特级毛片aaaaaaa高清 | 三级4级全黄60分钟 | 国产精品无码久久av | 18禁黄网站男男禁片免费观看 | 色婷婷综合激情综在线播放 | 欧美国产亚洲日韩在线二区 | 久久无码中文字幕免费影院蜜桃 | 久久久www成人免费毛片 | 亚洲成a人片在线观看无码3d | 欧美丰满少妇xxxx性 | 国产精品亚洲а∨无码播放麻豆 | 精品国产一区二区三区四区在线看 | 欧美国产日韩久久mv | 精品久久久无码中文字幕 | 综合人妻久久一区二区精品 | 熟女少妇在线视频播放 | 在线观看欧美一区二区三区 | 欧美老人巨大xxxx做受 | 激情内射日本一区二区三区 | 性做久久久久久久免费看 | 熟妇人妻激情偷爽文 | 中文久久乱码一区二区 | 55夜色66夜色国产精品视频 | 国产免费久久精品国产传媒 | 久久精品无码一区二区三区 | 亚洲人成影院在线观看 | 久久亚洲精品成人无码 | 日韩在线不卡免费视频一区 | 亚洲日韩精品欧美一区二区 | 男女下面进入的视频免费午夜 | 樱花草在线社区www | 丰满少妇弄高潮了www | 国产精品久久久久久亚洲影视内衣 | 无码午夜成人1000部免费视频 | 亚欧洲精品在线视频免费观看 | 久久亚洲国产成人精品性色 | 国产人妻人伦精品 | 中文字幕av无码一区二区三区电影 | 荫蒂被男人添的好舒服爽免费视频 | 狂野欧美性猛交免费视频 | 精品久久久无码人妻字幂 | 久久久久成人片免费观看蜜芽 | av在线亚洲欧洲日产一区二区 | 亚洲色大成网站www | 丰满人妻精品国产99aⅴ | 无码人妻精品一区二区三区不卡 | 无码精品人妻一区二区三区av | 亚洲 另类 在线 欧美 制服 | 久久精品99久久香蕉国产色戒 | 少妇愉情理伦片bd | 性做久久久久久久免费看 | 成人动漫在线观看 | 一个人看的视频www在线 | 国产精品自产拍在线观看 | 丰满少妇高潮惨叫视频 | 亚洲欧美精品aaaaaa片 | 国产一区二区三区四区五区加勒比 | 初尝人妻少妇中文字幕 | 国产两女互慰高潮视频在线观看 | 久久99久久99精品中文字幕 | 曰本女人与公拘交酡免费视频 | 欧美一区二区三区视频在线观看 | 国产精品高潮呻吟av久久 | 曰韩少妇内射免费播放 | 精品少妇爆乳无码av无码专区 | 天天拍夜夜添久久精品 | 国产精品久久国产三级国 | 国产成人综合在线女婷五月99播放 | 无码中文字幕色专区 | 亚洲精品鲁一鲁一区二区三区 | 蜜桃无码一区二区三区 | 内射巨臀欧美在线视频 | 久久午夜夜伦鲁鲁片无码免费 | 亚洲综合伊人久久大杳蕉 | 夜精品a片一区二区三区无码白浆 | 97夜夜澡人人双人人人喊 | 97资源共享在线视频 | 呦交小u女精品视频 | 日韩精品无码免费一区二区三区 | 欧美freesex黑人又粗又大 | 成人欧美一区二区三区 | 一本久久a久久精品vr综合 | 97久久精品无码一区二区 | 大肉大捧一进一出视频出来呀 | 免费观看激色视频网站 | 国产成人av免费观看 | 国产精品久久久 | 亚洲成a人片在线观看无码3d | 国产内射爽爽大片视频社区在线 | 宝宝好涨水快流出来免费视频 | 欧美xxxxx精品 | 1000部啪啪未满十八勿入下载 | 国产精品人妻一区二区三区四 | 沈阳熟女露脸对白视频 | 人妻体内射精一区二区三四 | 啦啦啦www在线观看免费视频 | 国内揄拍国内精品少妇国语 | 亚欧洲精品在线视频免费观看 | 夜夜夜高潮夜夜爽夜夜爰爰 | 亚洲日韩一区二区三区 | 高潮毛片无遮挡高清免费视频 | 亚洲人成网站色7799 | 麻豆蜜桃av蜜臀av色欲av | aⅴ亚洲 日韩 色 图网站 播放 | 老熟女重囗味hdxx69 | 精品熟女少妇av免费观看 | 青青青爽视频在线观看 | 亚洲一区二区三区国产精华液 | 亚洲无人区一区二区三区 | 久久亚洲精品中文字幕无男同 | 亚洲 激情 小说 另类 欧美 | 西西人体www44rt大胆高清 | 亚洲一区二区三区播放 | 久久久久久亚洲精品a片成人 | 久久久久久av无码免费看大片 | 综合激情五月综合激情五月激情1 | 女人被男人爽到呻吟的视频 | 精品久久久中文字幕人妻 | 欧美日韩综合一区二区三区 | 97人妻精品一区二区三区 | 天天av天天av天天透 | 岛国片人妻三上悠亚 | 日本熟妇大屁股人妻 | 伊人久久大香线焦av综合影院 | 久久综合香蕉国产蜜臀av | 久久久中文久久久无码 | 色婷婷av一区二区三区之红樱桃 | 少妇性荡欲午夜性开放视频剧场 | 国产精品无码永久免费888 | 欧美激情内射喷水高潮 | 玩弄少妇高潮ⅹxxxyw | 老子影院午夜伦不卡 | 日本大香伊一区二区三区 | 中文精品久久久久人妻不卡 | 欧美乱妇无乱码大黄a片 | 国产艳妇av在线观看果冻传媒 | 亚洲区欧美区综合区自拍区 | 国产精品久久精品三级 | 人人妻人人澡人人爽欧美精品 | 婷婷综合久久中文字幕蜜桃三电影 | 俺去俺来也www色官网 | 国产极品美女高潮无套在线观看 | 女人被男人爽到呻吟的视频 | 亚洲精品一区二区三区四区五区 | 内射老妇bbwx0c0ck | 三级4级全黄60分钟 | 婷婷五月综合激情中文字幕 | 色妞www精品免费视频 | 黑人巨大精品欧美黑寡妇 | 中文字幕日产无线码一区 | 欧美三级不卡在线观看 | 日本饥渴人妻欲求不满 | av无码不卡在线观看免费 | 两性色午夜视频免费播放 | 久久久久成人片免费观看蜜芽 | 曰韩无码二三区中文字幕 | 免费网站看v片在线18禁无码 | 在线播放亚洲第一字幕 | 狠狠躁日日躁夜夜躁2020 | 亚洲国产av精品一区二区蜜芽 | 午夜无码区在线观看 | 国产香蕉尹人综合在线观看 | 伊人久久大香线焦av综合影院 | 国产特级毛片aaaaaaa高清 | 激情亚洲一区国产精品 | 一本一道久久综合久久 | 国产精品久久久久久无码 | 3d动漫精品啪啪一区二区中 | 四虎永久在线精品免费网址 | 图片区 小说区 区 亚洲五月 | 国产情侣作爱视频免费观看 | 亚洲理论电影在线观看 | 国产超级va在线观看视频 | 免费人成在线观看网站 | 日本饥渴人妻欲求不满 | 夜夜影院未满十八勿进 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 久久久精品欧美一区二区免费 | 成人免费无码大片a毛片 | 波多野42部无码喷潮在线 | 精品国产一区二区三区av 性色 | 久久久久亚洲精品中文字幕 | 国产97在线 | 亚洲 | 中文字幕无码免费久久9一区9 | 无码播放一区二区三区 | 未满小14洗澡无码视频网站 | 网友自拍区视频精品 | 无码人妻精品一区二区三区下载 | 日韩人妻无码一区二区三区久久99 | 日本精品久久久久中文字幕 | 免费观看黄网站 | 丰满人妻一区二区三区免费视频 | 国产极品视觉盛宴 | 日韩精品a片一区二区三区妖精 | 最新国产麻豆aⅴ精品无码 | 亚洲国产精品成人久久蜜臀 | 四十如虎的丰满熟妇啪啪 | 欧美日韩综合一区二区三区 | 亚洲人成无码网www | 精品少妇爆乳无码av无码专区 | 久久无码人妻影院 | 国产卡一卡二卡三 | 国产女主播喷水视频在线观看 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 最新版天堂资源中文官网 | 国产午夜福利100集发布 | 2020最新国产自产精品 | 一本久道久久综合婷婷五月 |