Intel® C++ Compiler
Community support and assistance for creating C++ code that runs on platforms based on Intel® processors.

Does icl 13.0.1.119 support TSX?

Alexander_Alexeev
393 Views

Hello

Intel®Parallel Studio XE 2013 supposes to support TSX accordingly to its release information. But in my case, I don't see that. Maybe it because of misuse of commandline keys or misunderstanding of icl versioing. I don't know what asm compiler exactly is used by icl, but I suppose the one from its distribution.

Experiment was done on 64bit version of Windows with toy assembly routine.

Could someone clarify what is wrong?

c:\all>ver

Microsoft Windows [Version 6.1.7601]

c:\all>icl   /c a.asm
Intel(R) C++ Intel(R) 64 Compiler XE for applications running on Intel(R) 64, Version 13.0.1.119 Build 20121008
Copyright (C) 1985-2012 Intel Corporation.  All rights reserved.

a.asm
 Assembling: a.asm
a.asm(14) : error A2008:syntax error : xbegin

a.asm file text:

_DATA SEGMENT
_DATA ENDS
_TEXT SEGMENT
ALIGN 16
PUBLIC test1
test1 PROC
    xbegin l1
l1:    ret 0
test1 ENDP
_TEXT ENDS
END

0 Kudos
12 Replies
SergeyKostrov
Valued Contributor II
393 Views
Here are a couple of comments: 1. '...to support TSX accordingly to its release information...' Where did you read it? I couldn't find it and what about a link, a quote or more details? 2. Why did you put codes in _TEXT SEGMENT? ... _TEXT SEGMENT ALIGN 16 PUBLIC test1 test1 PROC xbegin l1 l1: ret 0 test1 ENDP _TEXT ENDS ... 3. I just checked Intel C++ Compiler XE 13.0 User and Reference Guides and Intel TSX ( Intel(R) Transactional Synchronization Extensions ) is supported for CPUs with AVX2 instructions. 4. A test-case (1): ... void main( void ) { _asm XBEGIN _asm XEND } ... ...Error: Unknown opcode _XBEGIN in asm instruction ...Error: Unknown opcode _XEND in asm instruction ...Internal error: 0_12174 ... failed. Any comments from Intel software engineers? Thanks in advance. 4. TSX intrinsics are declared in immintrin.h header file and a test-case (2): ... #include "immintrin.h" void main( void ) { _xbegin(); _xend(); } ... was compiled successfully.
0 Kudos
Judith_W_Intel
Employee
393 Views

 

All the icl compiler does is call Microsoft's macro assembler "ml" since it recognizes that the file is an asm file.

So if ml doesn't recognize the extension then icl won't either.

So this works if the MSVC++ 2012 environment (but not in the MSVC++ 2010 or earlier) environment, i.e.:

!% cat a.asm
_DATA SEGMENT
_DATA ENDS
_TEXT SEGMENT
ALIGN 16
PUBLIC test1
test1 PROC
    xbegin l1
l1:    ret 0
test1 ENDP
_TEXT ENDS
END
!% icl -c a.asm
Intel(R) C++ Compiler XE for applications running on IA-32, Version Mainline Bet
a Build x
Built Jul  8 2010 00:43:41 by jward4 on SPTXPW2012 in F:/cmplr/dev_cfe/dev
Copyright (C) 1985-2010 Intel Corporation.  All rights reserved.

a.asm
 Assembling: a.asm
!%

 

Judy

0 Kudos
SergeyKostrov
Valued Contributor II
393 Views
Here are assembler codes for the test-case(2): [ 32-bit platform ] ... _xbegin(); 0110FD3D or eax,0FFFFFFFFh 0110FD40 db c7h 0110FD41 clc 0110FD42 add byte ptr [eax],al 0110FD44 add byte ptr [eax],al 0110FD46 mov dword ptr [ebp-3Ch],eax _xend(); 0110FD49 db 0fh ... [ 64-bit platform ] ... _xbegin(); 000000013F8A529B or eax,0FFFFFFFFh 000000013F8A529E db c7h 000000013F8A529F clc 000000013F8A52A0 add byte ptr [rax],al 000000013F8A52A2 add byte ptr [rax],al 000000013F8A52A4 mov dword ptr [rbp+40h],eax _xend(); 000000013F8A52A7 db 0fh ...
0 Kudos
Alexander_Alexeev
393 Views

