Coverage Report

Created: 2025-11-11 06:33

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/capstonenext/arch/PowerPC/PPCRegisterInfo.h
Line
Count
Source
1
/* Capstone Disassembly Engine, http://www.capstone-engine.org */
2
/* By Rot127 <unisono@quyllur.org> 2022-2023 */
3
4
#ifndef CS_PPC_REGISTERINFO_H
5
#define CS_PPC_REGISTERINFO_H
6
7
#include "PPCMCTargetDesc.h"
8
9
/// stripRegisterPrefix - This method strips the character prefix from a
10
/// register name so that only the number is left.  Used by for linux asm.
11
static const char *PPCRegisterInfo_stripRegisterPrefix(const char *RegName)
12
0
{
13
0
  switch (RegName[0]) {
14
0
  case 'a':
15
0
    if (RegName[1] == 'c' && RegName[2] == 'c')
16
0
      return RegName + 3;
17
0
    break;
18
0
  case 'f':
19
0
    if (RegName[1] == 'p')
20
0
      return RegName + 2;
21
    // fallthrough
22
0
  case 'r':
23
0
  case 'v':
24
0
    if (RegName[1] == 's') {
25
0
      if (RegName[2] == 'p')
26
0
        return RegName + 3;
27
0
      return RegName + 2;
28
0
    }
29
0
    return RegName + 1;
30
0
  case 'c':
31
0
    if (RegName[1] == 'r')
32
0
      return RegName + 2;
33
0
    break;
34
0
  case 'w':
35
    // For wacc and wacc_hi
36
0
    if (RegName[1] == 'a' && RegName[2] == 'c' &&
37
0
        RegName[3] == 'c') {
38
0
      if (RegName[4] == '_')
39
0
        return RegName + 7;
40
0
      else
41
0
        return RegName + 4;
42
0
    }
43
0
    break;
44
0
  case 'd':
45
    // For dmr, dmrp, dmrrow, dmrrowp
46
0
    if (RegName[1] == 'm' && RegName[2] == 'r') {
47
0
      if (RegName[3] == 'r' && RegName[4] == 'o' &&
48
0
          RegName[5] == 'w' && RegName[6] == 'p')
49
0
        return RegName + 7;
50
0
      else if (RegName[3] == 'r' && RegName[4] == 'o' &&
51
0
         RegName[5] == 'w')
52
0
        return RegName + 6;
53
0
      else if (RegName[3] == 'p')
54
0
        return RegName + 4;
55
0
      else
56
0
        return RegName + 3;
57
0
    }
58
0
    break;
59
0
  }
60
61
0
  return RegName;
62
0
}
63
64
#endif // CS_PPC_REGISTERINFO_H