diff options
Diffstat (limited to 'gas/testsuite/gas/hppa/basic/branch.s')
-rw-r--r-- | gas/testsuite/gas/hppa/basic/branch.s | 227 |
1 files changed, 227 insertions, 0 deletions
diff --git a/gas/testsuite/gas/hppa/basic/branch.s b/gas/testsuite/gas/hppa/basic/branch.s new file mode 100644 index 00000000000..a1f839dd684 --- /dev/null +++ b/gas/testsuite/gas/hppa/basic/branch.s @@ -0,0 +1,227 @@ + .SPACE $PRIVATE$ + .SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=31 + .SUBSPA $BSS$,QUAD=1,ALIGN=8,ACCESS=31,ZERO,SORT=82 + .SPACE $TEXT$ + .SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=44 + .SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY + + .SPACE $TEXT$ + .SUBSPA $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 + |