- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi, one of my developers is asking if there is a 32-bit Intel version of this package? We are only seeing Itanium 32-bit and Intel 64-bit....
-Michael
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Yes, there is a ia32 version of the compiler. If you have a license for the compiler you can download it in the intel registration center (there are 64 bit / 32 bit and combined packages for the compiler (32 bit x86 is the "ia32" version and 64 bit x86_64 is the "intel64" version).
Random aside: I'm guessing you were probably confusing the "ia32" nomenclature for itanium, which could be confusing since Itanium is "IA64", but as far I know there is no such thing as 32 bit itanium and the "ia" label just makes note that it is Intel's instruction set. The non-itanium 64-bit instruction set is EMT64/AMD64 which coms from AMD who stuck to an x86 compatible insturction set while intel diverged toward the itanium.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Casey is correct. We do have the compiler for IA-32. Meaning a compiler to genreate ia32 binary. Please check the "readme.txt" to see detail component info in the package. e.g. see this readme.txt. or you can google for other readme.txt.
The 13.x compiler pkg does not have the compiler for Itanium architecture or IA64 any more.
Jennifer
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
There never was an Itanium 32-bit mode compiler. Intel compilers for Itanium "IA64" are available up through version 11.1. The gyrations Intel marketing went through trying to choose a name for what became "Intel64" didn't help with the goal of differentiating it from the terms "AMD64" X64 and x86_64 which have overlapping usage.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Did Borland ever produce a 64 bit compiler?
To answer your question Sergey, GCC and GCC-like compilers define the __x86_64__ macro if you are building a 64 bit AMD / intel (non-itanium) target.
To demonstrate:[cpp]
1 #include <stdio.h>
2
3 int main()
4 {
5 printf("__x86_64__ is ");
6 #ifndef __x86_64__
7 printf("not ");
8 #endif
9 printf("defined\\n");
10
11 return 0;
12 }
[/cpp]
[bash]
$ gcc -m64 -o test test.c
$ ./test
__x86_64__ is defined
$ gcc -m32 -o test test.c
$ ./test
__x86_64__ is not defined
$ icc -m64 -o test test.c
$ ./test
__x86_64__ is defined
% pgcc -m64 -o test test.c
% ./test
__x86_64__ is defined
$ clang -m64 -o test test.c
$ ./test
__x86_64__ is defined
$ clang -m32 -o test test.c
$ ./test
__x86_64__ is not defined
[/bash]
I don't have the 32 bit intel or pgi compilers installed, but the result would be the same as the 32 bit gcc testcase.
Compilers used: icc 13.1.3 20130607, pgcc 11.9, gcc 4.6.3 and clang 3.3.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The __x86_64 and __x86_64__ macros are equivelent as far as I can tell. You can modify my test case to check for the other version and the results are the same for all compilers I mentioned. The intel headers will use them to include architecture specific code and additionally they are there for your use as well if you have any arch dependant code The _M_(ARCH) style macros are those defined by MSVC and the inclusion of both styles lets any compiler include those intel include files with the proper architecture specific code. You can see more examples of these macros at use in the linux kernel, which handles code for many architectures.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I never claimed the M stood for Microsoft, only that those are the macros that MSVC defines. If you want code portable between MSVC(-like) and gcc(-like) compilers you need to be checking both the MSVC style (_M_(ARCH)) and gcc style (__(ARCH)__) macros.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Sergey Kostrov wrote:
>>...gcc style (__(ARCH)__) macros...
GCC-like macros are not used at all.
Not used by whom? Perhaps not by your example (which I can plainly see) but I was not speaking directly to your sample and instead generally on how handle architecture dependant code in a portable way. Whether it is directly applicable to you isn't important, the message is the generality of the concept so that others stumbling upon this threads off topic divergence can benefit from it.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Sergey,
I think we are having a misunderstanding, lets get on the same page. I never told you to do or change anything in your code or project or otherwise. You initially posed the question as to the purpose of the __x86_64 macro, which I provided an answer and some details on. You keep countering my answer with your own project code, but that does not change the answer. Whether you use the gcc style macros or not (and I do not care whether you do or not), does not change thier purpose.
For reference, the question I was addressing is:
>> what is exact meaning / goal of so confusing __x86_64 macro?
And to re-iterate the answer: It is to allow the portable compile-time inclusion of intel64/AMD64 specific code on GCC and GCC-like compilers. (Includes but is not limited to GCC, Intel, Portland Group and LLVM compilers, as demonstrated by example)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Yes, my devloper ran the ia32 compiler (on our intel arch) and it worked for him. So, I'm satisfied. Thanks
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Sergey Kostrov wrote:
>>...__x86_64
It is the most illogical macro in GCC-world I've ever seen. A developer who created the macro __x86_64 doesn't understand that x86 stands for a 32-bit platform and 64-part stands for a 64-bit platform. He "fused" these two parts ( abbreviations ) together in one macro by unknown reason.
Actually, x86 refers to an instruction set that spans decades worth of chips and contains instruction ranging between 16 and 512 bits (SIMD). The 8086, 80186 and 80286 chips are 16 bit, the 80386 and 486 are 32 bit and all of them use the x86 instruction set. The _64 moniker is a natural nomenclature to refer to the 64bit extensions to the x86 family (which are backward compatible with one another). It is also the most neutral branding because your only real other options anymore are AMD64 and intel64 (both of which are 64bit additions to the x86 instruction set). I don't know that it was a single person who coined x86_64 and I don't know whether that person works under the GNU banner or some chip company.
Whether or not you take philisophical issue with the standardized macro, you at least know it exists should you ever find yourself developing on a UNIX or Linux platform powered by Intel or AMD chips and have a need for it.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The designation x86_64 goes back at least to the collaboration between AMD and SuSE http://www.amd.com/us/press-releases/Pages/Press_Release_751.aspx when the Athlon64 CPUs were about to be introduced.
One would think someone could "retrieve" the original SuSE specification publication to add as a reference in the wikipedia article. It was more than a historical reference; for example, it had useful specifications on alignments which didn't get implemented properly for several years.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

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