add ability to explicitly increment SVSTATE srcstep/dststep
[openpower-isa.git] / openpower / isa / simplev.mdwn
1 <!-- This defines instructions described in PowerISA Version 3.0 B Book 1 -->
2
3 <!-- These are not described in book 1 -->
4
5 # setvl
6
7 SVL-Form
8
9 * setvl RT, RA, SVi, vf, vs, ms
10 * setvl. RT, RA, SVi, vf, vs, ms
11
12 Pseudo-code:
13
14 if (vf & (¬vs) & ¬(ms)) = 1 then
15 SVSTATE_NEXT
16 else
17 VLimm <- SVi + 1
18 if vs = 1 then
19 if _RA != 0 then
20 VL <- (RA|0)[57:63]
21 else
22 VL <- VLimm[0:6]
23 else
24 VL <- SVSTATE[7:13]
25 if ms = 1 then
26 MVL <- VLimm[0:6]
27 else
28 MVL <- SVSTATE[0:6]
29 if VL > MVL then
30 VL = MVL
31 SVSTATE[0:6] <- MVL
32 SVSTATE[7:13] <- VL
33 if _RT != 0b00000 then
34 GPR(_RT) <- [0]*57 || VL
35 MSR[6] <- vf
36
37 Special Registers Altered:
38
39 CR0 (if Rc=1)
40
41 # svremap
42
43 SVM-Form
44
45 * svremap SVxd, SVyd, SVzd, SVRM
46
47 Pseudo-code:
48
49 # clear out all SVSHAPEs
50 SVSHAPE0[0:31] <- [0] * 32
51 SVSHAPE1[0:31] <- [0] * 32
52 SVSHAPE2[0:31] <- [0] * 32
53 SVSHAPE3[0:31] <- [0] * 32
54 # set schedule up for multiply
55 if (SVRM = 0b00000) then
56 # set up template in SVSHAPE0, then copy to 1-3
57 SVSHAPE0[0:5] <- (0b0 || SVxd) # xdim
58 SVSHAPE0[6:11] <- (0b0 || SVyd) # ydim
59 SVSHAPE0[12:17] <- (0b0 || SVzd) # zdim
60 SVSHAPE0[28:29] <- 0b11 # skip z
61 # copy
62 SVSHAPE1[0:31] <- SVSHAPE0[0:31]
63 SVSHAPE2[0:31] <- SVSHAPE0[0:31]
64 SVSHAPE3[0:31] <- SVSHAPE0[0:31]
65 # set up FRA
66 SVSHAPE1[18:20] <- 0b001 # permute x,z,y
67 SVSHAPE1[28:29] <- 0b01 # skip z
68 # FRC
69 SVSHAPE2[18:20] <- 0b001 # permute x,z,y
70 SVSHAPE2[28:29] <- 0b11 # skip y
71 # set schedule up for butterfly
72 if (SVRM = 0b00001) then
73 # set up template in SVSHAPE0, then copy to 1-3
74 # for FRA and FRT
75 SVSHAPE0[0:5] <- (0b0 || SVxd) # xdim
76 SVSHAPE0[30:31] <- 0b01 # Butterfly mode
77 # copy
78 SVSHAPE1[0:31] <- SVSHAPE0[0:31]
79 SVSHAPE2[0:31] <- SVSHAPE0[0:31]
80 # set up FRB and FRS
81 SVSHAPE1[28:29] <- 0b01 # j+halfstep schedule
82 # FRC (coefficients)
83 SVSHAPE2[28:29] <- 0b10 # k schedule
84
85 Special Registers Altered:
86
87 None
88