277305a890b88b0fca581ab0b3f5168cc175e5a9
[openpower-isa.git] / openpower / isa / butterfly.mdwn
1 <!-- SVP64 Butterfly DCT Instructions here described are based on -->
2
3 <!-- PLEASE NOTE THESE ARE UNAPPROVED AND DRAFT, NOT SUBMITTED TO OPF ISA WG -->
4
5 # [DRAFT] Integer Butterfly Multiply Add/Sub FFT/DCT
6
7 A-Form
8
9 * maddsubrs RT,RA,SH,RB
10
11 Pseudo-code:
12
13 n <- SH
14 sum <- (RT) + (RA)
15 diff <- (RT) - (RA)
16 prod1 <- MULS(RB, sum)[XLEN:(XLEN*2)-1]
17 prod2 <- MULS(RB, diff)[XLEN:(XLEN*2)-1]
18 res1 <- ROTL64(prod1, XLEN-n)
19 res2 <- ROTL64(prod2, XLEN-n)
20 m <- MASK(n, (XLEN-1))
21 s1 <- res1[0]
22 s2 <- res2[0]
23 smask1 <- ([s1]*XLEN) & ¬m
24 smask2 <- ([s2]*XLEN) & ¬m
25 RT <- res1 & m | smask1
26 RS <- res2 & m | smask2
27
28 Special Registers Altered:
29
30 None