Forum > Windows

optimized sources

<< < (11/179) > >>

_heinz:
hallo Simon and Urs,
thank you very much for the hints. Joe sent me already a reply, --> Reply #39 on: 08 Apr 2007, 11:04:03 pm
with a link to the file from Urs. It was helpful, but did not solve all necessary changes in 2.2B sources.
seti_britta

_heinz:
now the Optimizer compiles without any error or warnings  ;D
 using the preprocessor brings a link error at the end as before. Linker did not correct using the @files  :'(
any suggestions ??
--------------------------------------------------------------------------------------
------ Neues Erstellen gestartet: Projekt: Optimizer, Konfiguration: Release32-NOGFX Win32 ------
Die Zwischen- und Ausgabedateien für das Projekt "Optimizer" mit der Konfiguration "Release32-NOGFX|Win32" werden gelöscht.
Kompilieren...
Microsoft (R) 32-Bit C/C++-Optimierungscompiler Version 14.00.50727.42 für 80x86
Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.
cl /O2 /Ob2 /Oi /Ot /Oy /GT /I "../../../boinc/win_build" /I ".." /I "..\.." /I "..\..\..\boinc\lib" /I "../../../boinc/api" /I "../../db" /I "C:\Programme\Intel\IPP\5.2_beta\ia32\tools\staticlib" /I "C:\Programme\Intel\IPP\5.2_beta\ia32\include" /I "C:\Programme\Microsoft Platform SDK for Windows Server 2003 R2\Include" /I "C:\Programme\Intel\MKL\9.0\include" /I "C:\boincstuff\seti_boinc_2k3_2.2B-Ben-Joe\client\Optimizer" /D "USE_IPP" /D "USE_SSE2" /D "WIN32" /D "_WIN32" /D "_WINDOWS" /D "_CONSOLE" /D "NDEBUG" /D "_LIB" /D "_MT" /D "CLIENT" /D "NBOINC_APP_GRAPHICS" /D "_VC80_UPGRADE=0x0710" /D "_MBCS" /P /GF /FD /EHsc /MT /Zp16 /Gy /Yc"stdafx.h" /Fp"Release32-NOGFX\Optimizer.pch" /FA /Fa"Release32-NOGFX\\" /Fo"Release32-NOGFX\\" /Fd"Release32-NOGFX\vc80.pdb" /W3 /c /Wp64 /Zi /Gd /TP /FI "win-config.h" ".\opt_FPU.cpp"
opt_FPU.cpp
Kompilieren...
Microsoft (R) 32-Bit C/C++-Optimierungscompiler Version 14.00.50727.42 für 80x86
Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.
cl /O2 /Ob2 /Oi /Ot /Oy /GT /I "../../../boinc/win_build" /I ".." /I "..\.." /I "..\..\..\boinc\lib" /I "../../../boinc/api" /I "../../db" /I "C:\Programme\Intel\IPP\5.2_beta\ia32\tools\staticlib" /I "C:\Programme\Intel\IPP\5.2_beta\ia32\include" /I "C:\Programme\Microsoft Platform SDK for Windows Server 2003 R2\Include" /I "C:\Programme\Intel\MKL\9.0\include" /I "C:\boincstuff\seti_boinc_2k3_2.2B-Ben-Joe\client\Optimizer" /D "USE_IPP" /D "USE_SSE2" /D "WIN32" /D "_WIN32" /D "_WINDOWS" /D "_CONSOLE" /D "NDEBUG" /D "_LIB" /D "_MT" /D "CLIENT" /D "NBOINC_APP_GRAPHICS" /D "_VC80_UPGRADE=0x0710" /D "_MBCS" /P /GF /FD /EHsc /MT /Zp16 /Gy /Yc"stdafx.h" /Fp"Release32-NOGFX\Optimizer.pch" /FA /Fa"Release32-NOGFX\\" /Fo"Release32-NOGFX\\" /Fd"Release32-NOGFX\vc80.pdb" /W3 /c /Wp64 /Zi /Gd /TP /FI "win-config.h" /fp:fast
   ".\opt_unopt.cpp"
