; Copyright (c) 2016, Intel Corporation
;
; Redistribution and use in source and binary forms, with or without
; modification, are permitted provided that the following conditions are met:
;
;  * Redistributions of source code must retain the above copyright notice,
;    this list of conditions and the following disclaimer.
;  * 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.
;  * Neither the name of Intel Corporation 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 OWNER 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.

; Test a rather long linear trace.  To keep the test file small, we only check
; the number of instructions.
;
;   opt:ptxed --quiet --stat --stat:insn
;
; Variant:  linear trace ends with disabled event.
;

org 0x100000
bits 64

; @pt p1: psb()
; @pt p2: fup(3: %l0)
; @pt p3: mode.exec(64bit)
; @pt p4: psbend()
l0:     times 100000 nop

l1:     hlt
; @pt p5: fup(2: %l1)
; @pt p6: tip.pgd(0: %l1)


; @pt .exp(ptdump)
;%0p1  psb
;%0p2  fup        3: %?l0
;%0p3  mode.exec  cs.l
;%0p4  psbend
;%0p5  fup        2: %?l1.4
;%0p6  tip.pgd    0: %?l1.0


; @pt .exp(ptxed)
;insn:  100000.
