.text .global start ! Starting point start: ! test all ASRs rd %asr0, %l0 rd %asr1, %l0 rd %asr15, %l0 rd %asr17, %l0 rd %asr18, %l0 rd %asr19, %l0 ! should stop the processor rd %asr20, %l0 rd %asr21, %l0 rd %asr22, %l0 wr %l0, 0, %asr0 wr %l0, 0, %asr1 wr %l0, 0, %asr15 wr %l0, 0, %asr17 wr %l0, 0, %asr18 wr %l0, 0, %asr19 wr %l0, 0, %asr20 wr %l0, 0, %asr21 wr %l0, 0, %asr22 ! test UMUL with no overflow inside Y test_umul: umul %g1, %g2, %g3 ! test UMUL with an overflow inside Y umul %g1, %g2, %g3 ! %g3 must be equal to 0 ! test SMUL with negative result test_smul: smul %g1, %g2, %g3 ! test SMUL with positive result smul %g1, %g2, %g3 ! test STBAR: there are two possible syntaxes test_stbar: stbar ! is a valid V8 syntax, at least a synthetic ! instruction rd %asr15, %g0 ! other solution ! test UNIMP unimp 1 ! test FLUSH flush %l1 ! is the official V8 syntax ! test SCAN: find first 0 test_scan: scan %l1, 0xffffffff, %l3 ! test scan: find first 1 scan %l1, 0, %l3 ! test scan: find first bit != bit-0 scan %l1, %l1, %l3 ! test SHUFFLE test_shuffle: shuffle %l0, 0x1, %l1 shuffle %l0, 0x2, %l1 shuffle %l0, 0x4, %l1 shuffle %l0, 0x8, %l1 shuffle %l0, 0x10, %l1 shuffle %l0, 0x18, %l1 ! test UMAC test_umac: umac %l1, %l2, %l0 umac %l1, 2, %l0 umac 2, %l1, %l0 ! test UMACD test_umacd: umacd %l2, %l4, %l0 umacd %l2, 3, %l0 umacd 3, %l2, %l0 ! test SMAC test_smac: smac %l1, %l2, %l0 smac %l1, -42, %l0 smac -42, %l1, %l0 ! test SMACD test_smacd: smacd %l2, %l4, %l0 smacd %l2, 123, %l0 smacd 123, %l2, %l0 ! test UMULD test_umuld: umuld %o2, %o4, %o0 umuld %o2, 0x234, %o0 umuld 0x567, %o2, %o0 ! test SMULD test_smuld: smuld %i2, %i4, %i0 smuld %i2, -4096, %i0 smuld 4095, %i4, %i0 ! Coprocessor instructions test_coprocessor: ! %ccsr is register # 0 ! %ccfr is register # 1 ! %ccpr is register # 3 ! %cccrcr is register # 2 ! test CPUSH: just syntax cpush %l0, %l1 cpush %l0, 1 cpusha %l0, %l1 cpusha %l0, 1 ! test CPULL: just syntax cpull %l0 ! test CPRDCXT: just syntax crdcxt %ccsr, %l0 crdcxt %ccfr, %l0 crdcxt %ccpr, %l0 crdcxt %cccrcr, %l0 ! test CPWRCXT: just syntax cwrcxt %l0, %ccsr cwrcxt %l0, %ccfr cwrcxt %l0, %ccpr cwrcxt %l0, %cccrcr ! test CBccc: just syntax cbn stop nop cbn,a stop nop cbe stop nop cbe,a stop nop cbf stop nop cbf,a stop nop cbef stop nop cbef,a stop nop cbr stop nop cbr,a stop nop cber stop nop cber,a stop nop cbfr stop nop cbfr,a stop nop cbefr stop nop cbefr,a stop nop cba stop nop cba,a stop nop cbne stop nop cbne,a stop nop cbnf stop nop cbnf,a stop nop cbnef stop nop cbnef,a stop nop cbnr stop nop cbnr,a stop nop cbner stop nop cbner,a stop nop cbnfr stop nop cbnfr,a stop nop cbnefr stop nop cbnefr,a stop nop