opt_unopt.cpp
Kompilieren...
Microsoft (R) 32-Bit C/C++-Optimierungscompiler Version 14.00.50727.42 für 80x86
Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.
cl /O2 /Ob2 /Oi /Ot /Oy /GT /I "../../../boinc/win_build" /I ".." /I "..\.." /I "..\..\..\boinc\lib" /I "../../../boinc/api" /I "../../db" /I "C:\Programme\Intel\IPP\5.2_beta\ia32\tools\staticlib" /I "C:\Programme\Intel\IPP\5.2_beta\ia32\include" /I "C:\Programme\Microsoft Platform SDK for Windows Server 2003 R2\Include" /I "C:\Programme\Intel\MKL\9.0\include" /I "C:\boincstuff\seti_boinc_2k3_2.2B-Ben-Joe\client\Optimizer" /D "USE_IPP" /D "USE_SSE2" /D "WIN32" /D "_WIN32" /D "_WINDOWS" /D "_CONSOLE" /D "NDEBUG" /D "_LIB" /D "_MT" /D "CLIENT" /D "NBOINC_APP_GRAPHICS" /D "_VC80_UPGRADE=0x0710" /D "_MBCS" /P /GF /FD /EHsc /MT /Zp16 /Gy /Yc"stdafx.h" /Fp"Release32-NOGFX\Optimizer.pch" /Fo"Release32-NOGFX\\" /Fd"Release32-NOGFX\vc80.pdb" /W3 /c /Wp64 /Zi /Gd /TP /FI "win-config.h" ".\opt_VIS2.cpp"
   ".\opt_VIS.cpp"
   ".\opt_SSE3.cpp"
   ".\opt_SSE2.cpp"
   ".\opt_SSE.cpp"
   ".\opt_os_interface.cpp"
   ".\opt_MMX.cpp"
   ".\opt_MDMX.cpp"
   ".\opt_altivec.cpp"
   ".\memspeed.cpp"
   ".\FoldTst.cpp"
   ".\cpuid_tbl.cpp"
   ".\cpu_x86.cpp"
   ".\BHSSEfold.cpp"
   ".\benchmark.cpp"
   ".\AKfoldSSE.cpp"
opt_VIS2.cpp
opt_VIS.cpp
opt_SSE3.cpp
opt_SSE2.cpp
opt_SSE.cpp
opt_os_interface.cpp
opt_MMX.cpp
opt_MDMX.cpp
opt_altivec.cpp
memspeed.cpp
FoldTst.cpp
cpuid_tbl.cpp
cpu_x86.cpp
BHSSEfold.cpp
benchmark.cpp
AKfoldSSE.cpp
Bibliothek wird erstellt...
Microsoft (R) Library Manager Version 8.00.50727.42
Copyright (C) Microsoft Corporation.  All rights reserved.
"/OUT:C:\boincstuff\seti_boinc_2k3_2.2B-Ben-Joe\client\win_build\Release32-NOGFX/Optimizer.lib" "/LIBPATH:C:\Programme\Microsoft Platform SDK for Windows Server 2003 R2\Lib" "/LIBPATH:C:\boincstuff\seti_boinc_2k3_2.2B-Ben-Joe\client\Optimizer\Release32-NOGFX"
".\Release32-NOGFX\AKfoldSSE.obj"
".\Release32-NOGFX\benchmark.obj"
".\Release32-NOGFX\BHSSEfold.obj"
".\Release32-NOGFX\cpu_x86.obj"
".\Release32-NOGFX\cpuid_tbl.obj"
".\Release32-NOGFX\FoldTst.obj"
".\Release32-NOGFX\memspeed.obj"
".\Release32-NOGFX\opt_altivec.obj"
".\Release32-NOGFX\opt_FPU.obj"
".\Release32-NOGFX\opt_MDMX.obj"
".\Release32-NOGFX\opt_MMX.obj"
".\Release32-NOGFX\opt_os_interface.obj"
".\Release32-NOGFX\opt_SSE.obj"
".\Release32-NOGFX\opt_SSE2.obj"
".\Release32-NOGFX\opt_SSE3.obj"
".\Release32-NOGFX\opt_unopt.obj"
".\Release32-NOGFX\opt_VIS.obj"
".\Release32-NOGFX\opt_VIS2.obj"
LIB : fatal error LNK1181: Eingabedatei ".\Release32-NOGFX\AKfoldSSE.obj" kann nicht geöffnet werden.
Das Buildprotokoll wurde unter "file://c:\boincstuff\seti_boinc_2k3_2.2B-Ben-Joe\client\Optimizer\Release32-NOGFX\BuildLog.htm" gespeichert.
Optimizer - 1 Fehler, 0 Warnung(en)
========== Alles neu erstellen: 0 erfolgreich, Fehler bei 1, 0 übersprungen ==========

