.level 1.1 .code .align 4 ; More branching instructions than you ever knew what to do with. ; ; We could/should test some of the corner cases for register and ; immediate fields. We should also check the assorted field ; selectors to make sure they're handled correctly. branch_tests: bl branch_tests,%r2 bl,n branch_tests,%r2 b branch_tests b,n branch_tests gate branch_tests,%r2 gate,n branch_tests,%r2 blr %r4,%r2 blr,n %r4,%r2 blr %r4,%r0 blr,n %r4,%r0 bv %r0(%r2) bv,n %r0(%r2) be 0x1234(%sr1,%r2) be,n 0x1234(%sr1,%r2) ble 0x1234(%sr1,%r2) ble,n 0x1234(%sr1,%r2) movb_tests: movb %r4,%r26,movb_tests movb,= %r4,%r26,movb_tests movb,< %r4,%r26,movb_tests movb,od %r4,%r26,movb_tests movb,tr %r4,%r26,movb_tests movb,<> %r4,%r26,movb_tests movb,>= %r4,%r26,movb_tests movb,ev %r4,%r26,movb_tests movb_nullified_tests: movb,n %r4,%r26,movb_tests movb,=,n %r4,%r26,movb_tests movb,<,n %r4,%r26,movb_tests movb,od,n %r4,%r26,movb_tests movb,tr,n %r4,%r26,movb_tests movb,<>,n %r4,%r26,movb_tests movb,>=,n %r4,%r26,movb_tests movb,ev,n %r4,%r26,movb_tests movib_tests: movib 5,%r26,movib_tests movib,= 5,%r26,movib_tests movib,< 5,%r26,movib_tests movib,od 5,%r26,movib_tests movib,tr 5,%r26,movib_tests movib,<> 5,%r26,movib_tests movib,>= 5,%r26,movib_tests movib,ev 5,%r26,movib_tests movib_nullified_tests: movib,n 5,%r26,movib_tests movib,=,n 5,%r26,movib_tests movib,<,n 5,%r26,movib_tests movib,od,n 5,%r26,movib_tests movib,tr,n 5,%r26,movib_tests movib,<>,n 5,%r26,movib_tests movib,>=,n 5,%r26,movib_tests movib,ev,n 5,%r26,movib_tests comb_tests: comb %r0,%r4,comb_tests comb,= %r0,%r4,comb_tests comb,< %r0,%r4,comb_tests comb,<= %r0,%r4,comb_tests comb,<< %r0,%r4,comb_tests comb,<<= %r0,%r4,comb_tests comb,sv %r0,%r4,comb_tests comb,od %r0,%r4,comb_tests comb,tr %r0,%r4,comb_tests comb,<> %r0,%r4,comb_tests comb,>= %r0,%r4,comb_tests comb,> %r0,%r4,comb_tests comb,>>= %r0,%r4,comb_tests comb,>> %r0,%r4,comb_tests comb,nsv %r0,%r4,comb_tests comb,ev %r0,%r4,comb_tests comb_nullified_tests: comb,n %r0,%r4,comb_tests comb,=,n %r0,%r4,comb_tests comb,<,n %r0,%r4,comb_tests comb,<=,n %r0,%r4,comb_tests comb,<<,n %r0,%r4,comb_tests comb,<<=,n %r0,%r4,comb_tests comb,sv,n %r0,%r4,comb_tests comb,od,n %r0,%r4,comb_tests comb,tr,n %r0,%r4,comb_tests comb,<>,n %r0,%r4,comb_tests comb,>=,n %r0,%r4,comb_tests comb,>,n %r0,%r4,comb_tests comb,>>=,n %r0,%r4,comb_tests comb,>>,n %r0,%r4,comb_tests comb,nsv,n %r0,%r4,comb_tests comb,ev,n %r0,%r4,comb_tests comib_tests: comib 0,%r4,comib_tests comib,< 0,%r4,comib_tests comib,<= 0,%r4,comib_tests comib,<< 0,%r4,comib_tests comib,<<= 0,%r4,comib_tests comib,sv 0,%r4,comib_tests comib,od 0,%r4,comib_tests comib,tr 0,%r4,comib_tests comib,<> 0,%r4,comib_tests comib,>= 0,%r4,comib_tests comib,> 0,%r4,comib_tests comib,>>= 0,%r4,comib_tests comib,>> 0,%r4,comib_tests comib,nsv 0,%r4,comib_tests comib,ev 0,%r4,comb_tests comib_nullified_tests: comib,n 0,%r4,comib_tests comib,=,n 0,%r4,comib_tests comib,<,n 0,%r4,comib_tests comib,<=,n 0,%r4,comib_tests comib,<<,n 0,%r4,comib_tests comib,<<=,n 0,%r4,comib_tests comib,sv,n 0,%r4,comib_tests comib,od,n 0,%r4,comib_tests comib,tr,n 0,%r4,comib_tests comib,<>,n 0,%r4,comib_tests comib,>=,n 0,%r4,comib_tests comib,>,n 0,%r4,comib_tests comib,>>=,n 0,%r4,comib_tests comib,>>,n 0,%r4,comib_tests comib,nsv,n 0,%r4,comib_tests comib,ev,n 0,%r4,comib_tests addb_tests: addb %r1,%r4,addb_tests addb,= %r1,%r4,addb_tests addb,< %r1,%r4,addb_tests addb,<= %r1,%r4,addb_tests addb,nuv %r1,%r4,addb_tests addb,znv %r1,%r4,addb_tests addb,sv %r1,%r4,addb_tests addb,od %r1,%r4,addb_tests addb,tr %r1,%r4,addb_tests addb,<> %r1,%r4,addb_tests addb,>= %r1,%r4,addb_tests addb,> %r1,%r4,addb_tests addb,uv %r1,%r4,addb_tests addb,vnz %r1,%r4,addb_tests addb,nsv %r1,%r4,addb_tests addb,ev %r1,%r4,addb_tests addb_nullified_tests: addb,n %r1,%r4,addb_tests addb,=,n %r1,%r4,addb_tests addb,<,n %r1,%r4,addb_tests addb,<=,n %r1,%r4,addb_tests addb,nuv,n %r1,%r4,addb_tests addb,znv,n %r1,%r4,addb_tests addb,sv,n %r1,%r4,addb_tests addb,od,n %r1,%r4,addb_tests addb,tr,n %r1,%r4,addb_tests addb,<>,n %r1,%r4,addb_tests addb,>=,n %r1,%r4,addb_tests addb,>,n %r1,%r4,addb_tests addb,uv,n %r1,%r4,addb_tests addb,vnz,n %r1,%r4,addb_tests addb,nsv,n %r1,%r4,addb_tests addb,ev,n %r1,%r4,addb_tests addib_tests: addib -1,%r4,addib_tests addib,= -1,%r4,addib_tests addib,< -1,%r4,addib_tests addib,<= -1,%r4,addib_tests addib,nuv -1,%r4,addib_tests addib,znv -1,%r4,addib_tests addib,sv -1,%r4,addib_tests addib,od -1,%r4,addib_tests addib,tr -1,%r4,addib_tests addib,<> -1,%r4,addib_tests addib,>= -1,%r4,addib_tests addib,> -1,%r4,addib_tests addib,uv -1,%r4,addib_tests addib,vnz -1,%r4,addib_tests addib,nsv -1,%r4,addib_tests addib,ev -1,%r4,comb_tests addib_nullified_tests: addib,n -1,%r4,addib_tests addib,=,n -1,%r4,addib_tests addib,<,n -1,%r4,addib_tests addib,<=,n -1,%r4,addib_tests addib,nuv,n -1,%r4,addib_tests addib,znv,n -1,%r4,addib_tests addib,sv,n -1,%r4,addib_tests addib,od,n -1,%r4,addib_tests addib,tr,n -1,%r4,addib_tests addib,<>,n -1,%r4,addib_tests addib,>=,n -1,%r4,addib_tests addib,>,n -1,%r4,addib_tests addib,uv,n -1,%r4,addib_tests addib,vnz,n -1,%r4,addib_tests addib,nsv,n -1,%r4,addib_tests addib,ev,n -1,%r4,addib_tests ; Needs to check lots of stuff (like corner bit cases) bb_tests: bvb,< %r4,bb_tests bvb,>= %r4,bb_tests bvb,<,n %r4,bb_tests bvb,>=,n %r4,bb_tests bb,< %r4,5,bb_tests bb,>= %r4,5,bb_tests bb,<,n %r4,5,bb_tests bb,>=,n %r4,5,bb_tests