I have the following instructions enabled in the DSP48 Macro 3.0:
However the calculation is not correct.
If I add the P register in the DSP48 cell, then the calculation is correct.
This is a known issue in the DSP48 Macro 3.0 block and has been seen in both Vivado Design Suite 2013.3 and 2013.4.
It is possible to work around this issue by using the AddSub block or (if you can tolerate additional latency) checking the P register block in the DSP48 Macro.
This issue is resolved in the 2014.1 release.