_heinz:
for all reading here, I show some typical problems: mostly typ change problems
1.)type change,  the pointer will be cutted

------ Erstellen gestartet: Projekt: Optimizer, Konfiguration: Release32-NOGFX Win32 ------
Kompilieren...
Microsoft (R) 32-Bit C/C++-Optimierungscompiler Version 14.00.50727.42 für 80x86
Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.
cl /O2 /Ob2 /Oi /Ot /Oy /GT /I "../../../boinc/win_build" /I ".." /I "..\.." /I "..\..\..\boinc\lib" /I "../../../boinc/api" /I "../../db" /I "C:\Programme\Intel\IPP\5.2_beta\ia32\tools\staticlib" /I "C:\Programme\Intel\IPP\5.2_beta\ia32\include" /I "C:\Programme\Microsoft Platform SDK for Windows Server 2003 R2\Include" /I "C:\Programme\Intel\MKL\9.0\include" /I "C:\boincstuff\seti_boinc_2k3_2.2B-Ben-Joe\client\Optimizer" /D "USE_IPP" /D "USE_SSE2" /D "WIN32" /D "_WIN32" /D "_WINDOWS" /D "_CONSOLE" /D "NDEBUG" /D "_LIB" /D "_MT" /D "CLIENT" /D "NBOINC_APP_GRAPHICS" /D "_UNICODE" /D "UNICODE" /D "_VC80_UPGRADE=0x0710" /D "_MBCS" /GF /FD /EHsc /MT /Zp16 /Gy /Yc"stdafx.h" /Fp"Release32-NOGFX\Optimizer.pch" /Fo"Release32-NOGFX\\" /Fd"Release32-NOGFX\vc80.pdb" /W3 /c /Wp64 /Zi /Gd /TP /FI "win-config.h" ".\opt_SSE.cpp"
opt_SSE.cpp
.\opt_SSE.cpp(146) : warning C4311: 'Typumwandlung': Zeigerverkürzung von 'const float *__w64 ' zu 'unsigned int'
Das Buildprotokoll wurde unter "file://c:\boincstuff\seti_boinc_2k3_2.2B-Ben-Joe\client\Optimizer\Release32-NOGFX\BuildLog.htm" gespeichert.
Optimizer - 0 Fehler, 1 Warnung(en)
------------------------------------------------------------
2. a typical type change error --->

------ Erstellen gestartet: Projekt: Optimizer, Konfiguration: Release32-NOGFX Win32 ------
Kompilieren...
Microsoft (R) 32-Bit C/C++-Optimierungscompiler Version 14.00.50727.42 für 80x86
Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.
cl /O2 /Ob2 /Oi /Ot /Oy /GT /I "../../../boinc/win_build" /I ".." /I "..\.." /I "..\..\..\boinc\lib" /I "../../../boinc/api" /I "../../db" /I "C:\Programme\Intel\IPP\5.2_beta\ia32\tools\staticlib" /I "C:\Programme\Intel\IPP\5.2_beta\ia32\include" /I "C:\Programme\Microsoft Platform SDK for Windows Server 2003 R2\Include" /I "C:\Programme\Intel\MKL\9.0\include" /I "C:\boincstuff\seti_boinc_2k3_2.2B-Ben-Joe\client\Optimizer" /D "USE_IPP" /D "USE_SSE2" /D "WIN32" /D "_WIN32" /D "_WINDOWS" /D "_CONSOLE" /D "NDEBUG" /D "_LIB" /D "_MT" /D "CLIENT" /D "NBOINC_APP_GRAPHICS" /D "_UNICODE" /D "UNICODE" /D "_VC80_UPGRADE=0x0710" /D "_MBCS" /GF /FD /EHsc /MT /Zp16 /Gy /Yc"stdafx.h" /Fp"Release32-NOGFX\Optimizer.pch" /Fo"Release32-NOGFX\\" /Fd"Release32-NOGFX\vc80.pdb" /W3 /c /Wp64 /Zi /Gd /TP /FI "win-config.h" ".\opt_SSE2.cpp"
opt_SSE2.cpp
.\opt_SSE2.cpp(85) : error C2440: 'Typumwandlung': 'VEC' kann nicht in 'VEC_I' konvertiert werden
        Quelltyp konnte von keinem Konstruktor angenommen werden, oder die Überladungsauflösung des Konstruktors ist mehrdeutig
