Previous Up Next

Part II
Mixed tests

Arguably, simple tests are a bit too simplistic. We now create more challenging input for offence.

We start from the same set of tests produced by diy, from configuration files X.conf for x86 and PPC.conf for Power. We then build new tests by mixing two of the initial tests as follows: we first ramdomly permute the threads of one of the argument tests, convert its registers and memory locations to fresh ones and randomly interleave its code with the code of the other test, thread by thread. We do so with a dedicated tool, mixer, which is part of offence distribution. We then proceeds as for simple tests (see Part I), changing the condition of tests to check all SC outcomes, and running offence in various modes.

X86

For x86 we mixed tests i and test i+1 of the batch of tests produced by diy, resulting in the initial batch of tests X that contains for instance X049+X050, which is a mix of simple tests X049 and X050. For this test the F version (with fences) is X049+X050-F, the A version (with xchg) is X049+X050-A, and the L version (with locks) is X049+X050-L.

We run all tests on our two x86 machines saumur and chianti The following tables expose the conclusion of the experiment: offence restores SC for all (mixed) tests.

 C.XS.X
X000+X000No, 744M/7.2GNo, 17M/1.8G
X000+X001No, 353M/4.5GNo, 34M/900M
X001+X002No, 1.1G/4.5GNo, 103M/900M
X002+X003No, 891M/4.5GNo, 79M/900M
X003+X004No, 594M/3.6GNo, 74M/900M
X004+X005No, 1.1G/3.6GNo, 149M/900M
X005+X006No, 325M/3.6GNo, 50M/900M
X006+X007No, 372M/3.6GNo, 39M/900M
X007+X008No, 581M/3.6GNo, 77M/900M
X008+X009No, 372M/3.6GNo, 105M/900M
X009+X010No, 95M/4.5GNo, 16M/900M
X010+X011No, 852M/4.5GNo, 85M/900M
X011+X012No, 563M/4.5GNo, 68M/900M
X012+X013No, 290M/3.6GNo, 64M/900M
X013+X014No, 433M/3.6GNo, 45M/900M
X014+X015No, 357M/3.6GNo, 52M/900M
X015+X016No, 717M/4.5GNo, 97M/900M
X016+X017No, 558M/3.6GNo, 88M/900M
X017+X018No, 168M/3.6GNo, 37M/900M
X018+X019No, 348M/3.6GNo, 83M/900M
X019+X020No, 527M/3.6GNo, 69M/900M
X020+X021No, 78M/3.6GNo, 13M/900M
X021+X022No, 112M/3.6GNo, 17M/900M
X022+X023No, 44M/3.6GNo, 14M/900M
X023+X024No, 249M/3.6GNo, 37M/900M
X024+X025No, 204M/4.5GNo, 45M/900M
X025+X026No, 254M/3.6GNo, 38M/900M
X026+X027No, 252M/3.6GNo, 71M/900M
X027+X028No, 306M/3.6GNo, 77M/900M
X028+X029No, 185M/3.6GNo, 23M/900M
X029+X030No, 95M/3.6GNo, 19M/900M
X030+X031No, 323M/3.6GNo, 95M/900M
X031+X032No, 304M/4.5GNo, 42M/900M
X032+X033No, 157M/4.5GNo, 24M/900M
X033+X034No, 394M/4.5GNo, 67M/900M
X034+X035No, 132M/4.5GNo, 39M/900M
X035+X036No, 132M/3.6GNo, 38M/900M
X036+X037No, 616M/3.6GNo, 120M/900M
X037+X038No, 176M/3.6GNo, 49M/900M
X038+X039No, 130M/3.6GNo, 32M/900M
X039+X040No, 385M/3.6GNo, 71M/900M
X040+X041No, 30M/3.6GNo, 7.3M/900M
X041+X042No, 34M/4.5GNo, 3.6M/900M
X042+X043No, 36M/3.6GNo, 6.4M/800M
X043+X044No, 644M/3.6GNo, 99M/800M
X044+X045No, 270M/3.6GNo, 56M/800M
X045+X046No, 36M/3.6GNo, 4.9M/800M
X046+X047No, 259M/3.6GNo, 20M/800M
X047+X048No, 509M/3.6GNo, 127M/800M
X048+X049No, 171M/4.5GNo, 23M/800M
X049+X050No, 69M/3.6GNo, 10M/800M
X050+X051No, 196M/3.6GNo, 37M/800M
X051+X052No, 188M/3.6GNo, 49M/800M
X052+X053No, 41M/3.6GNo, 7.7M/800M
X053+X054No, 165M/3.6GNo, 39M/800M
X054+X055No, 267M/3.6GNo, 59M/800M
X055+X056No, 166M/3.6GNo, 46M/800M
X056+X057No, 4.3M/3.6GNo, 267k/800M
    
 C.XS.X
X000+X000-FOkOk
X000+X001-FOkOk
X001+X002-FOkOk
X002+X003-FOkOk
X003+X004-FOkOk
X004+X005-FOkOk
X005+X006-FOkOk
X006+X007-FOkOk
X007+X008-FOkOk
X008+X009-FOkOk
X009+X010-FOkOk
X010+X011-FOkOk
X011+X012-FOkOk
X012+X013-FOkOk
X013+X014-FOkOk
X014+X015-FOkOk
X015+X016-FOkOk
X016+X017-FOkOk
X017+X018-FOkOk
X018+X019-FOkOk
X019+X020-FOkOk
X020+X021-FOkOk
X021+X022-FOkOk
X022+X023-FOkOk
X023+X024-FOkOk
X024+X025-FOkOk
X025+X026-FOkOk
X026+X027-FOkOk
X027+X028-FOkOk
X028+X029-FOkOk
X029+X030-FOkOk
X030+X031-FOkOk
X031+X032-FOkOk
X032+X033-FOkOk
X033+X034-FOkOk
X034+X035-FOkOk
X035+X036-FOkOk
X036+X037-FOkOk
X037+X038-FOkOk
X038+X039-FOkOk
X039+X040-FOkOk
X040+X041-FOkOk
X041+X042-FOkOk
X042+X043-FOkOk
X043+X044-FOkOk
X044+X045-FOkOk
X045+X046-FOkOk
X046+X047-FOkOk
X047+X048-FOkOk
X048+X049-FOkOk
X049+X050-FOkOk
X050+X051-FOkOk
X051+X052-FOkOk
X052+X053-FOkOk
X053+X054-FOkOk
X054+X055-FOkOk
X055+X056-FOkOk
X056+X057-FOkOk
    
 C.XS.X
X000+X000-AOkOk
X000+X001-AOkOk
X001+X002-AOkOk
X002+X003-AOkOk
X003+X004-AOkOk
X004+X005-AOkOk
X005+X006-AOkOk
X006+X007-AOkOk
X007+X008-AOkOk
X008+X009-AOkOk
X009+X010-AOkOk
X010+X011-AOkOk
X011+X012-AOkOk
X012+X013-AOkOk
X013+X014-AOkOk
X014+X015-AOkOk
X015+X016-AOkOk
X016+X017-AOkOk
X017+X018-AOkOk
X018+X019-AOkOk
X019+X020-AOkOk
X020+X021-AOkOk
X021+X022-AOkOk
X022+X023-AOkOk
X023+X024-AOkOk
X024+X025-AOkOk
X025+X026-AOkOk
X026+X027-AOkOk
X027+X028-AOkOk
X028+X029-AOkOk
X029+X030-AOkOk
X030+X031-AOkOk
X031+X032-AOkOk
X032+X033-AOkOk
X033+X034-AOkOk
X034+X035-AOkOk
X035+X036-AOkOk
X036+X037-AOkOk
X037+X038-AOkOk
X038+X039-AOkOk
X039+X040-AOkOk
X040+X041-AOkOk
X041+X042-AOkOk
X042+X043-AOkOk
X043+X044-AOkOk
X044+X045-AOkOk
X045+X046-AOkOk
X046+X047-AOkOk
X047+X048-AOkOk
X048+X049-AOkOk
X049+X050-AOkOk
X050+X051-AOkOk
X051+X052-AOkOk
X052+X053-AOkOk
X053+X054-AOkOk
X054+X055-AOkOk
X055+X056-AOkOk
X056+X057-AOkOk
    
 C.XS.X
X000+X000-LOkOk
X000+X001-LOkOk
X001+X002-LOkOk
X002+X003-LOkOk
X003+X004-LOkOk
X004+X005-LOkOk
X005+X006-LOkOk
X006+X007-LOkOk
X007+X008-LOkOk
X008+X009-LOkOk
X009+X010-LOkOk
X010+X011-LOkOk
X011+X012-LOkOk
X012+X013-LOkOk
X013+X014-LOkOk
X014+X015-LOkOk
X015+X016-LOkOk
X016+X017-LOkOk
X017+X018-LOkOk
X018+X019-LOkOk
X019+X020-LOkOk
X020+X021-LOkOk
X021+X022-LOkOk
X022+X023-LOkOk
X023+X024-LOkOk
X024+X025-LOkOk
X025+X026-LOkOk
X026+X027-LOkOk
X027+X028-LOkOk
X028+X029-LOkOk
X029+X030-LOkOk
X030+X031-LOkOk
X031+X032-LOkOk
X032+X033-LOkOk
X033+X034-LOkOk
X034+X035-LOkOk
X035+X036-LOkOk
X036+X037-LOkOk
X037+X038-LOkOk
X038+X039-LOkOk
X039+X040-LOkOk
X040+X041-LOkOk
X041+X042-LOkOk
X042+X043-LOkOk
X043+X044-LOkOk
X044+X045-LOkOk
X045+X046-LOkOk
X046+X047-LOkOk
X047+X048-LOkOk
X048+X049-LOkOk
X049+X050-LOkOk
X050+X051-LOkOk
X051+X052-LOkOk
X052+X053-LOkOk
X053+X054-LOkOk
X054+X055-LOkOk
X055+X056-LOkOk
X056+X057-LOkOk

Power

For power, we mixed one test of the the batch of tests produced by diy with itself, resulting in the initial batch of tests X that contains for instance the test PPC149, a self-mix of the homonymous simple test PPC149. For this test the F version (with fences) is PPC149-F, the A version (with STA/FNO) is PPC149-A, the B version (with FNO’s and fences) is PPC149-B, and the L version (with locks) is PPC149-L.

Incidentally, the effect of the optimised fence placement algorithm is visible on most tests. For instance on PPC008-F, in which code there are 1 lwsync and 3 sync, against 7 sync for the test PPC008-N produced by using naive fence insertion (offence -fencing naive).

We run the tests on our Power machines, abducens, vargas, power7. As for simple tests, the table are huge and located in a separate page. The experience succeeds: the cells of the last four tables all contain “Ok”.

Complete sources and logs: for x86 X86-MIXED (archive) and Power PPC-MIXED (archive).


Previous Up Next