none
VS2008编译器编译SSE代码结果错误 RRS feed

  • 问题

  • 利用VS2008自带的编译器编译运行SSE代码时,在DEBUG模式下结果正确,在release下结果错误(能运行,但是计算结果不对),
    在VS2012和VS2015下无论是DEBUG模式还是RELEASE模式下结果均正确;在VS2008利用INTEL编译器在release下结果正确;
    请问VS2008的编译器在release下是否对SSE代码的支持存在问题?
    2019年2月27日 2:55

全部回复

  • Hi,

    根据你的描述,这个问题更偏向C++开发,由于我们论坛主要是讨论VS的日常使用问题,我将帮你移到合适的论坛,这样你可以得到更好的帮助。


    MSDN Community Support Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com

    2019年2月27日 6:27
  • 你好,

    感谢您在MSDN论坛发帖提问。

    >>请问VS2008的编译器在release下是否对SSE代码的支持存在问题?

    导致release与debug运行结果不一致的原因有很多,你可以参考以下链接,检查是否是代码存在问题:https://blog.csdn.net/sptoor/article/details/7538875

    因为VS2008不能完全兼容C99中的数据类型。VS2012及以上则好很多我建议最好能够直接使用Intel的编译器或者VS2012及以上的编译器编译。

    Best wishes,

    Jeanine Zhang

    2019年2月27日 8:55
    版主
  • 是这样,同样的程序我分别在VS2008/2012/2015下跑过,只有VS2008的release下结果错误,并且在利用printf调试时结果每次都不同。目前有VS2008的需求,所以不知道怎么办好了。
    2019年2月27日 10:48
  • 你好:

    在VS2008中,通过intrinsic可以使用SSE指令集。所谓的Instrinsic是编译器支持的一些头文件,在其中将汇编形式的指令集封装为C语言形式,增强了可读性,可维护性.SSE使用的是C99规范,VS2008不能完全兼容C99中的数据类型,所以会出现错误。我能给出的最好的建议还是使用Intel的编译器或者VS2012及以上的编译器编译。

    请问您还有其他什么问题吗?如果有,请随时与我们联系。您的理解与合作将不胜感激。

    Best wishes,

    Jeanine Zhang

    2019年3月5日 7:29
    版主
  • 你好:

    谢谢您的回复,还想问一下sse中具体有哪些部分是VS2008不支持的,我在开发过程中只用到了__m128i这一种数据类型,并没有用到特别复杂的数据类型,因为一些原因,我这里目前不能够用高版本或者intel的编译器。

    期待您的解答!

    2019年4月28日 6:00