Coverage Report

Created: 2024-08-21 06:24

/src/capstonenext/arch/PowerPC/PPCRegisterInfo.h
Line
Count
Source (jump to first uncovered line)
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 'r':
19
0
  case 'f':
20
0
  case 'v':
21
0
    if (RegName[1] == 's') {
22
0
      if (RegName[2] == 'p')
23
0
        return RegName + 3;
24
0
      return RegName + 2;
25
0
    }
26
0
    return RegName + 1;
27
0
  case 'c':
28
0
    if (RegName[1] == 'r')
29
0
      return RegName + 2;
30
0
    break;
31
0
  case 'w':
32
    // For wacc and wacc_hi
33
0
    if (RegName[1] == 'a' && RegName[2] == 'c' &&
34
0
        RegName[3] == 'c') {
35
0
      if (RegName[4] == '_')
36
0
        return RegName + 7;
37
0
      else
38
0
        return RegName + 4;
39
0
    }
40
0
    break;
41
0
  case 'd':
42
    // For dmr, dmrp, dmrrow, dmrrowp
43
0
    if (RegName[1] == 'm' && RegName[2] == 'r') {
44
0
      if (RegName[3] == 'r' && RegName[4] == 'o' &&
45
0
          RegName[5] == 'w' && RegName[6] == 'p')
46
0
        return RegName + 7;
47
0
      else if (RegName[3] == 'r' && RegName[4] == 'o' &&
48
0
         RegName[5] == 'w')
49
0
        return RegName + 6;
50
0
      else if (RegName[3] == 'p')
51
0
        return RegName + 4;
52
0
      else
53
0
        return RegName + 3;
54
0
    }
55
0
    break;
56
0
  }
57
58
0
  return RegName;
59
0
}
60
61
#endif // CS_PPC_REGISTERINFO_H