Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • tests/array-container/array-md-sbscr-cases.cfa

    r938885d3 rb9dae14c  
    2727}
    2828
    29 // Work around a compiler optimization that can lead to false failures.
    30 // Think of `valExpected` as a constant local to each test function.
    31 // When implemented that way, an optimization, run on some hardware, makes
    32 // its value be off-by-a-little, compared with the values that have been
    33 // stored-loaded (in the array under test).  This effect has been observed
    34 // on x86-32 with -O3.  Declaring it as below forces the expected value
    35 // to be stored-loaded too, which keeps the (admittedly lazily done)
    36 // `assert(f1 == f2)` checks passing, when the intended <w,x,y,z> location
    37 // is recovered, which is the point of all these tests.
    38 volatile float valExpected = 0.0;
    39 
    4029// Tests all the ways to split dimensions into CFA-supported chunks, by the only order that C supports: coarsest to finest stride.
    4130forall( [Nw], [Nx], [Ny], [Nz] )
     
    4736    ptrdiff_t iw = 2, ix = 3, iy=4, iz=5;
    4837
    49     valExpected = getMagicNumber(iw, ix, iy, iz);
    50     float valGot = wxyz[iw][ix][iy][iz];
    51     assert( valGot == valExpected );
     38    const float valExpected = getMagicNumber(iw, ix, iy, iz);
     39    assert( wxyz[iw][ix][iy][iz] == valExpected );
    5240
    5341    // order wxyz, natural split (4-0 or 0-4, no intermediate to declare)
     
    9886    ptrdiff_t iw = 2, ix = 3, iy=4, iz=5;
    9987
    100     valExpected = getMagicNumber(iw, ix, iy, iz);
     88    const float valExpected = getMagicNumber(iw, ix, iy, iz);
    10189    assert( wxyz[iw][ix][iy][iz] == valExpected );
    10290
     
    120108
    121109    // order wxzy: wx*z, y
    122   #if 0
    123     // not working on 32-bit
     110
    124111    assert(( wxyz[[iw  , ix  , all , iz  ]][iy  ] == valExpected ));
    125112    assert(( wxyz[[iw  , ix  , all , iz-1]][iy  ] != valExpected ));
    126113    assert(( wxyz[[iw  , ix  , all , iz  ]][iy-1] != valExpected ));
    127   #endif
    128114}
    129115
     
    141127    ptrdiff_t iw = 2, ix = 3, iy=4, iz=5;
    142128
    143     valExpected = getMagicNumber(iw, ix, iy, iz);
     129    const float valExpected = getMagicNumber(iw, ix, iy, iz);
    144130    assert( wxyz[iw][ix][iy][iz] == valExpected );
    145131
     
    237223    fillHelloData(wxyz);
    238224
    239     valExpected = getMagicNumber(2, 3, 4, 5);
     225    const float valExpected = getMagicNumber(2, 3, 4, 5);
    240226    assert(( wxyz [2] [3] [4] [5]  == valExpected ));
    241227    assert(( wxyz[[2,  3]][4] [5]  == valExpected ));
Note: See TracChangeset for help on using the changeset viewer.