rfid, etc. do not take a LEV field
[libreriscv.git] / openpower / isa / comparefixed.mdwn
1 # Compare Immediate
2
3 D-Form
4
5 * cmpi BF,L,RA,SI
6
7 Pseudo-code:
8
9 if L = 0 then a <- EXTS((RA)[32:63])
10 else a <- (RA)
11 if a < EXTS(SI) then c <- 0b100
12 else if a > EXTS(SI) then c <- 0b010
13 else c <- 0b001
14 CR[4*BF+32:4*BF+35] <- c || XER[SO]
15
16 Special Registers Altered:
17
18 CR field BF
19
20 # Compare
21
22 X-Form
23
24 * cmp BF,L,RA,RB
25
26 Pseudo-code:
27
28 if L = 0 then
29 a <- EXTS((RA)[32:63] )
30 b <- EXTS((RB)[32:63])
31 else
32 a <- (RA)
33 b <- (RB)
34 if a < b then c <- 0b100
35 else if a > b then c <- 0b010
36 else c <- 0b001
37 CR[4*BF+32:4*BF+35] <- c || XER[SO]
38
39 Special Registers Altered:
40
41 CR field BF
42
43 # Compare Logical Immediate
44
45 D-Form
46
47 * cmpli BF,L,RA,UI
48
49 Pseudo-code:
50
51 if L = 0 then a <- [0]*32 || (RA)[32:63]
52 else a <- (RA)
53 if a <u ( [0]*48 || UI) then c <- 0b100
54 else if a >u ( [0]*48 || UI) then c <- 0b010
55 else c <- 0b001
56 CR[4*BF+32:4*BF+35] <- c || XER[SO]
57
58 Special Registers Altered:
59
60 CR field BF
61
62 # Compare Logical
63
64 X-Form
65
66 * cmpl BF,L,RA,RB
67
68 Pseudo-code:
69
70 if L = 0 then
71 a <- [0]*32 || (RA)[32:63]
72 b <- [0]*32 || (RB)[32:63]
73 else
74 a <- (RA)
75 b <- (RB)
76 if a <u b then c <- 0b100
77 else if a >u b then c <- 0b010
78 else c <- 0b001
79 CR[4*BF+32:4*BF+35] <- c || XER[SO]
80
81 Special Registers Altered:
82
83 CR field BF
84
85 # Compare Ranged Byte
86
87 X-Form
88
89 * cmprb BF,L,RA,RB
90
91 Pseudo-code:
92
93 src1 <- EXTZ((RA)[56:63])
94 src21hi <- EXTZ((RB)[32:39])
95 src21lo <- EXTZ((RB)[40:47])
96 src22hi <- EXTZ((RB)[48:55])
97 src22lo <- EXTZ((RB)[56:63])
98 if L=0 then
99 in_range <- (src22lo <= src1) & (src1 <= src22hi)
100 else
101 in_range <- (((src21lo <= src1) & (src1 <= src21hi)) |
102 ((src22lo <= src1) & (src1 <= src22hi)))
103 CR[4*BF+32] <- 0b0
104 CR[4*BF+33] <- in_range
105 CR[4*BF+34] <- 0b0
106 CR[4*BF+35] <- 0b0
107
108 Special Registers Altered:
109
110 CR field BF
111
112 # Compare Equal Byte
113
114 X-Form
115
116 * cmpeqb BF,RA,RB
117
118 Pseudo-code:
119
120 src1 <- GPR[RA]
121 src1 <- src1[56:63]
122 match <- ((src1 = (RB)[00:07]) |
123 (src1 = (RB)[08:15]) |
124 (src1 = (RB)[16:23]) |
125 (src1 = (RB)[24:31]) |
126 (src1 = (RB)[32:39]) |
127 (src1 = (RB)[40:47]) |
128 (src1 = (RB)[48:55]) |
129 (src1 = (RB)[56:63]))
130 CR[4*BF+32] <- 0b0
131 CR[4*BF+33] <- match
132 CR[4*BF+34] <- 0b0
133 CR[4*BF+35] <- 0b0
134
135 Special Registers Altered:
136
137 CR field BF
138