Sergey Kostrov wrote:

1. '...to support TSX accordingly to its release information...' Where did you read it? I couldn't find it and what about a link, a quote or more details?

http://software.intel.com/en-us/intel-parallel-studio-xe

Sergey Kostrov wrote:

2. Why did you put codes in _TEXT SEGMENT?

What is wrong with it?

0 Kudos
SergeyKostrov
Valued Contributor II
393 Views
>>...What is wrong with it? There is nothing wrong with the statement and it also could look like: ... _TEXT segment dword public 'CODE' ...
0 Kudos
SergeyKostrov
Valued Contributor II
393 Views
>>>>1. '...to support TSX accordingly to its release information...' Where did you read it? I couldn't find it and what >>>>about a link, a quote or more details? >> >>http://software.intel.com/en-us/intel-parallel-studio-xe I checked all three Pdf documents with Release Notes for Windows, that is Initial Release, Update 1 and Update 2, and I have not found any references to TSX or xbegin.
0 Kudos
SergeyKostrov
Valued Contributor II
393 Views
>>>>1. '...to support TSX accordingly to its release information...' Where did you read it? I couldn't find it and what >>>>about a link, a quote or more details? >> >>software.intel.com/en-us/intel-parallel-studio-xe I checked all three Pdf documents with Release Notes for Windows, that is Initial Release, Update 1 and Update 2, and I have not found any references to TSX or xbegin.
0 Kudos
Alexander_Alexeev
393 Views

Sergey Kostrov wrote:

I checked all three Pdf documents with Release Notes for Windows, that is Initial Release, Update 1 and Update 2, and I have not found any references to TSX or xbegin.

New support includes Intel® Xeon Phi™ coprocessors, Intel® AVX2, TSX and FMA3.

0 Kudos
Brandon_H_Intel
Employee
393 Views

Looks like this was a miss in the release notes for both 12.1 and 13.x. I'll make sure this gets corrected in future 13.1 updates, but it is supported both in 13.0 and the latest 12.1 (2011 update 10, which is 12.1.4 had it).  The 13.0 user's guide has details at http://software.intel.com/sites/products/documentation/doclib/stdxe/2013/composerxe/compiler/cpp-lin/index.htm#GUID-FB2F2539-18F5-4D5A-B814-F29FD0C32326.htm. The high-level summary is that Windows supports both Hardware Lock Elision and Restricted Transactional Memory while Linux only supports RTM.

0 Kudos
SergeyKostrov
Valued Contributor II
393 Views
Brandon, Take a look at Parallel Studio XE 2013 for Windows Release Notes ( Initial, Update 1 and Update 2 ) and there are strange links on a page 2: ... 1.3 System Requirements For an explanation of architecture names, see intel.ly/mXIljK ... and on a page 5: ... 2.2.1 Using a License Server If you have purchased a “floating” license, see intel.ly/oPEdEe for information ... Also, a topic 3 Known Issues is too generic and more information, including a web-link to a list of known and fixed bugs / issues, is needed.
0 Kudos
SergeyKostrov
Valued Contributor II
393 Views
If I enter intel.ly/mXIljK in IE it redirects to software.intel.com/en-us/articles/intel-architecture-platform-terminology Why wouldn't use the 2nd web-link instead of the 1st one?
0 Kudos
SergeyKostrov
Valued Contributor II
393 Views
This is a short follow up. Brandon, Steve Lionel (Intel) is aware about web-links like intel.ly/mXIljK and please contact him for more information ( if you need ). Thanks.
0 Kudos
Reply