To find out if a primitive is threaded, look at the file named ThreadedFunctionsList.txt in the IPP doc directory. In the 6.1.5 version of that file the function is threaded (I think it is threaded for all 6.1 versions).
The CPU usage pattern is as much a function of the OpenMP threading engine as it is of the IPP function you are using. CPU usage should not be used as a guide for measuring performance. The key question is does the function accomplish the work required in the desired timeframe? The answer to that question, unfortunately, depends on your application, the data set, etc. So there's no easy answer...
One thing you should keep in mind, the threading within the primitive can generate more overhead than it is worth. Again, this depends on your application the data set you are feeding the function, etc. You can test a single-threaded version of the function against the multi-threaded version by linking against the single-threaded static library, or by disabling the threading. There are several threads and KB articles about this already on the site. I encourage you to search for them and compare your performance results with and without threading (in the primitive) before you decide which route is the best to take.
If your code runs per expectations using ippSetNumThreads(1), you might want to consider linking with the static single-threaded version of the library. Will probaby result in a little better single-threaded performance and will eliminate any overhead associated with the OpenMP library used by the multi-threaded versions of the library.