whitespace
[libreriscv.git] / openpower / isa / comparefixed.mdwn
1 # Compare Immediate
2
3 cmpi BF,L,RA,SI
4
5 if L = 0 then a <- EXTS((RA)[32:63])
6 else a <- (RA)
7 if a < EXTS(SI) then c <- 0b100
8 else if a > EXTS(SI) then c <- 0b010
9 else c <- 0b001
10 CR[4*BF+32:4*BF+35] <- c || XER[SO]
11
12 # Compare
13
14 cmp BF,L,RA,RB
15
16 if L = 0 then a <- EXTS((RA)[32:63] )
17 b <- EXTS((RB)[32:63])
18 else a <- (RA)
19 b <- (RB)
20 if a < b then c <- 0b100
21 else if a > b then c <- 0b010
22 else c <- 0b001
23 CR[4*BF+32:4*BF+35] <- c || XER[SO]
24
25 # Compare Logical Immediate
26
27 cmpli BF,L,RA,UI
28
29 if L = 0 then a <- [0]*32 || (RA)[32:63]
30 else a <- (RA)
31 if a <u ( [0]*48 || UI) then c <- 0b100
32 else if a >u ( [0]*48 || UI) then c <- 0b010
33 else c <- 0b001
34 CR[4*BF+32:4*BF+35] <- c || XER[SO]
35
36 # Compare Logical
37
38 cmpl BF,L,RA,RB
39
40 if L = 0 then a <- [0]*32 || (RA)[32:63]
41 b <- [0]*32 || (RB)[32:63]
42 else a <- (RA)
43 b <- (RB)
44 if a <u b then c <- 0b100
45 else if a >u b then c <- 0b010
46 else c <- 0b001
47 CR[4*BF+32:4*BF+35] <- c || XER[SO]
48
49 # Compare Ranged Byte X-form
50
51 cmprb BF,L,RA,RB
52
53 src1 <- EXTZ((RA)[56:63])
54
55 src21hi <- EXTZ((RB)[32:39])
56 src21lo <- EXTZ((RB)[40:47])
57 src22hi <- EXTZ((RB)[48:55])
58 src22lo <- EXTZ((RB)[56:63])
59
60 if L=0 then
61 in_range <- (src22lo <= src1) & (src1 <= src22hi)
62 else
63 in_range <- ((src21lo <= src1) & (src1 <= src21hi)) |
64 in_range <- ((src22lo <= src1) & (src1 <= src22hi))
65
66 CR[4×BF+32] <- 0b0
67 CR[4×BF+33] <- in_range
68 CR[4×BF+34] <- 0b0
69 CR[4×BF+35] <- 0b0
70
71 # Compare Equal Byte X-form
72
73 cmpeqb BF,RA,RB
74
75 src1 <- GPR[RA].bit[56:63]
76
77 match <- (src1 = (RB)[00:07]) |
78 match <- (src1 = (RB)[08:15]) |
79 match <- (src1 = (RB)[16:23]) |
80 match <- (src1 = (RB)[24:31]) |
81 match <- (src1 = (RB)[32:39]) |
82 match <- (src1 = (RB)[40:47]) |
83 match <- (src1 = (RB)[48:55]) |
84 match <- (src1 = (RB)[56:63])
85
86 CR[4×BF+32] <- 0b0
87 CR[4×BF+33] <- match
88 CR[4×BF+34] <- 0b0
89 CR[4×BF+35] <- 0b0
90