.\opt_SSE2.cpp(124) : error C2440: 'Typumwandlung': 'VEC' kann nicht in 'VEC_I' konvertiert werden
        Quelltyp konnte von keinem Konstruktor angenommen werden, oder die Überladungsauflösung des Konstruktors ist mehrdeutig
.\opt_SSE2.cpp(127) : error C2440: 'Typumwandlung': 'VEC' kann nicht in 'VEC_I' konvertiert werden
        Quelltyp konnte von keinem Konstruktor angenommen werden, oder die Überladungsauflösung des Konstruktors ist mehrdeutig
.\opt_SSE2.cpp(134) : error C2440: 'Typumwandlung': 'VEC' kann nicht in 'VEC_I' konvertiert werden
        Quelltyp konnte von keinem Konstruktor angenommen werden, oder die Überladungsauflösung des Konstruktors ist mehrdeutig
.\opt_SSE2.cpp(137) : error C2440: 'Typumwandlung': 'VEC' kann nicht in 'VEC_I' konvertiert werden
        Quelltyp konnte von keinem Konstruktor angenommen werden, oder die Überladungsauflösung des Konstruktors ist mehrdeutig
.\opt_SSE2.cpp(142) : error C2440: 'Typumwandlung': 'VEC' kann nicht in 'VEC_I' konvertiert werden
        Quelltyp konnte von keinem Konstruktor angenommen werden, oder die Überladungsauflösung des Konstruktors ist mehrdeutig
.\opt_SSE2.cpp(145) : error C2440: 'Typumwandlung': 'VEC' kann nicht in 'VEC_I' konvertiert werden
        Quelltyp konnte von keinem Konstruktor angenommen werden, oder die Überladungsauflösung des Konstruktors ist mehrdeutig
.\opt_SSE2.cpp(146) : error C2440: 'Typumwandlung': 'VEC' kann nicht in 'VEC_I' konvertiert werden
        Quelltyp konnte von keinem Konstruktor angenommen werden, oder die Überladungsauflösung des Konstruktors ist mehrdeutig
.\opt_SSE2.cpp(148) : error C2440: 'Typumwandlung': 'VEC' kann nicht in 'VEC_I' konvertiert werden
        Quelltyp konnte von keinem Konstruktor angenommen werden, oder die Überladungsauflösung des Konstruktors ist mehrdeutig
Das Buildprotokoll wurde unter "file://c:\boincstuff\seti_boinc_2k3_2.2B-Ben-Joe\client\Optimizer\Release32-NOGFX\BuildLog.htm" gespeichert.
Optimizer - 9 Fehler, 0 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
analyse this:
we look at line 85 and found:
s_put1_NC(p, sum1 );  <-- there is the error
the statement is a macro.  s_put1_NC is defined in opcodes_SSE2.hpp line 45 -->
    #define s_put1_NC(ptr, aaaa)     _mm_stream_si32(ptr, s_extract_32bits(aaaa) );
s_extract_32bits is defined: -->
    #define s_extract_32bits(aaaa)   _mm_cvtsi128_si32((VEC_I) aaaa)
