Are FIR filters limited to only inputs with unit-stride (contiguous)?
It is only support unit stride. You can use the ippmExtract_v_xxx function to create the contiguous input data.
it is better to use ippsSampleUp or ippsSampleDown functions - they support any regular stride. Also there are FIRSparse functions, but they are oriented for strided taps, not input vector. We can't implement all possible kinds of DSP specific with single functions - IPP functions are just building blocks - so if your request can be implemented with 2 or more blocks - that is normal situation. Use SampleDown and FIR in a loop taking into account L0 size - in this case there is no performance difference between special single primitive and combined one. So SampleDown your input vector to some tmp, then perform FIR from tmp to your dst vector (if you use 7.1.1 - you can get rid of tmp and perform SampleDown to dst and then apply FIR with pSrc==pDst - it supports in-place). In this case you should divide your vector on "slices" that input+tmp+dst (or input+dst in case of in-place op) < 32K (L0 size).