From 29fabeb12ec90dc0278957441688951f87ed7936 Mon Sep 17 00:00:00 2001 From: Paul Mackerras Date: Tue, 24 Nov 2020 12:00:48 +1100 Subject: [PATCH] tests/misc: Add a test for correct CTR and LR updating by branches This adds a test with a bdnzl followed immediately by a bdnz, to check that CTR and LR both get evaluated and written back correctly in this situation. Signed-off-by: Paul Mackerras --- tests/misc/head.S | 25 +++++++++++++++++++++++++ tests/misc/misc.c | 8 ++++++++ tests/test_misc.bin | Bin 5424 -> 5740 bytes tests/test_misc.console_out | 1 + 4 files changed, 34 insertions(+) diff --git a/tests/misc/head.S b/tests/misc/head.S index b0acb7f..d490a61 100644 --- a/tests/misc/head.S +++ b/tests/misc/head.S @@ -137,3 +137,28 @@ test_mtpvr: mtlr %r0 blr + +/* Test that bdnz and bdnzl update CTR and LR correctly */ + .global test_bdnzl +test_bdnzl: + mflr %r10 + mfcr %r11 + li %r0,0xf8 + mtctr %r0 + lis %r0,0x2000 + mtcr %r0 + addpcis %r9,0 +1: bdnztl 27,3f +2: bdnzt 14,4f +3: nop +4: li %r3,1 + addi %r9,%r9,2b-1b + mflr %r8 + cmpd %r8,%r9 + bne 9f + mfctr %r7 + cmpdi %r7,0xf6 + bne 9f + li %r3,0 +9: mtlr %r10 + blr diff --git a/tests/misc/misc.c b/tests/misc/misc.c index 283ca7f..73745d9 100644 --- a/tests/misc/misc.c +++ b/tests/misc/misc.c @@ -14,6 +14,7 @@ extern long test_addpcis_1(void); extern long test_addpcis_2(void); extern long test_mfpvr(void); extern long test_mtpvr(void); +extern long test_bdnzl(void); // i < 100 void print_test_number(int i) @@ -58,5 +59,12 @@ int main(void) } else puts(PASS); + print_test_number(5); + if (test_bdnzl() != 0) { + fail = 1; + puts(FAIL); + } else + puts(PASS); + return fail; } diff --git a/tests/test_misc.bin b/tests/test_misc.bin index 7e68e1cca7d67ba1d7e134d6bb8dd93a9c3640fe..2264686c06a630733a71d56de90ea1a1f3925baf 100755 GIT binary patch literal 5740 zcmeHLK};M~82)B=3j$D~Llsw`K!rvR9tIZBWWiZL-;sXV`bW)?Op)uWer$;+Gfz3;vE z{ong{llKxp4lsIwq9C!~(WDJ{eZa!hjmCun+nGyk3sdFzd@-5uMiGOQTsfw@ zZO|%rRI+lw?_YEixICg`E;DY-xCW9Lj<1*FI={Wq{rKOgFMYmJbG`pH2e7F#Pn~(^ z+O7Qb{V(!%d7$*K`|LaCRLR|cUat5g>|zDTl;ce<4D=em9b!zz=_YhoI$ABpZELVI z33O)}PZ7B;_b_J7a%{u>11C~Cze(ZzTv1{sKPr&}kpqzfkpqzfkpqzfkpqzfkpqzf zkpqzf|GNWQ>Z^NlN3Wp-qpRD;=x{W|DNHT_wM`iY~Xn6N6cEHPout9sqbvKevI5Kx$oC-zpdkThuk>1 z2g&^)fQj` z?s=dom8Nc>XX7y6L9Qm?UKuqgt^3Vil;G#ree8(s_BZ4wgLjagjkb`xxyLnyt1~}@ zze)agdpdkM)m(U#j?_Lnj9nc)8@`S)+kbx&y|o(jfM@nMoSOuOeD3Be#y{R|sv6|? zAo(c238n6ytmdVLwGV;*R2$!ZS8xmXjUpYKk` zc~|Cq*4|STZw<_z*67LBqr6x}p8*s||XAF%j<$aQZA>w2Ma^H|xf* zYWDfQ`e*!e2F4KQ4i$LL51s(W*#CG!FD5EIh3kig3Le+dU}R-p3&(&HOTzb*5##{9 z)4gM%=kUK{U+V>VD+|scz~V5oExVZM^Qz}^Wi047lEYZSd1i1X5+hz*QcBOZ8#Qr` zAsA;c)lxk(_QU+`Ou^6H`KJXFooOsvos22Qz2rZHZ+DDuXlhSyxG%?V^DJaM#`i~h z>g(Fv&8zCJz~szZZyW3mS}%<>vmLi4CZug+m7=}-G7^rZb+l;cWWSwt@lT~Zws@h* z!g6dy8*EKKZe2Lj3Ty3Fg9U>_ChIzRa~eN_@fFQ&ZpFY_gZ0?{>&u?9{<9C2y2w_F zU^D{EPcGGD`pe delta 785 zcmZ8fOK1~O6g@Mhb_}TvX#-hQeDMR0woVWi8Dq$dg)}x&3T^GSHM$U#Dk?ORFoPl( zL9`tx6eL}wE720rjVq&ByKv)9sCLtcVBJNcdES?qLdjxy_nmvrxo7Uo&*AFHYCw83 zFRdMPZb>uC!L#WT_j2(dq~>QHZN8R~0WkNa)wW`=;%|F%g|LVDVGT|0FLnf}ydG^sSo)vR|iuR(5+wgq% z5x0-HPd#o9EQw6Tvb*^2Jid?kU)wypWOWIyb_q(JAckmsv9)DACy@vX3d<<$b+127 z!v!v|84tU$2QxkF@g8i1upaSd>&}7DNKZ+Nq3k3=52+fasvf$T+TkBsP5!OLc|Eba zcM0uhzfhU^iFJ_Mx8SDuO zs=n@7JV@LdmPNwE4KV+2;@ok+FfYf9 zqGDfYbn02wspXGq-iL9wKg*nj!Bogd0==u8t9pdFk(|H)b2bP4$Jb8-Y6&Q5V%ds) uq(O@|k731>#bEla6k2zG_^`C%XyIriZC