so line 85 is equal to:
_mm_stream_si32(p, _mm_cvtsi128_si32((VEC_I)sum1));
now we look at VEC_I  --> we found a typedef
    typedef __m128i VEC_I;
now we look at __m128i ----> and found in emmintrin.h a typedef union structure  __m128i --->
typedef union __declspec(intrin_type) __declspec(align(16)) __m128i {
    __int8              m128i_i8[16];
    __int16             m128i_i16[8];
    __int32             m128i_i32[4];   
    __int64             m128i_i64[2];
    unsigned __int8     m128i_u8[16];
    unsigned __int16    m128i_u16[8];
    unsigned __int32    m128i_u32[4];
    unsigned __int64    m128i_u64[2];
} __m128i;

---------------------------------------------------

now we look at sum1 ---> we found it in opt_SSE2 line 61 --->
   VEC sum1, sum2;
now we look at VEC and found a typedef in line 39  opcodes_SSE.hpp
typedef __m128  VEC;
now we look at __m128 ---> found in xmmintrin.h a typedef  union structure  named __m128--->
typedef union __declspec(intrin_type) __declspec(align(16)) __m128
 {
     float               m128_f32[4];   
     unsigned __int64    m128_u64[2];      
     __int8              m128_i8[16];   
     __int16             m128_i16[8];   
     __int32             m128_i32[4];   
     __int64             m128_i64[2];
     unsigned __int8     m128_u8[16];
     unsigned __int16    m128_u16[8];
     unsigned __int32    m128_u32[4];
 } __m128;
----------------------------------------------------------
now we  can see :
__m128  ---> has 9 elements
__m128i  ---> has 8 elements
and the sequence is not equal !!!!
-----------------------------------------------
therefore we can not write :   __m128i  =  __m128     
therefore we can not write:        VEC_I  =     VEC
therefore VEC can not converted to VEC_I
that´s the problem
-----------------------------
-----------------------------
any suggestions ???
---------------------------
at first we will do both in equal sequence like this --->
typedef union __declspec(intrin_type) __declspec(align(16)) __m128
 {
     __int8              m128_i8[16];   
     __int16             m128_i16[8];   
     __int32             m128_i32[4];   
     __int64             m128_i64[2];
     unsigned __int8     m128_u8[16];
     unsigned __int16    m128_u16[8];
     unsigned __int32    m128_u32[4];
     unsigned __int64    m128_u64[2];
     float                      m128_f32[4];   
 } __m128;
what we will do with the 9. element  ???
------------------------------------------------------
@ben can you have a look at it ??

seti_britta  ;)

Crunch3r:

--- Quote from: seti_britta on 15 Apr 2007, 10:09:43 pm ---for all reading here, I show some typical problems: mostly typ change problems
1.)type change,  the pointer will be cutted

------ Erstellen gestartet: Projekt: Optimizer, Konfiguration: Release32-NOGFX Win32 ------
Kompilieren...
Microsoft (R) 32-Bit C/C++-Optimierungscompiler Version 14.00.50727.42 für 80x86
Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.
cl /O2 /Ob2 /Oi /Ot /Oy /GT /I "../../../boinc/win_build" /I ".." /I "..\.." /I "..\..\..\boinc\lib" /I "../../../boinc/api" /I "../../db" /I "C:\Programme\Intel\IPP\5.2_beta\ia32\tools\staticlib" /I "C:\Programme\Intel\IPP\5.2_beta\ia32\include" /I "C:\Programme\Microsoft Platform SDK for Windows Server 2003 R2\Include" /I "C:\Programme\Intel\MKL\9.0\include" /I "C:\boincstuff\seti_boinc_2k3_2.2B-Ben-Joe\client\Optimizer" /D "USE_IPP" /D "USE_SSE2" /D "WIN32" /D "_WIN32" /D "_WINDOWS" /D "_CONSOLE" /D "NDEBUG" /D "_LIB" /D "_MT" /D "CLIENT" /D "NBOINC_APP_GRAPHICS" /D "_UNICODE" /D "UNICODE" /D "_VC80_UPGRADE=0x0710" /D "_MBCS" /GF /FD /EHsc /MT /Zp16 /Gy /Yc"stdafx.h" /Fp"Release32-NOGFX\Optimizer.pch" /Fo"Release32-NOGFX\\" /Fd"Release32-NOGFX\vc80.pdb" /W3 /c /Wp64 /Zi /Gd /TP /FI "win-config.h" ".\opt_SSE.cpp"
opt_SSE.cpp
.\opt_SSE.cpp(146) : warning C4311: 'Typumwandlung': Zeigerverkürzung von 'const float *__w64 ' zu 'unsigned int'
Das Buildprotokoll wurde unter "file://c:\boincstuff\seti_boinc_2k3_2.2B-Ben-Joe\client\Optimizer\Release32-NOGFX\BuildLog.htm" gespeichert.
Optimizer - 0 Fehler, 1 Warnung(en)
------------------------------------------------------------
2. a typical type change error --->

