(no commit message)
[libreriscv.git] / openpower / sv / fclass.mdwn
1 # fclass
2
3 xvtstdcsp v3.0B p768
4
5 | 0.5|6.10|11.15|16.18 | 19.26 | 27...30 |31| name |
6 | -- | -- | --- | ---- | ------ | ------- |--| ------- |
7 | PO | RT | FRA | BA | DCMX | XO[0:3] |Rc| fptstsp |
8
9 ```
10 src <- (FRA)[32:63]
11 sign <- src[0]
12 exponent <- src[1:8]
13 fraction <- src[9:31]
14 class.Infinity <- (exponent = 0xFF) & (fraction = 0)
15 class.NaN <- (exponent = 0xFF) & (fraction != 0)
16 class.Zero <- (exponent = 0x00) & (fraction = 0)
17 class.Denormal <- (exponent = 0x00) & (fraction != 0)
18 match <- (DCMX[0] & class.NaN & !sign) |
19 (DCMX[1] & class.NaN & sign) |
20 (DCMX[2] & class.Infinity & !sign) |
21 (DCMX[3] & class.Infinity & sign) |
22 (DCMX[4] & class.Zero & !sign) |
23 (DCMX[5] & class.Zero & sign) |
24 (DCMX[6] & class.Denormal & !sign) |
25 (DCMX[7] & class.Denormal & sign)
26
27 if match = 1 then
28 RT[32:63] <- 0xFFFF_FFFF
29 else
30 RT[32:63] <- 0x0000_0000
31 end
32 CR{BA} = class.Zero ||
33 class.Infinity ||
34 class.Denormal ||
35 class.NaN
36 ```