- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi all,
I encountered a problem while developing on VS2008 64bit win7 using ipp library (version 7.0.4). Could anybody help me?
I have some floating calculations in my function. Between them there is an ipp function invoked and the result of the calculation after the ipp function is wrong. My fuction is something like this:
void my_func()
{
double i = 1; // according to the disassembly file, register xmm11 was used to save the constant value 1.
...
double d1 = 0.0;
ippiConvValid_32f_C1R(...); // invoke ipp function. inside of which ymm11 was changed but not resotred.
double d2 = 1 - d1; // d2 supposed to be 1.0, but not. It reads value from xmm11 to do the calculation, but xmm11 is not 1 any more.
...
return;
}
After following the disassembly file and looking into the register, I find that the register xmm11 which is used to keep the constant value in my function is changed in the ipp function. So after returning from the ipp fucntion, the value in xmm11 is changed to something odd. And I cannot get the correct result.
According to http://msdn.microsoft.com/en-us/library/9z1stfyw.aspx, the registers XMM6 to XMM15 should be nonvolatile. So is that mean the ipp function should save the registers value before use it and restore it on return? Is it possible a bug in ipp? Does anybody can help me?
Thanks very much.
P.S.
Here attached the disassembly contents I get from my debugger for your reference.
I encountered a problem while developing on VS2008 64bit win7 using ipp library (version 7.0.4). Could anybody help me?
I have some floating calculations in my function. Between them there is an ipp function invoked and the result of the calculation after the ipp function is wrong. My fuction is something like this:
void my_func()
{
double i = 1; // according to the disassembly file, register xmm11 was used to save the constant value 1.
...
double d1 = 0.0;
ippiConvValid_32f_C1R(...); // invoke ipp function. inside of which ymm11 was changed but not resotred.
double d2 = 1 - d1; // d2 supposed to be 1.0, but not. It reads value from xmm11 to do the calculation, but xmm11 is not 1 any more.
...
return;
}
After following the disassembly file and looking into the register, I find that the register xmm11 which is used to keep the constant value in my function is changed in the ipp function. So after returning from the ipp fucntion, the value in xmm11 is changed to something odd. And I cannot get the correct result.
According to http://msdn.microsoft.com/en-us/library/9z1stfyw.aspx, the registers XMM6 to XMM15 should be nonvolatile. So is that mean the ipp function should save the registers value before use it and restore it on return? Is it possible a bug in ipp? Does anybody can help me?
Thanks very much.
P.S.
Here attached the disassembly contents I get from my debugger for your reference.
Link Copied
2 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Does anyone can help me with this issue? Or where is a proper place to ask these questions?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
thank you for reporting this issue - will be fixed in IPP7.0.6 (release date ww49 2011, so will be available for customers somewhere before NewYear)
regards,
Igor
regards,
Igor

Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page