- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello all,
I have once question if we can use TSX in inter-procedural situation. For example, could we place x_begin in foo_a() and place x_end in foo_b()? Thanks a lot!
foo_a(){ .... x_begin(); .... } foo_b(){ foo_a(); ...... x_end(); }
- Tags:
- Intel® Advanced Vector Extensions (Intel® AVX)
- Intel® Streaming SIMD Extensions
- Parallel Computing
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
It depends on what instructions are used in the transactional region (in particular, what instructions are used to call the functions). Have a look at section "15.3.8.1 Instruction Based Considerations" of SDM (http://www.intel.com/sdm/). In particular, you can see the following instructions may cause an abort:
- Far CALL, Far JMP, Far RET, IRET
- SYSENTER, SYSCALL, SYSEXIT, and SYSRET
It doesn't list the near CALL or RET (i.e. the call that doesn't qualify a segment register), so with normal userspace functions you should be fine. Note however that CALL and RET modify stack, which is added to the transaction working set and may result in abort in its own right.
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page