Actions
Defect #756
closed64bit memory access fails (amd64)
Status:
Closed
Priority:
Normal
Category:
AMD64 Back-End
Target version:
-
% Done:
100%
Description
The following code fails:
data.asm:
.const ryu_pow5 .align 8 .obyte 0xC428D05AA4751E4D ; e = -189, k = -54 .obyte 0xF53304714D9265E0 ; e = -187, k = -53 .obyte 0x993FE2C6D07B7FAC ; e = -184, k = -52 .obyte 0xBF8FDB78849A5F97 ; e = -182, k = -51 .obyte 0xEF73D256A5C0F77D ; e = -180, k = -50 .obyte 0x95A8637627989AAE ; e = -177, k = -49 .obyte 0xBB127C53B17EC15A ; e = -175, k = -48 .obyte 0xE9D71B689DDE71B0 ; e = -173, k = -47 .obyte 0x9226712162AB070E ; e = -170, k = -46 .obyte 0xB6B00D69BB55C8D2 ; e = -168, k = -45 .obyte 0xE45C10C42A2B3B06 ; e = -166, k = -44 .obyte 0x8EB98A7A9A5B04E4 ; e = -163, k = -43 .obyte 0xB267ED1940F1C61D ; e = -161, k = -42 .obyte 0xDF01E85F912E37A4 ; e = -159, k = -41 .obyte 0x8B61313BBABCE2C7 ; e = -156, k = -40 .obyte 0xAE397D8AA96C1B78 ; e = -154, k = -39 .obyte 0xD9C7DCED53C72256 ; e = -152, k = -38 .obyte 0x881CEA14545C7576 ; e = -149, k = -37 .obyte 0xAA242499697392D3 ; e = -147, k = -36 .obyte 0xD4AD2DBFC3D07788 ; e = -145, k = -35 .obyte 0x84EC3C97DA624AB5 ; e = -142, k = -34 .obyte 0xA6274BBDD0FADD62 ; e = -140, k = -33 .obyte 0xCFB11EAD453994BB ; e = -138, k = -32 .obyte 0x81CEB32C4B43FCF5 ; e = -135, k = -31 .obyte 0xA2425FF75E14FC32 ; e = -133, k = -30 .obyte 0xCAD2F7F5359A3B3F ; e = -131, k = -29 .obyte 0xFD87B5F28300CA0E ; e = -129, k = -28 .obyte 0x9E74D1B791E07E49 ; e = -126, k = -27 .obyte 0xC612062576589DDB ; e = -124, k = -26 .obyte 0xF79687AED3EEC552 ; e = -122, k = -25 .obyte 0x9ABE14CD44753B53 ; e = -119, k = -24 .obyte 0xC16D9A0095928A28 ; e = -117, k = -23 .obyte 0xF1C90080BAF72CB2 ; e = -115, k = -22 .obyte 0x971DA05074DA7BEF ; e = -112, k = -21 .obyte 0xBCE5086492111AEB ; e = -110, k = -20 .obyte 0xEC1E4A7DB69561A6 ; e = -108, k = -19 .obyte 0x9392EE8E921D5D08 ; e = -105, k = -18 .obyte 0xB877AA3236A4B44A ; e = -103, k = -17 .obyte 0xE69594BEC44DE15C ; e = -101, k = -16 .obyte 0x901D7CF73AB0ACDA ; e = -98, k = -15 .obyte 0xB424DC35095CD810 ; e = -96, k = -14 .obyte 0xE12E13424BB40E14 ; e = -94, k = -13 .obyte 0x8CBCCC096F5088CC ; e = -91, k = -12 .obyte 0xAFEBFF0BCB24AAFF ; e = -89, k = -11 .obyte 0xDBE6FECEBDEDD5BF ; e = -87, k = -10 .obyte 0x89705F4136B4A598 ; e = -84, k = -9 .obyte 0xABCC77118461CEFD ; e = -82, k = -8 .obyte 0xD6BF94D5E57A42BD ; e = -80, k = -7 .obyte 0x8637BD05AF6C69B6 ; e = -77, k = -6 .obyte 0xA7C5AC471B478424 ; e = -75, k = -5 .obyte 0xD1B71758E219652C ; e = -73, k = -4 .obyte 0x83126E978D4FDF3C ; e = -70, k = -3 .obyte 0xA3D70A3D70A3D70B ; e = -68, k = -2 .obyte 0xCCCCCCCCCCCCCCCD ; e = -66, k = -1 .obyte 0x8000000000000000 ; e = -63, k = 0 .obyte 0xA000000000000000 ; e = -61, k = 1 .obyte 0xC800000000000000 ; e = -59, k = 2 .obyte 0xFA00000000000000 ; e = -57, k = 3 .obyte 0x9C40000000000000 ; e = -54, k = 4 .obyte 0xC350000000000000 ; e = -52, k = 5 .obyte 0xF424000000000000 ; e = -50, k = 6 .obyte 0x9896800000000000 ; e = -47, k = 7 .obyte 0xBEBC200000000000 ; e = -45, k = 8 .obyte 0xEE6B280000000000 ; e = -43, k = 9 .obyte 0x9502F90000000000 ; e = -40, k = 10 .obyte 0xBA43B74000000000 ; e = -38, k = 11 .obyte 0xE8D4A51000000000 ; e = -36, k = 12 .obyte 0x9184E72A00000000 ; e = -33, k = 13 .obyte 0xB5E620F480000000 ; e = -31, k = 14 .obyte 0xE35FA931A0000000 ; e = -29, k = 15 .obyte 0x8E1BC9BF04000000 ; e = -26, k = 16 .obyte 0xB1A2BC2EC5000000 ; e = -24, k = 17 .obyte 0xDE0B6B3A76400000 ; e = -22, k = 18 .obyte 0x8AC7230489E80000 ; e = -19, k = 19 .obyte 0xAD78EBC5AC620000 ; e = -17, k = 20 .obyte 0xD8D726B7177A8000 ; e = -15, k = 21 .obyte 0x878678326EAC9000 ; e = -12, k = 22 .obyte 0xA968163F0A57B400 ; e = -10, k = 23 .obyte 0xD3C21BCECCEDA100 ; e = -8, k = 24 .obyte 0x84595161401484A0 ; e = -5, k = 25 .obyte 0xA56FA5B99019A5C8 ; e = -3, k = 26 .obyte 0xCECB8F27F4200F3A ; e = -1, k = 27 .obyte 0x813F3978F8940984 ; e = 2, k = 28 .obyte 0xA18F07D736B90BE5 ; e = 4, k = 29 .obyte 0xC9F2C9CD04674EDE ; e = 6, k = 30 .obyte 0xFC6F7C4045812296 ; e = 8, k = 31 .obyte 0x9DC5ADA82B70B59D ; e = 11, k = 32 .obyte 0xC5371912364CE305 ; e = 13, k = 33 .obyte 0xF684DF56C3E01BC6 ; e = 15, k = 34 .obyte 0x9A130B963A6C115C ; e = 18, k = 35 .obyte 0xC097CE7BC90715B3 ; e = 20, k = 36 .obyte 0xF0BDC21ABB48DB20 ; e = 22, k = 37 .obyte 0x96769950B50D88F4 ; e = 25, k = 38 .obyte 0xBC143FA4E250EB31 ; e = 27, k = 39 .obyte 0xEB194F8E1AE525FD ; e = 29, k = 40 .obyte 0x92EFD1B8D0CF37BE ; e = 32, k = 41 .obyte 0xB7ABC627050305AD ; e = 34, k = 42 .obyte 0xE596B7B0C643C719 ; e = 36, k = 43 .obyte 0x8F7E32CE7BEA5C6F ; e = 39, k = 44 .obyte 0xB35DBF821AE4F38B ; e = 41, k = 45 .obyte 0xE0352F62A19E306E ; e = 43, k = 46 .obyte 0x8C213D9DA502DE45 ; e = 46, k = 47
Ryu.mod:
MODULE Ryu;
IMPORT SYSTEM;
CONST
MaxDecExp = 47;
MinDecExp = -54;
VAR ^ RYUPow5 ["ryu_pow5"]: ARRAY 1 OF SYSTEM.BYTE;
PROCEDURE ComputePow5Single(k : SIGNED32): UNSIGNED64;
VAR
i : LENGTH;
ret : UNSIGNED64;
BEGIN
ASSERT(k >= MinDecExp);
ASSERT(k <= MaxDecExp);
i := LENGTH(k - MinDecExp) * SIZE(UNSIGNED64);
SYSTEM.GET(SYSTEM.ADR(RYUPow5[0]) + i, ret);
RETURN ret
END ComputePow5Single;
PROCEDURE TestComputePow5;
BEGIN
TRACE(ComputePow5Single(-54));
TRACE(ComputePow5Single(0));
TRACE(ComputePow5Single(47));
END TestComputePow5;
BEGIN
TestComputePow5;
END Ryu.
Expected output:
14134776518227074637 9223372036854775808 10097419586828951109
However the code fails with:
./Ryu Ryu.mod:116:28: note: 'ComputePow5Single (-54)' = make: *** [Makefile:32: run] Illegal instruction (core dumped)
Changing the type of ret to UNSIGNED32 the code runs.
Files
Updated by Florian Negele 28 days ago
- File unsigned.patch unsigned.patch added
- Status changed from New to Closed
- % Done changed from 0 to 100
Thank you very much for reporting. Please apply the attached patch and sorry for the inconveniences.
Actions