EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  <20192020  2021  2022  2023  2024  Index 2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  <20192020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: epics base compilation for ARM Cotex-A53 (ARM64bit)
From: "Johnson, Andrew N. via Core-talk" <[email protected]>
To: "Ha, Kiman" <[email protected]>, EPICS core-talk <[email protected]>
Date: Fri, 26 Jul 2019 20:23:45 +0000
Hi Kiman,

On 7/26/19 2:12 PM, Ha, Kiman wrote:
Please find out attached files. It looks like the base-7.0.2.2 caused the same result.

  

  1. Base-3.16.2 perl epicsCalcTest.t result.
  2. Base-7.0.2.2 compile result
  3. Base-7.0.2.2 perl epicsCalcTest.t result.
Thanks. I think you would probably be fine using either Base version. The test failures you're seeing involve some unusual combinations of mostly bit-wise operators in the CALC _expression_ evaluation engine. The rest of the tests imply the IOC code should run normally, except for some kinds of expressions in CALC records.

- Andrew

For reference, here are just the failing tests from Kiman's epicsCalcTest runs, both 3.16.2 and 7.0.2.2 gave him the same results. For once this might not be a simple _expression_ optimizer issue since the "expected" results look to be correct — they get generated by compiling the _expression_ as C++ code, while the actual result comes from executing the byte-code shown below the values.

Anybody got any ideas, or access to an ARM aarch64 box?

not ok 225 - ~~5
# Expected result is 5, actually got -1
        Integer 5 (0x5)
        BIT_NOT
        BIT_NOT
not ok 511 - 2 | 1 - 3
# Expected result is -2, actually got 2
        Integer 2 (0x2)
        Integer 1 (0x1)
        Integer 3 (0x3)
        SUB
        BIT_OR
not ok 522 - 3 AND -2
# Expected result is 2, actually got 0
        Integer 3 (0x3)
        Integer 2 (0x2)
        UNARY_NEG
        BIT_AND
not ok 578 - 0xaaaaaaaa AND 0xffff0000
# Expected result is 0xaaaa0000 (2863267840), actually got 0x0 (0)
        Integer -1431655766 (0xaaaaaaaa)
        Integer -65536 (0xffff0000)
        BIT_AND
not ok 579 - 0xaaaaaaaa OR 0xffff0000
# Expected result is 0xffffaaaa (4294945450), actually got 0x0 (0)
        Integer -1431655766 (0xaaaaaaaa)
        Integer -65536 (0xffff0000)
        BIT_OR
not ok 580 - 0xaaaaaaaa XOR 0xffff0000
# Expected result is 0x5555aaaa (1431677610), actually got 0x0 (0)
        Integer -1431655766 (0xaaaaaaaa)
        Integer -65536 (0xffff0000)
        BIT_EXCL_OR
not ok 581 - ~0xaaaaaaaa
# Expected result is 0x55555555 (1431655765), actually got 0x0 (0)
        Integer -1431655766 (0xaaaaaaaa)
        BIT_NOT
not ok 582 - ~~0xaaaaaaaa
# Expected result is 0xaaaaaaaa (2863311530), actually got 0x0 (0)
        Integer -1431655766 (0xaaaaaaaa)
        BIT_NOT
        BIT_NOT
not ok 583 - 0xaaaaaaaa >> 8
# Expected result is 0xffaaaaaa (4289374890), actually got 0x0 (0)
        Integer -1431655766 (0xaaaaaaaa)
        Integer 8 (0x8)
        RIGHT_SHIFT
not ok 584 - 0xaaaaaaaa << 8
# Expected result is 0xaaaaaa00 (2863311360), actually got 0x0 (0)
        Integer -1431655766 (0xaaaaaaaa)
        Integer 8 (0x8)
        LEFT_SHIFT
