..  Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License.  You may obtain a copy of the License at

..    http://www.apache.org/licenses/LICENSE-2.0

..  Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied.  See the License for the
    specific language governing permissions and limitations
    under the License.

tvm.s_tir.meta_schedule
------------------------

tvm.s_tir.meta_schedule
***********************
.. automodule:: tvm.s_tir.meta_schedule
   :members:
   :imported-members:
   :autosummary:

tvm.s_tir.meta_schedule.arg_info
********************************
.. automodule:: tvm.s_tir.meta_schedule.arg_info
   :members:
   :noindex:

tvm.s_tir.meta_schedule.builder
*******************************
.. automodule:: tvm.s_tir.meta_schedule.builder
   :members:
   :imported-members:
   :noindex:

tvm.s_tir.meta_schedule.cost_model
**********************************
.. automodule:: tvm.s_tir.meta_schedule.cost_model
   :members:
   :imported-members:
   :noindex:

tvm.s_tir.meta_schedule.database
********************************
.. automodule:: tvm.s_tir.meta_schedule.database
   :members:
   :imported-members:
   :noindex:

tvm.s_tir.meta_schedule.feature_extractor
*****************************************
.. automodule:: tvm.s_tir.meta_schedule.feature_extractor
   :members:
   :imported-members:
   :noindex:

tvm.s_tir.meta_schedule.measure_callback
****************************************
.. automodule:: tvm.s_tir.meta_schedule.measure_callback
   :members:
   :imported-members:
   :noindex:

tvm.s_tir.meta_schedule.mutator
*******************************
.. automodule:: tvm.s_tir.meta_schedule.mutator
   :members:
   :imported-members:
   :noindex:

tvm.s_tir.meta_schedule.postproc
********************************
.. automodule:: tvm.s_tir.meta_schedule.postproc
   :members:
   :imported-members:
   :noindex:

tvm.s_tir.meta_schedule.runner
******************************
.. automodule:: tvm.s_tir.meta_schedule.runner
   :members:
   :imported-members:
   :noindex:

tvm.s_tir.meta_schedule.schedule_rule
*************************************
.. automodule:: tvm.s_tir.meta_schedule.schedule_rule
   :members:
   :noindex:

tvm.s_tir.meta_schedule.search_strategy
***************************************
.. automodule:: tvm.s_tir.meta_schedule.search_strategy
   :members:
   :imported-members:
   :noindex:

tvm.s_tir.meta_schedule.space_generator
***************************************
.. automodule:: tvm.s_tir.meta_schedule.space_generator
   :members:
   :noindex:

tvm.s_tir.meta_schedule.task_scheduler
**************************************
.. automodule:: tvm.s_tir.meta_schedule.task_scheduler
   :members:
   :imported-members:
   :noindex:

tvm.s_tir.meta_schedule.tir_integration
***************************************
.. automodule:: tvm.s_tir.meta_schedule.tir_integration
   :members:
   :noindex:

tvm.s_tir.meta_schedule.relax_integration
*****************************************
.. automodule:: tvm.s_tir.meta_schedule.relax_integration
   :members:
   :noindex:

tvm.s_tir.meta_schedule.trace_apply
************************************
.. automodule:: tvm.s_tir.meta_schedule.trace_apply
   :members:
   :noindex:

tvm.s_tir.meta_schedule.schedule
********************************
.. automodule:: tvm.s_tir.meta_schedule.schedule
   :members:
   :imported-members:
   :noindex:

tvm.s_tir.meta_schedule.post_optimization
*****************************************
.. automodule:: tvm.s_tir.meta_schedule.post_optimization
   :members:
   :imported-members:
   :noindex:
