1 <!-- SVP64 Butterfly DCT Instructions here described are based on -->
3 <!-- PLEASE NOTE THESE ARE UNAPPROVED AND DRAFT, NOT SUBMITTED TO OPF ISA WG -->
5 # [DRAFT] Integer Butterfly Multiply Add/Sub FFT/DCT
9 * maddsubrs RT,RA,SH,RB
16 prod1 <- MULS(RB, sum)
17 prod2 <- MULS(RB, diff)
19 prod1_lo <- prod1[XLEN:(XLEN*2)-1]
20 prod2_lo <- prod2[XLEN:(XLEN*2)-1]
25 prod1_lo <- prod1[XLEN:(XLEN*2)-1]
26 prod2_lo <- prod2[XLEN:(XLEN*2)-1]
29 prod1_lo <- prod1_lo + round
30 prod2_lo <- prod2_lo + round
31 m <- MASK(n, (XLEN-1))
32 res1 <- ROTL64(prod1_lo, XLEN-n) & m
33 res2 <- ROTL64(prod2_lo, XLEN-n) & m
34 signbit1 <- prod1_lo[0]
35 signbit2 <- prod2_lo[0]
36 smask1 <- ([signbit1]*XLEN) & ¬m
37 smask2 <- ([signbit2]*XLEN) & ¬m
43 prod1 <- prod1 + round
44 prod2 <- prod2 + round
45 m <- MASK(XLEN-n, XLEN-1)
46 res1 <- prod1[XLEN-n:XLEN*2 -n -1]
47 res2 <- prod2[XLEN-n:XLEN*2 -n -1]
50 smask1 <- ([signbit1]*XLEN) & ¬m
51 smask2 <- ([signbit2]*XLEN) & ¬m
55 Special Registers Altered:
59 # [DRAFT] Integer Butterfly Multiply Add and Accumulate FFT/DCT
70 prod_lo <- prod[XLEN:(XLEN*2)-1]
75 prod_lo <- prod[XLEN:(XLEN*2)-1]
76 res1 <- (RT) + prod_lo
77 res2 <- (RS) - prod_lo
84 m <- MASK(n, (XLEN-1))
85 res1 <- ROTL64(res1, XLEN-n) & m
86 res2 <- ROTL64(res2, XLEN-n) & m
87 smask1 <- ([signbit1]*XLEN) & ¬m
88 smask2 <- ([signbit2]*XLEN) & ¬m
100 m <- MASK(XLEN-n, (XLEN-1))
101 res1 <- prod1[XLEN-n:XLEN*2 -n -1]
102 res2 <- prod2[XLEN-n:XLEN*2 -n -1]
103 smask1 <- ([signbit1]*XLEN) & ¬m
104 smask2 <- ([signbit2]*XLEN) & ¬m
105 RT <- (res1 | smask1)
106 RS <- (res2 | smask2)
108 Special Registers Altered: