inst.proto revision 10695
110779SCurtis.Dunham@arm.com// Copyright (c) 2014 ARM Limited
210779SCurtis.Dunham@arm.com// All rights reserved
310779SCurtis.Dunham@arm.com//
410779SCurtis.Dunham@arm.com// The license below extends only to copyright in the software and shall
510779SCurtis.Dunham@arm.com// not be construed as granting a license to any other intellectual
610779SCurtis.Dunham@arm.com// property including but not limited to intellectual property relating
710779SCurtis.Dunham@arm.com// to a hardware implementation of the functionality of the software
810779SCurtis.Dunham@arm.com// licensed hereunder.  You may use the software subject to the license
910779SCurtis.Dunham@arm.com// terms below provided that you ensure that this notice is replicated
1010779SCurtis.Dunham@arm.com// unmodified and in its entirety in all distributions of the software,
1110779SCurtis.Dunham@arm.com// modified or unmodified, in source code or in binary form.
1210779SCurtis.Dunham@arm.com//
1310779SCurtis.Dunham@arm.com// Redistribution and use in source and binary forms, with or without
1410779SCurtis.Dunham@arm.com// modification, are permitted provided that the following conditions are
1510779SCurtis.Dunham@arm.com// met: redistributions of source code must retain the above copyright
1610779SCurtis.Dunham@arm.com// notice, this list of conditions and the following disclaimer;
1710779SCurtis.Dunham@arm.com// redistributions in binary form must reproduce the above copyright
1810779SCurtis.Dunham@arm.com// notice, this list of conditions and the following disclaimer in the
1910779SCurtis.Dunham@arm.com// documentation and/or other materials provided with the distribution;
2010779SCurtis.Dunham@arm.com// neither the name of the copyright holders nor the names of its
2110779SCurtis.Dunham@arm.com// contributors may be used to endorse or promote products derived from
2210779SCurtis.Dunham@arm.com// this software without specific prior written permission.
2310779SCurtis.Dunham@arm.com//
2410779SCurtis.Dunham@arm.com// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
2510779SCurtis.Dunham@arm.com// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
2610779SCurtis.Dunham@arm.com// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
2710779SCurtis.Dunham@arm.com// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
2810779SCurtis.Dunham@arm.com// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
2910779SCurtis.Dunham@arm.com// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
3010779SCurtis.Dunham@arm.com// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
3110779SCurtis.Dunham@arm.com// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
3210779SCurtis.Dunham@arm.com// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
3310779SCurtis.Dunham@arm.com// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
3410779SCurtis.Dunham@arm.com// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3510779SCurtis.Dunham@arm.com//
3610779SCurtis.Dunham@arm.com// Authors: Ali Saidi
3710779SCurtis.Dunham@arm.com
3810779SCurtis.Dunham@arm.com
3910779SCurtis.Dunham@arm.com// Put all the generated messages in a namespace
4010779SCurtis.Dunham@arm.compackage ProtoMessage;
4110779SCurtis.Dunham@arm.com
4210779SCurtis.Dunham@arm.com// Packet header with the identifier describing what object captured
4310779SCurtis.Dunham@arm.com// the trace, the version of this file format, and the tick frequency
4410779SCurtis.Dunham@arm.com// for all the packet time stamps.
4510779SCurtis.Dunham@arm.commessage InstHeader {
4610779SCurtis.Dunham@arm.com  required string obj_id = 1;
4710779SCurtis.Dunham@arm.com  required uint32 ver = 2 [default = 0];
4810779SCurtis.Dunham@arm.com  required uint64 tick_freq = 3;
4910779SCurtis.Dunham@arm.com  required bool has_mem = 4;
5010779SCurtis.Dunham@arm.com}
5111618SCurtis.Dunham@arm.com
5211618SCurtis.Dunham@arm.commessage Inst {
5310779SCurtis.Dunham@arm.com  required uint64 pc = 1;
5410779SCurtis.Dunham@arm.com  required fixed32 inst = 2;
5510779SCurtis.Dunham@arm.com  optional uint32 nodeid = 3;
5610779SCurtis.Dunham@arm.com  optional uint32 cpuid = 4;
5710779SCurtis.Dunham@arm.com  optional fixed64 tick = 5;
5810779SCurtis.Dunham@arm.com
5910779SCurtis.Dunham@arm.com  enum InstType {
6010779SCurtis.Dunham@arm.com    None = 0;
6110779SCurtis.Dunham@arm.com    IntAlu = 1;
6210779SCurtis.Dunham@arm.com    IntMul = 2;
6310779SCurtis.Dunham@arm.com    IntDiv = 3;
6410779SCurtis.Dunham@arm.com    FloatAdd = 4;
6510779SCurtis.Dunham@arm.com    FloatCmp = 5;
6610779SCurtis.Dunham@arm.com    FloatCvt = 6;
6710779SCurtis.Dunham@arm.com    FloatMult = 7;
6810779SCurtis.Dunham@arm.com    FloatDiv = 8;
6910779SCurtis.Dunham@arm.com    FloatSqrt = 9;
7010779SCurtis.Dunham@arm.com    SIMDIntAdd = 10;
7110779SCurtis.Dunham@arm.com    SIMDIntAddAcc = 11;
7210779SCurtis.Dunham@arm.com    SIMDIntAlu = 12;
7310779SCurtis.Dunham@arm.com    SIMDIntCmp = 13;
7410779SCurtis.Dunham@arm.com    SIMDIntCvt = 14;
7510779SCurtis.Dunham@arm.com    SIMDMisc = 15;
7610779SCurtis.Dunham@arm.com    SIMDIntMult = 16;
7710779SCurtis.Dunham@arm.com    SIMDIntMultAcc = 17;
7810779SCurtis.Dunham@arm.com    SIMDIntShift = 18;
7910779SCurtis.Dunham@arm.com    SIMDIntShiftAcc = 19;
8010779SCurtis.Dunham@arm.com    SIMDSqrt = 20;
8110779SCurtis.Dunham@arm.com    SIMDFloatAdd = 21;
8210779SCurtis.Dunham@arm.com    SIMDFloatAlu = 22;
8310779SCurtis.Dunham@arm.com    SIMDFloatCmp = 23;
8410779SCurtis.Dunham@arm.com    SIMDFloatCvt = 24;
8510779SCurtis.Dunham@arm.com    SIMDFloatDiv = 25;
8610779SCurtis.Dunham@arm.com    SIMDFloatMisc = 26;
8710779SCurtis.Dunham@arm.com    SIMDFloatMult = 27;
8810779SCurtis.Dunham@arm.com    SIMDFloatMultAdd = 28;
8910779SCurtis.Dunham@arm.com    SIMDFloatSqrt = 29;
9010779SCurtis.Dunham@arm.com    MemRead = 30;
9110779SCurtis.Dunham@arm.com    MemWrite = 31;
9210779SCurtis.Dunham@arm.com    IprAccess = 32;
9310779SCurtis.Dunham@arm.com    InstPrefetch = 33;
9410779SCurtis.Dunham@arm.com  }
9510779SCurtis.Dunham@arm.com
9610779SCurtis.Dunham@arm.com  optional InstType type = 6; // add, mul, fp add, load, store, simd add, …
9710779SCurtis.Dunham@arm.com  optional uint32 inst_flags = 7; // execution mode information
9810779SCurtis.Dunham@arm.com
9910779SCurtis.Dunham@arm.com  // If the operation does one or more memory accesses
10010779SCurtis.Dunham@arm.com  message MemAccess {
10110779SCurtis.Dunham@arm.com      required uint64 addr = 1;
10210779SCurtis.Dunham@arm.com      required uint32 size = 2;
10310779SCurtis.Dunham@arm.com      optional uint32 mem_flags = 3;
10410779SCurtis.Dunham@arm.com  }
10510779SCurtis.Dunham@arm.com  repeated MemAccess mem_access = 8;
10610779SCurtis.Dunham@arm.com}
10710779SCurtis.Dunham@arm.com
10810779SCurtis.Dunham@arm.com