Wednesday, 2023-07-19

*** ghostmansd[m] <ghostmansd[m]!~ghostmans@> has joined #libre-soc04:37
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@> has quit IRC06:36
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@> has joined #libre-soc06:37
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@> has quit IRC06:57
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@> has joined #libre-soc06:58
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@> has quit IRC07:02
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@> has joined #libre-soc07:03
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@> has quit IRC07:41
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@> has joined #libre-soc10:14
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@> has quit IRC10:48
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@> has joined #libre-soc10:48
markos_programmerjake, lkcl I fixed maddsubrs for the failing test cases, it passes all tests now, I actually added a special case for XLEN != 64 as when I tried to incorporate the changes in the common case it would break other cases14:43
markos_let me know if it's ok with you so we can close this, otherwise I will look into it further14:44
markos_I also incorporated similar code in the maddrs as well14:45
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@> has quit IRC14:47
*** ghostmansd[m] <ghostmansd[m]!~ghostmans@> has joined #libre-soc14:52
programmerjakeyay! i'll review the code soon...17:12
markos_programmerjake, lkcl, reg the amount, I think we should increase the total amount, the effort was certainly more than I originally anticipated17:35
markos_the test cases are not incorrect mind you, the amounts were calculated first in C and duplicated on Arm17:36
markos_I did try using the else case for XLEN=64 but the unit tests failed17:37
programmerjakedid you use 128-bit ints to calculate the intermediate results? if not, you likely overflowed at some point17:38
markos_well, I just tried now17:40
markos_removed the special XLEN=64 and just used the new code for XLEN=6417:40
programmerjake^ when calculating the values for the unit tests17:40
markos_"got ffffffffffffe43e  expected ffffffffffff643e"17:41
markos_looks suspiciously close17:41
markos_could be17:41
markos_some of the values I added later17:42
markos_could be this is one of them17:42
markos_turns out this is the only failure17:47
markos_all the rest pass17:47
programmerjakewell, just checked with bigint arithmetic, 0xffffffffffff643e looks correct...17:49
programmerjakeused python hex((((RT-RA)*RB+0x2000)>>14)+2**64)17:50
markos_let me revert it then17:50
programmerjakewell, imho it means the else block has some cases where it's buggy that need fixing, not that you actually need the XLEN=64 block17:51
markos_right, sigh17:52
programmerjakeyou could probably reproduce that error with XLEN=3217:53
programmerjakethx for being persistent!17:54
*** lxo <lxo!~lxo@gateway/tor-sasl/lxo> has quit IRC17:59
*** lxo <lxo!~lxo@gateway/tor-sasl/lxo> has joined #libre-soc18:00
markos_I should thank you for the same18:08
markos_I know I reacted in the beginning, but I have to admit you were right in insisting18:08
markos_the original implementation was incomplete and we would fall in the same trap as the neon instructions18:09
markos_ie requiring multiple implementations of the same code for various ranges of values18:09

Generated by 2.17.1 by Marius Gedminas - find it at!