# setvl SVL-Form * setvl RT, RA, SVi, vs, ms * setvl. RT, RA, SVi, vs, ms Pseudo-code: VLimm <- SVi + 1 if vs = 1 then if _RA != 0 then VL <- (RA|0)[57:63] else VL <- VLimm[1:7] else VL <- SVSTATE[7:13] if ms = 1 then MVL <- VLimm[1:7] else MVL <- SVSTATE[0:6] if VL > MVL then VL = MVL SVSTATE[0:6] <- MVL SVSTATE[7:13] <- VL RT <- [0]*57 || VL Special Registers Altered: CR0 (if Rc=1) # svremap SVM-Form * svremap SVxd, SVyd, SVzd, SVRM Pseudo-code: # clear out all SVSHAPEs SVSHAPE0[0:31] <- [0] * 32 SVSHAPE1[0:31] <- [0] * 32 SVSHAPE2[0:31] <- [0] * 32 SVSHAPE3[0:31] <- [0] * 32 # set schedule up for multiply if (SVRM = 0b00000) then # set up template in SVSHAPE0, then copy to 1-3 SVSHAPE0[0:5] <- (0b0 || SVxd) # xdim SVSHAPE0[6:11] <- (0b0 || SVyd) # ydim SVSHAPE0[12:17] <- (0b0 || SVzd) # zdim SVSHAPE0[28:29] <- 0b11 # skip z # copy SVSHAPE1[0:31] <- SVSHAPE0[0:31] SVSHAPE2[0:31] <- SVSHAPE0[0:31] SVSHAPE3[0:31] <- SVSHAPE0[0:31] # set up FRA SVSHAPE1[18:20] <- 0b001 # permute x,z,y SVSHAPE1[28:29] <- 0b01 # skip z # FRC SVSHAPE2[18:20] <- 0b001 # permute x,z,y SVSHAPE2[28:29] <- 0b11 # skip y # set schedule up for butterfly if (SVRM = 0b00001) then # set up template in SVSHAPE0, then copy to 1-3 # for FRA and FRT SVSHAPE0[0:5] <- (0b0 || SVxd) # xdim SVSHAPE0[30:31] <- 0b01 # Butterfly mode # copy SVSHAPE1[0:31] <- SVSHAPE0[0:31] SVSHAPE2[0:31] <- SVSHAPE0[0:31] # set up FRB and FRS SVSHAPE1[28:29] <- 0b01 # j+halfstep schedule # FRC (coefficients) SVSHAPE2[28:29] <- 0b10 # k schedule Special Registers Altered: None