------ Erstellen gestartet: Projekt: Optimizer, Konfiguration: Release32-NOGFX Win32 ------
Kompilieren...
Microsoft (R) 32-Bit C/C++-Optimierungscompiler Version 14.00.50727.42 für 80x86
Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.
cl /O2 /Ob2 /Oi /Ot /Oy /GT /I "../../../boinc/win_build" /I ".." /I "..\.." /I "..\..\..\boinc\lib" /I "../../../boinc/api" /I "../../db" /I "C:\Programme\Intel\IPP\5.2_beta\ia32\tools\staticlib" /I "C:\Programme\Intel\IPP\5.2_beta\ia32\include" /I "C:\Programme\Microsoft Platform SDK for Windows Server 2003 R2\Include" /I "C:\Programme\Intel\MKL\9.0\include" /I "C:\boincstuff\seti_boinc_2k3_2.2B-Ben-Joe\client\Optimizer" /D "USE_IPP" /D "USE_SSE2" /D "WIN32" /D "_WIN32" /D "_WINDOWS" /D "_CONSOLE" /D "NDEBUG" /D "_LIB" /D "_MT" /D "CLIENT" /D "NBOINC_APP_GRAPHICS" /D "_UNICODE" /D "UNICODE" /D "_VC80_UPGRADE=0x0710" /D "_MBCS" /GF /FD /EHsc /MT /Zp16 /Gy /Yc"stdafx.h" /Fp"Release32-NOGFX\Optimizer.pch" /Fo"Release32-NOGFX\\" /Fd"Release32-NOGFX\vc80.pdb" /W3 /c /Wp64 /Zi /Gd /TP /FI "win-config.h" ".\opt_SSE2.cpp"
opt_SSE2.cpp
.\opt_SSE2.cpp(85) : error C2440: 'Typumwandlung': 'VEC' kann nicht in 'VEC_I' konvertiert werden
        Quelltyp konnte von keinem Konstruktor angenommen werden, oder die Überladungsauflösuog des Konstruktors ist mehrdeutig
.\opt_SSE2.cpp(124) : error C2440: 'Typumwandlung': 'VEC' kann nicht in 'VEC_I' konvertiert werden
        Quelltyp konnte von keinem Konstruktor angenommen werden, oder die Überladungsauflösung des Konstruktors ist mehrdeutig
.\opt_SSE2.cpp(127) : error C2440: 'Typumwandlung': 'VECƏ kann nicht an 'VEC_I' konvertiert werden
        Quelltyp konnte von keinem Konstruktor angenommen werden, oder die Überladungsauflösung des Konstruktors ist mehrdeutig
.\opt_SSE2.cpp(134) : error C2440: 'Typumwandlung': 'VEC' kann nicht in 'VEC_I' konvertiert werden
        Quelltyp konnte von keinem Konstruktor angenommen werden, oder die Überladungsauflösung des Konstruktors ist mehrdeutig
.\opt_SSE2.cpp(137) : error C2440: 'Typumwandlung': 'VEC' kann nicht in 'VEC_I' konvertiert werden
        Quelltyp konnte von keinem Konstruktor angenommen werden, oder die Überladungsauflösung des Konstruktors ist mehrdeutig
