NO

Author Topic: [FIXED] Can't find include file <mmintrin.h>  (Read 5910 times)

iZzz32

  • Guest
[FIXED] Can't find include file <mmintrin.h>
« on: April 23, 2012, 03:20:09 PM »
Code: [Select]
#include <intrin.h>
Quote from: (Pelles ISO C Compiler, Version 7.00.5 from Pelles C 7.00 RC2)
pocc -c -Ot intrin.c
C:\Programs\PellesC7\Include\xmmintrin.h(10): fatal error #1035: Can't find include file <mmintrin.h>.


Shouldn’t it be mmintr.h?
« Last Edit: June 22, 2012, 02:25:05 PM by iZzz32 »

Offline Bitbeisser

  • Global Moderator
  • Member
  • *****
  • Posts: 772
Re: Can't find include file <mmintrin.h>
« Reply #1 on: April 23, 2012, 05:23:55 PM »
Code: [Select]
#include <intrin.h>
Quote from: (Pelles ISO C Compiler, Version 7.00.5 from Pelles C 7.00 RC2)
pocc -c -Ot intrin.c
C:\Programs\PellesC7\Include\xmmintrin.h(10): fatal error #1035: Can't find include file <mmintrin.h>.


Shouldn’t it be mmintr.h?
Why?

The problem is rather that the compiler seems to strip a character from a nested #include in intrin.h:
Code: [Select]
#ifndef _INTRIN_H
#define _INTRIN_H

/* intrin.h - private header for compiler intrinsic functions */

#if __POCC__ >= 500
#pragma once
#endif

#if __POCC__ >= 700
#include <immintrin.h>
#elif __POCC__ >= 650
#include <wmmintrin.h>
#else /* __POCC__ < 650 */
#include <xmmintr.h>
#endif /* __POCC__ < 650 */
It should include immintrin.h but it somehow it seems as if it strips the leading "i" of the filename (8 character space filename bug somewhere?)...

The file "immintrin.h" exists in the include directory btw, so it must be something more subtle. Just tried to follow the chain of #includes in intrin.h and at the 8th level (in xmmintrin.h) it tries to include mmintrin.h, which does not exist.

 ???

Ralf

iZzz32

  • Guest
Re: Can't find include file <mmintrin.h>
« Reply #2 on: April 23, 2012, 05:57:18 PM »
Quote from: Bitbeisser
Just tried to follow the chain of #includes in intrin.h and at the 8th level (in xmmintrin.h) it tries to include mmintrin.h, which does not exist.

Yes. And there is mmintr.h, which exists, documented in manual but doesn't get included with intrin.h or its descendants:

Quote from: pocc -c -V1 intrin.c

intrin.c
  C:\Programs\PellesC7\Include\intrin.h
    C:\Programs\PellesC7\Include\immintrin.h
      C:\Programs\PellesC7\Include\wmmintrin.h
        C:\Programs\PellesC7\Include\nmmintrin.h
          C:\Programs\PellesC7\Include\smmintrin.h
            C:\Programs\PellesC7\Include\tmmintrin.h
              C:\Programs\PellesC7\Include\pmmintrin.h
                C:\Programs\PellesC7\Include\emmintrin.h
                  C:\Programs\PellesC7\Include\xmmintrin.h
C:\Programs\PellesC7\Include\xmmintrin.h(10): fatal error #1035: Can't find include file <mmintrin.h>
« Last Edit: April 23, 2012, 06:04:55 PM by iZzz32 »

Offline Pelle

  • Administrator
  • Member
  • *****
  • Posts: 2266
    • http://www.smorgasbordet.com
Re: Can't find include file <mmintrin.h>
« Reply #3 on: May 15, 2012, 06:41:09 PM »
MMX is old and unsupported. It was really the 64-bit version that introduced proper intrinsics (and header file names) at which point SSE was choosen as the minimum version to support...
/Pelle