...

Text file src/golang.org/x/arch/ppc64/ppc64util/hack.h

Documentation: golang.org/x/arch/ppc64/ppc64util

     1// Copyright 2021 The Go Authors.  All rights reserved.
     2// Use of this source code is governed by a BSD-style
     3// license that can be found in the LICENSE file.
     4//
     5// This file requires gcc and binutils with -mcpu=power10 support.
     6// ppc64util runs a series of commands like:
     7//   go run map.go -fmt=asm ../pp64.csv > asm.S
     8//   powerpc64le-linux-gnu-gcc -c asm.S -mcpu=power10 -mbig
     9//   powerpc64le-linux-gnu-objdump -d asm.o
    10// to create the file decode_generated.txt used to verify the disassembler.
    11//
    12// Note, the golang disassembler is not expected to support every extended
    13// mnemonic, but it should support those which frequently show up in object
    14// files compiled by the golang toolchain.
    15
    16#define RA 1
    17#define RB 2
    18#define RS 3
    19#define RT 4
    20#define RC 5
    21#define RSp 6
    22#define RTp 8
    23
    24#define MB 1
    25#define ME 7
    26#define NB 2
    27#define CY 1
    28
    29#define LEV 1
    30
    31#define FRBp 2
    32#define FRAp 4
    33#define FRTp 6
    34#define FRSp 8
    35#define FRT 3
    36#define FRA 5
    37#define FRB 7
    38#define FRC 9
    39#define FRS 11
    40#define FLM 8
    41#define U 3
    42#define W 0
    43#define TE 15
    44#define SP 1
    45#define S 1
    46#define DRM 0x7
    47#define RM 0x3
    48
    49#define BF 3
    50#define SH 7
    51
    52#define XT 33
    53#define XA 35
    54#define XB 37
    55#define XS 39
    56#define XC 41
    57#define XAp 36
    58#define XTp 38
    59#define XSp 40
    60#define DM 1
    61#define SHW 2
    62
    63#define VRA 1
    64#define VRB 2
    65#define VRC 3
    66#define VRT 4
    67#define VRS 5
    68#define SHB 3
    69#define SIX 1
    70#define ST 1
    71#define PS 0
    72#define MP 1
    73#define bm 0x45FF
    74#define N 3
    75
    76#define AT 7
    77#define AS 6
    78
    79#define RMC 3
    80
    81#define UIM 1
    82#define DCMX 0x23
    83#define DCM 0x11
    84#define DGM 0x11
    85#define R 1
    86
    87#define BA 1
    88#define BB 2
    89#define BT 3
    90#define BO 4
    91#define BI 6
    92#define BH 0
    93#define BFA 7
    94#define FXM 8
    95#define BC 11
    96
    97#define L 1
    98#define EH 1
    99
   100#define SPR 69
   101#define BHRBE 69
   102#define TO 0x11
   103#define TBR 268
   104#define CT 2
   105#define FC 2
   106#define TH 3
   107#define WC 1
   108#define PL 0
   109#define IH 4
   110#define RIC 1
   111#define PRS 1
   112
   113#define SIM 6
   114#define IMM 13
   115#define IMM8 14
   116#define D 0x80
   117#define SC 1
   118
   119#define target_addr 0x690
   120
   121#define XMSK 0x9
   122#define YMSK 0x3
   123#define PMSK 0x2
   124
   125#define IX 1
   126#define IMM32 0x1234567
   127#define Dpfx 0x160032
   128#define RApfx 0x0
   129#define Rpfx 1
   130#define SIpfx 0xFFFFFFFE00010007
   131
   132// A valid displacement value for the hash check and hash store instructions.
   133#define offset -128
   134
   135// These decode as m.fpr* or m.vr*.  This is a matter of preference.  We
   136// don't support these mnemonics, and I don't think they improve reading
   137// disassembled code in most cases. so ignore.
   138//
   139// Likewise, if you add to this list, add tests to decode.txt to ensure we
   140// still test these, while ignoring the extended mnemonics which get
   141// generated.
   142#define mfvsrd xsrsp
   143#define mfvsrwz xsrsp
   144#define mtvsrd xsrsp
   145#define mtvsrwz xsrsp
   146#define mtvsrwa xsrsp
   147
   148// isel BC bit is not decoded like other BC fields.
   149// A special test case is added to decode.txt to verify this.
   150// We decode it like other BC fields.
   151#define isel rldicl
   152
   153
   154// Likewise, these are obscure book ii instructions with extended mnemonics
   155// which are almost guaranteed never to show up in go code
   156#define dcbf add
   157#define sync xsrsp
   158#define wait xsrsp
   159#define rfebb sc
   160
   161// sync 1,1 is the stncisync extended mnemonic.  Similar to the above, but
   162// the lwsync/hwsync extended mnemonics are tested in decode.txt
   163#define sync xsrsp

View as plain text