| $AT = '@'; |
| print <<END |
| .text |
| .type _start,${AT}function |
| _start: |
| |
| pmpyshr2 r4 = r5, r6, 0 |
| pmpyshr2.u r4 = r5, r6, 16 |
| |
| pmpy2.r r4 = r5, r6 |
| pmpy2.l r4 = r5, r6 |
| |
| mix1.r r4 = r5, r6 |
| mix2.r r4 = r5, r6 |
| mix4.r r4 = r5, r6 |
| mix1.l r4 = r5, r6 |
| mix2.l r4 = r5, r6 |
| mix4.l r4 = r5, r6 |
| |
| pack2.uss r4 = r5, r6 |
| pack2.sss r4 = r5, r6 |
| pack4.sss r4 = r5, r6 |
| |
| unpack1.h r4 = r5, r6 |
| unpack2.h r4 = r5, r6 |
| unpack4.h r4 = r5, r6 |
| unpack1.l r4 = r5, r6 |
| unpack2.l r4 = r5, r6 |
| unpack4.l r4 = r5, r6 |
| |
| pmin1.u r4 = r5, r6 |
| pmax1.u r4 = r5, r6 |
| |
| pmin2 r4 = r5, r6 |
| pmax2 r4 = r5, r6 |
| |
| psad1 r4 = r5, r6 |
| |
| mux1 r4 = r5, ${AT}rev |
| mux1 r4 = r5, ${AT}mix |
| mux1 r4 = r5, ${AT}shuf |
| mux1 r4 = r5, ${AT}alt |
| mux1 r4 = r5, ${AT}brcst |
| |
| mux2 r4 = r5, 0 |
| mux2 r4 = r5, 0xff |
| mux2 r4 = r5, 0xaa |
| |
| pshr2 r4 = r5, r6 |
| pshr2 r4 = r5, 0 |
| pshr2 r4 = r5, 8 |
| pshr2 r4 = r5, 31 |
| |
| pshr4 r4 = r5, r6 |
| pshr4 r4 = r5, 0 |
| pshr4 r4 = r5, 8 |
| pshr4 r4 = r5, 31 |
| |
| pshr2.u r4 = r5, r6 |
| pshr2.u r4 = r5, 0 |
| pshr2.u r4 = r5, 8 |
| pshr2.u r4 = r5, 31 |
| |
| pshr4.u r4 = r5, r6 |
| pshr4.u r4 = r5, 0 |
| pshr4.u r4 = r5, 8 |
| pshr4.u r4 = r5, 31 |
| |
| shr r4 = r5, r6 |
| shr.u r4 = r5, r6 |
| |
| pshl2 r4 = r5, r6 |
| pshl2 r4 = r5, 0 |
| pshl2 r4 = r5, 8 |
| pshl2 r4 = r5, 31 |
| |
| pshl4 r4 = r5, r6 |
| pshl4 r4 = r5, 0 |
| pshl4 r4 = r5, 8 |
| pshl4 r4 = r5, 31 |
| |
| shl r4 = r5, r6 |
| |
| popcnt r4 = r5 |
| |
| shrp r4 = r5, r6, 0 |
| shrp r4 = r5, r6, 12 |
| shrp r4 = r5, r6, 63 |
| |
| extr r4 = r5, 0, 16 |
| extr r4 = r5, 0, 63 |
| extr r4 = r5, 10, 40 |
| |
| extr.u r4 = r5, 0, 16 |
| extr.u r4 = r5, 0, 63 |
| extr.u r4 = r5, 10, 40 |
| |
| dep.z r4 = r5, 0, 16 |
| dep.z r4 = r5, 0, 63 |
| dep.z r4 = r5, 10, 40 |
| dep.z r4 = 0, 0, 16 |
| dep.z r4 = 127, 0, 63 |
| dep.z r4 = -128, 5, 50 |
| dep.z r4 = 0x55, 10, 40 |
| |
| dep r4 = 0, r5, 0, 16 |
| dep r4 = -1, r5, 0, 63 |
| // Insert padding NOPs to force the same template selection as IAS. |
| nop.m 0 |
| nop.f 0 |
| dep r4 = r5, r6, 10, 7 |
| |
| movl r4 = 0 |
| movl r4 = 0xffffffffffffffff |
| movl r4 = 0x1234567890abcdef |
| |
| break.i 0 |
| break.i 0x1fffff |
| |
| nop.i 0 |
| nop.i 0x1fffff |
| |
| chk.s.i r4, _start |
| |
| mov r4 = b0 |
| mov b0 = r4 |
| |
| mov pr = r4, 0 |
| mov pr = r4, 0x1234 |
| mov pr = r4, 0x1ffff |
| |
| mov pr.rot = 0 |
| // ??? This was originally 0x3ffffff, but that generates an assembler warning |
| // that the testsuite infrastructure isn't set up to ignore. |
| mov pr.rot = 0x3ff0000 |
| mov pr.rot = -0x4000000 |
| |
| zxt1 r4 = r5 |
| zxt2 r4 = r5 |
| zxt4 r4 = r5 |
| |
| sxt1 r4 = r5 |
| sxt2 r4 = r5 |
| sxt4 r4 = r5 |
| |
| czx1.l r4 = r5 |
| czx2.l r4 = r5 |
| czx1.r r4 = r5 |
| czx2.r r4 = r5 |
| |
| END |
| ; |
| |
| @ctype = ( "", ".unc", ".and", ".or", ".or.andcm", ".orcm", |
| ".andcm", ".and.orcm" ); |
| |
| $i = 0; |
| foreach $z ( ".z", ".nz" ) { |
| foreach $c (@ctype) { |
| print "\ttbit${z}${c} p2, p3 = r4, $i\n"; |
| ++$i; |
| } |
| } |
| print "\n"; |
| |
| foreach $z ( ".z", ".nz" ) { |
| foreach $c (@ctype) { |
| print "\ttnat${z}${c} p2, p3 = r4\n"; |
| } |
| } |
| print "\n"; |
| |
| |
| @mwh = ( "", ".sptk", ".dptk" ); |
| @ih = ( "", ".imp" ); |
| |
| $LAB = 1; |
| |
| foreach $b ("", ".ret") { |
| foreach $w (@mwh) { |
| foreach $i (@ih) { |
| print "\tmov${b}${w}${i} b3 = r4, .L${LAB}\n"; |
| } |
| print ".space 240\n"; |
| print ".L${LAB}:\n"; |
| ++$LAB; |
| } |
| print "\n"; |
| } |