not ok 585 - a:=0xaaaaaaaa; b:=0xffff0000; a AND b
# Expected result is 0xaaaa0000 (2863267840), actually got 0x0 (0)
        Integer -1431655766 (0xaaaaaaaa)
        STORE_A
        Integer -65536 (0xffff0000)
        STORE_B
        FETCH_A
        FETCH_B
        BIT_AND
not ok 586 - a:=0xaaaaaaaa; b:=0xffff0000; a OR b
# Expected result is 0xffffaaaa (4294945450), actually got 0x0 (0)
        Integer -1431655766 (0xaaaaaaaa)
        STORE_A
        Integer -65536 (0xffff0000)
        STORE_B
        FETCH_A
        FETCH_B
        BIT_OR
not ok 587 - a:=0xaaaaaaaa; b:=0xffff0000; a XOR b
# Expected result is 0x5555aaaa (1431677610), actually got 0x0 (0)
        Integer -1431655766 (0xaaaaaaaa)
        STORE_A
        Integer -65536 (0xffff0000)
        STORE_B
        FETCH_A
        FETCH_B
        BIT_EXCL_OR
not ok 588 - a:=0xaaaaaaaa; ~a
# Expected result is 0x55555555 (1431655765), actually got 0x0 (0)
        Integer -1431655766 (0xaaaaaaaa)
        STORE_A
        FETCH_A
        BIT_NOT
not ok 589 - a:=0xaaaaaaaa; ~~a
# Expected result is 0xaaaaaaaa (2863311530), actually got 0x0 (0)
        Integer -1431655766 (0xaaaaaaaa)
        STORE_A
        FETCH_A
        BIT_NOT
        BIT_NOT
not ok 590 - a:=0xaaaaaaaa; a >> 8
# Expected result is 0xffaaaaaa (4289374890), actually got 0x0 (0)
        Integer -1431655766 (0xaaaaaaaa)
        STORE_A
        FETCH_A
        Integer 8 (0x8)
        RIGHT_SHIFT
not ok 591 - a:=0xaaaaaaaa; a << 8
# Expected result is 0xaaaaaa00 (2863311360), actually got 0x0 (0)
        Integer -1431655766 (0xaaaaaaaa)
        STORE_A
        FETCH_A
        Integer 8 (0x8)
        LEFT_SHIFT
not ok 592 - -1431655766.1 OR 0
# Expected result is 0xaaaaaaaa (2863311530), actually got 0x0 (0)
        Double 1.43166e+09
        UNARY_NEG
        Integer 0 (0x0)
        BIT_OR
not ok 593 - 2863311530.1 OR 0
# Expected result is 0xaaaaaaaa (2863311530), actually got 0x0 (0)
        Double 2.86331e+09
        Integer 0 (0x0)
        BIT_OR
not ok 594 - 0 OR -1431655766.1
# Expected result is 0xaaaaaaaa (2863311530), actually got 0x0 (0)
        Integer 0 (0x0)
        Double 1.43166e+09
        UNARY_NEG
        BIT_OR
not ok 595 - 0 OR 2863311530.1
# Expected result is 0xaaaaaaaa (2863311530), actually got 0x0 (0)
        Integer 0 (0x0)
        Double 2.86331e+09
        BIT_OR
not ok 596 - -1431655766.1 XOR 0
# Expected result is 0xaaaaaaaa (2863311530), actually got 0x0 (0)
        Double 1.43166e+09
        UNARY_NEG
        Integer 0 (0x0)
        BIT_EXCL_OR
not ok 597 - 2863311530.1 XOR 0
# Expected result is 0xaaaaaaaa (2863311530), actually got 0x0 (0)
        Double 2.86331e+09
        Integer 0 (0x0)
        BIT_EXCL_OR
not ok 598 - 0 XOR -1431655766.1
# Expected result is 0xaaaaaaaa (2863311530), actually got 0x0 (0)
        Integer 0 (0x0)
        Double 1.43166e+09
        UNARY_NEG
        BIT_EXCL_OR
