I set up the Intel STM compiler on WindowsXP inside the VS2005 IDE, and got the first demo to build by selecting the 'OpenMP support' and de-selecting the 'C++ Exceptions' (/EHsc). I also added /Qtm_enabled to the additional options box from the command line section.
The second example didn't work like that, complaining about a missing semi-colon at line 290, and so I gave up on it. To be honest, those macros at the start of example #2 look absolutely mental.
Anyway, what I'd like to say is, "Please tell us what's going on here". I know it's early release, and the animated cars are inspiring, but tell me more about STM. (I've been reading it over for months.) Do the atomic (__tm_atomic) sections differ semantically, from say an OpenMP critical section? I'd love to see a second animated graphic, to shed some light on a few of the high-level implementation details (and of course more written material).
More practically, in the first example I replaced both x->TxnAddOne() and y->TxnAddOne() with xx = xx + 1; The thing is, although it still returns 'passed', I'm not convinced that I may not have just got lucky. What I'm saying now is, must I use both the __tm_atomic section and a __declspec(tm_callable) method, or is the __tm_atomic section enough on its own?