Skip to content

Instantly share code, notes, and snippets.

@jboone
Created December 22, 2013 07:16
Show Gist options
  • Save jboone/8079391 to your computer and use it in GitHub Desktop.
Save jboone/8079391 to your computer and use it in GitHub Desktop.
Fast third-order CIC for s8:s8 (complex) data.
ldrd t1, t2, [buf], #8 /* 3: t1 = Q3:I3:Q2:I2 */
/* t2 = Q5:I5:Q4:I4 */
/* What if I did this using ROL/ROR and SEL? */
/* Q3:I3:Q2:I2,Q5:I5:Q4:I4 -> */
smuad t3, i, taps /* 1: t3 = I1 * 3 + I0 * 1 */
smuad t4, q, taps /* 1: t4 = Q1 * 3 + Q0 * 1 */
sxtb16 i, t1, ror #0 /* 1: i = I3:I2 */
sxtb16 q, t1, ror #8 /* 1: q = Q3:Q2 */
smladx t1, i, taps, t3 /* 1: t1 += I3 * 1 + I2 * 3 */
smladx t4, q, taps, t4 /* 1: t4 += Q3 * 1 + Q2 * 3 */
bfi t1, t4, #16, #16 /* 1: t1 = D2_Q0:D2_I0 */
smuad t3, i, taps /* 1: t3 = I3 * 3 + I2 * 1 */
smuad t4, q, taps /* 1: t4 = Q3 * 3 + Q2 * 1 */
sxtb16 i, t2, ror #0 /* 1: i = I5:I4 */
sxtb16 q, t2, ror #8 /* 1: q = Q5:Q4 */
smladx t3, i, taps, t3 /* 1: t3 += I5 * 1 + I4 * 3 */
smladx t4, q, taps, t4 /* 1: t4 += Q5 * 1 + Q4 * 3 */
bfi t3, t4, #16, #16 /* 1: t3 = D2_Q1:D2_I1 */
strd t1, t3, [buf, #-8] /* 3: D2_Q0:D2_I0, D2_Q1:D2_I1 */
ldrd t1, t2, [buf], #8 /* 3: t1 = Q3:I3:Q2:I2 */
/* t2 = Q5:I5:Q4:I4 */
smuad t3, i, taps /* 1: t3 = I1 * 3 + I0 * 1 */
smuad t4, q, taps /* 1: t4 = Q1 * 3 + Q0 * 1 */
sxtb16 i, t1, ror #0 /* 1: i = I3:I2 */
sxtb16 q, t1, ror #8 /* 1: q = Q3:Q2 */
smladx t1, i, taps, t3 /* 1: t1 += I3 * 1 + I2 * 3 */
smladx t4, q, taps, t4 /* 1: t4 += Q3 * 1 + Q2 * 3 */
bfi t1, t4, #16, #16 /* 1: t1 = D2_Q0:D2_I0 */
smuad t3, i, taps /* 1: t3 = I3 * 3 + I2 * 1 */
smuad t4, q, taps /* 1: t4 = Q3 * 3 + Q2 * 1 */
sxtb16 i, t2, ror #0 /* 1: i = I5:I4 */
sxtb16 q, t2, ror #8 /* 1: q = Q5:Q4 */
smladx t3, i, taps, t3 /* 1: t3 += I5 * 1 + I4 * 3 */
smladx t4, q, taps, t4 /* 1: t4 += Q5 * 1 + Q4 * 3 */
bfi t3, t4, #16, #16 /* 1: t3 = D2_Q1:D2_I1 */
strd t1, t3, [buf, #-8] /* 3: D2_Q0:D2_I0, D2_Q1:D2_I1 */
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment