# Copyright (c) 2011-2015 Advanced Micro Devices, Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
#
# 3. Neither the name of the copyright holder nor the names of its
# contributors may be used to endorse or promote products derived from this
# software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.

def tlb_options(parser):

    #===================================================================
    # TLB Configuration
    #===================================================================

    parser.add_argument(
        "--TLB-config", type=str, default="perCU",
        help="Options are: perCU (default), mono, 2CU, or perLane")

    #===================================================================
    #   L1 TLB Options (D-TLB, I-TLB, Dispatcher-TLB)
    #===================================================================

    parser.add_argument("--L1TLBentries", type=int, default="32")
    parser.add_argument("--L1TLBassoc", type=int, default="32")
    parser.add_argument("--L1AccessLatency", type=int, default="1",
                        help="latency in gpu cycles")
    parser.add_argument("--L1MissLatency", type=int, default="750",
                        help="latency (in gpu cycles) of a page walk, "
                        "if this is a last level TLB")
    parser.add_argument("--L1MaxOutstandingReqs", type=int, default="64")
    parser.add_argument("--L1AccessDistanceStat", action="store_true")
    parser.add_argument("--tot-L1TLB-size", type=int, default="0")

    #===================================================================
    #   L2 TLB Options
    #===================================================================

    parser.add_argument("--L2TLBentries", type=int, default="4096")
    parser.add_argument("--L2TLBassoc", type=int, default="32")
    parser.add_argument("--L2AccessLatency", type=int, default="69",
                        help="latency in gpu cycles")
    parser.add_argument("--L2MissLatency", type=int, default="750",
                        help="latency (in gpu cycles) of a page walk, "
                        "if this is a last level TLB")
    parser.add_argument("--L2MaxOutstandingReqs", type=int, default="64")
    parser.add_argument("--L2AccessDistanceStat", action="store_true")

    #===================================================================
    #   L3 TLB Options
    #===================================================================

    parser.add_argument("--L3TLBentries", type=int, default="8192")
    parser.add_argument("--L3TLBassoc", type=int, default="32")
    parser.add_argument("--L3AccessLatency", type=int, default="150",
                        help="latency in gpu cycles")
    parser.add_argument("--L3MissLatency", type=int, default="750",
                        help="latency (in gpu cycles) of a page walk")
    parser.add_argument("--L3MaxOutstandingReqs", type=int, default="64")
    parser.add_argument("--L3AccessDistanceStat", action="store_true")

    #===================================================================
    #   L1 TLBCoalescer Options
    #===================================================================

    parser.add_argument("--L1ProbesPerCycle", type=int, default="2")
    parser.add_argument("--L1CoalescingWindow", type=int, default="1")
    parser.add_argument("--L1DisableCoalescing", action="store_true")

    #===================================================================
    #   L2 TLBCoalescer Options
    #===================================================================

    parser.add_argument("--L2ProbesPerCycle", type=int, default="2")
    parser.add_argument("--L2CoalescingWindow", type=int, default="1")
    parser.add_argument("--L2DisableCoalescing", action="store_true")

    #===================================================================
    #   L3 TLBCoalescer Options
    #===================================================================

    parser.add_argument("--L3ProbesPerCycle", type=int, default="2")
    parser.add_argument("--L3CoalescingWindow", type=int, default="1")
    parser.add_argument("--L3DisableCoalescing", action="store_true")
