]>
git.proxmox.com Git - rustc.git/blob - src/llvm/lib/Target/PowerPC/MCTargetDesc/PPCBaseInfo.h
1 //===-- PPCBaseInfo.h - Top level definitions for PPC -----------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // This file contains small standalone helper functions and enum definitions for
11 // the PPC target useful for the compiler back-end and the MC libraries.
12 // As such, it deliberately does not include references to LLVM core
13 // code gen types, passes, etc..
15 //===----------------------------------------------------------------------===//
20 #include "PPCMCTargetDesc.h"
21 #include "llvm/Support/ErrorHandling.h"
25 /// getPPCRegisterNumbering - Given the enum value for some register, e.g.
26 /// PPC::F14, return the number that it corresponds to (e.g. 14).
27 inline static unsigned getPPCRegisterNumbering(unsigned RegEnum
) {
31 case R0
: case X0
: case F0
: case V0
: case CR0
: case CR0LT
: return 0;
32 case R1
: case X1
: case F1
: case V1
: case CR1
: case CR0GT
: return 1;
33 case R2
: case X2
: case F2
: case V2
: case CR2
: case CR0EQ
: return 2;
34 case R3
: case X3
: case F3
: case V3
: case CR3
: case CR0UN
: return 3;
35 case R4
: case X4
: case F4
: case V4
: case CR4
: case CR1LT
: return 4;
36 case R5
: case X5
: case F5
: case V5
: case CR5
: case CR1GT
: return 5;
37 case R6
: case X6
: case F6
: case V6
: case CR6
: case CR1EQ
: return 6;
38 case R7
: case X7
: case F7
: case V7
: case CR7
: case CR1UN
: return 7;
39 case R8
: case X8
: case F8
: case V8
: case CR2LT
: return 8;
40 case R9
: case X9
: case F9
: case V9
: case CR2GT
: return 9;
41 case R10
: case X10
: case F10
: case V10
: case CR2EQ
: return 10;
42 case R11
: case X11
: case F11
: case V11
: case CR2UN
: return 11;
43 case R12
: case X12
: case F12
: case V12
: case CR3LT
: return 12;
44 case R13
: case X13
: case F13
: case V13
: case CR3GT
: return 13;
45 case R14
: case X14
: case F14
: case V14
: case CR3EQ
: return 14;
46 case R15
: case X15
: case F15
: case V15
: case CR3UN
: return 15;
47 case R16
: case X16
: case F16
: case V16
: case CR4LT
: return 16;
48 case R17
: case X17
: case F17
: case V17
: case CR4GT
: return 17;
49 case R18
: case X18
: case F18
: case V18
: case CR4EQ
: return 18;
50 case R19
: case X19
: case F19
: case V19
: case CR4UN
: return 19;
51 case R20
: case X20
: case F20
: case V20
: case CR5LT
: return 20;
52 case R21
: case X21
: case F21
: case V21
: case CR5GT
: return 21;
53 case R22
: case X22
: case F22
: case V22
: case CR5EQ
: return 22;
54 case R23
: case X23
: case F23
: case V23
: case CR5UN
: return 23;
55 case R24
: case X24
: case F24
: case V24
: case CR6LT
: return 24;
56 case R25
: case X25
: case F25
: case V25
: case CR6GT
: return 25;
57 case R26
: case X26
: case F26
: case V26
: case CR6EQ
: return 26;
58 case R27
: case X27
: case F27
: case V27
: case CR6UN
: return 27;
59 case R28
: case X28
: case F28
: case V28
: case CR7LT
: return 28;
60 case R29
: case X29
: case F29
: case V29
: case CR7GT
: return 29;
61 case R30
: case X30
: case F30
: case V30
: case CR7EQ
: return 30;
62 case R31
: case X31
: case F31
: case V31
: case CR7UN
: return 31;
64 llvm_unreachable("Unhandled reg in PPCRegisterInfo::getRegisterNumbering!");
68 } // end namespace llvm;