not ok 599 - 0 XOR 2863311530.1
# Expected result is 0xaaaaaaaa (2863311530), actually got 0x0 (0)
        Integer 0 (0x0)
        Double 2.86331e+09
        BIT_EXCL_OR
not ok 600 - -1431655766.1 AND 0xffffffff
# Expected result is 0xaaaaaaaa (2863311530), actually got 0x0 (0)
        Double 1.43166e+09
        UNARY_NEG
        Integer -1 (0xffffffff)
        BIT_AND
not ok 601 - 2863311530.1 AND 0xffffffff
# Expected result is 0xaaaaaaaa (2863311530), actually got 0x0 (0)
        Double 2.86331e+09
        Integer -1 (0xffffffff)
        BIT_AND
not ok 602 - 0xffffffff AND -1431655766.1
# Expected result is 0xaaaaaaaa (2863311530), actually got 0x0 (0)
        Integer -1 (0xffffffff)
        Double 1.43166e+09
        UNARY_NEG
        BIT_AND
not ok 603 - 0xffffffff AND 2863311530.1
# Expected result is 0xaaaaaaaa (2863311530), actually got 0x0 (0)
        Integer -1 (0xffffffff)
        Double 2.86331e+09
        BIT_AND
not ok 604 - ~ -1431655766.1
# Expected result is 0x55555555 (1431655765), actually got 0x0 (0)
        Double 1.43166e+09
        UNARY_NEG
        BIT_NOT
not ok 606 - -1431655766.1 >> 0
# Expected result is 0xaaaaaaaa (2863311530), actually got 0x0 (0)
        Double 1.43166e+09
        UNARY_NEG
        Integer 0 (0x0)
        RIGHT_SHIFT
not ok 607 - 2863311530.1 >> 0
# Expected result is 0xaaaaaaaa (2863311530), actually got 0x0 (0)
        Double 2.86331e+09
        Integer 0 (0x0)
        RIGHT_SHIFT
not ok 608 - -1431655766.1 >> 0.1
# Expected result is 0xaaaaaaaa (2863311530), actually got 0x0 (0)
        Double 1.43166e+09
        UNARY_NEG
        Double 0.1
        RIGHT_SHIFT
not ok 609 - 2863311530.1 >> 0.1
# Expected result is 0xaaaaaaaa (2863311530), actually got 0x0 (0)
        Double 2.86331e+09
        Double 0.1
        RIGHT_SHIFT
not ok 610 - -1431655766.1 << 0
# Expected result is 0xaaaaaaaa (2863311530), actually got 0x0 (0)
        Double 1.43166e+09
        UNARY_NEG
        Integer 0 (0x0)
        LEFT_SHIFT
not ok 611 - 2863311530.1 << 0
# Expected result is 0xaaaaaaaa (2863311530), actually got 0x0 (0)
        Double 2.86331e+09
        Integer 0 (0x0)
        LEFT_SHIFT
not ok 612 - -1431655766.1 << 0.1
# Expected result is 0xaaaaaaaa (2863311530), actually got 0x0 (0)
        Double 1.43166e+09
        UNARY_NEG
        Double 0.1
        LEFT_SHIFT
not ok 613 - 2863311530.1 << 0.1
# Expected result is 0xaaaaaaaa (2863311530), actually got 0x0 (0)
        Double 2.86331e+09
        Double 0.1
        LEFT_SHIFT


-- 
Complexity comes for free, Simplicity you have to work for.

Navigate by Date:
Prev: normativeTypes module in EPICS 7.0.3 Johnson, Andrew N. via Core-talk
Next: Re: normativeTypes module in EPICS 7.0.3 Bruno Martins via Core-talk
Index: 2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  <20192020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Re: normativeTypes module in EPICS 7.0.3 Johnson, Andrew N. via Core-talk
Next: Build failed: EPICS Base base-R7.0.3-419 AppVeyor via Core-talk
Index: 2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  <20192020  2021  2022  2023  2024 
ANJ, 01 Aug 2019 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·