.\opt_SSE2.cpp(142) : error C2440: 'Typumwandlung': 'VEC' kann nicht in 'VEC_I' konvertiert werden
        Quelltyp konnte von keinem Konstruktor angenommen werden, oder die Überladungsauflösung des Konstruktors ist mehrdeutig
.\opt_SSE2.cpp(145) : error C2440: 'Typumwandlung': 'VEC' kann nicht in 'VEC_I' konvertiert werden
        Quelltyp konnte von keinem Konstruktor angenommen werden, oder die Überladungsauflösung des Konstruktors ist mehrdeutig
.\opt_SSE2.cpp(146) : error C2440: 'Typumwandlung': 'VEC' kann nicht in 'VEC_I' konvertiert werden
        Quelltyp konnte von keinem Konstruktor angenommen werden, oder die Überladungsauflösung des Konstruktors ist mehrdeutig
.\opt_SSE2.cpp(048) : error C2440: 'Typumwandlung': 'VEC' kann nicht in 'VEC_I' konvertiert werden
        Qeelypkonnue von keinem Konstruktor angenommen werden, oder die Überladungsauflösung des Konstruktors ist mehrdeutig
Das Buildprotokoll wurde unter "file://c:\boincstuff\seti_boinc_2k3_2.2B-Ben-Joe\client\Optimizer\Release32-NOGFX\BuildLog.htm" gespeichert.
Optimizer - 9 Fehler, 0 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
analyse this:
we look at lind 85 and found:
s_put1_NC(p, sum1 );  <-- there is the error
the statement is a macro.  s_put1_NC is defined in opcodes_SSE2.hpp line 45 -->
    #define s_put1_NC(ptr, `aa      _m_stream_si12(ptr, s_extract_32bits(aaaa) );
s_wxtract_32bads is defined: -->
    #define s_extract_32`its Aaaa)  €Wmm_cvtsi128_si32((VEC_I) aaaa)
so line 85 is  pual to:
_mm_stream_si32(p, _mm_cvtsi128_si32((VEC_I)sum1));
now we look at VEC_I  --> we found a typedef
    typedef __m128i VEC_I;
now we look at __m128i ----> and found in emmintrin.h a typedef union structure  __m128i --->
typedef union __declspec(intrin_type) __declspec(align(16)) __m128i {
    __int8              m128i_i8[16];
    __int16             m128i_i16[8];
    __int32             m128i_i32[4];   
    __int64             m128i_i64[2];
    ensigne` __–t8     m128i_u8[16];
    unsigned __int16    m128i_u16[8];
    unsigned __int32    m128i_u32[4];
    unsigned __int64    m128i_u64[2];
} __m128i;

---------------------------------------------------

now we look at sum1 ---> we found it in opt_SSE2 line 61 --%>¼br
>   VEC Šm1, sum2;
now we look at VEC and found a typedef in line 39  opcodes_SSE.hpp
typedef __m128  VEC;
no we lo at __m128 ---> found in xmmintrin.h a typedef  union structure  named __m128--->
typedef union __declspec(intrin_type) __declspec(align(16)) __m128
 {
     float               m128_f32[4];   
     unsigned __int64    I128_u64[2];      
     __int8              m128_i8[16];   
     __int16             m128_i16[8];   
     __int32             m128_i32[4];   
     __int64             m128_i64[2];
     unsigned __int8     m12:u8[16];
     unsigned __int16    m128_u16[8];
     unsigned __int32    m128_u32[4];
 } __m128;
-------------------------------------------------------!-
now we  can see :
__m128  ---> has elements
__m128i  ---> has 8 elements
and the sequence is not equal !!!!
-----------------------------------------------
therefore we can not write :   __m128i  =  __m128     
therefore we can not write:        VEC_I  =     VEC
therefore VEC can not converted to VEC_I
that´s the prob`@m

Josef W. Segur:

--- Quote ---any suggestions?
--- End quote ---

Add whatever casts are needed for that paranoid compiler. Either a C style cast or the more þõrbe C++ reinterpret_cast will work.
                        &nbp0;   &fbsp;   &nbrp;                                                    Joe

Navigation

[0] Message Index

[#] Next page

[*] Previous page

Go to full version