accidentally removed ¬ symbol from pseudocode
[libreriscv.git] / openpower / isa / sprset.mdwn
1 # Move To Special Purpose Register
2
3 XFX-Form
4
5 * mtspr SPR,RS
6
7 n <- spr[5:9] || spr[0:4]
8 switch (n)
9 case(13): see(Book_III_p974)
10 case(808, 809, 810, 811):
11 default:
12 if length(SPR(n)) = 64 then
13 SPR(n) <- (RS)
14 else
15 SPR(n) <- (RS) [32:63]
16
17 Special Registers Altered:
18
19 See spec 3.3.17
20
21 # Move From Special Purpose Register
22
23 XFX-Form
24
25 * mfspr RT,SPR
26
27 n <- spr[5:9] || spr[0:4]
28 switch (n)
29 case(129): see(Book_III_p975)
30 case(808, 809, 810, 811):
31 default:
32 if length(SPR(n)) = 64 then
33 RT <- SPR(n)
34 else
35 RT <- [0]*32 || SPR(n)
36
37 Special Registers Altered:
38
39 None
40
41 # Move to CR from XER Extended
42
43 X-Form
44
45 * mcrxrx BF
46
47 CR[4*BF+32:4*BF+35] <- XER[OV] || XER[OV32] || XER[CA] || XER[CA32]
48
49 Special Registers Altered:
50
51 CR field BF
52
53 # Move To One Condition Register Field
54
55 XFX-Form
56
57 * mtocrf FXM,RS
58
59 count <- 0
60 do i = 0 to 7
61 if FXM[i] = 1 then
62 n <- i
63 count <- count + 1
64 if count = 1 then
65 CR[4*n+32:4*n+35] <- (RS)[4*n+32:4*n+35]
66 else CR <- undefined
67
68 Special Registers Altered:
69
70 CR field selected by FXM
71
72 # Move To Condition Register Fields
73
74 XFX-Form
75
76 * mtcrf FXM,RS
77
78 mask <- ([FXM[0]]*4 || [FXM[1]]*4 || [FXM[2]]*4 || [FXM[3]]*4 ||
79 [FXM[4]]*4 || [FXM[5]]*4 || [FXM[6]]*4 || [FXM[7]]*4)
80 CR <- ((RS)[32:63] & mask) | (CR & ¬mask)
81
82 Special Registers Altered:
83
84 CR fields selected by mask
85
86 # Move From One Condition Register Field
87
88 XFX-Form
89
90 * mfocrf RT,FXM
91
92 RT <- undefined
93 count <- 0
94 do i = 0 to 7
95 if FXM[i] = 1 then
96 n <- i
97 count <- count + 1
98 if count = 1 then
99 RT <- [0]*64
100 RT[4*n+32:4*n+35] <- CR[4*n+32:4* n+35]
101
102 Special Registers Altered:
103
104 None
105
106 # Move From Condition Register
107
108 XFX-Form
109
110 * mfcr RT
111
112 RT <- [0]*32 || CR
113
114 Special Registers Altered:
115
116 None
117
118 # Set Boolean
119
120 X-Form
121
122 * setb RT,BFA
123
124 if CR[4*BFA+32] = 1 then
125 RT <- 0xFFFF_FFFF_FFFF_FFFF
126 else if CR[4*BFA+33]=1 then
127 RT <- 0x0000_0000_0000_0001
128 else
129 RT <- 0x0000_0000_0000_0000
130
131 Special Registers Altered:
132
133 None
134
135 # Move To Machine State Register
136
137 X-Form
138
139 * mtmsr RS,L
140
141 if L = 0 then
142 MSR[48] <- (RS)[48] | (RS)[49]
143 MSR[58] <- ((RS)[58] | (RS)[49]) & ¬(MSR[41] & MSR[3] & (¬(RS)[49]))
144 MSR[59] <- ((RS)[59] | (RS)[49]) & ¬(MSR[41] & MSR[3] & (¬(RS)[49]))
145 MSR[32:40] <- (RS)[32:40]
146 MSR[42:47] <- (RS)[42:47]
147 MSR[49:50] <- (RS)[49:50]
148 MSR[52:57] <- (RS)[52:57]
149 MSR[60:62] <- (RS)[60:62]
150 else
151 MSR[48] <- (RS)[48]
152 MSR[62] <- (RS)[62]
153
154 Special Registers Altered:
155
156 MSR
157
158 # Move From Machine State Register
159
160 X-Form
161
162 * mfmsr RT
163
164 RT <- MSR
165
166 Special Registers Altered:
167
168 None
169