Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:verhaegs:branches:home:verhaegs:amixdev
ppc-morphos-binutils
0003-Added-some-lost-files-and-reset-some-file-...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0003-Added-some-lost-files-and-reset-some-file-modes-to-t.patch of Package ppc-morphos-binutils
From 7bf7f4e76e69ef0468254ca23de81bd3b56a4a97 Mon Sep 17 00:00:00 2001 From: Staf Verhaegen <staf@stafverhaegen.be> Date: Wed, 1 Jan 2014 21:19:47 +0100 Subject: [PATCH 3/5] Added some lost files and reset some file modes to the one from the original code. --- bfd/doc/bfd.info-6 | 1040 ---- binutils/testsuite/binutils-all/bintest.s | 12 + binutils/testsuite/binutils-all/hppa/addendbug.s | 23 + gas/testsuite/gas/all/align.s | 61 + gas/testsuite/gas/all/cofftag.s | 57 + gas/testsuite/gas/all/comment.s | 3 + gas/testsuite/gas/all/cond.s | 18 + gas/testsuite/gas/all/diff1.s | 5 + gas/testsuite/gas/all/float.s | 4 + gas/testsuite/gas/all/itbl.s | 13 + gas/testsuite/gas/all/p1480.s | 3 + gas/testsuite/gas/all/p2425.s | 6 + gas/testsuite/gas/all/struct.s | 10 + gas/testsuite/gas/all/x930509.s | 3 + gas/testsuite/gas/alpha/fp.s | 14 + gas/testsuite/gas/arc/alias.s | 76 + gas/testsuite/gas/arc/branch.s | 47 + gas/testsuite/gas/arc/flag.s | 27 + gas/testsuite/gas/arc/insn3.s | 52 + gas/testsuite/gas/arc/j.s | 45 + gas/testsuite/gas/arc/ld.s | 24 + gas/testsuite/gas/arc/math.s | 89 + gas/testsuite/gas/arc/sshift.s | 52 + gas/testsuite/gas/arc/st.s | 19 + gas/testsuite/gas/arc/warn.s | 14 + gas/testsuite/gas/arm/arch4t.s | 21 + gas/testsuite/gas/arm/arm3.s | 6 + gas/testsuite/gas/arm/arm6.s | 12 + gas/testsuite/gas/arm/arm7dm.s | 12 + gas/testsuite/gas/arm/arm7t.s | 79 + gas/testsuite/gas/arm/copro.s | 24 + gas/testsuite/gas/arm/float.s | 162 + gas/testsuite/gas/arm/immed.s | 11 + gas/testsuite/gas/arm/inst.s | 189 + gas/testsuite/gas/arm/le-fpconst.s | 8 + gas/testsuite/gas/arm/thumb.s | 193 + gas/testsuite/gas/h8300/addsub.s | 16 + gas/testsuite/gas/h8300/addsubh.s | 25 + gas/testsuite/gas/h8300/addsubs.s | 25 + gas/testsuite/gas/h8300/bitops1.s | 18 + gas/testsuite/gas/h8300/bitops1h.s | 19 + gas/testsuite/gas/h8300/bitops1s.s | 29 + gas/testsuite/gas/h8300/bitops2.s | 15 + gas/testsuite/gas/h8300/bitops2h.s | 16 + gas/testsuite/gas/h8300/bitops2s.s | 23 + gas/testsuite/gas/h8300/bitops3.s | 15 + gas/testsuite/gas/h8300/bitops3h.s | 16 + gas/testsuite/gas/h8300/bitops3s.s | 24 + gas/testsuite/gas/h8300/bitops4.s | 18 + gas/testsuite/gas/h8300/bitops4h.s | 19 + gas/testsuite/gas/h8300/bitops4s.s | 29 + gas/testsuite/gas/h8300/branch.s | 10 + gas/testsuite/gas/h8300/branchh.s | 12 + gas/testsuite/gas/h8300/branchs.s | 12 + gas/testsuite/gas/h8300/cbranch.s | 23 + gas/testsuite/gas/h8300/cbranchh.s | 44 + gas/testsuite/gas/h8300/cbranchs.s | 44 + gas/testsuite/gas/h8300/cmpsi2.s | 28 + gas/testsuite/gas/h8300/compare.s | 6 + gas/testsuite/gas/h8300/compareh.s | 10 + gas/testsuite/gas/h8300/compares.s | 10 + gas/testsuite/gas/h8300/decimal.s | 5 + gas/testsuite/gas/h8300/decimalh.s | 6 + gas/testsuite/gas/h8300/decimals.s | 6 + gas/testsuite/gas/h8300/divmul.s | 5 + gas/testsuite/gas/h8300/divmulh.s | 12 + gas/testsuite/gas/h8300/divmuls.s | 12 + gas/testsuite/gas/h8300/extendh.s | 8 + gas/testsuite/gas/h8300/extends.s | 8 + gas/testsuite/gas/h8300/ffxx1.s | 20 + gas/testsuite/gas/h8300/incdec.s | 5 + gas/testsuite/gas/h8300/incdech.s | 14 + gas/testsuite/gas/h8300/incdecs.s | 14 + gas/testsuite/gas/h8300/logical.s | 14 + gas/testsuite/gas/h8300/logicalh.s | 31 + gas/testsuite/gas/h8300/logicals.s | 34 + gas/testsuite/gas/h8300/macs.s | 11 + gas/testsuite/gas/h8300/misc.s | 13 + gas/testsuite/gas/h8300/misch.s | 27 + gas/testsuite/gas/h8300/miscs.s | 41 + gas/testsuite/gas/h8300/mov32bug.s | 4 + gas/testsuite/gas/h8300/movb.s | 15 + gas/testsuite/gas/h8300/movbh.s | 20 + gas/testsuite/gas/h8300/movbs.s | 20 + gas/testsuite/gas/h8300/movlh.s | 18 + gas/testsuite/gas/h8300/movls.s | 18 + gas/testsuite/gas/h8300/movw.s | 13 + gas/testsuite/gas/h8300/movwh.s | 18 + gas/testsuite/gas/h8300/movws.s | 18 + gas/testsuite/gas/h8300/multiples.s | 10 + gas/testsuite/gas/h8300/pushpop.s | 5 + gas/testsuite/gas/h8300/pushpoph.s | 8 + gas/testsuite/gas/h8300/pushpops.s | 8 + gas/testsuite/gas/h8300/rotsh.s | 11 + gas/testsuite/gas/h8300/rotshh.s | 27 + gas/testsuite/gas/h8300/rotshs.s | 51 + gas/testsuite/gas/hppa/basic/add.s | 100 + gas/testsuite/gas/hppa/basic/addi.s | 83 + gas/testsuite/gas/hppa/basic/branch.s | 227 + gas/testsuite/gas/hppa/basic/comclr.s | 50 + gas/testsuite/gas/hppa/basic/copr.s | 19 + gas/testsuite/gas/hppa/basic/coprmem.s | 55 + gas/testsuite/gas/hppa/basic/dcor.s | 41 + gas/testsuite/gas/hppa/basic/deposit.s | 88 + gas/testsuite/gas/hppa/basic/ds.s | 32 + gas/testsuite/gas/hppa/basic/extract.s | 51 + gas/testsuite/gas/hppa/basic/fmem.s | 52 + gas/testsuite/gas/hppa/basic/fmemLRbug.s | 76 + gas/testsuite/gas/hppa/basic/fp_comp.s | 81 + gas/testsuite/gas/hppa/basic/fp_conv.s | 92 + gas/testsuite/gas/hppa/basic/fp_fcmp.s | 114 + gas/testsuite/gas/hppa/basic/fp_misc.s | 18 + gas/testsuite/gas/hppa/basic/imem.s | 93 + gas/testsuite/gas/hppa/basic/immed.s | 21 + gas/testsuite/gas/hppa/basic/logical.s | 60 + gas/testsuite/gas/hppa/basic/purge.s | 35 + gas/testsuite/gas/hppa/basic/sh1add.s | 67 + gas/testsuite/gas/hppa/basic/sh2add.s | 67 + gas/testsuite/gas/hppa/basic/sh3add.s | 67 + gas/testsuite/gas/hppa/basic/shift.s | 34 + gas/testsuite/gas/hppa/basic/special.s | 15 + gas/testsuite/gas/hppa/basic/spop.s | 34 + gas/testsuite/gas/hppa/basic/sub.s | 117 + gas/testsuite/gas/hppa/basic/subi.s | 49 + gas/testsuite/gas/hppa/basic/system.s | 46 + gas/testsuite/gas/hppa/basic/unit.s | 55 + gas/testsuite/gas/hppa/basic/weird.s | 870 +++ gas/testsuite/gas/hppa/parse/align1.s | 41 + gas/testsuite/gas/hppa/parse/align2.s | 15 + gas/testsuite/gas/hppa/parse/appbug.s | 1 + gas/testsuite/gas/hppa/parse/badfmpyadd.s | 33 + gas/testsuite/gas/hppa/parse/block1.s | 18 + gas/testsuite/gas/hppa/parse/block2.s | 15 + gas/testsuite/gas/hppa/parse/calldatabug.s | 189 + gas/testsuite/gas/hppa/parse/callinfobug.s | 8 + gas/testsuite/gas/hppa/parse/defbug.s | 18 + gas/testsuite/gas/hppa/parse/entrybug.s | 24 + gas/testsuite/gas/hppa/parse/exportbug.s | 14 + gas/testsuite/gas/hppa/parse/exprbug.s | 39 + gas/testsuite/gas/hppa/parse/fixup7bug.s | 6192 ++++++++++++++++++++++ gas/testsuite/gas/hppa/parse/global.s | 15 + gas/testsuite/gas/hppa/parse/labelbug.s | 35 + gas/testsuite/gas/hppa/parse/linesepbug.s | 20 + gas/testsuite/gas/hppa/parse/lselbug.s | 18 + gas/testsuite/gas/hppa/parse/nosubspace.s | 21 + gas/testsuite/gas/hppa/parse/procbug.s | 16 + gas/testsuite/gas/hppa/parse/regpopbug.s | 17 + gas/testsuite/gas/hppa/parse/spacebug.s | 3 + gas/testsuite/gas/hppa/parse/ssbug.s | 10 + gas/testsuite/gas/hppa/parse/stdreg.s | 27 + gas/testsuite/gas/hppa/parse/stringer.s | 19 + gas/testsuite/gas/hppa/parse/undefbug.s | 14 + gas/testsuite/gas/hppa/parse/versionbug.s | 9 + gas/testsuite/gas/hppa/parse/xmpyubug.s | 17 + gas/testsuite/gas/hppa/reloc/applybug.s | 130 + gas/testsuite/gas/hppa/reloc/blebug.s | 16 + gas/testsuite/gas/hppa/reloc/blebug2.s | 14 + gas/testsuite/gas/hppa/reloc/blebug3.s | 14 + gas/testsuite/gas/hppa/reloc/exitbug.s | 19 + gas/testsuite/gas/hppa/reloc/fixupbug.s | 19 + gas/testsuite/gas/hppa/reloc/funcrelocbug.s | 186 + gas/testsuite/gas/hppa/reloc/labelopbug.s | 37 + gas/testsuite/gas/hppa/reloc/longcall.s | 40 + gas/testsuite/gas/hppa/reloc/picreloc.s | 13 + gas/testsuite/gas/hppa/reloc/plabelbug.s | 47 + gas/testsuite/gas/hppa/reloc/r_no_reloc.s | 45 + gas/testsuite/gas/hppa/reloc/reduce.s | 48 + gas/testsuite/gas/hppa/reloc/reduce2.s | 80 + gas/testsuite/gas/hppa/reloc/reduce3.s | 51 + gas/testsuite/gas/hppa/reloc/roundmode.s | 23 + gas/testsuite/gas/hppa/reloc/selectorbug.s | 28 + gas/testsuite/gas/hppa/unsorted/align3.s | 20 + gas/testsuite/gas/hppa/unsorted/align4.s | 4 + gas/testsuite/gas/hppa/unsorted/brlenbug.s | 3502 ++++++++++++ gas/testsuite/gas/hppa/unsorted/common.s | 8 + gas/testsuite/gas/hppa/unsorted/fragbug.s | 3 + gas/testsuite/gas/hppa/unsorted/globalbug.s | 16 + gas/testsuite/gas/hppa/unsorted/importbug.s | 42 + gas/testsuite/gas/hppa/unsorted/labeldiffs.s | 40 + gas/testsuite/gas/hppa/unsorted/locallabel.s | 15 + gas/testsuite/gas/hppa/unsorted/ss_align.s | 12 + gas/testsuite/gas/i386/inout.s | 11 + gas/testsuite/gas/i386/pushw.s | 2 + gas/testsuite/gas/ieee-fp/x930509a.s | 5 + gas/testsuite/gas/m32r/allinsn.s | 501 ++ gas/testsuite/gas/m32r/high-1.s | 14 + gas/testsuite/gas/m32r/relax-1.s | 17 + gas/testsuite/gas/m32r/uppercase.s | 5 + gas/testsuite/gas/m68k-coff/p2389.s | 19 + gas/testsuite/gas/m68k-coff/p2389a.s | 3 + gas/testsuite/gas/m68k-coff/p2430.s | 6 + gas/testsuite/gas/m68k-coff/p2430a.s | 4 + gas/testsuite/gas/m68k-coff/t1.s | 36 + gas/testsuite/gas/m68k/bitfield.s | 24 + gas/testsuite/gas/m68k/cas.s | 16 + gas/testsuite/gas/m68k/disperr.s | 16 + gas/testsuite/gas/m68k/fmoveml.s | 58 + gas/testsuite/gas/m68k/link.s | 13 + gas/testsuite/gas/m68k/operands.s | 273 + gas/testsuite/gas/m68k/p2410.s | 15 + gas/testsuite/gas/m68k/p2663.s | 16 + gas/testsuite/gas/m68k/pcrel.s | 59 + gas/testsuite/gas/m68k/pic1.s | 5 + gas/testsuite/gas/m68k/t2.s | 6 + gas/testsuite/gas/m88k/init.s | 5 + gas/testsuite/gas/macros/err.s | 5 + gas/testsuite/gas/macros/irp.s | 8 + gas/testsuite/gas/macros/rept.s | 3 + gas/testsuite/gas/macros/semi.s | 14 + gas/testsuite/gas/macros/test1.s | 7 + gas/testsuite/gas/macros/test2.s | 9 + gas/testsuite/gas/macros/test3.s | 7 + gas/testsuite/gas/mips/abs.s | 5 + gas/testsuite/gas/mips/add.s | 16 + gas/testsuite/gas/mips/and.s | 28 + gas/testsuite/gas/mips/beq.s | 28 + gas/testsuite/gas/mips/bge.s | 31 + gas/testsuite/gas/mips/bgeu.s | 27 + gas/testsuite/gas/mips/blt.s | 31 + gas/testsuite/gas/mips/bltu.s | 27 + gas/testsuite/gas/mips/delay.s | 8 + gas/testsuite/gas/mips/div.s | 41 + gas/testsuite/gas/mips/dli.s | 67 + gas/testsuite/gas/mips/itbl.s | 18 + gas/testsuite/gas/mips/jal-svr4pic.s | 20 + gas/testsuite/gas/mips/jal.s | 11 + gas/testsuite/gas/mips/la-empic.s | 57 + gas/testsuite/gas/mips/la.s | 114 + gas/testsuite/gas/mips/lb-pic.s | 55 + gas/testsuite/gas/mips/lb.s | 125 + gas/testsuite/gas/mips/ld-pic.s | 60 + gas/testsuite/gas/mips/ld.s | 144 + gas/testsuite/gas/mips/li.s | 12 + gas/testsuite/gas/mips/lifloat.s | 24 + gas/testsuite/gas/mips/mips16.s | 258 + gas/testsuite/gas/mips/mips4.s | 52 + gas/testsuite/gas/mips/mips4010.s | 20 + gas/testsuite/gas/mips/mips4100.s | 10 + gas/testsuite/gas/mips/mips4650.s | 8 + gas/testsuite/gas/mips/mul.s | 27 + gas/testsuite/gas/mips/rol.s | 12 + gas/testsuite/gas/mips/sb.s | 124 + gas/testsuite/gas/mips/trunc.s | 6 + gas/testsuite/gas/mips/uld.s | 66 + gas/testsuite/gas/mips/ulh-pic.s | 36 + gas/testsuite/gas/mips/ulh.s | 69 + gas/testsuite/gas/mips/ulw.s | 66 + gas/testsuite/gas/mips/usd.s | 66 + gas/testsuite/gas/mips/ush.s | 65 + gas/testsuite/gas/mips/usw.s | 66 + gas/testsuite/gas/mn10200/add.s | 13 + gas/testsuite/gas/mn10200/bcc.s | 17 + gas/testsuite/gas/mn10200/bccx.s | 16 + gas/testsuite/gas/mn10200/bit.s | 5 + gas/testsuite/gas/mn10200/cmp.s | 10 + gas/testsuite/gas/mn10200/ext.s | 7 + gas/testsuite/gas/mn10200/logical.s | 12 + gas/testsuite/gas/mn10200/mov1.s | 13 + gas/testsuite/gas/mn10200/mov2.s | 10 + gas/testsuite/gas/mn10200/mov3.s | 11 + gas/testsuite/gas/mn10200/mov4.s | 9 + gas/testsuite/gas/mn10200/movb.s | 13 + gas/testsuite/gas/mn10200/movbu.s | 8 + gas/testsuite/gas/mn10200/movx.s | 7 + gas/testsuite/gas/mn10200/muldiv.s | 4 + gas/testsuite/gas/mn10200/other.s | 10 + gas/testsuite/gas/mn10200/shift.s | 5 + gas/testsuite/gas/mn10200/sub.s | 10 + gas/testsuite/gas/mn10300/add.s | 15 + gas/testsuite/gas/mn10300/bcc.s | 17 + gas/testsuite/gas/mn10300/bit.s | 12 + gas/testsuite/gas/mn10300/cmp.s | 11 + gas/testsuite/gas/mn10300/ext.s | 7 + gas/testsuite/gas/mn10300/extend.s | 15 + gas/testsuite/gas/mn10300/logical.s | 15 + gas/testsuite/gas/mn10300/loop.s | 15 + gas/testsuite/gas/mn10300/mov1.s | 17 + gas/testsuite/gas/mn10300/mov2.s | 16 + gas/testsuite/gas/mn10300/mov3.s | 16 + gas/testsuite/gas/mn10300/mov4.s | 13 + gas/testsuite/gas/mn10300/movbu.s | 21 + gas/testsuite/gas/mn10300/movhu.s | 21 + gas/testsuite/gas/mn10300/movm.s | 5 + gas/testsuite/gas/mn10300/muldiv.s | 5 + gas/testsuite/gas/mn10300/other.s | 20 + gas/testsuite/gas/mn10300/shift.s | 10 + gas/testsuite/gas/mn10300/sub.s | 8 + gas/testsuite/gas/mri/char.s | 6 + gas/testsuite/gas/mri/comment.s | 13 + gas/testsuite/gas/mri/common.s | 11 + gas/testsuite/gas/mri/constants.s | 31 + gas/testsuite/gas/mri/empty.s | 9 + gas/testsuite/gas/mri/equ.s | 3 + gas/testsuite/gas/mri/expr.s | 7 + gas/testsuite/gas/mri/float.s | 7 + gas/testsuite/gas/mri/for.s | 22 + gas/testsuite/gas/mri/if.s | 17 + gas/testsuite/gas/mri/label.s | 5 + gas/testsuite/gas/mri/moveml.s | 17 + gas/testsuite/gas/mri/repeat.s | 14 + gas/testsuite/gas/mri/semi.s | 14 + gas/testsuite/gas/mri/while.s | 14 + gas/testsuite/gas/ppc/astest.s | 52 + gas/testsuite/gas/ppc/astest2.s | 52 + gas/testsuite/gas/sh/fp.s | 45 + gas/testsuite/gas/sparc-solaris/addend.s | 11 + gas/testsuite/gas/sparc-solaris/sol-cc.s | 81 + gas/testsuite/gas/sparc-solaris/sol-gcc.s | 66 + gas/testsuite/gas/sparc/asi.s | 28 + gas/testsuite/gas/sparc/membar.s | 12 + gas/testsuite/gas/sparc/mism-1.s | 22 + gas/testsuite/gas/sparc/prefetch.s | 11 + gas/testsuite/gas/sparc/rdpr.s | 19 + gas/testsuite/gas/sparc/reloc64.s | 48 + gas/testsuite/gas/sparc/set64.s | 43 + gas/testsuite/gas/sparc/splet-2.s | 21 + gas/testsuite/gas/sparc/splet.s | 211 + gas/testsuite/gas/sparc/synth.s | 7 + gas/testsuite/gas/sparc/synth64.s | 16 + gas/testsuite/gas/sparc/wrpr.s | 17 + gas/testsuite/gas/sun4/addend.s | 11 + gas/testsuite/gas/v850/arith.s | 24 + gas/testsuite/gas/v850/bit.s | 8 + gas/testsuite/gas/v850/branch.s | 24 + gas/testsuite/gas/v850/compare.s | 28 + gas/testsuite/gas/v850/fepsw.s | 2 + gas/testsuite/gas/v850/hilo.s | 5 + gas/testsuite/gas/v850/hilo2.s | 4 + gas/testsuite/gas/v850/jumps.s | 8 + gas/testsuite/gas/v850/logical.s | 11 + gas/testsuite/gas/v850/mem.s | 16 + gas/testsuite/gas/v850/misc.s | 13 + gas/testsuite/gas/v850/move.s | 8 + gas/testsuite/gas/v850/range.s | 2 + gas/testsuite/gas/v850/reloc.s | 7 + gas/testsuite/gas/vax/quad.s | 2 + gprof/gprof.info-1 | 1109 ---- gprof/gprof.info-2 | 761 --- ld/ldint.info | 379 -- ld/testsuite/ld-empic/runtesti.s | 94 + ld/testsuite/ld-scripts/defined.s | 2 + ld/testsuite/ld-scripts/phdrs.s | 8 + ld/testsuite/ld-scripts/script.s | 8 + ld/testsuite/ld-scripts/sizeof.s | 1 + ld/testsuite/ld-sh/sh1.s | 13 + ld/testsuite/ld-sh/start.s | 27 + 346 files changed, 21378 insertions(+), 3289 deletions(-) delete mode 100644 bfd/doc/bfd.info-6 create mode 100644 binutils/testsuite/binutils-all/bintest.s create mode 100644 binutils/testsuite/binutils-all/hppa/addendbug.s create mode 100644 gas/testsuite/gas/all/align.s create mode 100644 gas/testsuite/gas/all/cofftag.s create mode 100644 gas/testsuite/gas/all/comment.s create mode 100644 gas/testsuite/gas/all/cond.s create mode 100644 gas/testsuite/gas/all/diff1.s create mode 100644 gas/testsuite/gas/all/float.s create mode 100644 gas/testsuite/gas/all/itbl.s create mode 100644 gas/testsuite/gas/all/p1480.s create mode 100644 gas/testsuite/gas/all/p2425.s create mode 100644 gas/testsuite/gas/all/struct.s create mode 100644 gas/testsuite/gas/all/x930509.s create mode 100644 gas/testsuite/gas/alpha/fp.s create mode 100644 gas/testsuite/gas/arc/alias.s create mode 100644 gas/testsuite/gas/arc/branch.s create mode 100644 gas/testsuite/gas/arc/flag.s create mode 100644 gas/testsuite/gas/arc/insn3.s create mode 100644 gas/testsuite/gas/arc/j.s create mode 100644 gas/testsuite/gas/arc/ld.s create mode 100644 gas/testsuite/gas/arc/math.s create mode 100644 gas/testsuite/gas/arc/sshift.s create mode 100644 gas/testsuite/gas/arc/st.s create mode 100644 gas/testsuite/gas/arc/warn.s create mode 100644 gas/testsuite/gas/arm/arch4t.s create mode 100644 gas/testsuite/gas/arm/arm3.s create mode 100644 gas/testsuite/gas/arm/arm6.s create mode 100644 gas/testsuite/gas/arm/arm7dm.s create mode 100644 gas/testsuite/gas/arm/arm7t.s create mode 100644 gas/testsuite/gas/arm/copro.s create mode 100644 gas/testsuite/gas/arm/float.s create mode 100644 gas/testsuite/gas/arm/immed.s create mode 100644 gas/testsuite/gas/arm/inst.s create mode 100644 gas/testsuite/gas/arm/le-fpconst.s create mode 100644 gas/testsuite/gas/arm/thumb.s create mode 100644 gas/testsuite/gas/h8300/addsub.s create mode 100644 gas/testsuite/gas/h8300/addsubh.s create mode 100644 gas/testsuite/gas/h8300/addsubs.s create mode 100644 gas/testsuite/gas/h8300/bitops1.s create mode 100644 gas/testsuite/gas/h8300/bitops1h.s create mode 100644 gas/testsuite/gas/h8300/bitops1s.s create mode 100644 gas/testsuite/gas/h8300/bitops2.s create mode 100644 gas/testsuite/gas/h8300/bitops2h.s create mode 100644 gas/testsuite/gas/h8300/bitops2s.s create mode 100644 gas/testsuite/gas/h8300/bitops3.s create mode 100644 gas/testsuite/gas/h8300/bitops3h.s create mode 100644 gas/testsuite/gas/h8300/bitops3s.s create mode 100644 gas/testsuite/gas/h8300/bitops4.s create mode 100644 gas/testsuite/gas/h8300/bitops4h.s create mode 100644 gas/testsuite/gas/h8300/bitops4s.s create mode 100644 gas/testsuite/gas/h8300/branch.s create mode 100644 gas/testsuite/gas/h8300/branchh.s create mode 100644 gas/testsuite/gas/h8300/branchs.s create mode 100644 gas/testsuite/gas/h8300/cbranch.s create mode 100644 gas/testsuite/gas/h8300/cbranchh.s create mode 100644 gas/testsuite/gas/h8300/cbranchs.s create mode 100644 gas/testsuite/gas/h8300/cmpsi2.s create mode 100644 gas/testsuite/gas/h8300/compare.s create mode 100644 gas/testsuite/gas/h8300/compareh.s create mode 100644 gas/testsuite/gas/h8300/compares.s create mode 100644 gas/testsuite/gas/h8300/decimal.s create mode 100644 gas/testsuite/gas/h8300/decimalh.s create mode 100644 gas/testsuite/gas/h8300/decimals.s create mode 100644 gas/testsuite/gas/h8300/divmul.s create mode 100644 gas/testsuite/gas/h8300/divmulh.s create mode 100644 gas/testsuite/gas/h8300/divmuls.s create mode 100644 gas/testsuite/gas/h8300/extendh.s create mode 100644 gas/testsuite/gas/h8300/extends.s create mode 100644 gas/testsuite/gas/h8300/ffxx1.s create mode 100644 gas/testsuite/gas/h8300/incdec.s create mode 100644 gas/testsuite/gas/h8300/incdech.s create mode 100644 gas/testsuite/gas/h8300/incdecs.s create mode 100644 gas/testsuite/gas/h8300/logical.s create mode 100644 gas/testsuite/gas/h8300/logicalh.s create mode 100644 gas/testsuite/gas/h8300/logicals.s create mode 100644 gas/testsuite/gas/h8300/macs.s create mode 100644 gas/testsuite/gas/h8300/misc.s create mode 100644 gas/testsuite/gas/h8300/misch.s create mode 100644 gas/testsuite/gas/h8300/miscs.s create mode 100644 gas/testsuite/gas/h8300/mov32bug.s create mode 100644 gas/testsuite/gas/h8300/movb.s create mode 100644 gas/testsuite/gas/h8300/movbh.s create mode 100644 gas/testsuite/gas/h8300/movbs.s create mode 100644 gas/testsuite/gas/h8300/movlh.s create mode 100644 gas/testsuite/gas/h8300/movls.s create mode 100644 gas/testsuite/gas/h8300/movw.s create mode 100644 gas/testsuite/gas/h8300/movwh.s create mode 100644 gas/testsuite/gas/h8300/movws.s create mode 100644 gas/testsuite/gas/h8300/multiples.s create mode 100644 gas/testsuite/gas/h8300/pushpop.s create mode 100644 gas/testsuite/gas/h8300/pushpoph.s create mode 100644 gas/testsuite/gas/h8300/pushpops.s create mode 100644 gas/testsuite/gas/h8300/rotsh.s create mode 100644 gas/testsuite/gas/h8300/rotshh.s create mode 100644 gas/testsuite/gas/h8300/rotshs.s create mode 100755 gas/testsuite/gas/hppa/basic/add.s create mode 100755 gas/testsuite/gas/hppa/basic/addi.s mode change 100644 => 100755 gas/testsuite/gas/hppa/basic/basic.exp create mode 100755 gas/testsuite/gas/hppa/basic/branch.s create mode 100755 gas/testsuite/gas/hppa/basic/comclr.s create mode 100644 gas/testsuite/gas/hppa/basic/copr.s create mode 100644 gas/testsuite/gas/hppa/basic/coprmem.s create mode 100755 gas/testsuite/gas/hppa/basic/dcor.s create mode 100755 gas/testsuite/gas/hppa/basic/deposit.s create mode 100755 gas/testsuite/gas/hppa/basic/ds.s create mode 100755 gas/testsuite/gas/hppa/basic/extract.s create mode 100755 gas/testsuite/gas/hppa/basic/fmem.s create mode 100644 gas/testsuite/gas/hppa/basic/fmemLRbug.s create mode 100755 gas/testsuite/gas/hppa/basic/fp_comp.s create mode 100755 gas/testsuite/gas/hppa/basic/fp_conv.s create mode 100755 gas/testsuite/gas/hppa/basic/fp_fcmp.s create mode 100755 gas/testsuite/gas/hppa/basic/fp_misc.s create mode 100755 gas/testsuite/gas/hppa/basic/imem.s create mode 100755 gas/testsuite/gas/hppa/basic/immed.s create mode 100755 gas/testsuite/gas/hppa/basic/logical.s create mode 100755 gas/testsuite/gas/hppa/basic/purge.s create mode 100755 gas/testsuite/gas/hppa/basic/sh1add.s create mode 100755 gas/testsuite/gas/hppa/basic/sh2add.s create mode 100755 gas/testsuite/gas/hppa/basic/sh3add.s create mode 100755 gas/testsuite/gas/hppa/basic/shift.s create mode 100755 gas/testsuite/gas/hppa/basic/special.s create mode 100644 gas/testsuite/gas/hppa/basic/spop.s create mode 100755 gas/testsuite/gas/hppa/basic/sub.s create mode 100755 gas/testsuite/gas/hppa/basic/subi.s create mode 100755 gas/testsuite/gas/hppa/basic/system.s create mode 100755 gas/testsuite/gas/hppa/basic/unit.s create mode 100755 gas/testsuite/gas/hppa/basic/weird.s create mode 100755 gas/testsuite/gas/hppa/parse/align1.s create mode 100755 gas/testsuite/gas/hppa/parse/align2.s create mode 100644 gas/testsuite/gas/hppa/parse/appbug.s create mode 100644 gas/testsuite/gas/hppa/parse/badfmpyadd.s create mode 100755 gas/testsuite/gas/hppa/parse/block1.s create mode 100755 gas/testsuite/gas/hppa/parse/block2.s create mode 100755 gas/testsuite/gas/hppa/parse/calldatabug.s create mode 100644 gas/testsuite/gas/hppa/parse/callinfobug.s create mode 100644 gas/testsuite/gas/hppa/parse/defbug.s create mode 100755 gas/testsuite/gas/hppa/parse/entrybug.s create mode 100755 gas/testsuite/gas/hppa/parse/exportbug.s create mode 100644 gas/testsuite/gas/hppa/parse/exprbug.s create mode 100755 gas/testsuite/gas/hppa/parse/fixup7bug.s create mode 100755 gas/testsuite/gas/hppa/parse/global.s create mode 100644 gas/testsuite/gas/hppa/parse/labelbug.s create mode 100755 gas/testsuite/gas/hppa/parse/linesepbug.s create mode 100755 gas/testsuite/gas/hppa/parse/lselbug.s create mode 100755 gas/testsuite/gas/hppa/parse/nosubspace.s mode change 100644 => 100755 gas/testsuite/gas/hppa/parse/parse.exp create mode 100755 gas/testsuite/gas/hppa/parse/procbug.s create mode 100644 gas/testsuite/gas/hppa/parse/regpopbug.s create mode 100644 gas/testsuite/gas/hppa/parse/spacebug.s create mode 100644 gas/testsuite/gas/hppa/parse/ssbug.s create mode 100644 gas/testsuite/gas/hppa/parse/stdreg.s create mode 100755 gas/testsuite/gas/hppa/parse/stringer.s create mode 100755 gas/testsuite/gas/hppa/parse/undefbug.s create mode 100755 gas/testsuite/gas/hppa/parse/versionbug.s create mode 100644 gas/testsuite/gas/hppa/parse/xmpyubug.s create mode 100644 gas/testsuite/gas/hppa/reloc/applybug.s create mode 100755 gas/testsuite/gas/hppa/reloc/blebug.s create mode 100755 gas/testsuite/gas/hppa/reloc/blebug2.s create mode 100755 gas/testsuite/gas/hppa/reloc/blebug3.s create mode 100644 gas/testsuite/gas/hppa/reloc/exitbug.s create mode 100644 gas/testsuite/gas/hppa/reloc/fixupbug.s create mode 100644 gas/testsuite/gas/hppa/reloc/funcrelocbug.s create mode 100755 gas/testsuite/gas/hppa/reloc/labelopbug.s create mode 100644 gas/testsuite/gas/hppa/reloc/longcall.s create mode 100644 gas/testsuite/gas/hppa/reloc/picreloc.s create mode 100755 gas/testsuite/gas/hppa/reloc/plabelbug.s create mode 100644 gas/testsuite/gas/hppa/reloc/r_no_reloc.s create mode 100755 gas/testsuite/gas/hppa/reloc/reduce.s create mode 100644 gas/testsuite/gas/hppa/reloc/reduce2.s create mode 100644 gas/testsuite/gas/hppa/reloc/reduce3.s mode change 100644 => 100755 gas/testsuite/gas/hppa/reloc/reloc.exp create mode 100644 gas/testsuite/gas/hppa/reloc/roundmode.s create mode 100644 gas/testsuite/gas/hppa/reloc/selectorbug.s create mode 100644 gas/testsuite/gas/hppa/unsorted/align3.s create mode 100644 gas/testsuite/gas/hppa/unsorted/align4.s create mode 100644 gas/testsuite/gas/hppa/unsorted/brlenbug.s create mode 100644 gas/testsuite/gas/hppa/unsorted/common.s create mode 100644 gas/testsuite/gas/hppa/unsorted/fragbug.s create mode 100644 gas/testsuite/gas/hppa/unsorted/globalbug.s create mode 100644 gas/testsuite/gas/hppa/unsorted/importbug.s create mode 100755 gas/testsuite/gas/hppa/unsorted/labeldiffs.s create mode 100755 gas/testsuite/gas/hppa/unsorted/locallabel.s create mode 100755 gas/testsuite/gas/hppa/unsorted/ss_align.s mode change 100644 => 100755 gas/testsuite/gas/hppa/unsorted/unsorted.exp create mode 100644 gas/testsuite/gas/i386/inout.s create mode 100644 gas/testsuite/gas/i386/pushw.s create mode 100644 gas/testsuite/gas/ieee-fp/x930509a.s create mode 100644 gas/testsuite/gas/m32r/allinsn.s create mode 100644 gas/testsuite/gas/m32r/high-1.s create mode 100644 gas/testsuite/gas/m32r/relax-1.s create mode 100644 gas/testsuite/gas/m32r/uppercase.s create mode 100644 gas/testsuite/gas/m68k-coff/p2389.s create mode 100644 gas/testsuite/gas/m68k-coff/p2389a.s create mode 100644 gas/testsuite/gas/m68k-coff/p2430.s create mode 100644 gas/testsuite/gas/m68k-coff/p2430a.s create mode 100644 gas/testsuite/gas/m68k-coff/t1.s create mode 100644 gas/testsuite/gas/m68k/bitfield.s create mode 100644 gas/testsuite/gas/m68k/cas.s create mode 100644 gas/testsuite/gas/m68k/disperr.s create mode 100644 gas/testsuite/gas/m68k/fmoveml.s create mode 100644 gas/testsuite/gas/m68k/link.s create mode 100644 gas/testsuite/gas/m68k/operands.s create mode 100644 gas/testsuite/gas/m68k/p2410.s create mode 100644 gas/testsuite/gas/m68k/p2663.s create mode 100644 gas/testsuite/gas/m68k/pcrel.s create mode 100644 gas/testsuite/gas/m68k/pic1.s create mode 100644 gas/testsuite/gas/m68k/t2.s create mode 100644 gas/testsuite/gas/m88k/init.s create mode 100644 gas/testsuite/gas/macros/err.s create mode 100644 gas/testsuite/gas/macros/irp.s create mode 100644 gas/testsuite/gas/macros/rept.s create mode 100644 gas/testsuite/gas/macros/semi.s create mode 100644 gas/testsuite/gas/macros/test1.s create mode 100644 gas/testsuite/gas/macros/test2.s create mode 100644 gas/testsuite/gas/macros/test3.s create mode 100644 gas/testsuite/gas/mips/abs.s create mode 100644 gas/testsuite/gas/mips/add.s create mode 100644 gas/testsuite/gas/mips/and.s create mode 100644 gas/testsuite/gas/mips/beq.s create mode 100644 gas/testsuite/gas/mips/bge.s create mode 100644 gas/testsuite/gas/mips/bgeu.s create mode 100644 gas/testsuite/gas/mips/blt.s create mode 100644 gas/testsuite/gas/mips/bltu.s create mode 100644 gas/testsuite/gas/mips/delay.s create mode 100644 gas/testsuite/gas/mips/div.s create mode 100644 gas/testsuite/gas/mips/dli.s create mode 100644 gas/testsuite/gas/mips/itbl.s create mode 100644 gas/testsuite/gas/mips/jal-svr4pic.s create mode 100644 gas/testsuite/gas/mips/jal.s create mode 100644 gas/testsuite/gas/mips/la-empic.s create mode 100644 gas/testsuite/gas/mips/la.s create mode 100644 gas/testsuite/gas/mips/lb-pic.s create mode 100644 gas/testsuite/gas/mips/lb.s create mode 100644 gas/testsuite/gas/mips/ld-pic.s create mode 100644 gas/testsuite/gas/mips/ld.s create mode 100644 gas/testsuite/gas/mips/li.s create mode 100644 gas/testsuite/gas/mips/lifloat.s create mode 100644 gas/testsuite/gas/mips/mips16.s create mode 100644 gas/testsuite/gas/mips/mips4.s create mode 100644 gas/testsuite/gas/mips/mips4010.s create mode 100644 gas/testsuite/gas/mips/mips4100.s create mode 100644 gas/testsuite/gas/mips/mips4650.s create mode 100644 gas/testsuite/gas/mips/mul.s create mode 100644 gas/testsuite/gas/mips/rol.s create mode 100644 gas/testsuite/gas/mips/sb.s create mode 100644 gas/testsuite/gas/mips/trunc.s create mode 100644 gas/testsuite/gas/mips/uld.s create mode 100644 gas/testsuite/gas/mips/ulh-pic.s create mode 100644 gas/testsuite/gas/mips/ulh.s create mode 100644 gas/testsuite/gas/mips/ulw.s create mode 100644 gas/testsuite/gas/mips/usd.s create mode 100644 gas/testsuite/gas/mips/ush.s create mode 100644 gas/testsuite/gas/mips/usw.s create mode 100755 gas/testsuite/gas/mn10200/add.s mode change 100644 => 100755 gas/testsuite/gas/mn10200/basic.exp create mode 100755 gas/testsuite/gas/mn10200/bcc.s create mode 100755 gas/testsuite/gas/mn10200/bccx.s create mode 100755 gas/testsuite/gas/mn10200/bit.s create mode 100755 gas/testsuite/gas/mn10200/cmp.s create mode 100755 gas/testsuite/gas/mn10200/ext.s create mode 100755 gas/testsuite/gas/mn10200/logical.s create mode 100755 gas/testsuite/gas/mn10200/mov1.s create mode 100755 gas/testsuite/gas/mn10200/mov2.s create mode 100755 gas/testsuite/gas/mn10200/mov3.s create mode 100755 gas/testsuite/gas/mn10200/mov4.s create mode 100644 gas/testsuite/gas/mn10200/movb.s create mode 100755 gas/testsuite/gas/mn10200/movbu.s create mode 100755 gas/testsuite/gas/mn10200/movx.s create mode 100755 gas/testsuite/gas/mn10200/muldiv.s create mode 100755 gas/testsuite/gas/mn10200/other.s create mode 100755 gas/testsuite/gas/mn10200/shift.s create mode 100755 gas/testsuite/gas/mn10200/sub.s create mode 100755 gas/testsuite/gas/mn10300/add.s mode change 100644 => 100755 gas/testsuite/gas/mn10300/basic.exp create mode 100755 gas/testsuite/gas/mn10300/bcc.s create mode 100755 gas/testsuite/gas/mn10300/bit.s create mode 100755 gas/testsuite/gas/mn10300/cmp.s create mode 100755 gas/testsuite/gas/mn10300/ext.s create mode 100755 gas/testsuite/gas/mn10300/extend.s create mode 100755 gas/testsuite/gas/mn10300/logical.s create mode 100755 gas/testsuite/gas/mn10300/loop.s create mode 100755 gas/testsuite/gas/mn10300/mov1.s create mode 100755 gas/testsuite/gas/mn10300/mov2.s create mode 100755 gas/testsuite/gas/mn10300/mov3.s create mode 100755 gas/testsuite/gas/mn10300/mov4.s create mode 100755 gas/testsuite/gas/mn10300/movbu.s create mode 100755 gas/testsuite/gas/mn10300/movhu.s create mode 100755 gas/testsuite/gas/mn10300/movm.s create mode 100755 gas/testsuite/gas/mn10300/muldiv.s create mode 100755 gas/testsuite/gas/mn10300/other.s create mode 100755 gas/testsuite/gas/mn10300/shift.s create mode 100755 gas/testsuite/gas/mn10300/sub.s create mode 100644 gas/testsuite/gas/mri/char.s create mode 100644 gas/testsuite/gas/mri/comment.s create mode 100644 gas/testsuite/gas/mri/common.s create mode 100644 gas/testsuite/gas/mri/constants.s create mode 100644 gas/testsuite/gas/mri/empty.s create mode 100644 gas/testsuite/gas/mri/equ.s create mode 100644 gas/testsuite/gas/mri/expr.s create mode 100644 gas/testsuite/gas/mri/float.s create mode 100644 gas/testsuite/gas/mri/for.s create mode 100644 gas/testsuite/gas/mri/if.s create mode 100644 gas/testsuite/gas/mri/label.s create mode 100644 gas/testsuite/gas/mri/moveml.s create mode 100644 gas/testsuite/gas/mri/repeat.s create mode 100644 gas/testsuite/gas/mri/semi.s create mode 100644 gas/testsuite/gas/mri/while.s create mode 100644 gas/testsuite/gas/ppc/astest.s create mode 100644 gas/testsuite/gas/ppc/astest2.s mode change 100644 => 100755 gas/testsuite/gas/sh/basic.exp create mode 100644 gas/testsuite/gas/sh/fp.s create mode 100644 gas/testsuite/gas/sparc-solaris/addend.s create mode 100644 gas/testsuite/gas/sparc-solaris/sol-cc.s create mode 100644 gas/testsuite/gas/sparc-solaris/sol-gcc.s create mode 100644 gas/testsuite/gas/sparc/asi.s create mode 100644 gas/testsuite/gas/sparc/membar.s create mode 100644 gas/testsuite/gas/sparc/mism-1.s create mode 100644 gas/testsuite/gas/sparc/prefetch.s create mode 100644 gas/testsuite/gas/sparc/rdpr.s create mode 100644 gas/testsuite/gas/sparc/reloc64.s create mode 100644 gas/testsuite/gas/sparc/set64.s create mode 100644 gas/testsuite/gas/sparc/splet-2.s create mode 100644 gas/testsuite/gas/sparc/splet.s create mode 100644 gas/testsuite/gas/sparc/synth.s create mode 100644 gas/testsuite/gas/sparc/synth64.s create mode 100644 gas/testsuite/gas/sparc/wrpr.s create mode 100644 gas/testsuite/gas/sun4/addend.s create mode 100644 gas/testsuite/gas/v850/arith.s mode change 100644 => 100755 gas/testsuite/gas/v850/basic.exp create mode 100644 gas/testsuite/gas/v850/bit.s create mode 100644 gas/testsuite/gas/v850/branch.s create mode 100644 gas/testsuite/gas/v850/compare.s create mode 100644 gas/testsuite/gas/v850/fepsw.s create mode 100644 gas/testsuite/gas/v850/hilo.s create mode 100644 gas/testsuite/gas/v850/hilo2.s create mode 100644 gas/testsuite/gas/v850/jumps.s create mode 100644 gas/testsuite/gas/v850/logical.s create mode 100644 gas/testsuite/gas/v850/mem.s create mode 100644 gas/testsuite/gas/v850/misc.s create mode 100644 gas/testsuite/gas/v850/move.s create mode 100644 gas/testsuite/gas/v850/range.s create mode 100644 gas/testsuite/gas/v850/reloc.s create mode 100644 gas/testsuite/gas/vax/quad.s mode change 100755 => 100644 gas/vmsconf.sh delete mode 100644 gprof/gprof.info-1 delete mode 100644 gprof/gprof.info-2 mode change 100755 => 100644 ld/emulparams/armcoff.sh mode change 100755 => 100644 ld/emulparams/d10velf.sh mode change 100755 => 100644 ld/emulparams/elf32_sparc.sh mode change 100755 => 100644 ld/emulparams/elf32b4300.sh mode change 100755 => 100644 ld/emulparams/elf32bmip.sh mode change 100755 => 100644 ld/emulparams/elf32ebmip.sh mode change 100755 => 100644 ld/emulparams/elf32elmip.sh mode change 100755 => 100644 ld/emulparams/elf32l4300.sh mode change 100755 => 100644 ld/emulparams/elf32lmip.sh mode change 100755 => 100644 ld/emulparams/elf32lppc.sh mode change 100755 => 100644 ld/emulparams/elf32ppc.sh mode change 100755 => 100644 ld/emulparams/elf64_sparc.sh mode change 100755 => 100644 ld/emulparams/i386go32.sh mode change 100755 => 100644 ld/emulparams/i386pe.sh mode change 100644 => 100755 ld/emulparams/mn10200.sh mode change 100644 => 100755 ld/emulparams/mn10300.sh mode change 100644 => 100755 ld/emulparams/shelf.sh mode change 100644 => 100755 ld/emulparams/shlelf.sh mode change 100644 => 100755 ld/emulparams/sparclinux.sh delete mode 100644 ld/ldint.info create mode 100644 ld/testsuite/ld-empic/runtesti.s create mode 100644 ld/testsuite/ld-scripts/defined.s create mode 100644 ld/testsuite/ld-scripts/phdrs.s create mode 100644 ld/testsuite/ld-scripts/script.s create mode 100644 ld/testsuite/ld-scripts/sizeof.s create mode 100644 ld/testsuite/ld-sh/sh1.s create mode 100644 ld/testsuite/ld-sh/start.s diff --git a/bfd/doc/bfd.info-6 b/bfd/doc/bfd.info-6 deleted file mode 100644 index 936605a..0000000 --- a/bfd/doc/bfd.info-6 +++ /dev/null @@ -1,1040 +0,0 @@ -This is Info file bfd.info, produced by Makeinfo version 1.68 from the -input file bfd.texinfo. - -START-INFO-DIR-ENTRY -* Bfd: (bfd). The Binary File Descriptor library. -END-INFO-DIR-ENTRY - - This file documents the BFD library. - - Copyright (C) 1991 Free Software Foundation, Inc. - - Permission is granted to make and distribute verbatim copies of this -manual provided the copyright notice and this permission notice are -preserved on all copies. - - Permission is granted to copy and distribute modified versions of -this manual under the conditions for verbatim copying, subject to the -terms of the GNU General Public License, which includes the provision -that the entire resulting derived work is distributed under the terms -of a permission notice identical to this one. - - Permission is granted to copy and distribute translations of this -manual into another language, under the above conditions for modified -versions. - - -File: bfd.info, Node: coff, Next: elf, Prev: aout, Up: BFD back ends - -coff backends -============= - - BFD supports a number of different flavours of coff format. The -major differences between formats are the sizes and alignments of -fields in structures on disk, and the occasional extra field. - - Coff in all its varieties is implemented with a few common files and -a number of implementation specific files. For example, The 88k bcs -coff format is implemented in the file `coff-m88k.c'. This file -`#include's `coff/m88k.h' which defines the external structure of the -coff format for the 88k, and `coff/internal.h' which defines the -internal structure. `coff-m88k.c' also defines the relocations used by -the 88k format *Note Relocations::. - - The Intel i960 processor version of coff is implemented in -`coff-i960.c'. This file has the same structure as `coff-m88k.c', -except that it includes `coff/i960.h' rather than `coff-m88k.h'. - -Porting to a new version of coff --------------------------------- - - The recommended method is to select from the existing -implementations the version of coff which is most like the one you want -to use. For example, we'll say that i386 coff is the one you select, -and that your coff flavour is called foo. Copy `i386coff.c' to -`foocoff.c', copy `../include/coff/i386.h' to `../include/coff/foo.h', -and add the lines to `targets.c' and `Makefile.in' so that your new -back end is used. Alter the shapes of the structures in -`../include/coff/foo.h' so that they match what you need. You will -probably also have to add `#ifdef's to the code in `coff/internal.h' and -`coffcode.h' if your version of coff is too wild. - - You can verify that your new BFD backend works quite simply by -building `objdump' from the `binutils' directory, and making sure that -its version of what's going on and your host system's idea (assuming it -has the pretty standard coff dump utility, usually called `att-dump' or -just `dump') are the same. Then clean up your code, and send what -you've done to Cygnus. Then your stuff will be in the next release, and -you won't have to keep integrating it. - -How the coff backend works --------------------------- - -File layout -........... - - The Coff backend is split into generic routines that are applicable -to any Coff target and routines that are specific to a particular -target. The target-specific routines are further split into ones which -are basically the same for all Coff targets except that they use the -external symbol format or use different values for certain constants. - - The generic routines are in `coffgen.c'. These routines work for -any Coff target. They use some hooks into the target specific code; -the hooks are in a `bfd_coff_backend_data' structure, one of which -exists for each target. - - The essentially similar target-specific routines are in -`coffcode.h'. This header file includes executable C code. The -various Coff targets first include the appropriate Coff header file, -make any special defines that are needed, and then include `coffcode.h'. - - Some of the Coff targets then also have additional routines in the -target source file itself. - - For example, `coff-i960.c' includes `coff/internal.h' and -`coff/i960.h'. It then defines a few constants, such as `I960', and -includes `coffcode.h'. Since the i960 has complex relocation types, -`coff-i960.c' also includes some code to manipulate the i960 relocs. -This code is not in `coffcode.h' because it would not be used by any -other target. - -Bit twiddling -............. - - Each flavour of coff supported in BFD has its own header file -describing the external layout of the structures. There is also an -internal description of the coff layout, in `coff/internal.h'. A major -function of the coff backend is swapping the bytes and twiddling the -bits to translate the external form of the structures into the normal -internal form. This is all performed in the `bfd_swap'_thing_direction -routines. Some elements are different sizes between different versions -of coff; it is the duty of the coff version specific include file to -override the definitions of various packing routines in `coffcode.h'. -E.g., the size of line number entry in coff is sometimes 16 bits, and -sometimes 32 bits. `#define'ing `PUT_LNSZ_LNNO' and `GET_LNSZ_LNNO' -will select the correct one. No doubt, some day someone will find a -version of coff which has a varying field size not catered to at the -moment. To port BFD, that person will have to add more `#defines'. -Three of the bit twiddling routines are exported to `gdb'; -`coff_swap_aux_in', `coff_swap_sym_in' and `coff_swap_linno_in'. `GDB' -reads the symbol table on its own, but uses BFD to fix things up. More -of the bit twiddlers are exported for `gas'; `coff_swap_aux_out', -`coff_swap_sym_out', `coff_swap_lineno_out', `coff_swap_reloc_out', -`coff_swap_filehdr_out', `coff_swap_aouthdr_out', -`coff_swap_scnhdr_out'. `Gas' currently keeps track of all the symbol -table and reloc drudgery itself, thereby saving the internal BFD -overhead, but uses BFD to swap things on the way out, making cross -ports much safer. Doing so also allows BFD (and thus the linker) to -use the same header files as `gas', which makes one avenue to disaster -disappear. - -Symbol reading -.............. - - The simple canonical form for symbols used by BFD is not rich enough -to keep all the information available in a coff symbol table. The back -end gets around this problem by keeping the original symbol table -around, "behind the scenes". - - When a symbol table is requested (through a call to -`bfd_canonicalize_symtab'), a request gets through to -`coff_get_normalized_symtab'. This reads the symbol table from the coff -file and swaps all the structures inside into the internal form. It -also fixes up all the pointers in the table (represented in the file by -offsets from the first symbol in the table) into physical pointers to -elements in the new internal table. This involves some work since the -meanings of fields change depending upon context: a field that is a -pointer to another structure in the symbol table at one moment may be -the size in bytes of a structure at the next. Another pass is made -over the table. All symbols which mark file names (`C_FILE' symbols) -are modified so that the internal string points to the value in the -auxent (the real filename) rather than the normal text associated with -the symbol (`".file"'). - - At this time the symbol names are moved around. Coff stores all -symbols less than nine characters long physically within the symbol -table; longer strings are kept at the end of the file in the string -table. This pass moves all strings into memory and replaces them with -pointers to the strings. - - The symbol table is massaged once again, this time to create the -canonical table used by the BFD application. Each symbol is inspected -in turn, and a decision made (using the `sclass' field) about the -various flags to set in the `asymbol'. *Note Symbols::. The generated -canonical table shares strings with the hidden internal symbol table. - - Any linenumbers are read from the coff file too, and attached to the -symbols which own the functions the linenumbers belong to. - -Symbol writing -.............. - - Writing a symbol to a coff file which didn't come from a coff file -will lose any debugging information. The `asymbol' structure remembers -the BFD from which the symbol was taken, and on output the back end -makes sure that the same destination target as source target is present. - - When the symbols have come from a coff file then all the debugging -information is preserved. - - Symbol tables are provided for writing to the back end in a vector -of pointers to pointers. This allows applications like the linker to -accumulate and output large symbol tables without having to do too much -byte copying. - - This function runs through the provided symbol table and patches -each symbol marked as a file place holder (`C_FILE') to point to the -next file place holder in the list. It also marks each `offset' field -in the list with the offset from the first symbol of the current symbol. - - Another function of this procedure is to turn the canonical value -form of BFD into the form used by coff. Internally, BFD expects symbol -values to be offsets from a section base; so a symbol physically at -0x120, but in a section starting at 0x100, would have the value 0x20. -Coff expects symbols to contain their final value, so symbols have -their values changed at this point to reflect their sum with their -owning section. This transformation uses the `output_section' field of -the `asymbol''s `asection' *Note Sections::. - - * `coff_mangle_symbols' This routine runs though the provided symbol -table and uses the offsets generated by the previous pass and the -pointers generated when the symbol table was read in to create the -structured hierachy required by coff. It changes each pointer to a -symbol into the index into the symbol table of the asymbol. - - * `coff_write_symbols' This routine runs through the symbol table -and patches up the symbols from their internal form into the coff way, -calls the bit twiddlers, and writes out the table to the file. - -`coff_symbol_type' -.................. - - *Description* -The hidden information for an `asymbol' is described in a -`combined_entry_type': - - - typedef struct coff_ptr_struct - { - - /* Remembers the offset from the first symbol in the file for - this symbol. Generated by coff_renumber_symbols. */ - unsigned int offset; - - /* Should the value of this symbol be renumbered. Used for - XCOFF C_BSTAT symbols. Set by coff_slurp_symbol_table. */ - unsigned int fix_value : 1; - - /* Should the tag field of this symbol be renumbered. - Created by coff_pointerize_aux. */ - unsigned int fix_tag : 1; - - /* Should the endidx field of this symbol be renumbered. - Created by coff_pointerize_aux. */ - unsigned int fix_end : 1; - - /* Should the x_csect.x_scnlen field be renumbered. - Created by coff_pointerize_aux. */ - unsigned int fix_scnlen : 1; - - /* Fix up an XCOFF C_BINCL/C_EINCL symbol. The value is the - index into the line number entries. Set by - coff_slurp_symbol_table. */ - unsigned int fix_line : 1; - - /* The container for the symbol structure as read and translated - from the file. */ - - union { - union internal_auxent auxent; - struct internal_syment syment; - } u; - } combined_entry_type; - - - /* Each canonical asymbol really looks like this: */ - - typedef struct coff_symbol_struct - { - /* The actual symbol which the rest of BFD works with */ - asymbol symbol; - - /* A pointer to the hidden information for this symbol */ - combined_entry_type *native; - - /* A pointer to the linenumber information for this symbol */ - struct lineno_cache_entry *lineno; - - /* Have the line numbers been relocated yet ? */ - boolean done_lineno; - } coff_symbol_type; - -`bfd_coff_backend_data' -....................... - - Special entry points for gdb to swap in coff symbol table parts: - typedef struct - { - void (*_bfd_coff_swap_aux_in) PARAMS (( - bfd *abfd, - PTR ext, - int type, - int class, - int indaux, - int numaux, - PTR in)); - - void (*_bfd_coff_swap_sym_in) PARAMS (( - bfd *abfd , - PTR ext, - PTR in)); - - void (*_bfd_coff_swap_lineno_in) PARAMS (( - bfd *abfd, - PTR ext, - PTR in)); - Special entry points for gas to swap out coff parts: - unsigned int (*_bfd_coff_swap_aux_out) PARAMS (( - bfd *abfd, - PTR in, - int type, - int class, - int indaux, - int numaux, - PTR ext)); - - unsigned int (*_bfd_coff_swap_sym_out) PARAMS (( - bfd *abfd, - PTR in, - PTR ext)); - - unsigned int (*_bfd_coff_swap_lineno_out) PARAMS (( - bfd *abfd, - PTR in, - PTR ext)); - - unsigned int (*_bfd_coff_swap_reloc_out) PARAMS (( - bfd *abfd, - PTR src, - PTR dst)); - - unsigned int (*_bfd_coff_swap_filehdr_out) PARAMS (( - bfd *abfd, - PTR in, - PTR out)); - - unsigned int (*_bfd_coff_swap_aouthdr_out) PARAMS (( - bfd *abfd, - PTR in, - PTR out)); - - unsigned int (*_bfd_coff_swap_scnhdr_out) PARAMS (( - bfd *abfd, - PTR in, - PTR out)); - Special entry points for generic COFF routines to call target -dependent COFF routines: - unsigned int _bfd_filhsz; - unsigned int _bfd_aoutsz; - unsigned int _bfd_scnhsz; - unsigned int _bfd_symesz; - unsigned int _bfd_auxesz; - unsigned int _bfd_relsz; - unsigned int _bfd_linesz; - boolean _bfd_coff_long_filenames; - boolean _bfd_coff_long_section_names; - unsigned int _bfd_coff_default_section_alignment_power; - void (*_bfd_coff_swap_filehdr_in) PARAMS (( - bfd *abfd, - PTR ext, - PTR in)); - void (*_bfd_coff_swap_aouthdr_in) PARAMS (( - bfd *abfd, - PTR ext, - PTR in)); - void (*_bfd_coff_swap_scnhdr_in) PARAMS (( - bfd *abfd, - PTR ext, - PTR in)); - void (*_bfd_coff_swap_reloc_in) PARAMS (( - bfd *abfd, - PTR ext, - PTR in)); - boolean (*_bfd_coff_bad_format_hook) PARAMS (( - bfd *abfd, - PTR internal_filehdr)); - boolean (*_bfd_coff_set_arch_mach_hook) PARAMS (( - bfd *abfd, - PTR internal_filehdr)); - PTR (*_bfd_coff_mkobject_hook) PARAMS (( - bfd *abfd, - PTR internal_filehdr, - PTR internal_aouthdr)); - flagword (*_bfd_styp_to_sec_flags_hook) PARAMS (( - bfd *abfd, - PTR internal_scnhdr, - const char *name)); - void (*_bfd_set_alignment_hook) PARAMS (( - bfd *abfd, - asection *sec, - PTR internal_scnhdr)); - boolean (*_bfd_coff_slurp_symbol_table) PARAMS (( - bfd *abfd)); - boolean (*_bfd_coff_symname_in_debug) PARAMS (( - bfd *abfd, - struct internal_syment *sym)); - boolean (*_bfd_coff_pointerize_aux_hook) PARAMS (( - bfd *abfd, - combined_entry_type *table_base, - combined_entry_type *symbol, - unsigned int indaux, - combined_entry_type *aux)); - boolean (*_bfd_coff_print_aux) PARAMS (( - bfd *abfd, - FILE *file, - combined_entry_type *table_base, - combined_entry_type *symbol, - combined_entry_type *aux, - unsigned int indaux)); - void (*_bfd_coff_reloc16_extra_cases) PARAMS (( - bfd *abfd, - struct bfd_link_info *link_info, - struct bfd_link_order *link_order, - arelent *reloc, - bfd_byte *data, - unsigned int *src_ptr, - unsigned int *dst_ptr)); - int (*_bfd_coff_reloc16_estimate) PARAMS (( - bfd *abfd, - asection *input_section, - arelent *r, - unsigned int shrink, - struct bfd_link_info *link_info)); - boolean (*_bfd_coff_sym_is_global) PARAMS (( - bfd *abfd, - struct internal_syment *)); - boolean (*_bfd_coff_compute_section_file_positions) PARAMS (( - bfd *abfd)); - boolean (*_bfd_coff_start_final_link) PARAMS (( - bfd *output_bfd, - struct bfd_link_info *info)); - boolean (*_bfd_coff_relocate_section) PARAMS (( - bfd *output_bfd, - struct bfd_link_info *info, - bfd *input_bfd, - asection *input_section, - bfd_byte *contents, - struct internal_reloc *relocs, - struct internal_syment *syms, - asection **sections)); - reloc_howto_type *(*_bfd_coff_rtype_to_howto) PARAMS (( - bfd *abfd, - asection *sec, - struct internal_reloc *rel, - struct coff_link_hash_entry *h, - struct internal_syment *sym, - bfd_vma *addendp)); - boolean (*_bfd_coff_adjust_symndx) PARAMS (( - bfd *obfd, - struct bfd_link_info *info, - bfd *ibfd, - asection *sec, - struct internal_reloc *reloc, - boolean *adjustedp)); - boolean (*_bfd_coff_link_add_one_symbol) PARAMS (( - struct bfd_link_info *info, - bfd *abfd, - const char *name, - flagword flags, - asection *section, - bfd_vma value, - const char *string, - boolean copy, - boolean collect, - struct bfd_link_hash_entry **hashp)); - - boolean (*_bfd_coff_link_output_has_begun) PARAMS (( - bfd * abfd )); - boolean (*_bfd_coff_final_link_postscript) PARAMS (( - bfd * abfd, - struct coff_final_link_info * pfinfo)); - - } bfd_coff_backend_data; - - #define coff_backend_info(abfd) ((bfd_coff_backend_data *) (abfd)->xvec->backend_data) - - #define bfd_coff_swap_aux_in(a,e,t,c,ind,num,i) \ - ((coff_backend_info (a)->_bfd_coff_swap_aux_in) (a,e,t,c,ind,num,i)) - - #define bfd_coff_swap_sym_in(a,e,i) \ - ((coff_backend_info (a)->_bfd_coff_swap_sym_in) (a,e,i)) - - #define bfd_coff_swap_lineno_in(a,e,i) \ - ((coff_backend_info ( a)->_bfd_coff_swap_lineno_in) (a,e,i)) - - #define bfd_coff_swap_reloc_out(abfd, i, o) \ - ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_out) (abfd, i, o)) - - #define bfd_coff_swap_lineno_out(abfd, i, o) \ - ((coff_backend_info (abfd)->_bfd_coff_swap_lineno_out) (abfd, i, o)) - - #define bfd_coff_swap_aux_out(a,i,t,c,ind,num,o) \ - ((coff_backend_info (a)->_bfd_coff_swap_aux_out) (a,i,t,c,ind,num,o)) - - #define bfd_coff_swap_sym_out(abfd, i,o) \ - ((coff_backend_info (abfd)->_bfd_coff_swap_sym_out) (abfd, i, o)) - - #define bfd_coff_swap_scnhdr_out(abfd, i,o) \ - ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_out) (abfd, i, o)) - - #define bfd_coff_swap_filehdr_out(abfd, i,o) \ - ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_out) (abfd, i, o)) - - #define bfd_coff_swap_aouthdr_out(abfd, i,o) \ - ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_out) (abfd, i, o)) - - #define bfd_coff_filhsz(abfd) (coff_backend_info (abfd)->_bfd_filhsz) - #define bfd_coff_aoutsz(abfd) (coff_backend_info (abfd)->_bfd_aoutsz) - #define bfd_coff_scnhsz(abfd) (coff_backend_info (abfd)->_bfd_scnhsz) - #define bfd_coff_symesz(abfd) (coff_backend_info (abfd)->_bfd_symesz) - #define bfd_coff_auxesz(abfd) (coff_backend_info (abfd)->_bfd_auxesz) - #define bfd_coff_relsz(abfd) (coff_backend_info (abfd)->_bfd_relsz) - #define bfd_coff_linesz(abfd) (coff_backend_info (abfd)->_bfd_linesz) - #define bfd_coff_long_filenames(abfd) (coff_backend_info (abfd)->_bfd_coff_long_filenames) - #define bfd_coff_long_section_names(abfd) \ - (coff_backend_info (abfd)->_bfd_coff_long_section_names) - #define bfd_coff_default_section_alignment_power(abfd) \ - (coff_backend_info (abfd)->_bfd_coff_default_section_alignment_power) - #define bfd_coff_swap_filehdr_in(abfd, i,o) \ - ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_in) (abfd, i, o)) - - #define bfd_coff_swap_aouthdr_in(abfd, i,o) \ - ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_in) (abfd, i, o)) - - #define bfd_coff_swap_scnhdr_in(abfd, i,o) \ - ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_in) (abfd, i, o)) - - #define bfd_coff_swap_reloc_in(abfd, i, o) \ - ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_in) (abfd, i, o)) - - #define bfd_coff_bad_format_hook(abfd, filehdr) \ - ((coff_backend_info (abfd)->_bfd_coff_bad_format_hook) (abfd, filehdr)) - - #define bfd_coff_set_arch_mach_hook(abfd, filehdr)\ - ((coff_backend_info (abfd)->_bfd_coff_set_arch_mach_hook) (abfd, filehdr)) - #define bfd_coff_mkobject_hook(abfd, filehdr, aouthdr)\ - ((coff_backend_info (abfd)->_bfd_coff_mkobject_hook) (abfd, filehdr, aouthdr)) - - #define bfd_coff_styp_to_sec_flags_hook(abfd, scnhdr, name)\ - ((coff_backend_info (abfd)->_bfd_styp_to_sec_flags_hook) (abfd, scnhdr, name)) - - #define bfd_coff_set_alignment_hook(abfd, sec, scnhdr)\ - ((coff_backend_info (abfd)->_bfd_set_alignment_hook) (abfd, sec, scnhdr)) - - #define bfd_coff_slurp_symbol_table(abfd)\ - ((coff_backend_info (abfd)->_bfd_coff_slurp_symbol_table) (abfd)) - - #define bfd_coff_symname_in_debug(abfd, sym)\ - ((coff_backend_info (abfd)->_bfd_coff_symname_in_debug) (abfd, sym)) - - #define bfd_coff_print_aux(abfd, file, base, symbol, aux, indaux)\ - ((coff_backend_info (abfd)->_bfd_coff_print_aux)\ - (abfd, file, base, symbol, aux, indaux)) - - #define bfd_coff_reloc16_extra_cases(abfd, link_info, link_order, reloc, data, src_ptr, dst_ptr)\ - ((coff_backend_info (abfd)->_bfd_coff_reloc16_extra_cases)\ - (abfd, link_info, link_order, reloc, data, src_ptr, dst_ptr)) - - #define bfd_coff_reloc16_estimate(abfd, section, reloc, shrink, link_info)\ - ((coff_backend_info (abfd)->_bfd_coff_reloc16_estimate)\ - (abfd, section, reloc, shrink, link_info)) - - #define bfd_coff_sym_is_global(abfd, sym)\ - ((coff_backend_info (abfd)->_bfd_coff_sym_is_global)\ - (abfd, sym)) - - #define bfd_coff_compute_section_file_positions(abfd)\ - ((coff_backend_info (abfd)->_bfd_coff_compute_section_file_positions)\ - (abfd)) - - #define bfd_coff_start_final_link(obfd, info)\ - ((coff_backend_info (obfd)->_bfd_coff_start_final_link)\ - (obfd, info)) - #define bfd_coff_relocate_section(obfd,info,ibfd,o,con,rel,isyms,secs)\ - ((coff_backend_info (ibfd)->_bfd_coff_relocate_section)\ - (obfd, info, ibfd, o, con, rel, isyms, secs)) - #define bfd_coff_rtype_to_howto(abfd, sec, rel, h, sym, addendp)\ - ((coff_backend_info (abfd)->_bfd_coff_rtype_to_howto)\ - (abfd, sec, rel, h, sym, addendp)) - #define bfd_coff_adjust_symndx(obfd, info, ibfd, sec, rel, adjustedp)\ - ((coff_backend_info (abfd)->_bfd_coff_adjust_symndx)\ - (obfd, info, ibfd, sec, rel, adjustedp)) - #define bfd_coff_link_add_one_symbol(info,abfd,name,flags,section,value,string,cp,coll,hashp)\ - ((coff_backend_info (abfd)->_bfd_coff_link_add_one_symbol)\ - (info, abfd, name, flags, section, value, string, cp, coll, hashp)) - - #define bfd_coff_link_output_has_begun(a) \ - ((coff_backend_info (a)->_bfd_coff_link_output_has_begun) (a)) - #define bfd_coff_final_link_postscript(a,p) \ - ((coff_backend_info (a)->_bfd_coff_final_link_postscript) (a,p)) - -Writing relocations -................... - - To write relocations, the back end steps though the canonical -relocation table and create an `internal_reloc'. The symbol index to -use is removed from the `offset' field in the symbol table supplied. -The address comes directly from the sum of the section base address and -the relocation offset; the type is dug directly from the howto field. -Then the `internal_reloc' is swapped into the shape of an -`external_reloc' and written out to disk. - -Reading linenumbers -................... - - Creating the linenumber table is done by reading in the entire coff -linenumber table, and creating another table for internal use. - - A coff linenumber table is structured so that each function is -marked as having a line number of 0. Each line within the function is -an offset from the first line in the function. The base of the line -number information for the table is stored in the symbol associated -with the function. - - The information is copied from the external to the internal table, -and each symbol which marks a function is marked by pointing its... - - How does this work ? - -Reading relocations -................... - - Coff relocations are easily transformed into the internal BFD form -(`arelent'). - - Reading a coff relocation table is done in the following stages: - - * Read the entire coff relocation table into memory. - - * Process each relocation in turn; first swap it from the external - to the internal form. - - * Turn the symbol referenced in the relocation's symbol index into a - pointer into the canonical symbol table. This table is the same - as the one returned by a call to `bfd_canonicalize_symtab'. The - back end will call that routine and save the result if a - canonicalization hasn't been done. - - * The reloc index is turned into a pointer to a howto structure, in - a back end specific way. For instance, the 386 and 960 use the - `r_type' to directly produce an index into a howto table vector; - the 88k subtracts a number from the `r_type' field and creates an - addend field. - - -File: bfd.info, Node: elf, Prev: coff, Up: BFD back ends - -ELF backends -============ - - BFD support for ELF formats is being worked on. Currently, the best -supported back ends are for sparc and i386 (running svr4 or Solaris 2). - - Documentation of the internals of the support code still needs to be -written. The code is changing quickly enough that we haven't bothered -yet. - -`bfd_elf_find_section' -...................... - - *Synopsis* - struct elf_internal_shdr *bfd_elf_find_section (bfd *abfd, char *name); - *Description* -Helper functions for GDB to locate the string tables. Since BFD hides -string tables from callers, GDB needs to use an internal hook to find -them. Sun's .stabstr, in particular, isn't even pointed to by the -.stab section, so ordinary mechanisms wouldn't work to find it, even if -we had some. - - -File: bfd.info, Node: Index, Prev: BFD back ends, Up: Top - -Index -***** - -* Menu: - -* _bfd_final_link_relocate: Relocating the section contents. -* _bfd_generic_link_add_archive_symbols: Adding symbols from an archive. -* _bfd_generic_link_add_one_symbol: Adding symbols from an object file. -* _bfd_link_add_symbols in target vector: Adding Symbols to the Hash Table. -* _bfd_link_final_link in target vector: Performing the Final Link. -* _bfd_link_hash_table_create in target vector: Creating a Linker Hash Table. -* _bfd_relocate_contents: Relocating the section contents. -* aout_SIZE_machine_type: aout. -* aout_SIZE_mkobject: aout. -* aout_SIZE_new_section_hook: aout. -* aout_SIZE_set_arch_mach: aout. -* aout_SIZE_some_aout_object_p: aout. -* aout_SIZE_swap_exec_header_in: aout. -* aout_SIZE_swap_exec_header_out: aout. -* arelent_chain: typedef arelent. -* BFD: Overview. -* BFD canonical format: Canonical format. -* bfd_alloc: Opening and Closing. -* bfd_arch_bits_per_address: Architectures. -* bfd_arch_bits_per_byte: Architectures. -* bfd_arch_get_compatible: Architectures. -* bfd_arch_list: Architectures. -* bfd_cache_close: File Caching. -* bfd_cache_init: File Caching. -* bfd_cache_lookup: File Caching. -* bfd_cache_lookup_worker: File Caching. -* BFD_CACHE_MAX_OPEN macro: File Caching. -* bfd_canonicalize_reloc: BFD front end. -* bfd_canonicalize_symtab: symbol handling functions. -* bfd_check_format: Formats. -* bfd_check_format_matches: Formats. -* bfd_check_overflow: typedef arelent. -* bfd_close: Opening and Closing. -* bfd_close_all_done: Opening and Closing. -* bfd_coff_backend_data: coff. -* bfd_copy_private_bfd_data: BFD front end. -* bfd_copy_private_section_data: section prototypes. -* bfd_copy_private_symbol_data: symbol handling functions. -* bfd_core_file_failing_command: Core Files. -* bfd_core_file_failing_signal: Core Files. -* bfd_create: Opening and Closing. -* bfd_decode_symclass: symbol handling functions. -* bfd_default_arch_struct: Architectures. -* bfd_default_compatible: Architectures. -* bfd_default_reloc_type_lookup: howto manager. -* bfd_default_scan: Architectures. -* bfd_default_set_arch_mach: Architectures. -* bfd_elf_find_section: elf. -* bfd_errmsg: BFD front end. -* bfd_fdopenr: Opening and Closing. -* bfd_find_target: bfd_target. -* bfd_format_string: Formats. -* bfd_generic_get_relocated_section_contents: howto manager. -* bfd_generic_relax_section: howto manager. -* bfd_get_arch: Architectures. -* bfd_get_arch_info: Architectures. -* bfd_get_error: BFD front end. -* bfd_get_error_handler: BFD front end. -* bfd_get_gp_size: BFD front end. -* bfd_get_mach: Architectures. -* bfd_get_mtime: BFD front end. -* bfd_get_next_mapent: Archives. -* bfd_get_reloc_code_name: howto manager. -* bfd_get_reloc_size: typedef arelent. -* bfd_get_reloc_upper_bound: BFD front end. -* bfd_get_section_by_name: section prototypes. -* bfd_get_section_contents: section prototypes. -* bfd_get_size <1>: BFD front end. -* bfd_get_size: Internal. -* bfd_get_symtab_upper_bound: symbol handling functions. -* bfd_h_put_size: Internal. -* bfd_hash_allocate: Creating and Freeing a Hash Table. -* bfd_hash_lookup: Looking Up or Entering a String. -* bfd_hash_newfunc: Creating and Freeing a Hash Table. -* bfd_hash_table_free: Creating and Freeing a Hash Table. -* bfd_hash_table_init: Creating and Freeing a Hash Table. -* bfd_hash_table_init_n: Creating and Freeing a Hash Table. -* bfd_hash_traverse: Traversing a Hash Table. -* bfd_init: Initialization. -* bfd_install_relocation: typedef arelent. -* bfd_is_local_label: symbol handling functions. -* bfd_is_local_label_name: symbol handling functions. -* bfd_last_cache: File Caching. -* bfd_link_split_section: Writing the symbol table. -* bfd_log2: Internal. -* bfd_lookup_arch: Architectures. -* bfd_make_debug_symbol: symbol handling functions. -* bfd_make_empty_symbol: symbol handling functions. -* bfd_make_section: section prototypes. -* bfd_make_section_anyway: section prototypes. -* bfd_make_section_old_way: section prototypes. -* bfd_map_over_sections: section prototypes. -* bfd_merge_private_bfd_data: BFD front end. -* bfd_open_file: File Caching. -* bfd_openr: Opening and Closing. -* bfd_openr_next_archived_file: Archives. -* bfd_openstreamr: Opening and Closing. -* bfd_openw: Opening and Closing. -* bfd_perform_relocation: typedef arelent. -* bfd_perror: BFD front end. -* bfd_print_symbol_vandf: symbol handling functions. -* bfd_printable_arch_mach: Architectures. -* bfd_printable_name: Architectures. -* bfd_put_size: Internal. -* BFD_RELOC_12_PCREL: howto manager. -* BFD_RELOC_14: howto manager. -* BFD_RELOC_16: howto manager. -* BFD_RELOC_16_BASEREL: howto manager. -* BFD_RELOC_16_GOT_PCREL: howto manager. -* BFD_RELOC_16_GOTOFF: howto manager. -* BFD_RELOC_16_PCREL: howto manager. -* BFD_RELOC_16_PCREL_S2: howto manager. -* BFD_RELOC_16_PLT_PCREL: howto manager. -* BFD_RELOC_16_PLTOFF: howto manager. -* BFD_RELOC_23_PCREL_S2: howto manager. -* BFD_RELOC_24: howto manager. -* BFD_RELOC_24_PCREL: howto manager. -* BFD_RELOC_24_PLT_PCREL: howto manager. -* BFD_RELOC_26: howto manager. -* BFD_RELOC_32: howto manager. -* BFD_RELOC_32_BASEREL: howto manager. -* BFD_RELOC_32_GOT_PCREL: howto manager. -* BFD_RELOC_32_GOTOFF: howto manager. -* BFD_RELOC_32_PCREL: howto manager. -* BFD_RELOC_32_PCREL_S2: howto manager. -* BFD_RELOC_32_PLT_PCREL: howto manager. -* BFD_RELOC_32_PLTOFF: howto manager. -* BFD_RELOC_386_COPY: howto manager. -* BFD_RELOC_386_GLOB_DAT: howto manager. -* BFD_RELOC_386_GOT32: howto manager. -* BFD_RELOC_386_GOTOFF: howto manager. -* BFD_RELOC_386_GOTPC: howto manager. -* BFD_RELOC_386_JUMP_SLOT: howto manager. -* BFD_RELOC_386_PLT32: howto manager. -* BFD_RELOC_386_RELATIVE: howto manager. -* BFD_RELOC_64: howto manager. -* BFD_RELOC_64_PCREL: howto manager. -* BFD_RELOC_68K_GLOB_DAT: howto manager. -* BFD_RELOC_68K_JMP_SLOT: howto manager. -* BFD_RELOC_68K_RELATIVE: howto manager. -* BFD_RELOC_8: howto manager. -* BFD_RELOC_8_BASEREL: howto manager. -* BFD_RELOC_8_FFnn: howto manager. -* BFD_RELOC_8_GOT_PCREL: howto manager. -* BFD_RELOC_8_GOTOFF: howto manager. -* BFD_RELOC_8_PCREL: howto manager. -* BFD_RELOC_8_PLT_PCREL: howto manager. -* BFD_RELOC_8_PLTOFF: howto manager. -* BFD_RELOC_ALPHA_CODEADDR: howto manager. -* BFD_RELOC_ALPHA_ELF_LITERAL: howto manager. -* BFD_RELOC_ALPHA_GPDISP: howto manager. -* BFD_RELOC_ALPHA_GPDISP_HI16: howto manager. -* BFD_RELOC_ALPHA_GPDISP_LO16: howto manager. -* BFD_RELOC_ALPHA_HINT: howto manager. -* BFD_RELOC_ALPHA_LINKAGE: howto manager. -* BFD_RELOC_ALPHA_LITERAL: howto manager. -* BFD_RELOC_ALPHA_LITUSE: howto manager. -* BFD_RELOC_ARC_B22_PCREL: howto manager. -* BFD_RELOC_ARC_B26: howto manager. -* BFD_RELOC_ARM_ADR_IMM: howto manager. -* BFD_RELOC_ARM_CP_OFF_IMM: howto manager. -* BFD_RELOC_ARM_HWLITERAL: howto manager. -* BFD_RELOC_ARM_IMMEDIATE: howto manager. -* BFD_RELOC_ARM_IN_POOL: howto manager. -* BFD_RELOC_ARM_LDR_IMM: howto manager. -* BFD_RELOC_ARM_LITERAL: howto manager. -* BFD_RELOC_ARM_MULTI: howto manager. -* BFD_RELOC_ARM_OFFSET_IMM: howto manager. -* BFD_RELOC_ARM_OFFSET_IMM8: howto manager. -* BFD_RELOC_ARM_PCREL_BRANCH: howto manager. -* BFD_RELOC_ARM_SHIFT_IMM: howto manager. -* BFD_RELOC_ARM_SWI: howto manager. -* BFD_RELOC_ARM_THUMB_ADD: howto manager. -* BFD_RELOC_ARM_THUMB_IMM: howto manager. -* BFD_RELOC_ARM_THUMB_OFFSET: howto manager. -* BFD_RELOC_ARM_THUMB_SHIFT: howto manager. -* bfd_reloc_code_type: howto manager. -* BFD_RELOC_CTOR: howto manager. -* BFD_RELOC_D10V_10_PCREL_L: howto manager. -* BFD_RELOC_D10V_10_PCREL_R: howto manager. -* BFD_RELOC_D10V_18: howto manager. -* BFD_RELOC_D10V_18_PCREL: howto manager. -* BFD_RELOC_GPREL16: howto manager. -* BFD_RELOC_GPREL32: howto manager. -* BFD_RELOC_HI16: howto manager. -* BFD_RELOC_HI16_BASEREL: howto manager. -* BFD_RELOC_HI16_GOTOFF: howto manager. -* BFD_RELOC_HI16_PLTOFF: howto manager. -* BFD_RELOC_HI16_S: howto manager. -* BFD_RELOC_HI16_S_BASEREL: howto manager. -* BFD_RELOC_HI16_S_GOTOFF: howto manager. -* BFD_RELOC_HI16_S_PLTOFF: howto manager. -* BFD_RELOC_HI22: howto manager. -* BFD_RELOC_I960_CALLJ: howto manager. -* BFD_RELOC_LO10: howto manager. -* BFD_RELOC_LO16: howto manager. -* BFD_RELOC_LO16_BASEREL: howto manager. -* BFD_RELOC_LO16_GOTOFF: howto manager. -* BFD_RELOC_LO16_PLTOFF: howto manager. -* BFD_RELOC_M32R_10_PCREL: howto manager. -* BFD_RELOC_M32R_18_PCREL: howto manager. -* BFD_RELOC_M32R_24: howto manager. -* BFD_RELOC_M32R_26_PCREL: howto manager. -* BFD_RELOC_M32R_HI16_SLO: howto manager. -* BFD_RELOC_M32R_HI16_ULO: howto manager. -* BFD_RELOC_M32R_LO16: howto manager. -* BFD_RELOC_M32R_SDA16: howto manager. -* BFD_RELOC_MIPS16_GPREL: howto manager. -* BFD_RELOC_MIPS16_JMP: howto manager. -* BFD_RELOC_MIPS_CALL16: howto manager. -* BFD_RELOC_MIPS_CALL_HI16: howto manager. -* BFD_RELOC_MIPS_CALL_LO16: howto manager. -* BFD_RELOC_MIPS_GOT16: howto manager. -* BFD_RELOC_MIPS_GOT_HI16: howto manager. -* BFD_RELOC_MIPS_GOT_LO16: howto manager. -* BFD_RELOC_MIPS_GPREL: howto manager. -* BFD_RELOC_MIPS_GPREL32: howto manager. -* BFD_RELOC_MIPS_JMP: howto manager. -* BFD_RELOC_MIPS_LITERAL: howto manager. -* BFD_RELOC_MN10300_16_PCREL: howto manager. -* BFD_RELOC_MN10300_32_PCREL: howto manager. -* BFD_RELOC_NONE: howto manager. -* BFD_RELOC_NS32K_DISP_16: howto manager. -* BFD_RELOC_NS32K_DISP_16_PCREL: howto manager. -* BFD_RELOC_NS32K_DISP_32: howto manager. -* BFD_RELOC_NS32K_DISP_32_PCREL: howto manager. -* BFD_RELOC_NS32K_DISP_8: howto manager. -* BFD_RELOC_NS32K_DISP_8_PCREL: howto manager. -* BFD_RELOC_NS32K_IMM_16: howto manager. -* BFD_RELOC_NS32K_IMM_16_PCREL: howto manager. -* BFD_RELOC_NS32K_IMM_32: howto manager. -* BFD_RELOC_NS32K_IMM_32_PCREL: howto manager. -* BFD_RELOC_NS32K_IMM_8: howto manager. -* BFD_RELOC_NS32K_IMM_8_PCREL: howto manager. -* BFD_RELOC_PCREL_HI16_S: howto manager. -* BFD_RELOC_PCREL_LO16: howto manager. -* BFD_RELOC_PPC_B16: howto manager. -* BFD_RELOC_PPC_B16_BRNTAKEN: howto manager. -* BFD_RELOC_PPC_B16_BRTAKEN: howto manager. -* BFD_RELOC_PPC_B26: howto manager. -* BFD_RELOC_PPC_BA16: howto manager. -* BFD_RELOC_PPC_BA16_BRNTAKEN: howto manager. -* BFD_RELOC_PPC_BA16_BRTAKEN: howto manager. -* BFD_RELOC_PPC_BA26: howto manager. -* BFD_RELOC_PPC_COPY: howto manager. -* BFD_RELOC_PPC_EMB_BIT_FLD: howto manager. -* BFD_RELOC_PPC_EMB_MRKREF: howto manager. -* BFD_RELOC_PPC_EMB_NADDR16: howto manager. -* BFD_RELOC_PPC_EMB_NADDR16_HA: howto manager. -* BFD_RELOC_PPC_EMB_NADDR16_HI: howto manager. -* BFD_RELOC_PPC_EMB_NADDR16_LO: howto manager. -* BFD_RELOC_PPC_EMB_NADDR32: howto manager. -* BFD_RELOC_PPC_EMB_RELSDA: howto manager. -* BFD_RELOC_PPC_EMB_RELSEC16: howto manager. -* BFD_RELOC_PPC_EMB_RELST_HA: howto manager. -* BFD_RELOC_PPC_EMB_RELST_HI: howto manager. -* BFD_RELOC_PPC_EMB_RELST_LO: howto manager. -* BFD_RELOC_PPC_EMB_SDA21: howto manager. -* BFD_RELOC_PPC_EMB_SDA2I16: howto manager. -* BFD_RELOC_PPC_EMB_SDA2REL: howto manager. -* BFD_RELOC_PPC_EMB_SDAI16: howto manager. -* BFD_RELOC_PPC_GLOB_DAT: howto manager. -* BFD_RELOC_PPC_JMP_SLOT: howto manager. -* BFD_RELOC_PPC_LOCAL24PC: howto manager. -* BFD_RELOC_PPC_RELATIVE: howto manager. -* BFD_RELOC_PPC_TOC16: howto manager. -* BFD_RELOC_RVA: howto manager. -* BFD_RELOC_SH_ALIGN: howto manager. -* BFD_RELOC_SH_CODE: howto manager. -* BFD_RELOC_SH_COUNT: howto manager. -* BFD_RELOC_SH_DATA: howto manager. -* BFD_RELOC_SH_IMM4: howto manager. -* BFD_RELOC_SH_IMM4BY2: howto manager. -* BFD_RELOC_SH_IMM4BY4: howto manager. -* BFD_RELOC_SH_IMM8: howto manager. -* BFD_RELOC_SH_IMM8BY2: howto manager. -* BFD_RELOC_SH_IMM8BY4: howto manager. -* BFD_RELOC_SH_LABEL: howto manager. -* BFD_RELOC_SH_PCDISP12BY2: howto manager. -* BFD_RELOC_SH_PCDISP8BY2: howto manager. -* BFD_RELOC_SH_PCRELIMM8BY2: howto manager. -* BFD_RELOC_SH_PCRELIMM8BY4: howto manager. -* BFD_RELOC_SH_SWITCH16: howto manager. -* BFD_RELOC_SH_SWITCH32: howto manager. -* BFD_RELOC_SH_USES: howto manager. -* BFD_RELOC_SPARC13: howto manager. -* BFD_RELOC_SPARC22: howto manager. -* BFD_RELOC_SPARC_10: howto manager. -* BFD_RELOC_SPARC_11: howto manager. -* BFD_RELOC_SPARC_5: howto manager. -* BFD_RELOC_SPARC_6: howto manager. -* BFD_RELOC_SPARC_64: howto manager. -* BFD_RELOC_SPARC_7: howto manager. -* BFD_RELOC_SPARC_BASE13: howto manager. -* BFD_RELOC_SPARC_BASE22: howto manager. -* BFD_RELOC_SPARC_COPY: howto manager. -* BFD_RELOC_SPARC_DISP64: howto manager. -* BFD_RELOC_SPARC_GLOB_DAT: howto manager. -* BFD_RELOC_SPARC_GOT10: howto manager. -* BFD_RELOC_SPARC_GOT13: howto manager. -* BFD_RELOC_SPARC_GOT22: howto manager. -* BFD_RELOC_SPARC_H44: howto manager. -* BFD_RELOC_SPARC_HH22: howto manager. -* BFD_RELOC_SPARC_HIX22: howto manager. -* BFD_RELOC_SPARC_HM10: howto manager. -* BFD_RELOC_SPARC_JMP_SLOT: howto manager. -* BFD_RELOC_SPARC_L44: howto manager. -* BFD_RELOC_SPARC_LM22: howto manager. -* BFD_RELOC_SPARC_LOX10: howto manager. -* BFD_RELOC_SPARC_M44: howto manager. -* BFD_RELOC_SPARC_OLO10: howto manager. -* BFD_RELOC_SPARC_PC10: howto manager. -* BFD_RELOC_SPARC_PC22: howto manager. -* BFD_RELOC_SPARC_PC_HH22: howto manager. -* BFD_RELOC_SPARC_PC_HM10: howto manager. -* BFD_RELOC_SPARC_PC_LM22: howto manager. -* BFD_RELOC_SPARC_PLT64: howto manager. -* BFD_RELOC_SPARC_REGISTER: howto manager. -* BFD_RELOC_SPARC_RELATIVE: howto manager. -* BFD_RELOC_SPARC_UA32: howto manager. -* BFD_RELOC_SPARC_WDISP16: howto manager. -* BFD_RELOC_SPARC_WDISP19: howto manager. -* BFD_RELOC_SPARC_WDISP22: howto manager. -* BFD_RELOC_SPARC_WPLT30: howto manager. -* BFD_RELOC_THUMB_PCREL_BRANCH12: howto manager. -* BFD_RELOC_THUMB_PCREL_BRANCH23: howto manager. -* BFD_RELOC_THUMB_PCREL_BRANCH9: howto manager. -* BFD_RELOC_TIC30_LDP: howto manager. -* bfd_reloc_type_lookup: howto manager. -* BFD_RELOC_V850_22_PCREL: howto manager. -* BFD_RELOC_V850_9_PCREL: howto manager. -* BFD_RELOC_V850_SDA_15_16_OFFSET: howto manager. -* BFD_RELOC_V850_SDA_16_16_OFFSET: howto manager. -* BFD_RELOC_V850_TDA_16_16_OFFSET: howto manager. -* BFD_RELOC_V850_TDA_6_8_OFFSET: howto manager. -* BFD_RELOC_V850_TDA_7_7_OFFSET: howto manager. -* BFD_RELOC_V850_TDA_7_8_OFFSET: howto manager. -* BFD_RELOC_V850_ZDA_15_16_OFFSET: howto manager. -* BFD_RELOC_V850_ZDA_16_16_OFFSET: howto manager. -* bfd_scan_arch: Architectures. -* bfd_scan_vma: BFD front end. -* bfd_set_arch_info: Architectures. -* bfd_set_archive_head: Archives. -* bfd_set_default_target: bfd_target. -* bfd_set_error: BFD front end. -* bfd_set_error_handler: BFD front end. -* bfd_set_error_program_name: BFD front end. -* bfd_set_file_flags: BFD front end. -* bfd_set_format: Formats. -* bfd_set_gp_size: BFD front end. -* bfd_set_private_flags: BFD front end. -* bfd_set_reloc: BFD front end. -* bfd_set_section_contents: section prototypes. -* bfd_set_section_flags: section prototypes. -* bfd_set_section_size: section prototypes. -* bfd_set_start_address: BFD front end. -* bfd_set_symtab: symbol handling functions. -* bfd_symbol_info: symbol handling functions. -* bfd_target_list: bfd_target. -* bfd_write_bigendian_4byte_int: Internal. -* coff_symbol_type: coff. -* core_file_matches_executable_p: Core Files. -* Hash tables: Hash Tables. -* internal object-file format: Canonical format. -* Linker: Linker Functions. -* stuff: BFD front end. -* target vector (_bfd_final_link): Performing the Final Link. -* target vector (_bfd_link_add_symbols): Adding Symbols to the Hash Table. -* target vector (_bfd_link_hash_table_create): Creating a Linker Hash Table. -* The HOWTO Macro: typedef arelent. -* what is it?: Overview. - - diff --git a/binutils/testsuite/binutils-all/bintest.s b/binutils/testsuite/binutils-all/bintest.s new file mode 100644 index 0000000..9e00650 --- /dev/null +++ b/binutils/testsuite/binutils-all/bintest.s @@ -0,0 +1,12 @@ + .globl text_symbol + .text +text_symbol: +static_text_symbol: + .long 1 + .long external_symbol + .globl data_symbol + .data +data_symbol: +static_data_symbol: + .long 2 + .comm common_symbol,4 diff --git a/binutils/testsuite/binutils-all/hppa/addendbug.s b/binutils/testsuite/binutils-all/hppa/addendbug.s new file mode 100644 index 0000000..659306f --- /dev/null +++ b/binutils/testsuite/binutils-all/hppa/addendbug.s @@ -0,0 +1,23 @@ + .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 + .IMPORT $global$,DATA + .IMPORT $$dyncall,MILLICODE +; gcc_compiled.: + .SPACE $TEXT$ + .SUBSPA $CODE$ + + .align 4 + .EXPORT initialize_char_syntax,CODE + .EXPORT initialize_char_syntax,ENTRY,PRIV_LEV=3,RTNVAL=GR +initialize_char_syntax + .PROC + .CALLINFO FRAME=64,NO_CALLS,SAVE_SP,ENTRY_GR=3 + .ENTRY + addil L'is_idchar-$global$-32,%r27 + .EXIT + .PROCEND +is_idchar .comm 256 diff --git a/gas/testsuite/gas/all/align.s b/gas/testsuite/gas/all/align.s new file mode 100644 index 0000000..9ccca13 --- /dev/null +++ b/gas/testsuite/gas/all/align.s @@ -0,0 +1,61 @@ +/* Test the alignment pseudo-ops. */ + .text + + .byte 0xff + .p2align 1,0 + + .byte 0xff + .p2align 1,1 + + .byte 0xff + .p2align 2,2 + + .byte 0xff + .byte 0xff + .p2alignw 2,0x0303 + + .p2align 3,4 + .byte 0xff + .byte 0xff + .byte 0xff + .byte 0xff + .p2alignl 3,0x05050505 + + .p2align 1,6 + .p2align 1,7 + + .byte 0xff + .p2align 3,8,5 + .byte 9 + .p2align 3,0xa + + .byte 0xff + .balign 2,0 + + .byte 0xff + .balign 2,1 + + .byte 0xff + .balign 4,2 + + .byte 0xff + .byte 0xff + .balignw 4,0x0303 + + .balign 8,4 + .byte 0xff + .byte 0xff + .byte 0xff + .byte 0xff + .balignl 8,0x05050505 + + .balign 2,6 + .balign 2,7 + + .byte 0xff + .balign 8,8,5 + .byte 9 + .balign 8,0xa + + .p2align 5 + .balign 32 diff --git a/gas/testsuite/gas/all/cofftag.s b/gas/testsuite/gas/all/cofftag.s new file mode 100644 index 0000000..8156599 --- /dev/null +++ b/gas/testsuite/gas/all/cofftag.s @@ -0,0 +1,57 @@ +/* This file was compiled from this C source: + char token =0; + enum token { + operator, + flags + }; + + enum token what= operator; + */ + + .file "foo.c" +gcc2_compiled.: +___gnu_compiled_c: +.globl _token +.data +_token: + .byte 0 +.text + .def _token + .scl 15 + .type 012 + .size 4 + .endef + .def _operator + .val 0 + .scl 16 + .type 013 + .endef + .def _flags + .val 1 + .scl 16 + .type 013 + .endef + .def .eos + .val 4 + .scl 102 + .tag _token + .size 4 + .endef +.globl _what +.data + .p2align 2 +_what: + .long 0 +.text + .def _token + .val _token + .scl 2 + .type 02 + .endef + .def _what + .val _what + .scl 2 + .tag _token + .size 4 + .type 012 + .endef diff --git a/gas/testsuite/gas/all/comment.s b/gas/testsuite/gas/all/comment.s new file mode 100644 index 0000000..76bc641 --- /dev/null +++ b/gas/testsuite/gas/all/comment.s @@ -0,0 +1,3 @@ +# This test file is to see whether comments get written into listings +# correctly. The file has no real contents. +/* C comments too! */ diff --git a/gas/testsuite/gas/all/cond.s b/gas/testsuite/gas/all/cond.s new file mode 100644 index 0000000..3958321 --- /dev/null +++ b/gas/testsuite/gas/all/cond.s @@ -0,0 +1,18 @@ + .if 0 + .if 1 + .endc + .long 0 + .if 0 + .long 1 + .endc + .else + .if 1 + .endc + .long 2 + .if 0 + .long 3 + .else + .long 4 + .endc + .endc + .p2align 5,0 diff --git a/gas/testsuite/gas/all/diff1.s b/gas/testsuite/gas/all/diff1.s new file mode 100644 index 0000000..10a89fd --- /dev/null +++ b/gas/testsuite/gas/all/diff1.s @@ -0,0 +1,5 @@ +# Difference of two undefined symbols. +# The assembler should reject this. + .text + .globl _foo +_foo: .long _a - _b diff --git a/gas/testsuite/gas/all/float.s b/gas/testsuite/gas/all/float.s new file mode 100644 index 0000000..b098cad --- /dev/null +++ b/gas/testsuite/gas/all/float.s @@ -0,0 +1,4 @@ + .text +foo: .single 0r1.2345e+06 + .single 0f3.14159 + .double 0r2.718282 diff --git a/gas/testsuite/gas/all/itbl.s b/gas/testsuite/gas/all/itbl.s new file mode 100644 index 0000000..9351aa4 --- /dev/null +++ b/gas/testsuite/gas/all/itbl.s @@ -0,0 +1,13 @@ + + ; Test case for assembler option "itbl". + ; Run as "as --itbl itbl itbl.s" + ; or with stand-alone test case "itbl-test itbl itbl.s". + + ; Assemble processor instructions as defined in "itbl". + + fee $d3,$c2,0x1 ; 0x4ff07601 + fie ; 0x4ff00000 + foh $2,0x100 + fum $d3,$c2 ; 0x4ff07601 + pig $2,0x100 + diff --git a/gas/testsuite/gas/all/p1480.s b/gas/testsuite/gas/all/p1480.s new file mode 100644 index 0000000..9d0ba81 --- /dev/null +++ b/gas/testsuite/gas/all/p1480.s @@ -0,0 +1,3 @@ +start: .long 0, 1, 2, 3, 4, 5, 6, 7 + .space 0x80 - (. - start) +foo: .long 42 diff --git a/gas/testsuite/gas/all/p2425.s b/gas/testsuite/gas/all/p2425.s new file mode 100644 index 0000000..1c9dc95 --- /dev/null +++ b/gas/testsuite/gas/all/p2425.s @@ -0,0 +1,6 @@ + .text + .globl _frobnitz +_frobnitz: + .long 1, 2, 3, 4, 5, 6, 7, GRUMP, 42 + GRUMP=.-_frobnitz + HALFGRUMP=GRUMP/2 diff --git a/gas/testsuite/gas/all/struct.s b/gas/testsuite/gas/all/struct.s new file mode 100644 index 0000000..9ecfd0b --- /dev/null +++ b/gas/testsuite/gas/all/struct.s @@ -0,0 +1,10 @@ + .globl w1 + .globl w2 + .globl w3 + .long 0 + .struct 0 +w1: .short 0 +w2: .short 0 +w3: .short 0 + .text + .long 0 diff --git a/gas/testsuite/gas/all/x930509.s b/gas/testsuite/gas/all/x930509.s new file mode 100644 index 0000000..1299991 --- /dev/null +++ b/gas/testsuite/gas/all/x930509.s @@ -0,0 +1,3 @@ + .long L2-L1 +L1: .long 0x1234 +L2: .long 0x5678 diff --git a/gas/testsuite/gas/alpha/fp.s b/gas/testsuite/gas/alpha/fp.s new file mode 100644 index 0000000..7cebbbe --- /dev/null +++ b/gas/testsuite/gas/alpha/fp.s @@ -0,0 +1,14 @@ + .rdata +# These three formats are 8 bytes each. + .t_floating 3.32192809488736218171e0 +# .byte 0x71, 0xa3, 0x79, 0x09, 0x4f, 0x93, 0x0a, 0x40 + .d_floating 3.32192809488736218171e0 +# .byte 0x54, 0x41, 0x78, 0x9a, 0xcd, 0x4b, 0x88, 0x1b + .g_floating 3.32192809488736218171e0 +# .byte 0x2a, 0x40, 0x4f, 0x93, 0x79, 0x09, 0x71, 0xa3 +# The next two are four bytes each. + .s_floating 3.32192809488736218171e0 +# .byte 0x78, 0x9a, 0x54, 0x40, 0, 0, 0, 0 + .f_floating 3.32192809488736218171e0 +# .byte 0x54, 0x41, 0x78, 0x9a, 0, 0, 0, 0 + .long 0, 0, 0, 0 diff --git a/gas/testsuite/gas/arc/alias.s b/gas/testsuite/gas/arc/alias.s new file mode 100644 index 0000000..d524440 --- /dev/null +++ b/gas/testsuite/gas/arc/alias.s @@ -0,0 +1,76 @@ +# @OC@ test + +# reg,reg + @OC@ r0,r1 + @OC@ fp,sp + +# shimm values + @OC@ r0,0 + @OC@ r1,-1 + @OC@ 0,r2 + @OC@ -1,r3 + @OC@ r4,255 + @OC@ 255,r5 + @OC@ r6,-256 + @OC@ -256,r7 + +# limm values + @OC@ r8,256 + @OC@ r9,-257 + @OC@ 511,r10 + @OC@ r11,0x42424242 + @OC@ 0x12345678,r12 + +# shimm and limm + @OC@ 255,256 + @OC@ 256,255 + +# symbols + @OC@ r0,foo + +# conditional execution + @OC@.al r0,r1 + @OC@.ra r3,r4 + @OC@.eq r6,r7 + @OC@.z r9,r10 + @OC@.ne r12,r13 + @OC@.nz r15,r16 + @OC@.pl r18,r19 + @OC@.p r21,r22 + @OC@.mi r24,r25 + @OC@.n r27,r28 + @OC@.cs r30,r31 + @OC@.c r33,r34 + @OC@.lo r36,r37 + @OC@.cc r39,r40 + @OC@.nc r42,r43 + @OC@.hs r45,r46 + @OC@.vs r48,r49 + @OC@.v r51,r52 + @OC@.vc r54,r55 + @OC@.nv r57,r58 + @OC@.gt r60,r60 + @OC@.ge r0,0 + @OC@.lt 1,r1 + @OC@.le 2,2 + @OC@.hi r3,r3 + @OC@.ls r4,r4 + @OC@.pnz r5,r5 + +# flag setting + @OC@.f r0,r1 + @OC@.f r2,1 + @OC@.f 1,r3 + @OC@.f 0,r4 + @OC@.f r5,512 + @OC@.f 512,r6 + @OC@.f 512,512 + +# conditional execution + flag setting + @OC@.eq.f r0,r1 + @OC@.ne.f r1,0 + @OC@.lt.f 0,r2 + @OC@.gt.f 1,r2 + @OC@.le.f r0,512 + @OC@.ge.f 512,r2 + @OC@.n.f 512,512 diff --git a/gas/testsuite/gas/arc/branch.s b/gas/testsuite/gas/arc/branch.s new file mode 100644 index 0000000..8bf1618 --- /dev/null +++ b/gas/testsuite/gas/arc/branch.s @@ -0,0 +1,47 @@ +# @OC@ test + +text_label: + +# Condition tests + @OC@ text_label + @OC@al text_label + @OC@ra text_label + @OC@eq text_label + @OC@z text_label + @OC@ne text_label + @OC@nz text_label + @OC@pl text_label + @OC@p text_label + @OC@mi text_label + @OC@n text_label + @OC@cs text_label + @OC@c text_label + @OC@lo text_label + @OC@cc text_label + @OC@nc text_label + @OC@hs text_label + @OC@vs text_label + @OC@v text_label + @OC@vc text_label + @OC@nv text_label + @OC@gt text_label + @OC@ge text_label + @OC@lt text_label + @OC@le text_label + @OC@hi text_label + @OC@ls text_label + @OC@pnz text_label + + @OC@ external_text_label + + @OC@ 0 + +# Delay slots + @OC@.d text_label + @OC@.nd text_label + @OC@.jd text_label + +# Condition tests and delay slots + @OC@eq.d text_label + @OC@ne.nd text_label + @OC@cc.jd text_label diff --git a/gas/testsuite/gas/arc/flag.s b/gas/testsuite/gas/arc/flag.s new file mode 100644 index 0000000..7067aa5 --- /dev/null +++ b/gas/testsuite/gas/arc/flag.s @@ -0,0 +1,27 @@ +# flag test + + flag r0 + + flag 1 + flag 2 + flag 4 + flag 8 + flag 16 + flag 32 + flag 64 + flag 128 + + flag 0x80000001 + + flag.lt r0 + + flag.gt 1 + flag.gt 2 + flag.gt 4 + flag.gt 8 + flag.gt 16 + flag.gt 32 + flag.gt 64 + flag.gt 128 + + flag.ge 0x80000001 diff --git a/gas/testsuite/gas/arc/insn3.s b/gas/testsuite/gas/arc/insn3.s new file mode 100644 index 0000000..f12fb88 --- /dev/null +++ b/gas/testsuite/gas/arc/insn3.s @@ -0,0 +1,52 @@ +# Insn 3 @OC@ test + +# reg,reg + @OC@ r0,r1 + @OC@ fp,sp + +# shimm values + @OC@ r0,0 + @OC@ r1,-1 + @OC@ 0,r2 + @OC@ -1,r3 + @OC@ r4,255 + @OC@ 255,r5 + @OC@ r6,-256 + @OC@ -256,r7 + +# limm values + @OC@ r8,256 + @OC@ r9,-257 + @OC@ 511,r10 + @OC@ r11,0x42424242 + @OC@ 0x12345678,r12 + +# shimm and limm + @OC@ 255,256 + @OC@ 256,255 + +# symbols + @OC@ r0,foo + +# conditional execution + @OC@.eq r10,r11 + @OC@.ne r12,r13 + @OC@.lt r14,0 + @OC@.gt r15,512 + +# flag setting + @OC@.f r0,r1 + @OC@.f r2,1 + @OC@.f 0,r4 + @OC@.f r5,512 + @OC@.f 512,r6 + @OC@.f 512,512 + +# conditional execution + flag setting + @OC@.eq.f r0,r1 + @OC@.ne.f r1,0 + @OC@.lt.f 0,r2 + @OC@.gt.f 1,r2 + @OC@.le.f r0,512 + @OC@.ge.f 512,r2 + @OC@.n.f 512,512 diff --git a/gas/testsuite/gas/arc/j.s b/gas/testsuite/gas/arc/j.s new file mode 100644 index 0000000..0161af2 --- /dev/null +++ b/gas/testsuite/gas/arc/j.s @@ -0,0 +1,45 @@ +# j test + +text_label: + j r0 + j.d r0 + j.jd r0 + j.nd r0 + + j.f [r1] + j.d.f [r1] + j.jd.f [r1] + j.nd.f [r1] + + j text_label + jal text_label + jra text_label + jeq text_label + jz text_label + jne text_label + jnz text_label + jpl text_label + jp text_label + jmi text_label + jn text_label + jcs text_label + jc text_label + jlo text_label + jcc text_label + jnc text_label + jhs text_label + jvs text_label + jv text_label + jvc text_label + jnv text_label + jgt text_label + jge text_label + jlt text_label + jle text_label + jhi text_label + jls text_label + jpnz text_label + + j external_text_label + + j 0 diff --git a/gas/testsuite/gas/arc/ld.s b/gas/testsuite/gas/arc/ld.s new file mode 100644 index 0000000..aa26719 --- /dev/null +++ b/gas/testsuite/gas/arc/ld.s @@ -0,0 +1,24 @@ +# ld/lr test + + ld r0,[r1] + ld r2,[r3,r4] + ld r5,[r6,1] + ld r7,[r8,-1] + ld r9,[r10,255] + ld r11,[r12,-256] + ld r13,[r14,256] + ld r15,[r16,-257] + ld r17,[0x12345678,r28] + ld r19,[foo] + ld r20,[foo+4] + + ldb r0,[0] + ldw r0,[0] + ld.x r0,[0] + ld.a r0,[0] + ld.di r0,[0] + ldb.x.a.di r0,[r0] + + lr r0,[r1] + lr r2,[status] + lr r3,[0x12345678] diff --git a/gas/testsuite/gas/arc/math.s b/gas/testsuite/gas/arc/math.s new file mode 100644 index 0000000..775169a --- /dev/null +++ b/gas/testsuite/gas/arc/math.s @@ -0,0 +1,89 @@ +# @OC@ test + +# Stay away from operands with duplicate arguments (eg: add r0,r1,r1). +# They will be disassembled as they're macro counterparts (eg: asl r0,r1). + +# reg,reg,reg + @OC@ r0,r1,r2 + @OC@ r26,fp,sp + @OC@ ilink1,ilink2,blink + @OC@ r58,r59,lp_count + +# shimm values + @OC@ r0,r1,0 + @OC@ r0,0,r2 + @OC@ 0,r1,r2 + @OC@ r0,r1,-1 + @OC@ r0,-1,r2 + @OC@ -1,r1,r2 + @OC@ r0,r1,255 + @OC@ r0,255,r2 + @OC@ 255,r1,r2 + @OC@ r0,r1,-256 + @OC@ r0,-256,r2 + @OC@ -256,r1,r2 + +# limm values + @OC@ r0,r1,256 + @OC@ r0,-257,r2 + @OC@ 511,r1,r2 + @OC@ r0,0x42424242,r2 + @OC@ 0x12345678,r1,0x12345678 + +# shimm and limm + @OC@ r0,255,256 + @OC@ r0,256,255 + @OC@ 255,r1,256 + @OC@ 255,256,r2 + @OC@ 256,r1,255 + @OC@ 256,255,r2 + +# symbols + @OC@ r0,r1,foo + +# conditional execution + @OC@.al r0,r1,r2 + @OC@.ra r3,r4,r5 + @OC@.eq r6,r7,r8 + @OC@.z r9,r10,r11 + @OC@.ne r12,r13,r14 + @OC@.nz r15,r16,r17 + @OC@.pl r18,r19,r20 + @OC@.p r21,r22,r23 + @OC@.mi r24,r25,r26 + @OC@.n r27,r28,r29 + @OC@.cs r30,r31,r32 + @OC@.c r33,r34,r35 + @OC@.lo r36,r37,r38 + @OC@.cc r39,r40,r41 + @OC@.nc r42,r43,r44 + @OC@.hs r45,r46,r47 + @OC@.vs r48,r49,r50 + @OC@.v r51,r52,r53 + @OC@.vc r54,r55,r56 + @OC@.nv r57,r58,r59 + @OC@.gt r60,r60,r0 + @OC@.ge r0,r0,0 + @OC@.lt r1,1,r1 + @OC@.le 2,r1,r2 + @OC@.hi r3,3,r3 + @OC@.ls 4,4,r4 + @OC@.pnz 5,r5,5 + +# flag setting + @OC@.f r0,r1,r2 + @OC@.f r0,r1,1 + @OC@.f r0,1,r2 + @OC@.f 0,r1,r2 + @OC@.f r0,r1,512 + @OC@.f r0,512,r2 + @OC@.f 512,r1,r2 + +# conditional execution + flag setting + @OC@.eq.f r0,r1,r2 + @OC@.ne.f r0,r1,0 + @OC@.lt.f r0,0,r2 + @OC@.gt.f 0,r1,r2 + @OC@.le.f r0,r1,512 + @OC@.ge.f r0,512,r2 + @OC@.n.f 512,r1,r2 diff --git a/gas/testsuite/gas/arc/sshift.s b/gas/testsuite/gas/arc/sshift.s new file mode 100644 index 0000000..e2fa661 --- /dev/null +++ b/gas/testsuite/gas/arc/sshift.s @@ -0,0 +1,52 @@ +# Single shift @OC@ test + +# reg,reg + @OC@ r0,r1 + @OC@ fp,sp + +# shimm values + @OC@ r0,0 + @OC@ r1,-1 + @OC@ 0,r2 + @OC@ -1,r3 + @OC@ r4,255 + @OC@ 255,r5 + @OC@ r6,-256 + @OC@ -256,r7 + +# limm values + @OC@ r8,256 + @OC@ r9,-257 + @OC@ 511,r10 + @OC@ r11,0x42424242 + @OC@ 0x12345678,r12 + +# shimm and limm + @OC@ 255,256 + @OC@ 256,255 + +# symbols + @OC@ r0,foo + +# conditional execution + @OC@.eq r10,r11 + @OC@.ne r12,r13 + @OC@.lt r14,0 + @OC@.gt r15,512 + +# flag setting + @OC@.f r0,r1 + @OC@.f r2,1 + @OC@.f 0,r4 + @OC@.f r5,512 + @OC@.f 512,r6 + @OC@.f 512,512 + +# conditional execution + flag setting + @OC@.eq.f r0,r1 + @OC@.ne.f r1,0 + @OC@.lt.f 0,r2 + @OC@.gt.f 1,r2 + @OC@.le.f r0,512 + @OC@.ge.f 512,r2 + @OC@.n.f 512,512 diff --git a/gas/testsuite/gas/arc/st.s b/gas/testsuite/gas/arc/st.s new file mode 100644 index 0000000..10af198 --- /dev/null +++ b/gas/testsuite/gas/arc/st.s @@ -0,0 +1,19 @@ +# st/sr test + + st r0,[r1] + st r5,[r6,1] + st r7,[r8,-1] + st r9,[r10,255] + st r11,[r12,-256] + st r19,[foo] + st r20,[foo+4] + + stb r0,[0] + stw r0,[0] + st.a r0,[0] + st.di r0,[0] + stb.a.di r0,[r0] + + sr r0,[r1] + sr r2,[status] + sr r3,[0x12345678] diff --git a/gas/testsuite/gas/arc/warn.s b/gas/testsuite/gas/arc/warn.s new file mode 100644 index 0000000..6fcb437 --- /dev/null +++ b/gas/testsuite/gas/arc/warn.s @@ -0,0 +1,14 @@ +; Test ARC specific assembler warnings +; +; { dg-do assemble { target arc-*-* } } + + b.d foo + mov r0,256 ; { dg-warning "8 byte instruction in delay slot" "8 byte insn in delay slot" } + + j.d foo ; { dg-warning "8 byte jump instruction with delay slot" "8 byte jump with delay slot" } + mov r0,r1 + + sub.f 0,r0,r2 + beq foo ; { dg-warning "conditional branch follows set of flags" "cc set/branch nop test" } + +foo: diff --git a/gas/testsuite/gas/arm/arch4t.s b/gas/testsuite/gas/arm/arch4t.s new file mode 100644 index 0000000..8d28f7f --- /dev/null +++ b/gas/testsuite/gas/arm/arch4t.s @@ -0,0 +1,21 @@ +.text +.align 0 + + bx r0 + bxeq r1 + +foo: + ldrh r3, foo + ldrsh r4, [r5] + ldrsb r4, [r1, r3] + ldrsh r1, [r4, r4]! + ldreqsb r1, [r5, -r3] + ldrneh r2, [r6], r7 + ldrccsh r2, [r7], +r8 + ldrsb r2, [r3, #255] + ldrsh r1, [r4, #-250] + ldrsb r1, [r5, #+240] + + strh r2, bar + strneh r3, [r3] +bar: diff --git a/gas/testsuite/gas/arm/arm3.s b/gas/testsuite/gas/arm/arm3.s new file mode 100644 index 0000000..ebcf915 --- /dev/null +++ b/gas/testsuite/gas/arm/arm3.s @@ -0,0 +1,6 @@ +.text +.align 0 + swp r0, r1, [r8] + swpb r2, r3, [r3] + swpgeb r4, r1, [r4] + diff --git a/gas/testsuite/gas/arm/arm6.s b/gas/testsuite/gas/arm/arm6.s new file mode 100644 index 0000000..4b51712 --- /dev/null +++ b/gas/testsuite/gas/arm/arm6.s @@ -0,0 +1,12 @@ +.text +.align 0 + + mrs r8, cpsr + mrseq r9, cpsr_all + mrs r2, spsr + + msr cpsr, r1 + msrne cpsr_flg, #0xf0000000 + msr spsr_flg, r8 + msr spsr_all, r9 + diff --git a/gas/testsuite/gas/arm/arm7dm.s b/gas/testsuite/gas/arm/arm7dm.s new file mode 100644 index 0000000..7496c70 --- /dev/null +++ b/gas/testsuite/gas/arm/arm7dm.s @@ -0,0 +1,12 @@ +.text +.align 0 + + smull r0, r1, r2, r3 + umull r0, r1, r2, r3 + smlal r0, r1, r2, r3 + umlal r0, r1, r4, r3 + + smullne r0, r1, r3, r4 + smulls r1, r0, r9, r11 + umlaleqs r2, r9, r4, r9 + smlalge r14, r10, r8, r14 diff --git a/gas/testsuite/gas/arm/arm7t.s b/gas/testsuite/gas/arm/arm7t.s new file mode 100644 index 0000000..656e90e --- /dev/null +++ b/gas/testsuite/gas/arm/arm7t.s @@ -0,0 +1,79 @@ + .section .rdata + .align 0 +.LC0: + .ascii "some data\000" + + .text + .align 0 + +loadhalfwords: + ldrh r0, [r1] + ldrh r0, [r1]! + ldrh r0, [r1, r2] + ldrh r0, [r1, r2]! + ldrh r0, [r1,#0x0C] + ldrh r0, [r1,#0x0C]! + ldrh r0, [r1,#-0x0C] + ldrh r0, [r1], r2 + ldrh r0, =0xFF00 + ldrh r0, =0xC0DE + ldrh r0, .L2 + +storehalfwords: + strh r0, [r1] + strh r0, [r1]! + strh r0, [r1, r2] + strh r0, [r1, r2]! + strh r0, [r1,#0x0C] + strh r0, [r1,#0x0C]! + strh r0, [r1,#-0x0C] + strh r0, [r1], r2 + strh r0, .L2 + +loadsignedbytes: + ldrsb r0, [r1] + ldrsb r0, [r1]! + ldrsb r0, [r1, r2] + ldrsb r0, [r1, r2]! + ldrsb r0, [r1,#0x0C] + ldrsb r0, [r1,#0x0C]! + ldrsb r0, [r1,#-0x0C] + ldrsb r0, [r1], r2 + ldrsb r0, =0xDE + ldrsb r0, .L2 + +loadsignedhalfwords: + ldrsh r0, [r1] + ldrsh r0, [r1]! + ldrsh r0, [r1, r2] + ldrsh r0, [r1, r2]! + ldrsh r0, [r1, #0x0C] + ldrsh r0, [r1, #0x0C]! + ldrsh r0, [r1, #-0x0C] + ldrsh r0, [r1], r2 + ldrsh r0, =0xFF00 + ldrsh r0, =0xC0DE + ldrsh r0, .L2 + +misc: + ldralh r0, [r1, r2] + ldrneh r0, [r1, r2] + ldrhih r0, [r1, r2] + ldrlth r0, [r1, r2] + + ldralsh r0, [r1, r2] + ldrnesh r0, [r1, r2] + ldrhish r0, [r1, r2] + ldrltsh r0, [r1, r2] + + ldralsb r0, [r1, r2] + ldrnesb r0, [r1, r2] + ldrhisb r0, [r1, r2] + ldrltsb r0, [r1, r2] + + ldrsh r0, =0xC0DE + ldrsh r0, =0xDEAD + + .align +.L2: + .word .LC0 diff --git a/gas/testsuite/gas/arm/copro.s b/gas/testsuite/gas/arm/copro.s new file mode 100644 index 0000000..46c9b92 --- /dev/null +++ b/gas/testsuite/gas/arm/copro.s @@ -0,0 +1,24 @@ +.text +.align 0 + cdp p1, 4, cr1, cr2, cr3 + cdpeq 4, 3, c1, c4, cr5, 5 + + ldc 5, cr9, [r3] + ldcl 1, cr14, [r1, #32] + ldcmi 0, cr0, [r2, #1020]! + ldcpll p7, c1, [r3], #64 + ldc p0, c8, foo +foo: + + stc 5, cr0, [r3] + stcl 3, cr15, [r0, #8] + stceq p4, cr12, [r2, #100]! + stccc p6, c8, [r4], #48 + stc p1, c7, bar +bar: + + mrc 2, 3, r5, c1, c2 + mrcge p4, 5, r15, cr1, cr2, 7 + + mcr p7, 1, r15, cr1, cr1 + mcrlt 5, 1, r8, cr2, cr9, 0 diff --git a/gas/testsuite/gas/arm/float.s b/gas/testsuite/gas/arm/float.s new file mode 100644 index 0000000..48aee96 --- /dev/null +++ b/gas/testsuite/gas/arm/float.s @@ -0,0 +1,162 @@ +.text +.align 0 + mvfe f0, f1 + mvfeqe f3, f5 + mvfeqd f4, #1.0 + mvfs f4, f7 + mvfsp f0, f1 + mvfdm f3, f4 + mvfez f7, f7 + + adfe f0, f1, #2.0 + adfeqe f1, f2, #0.5 + adfsm f3, f4, f5 + + sufd f0, f0, #2.0 + sufs f1, f2, #10.0 + sufneez f3, f4, f5 + + rsfs f1, f1, #0.0 + rsfdp f3, f0, #5.0 + rsfled f7, f6, f0 + + mufd f0, f0, f0 + mufez f1, f2, #3.0 + mufals f0, f0, #4.0 + + dvfd f0, f0, #1.0000 + dvfez f0, f1, #10e0 + dvfmism f3, f4, f5 + + rdfe f0, f1, #1.0e1 + rdfs f3, f7, #0f1 + rdfccdp f4, f4, f3 + + powd f0, f2, f3 + pows f1, f3, #0e1e1 + powcsez f4, f7, #1 + + rpws f7, f6, f7 + rpweqd f0, f1, f2 + rpwem f2, f2, f3 + + rmfd f1, f2, #3 + rmfvss f3, f4, f4 + rmfep f4, f7, f0 + + fmls f0, f1, f2 + fmleqs f1, f3, f5 + fmlplsz f4, f6, f0 + + fdvs f1, f3, #10 + fdvsp f0, f1, f2 + fdvhssm f4, f4, f4 + + frds f1, f1, #1.0 + frdgts f2, f1, f0 + frdgtsz f4, f4, f5 + + pold f0, f1, f2 + polsz f4, f6, #3.0 + poleqe f5, f6, f7 + + mnfs f0, f1 + mnfd f0, #3.0 + mnfez f0, #4.0 + mnfeqez f0, f5 + mnfsp f0, f4 + mnfdm f1, f7 + + absd f0, f1 + abssp f1, #3.0 + abseqe f4, f5 + + rnds f1, f2 + rndd f3, f4 + rndeqez f6, #4.0 + + sqts f5, f5 + sqtdp f6, f6 + sqtplez f7, f6 + + logs f0, #10 + loge f0, #0f10 + lognedz f0, f1 + + lgne f1, f2 + lgndz f1, f3 + lgnvcs f3, f4 + + exps f1, f3 + expem f3, #10.0 + exppld f6, f7 + + sind f0, f1 + sinsm f1, f2 + singte f4, #5 + + cosd f1, f3 + cosem f4, f5 + cosnedp f6, f1 + + tane f1, f5 + tansz f4, f7 + tangedz f1, #4.0 + + asne f4, f5 + asnsp f6, #5e-1 + asnmidz f5, f5 + + acss f5, f6 + acsd f6, f0 + acshsem f1, #0.05e1 + + atne f0, f5 + atnsz f1, #5 + atnltd f3, f2 + + urde f5, f4 + nrme f6, f5 + nrmpldz f7, f5 + + fltsp f0, r8 + flte f1, r0 + flteqdz f5, r7 + + fix r0, f1 + fixz r1, f7 + fixcsm r5, f5 + + wfc r0 + wfs r1 + rfseq r2 + rfc r4 + + cmf f0, #1 + cmf f1, f2 + cmfeq f0, f1 + + cnf f0, #3 + cnf f1, #0.5 + cnfvs f3, f4 + + cmfe f0, f1 + cmfeeq f1, f2 + cmfeqe f3, #5.0 + + cnfe f1, f3 + cnfeeq f3, f4 + cnfeqe f4, f7 + cnfale f4, #5.0 + + lfm f0, 4, [r0] + lfm f0, 4, [r0, #0] + lfm f1, 4, [r1, #64] + sfm f2, 4, [r14, #1020]! + sfmeq f7, 3, [r8], #-1020 + + lfmfd f6, 2, [r15] + sfmea f7, 1, [r8]! + lfmeqea f5, 4, [r6] + sfmnefd f4, 3, [r2] + sfmnefd f4, 3, [r2]! diff --git a/gas/testsuite/gas/arm/immed.s b/gas/testsuite/gas/arm/immed.s new file mode 100644 index 0000000..5d2092b --- /dev/null +++ b/gas/testsuite/gas/arm/immed.s @@ -0,0 +1,11 @@ +@ Tests for complex immediate expressions - none of these need +@ relocations + .text +bar: + mov r0, #0 + mov r0, #(. - bar - 8) + ldr r0, bar + ldr r0, [pc, # (bar - . -8)] + .space 4096 + mov r0, #(. - bar - 8) & 0xff + ldr r0, [pc, # (bar - . -8) & 0xff] diff --git a/gas/testsuite/gas/arm/inst.s b/gas/testsuite/gas/arm/inst.s new file mode 100644 index 0000000..ff092c9 --- /dev/null +++ b/gas/testsuite/gas/arm/inst.s @@ -0,0 +1,189 @@ +@ Test file for ARM/GAS -- basic instructions + +.text +.align + mov r0, #0 + mov r1, r2 + mov r3, r4, lsl #3 + mov r5, r6, lsr r7 + mov r8, r9, asr r10 + mov r11, r12, asl r13 + mov r14, r15, rrx + moval r1, r2 + moveq r2, r3 + movne r4, r5 + movlt r6, r7 + movge r8, r9 + movle r10, r11 + movgt r12, r13 + movcc r1, r2 + movcs r1, r3 + movmi r3, r6 + movpl r7, r9 + movvs r1, r8 + movvc r9, r1, lsr #31 + movhi r8, r15 + movls r15, r14 + movhs r9, r8 + movul r1, r3 + movs r0, r8 + movuls r0, r7 + + add r0, r1, #10 + add r2, r3, r4 + add r5, r6, r7, asl #5 + add r1, r2, r3, lsl r1 + + and r0, r1, #10 + and r2, r3, r4 + and r5, r6, r7, asl #5 + and r1, r2, r3, lsl r1 + + eor r0, r1, #10 + eor r2, r3, r4 + eor r5, r6, r7, asl #5 + eor r1, r2, r3, lsl r1 + + sub r0, r1, #10 + sub r2, r3, r4 + sub r5, r6, r7, asl #5 + sub r1, r2, r3, lsl r1 + + adc r0, r1, #10 + adc r2, r3, r4 + adc r5, r6, r7, asl #5 + adc r1, r2, r3, lsl r1 + + sbc r0, r1, #10 + sbc r2, r3, r4 + sbc r5, r6, r7, asl #5 + sbc r1, r2, r3, lsl r1 + + rsb r0, r1, #10 + rsb r2, r3, r4 + rsb r5, r6, r7, asl #5 + rsb r1, r2, r3, lsl r1 + + rsc r0, r1, #10 + rsc r2, r3, r4 + rsc r5, r6, r7, asl #5 + rsc r1, r2, r3, lsl r1 + + orr r0, r1, #10 + orr r2, r3, r4 + orr r5, r6, r7, asl #5 + orr r1, r2, r3, lsl r1 + + bic r0, r1, #10 + bic r2, r3, r4 + bic r5, r6, r7, asl #5 + bic r1, r2, r3, lsl r1 + + mvn r0, #10 + mvn r2, r4 + mvn r5, r7, asl #5 + mvn r1, r3, lsl r1 + + tst r0, #10 + tst r2, r4 + tst r5, r7, asl #5 + tst r1, r3, lsl r1 + + teq r0, #10 + teq r2, r4 + teq r5, r7, asl #5 + teq r1, r3, lsl r1 + + cmp r0, #10 + cmp r2, r4 + cmp r5, r7, asl #5 + cmp r1, r3, lsl r1 + + cmn r0, #10 + cmn r2, r4 + cmn r5, r7, asl #5 + cmn r1, r3, lsl r1 + + teqp r0, #10 + teqp r2, r4 + teqp r5, r7, asl #5 + teqp r1, r3, lsl r1 + + cmnp r0, #10 + cmnp r2, r4 + cmnp r5, r7, asl #5 + cmnp r1, r3, lsl r1 + + cmpp r0, #10 + cmpp r2, r4 + cmpp r5, r7, asl #5 + cmpp r1, r3, lsl r1 + + tstp r0, #10 + tstp r2, r4 + tstp r5, r7, asl #5 + tstp r1, r3, lsl r1 + + mul r0, r1, r2 + muls r1, r2, r3 + mulne r0, r1, r0 + mullss r9, r8, r7 + + mla r1, r9, r10, r11 + mlas r3, r4, r9, r12 + mlalt r9, r8, r7, r13 + mlages r4, r1, r3, r14 + + ldr r0, [r1] + ldr r1, [r1, r2] + ldr r2, [r3, r4]! + ldr r2, [r2, #32] + ldr r2, [r3, r4, lsr #8] + ldreq r4, [r5, r4, asl #9]! + ldrne r4, [r5], #6 + ldrt r1, [r2], r3 + ldr r2, [r4], r5, lsr #8 +foo: + ldr r0, foo + ldrb r3, [r4] + ldrnebt r5, [r8] + + str r0, [r1] + str r1, [r1, r2] + str r3, [r3, r4]! + str r2, [r2, #32] + str r2, [r3, r4, lsr #8] + streq r4, [r5, r4, asl #9]! + strne r4, [r5], #6 + str r1, [r2], r3 + strt r2, [r4], r5, lsr #8 + str r1, bar +bar: + stralb r1, [r7] + strbt r2, [r0] + + ldmia r0, {r1} + ldmeqib r2, {r3, r4, r5} + ldmalda r3, {r0-r15}^ + ldmdb r11!, {r0-r8, r10} + ldmed r1, {r0, r1, r2}|0xf0 + ldmfd r2, {r3, r4}+{r5, r6, r7, r8} + ldmea r3, 3 + ldmfa r4!, {r8, r9}^ + + stmia r0, {r1} + stmeqib r2, {r3, r4, r5} + stmalda r3, {r0-r15}^ + stmdb r10!, {r0-r8, r10} + stmed r1, {r0, r1, r2} + stmfd r2, {r3, r4} + stmea r3, 3 + stmfa r4!, {r8, r9}^ + + swi 0x123456 + swihs 0x33 + + bl _wombat + blpl bar + b _wibble + ble testerfunc diff --git a/gas/testsuite/gas/arm/le-fpconst.s b/gas/testsuite/gas/arm/le-fpconst.s new file mode 100644 index 0000000..8a3c3d7 --- /dev/null +++ b/gas/testsuite/gas/arm/le-fpconst.s @@ -0,0 +1,8 @@ +# Test fp constants. +# These need ARM specific support because 8 byte fp constants in little +# endian mode are represented abnormally. + + .text + .float 1.1 + .float 0 + .double 1.1 diff --git a/gas/testsuite/gas/arm/thumb.s b/gas/testsuite/gas/arm/thumb.s new file mode 100644 index 0000000..5f02678 --- /dev/null +++ b/gas/testsuite/gas/arm/thumb.s @@ -0,0 +1,193 @@ + .text + .code 16 +foo: + lsl r2, r1, #3 + lsr r3, r4, #31 +wibble/data: + asr r7, r0, #5 + + lsl r1, r2, #0 + lsr r3, r4, #0 + asr r4, r5, #0 + + lsr r6, r7, #32 + asr r0, r1, #32 + + add r1, r2, r3 + add r2, r4, #2 + sub r3, r5, r7 + sub r2, r4, #7 + + mov r4, #255 + cmp r3, #250 + add r6, #123 + sub r5, #128 + + and r3, r5 + eor r4, r6 + lsl r1, r0 + lsr r2, r3 + asr r4, r6 + adc r5, r7 + sbc r0, r4 + ror r1, r4 + tst r2, r5 + neg r1, r1 + cmp r2, r3 + cmn r1, r4 + orr r0, r3 + mul r4, r5 + bic r5, r7 + mvn r5, r5 + + add r1, r13 + add r12, r2 + add r9, r9 + cmp r1, r14 + cmp r8, r0 + cmp r12, r14 + mov r0, r9 + mov r9, r4 + mov r8, r8 + bx r7 + bx r8 + .align 0 + bx pc + + ldr r3, [pc, #128] + ldr r4, bar + + str r0, [r1, r2] + strb r1, [r2, r4] + ldr r5, [r6, r7] + ldrb r2, [r4, r5] + + .align 0 +bar: + strh r1, [r2, r3] + ldrh r3, [r4, r0] + ldsb r1, [r6, r7] + ldsh r2, [r0, r5] + + str r3, [r3, #124] + ldr r1, [r4, #124] + ldr r5, [r5] + strb r1, [r5, #31] + strb r1, [r4, #5] + strb r2, [r6] + + strh r4, [r5, #62] + ldrh r5, [r0, #4] + ldrh r3, [r2] + + str r3, [r13, #1020] + ldr r1, [r13, #44] + ldr r2, [r13] + + add r7, r15, #1020 + add r4, r13, #512 + + add r13, #268 + add r13, #-104 + sub r13, #268 + sub r13, #-108 + + push {r0, r1, r2, r4} + push {r0, r3-r7, lr} + pop {r3, r4, r7} + pop {r0-r7, r15} + + stmia r3!, {r0, r1, r4-r7} + ldmia r0!, {r1-r7} + + beq bar + bne bar + bcs bar + bcc bar + bmi bar + bpl bar + bvs bar + bvc bar + bhi bar + bls bar + bge bar + bgt bar + blt bar + bgt bar + ble bar + bhi bar + blo bar + bul bar + +close: + lsl r4, r5, #near - close +near: + add r2, r3, #near - close + + add sp, sp, #127 << 2 + sub sp, sp, #127 << 2 + add r0, sp, #255 << 2 + add r0, pc, #255 << 2 + + add sp, sp, #bar - foo + sub sp, sp, #bar - foo + add r0, sp, #bar - foo + add r0, pc, #bar - foo + + add r1, #bar - foo + mov r6, #bar - foo + cmp r7, #bar - foo + + nop + nop + + .arm +localbar: + b localbar + b wombat + bl localbar + bl wombat + + bx r0 + swi 0x123456 + + .thumb + @ The following will be disassembled incorrectly if we do not + @ have a Thumb symbol defined before the first Thumb instruction: +morethumb: + adr r0, forwardonly + + b foo + b wombat + bl foo + bl wombat + + bx r0 + + swi 0xff + .align 0 +forwardonly: + beq wombat + bne wombat + bcs wombat + bcc wombat + bmi wombat + bpl wombat + bvs wombat + bvc wombat + bhi wombat + bls wombat + bge wombat + bgt wombat + blt wombat + bgt wombat + ble wombat + bhi wombat + blo wombat + bul wombat + +back: + bl local + .space (1 << 11) @ leave space to force long offsets +local: + bl back diff --git a/gas/testsuite/gas/h8300/addsub.s b/gas/testsuite/gas/h8300/addsub.s new file mode 100644 index 0000000..802b0d7 --- /dev/null +++ b/gas/testsuite/gas/h8300/addsub.s @@ -0,0 +1,16 @@ + .text +h8300_add_sub: + add.b #16,r1l + add.b r1h,r1l + add.w r1,r2 + adds #1,r4 + adds #2,r5 + addx r0l,r1l + addx #16,r2h + sub.b r0l,r1l + sub.w r0,r1 + subs #1,r4 + subs #2,r5 + subx r0l,r1l + subx #16,r2h + diff --git a/gas/testsuite/gas/h8300/addsubh.s b/gas/testsuite/gas/h8300/addsubh.s new file mode 100644 index 0000000..1f885d3 --- /dev/null +++ b/gas/testsuite/gas/h8300/addsubh.s @@ -0,0 +1,25 @@ + .h8300h + .text +h8300h_add_sub: + add.b #16,r1l + add.b r1h,r1l + add.w #32,r1 + add.w r1,r2 + add.l #64,er1 + add.l er1,er2 + adds #1,er4 + adds #2,er5 + adds #4,er6 + addx r0l,r1l + addx #16,r2h + sub.b r0l,r1l + sub.w #16,r1 + sub.w r0,r1 + sub.l #64,er1 + sub.l er1,er2 + subs #1,er4 + subs #2,er5 + subs #4,er6 + subx r0l,r1l + subx #16,r2h + diff --git a/gas/testsuite/gas/h8300/addsubs.s b/gas/testsuite/gas/h8300/addsubs.s new file mode 100644 index 0000000..b0b3699 --- /dev/null +++ b/gas/testsuite/gas/h8300/addsubs.s @@ -0,0 +1,25 @@ + .h8300s + .text +h8300s_add_sub: + add.b #16,r1l + add.b r1h,r1l + add.w #32,r1 + add.w r1,r2 + add.l #64,er1 + add.l er1,er2 + adds #1,er4 + adds #2,er5 + adds #4,er6 + addx r0l,r1l + addx #16,r2h + sub.b r0l,r1l + sub.w #16,r1 + sub.w r0,r1 + sub.l #64,er1 + sub.l er1,er2 + subs #1,er4 + subs #2,er5 + subs #4,er6 + subx r0l,r1l + subx #16,r2h + diff --git a/gas/testsuite/gas/h8300/bitops1.s b/gas/testsuite/gas/h8300/bitops1.s new file mode 100644 index 0000000..3c107a1 --- /dev/null +++ b/gas/testsuite/gas/h8300/bitops1.s @@ -0,0 +1,18 @@ + .text +h8300_bit_ops_1: + band #0,r0l + band #0,@r0 + band #0,@64:8 + bclr #0,r0l + bclr #0,@r0 + bclr #0,@64:8 + bclr r1l,r0l + bclr r1l,@r0 + bclr r1l,@64:8 + biand #0,r0l + biand #0,@r0 + biand #0,@64:8 + bild #0,r0l + bild #0,@r0 + bild #0,@64:8 + diff --git a/gas/testsuite/gas/h8300/bitops1h.s b/gas/testsuite/gas/h8300/bitops1h.s new file mode 100644 index 0000000..4139a59 --- /dev/null +++ b/gas/testsuite/gas/h8300/bitops1h.s @@ -0,0 +1,19 @@ + .h8300h + .text +h8300h_bit_ops_1: + band #0,r0l + band #0,@er0 + band #0,@64:8 + bclr #0,r0l + bclr #0,@er0 + bclr #0,@64:8 + bclr r1l,r0l + bclr r1l,@er0 + bclr r1l,@64:8 + biand #0,r0l + biand #0,@er0 + biand #0,@64:8 + bild #0,r0l + bild #0,@er0 + bild #0,@64:8 + diff --git a/gas/testsuite/gas/h8300/bitops1s.s b/gas/testsuite/gas/h8300/bitops1s.s new file mode 100644 index 0000000..c6599d4 --- /dev/null +++ b/gas/testsuite/gas/h8300/bitops1s.s @@ -0,0 +1,29 @@ + .h8300s + .text +h8300s_bit_ops_1: + band #0,r0l + band #0,@er0 + band #0,@64:8 + band #0,@128:16 + band #0,@65536:32 + bclr #0,r0l + bclr #0,@er0 + bclr #0,@64:8 + bclr #0,@128:16 + bclr #0,@65536:32 + bclr r1l,r0l + bclr r1l,@er0 + bclr r1l,@64:8 + bclr r1l,@128:16 + bclr r1l,@65536:32 + biand #0,r0l + biand #0,@er0 + biand #0,@64:8 + biand #0,@128:16 + biand #0,@65536:32 + bild #0,r0l + bild #0,@er0 + bild #0,@64:8 + bild #0,@128:16 + bild #0,@65536:32 + diff --git a/gas/testsuite/gas/h8300/bitops2.s b/gas/testsuite/gas/h8300/bitops2.s new file mode 100644 index 0000000..3996e5a --- /dev/null +++ b/gas/testsuite/gas/h8300/bitops2.s @@ -0,0 +1,15 @@ + .text +h8300_bit_ops_2: + bior #0,r0l + bior #0,@r0 + bior #0,@64:8 + bist #0,r0l + bist #0,@r0 + bist #0,@64:8 + bixor #0,r0l + bixor #0,@r0 + bixor #0,@64:8 + bld #0,r0l + bld #0,@r0 + bld #0,@64:8 + diff --git a/gas/testsuite/gas/h8300/bitops2h.s b/gas/testsuite/gas/h8300/bitops2h.s new file mode 100644 index 0000000..22be74e --- /dev/null +++ b/gas/testsuite/gas/h8300/bitops2h.s @@ -0,0 +1,16 @@ + .h8300h + .text +h8300h_bit_ops_2: + bior #0,r0l + bior #0,@er0 + bior #0,@64:8 + bist #0,r0l + bist #0,@er0 + bist #0,@64:8 + bixor #0,r0l + bixor #0,@er0 + bixor #0,@64:8 + bld #0,r0l + bld #0,@er0 + bld #0,@64:8 + diff --git a/gas/testsuite/gas/h8300/bitops2s.s b/gas/testsuite/gas/h8300/bitops2s.s new file mode 100644 index 0000000..9470520 --- /dev/null +++ b/gas/testsuite/gas/h8300/bitops2s.s @@ -0,0 +1,23 @@ + .h8300s + .text +h8300s_bit_ops_2: + bior #0,r0l + bior #0,@er0 + bior #0,@64:8 + bior #0,@128:16 + bior #0,@65536:32 + bist #0,r0l + bist #0,@er0 + bist #0,@64:8 + bist #0,@128:16 + bist #0,@65536:32 + bixor #0,r0l + bixor #0,@er0 + bixor #0,@64:8 + bixor #0,@128:16 + bixor #0,@65536:32 + bld #0,r0l + bld #0,@er0 + bld #0,@64:8 + bld #0,@128:16 + bld #0,@65536:32 diff --git a/gas/testsuite/gas/h8300/bitops3.s b/gas/testsuite/gas/h8300/bitops3.s new file mode 100644 index 0000000..78c9bfb --- /dev/null +++ b/gas/testsuite/gas/h8300/bitops3.s @@ -0,0 +1,15 @@ + .text +h8300_bit_ops_3: + bnot #0,r0l + bnot #0,@r0 + bnot #0,@64:8 + bnot r1l,r0l + bnot r1l,@r0 + bnot r1l,@64:8 + bset #0,r0l + bset #0,@r0 + bset #0,@64:8 + bset r1l,r0l + bset r1l,@r0 + bset r1l,@64:8 + diff --git a/gas/testsuite/gas/h8300/bitops3h.s b/gas/testsuite/gas/h8300/bitops3h.s new file mode 100644 index 0000000..fdeda60 --- /dev/null +++ b/gas/testsuite/gas/h8300/bitops3h.s @@ -0,0 +1,16 @@ + .h8300h + .text +h8300h_bit_ops_3: + bnot #0,r0l + bnot #0,@er0 + bnot #0,@64:8 + bnot r1l,r0l + bnot r1l,@er0 + bnot r1l,@64:8 + bset #0,r0l + bset #0,@er0 + bset #0,@64:8 + bset r1l,r0l + bset r1l,@er0 + bset r1l,@64:8 + diff --git a/gas/testsuite/gas/h8300/bitops3s.s b/gas/testsuite/gas/h8300/bitops3s.s new file mode 100644 index 0000000..7c64e06 --- /dev/null +++ b/gas/testsuite/gas/h8300/bitops3s.s @@ -0,0 +1,24 @@ + .h8300s + .text +h8300s_bit_ops_3: + bnot #0,r0l + bnot #0,@er0 + bnot #0,@64:8 + bnot #0,@128:16 + bnot #0,@65536:32 + bnot r1l,r0l + bnot r1l,@er0 + bnot r1l,@64:8 + bnot r1l,@128:16 + bnot r1l,@65536:32 + bset #0,r0l + bset #0,@er0 + bset #0,@64:8 + bset #0,@128:16 + bset #0,@65536:32 + bset r1l,r0l + bset r1l,@er0 + bset r1l,@64:8 + bset r1l,@128:16 + bset r1l,@65536:32 + diff --git a/gas/testsuite/gas/h8300/bitops4.s b/gas/testsuite/gas/h8300/bitops4.s new file mode 100644 index 0000000..f7e66d8 --- /dev/null +++ b/gas/testsuite/gas/h8300/bitops4.s @@ -0,0 +1,18 @@ + .text +h8300_bit_ops_4: + bor #0,r0l + bor #0,@r0 + bor #0,@64:8 + bst #0,r0l + bst #0,@r0 + bst #0,@64:8 + btst #0,r0l + btst #0,@r0 + btst #0,@64:8 + btst r1l,r0l + btst r1l,@r0 + btst r1l,@64:8 + bxor #0,r0l + bxor #0,@r0 + bxor #0,@64:8 + diff --git a/gas/testsuite/gas/h8300/bitops4h.s b/gas/testsuite/gas/h8300/bitops4h.s new file mode 100644 index 0000000..ed35e17 --- /dev/null +++ b/gas/testsuite/gas/h8300/bitops4h.s @@ -0,0 +1,19 @@ + .h8300h + .text +h8300h_bit_ops_4: + bor #0,r0l + bor #0,@er0 + bor #0,@64:8 + bst #0,r0l + bst #0,@er0 + bst #0,@64:8 + btst #0,r0l + btst #0,@er0 + btst #0,@64:8 + btst r1l,r0l + btst r1l,@er0 + btst r1l,@64:8 + bxor #0,r0l + bxor #0,@er0 + bxor #0,@64:8 + diff --git a/gas/testsuite/gas/h8300/bitops4s.s b/gas/testsuite/gas/h8300/bitops4s.s new file mode 100644 index 0000000..e8f47b6 --- /dev/null +++ b/gas/testsuite/gas/h8300/bitops4s.s @@ -0,0 +1,29 @@ + .h8300s + .text +h8300s_bit_ops_4: + bor #0,r0l + bor #0,@er0 + bor #0,@64:8 + bor #0,@128:16 + bor #0,@65536:32 + bst #0,r0l + bst #0,@er0 + bst #0,@64:8 + bst #0,@128:16 + bst #0,@65536:32 + btst #0,r0l + btst #0,@er0 + btst #0,@64:8 + btst #0,@128:16 + btst #0,@65536:32 + btst r1l,r0l + btst r1l,@er0 + btst r1l,@64:8 + btst r1l,@128:16 + btst r1l,@65536:32 + bxor #0,r0l + bxor #0,@er0 + bxor #0,@64:8 + bxor #0,@128:16 + bxor #0,@65536:32 + diff --git a/gas/testsuite/gas/h8300/branch.s b/gas/testsuite/gas/h8300/branch.s new file mode 100644 index 0000000..2580615 --- /dev/null +++ b/gas/testsuite/gas/h8300/branch.s @@ -0,0 +1,10 @@ + .text +h8300_branches: + bsr h8300_branches + jmp h8300_branches + jmp @r0 + jmp @@16:8 + jsr h8300_branches + jsr @r0 + jsr @@16:8 + diff --git a/gas/testsuite/gas/h8300/branchh.s b/gas/testsuite/gas/h8300/branchh.s new file mode 100644 index 0000000..7cbc62f --- /dev/null +++ b/gas/testsuite/gas/h8300/branchh.s @@ -0,0 +1,12 @@ + .h8300h + .text +h8300h_branches: + bsr h8300h_branches:8 + bsr h8300h_branches:16 + jmp h8300h_branches + jmp @er0 + jmp @@16:8 + jsr h8300h_branches + jsr @er0 + jsr @@16:8 + diff --git a/gas/testsuite/gas/h8300/branchs.s b/gas/testsuite/gas/h8300/branchs.s new file mode 100644 index 0000000..8f33e17 --- /dev/null +++ b/gas/testsuite/gas/h8300/branchs.s @@ -0,0 +1,12 @@ + .h8300s + .text +h8300s_branches: + bsr h8300s_branches:8 + bsr h8300s_branches:16 + jmp h8300s_branches + jmp @er0 + jmp @@16:8 + jsr h8300s_branches + jsr @er0 + jsr @@16:8 + diff --git a/gas/testsuite/gas/h8300/cbranch.s b/gas/testsuite/gas/h8300/cbranch.s new file mode 100644 index 0000000..ae3d53e --- /dev/null +++ b/gas/testsuite/gas/h8300/cbranch.s @@ -0,0 +1,23 @@ + .text +h8300_cbranch: + bra h8300_cbranch + bt h8300_cbranch + brn h8300_cbranch + bf h8300_cbranch + bhi h8300_cbranch + bls h8300_cbranch + bcc h8300_cbranch + bhs h8300_cbranch + bcs h8300_cbranch + blo h8300_cbranch + bne h8300_cbranch + beq h8300_cbranch + bvc h8300_cbranch + bvs h8300_cbranch + bpl h8300_cbranch + bmi h8300_cbranch + bge h8300_cbranch + blt h8300_cbranch + bgt h8300_cbranch + ble h8300_cbranch + diff --git a/gas/testsuite/gas/h8300/cbranchh.s b/gas/testsuite/gas/h8300/cbranchh.s new file mode 100644 index 0000000..a64e1a2 --- /dev/null +++ b/gas/testsuite/gas/h8300/cbranchh.s @@ -0,0 +1,44 @@ + .text + .h8300h +h8300h_cbranch: + bra h8300h_cbranch:8 + bt h8300h_cbranch:8 + brn h8300h_cbranch:8 + bf h8300h_cbranch:8 + bhi h8300h_cbranch:8 + bls h8300h_cbranch:8 + bcc h8300h_cbranch:8 + bhs h8300h_cbranch:8 + bcs h8300h_cbranch:8 + blo h8300h_cbranch:8 + bne h8300h_cbranch:8 + beq h8300h_cbranch:8 + bvc h8300h_cbranch:8 + bvs h8300h_cbranch:8 + bpl h8300h_cbranch:8 + bmi h8300h_cbranch:8 + bge h8300h_cbranch:8 + blt h8300h_cbranch:8 + bgt h8300h_cbranch:8 + ble h8300h_cbranch:8 + bra h8300h_cbranch:16 + bt h8300h_cbranch:16 + brn h8300h_cbranch:16 + bf h8300h_cbranch:16 + bhi h8300h_cbranch:16 + bls h8300h_cbranch:16 + bcc h8300h_cbranch:16 + bhs h8300h_cbranch:16 + bcs h8300h_cbranch:16 + blo h8300h_cbranch:16 + bne h8300h_cbranch:16 + beq h8300h_cbranch:16 + bvc h8300h_cbranch:16 + bvs h8300h_cbranch:16 + bpl h8300h_cbranch:16 + bmi h8300h_cbranch:16 + bge h8300h_cbranch:16 + blt h8300h_cbranch:16 + bgt h8300h_cbranch:16 + ble h8300h_cbranch:16 + diff --git a/gas/testsuite/gas/h8300/cbranchs.s b/gas/testsuite/gas/h8300/cbranchs.s new file mode 100644 index 0000000..14222ea --- /dev/null +++ b/gas/testsuite/gas/h8300/cbranchs.s @@ -0,0 +1,44 @@ + .text + .h8300s +h8300s_cbranch: + bra h8300s_cbranch:8 + bt h8300s_cbranch:8 + brn h8300s_cbranch:8 + bf h8300s_cbranch:8 + bhi h8300s_cbranch:8 + bls h8300s_cbranch:8 + bcc h8300s_cbranch:8 + bhs h8300s_cbranch:8 + bcs h8300s_cbranch:8 + blo h8300s_cbranch:8 + bne h8300s_cbranch:8 + beq h8300s_cbranch:8 + bvc h8300s_cbranch:8 + bvs h8300s_cbranch:8 + bpl h8300s_cbranch:8 + bmi h8300s_cbranch:8 + bge h8300s_cbranch:8 + blt h8300s_cbranch:8 + bgt h8300s_cbranch:8 + ble h8300s_cbranch:8 + bra h8300s_cbranch:16 + bt h8300s_cbranch:16 + brn h8300s_cbranch:16 + bf h8300s_cbranch:16 + bhi h8300s_cbranch:16 + bls h8300s_cbranch:16 + bcc h8300s_cbranch:16 + bhs h8300s_cbranch:16 + bcs h8300s_cbranch:16 + blo h8300s_cbranch:16 + bne h8300s_cbranch:16 + beq h8300s_cbranch:16 + bvc h8300s_cbranch:16 + bvs h8300s_cbranch:16 + bpl h8300s_cbranch:16 + bmi h8300s_cbranch:16 + bge h8300s_cbranch:16 + blt h8300s_cbranch:16 + bgt h8300s_cbranch:16 + ble h8300s_cbranch:16 + diff --git a/gas/testsuite/gas/h8300/cmpsi2.s b/gas/testsuite/gas/h8300/cmpsi2.s new file mode 100644 index 0000000..ef7f03a --- /dev/null +++ b/gas/testsuite/gas/h8300/cmpsi2.s @@ -0,0 +1,28 @@ +# 1 "libgcc1.S" +;; libgcc1 routines for the Hitachi h8/300 cpu. +;; Contributed by Steve Chamberlain. +;; sac@cygnus.com + .section .text + .align 2 + .global ___cmpsi2 +___cmpsi2: + cmp.w r2 ,r0 + bne .L2 + cmp.w r3 ,r1 + bne .L2 + mov.w #1,r0 + rts +.L2: + cmp.w r0 ,r2 + bgt .L4 + bne .L3 + cmp.w r1 ,r3 + bls .L3 +.L4: + sub.w r0 ,r0 + rts +.L3: + mov.w #2,r0 +.L5: + rts + .end diff --git a/gas/testsuite/gas/h8300/compare.s b/gas/testsuite/gas/h8300/compare.s new file mode 100644 index 0000000..60c1a41 --- /dev/null +++ b/gas/testsuite/gas/h8300/compare.s @@ -0,0 +1,6 @@ + .text +h8300_cmp: + cmp.b #0,r0l + cmp.b r0h,r0l + cmp.w r0,r1 + diff --git a/gas/testsuite/gas/h8300/compareh.s b/gas/testsuite/gas/h8300/compareh.s new file mode 100644 index 0000000..c81e88e --- /dev/null +++ b/gas/testsuite/gas/h8300/compareh.s @@ -0,0 +1,10 @@ + .h8300h + .text +h8300h_cmp: + cmp.b #0,r0l + cmp.b r0h,r0l + cmp.w #32,r0 + cmp.w r0,r1 + cmp.l #64,er0 + cmp.l er0,er1 + diff --git a/gas/testsuite/gas/h8300/compares.s b/gas/testsuite/gas/h8300/compares.s new file mode 100644 index 0000000..e23f3fe --- /dev/null +++ b/gas/testsuite/gas/h8300/compares.s @@ -0,0 +1,10 @@ + .h8300s + .text +h8300s_cmp: + cmp.b #0,r0l + cmp.b r0h,r0l + cmp.w #32,r0 + cmp.w r0,r1 + cmp.l #64,er0 + cmp.l er0,er1 + diff --git a/gas/testsuite/gas/h8300/decimal.s b/gas/testsuite/gas/h8300/decimal.s new file mode 100644 index 0000000..8d4c0a0 --- /dev/null +++ b/gas/testsuite/gas/h8300/decimal.s @@ -0,0 +1,5 @@ + .text +h8300_decimal: + daa r0l + das r0l + diff --git a/gas/testsuite/gas/h8300/decimalh.s b/gas/testsuite/gas/h8300/decimalh.s new file mode 100644 index 0000000..9392405 --- /dev/null +++ b/gas/testsuite/gas/h8300/decimalh.s @@ -0,0 +1,6 @@ + .h8300h + .text +h8300h_decimal: + daa r0l + das r0l + diff --git a/gas/testsuite/gas/h8300/decimals.s b/gas/testsuite/gas/h8300/decimals.s new file mode 100644 index 0000000..b7802fc --- /dev/null +++ b/gas/testsuite/gas/h8300/decimals.s @@ -0,0 +1,6 @@ + .h8300s + .text +h8300s_decimal: + daa r0l + das r0l + diff --git a/gas/testsuite/gas/h8300/divmul.s b/gas/testsuite/gas/h8300/divmul.s new file mode 100644 index 0000000..37372ce --- /dev/null +++ b/gas/testsuite/gas/h8300/divmul.s @@ -0,0 +1,5 @@ + .text +h8300_div_mul: + divxu r0l,r1 + mulxu r0l,r1 + diff --git a/gas/testsuite/gas/h8300/divmulh.s b/gas/testsuite/gas/h8300/divmulh.s new file mode 100644 index 0000000..db60f8f --- /dev/null +++ b/gas/testsuite/gas/h8300/divmulh.s @@ -0,0 +1,12 @@ + .h8300h + .text +h8300h_div_mul: + divxu.b r0l,r1 + divxu.w r0,er1 + divxs.b r0l,r1 + divxs.w r0,er1 + mulxu.b r0l,r1 + mulxu.w r0,er1 + mulxs.b r0l,r1 + mulxs.w r0,er1 + diff --git a/gas/testsuite/gas/h8300/divmuls.s b/gas/testsuite/gas/h8300/divmuls.s new file mode 100644 index 0000000..db60f8f --- /dev/null +++ b/gas/testsuite/gas/h8300/divmuls.s @@ -0,0 +1,12 @@ + .h8300h + .text +h8300h_div_mul: + divxu.b r0l,r1 + divxu.w r0,er1 + divxs.b r0l,r1 + divxs.w r0,er1 + mulxu.b r0l,r1 + mulxu.w r0,er1 + mulxs.b r0l,r1 + mulxs.w r0,er1 + diff --git a/gas/testsuite/gas/h8300/extendh.s b/gas/testsuite/gas/h8300/extendh.s new file mode 100644 index 0000000..c034c83 --- /dev/null +++ b/gas/testsuite/gas/h8300/extendh.s @@ -0,0 +1,8 @@ + .h8300h + .text +h8300h_extend: + exts.w r0 + exts.l er0 + extu.w r0 + extu.l er0 + diff --git a/gas/testsuite/gas/h8300/extends.s b/gas/testsuite/gas/h8300/extends.s new file mode 100644 index 0000000..a26e9ba --- /dev/null +++ b/gas/testsuite/gas/h8300/extends.s @@ -0,0 +1,8 @@ + .h8300s + .text +h8300s_extend: + exts.w r0 + exts.l er0 + extu.w r0 + extu.l er0 + diff --git a/gas/testsuite/gas/h8300/ffxx1.s b/gas/testsuite/gas/h8300/ffxx1.s new file mode 100644 index 0000000..53fc841 --- /dev/null +++ b/gas/testsuite/gas/h8300/ffxx1.s @@ -0,0 +1,20 @@ + .equ p6ddr, 0xffb9 ;0x7f for output + .equ p6dr, 0xffbb + .equ seed, 0x01 + .text + .org 0 +reset: .word main ;reset vector +; + .org 0x400 +main: mov.b #0x7f,r0l ;port 6 ddr = 7F + mov.b @0xffbb:8,r0l ;***test*** + mov.b r0l,@p6ddr:16 +; + mov.b #seed,r0l ;start with 0000001 +loop: mov.b r0l,@p6dr:16 ;output to port 6 +delay: mov.w #0x0000,r1 +deloop: adds.w #1,r1 + bne deloop:8 ;not = 0 + rotl r0l + bra loop:8 + .word 0 diff --git a/gas/testsuite/gas/h8300/incdec.s b/gas/testsuite/gas/h8300/incdec.s new file mode 100644 index 0000000..2618827 --- /dev/null +++ b/gas/testsuite/gas/h8300/incdec.s @@ -0,0 +1,5 @@ + .text +h8300_incdec: + dec r0l + inc r0l + diff --git a/gas/testsuite/gas/h8300/incdech.s b/gas/testsuite/gas/h8300/incdech.s new file mode 100644 index 0000000..bb93fc5 --- /dev/null +++ b/gas/testsuite/gas/h8300/incdech.s @@ -0,0 +1,14 @@ + .h8300h + .text +h8300h_incdec: + dec.b r0l + dec.w #1,r0 + dec.w #2,r0 + dec.l #1,er0 + dec.l #2,er0 + inc.b r0l + inc.w #1,r0 + inc.w #2,r0 + inc.l #1,er0 + inc.l #2,er0 + diff --git a/gas/testsuite/gas/h8300/incdecs.s b/gas/testsuite/gas/h8300/incdecs.s new file mode 100644 index 0000000..2345708 --- /dev/null +++ b/gas/testsuite/gas/h8300/incdecs.s @@ -0,0 +1,14 @@ + .h8300s + .text +h8300s_incdec: + dec.b r0l + dec.w #1,r0 + dec.w #2,r0 + dec.l #1,er0 + dec.l #2,er0 + inc.b r0l + inc.w #1,r0 + inc.w #2,r0 + inc.l #1,er0 + inc.l #2,er0 + diff --git a/gas/testsuite/gas/h8300/logical.s b/gas/testsuite/gas/h8300/logical.s new file mode 100644 index 0000000..3f7e3b7 --- /dev/null +++ b/gas/testsuite/gas/h8300/logical.s @@ -0,0 +1,14 @@ + .text +h8300_logical: + and #16,r1l + and r1l,r1h + andc #16,ccr + or #16,r0l + or r1l,r0l + orc #16,ccr + xor #16,r0l + xor r0l,r1l + xorc #16,ccr + neg r0l + not r0l + diff --git a/gas/testsuite/gas/h8300/logicalh.s b/gas/testsuite/gas/h8300/logicalh.s new file mode 100644 index 0000000..9e95f11 --- /dev/null +++ b/gas/testsuite/gas/h8300/logicalh.s @@ -0,0 +1,31 @@ + .h8300h + .text +h8300h_logical: + and.b #16,r1l + and.b r1l,r1h + and.w #32,r1 + and.w r1,r1 + and.l #64,er1 + and.l er1,er1 + andc #16,ccr + or.b #16,r0l + or.b r1l,r0l + or.w #32,r1 + or.w r1,r1 + or.l #64,er1 + or.l er1,er1 + orc #16,ccr + xor.b #16,r0l + xor.b r0l,r1l + xor.w #32,r1 + xor.w r1,r1 + xor.l #64,er1 + xor.l er1,er1 + xorc #16,ccr + neg.b r0l + neg.w r0 + neg.l er0 + not.b r0l + not.w r0 + not.l er0 + diff --git a/gas/testsuite/gas/h8300/logicals.s b/gas/testsuite/gas/h8300/logicals.s new file mode 100644 index 0000000..c3c4cba --- /dev/null +++ b/gas/testsuite/gas/h8300/logicals.s @@ -0,0 +1,34 @@ + .h8300s + .text +h8300s_logical: + and.b #16,r1l + and.b r1l,r1h + and.w #32,r1 + and.w r1,r1 + and.l #64,er1 + and.l er1,er1 + andc #16,ccr + andc #16,exr + or.b #16,r0l + or.b r1l,r0l + or.w #32,r1 + or.w r1,r1 + or.l #64,er1 + or.l er1,er1 + orc #16,ccr + orc #16,exr + xor.b #16,r0l + xor.b r0l,r1l + xor.w #32,r1 + xor.w r1,r1 + xor.l #64,er1 + xor.l er1,er1 + xorc #16,ccr + xorc #16,exr + neg.b r0l + neg.w r0 + neg.l er0 + not.b r0l + not.w r0 + not.l er0 + diff --git a/gas/testsuite/gas/h8300/macs.s b/gas/testsuite/gas/h8300/macs.s new file mode 100644 index 0000000..e2df6dd --- /dev/null +++ b/gas/testsuite/gas/h8300/macs.s @@ -0,0 +1,11 @@ + .h8300s + .text +h8300s_mac: + clrmac + ldmac er0,mach + ldmac er1,macl + mac @er0+,@er1+ + stmac mach,er0 + stmac macl,er1 + + diff --git a/gas/testsuite/gas/h8300/misc.s b/gas/testsuite/gas/h8300/misc.s new file mode 100644 index 0000000..1f6f808 --- /dev/null +++ b/gas/testsuite/gas/h8300/misc.s @@ -0,0 +1,13 @@ + .text +h8300_misc: + eepmov + ldc #0,ccr + ldc r0l,ccr +; movfpe 16:16,r0l +; movtpe r0l,16:16 + nop + rte + rts + sleep + stc ccr,r0l + diff --git a/gas/testsuite/gas/h8300/misch.s b/gas/testsuite/gas/h8300/misch.s new file mode 100644 index 0000000..f7ecb3d --- /dev/null +++ b/gas/testsuite/gas/h8300/misch.s @@ -0,0 +1,27 @@ + .h8300h + .text +h8300h_misc: + eepmov.b + eepmov.w + ldc.b #0,ccr + ldc.b r0l,ccr + ldc.w @er0,ccr + ldc.w @(16:16,er0),ccr + ldc.w @(32:24,er0),ccr + ldc.w @er0+,ccr + ldc.w @h8300h_misc:16,ccr + ldc.w @h8300h_misc:24,ccr +; movfpe 16:16,r0l +; movtpe r0l,16:16 + nop + rte + rts + sleep + stc.b ccr,r0l + stc.w ccr,@er0 + stc.w ccr,@(16:16,er0) + stc.w ccr,@(32:24,er0) + stc.w ccr,@-er0 + stc.w ccr,@h8300h_misc:16 + stc.w ccr,@h8300h_misc:24 + diff --git a/gas/testsuite/gas/h8300/miscs.s b/gas/testsuite/gas/h8300/miscs.s new file mode 100644 index 0000000..d37a177 --- /dev/null +++ b/gas/testsuite/gas/h8300/miscs.s @@ -0,0 +1,41 @@ + .h8300s + .text +h8300s_misc: + eepmov.b + eepmov.w + ldc.b #0,ccr + ldc.b r0l,ccr + ldc.b #0,exr + ldc.b r0l,exr + ldc.w @er0,ccr + ldc.w @(16:16,er0),ccr + ldc.w @(32:32,er0),ccr + ldc.w @er0+,ccr + ldc.w @h8300s_misc:16,ccr + ldc.w @h8300s_misc:32,ccr + ldc.w @er0,exr + ldc.w @(16:16,er0),exr + ldc.w @(32:32,er0),exr + ldc.w @er0+,exr + ldc.w @h8300s_misc:16,exr + ldc.w @h8300s_misc:32,exr +; movfpe 16:16,r0l +; movtpe r0l,16:16 + nop + rte + rts + sleep + stc.b ccr,r0l + stc.b exr,r0l + stc.w ccr,@er0 + stc.w ccr,@(16:16,er0) + stc.w ccr,@(32:32,er0) + stc.w ccr,@-er0 + stc.w ccr,@h8300s_misc:16 + stc.w ccr,@h8300s_misc:32 + stc.w exr,@er0 + stc.w exr,@(16:16,er0) + stc.w exr,@(32:32,er0) + stc.w exr,@-er0 + stc.w exr,@h8300s_misc:16 + stc.w exr,@h8300s_misc:32 diff --git a/gas/testsuite/gas/h8300/mov32bug.s b/gas/testsuite/gas/h8300/mov32bug.s new file mode 100644 index 0000000..68393e3 --- /dev/null +++ b/gas/testsuite/gas/h8300/mov32bug.s @@ -0,0 +1,4 @@ + .h8300h + .global _a +blah: + mov.l #_a-2000000000,er2 diff --git a/gas/testsuite/gas/h8300/movb.s b/gas/testsuite/gas/h8300/movb.s new file mode 100644 index 0000000..fa040c0 --- /dev/null +++ b/gas/testsuite/gas/h8300/movb.s @@ -0,0 +1,15 @@ + .text +h8300_movb: + mov.b r0l,r1l + mov.b #16,r0l + mov.b @r1,r0l + mov.b @(16:16,r1),r0l + mov.b @r1+,r0l + mov.b @16:8,r0l + mov.b @h8300_movb:16,r0l + mov.b r0l,@r1 + mov.b r0l,@(16:16,r1) + mov.b r0l,@-r1 + mov.b r0l,@16:8 + mov.b r0l,@h8300_movb:16 + diff --git a/gas/testsuite/gas/h8300/movbh.s b/gas/testsuite/gas/h8300/movbh.s new file mode 100644 index 0000000..7d711f8 --- /dev/null +++ b/gas/testsuite/gas/h8300/movbh.s @@ -0,0 +1,20 @@ + .h8300h + .text +h8300h_movb: + mov.b r0l,r1l + mov.b #16,r0l + mov.b @er1,r0l + mov.b @(16:16,er1),r0l + mov.b @(32:24,er1),r0l + mov.b @er1+,r0l + mov.b @16:8,r0l + mov.b @h8300h_movb:16,r0l + mov.b @h8300h_movb:24,r0l + mov.b r0l,@er1 + mov.b r0l,@(16:16,er1) + mov.b r0l,@(32:24,er1) + mov.b r0l,@-er1 + mov.b r0l,@16:8 + mov.b r0l,@h8300h_movb:16 + mov.b r0l,@h8300h_movb:24 + diff --git a/gas/testsuite/gas/h8300/movbs.s b/gas/testsuite/gas/h8300/movbs.s new file mode 100644 index 0000000..925002c --- /dev/null +++ b/gas/testsuite/gas/h8300/movbs.s @@ -0,0 +1,20 @@ + .h8300s + .text +h8300s_movb: + mov.b r0l,r1l + mov.b #16,r0l + mov.b @er1,r0l + mov.b @(16:16,er1),r0l + mov.b @(32:32,er1),r0l + mov.b @er1+,r0l + mov.b @16:8,r0l + mov.b @h8300s_movb:16,r0l + mov.b @h8300s_movb:32,r0l + mov.b r0l,@er1 + mov.b r0l,@(16:16,er1) + mov.b r0l,@(32:32,er1) + mov.b r0l,@-er1 + mov.b r0l,@16:8 + mov.b r0l,@h8300s_movb:16 + mov.b r0l,@h8300s_movb:32 + diff --git a/gas/testsuite/gas/h8300/movlh.s b/gas/testsuite/gas/h8300/movlh.s new file mode 100644 index 0000000..0cc78e8 --- /dev/null +++ b/gas/testsuite/gas/h8300/movlh.s @@ -0,0 +1,18 @@ + .h8300h + .text +h8300h_movl: + mov.l er0,er1 + mov.l #64,er0 + mov.l @er1,er0 + mov.l @(16:16,er1),er0 + mov.l @(32:24,er1),er0 + mov.l @er1+,er0 + mov.l @h8300h_movl:16,er0 + mov.l @h8300h_movl:24,er0 + mov.l er0,@er1 + mov.l er0,@(16:16,er1) + mov.l er0,@(32:24,er1) + mov.l er0,@-er1 + mov.l er0,@h8300h_movl:16 + mov.l er0,@h8300h_movl:24 + diff --git a/gas/testsuite/gas/h8300/movls.s b/gas/testsuite/gas/h8300/movls.s new file mode 100644 index 0000000..4643767 --- /dev/null +++ b/gas/testsuite/gas/h8300/movls.s @@ -0,0 +1,18 @@ + .h8300s + .text +h8300s_movl: + mov.l er0,er1 + mov.l #64,er0 + mov.l @er1,er0 + mov.l @(16:16,er1),er0 + mov.l @(32:32,er1),er0 + mov.l @er1+,er0 + mov.l @h8300s_movl:16,er0 + mov.l @h8300s_movl:32,er0 + mov.l er0,@er1 + mov.l er0,@(16:16,er1) + mov.l er0,@(32:32,er1) + mov.l er0,@-er1 + mov.l er0,@h8300s_movl:16 + mov.l er0,@h8300s_movl:32 + diff --git a/gas/testsuite/gas/h8300/movw.s b/gas/testsuite/gas/h8300/movw.s new file mode 100644 index 0000000..0cc64f8 --- /dev/null +++ b/gas/testsuite/gas/h8300/movw.s @@ -0,0 +1,13 @@ + .text +h8300_movw: + mov.w r0,r1 + mov.w #16,r0 + mov.w @r1,r0 + mov.w @(16:16,r1),r0 + mov.w @r1+,r0 + mov.w @h8300_movw:16,r0 + mov.w r0,@r1 + mov.w r0,@(16:16,r1) + mov.w r0,@-r1 + mov.w r0,@h8300_movw:16 + diff --git a/gas/testsuite/gas/h8300/movwh.s b/gas/testsuite/gas/h8300/movwh.s new file mode 100644 index 0000000..595057c --- /dev/null +++ b/gas/testsuite/gas/h8300/movwh.s @@ -0,0 +1,18 @@ + .h8300h + .text +h8300h_movw: + mov.w r0,r1 + mov.w #16,r0 + mov.w @er1,r0 + mov.w @(16:16,er1),r0 + mov.w @(32:24,er1),r0 + mov.w @er1+,r0 + mov.w @h8300h_movw:16,r0 + mov.w @h8300h_movw:24,r0 + mov.w r0,@er1 + mov.w r0,@(16:16,er1) + mov.w r0,@(32:24,er1) + mov.w r0,@-er1 + mov.w r0,@h8300h_movw:16 + mov.w r0,@h8300h_movw:24 + diff --git a/gas/testsuite/gas/h8300/movws.s b/gas/testsuite/gas/h8300/movws.s new file mode 100644 index 0000000..a4f21df --- /dev/null +++ b/gas/testsuite/gas/h8300/movws.s @@ -0,0 +1,18 @@ + .h8300s + .text +h8300s_movw: + mov.w r0,r1 + mov.w #16,r0 + mov.w @er1,r0 + mov.w @(16:16,er1),r0 + mov.w @(32:32,er1),r0 + mov.w @er1+,r0 + mov.w @h8300s_movw:16,r0 + mov.w @h8300s_movw:32,r0 + mov.w r0,@er1 + mov.w r0,@(16:16,er1) + mov.w r0,@(32:32,er1) + mov.w r0,@-er1 + mov.w r0,@h8300s_movw:16 + mov.w r0,@h8300s_movw:32 + diff --git a/gas/testsuite/gas/h8300/multiples.s b/gas/testsuite/gas/h8300/multiples.s new file mode 100644 index 0000000..52079b6 --- /dev/null +++ b/gas/testsuite/gas/h8300/multiples.s @@ -0,0 +1,10 @@ + .h8300s + .text +h8300s_multiple: + ldm.l @sp+,er0-er1 + ldm.l @sp+,er0-er2 + ldm.l @sp+,er0-er3 + stm.l er0-er1,@-sp + stm.l er0-er2,@-sp + stm.l er0-er3,@-sp + diff --git a/gas/testsuite/gas/h8300/pushpop.s b/gas/testsuite/gas/h8300/pushpop.s new file mode 100644 index 0000000..941b735 --- /dev/null +++ b/gas/testsuite/gas/h8300/pushpop.s @@ -0,0 +1,5 @@ + .text +h8300_push_pop: + pop r0 + push r0 + diff --git a/gas/testsuite/gas/h8300/pushpoph.s b/gas/testsuite/gas/h8300/pushpoph.s new file mode 100644 index 0000000..6049639 --- /dev/null +++ b/gas/testsuite/gas/h8300/pushpoph.s @@ -0,0 +1,8 @@ + .h8300h + .text +h8300h_push_pop: + pop.w r0 + pop.l er0 + push.w r0 + push.l er0 + diff --git a/gas/testsuite/gas/h8300/pushpops.s b/gas/testsuite/gas/h8300/pushpops.s new file mode 100644 index 0000000..741df04 --- /dev/null +++ b/gas/testsuite/gas/h8300/pushpops.s @@ -0,0 +1,8 @@ + .h8300s + .text +h8300s_push_pop: + pop.w r0 + pop.l er0 + push.w r0 + push.l er0 + diff --git a/gas/testsuite/gas/h8300/rotsh.s b/gas/testsuite/gas/h8300/rotsh.s new file mode 100644 index 0000000..a9aa87d --- /dev/null +++ b/gas/testsuite/gas/h8300/rotsh.s @@ -0,0 +1,11 @@ + .text +h8300_rotate_shift: + rotl r0l + rotr r0l + rotxl r0l + rotxr r0l + shal r0l + shar r0l + shll r0l + shlr r0l + diff --git a/gas/testsuite/gas/h8300/rotshh.s b/gas/testsuite/gas/h8300/rotshh.s new file mode 100644 index 0000000..c7abe40 --- /dev/null +++ b/gas/testsuite/gas/h8300/rotshh.s @@ -0,0 +1,27 @@ + .h8300h + .text +h8300h_rotate_shift: + rotl.b r0l + rotl.w r0 + rotl.l er0 + rotr.b r0l + rotr.w r0 + rotr.l er0 + rotxl.b r0l + rotxl.w r0 + rotxl.l er0 + rotxr.b r0l + rotxr.w r0 + rotxr.l er0 + shal.b r0l + shal.w r0 + shal.l er0 + shar.b r0l + shar.w r0 + shar.l er0 + shll.b r0l + shll.w r0 + shll.l er0 + shlr.b r0l + shlr.w r0 + shlr.l er0 diff --git a/gas/testsuite/gas/h8300/rotshs.s b/gas/testsuite/gas/h8300/rotshs.s new file mode 100644 index 0000000..36c41cb --- /dev/null +++ b/gas/testsuite/gas/h8300/rotshs.s @@ -0,0 +1,51 @@ + .h8300s + .text +h8300s_rotate_shift: + rotl.b r0l + rotl.b #2,r0l + rotl.w r0 + rotl.w #2,r0 + rotl.l er0 + rotl.l #2,er0 + rotr.b r0l + rotr.b #2,r0l + rotr.w r0 + rotr.w #2,r0 + rotr.l er0 + rotr.l #2,er0 + rotxl.b r0l + rotxl.b #2,r0l + rotxl.w r0 + rotxl.w #2,r0 + rotxl.l er0 + rotxl.l #2,er0 + rotxr.b r0l + rotxr.b #2,r0l + rotxr.w r0 + rotxr.w #2,r0 + rotxr.l er0 + rotxr.l #2,er0 + shal.b r0l + shal.b #2,r0l + shal.w r0 + shal.w #2,r0 + shal.l er0 + shal.l #2,er0 + shar.b r0l + shar.b #2,r0l + shar.w r0 + shar.w #2,r0 + shar.l er0 + shar.l #2,er0 + shll.b r0l + shll.b #2,r0l + shll.w r0 + shll.w #2,r0 + shll.l er0 + shll.l #2,er0 + shlr.b r0l + shlr.b #2,r0l + shlr.w r0 + shlr.w #2,r0 + shlr.l er0 + shlr.l #2,er0 diff --git a/gas/testsuite/gas/hppa/basic/add.s b/gas/testsuite/gas/hppa/basic/add.s new file mode 100755 index 0000000..4d1d4cd --- /dev/null +++ b/gas/testsuite/gas/hppa/basic/add.s @@ -0,0 +1,100 @@ + .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 +; Basic add/sh?add instruction tests. +; +; 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. + add %r4,%r5,%r6 + add,= %r4,%r5,%r6 + add,< %r4,%r5,%r6 + add,<= %r4,%r5,%r6 + add,nuv %r4,%r5,%r6 + add,znv %r4,%r5,%r6 + add,sv %r4,%r5,%r6 + add,od %r4,%r5,%r6 + add,tr %r4,%r5,%r6 + add,<> %r4,%r5,%r6 + add,>= %r4,%r5,%r6 + add,> %r4,%r5,%r6 + add,uv %r4,%r5,%r6 + add,vnz %r4,%r5,%r6 + add,nsv %r4,%r5,%r6 + add,ev %r4,%r5,%r6 + + addl %r4,%r5,%r6 + addl,= %r4,%r5,%r6 + addl,< %r4,%r5,%r6 + addl,<= %r4,%r5,%r6 + addl,nuv %r4,%r5,%r6 + addl,znv %r4,%r5,%r6 + addl,sv %r4,%r5,%r6 + addl,od %r4,%r5,%r6 + addl,tr %r4,%r5,%r6 + addl,<> %r4,%r5,%r6 + addl,>= %r4,%r5,%r6 + addl,> %r4,%r5,%r6 + addl,uv %r4,%r5,%r6 + addl,vnz %r4,%r5,%r6 + addl,nsv %r4,%r5,%r6 + addl,ev %r4,%r5,%r6 + + addo %r4,%r5,%r6 + addo,= %r4,%r5,%r6 + addo,< %r4,%r5,%r6 + addo,<= %r4,%r5,%r6 + addo,nuv %r4,%r5,%r6 + addo,znv %r4,%r5,%r6 + addo,sv %r4,%r5,%r6 + addo,od %r4,%r5,%r6 + addo,tr %r4,%r5,%r6 + addo,<> %r4,%r5,%r6 + addo,>= %r4,%r5,%r6 + addo,> %r4,%r5,%r6 + addo,uv %r4,%r5,%r6 + addo,vnz %r4,%r5,%r6 + addo,nsv %r4,%r5,%r6 + addo,ev %r4,%r5,%r6 + + addc %r4,%r5,%r6 + addc,= %r4,%r5,%r6 + addc,< %r4,%r5,%r6 + addc,<= %r4,%r5,%r6 + addc,nuv %r4,%r5,%r6 + addc,znv %r4,%r5,%r6 + addc,sv %r4,%r5,%r6 + addc,od %r4,%r5,%r6 + addc,tr %r4,%r5,%r6 + addc,<> %r4,%r5,%r6 + addc,>= %r4,%r5,%r6 + addc,> %r4,%r5,%r6 + addc,uv %r4,%r5,%r6 + addc,vnz %r4,%r5,%r6 + addc,nsv %r4,%r5,%r6 + addc,ev %r4,%r5,%r6 + + addco %r4,%r5,%r6 + addco,= %r4,%r5,%r6 + addco,< %r4,%r5,%r6 + addco,<= %r4,%r5,%r6 + addco,nuv %r4,%r5,%r6 + addco,znv %r4,%r5,%r6 + addco,sv %r4,%r5,%r6 + addco,od %r4,%r5,%r6 + addco,tr %r4,%r5,%r6 + addco,<> %r4,%r5,%r6 + addco,>= %r4,%r5,%r6 + addco,> %r4,%r5,%r6 + addco,uv %r4,%r5,%r6 + addco,vnz %r4,%r5,%r6 + addco,nsv %r4,%r5,%r6 + addco,ev %r4,%r5,%r6 diff --git a/gas/testsuite/gas/hppa/basic/addi.s b/gas/testsuite/gas/hppa/basic/addi.s new file mode 100755 index 0000000..b036b80 --- /dev/null +++ b/gas/testsuite/gas/hppa/basic/addi.s @@ -0,0 +1,83 @@ + .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 +; Basic immediate instruction tests. +; +; 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. + addi 123,%r5,%r6 + addi,= 123,%r5,%r6 + addi,< 123,%r5,%r6 + addi,<= 123,%r5,%r6 + addi,nuv 123,%r5,%r6 + addi,znv 123,%r5,%r6 + addi,sv 123,%r5,%r6 + addi,od 123,%r5,%r6 + addi,tr 123,%r5,%r6 + addi,<> 123,%r5,%r6 + addi,>= 123,%r5,%r6 + addi,> 123,%r5,%r6 + addi,uv 123,%r5,%r6 + addi,vnz 123,%r5,%r6 + addi,nsv 123,%r5,%r6 + addi,ev 123,%r5,%r6 + + addio 123,%r5,%r6 + addio,= 123,%r5,%r6 + addio,< 123,%r5,%r6 + addio,<= 123,%r5,%r6 + addio,nuv 123,%r5,%r6 + addio,znv 123,%r5,%r6 + addio,sv 123,%r5,%r6 + addio,od 123,%r5,%r6 + addio,tr 123,%r5,%r6 + addio,<> 123,%r5,%r6 + addio,>= 123,%r5,%r6 + addio,> 123,%r5,%r6 + addio,uv 123,%r5,%r6 + addio,vnz 123,%r5,%r6 + addio,nsv 123,%r5,%r6 + addio,ev 123,%r5,%r6 + + addit 123,%r5,%r6 + addit,= 123,%r5,%r6 + addit,< 123,%r5,%r6 + addit,<= 123,%r5,%r6 + addit,nuv 123,%r5,%r6 + addit,znv 123,%r5,%r6 + addit,sv 123,%r5,%r6 + addit,od 123,%r5,%r6 + addit,tr 123,%r5,%r6 + addit,<> 123,%r5,%r6 + addit,>= 123,%r5,%r6 + addit,> 123,%r5,%r6 + addit,uv 123,%r5,%r6 + addit,vnz 123,%r5,%r6 + addit,nsv 123,%r5,%r6 + addit,ev 123,%r5,%r6 + + addito 123,%r5,%r6 + addito,= 123,%r5,%r6 + addito,< 123,%r5,%r6 + addito,<= 123,%r5,%r6 + addito,nuv 123,%r5,%r6 + addito,znv 123,%r5,%r6 + addito,sv 123,%r5,%r6 + addito,od 123,%r5,%r6 + addito,tr 123,%r5,%r6 + addito,<> 123,%r5,%r6 + addito,>= 123,%r5,%r6 + addito,> 123,%r5,%r6 + addito,uv 123,%r5,%r6 + addito,vnz 123,%r5,%r6 + addito,nsv 123,%r5,%r6 + addito,ev 123,%r5,%r6 diff --git a/gas/testsuite/gas/hppa/basic/basic.exp b/gas/testsuite/gas/hppa/basic/basic.exp old mode 100644 new mode 100755 diff --git a/gas/testsuite/gas/hppa/basic/branch.s b/gas/testsuite/gas/hppa/basic/branch.s new file mode 100755 index 0000000..5c4fd73 --- /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 0(%r2) + bv,n 0(%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 + diff --git a/gas/testsuite/gas/hppa/basic/comclr.s b/gas/testsuite/gas/hppa/basic/comclr.s new file mode 100755 index 0000000..a8e5aa6 --- /dev/null +++ b/gas/testsuite/gas/hppa/basic/comclr.s @@ -0,0 +1,50 @@ + .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 +; Basic immediate instruction tests. +; +; 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. + comclr %r4,%r5,%r6 + comclr,= %r4,%r5,%r6 + comclr,< %r4,%r5,%r6 + comclr,<= %r4,%r5,%r6 + comclr,<< %r4,%r5,%r6 + comclr,<<= %r4,%r5,%r6 + comclr,sv %r4,%r5,%r6 + comclr,od %r4,%r5,%r6 + comclr,tr %r4,%r5,%r6 + comclr,<> %r4,%r5,%r6 + comclr,>= %r4,%r5,%r6 + comclr,> %r4,%r5,%r6 + comclr,>>= %r4,%r5,%r6 + comclr,>> %r4,%r5,%r6 + comclr,nsv %r4,%r5,%r6 + comclr,ev %r4,%r5,%r6 + + comiclr 123,%r5,%r6 + comiclr,= 123,%r5,%r6 + comiclr,< 123,%r5,%r6 + comiclr,<= 123,%r5,%r6 + comiclr,<< 123,%r5,%r6 + comiclr,<<= 123,%r5,%r6 + comiclr,sv 123,%r5,%r6 + comiclr,od 123,%r5,%r6 + comiclr,tr 123,%r5,%r6 + comiclr,<> 123,%r5,%r6 + comiclr,>= 123,%r5,%r6 + comiclr,> 123,%r5,%r6 + comiclr,>>= 123,%r5,%r6 + comiclr,>> 123,%r5,%r6 + comiclr,nsv 123,%r5,%r6 + comiclr,ev 123,%r5,%r6 + diff --git a/gas/testsuite/gas/hppa/basic/copr.s b/gas/testsuite/gas/hppa/basic/copr.s new file mode 100644 index 0000000..77cb6a2 --- /dev/null +++ b/gas/testsuite/gas/hppa/basic/copr.s @@ -0,0 +1,19 @@ + .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 +; 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. +copr_tests: + copr,4,5 + copr,4,115 + copr,4,5,n + copr,4,115,n diff --git a/gas/testsuite/gas/hppa/basic/coprmem.s b/gas/testsuite/gas/hppa/basic/coprmem.s new file mode 100644 index 0000000..40b0748 --- /dev/null +++ b/gas/testsuite/gas/hppa/basic/coprmem.s @@ -0,0 +1,55 @@ + .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 +; Basic copr memory tests which also test the various +; addressing modes and completers. +; +; 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. +; +copr_indexing_load + + cldwx,4 5(0,4),26 + cldwx,4,s 5(0,4),26 + cldwx,4,m 5(0,4),26 + cldwx,4,sm 5(0,4),26 + clddx,4 5(0,4),26 + clddx,4,s 5(0,4),26 + clddx,4,m 5(0,4),26 + clddx,4,sm 5(0,4),26 + +copr_indexing_store + cstwx,4 26,5(0,4) + cstwx,4,s 26,5(0,4) + cstwx,4,m 26,5(0,4) + cstwx,4,sm 26,5(0,4) + cstdx,4 26,5(0,4) + cstdx,4,s 26,5(0,4) + cstdx,4,m 26,5(0,4) + cstdx,4,sm 26,5(0,4) + +copr_short_memory + cldws,4 0(0,4),26 + cldws,4,mb 0(0,4),26 + cldws,4,ma 0(0,4),26 + cldds,4 0(0,4),26 + cldds,4,mb 0(0,4),26 + cldds,4,ma 0(0,4),26 + cstws,4 26,0(0,4) + cstws,4,mb 26,0(0,4) + cstws,4,ma 26,0(0,4) + cstds,4 26,0(0,4) + cstds,4,mb 26,0(0,4) + cstds,4,ma 26,0(0,4) + +; gas fucks this up thinks it gets the expression 4 modulo 5 +; cldwx,4 %r5(0,%r4),%r26 diff --git a/gas/testsuite/gas/hppa/basic/dcor.s b/gas/testsuite/gas/hppa/basic/dcor.s new file mode 100755 index 0000000..8474554 --- /dev/null +++ b/gas/testsuite/gas/hppa/basic/dcor.s @@ -0,0 +1,41 @@ + .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 +; Basic immediate instruction tests. +; +; 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. + dcor %r4,%r5 + dcor,sbz %r4,%r5 + dcor,shz %r4,%r5 + dcor,sdc %r4,%r5 + dcor,sbc %r4,%r5 + dcor,shc %r4,%r5 + dcor,tr %r4,%r5 + dcor,nbz %r4,%r5 + dcor,nhz %r4,%r5 + dcor,ndc %r4,%r5 + dcor,nbc %r4,%r5 + dcor,nhc %r4,%r5 + + idcor %r4,%r5 + idcor,sbz %r4,%r5 + idcor,shz %r4,%r5 + idcor,sdc %r4,%r5 + idcor,sbc %r4,%r5 + idcor,shc %r4,%r5 + idcor,tr %r4,%r5 + idcor,nbz %r4,%r5 + idcor,nhz %r4,%r5 + idcor,ndc %r4,%r5 + idcor,nbc %r4,%r5 + idcor,nhc %r4,%r5 diff --git a/gas/testsuite/gas/hppa/basic/deposit.s b/gas/testsuite/gas/hppa/basic/deposit.s new file mode 100755 index 0000000..70853b3 --- /dev/null +++ b/gas/testsuite/gas/hppa/basic/deposit.s @@ -0,0 +1,88 @@ + .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 +; Basic immediate instruction tests. +; +; 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. + zdep %r4,5,10,%r6 + zdep,= %r4,5,10,%r6 + zdep,< %r4,5,10,%r6 + zdep,od %r4,5,10,%r6 + zdep,tr %r4,5,10,%r6 + zdep,<> %r4,5,10,%r6 + zdep,>= %r4,5,10,%r6 + zdep,ev %r4,5,10,%r6 + + dep %r4,5,10,%r6 + dep,= %r4,5,10,%r6 + dep,< %r4,5,10,%r6 + dep,od %r4,5,10,%r6 + dep,tr %r4,5,10,%r6 + dep,<> %r4,5,10,%r6 + dep,>= %r4,5,10,%r6 + dep,ev %r4,5,10,%r6 + + zvdep %r4,5,%r6 + zvdep,= %r4,5,%r6 + zvdep,< %r4,5,%r6 + zvdep,od %r4,5,%r6 + zvdep,tr %r4,5,%r6 + zvdep,<> %r4,5,%r6 + zvdep,>= %r4,5,%r6 + zvdep,ev %r4,5,%r6 + + vdep %r4,5,%r6 + vdep,= %r4,5,%r6 + vdep,< %r4,5,%r6 + vdep,od %r4,5,%r6 + vdep,tr %r4,5,%r6 + vdep,<> %r4,5,%r6 + vdep,>= %r4,5,%r6 + vdep,ev %r4,5,%r6 + + vdepi -1,5,%r6 + vdepi,= -1,5,%r6 + vdepi,< -1,5,%r6 + vdepi,od -1,5,%r6 + vdepi,tr -1,5,%r6 + vdepi,<> -1,5,%r6 + vdepi,>= -1,5,%r6 + vdepi,ev -1,5,%r6 + + zvdepi -1,5,%r6 + zvdepi,= -1,5,%r6 + zvdepi,< -1,5,%r6 + zvdepi,od -1,5,%r6 + zvdepi,tr -1,5,%r6 + zvdepi,<> -1,5,%r6 + zvdepi,>= -1,5,%r6 + zvdepi,ev -1,5,%r6 + + depi -1,4,10,%r6 + depi,= -1,4,10,%r6 + depi,< -1,4,10,%r6 + depi,od -1,4,10,%r6 + depi,tr -1,4,10,%r6 + depi,<> -1,4,10,%r6 + depi,>= -1,4,10,%r6 + depi,ev -1,4,10,%r6 + + zdepi -1,4,10,%r6 + zdepi,= -1,4,10,%r6 + zdepi,< -1,4,10,%r6 + zdepi,od -1,4,10,%r6 + zdepi,tr -1,4,10,%r6 + zdepi,<> -1,4,10,%r6 + zdepi,>= -1,4,10,%r6 + zdepi,ev -1,4,10,%r6 + diff --git a/gas/testsuite/gas/hppa/basic/ds.s b/gas/testsuite/gas/hppa/basic/ds.s new file mode 100755 index 0000000..5831e26 --- /dev/null +++ b/gas/testsuite/gas/hppa/basic/ds.s @@ -0,0 +1,32 @@ + .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 +; Basic immediate instruction tests. +; +; 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. + ds %r4,%r5,%r6 + ds,= %r4,%r5,%r6 + ds,< %r4,%r5,%r6 + ds,<= %r4,%r5,%r6 + ds,<< %r4,%r5,%r6 + ds,<<= %r4,%r5,%r6 + ds,sv %r4,%r5,%r6 + ds,od %r4,%r5,%r6 + ds,tr %r4,%r5,%r6 + ds,<> %r4,%r5,%r6 + ds,>= %r4,%r5,%r6 + ds,> %r4,%r5,%r6 + ds,>>= %r4,%r5,%r6 + ds,>> %r4,%r5,%r6 + ds,nsv %r4,%r5,%r6 + ds,ev %r4,%r5,%r6 diff --git a/gas/testsuite/gas/hppa/basic/extract.s b/gas/testsuite/gas/hppa/basic/extract.s new file mode 100755 index 0000000..29030f4 --- /dev/null +++ b/gas/testsuite/gas/hppa/basic/extract.s @@ -0,0 +1,51 @@ + .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 +; Basic immediate instruction tests. +; +; 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. + extru %r4,5,10,%r6 + extru,= %r4,5,10,%r6 + extru,< %r4,5,10,%r6 + extru,od %r4,5,10,%r6 + extru,tr %r4,5,10,%r6 + extru,<> %r4,5,10,%r6 + extru,>= %r4,5,10,%r6 + extru,ev %r4,5,10,%r6 + + extrs %r4,5,10,%r6 + extrs,= %r4,5,10,%r6 + extrs,< %r4,5,10,%r6 + extrs,od %r4,5,10,%r6 + extrs,tr %r4,5,10,%r6 + extrs,<> %r4,5,10,%r6 + extrs,>= %r4,5,10,%r6 + extrs,ev %r4,5,10,%r6 + + vextru %r4,5,%r6 + vextru,= %r4,5,%r6 + vextru,< %r4,5,%r6 + vextru,od %r4,5,%r6 + vextru,tr %r4,5,%r6 + vextru,<> %r4,5,%r6 + vextru,>= %r4,5,%r6 + vextru,ev %r4,5,%r6 + + vextrs %r4,5,%r6 + vextrs,= %r4,5,%r6 + vextrs,< %r4,5,%r6 + vextrs,od %r4,5,%r6 + vextrs,tr %r4,5,%r6 + vextrs,<> %r4,5,%r6 + vextrs,>= %r4,5,%r6 + vextrs,ev %r4,5,%r6 diff --git a/gas/testsuite/gas/hppa/basic/fmem.s b/gas/testsuite/gas/hppa/basic/fmem.s new file mode 100755 index 0000000..b730b40 --- /dev/null +++ b/gas/testsuite/gas/hppa/basic/fmem.s @@ -0,0 +1,52 @@ + .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 +; Basic immediate instruction tests. +; +; 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. + fldwx %r4(%sr0,%r5),%fr6 + fldwx,s %r4(%sr0,%r5),%fr6 + fldwx,m %r4(%sr0,%r5),%fr6 + fldwx,sm %r4(%sr0,%r5),%fr6 + flddx %r4(%sr0,%r5),%fr6 + flddx,s %r4(%sr0,%r5),%fr6 + flddx,m %r4(%sr0,%r5),%fr6 + flddx,sm %r4(%sr0,%r5),%fr6 + fstwx %fr6,%r4(%sr0,%r5) + fstwx,s %fr6,%r4(%sr0,%r5) + fstwx,m %fr6,%r4(%sr0,%r5) + fstwx,sm %fr6,%r4(%sr0,%r5) + fstdx %fr6,%r4(%sr0,%r5) + fstdx,s %fr6,%r4(%sr0,%r5) + fstdx,m %fr6,%r4(%sr0,%r5) + fstdx,sm %fr6,%r4(%sr0,%r5) + fstqx %fr6,%r4(%sr0,%r5) + fstqx,s %fr6,%r4(%sr0,%r5) + fstqx,m %fr6,%r4(%sr0,%r5) + fstqx,sm %fr6,%r4(%sr0,%r5) + + fldws 0(%sr0,%r5),%fr6 + fldws,mb 0(%sr0,%r5),%fr6 + fldws,ma 0(%sr0,%r5),%fr6 + fldds 0(%sr0,%r5),%fr6 + fldds,mb 0(%sr0,%r5),%fr6 + fldds,ma 0(%sr0,%r5),%fr6 + fstws %fr6,0(%sr0,%r5) + fstws,mb %fr6,0(%sr0,%r5) + fstws,ma %fr6,0(%sr0,%r5) + fstds %fr6,0(%sr0,%r5) + fstds,mb %fr6,0(%sr0,%r5) + fstds,ma %fr6,0(%sr0,%r5) + fstqs %fr6,0(%sr0,%r5) + fstqs,mb %fr6,0(%sr0,%r5) + fstqs,ma %fr6,0(%sr0,%r5) diff --git a/gas/testsuite/gas/hppa/basic/fmemLRbug.s b/gas/testsuite/gas/hppa/basic/fmemLRbug.s new file mode 100644 index 0000000..788dd7a --- /dev/null +++ b/gas/testsuite/gas/hppa/basic/fmemLRbug.s @@ -0,0 +1,76 @@ + .code + .export f +f + .proc + .callinfo frame=0,no_calls + .entry + + fstws %fr6R,0(%r26) + fstws %fr6L,4(%r26) + fstws %fr6,8(%r26) + + fstds %fr6R,0(%r26) + fstds %fr6L,4(%r26) + fstds %fr6,8(%r26) + + fldws 0(%r26),%fr6R + fldws 4(%r26),%fr6L + fldws 8(%r26),%fr6 + + fldds 0(%r26),%fr6R + fldds 4(%r26),%fr6L + fldds 8(%r26),%fr6 + + fstws %fr6R,0(%sr0,%r26) + fstws %fr6L,4(%sr0,%r26) + fstws %fr6,8(%sr0,%r26) + + fstds %fr6R,0(%sr0,%r26) + fstds %fr6L,4(%sr0,%r26) + fstds %fr6,8(%sr0,%r26) + + fldws 0(%sr0,%r26),%fr6R + fldws 4(%sr0,%r26),%fr6L + fldws 8(%sr0,%r26),%fr6 + + fldds 0(%sr0,%r26),%fr6R + fldds 4(%sr0,%r26),%fr6L + fldds 8(%sr0,%r26),%fr6 + + fstwx %fr6R,%r25(%r26) + fstwx %fr6L,%r25(%r26) + fstwx %fr6,%r25(%r26) + + fstdx %fr6R,%r25(%r26) + fstdx %fr6L,%r25(%r26) + fstdx %fr6,%r25(%r26) + + fldwx %r25(%r26),%fr6R + fldwx %r25(%r26),%fr6L + fldwx %r25(%r26),%fr6 + + flddx %r25(%r26),%fr6R + flddx %r25(%r26),%fr6L + flddx %r25(%r26),%fr6 + + fstwx %fr6R,%r25(%sr0,%r26) + fstwx %fr6L,%r25(%sr0,%r26) + fstwx %fr6,%r25(%sr0,%r26) + + fstdx %fr6R,%r25(%sr0,%r26) + fstdx %fr6L,%r25(%sr0,%r26) + fstdx %fr6,%r25(%sr0,%r26) + + fldwx %r25(%sr0,%r26),%fr6R + fldwx %r25(%sr0,%r26),%fr6L + fldwx %r25(%sr0,%r26),%fr6 + + flddx %r25(%sr0,%r26),%fr6R + flddx %r25(%sr0,%r26),%fr6L + flddx %r25(%sr0,%r26),%fr6 + + bv 0(%r2) + nop + + .exit + .procend diff --git a/gas/testsuite/gas/hppa/basic/fp_comp.s b/gas/testsuite/gas/hppa/basic/fp_comp.s new file mode 100755 index 0000000..c1017f7 --- /dev/null +++ b/gas/testsuite/gas/hppa/basic/fp_comp.s @@ -0,0 +1,81 @@ + .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 +; Basic immediate instruction tests. +; +; 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. + fcpy,sgl %fr5,%fr10 + fcpy,dbl %fr5,%fr10 + fcpy,quad %fr5,%fr10 + fcpy,sgl %fr20,%fr24 + fcpy,dbl %fr20,%fr24 + + fabs,sgl %fr5,%fr10 + fabs,dbl %fr5,%fr10 + fabs,quad %fr5,%fr10 + fabs,sgl %fr20,%fr24 + fabs,dbl %fr20,%fr24 + + fsqrt,sgl %fr5,%fr10 + fsqrt,dbl %fr5,%fr10 + fsqrt,quad %fr5,%fr10 + fsqrt,sgl %fr20,%fr24 + fsqrt,dbl %fr20,%fr24 + + frnd,sgl %fr5,%fr10 + frnd,dbl %fr5,%fr10 + frnd,quad %fr5,%fr10 + frnd,sgl %fr20,%fr24 + frnd,dbl %fr20,%fr24 + + fadd,sgl %fr4,%fr8,%fr12 + fadd,dbl %fr4,%fr8,%fr12 + fadd,quad %fr4,%fr8,%fr12 + fadd,sgl %fr20,%fr24,%fr28 + fadd,dbl %fr20,%fr24,%fr28 + fadd,quad %fr20,%fr24,%fr28 + + fsub,sgl %fr4,%fr8,%fr12 + fsub,dbl %fr4,%fr8,%fr12 + fsub,quad %fr4,%fr8,%fr12 + fsub,sgl %fr20,%fr24,%fr28 + fsub,dbl %fr20,%fr24,%fr28 + fsub,quad %fr20,%fr24,%fr28 + + fmpy,sgl %fr4,%fr8,%fr12 + fmpy,dbl %fr4,%fr8,%fr12 + fmpy,quad %fr4,%fr8,%fr12 + fmpy,sgl %fr20,%fr24,%fr28 + fmpy,dbl %fr20,%fr24,%fr28 + fmpy,quad %fr20,%fr24,%fr28 + + fdiv,sgl %fr4,%fr8,%fr12 + fdiv,dbl %fr4,%fr8,%fr12 + fdiv,quad %fr4,%fr8,%fr12 + fdiv,sgl %fr20,%fr24,%fr28 + fdiv,dbl %fr20,%fr24,%fr28 + fdiv,quad %fr20,%fr24,%fr28 + + frem,sgl %fr4,%fr8,%fr12 + frem,dbl %fr4,%fr8,%fr12 + frem,quad %fr4,%fr8,%fr12 + frem,sgl %fr20,%fr24,%fr28 + frem,dbl %fr20,%fr24,%fr28 + frem,quad %fr20,%fr24,%fr28 + + fmpyadd,sgl %fr16,%fr17,%fr18,%fr19,%fr20 + fmpyadd,dbl %fr16,%fr17,%fr18,%fr19,%fr20 + fmpysub,sgl %fr16,%fr17,%fr18,%fr19,%fr20 + fmpysub,dbl %fr16,%fr17,%fr18,%fr19,%fr20 + + xmpyu %fr4,%fr5,%fr6 diff --git a/gas/testsuite/gas/hppa/basic/fp_conv.s b/gas/testsuite/gas/hppa/basic/fp_conv.s new file mode 100755 index 0000000..5a44cb1 --- /dev/null +++ b/gas/testsuite/gas/hppa/basic/fp_conv.s @@ -0,0 +1,92 @@ + .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 +; Basic immediate instruction tests. +; +; 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. + fcnvff,sgl,sgl %fr5,%fr10 + fcnvff,sgl,dbl %fr5,%fr10 + fcnvff,sgl,quad %fr5,%fr10 + fcnvff,dbl,sgl %fr5,%fr10 + fcnvff,dbl,dbl %fr5,%fr10 + fcnvff,dbl,quad %fr5,%fr10 + fcnvff,quad,sgl %fr5,%fr10 + fcnvff,quad,dbl %fr5,%fr10 + fcnvff,quad,quad %fr5,%fr10 + fcnvff,sgl,sgl %fr20,%fr24 + fcnvff,sgl,dbl %fr20,%fr24 + fcnvff,sgl,quad %fr20,%fr24 + fcnvff,dbl,sgl %fr20,%fr24 + fcnvff,dbl,dbl %fr20,%fr24 + fcnvff,dbl,quad %fr20,%fr24 + fcnvff,quad,sgl %fr20,%fr24 + fcnvff,quad,dbl %fr20,%fr24 + fcnvff,quad,quad %fr20,%fr24 + + fcnvxf,sgl,sgl %fr5,%fr10 + fcnvxf,sgl,dbl %fr5,%fr10 + fcnvxf,sgl,quad %fr5,%fr10 + fcnvxf,dbl,sgl %fr5,%fr10 + fcnvxf,dbl,dbl %fr5,%fr10 + fcnvxf,dbl,quad %fr5,%fr10 + fcnvxf,quad,sgl %fr5,%fr10 + fcnvxf,quad,dbl %fr5,%fr10 + fcnvxf,quad,quad %fr5,%fr10 + fcnvxf,sgl,sgl %fr20,%fr24 + fcnvxf,sgl,dbl %fr20,%fr24 + fcnvxf,sgl,quad %fr20,%fr24 + fcnvxf,dbl,sgl %fr20,%fr24 + fcnvxf,dbl,dbl %fr20,%fr24 + fcnvxf,dbl,quad %fr20,%fr24 + fcnvxf,quad,sgl %fr20,%fr24 + fcnvxf,quad,dbl %fr20,%fr24 + fcnvxf,quad,quad %fr20,%fr24 + + fcnvfx,sgl,sgl %fr5,%fr10 + fcnvfx,sgl,dbl %fr5,%fr10 + fcnvfx,sgl,quad %fr5,%fr10 + fcnvfx,dbl,sgl %fr5,%fr10 + fcnvfx,dbl,dbl %fr5,%fr10 + fcnvfx,dbl,quad %fr5,%fr10 + fcnvfx,quad,sgl %fr5,%fr10 + fcnvfx,quad,dbl %fr5,%fr10 + fcnvfx,quad,quad %fr5,%fr10 + fcnvfx,sgl,sgl %fr20,%fr24 + fcnvfx,sgl,dbl %fr20,%fr24 + fcnvfx,sgl,quad %fr20,%fr24 + fcnvfx,dbl,sgl %fr20,%fr24 + fcnvfx,dbl,dbl %fr20,%fr24 + fcnvfx,dbl,quad %fr20,%fr24 + fcnvfx,quad,sgl %fr20,%fr24 + fcnvfx,quad,dbl %fr20,%fr24 + fcnvfx,quad,quad %fr20,%fr24 + + fcnvfxt,sgl,sgl %fr5,%fr10 + fcnvfxt,sgl,dbl %fr5,%fr10 + fcnvfxt,sgl,quad %fr5,%fr10 + fcnvfxt,dbl,sgl %fr5,%fr10 + fcnvfxt,dbl,dbl %fr5,%fr10 + fcnvfxt,dbl,quad %fr5,%fr10 + fcnvfxt,quad,sgl %fr5,%fr10 + fcnvfxt,quad,dbl %fr5,%fr10 + fcnvfxt,quad,quad %fr5,%fr10 + fcnvfxt,sgl,sgl %fr20,%fr24 + fcnvfxt,sgl,dbl %fr20,%fr24 + fcnvfxt,sgl,quad %fr20,%fr24 + fcnvfxt,dbl,sgl %fr20,%fr24 + fcnvfxt,dbl,dbl %fr20,%fr24 + fcnvfxt,dbl,quad %fr20,%fr24 + fcnvfxt,quad,sgl %fr20,%fr24 + fcnvfxt,quad,dbl %fr20,%fr24 + fcnvfxt,quad,quad %fr20,%fr24 + diff --git a/gas/testsuite/gas/hppa/basic/fp_fcmp.s b/gas/testsuite/gas/hppa/basic/fp_fcmp.s new file mode 100755 index 0000000..fbd092c --- /dev/null +++ b/gas/testsuite/gas/hppa/basic/fp_fcmp.s @@ -0,0 +1,114 @@ + .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 +; Basic immediate instruction tests. +; +; 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. + fcmp,sgl,false? %fr4,%fr5 + fcmp,sgl,false %fr4,%fr5 + fcmp,sgl,? %fr4,%fr5 + fcmp,sgl,!<=> %fr4,%fr5 + fcmp,sgl,= %fr4,%fr5 + fcmp,sgl,=T %fr4,%fr5 + fcmp,sgl,?= %fr4,%fr5 + fcmp,sgl,!<> %fr4,%fr5 + fcmp,sgl,!?>= %fr4,%fr5 + fcmp,sgl,< %fr4,%fr5 + fcmp,sgl,?< %fr4,%fr5 + fcmp,sgl,!>= %fr4,%fr5 + fcmp,sgl,!?> %fr4,%fr5 + fcmp,sgl,<= %fr4,%fr5 + fcmp,sgl,?<= %fr4,%fr5 + fcmp,sgl,!> %fr4,%fr5 + fcmp,sgl,!?<= %fr4,%fr5 + fcmp,sgl,> %fr4,%fr5 + fcmp,sgl,?> %fr4,%fr5 + fcmp,sgl,!<= %fr4,%fr5 + fcmp,sgl,!?< %fr4,%fr5 + fcmp,sgl,>= %fr4,%fr5 + fcmp,sgl,?>= %fr4,%fr5 + fcmp,sgl,!< %fr4,%fr5 + fcmp,sgl,!?= %fr4,%fr5 + fcmp,sgl,<> %fr4,%fr5 + fcmp,sgl,!= %fr4,%fr5 + fcmp,sgl,!=T %fr4,%fr5 + fcmp,sgl,!? %fr4,%fr5 + fcmp,sgl,<=> %fr4,%fr5 + fcmp,sgl,true? %fr4,%fr5 + fcmp,sgl,true %fr4,%fr5 + + fcmp,dbl,false? %fr4,%fr5 + fcmp,dbl,false %fr4,%fr5 + fcmp,dbl,? %fr4,%fr5 + fcmp,dbl,!<=> %fr4,%fr5 + fcmp,dbl,= %fr4,%fr5 + fcmp,dbl,=T %fr4,%fr5 + fcmp,dbl,?= %fr4,%fr5 + fcmp,dbl,!<> %fr4,%fr5 + fcmp,dbl,!?>= %fr4,%fr5 + fcmp,dbl,< %fr4,%fr5 + fcmp,dbl,?< %fr4,%fr5 + fcmp,dbl,!>= %fr4,%fr5 + fcmp,dbl,!?> %fr4,%fr5 + fcmp,dbl,<= %fr4,%fr5 + fcmp,dbl,?<= %fr4,%fr5 + fcmp,dbl,!> %fr4,%fr5 + fcmp,dbl,!?<= %fr4,%fr5 + fcmp,dbl,> %fr4,%fr5 + fcmp,dbl,?> %fr4,%fr5 + fcmp,dbl,!<= %fr4,%fr5 + fcmp,dbl,!?< %fr4,%fr5 + fcmp,dbl,>= %fr4,%fr5 + fcmp,dbl,?>= %fr4,%fr5 + fcmp,dbl,!< %fr4,%fr5 + fcmp,dbl,!?= %fr4,%fr5 + fcmp,dbl,<> %fr4,%fr5 + fcmp,dbl,!= %fr4,%fr5 + fcmp,dbl,!=T %fr4,%fr5 + fcmp,dbl,!? %fr4,%fr5 + fcmp,dbl,<=> %fr4,%fr5 + fcmp,dbl,true? %fr4,%fr5 + fcmp,dbl,true %fr4,%fr5 + + fcmp,quad,false? %fr4,%fr5 + fcmp,quad,false %fr4,%fr5 + fcmp,quad,? %fr4,%fr5 + fcmp,quad,!<=> %fr4,%fr5 + fcmp,quad,= %fr4,%fr5 + fcmp,quad,=T %fr4,%fr5 + fcmp,quad,?= %fr4,%fr5 + fcmp,quad,!<> %fr4,%fr5 + fcmp,quad,!?>= %fr4,%fr5 + fcmp,quad,< %fr4,%fr5 + fcmp,quad,?< %fr4,%fr5 + fcmp,quad,!>= %fr4,%fr5 + fcmp,quad,!?> %fr4,%fr5 + fcmp,quad,<= %fr4,%fr5 + fcmp,quad,?<= %fr4,%fr5 + fcmp,quad,!> %fr4,%fr5 + fcmp,quad,!?<= %fr4,%fr5 + fcmp,quad,> %fr4,%fr5 + fcmp,quad,?> %fr4,%fr5 + fcmp,quad,!<= %fr4,%fr5 + fcmp,quad,!?< %fr4,%fr5 + fcmp,quad,>= %fr4,%fr5 + fcmp,quad,?>= %fr4,%fr5 + fcmp,quad,!< %fr4,%fr5 + fcmp,quad,!?= %fr4,%fr5 + fcmp,quad,<> %fr4,%fr5 + fcmp,quad,!= %fr4,%fr5 + fcmp,quad,!=T %fr4,%fr5 + fcmp,quad,!? %fr4,%fr5 + fcmp,quad,<=> %fr4,%fr5 + fcmp,quad,true? %fr4,%fr5 + fcmp,quad,true %fr4,%fr5 diff --git a/gas/testsuite/gas/hppa/basic/fp_misc.s b/gas/testsuite/gas/hppa/basic/fp_misc.s new file mode 100755 index 0000000..356ac04 --- /dev/null +++ b/gas/testsuite/gas/hppa/basic/fp_misc.s @@ -0,0 +1,18 @@ + .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 +; Basic immediate instruction tests. +; +; 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. +fpu_misc_tests: + ftest diff --git a/gas/testsuite/gas/hppa/basic/imem.s b/gas/testsuite/gas/hppa/basic/imem.s new file mode 100755 index 0000000..4cc52f9 --- /dev/null +++ b/gas/testsuite/gas/hppa/basic/imem.s @@ -0,0 +1,93 @@ + .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 + .EXPORT integer_memory_tests,CODE + .EXPORT integer_indexing_load,CODE + .EXPORT integer_load_short_memory,CODE + .EXPORT integer_store_short_memory,CODE + .EXPORT main,CODE + .EXPORT main,ENTRY,PRIV_LEV=3,RTNVAL=GR +; Basic integer memory tests which also test the various +; addressing modes and completers. +; +; 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. +; +integer_memory_tests: + ldw 0(0,%r4),%r26 + ldh 0(0,%r4),%r26 + ldb 0(0,%r4),%r26 + stw %r26,0(0,%r4) + sth %r26,0(0,%r4) + stb %r26,0(0,%r4) + +; Should make sure pre/post modes are recognized correctly. + ldwm 0(0,%r4),%r26 + stwm %r26,0(0,%r4) + +integer_indexing_load: + ldwx %r5(0,%r4),%r26 + ldwx,s %r5(0,%r4),%r26 + ldwx,m %r5(0,%r4),%r26 + ldwx,sm %r5(0,%r4),%r26 + ldhx %r5(0,%r4),%r26 + ldhx,s %r5(0,%r4),%r26 + ldhx,m %r5(0,%r4),%r26 + ldhx,sm %r5(0,%r4),%r26 + ldbx %r5(0,%r4),%r26 + ldbx,s %r5(0,%r4),%r26 + ldbx,m %r5(0,%r4),%r26 + ldbx,sm %r5(0,%r4),%r26 + ldwax %r5(%r4),%r26 + ldwax,s %r5(%r4),%r26 + ldwax,m %r5(%r4),%r26 + ldwax,sm %r5(%r4),%r26 + ldcwx %r5(0,%r4),%r26 + ldcwx,s %r5(0,%r4),%r26 + ldcwx,m %r5(0,%r4),%r26 + ldcwx,sm %r5(0,%r4),%r26 + +integer_load_short_memory: + ldws 0(0,%r4),%r26 + ldws,mb 0(0,%r4),%r26 + ldws,ma 0(0,%r4),%r26 + ldhs 0(0,%r4),%r26 + ldhs,mb 0(0,%r4),%r26 + ldhs,ma 0(0,%r4),%r26 + ldbs 0(0,%r4),%r26 + ldbs,mb 0(0,%r4),%r26 + ldbs,ma 0(0,%r4),%r26 + ldwas 0(%r4),%r26 + ldwas,mb 0(%r4),%r26 + ldwas,ma 0(%r4),%r26 + ldcws 0(0,%r4),%r26 + ldcws,mb 0(0,%r4),%r26 + ldcws,ma 0(0,%r4),%r26 + +integer_store_short_memory: + stws %r26,0(0,%r4) + stws,mb %r26,0(0,%r4) + stws,ma %r26,0(0,%r4) + sths %r26,0(0,%r4) + sths,mb %r26,0(0,%r4) + sths,ma %r26,0(0,%r4) + stbs %r26,0(0,%r4) + stbs,mb %r26,0(0,%r4) + stbs,ma %r26,0(0,%r4) + stwas %r26,0(%r4) + stwas,mb %r26,0(%r4) + stwas,ma %r26,0(%r4) + stbys %r26,0(0,%r4) + stbys,b %r26,0(0,%r4) + stbys,e %r26,0(0,%r4) + stbys,b,m %r26,0(0,%r4) + stbys,e,m %r26,0(0,%r4) diff --git a/gas/testsuite/gas/hppa/basic/immed.s b/gas/testsuite/gas/hppa/basic/immed.s new file mode 100755 index 0000000..dd27d2f --- /dev/null +++ b/gas/testsuite/gas/hppa/basic/immed.s @@ -0,0 +1,21 @@ + .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 +; Basic immediate instruction tests. +; +; 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. +immediate_tests: + ldo 5(%r26),%r26 + ldil L%0xdeadbeef,%r26 + addil L%0xdeadbeef,%r5 + diff --git a/gas/testsuite/gas/hppa/basic/logical.s b/gas/testsuite/gas/hppa/basic/logical.s new file mode 100755 index 0000000..771059e --- /dev/null +++ b/gas/testsuite/gas/hppa/basic/logical.s @@ -0,0 +1,60 @@ + .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 +; Basic immediate instruction tests. +; +; 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. + or %r4,%r5,%r6 + or,= %r4,%r5,%r6 + or,< %r4,%r5,%r6 + or,<= %r4,%r5,%r6 + or,od %r4,%r5,%r6 + or,tr %r4,%r5,%r6 + or,<> %r4,%r5,%r6 + or,>= %r4,%r5,%r6 + or,> %r4,%r5,%r6 + or,ev %r4,%r5,%r6 + + xor %r4,%r5,%r6 + xor,= %r4,%r5,%r6 + xor,< %r4,%r5,%r6 + xor,<= %r4,%r5,%r6 + xor,od %r4,%r5,%r6 + xor,tr %r4,%r5,%r6 + xor,<> %r4,%r5,%r6 + xor,>= %r4,%r5,%r6 + xor,> %r4,%r5,%r6 + xor,ev %r4,%r5,%r6 + + and %r4,%r5,%r6 + and,= %r4,%r5,%r6 + and,< %r4,%r5,%r6 + and,<= %r4,%r5,%r6 + and,od %r4,%r5,%r6 + and,tr %r4,%r5,%r6 + and,<> %r4,%r5,%r6 + and,>= %r4,%r5,%r6 + and,> %r4,%r5,%r6 + and,ev %r4,%r5,%r6 + + andcm %r4,%r5,%r6 + andcm,= %r4,%r5,%r6 + andcm,< %r4,%r5,%r6 + andcm,<= %r4,%r5,%r6 + andcm,od %r4,%r5,%r6 + andcm,tr %r4,%r5,%r6 + andcm,<> %r4,%r5,%r6 + andcm,>= %r4,%r5,%r6 + andcm,> %r4,%r5,%r6 + andcm,ev %r4,%r5,%r6 + diff --git a/gas/testsuite/gas/hppa/basic/purge.s b/gas/testsuite/gas/hppa/basic/purge.s new file mode 100755 index 0000000..2319f90 --- /dev/null +++ b/gas/testsuite/gas/hppa/basic/purge.s @@ -0,0 +1,35 @@ + .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 +; Basic immediate instruction tests. +; +; 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. + pdtlb %r4(%sr0,%r5) + pdtlb,m %r4(%sr0,%r5) + pitlb %r4(%sr4,%r5) + pitlb,m %r4(%sr4,%r5) + pdtlbe %r4(%sr0,%r5) + pdtlbe,m %r4(%sr0,%r5) + pitlbe %r4(%sr4,%r5) + pitlbe,m %r4(%sr4,%r5) + pdc %r4(%sr0,%r5) + pdc,m %r4(%sr0,%r5) + fdc %r4(%sr0,%r5) + fdc,m %r4(%sr0,%r5) + fic %r4(%sr4,%r5) + fic,m %r4(%sr4,%r5) + fdce %r4(%sr0,%r5) + fdce,m %r4(%sr0,%r5) + fice %r4(%sr4,%r5) + fice,m %r4(%sr4,%r5) + diff --git a/gas/testsuite/gas/hppa/basic/sh1add.s b/gas/testsuite/gas/hppa/basic/sh1add.s new file mode 100755 index 0000000..325d6cc --- /dev/null +++ b/gas/testsuite/gas/hppa/basic/sh1add.s @@ -0,0 +1,67 @@ + .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 +; Basic immediate instruction tests. +; +; 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. + sh1add %r4,%r5,%r6 + sh1add,= %r4,%r5,%r6 + sh1add,< %r4,%r5,%r6 + sh1add,<= %r4,%r5,%r6 + sh1add,nuv %r4,%r5,%r6 + sh1add,znv %r4,%r5,%r6 + sh1add,sv %r4,%r5,%r6 + sh1add,od %r4,%r5,%r6 + sh1add,tr %r4,%r5,%r6 + sh1add,<> %r4,%r5,%r6 + sh1add,>= %r4,%r5,%r6 + sh1add,> %r4,%r5,%r6 + sh1add,uv %r4,%r5,%r6 + sh1add,vnz %r4,%r5,%r6 + sh1add,nsv %r4,%r5,%r6 + sh1add,ev %r4,%r5,%r6 + + sh1addl %r4,%r5,%r6 + sh1addl,= %r4,%r5,%r6 + sh1addl,< %r4,%r5,%r6 + sh1addl,<= %r4,%r5,%r6 + sh1addl,nuv %r4,%r5,%r6 + sh1addl,znv %r4,%r5,%r6 + sh1addl,sv %r4,%r5,%r6 + sh1addl,od %r4,%r5,%r6 + sh1addl,tr %r4,%r5,%r6 + sh1addl,<> %r4,%r5,%r6 + sh1addl,>= %r4,%r5,%r6 + sh1addl,> %r4,%r5,%r6 + sh1addl,uv %r4,%r5,%r6 + sh1addl,vnz %r4,%r5,%r6 + sh1addl,nsv %r4,%r5,%r6 + sh1addl,ev %r4,%r5,%r6 + + sh1addo %r4,%r5,%r6 + sh1addo,= %r4,%r5,%r6 + sh1addo,< %r4,%r5,%r6 + sh1addo,<= %r4,%r5,%r6 + sh1addo,nuv %r4,%r5,%r6 + sh1addo,znv %r4,%r5,%r6 + sh1addo,sv %r4,%r5,%r6 + sh1addo,od %r4,%r5,%r6 + sh1addo,tr %r4,%r5,%r6 + sh1addo,<> %r4,%r5,%r6 + sh1addo,>= %r4,%r5,%r6 + sh1addo,> %r4,%r5,%r6 + sh1addo,uv %r4,%r5,%r6 + sh1addo,vnz %r4,%r5,%r6 + sh1addo,nsv %r4,%r5,%r6 + sh1addo,ev %r4,%r5,%r6 + diff --git a/gas/testsuite/gas/hppa/basic/sh2add.s b/gas/testsuite/gas/hppa/basic/sh2add.s new file mode 100755 index 0000000..d19c99b --- /dev/null +++ b/gas/testsuite/gas/hppa/basic/sh2add.s @@ -0,0 +1,67 @@ + .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 +; Basic immediate instruction tests. +; +; 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. + sh2add %r4,%r5,%r6 + sh2add,= %r4,%r5,%r6 + sh2add,< %r4,%r5,%r6 + sh2add,<= %r4,%r5,%r6 + sh2add,nuv %r4,%r5,%r6 + sh2add,znv %r4,%r5,%r6 + sh2add,sv %r4,%r5,%r6 + sh2add,od %r4,%r5,%r6 + sh2add,tr %r4,%r5,%r6 + sh2add,<> %r4,%r5,%r6 + sh2add,>= %r4,%r5,%r6 + sh2add,> %r4,%r5,%r6 + sh2add,uv %r4,%r5,%r6 + sh2add,vnz %r4,%r5,%r6 + sh2add,nsv %r4,%r5,%r6 + sh2add,ev %r4,%r5,%r6 + + sh2addl %r4,%r5,%r6 + sh2addl,= %r4,%r5,%r6 + sh2addl,< %r4,%r5,%r6 + sh2addl,<= %r4,%r5,%r6 + sh2addl,nuv %r4,%r5,%r6 + sh2addl,znv %r4,%r5,%r6 + sh2addl,sv %r4,%r5,%r6 + sh2addl,od %r4,%r5,%r6 + sh2addl,tr %r4,%r5,%r6 + sh2addl,<> %r4,%r5,%r6 + sh2addl,>= %r4,%r5,%r6 + sh2addl,> %r4,%r5,%r6 + sh2addl,uv %r4,%r5,%r6 + sh2addl,vnz %r4,%r5,%r6 + sh2addl,nsv %r4,%r5,%r6 + sh2addl,ev %r4,%r5,%r6 + + sh2addo %r4,%r5,%r6 + sh2addo,= %r4,%r5,%r6 + sh2addo,< %r4,%r5,%r6 + sh2addo,<= %r4,%r5,%r6 + sh2addo,nuv %r4,%r5,%r6 + sh2addo,znv %r4,%r5,%r6 + sh2addo,sv %r4,%r5,%r6 + sh2addo,od %r4,%r5,%r6 + sh2addo,tr %r4,%r5,%r6 + sh2addo,<> %r4,%r5,%r6 + sh2addo,>= %r4,%r5,%r6 + sh2addo,> %r4,%r5,%r6 + sh2addo,uv %r4,%r5,%r6 + sh2addo,vnz %r4,%r5,%r6 + sh2addo,nsv %r4,%r5,%r6 + sh2addo,ev %r4,%r5,%r6 + diff --git a/gas/testsuite/gas/hppa/basic/sh3add.s b/gas/testsuite/gas/hppa/basic/sh3add.s new file mode 100755 index 0000000..a51e6e3 --- /dev/null +++ b/gas/testsuite/gas/hppa/basic/sh3add.s @@ -0,0 +1,67 @@ + .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 +; Basic immediate instruction tests. +; +; 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. + sh3add %r4,%r5,%r6 + sh3add,= %r4,%r5,%r6 + sh3add,< %r4,%r5,%r6 + sh3add,<= %r4,%r5,%r6 + sh3add,nuv %r4,%r5,%r6 + sh3add,znv %r4,%r5,%r6 + sh3add,sv %r4,%r5,%r6 + sh3add,od %r4,%r5,%r6 + sh3add,tr %r4,%r5,%r6 + sh3add,<> %r4,%r5,%r6 + sh3add,>= %r4,%r5,%r6 + sh3add,> %r4,%r5,%r6 + sh3add,uv %r4,%r5,%r6 + sh3add,vnz %r4,%r5,%r6 + sh3add,nsv %r4,%r5,%r6 + sh3add,ev %r4,%r5,%r6 + + sh3addl %r4,%r5,%r6 + sh3addl,= %r4,%r5,%r6 + sh3addl,< %r4,%r5,%r6 + sh3addl,<= %r4,%r5,%r6 + sh3addl,nuv %r4,%r5,%r6 + sh3addl,znv %r4,%r5,%r6 + sh3addl,sv %r4,%r5,%r6 + sh3addl,od %r4,%r5,%r6 + sh3addl,tr %r4,%r5,%r6 + sh3addl,<> %r4,%r5,%r6 + sh3addl,>= %r4,%r5,%r6 + sh3addl,> %r4,%r5,%r6 + sh3addl,uv %r4,%r5,%r6 + sh3addl,vnz %r4,%r5,%r6 + sh3addl,nsv %r4,%r5,%r6 + sh3addl,ev %r4,%r5,%r6 + + sh3addo %r4,%r5,%r6 + sh3addo,= %r4,%r5,%r6 + sh3addo,< %r4,%r5,%r6 + sh3addo,<= %r4,%r5,%r6 + sh3addo,nuv %r4,%r5,%r6 + sh3addo,znv %r4,%r5,%r6 + sh3addo,sv %r4,%r5,%r6 + sh3addo,od %r4,%r5,%r6 + sh3addo,tr %r4,%r5,%r6 + sh3addo,<> %r4,%r5,%r6 + sh3addo,>= %r4,%r5,%r6 + sh3addo,> %r4,%r5,%r6 + sh3addo,uv %r4,%r5,%r6 + sh3addo,vnz %r4,%r5,%r6 + sh3addo,nsv %r4,%r5,%r6 + sh3addo,ev %r4,%r5,%r6 + diff --git a/gas/testsuite/gas/hppa/basic/shift.s b/gas/testsuite/gas/hppa/basic/shift.s new file mode 100755 index 0000000..5cc621d --- /dev/null +++ b/gas/testsuite/gas/hppa/basic/shift.s @@ -0,0 +1,34 @@ + .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 +; Basic immediate instruction tests. +; +; 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. + vshd %r4,%r5,%r6 + vshd,= %r4,%r5,%r6 + vshd,< %r4,%r5,%r6 + vshd,od %r4,%r5,%r6 + vshd,tr %r4,%r5,%r6 + vshd,<> %r4,%r5,%r6 + vshd,>= %r4,%r5,%r6 + vshd,ev %r4,%r5,%r6 + + shd %r4,%r5,5,%r6 + shd,= %r4,%r5,5,%r6 + shd,< %r4,%r5,5,%r6 + shd,od %r4,%r5,5,%r6 + shd,tr %r4,%r5,5,%r6 + shd,<> %r4,%r5,5,%r6 + shd,>= %r4,%r5,5,%r6 + shd,ev %r4,%r5,5,%r6 + diff --git a/gas/testsuite/gas/hppa/basic/special.s b/gas/testsuite/gas/hppa/basic/special.s new file mode 100755 index 0000000..d341667 --- /dev/null +++ b/gas/testsuite/gas/hppa/basic/special.s @@ -0,0 +1,15 @@ + .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 + gfw %r4(%sr0,%r5) + gfw,m %r4(%sr0,%r5) + gfr %r4(%sr0,%r5) + gfr,m %r4(%sr0,%r5) diff --git a/gas/testsuite/gas/hppa/basic/spop.s b/gas/testsuite/gas/hppa/basic/spop.s new file mode 100644 index 0000000..7737312 --- /dev/null +++ b/gas/testsuite/gas/hppa/basic/spop.s @@ -0,0 +1,34 @@ + .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 +; 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. +spop_tests: + spop0,4,5 + spop0,4,115 + spop0,4,5,n + spop0,4,115,n + spop1,4,5 5 + spop1,4,115 5 + spop1,4,5,n 5 + spop1,4,115,n 5 + spop2,4,5 5 + spop2,4,115 5 + spop2,4,5,n 5 + spop2,4,115,n 5 + spop3,4,5 5,6 + spop3,4,115 5,6 + spop3,4,5,n 5,6 + spop3,4,115,n 5,6 + +; Gas fucks this up... Thinks it has the expression 5 mod r5. +; spop1,4,5 %r5 diff --git a/gas/testsuite/gas/hppa/basic/sub.s b/gas/testsuite/gas/hppa/basic/sub.s new file mode 100755 index 0000000..64ff0df --- /dev/null +++ b/gas/testsuite/gas/hppa/basic/sub.s @@ -0,0 +1,117 @@ + .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 +; Basic immediate instruction tests. +; +; 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. + sub %r4,%r5,%r6 + sub,= %r4,%r5,%r6 + sub,< %r4,%r5,%r6 + sub,<= %r4,%r5,%r6 + sub,<< %r4,%r5,%r6 + sub,<<= %r4,%r5,%r6 + sub,sv %r4,%r5,%r6 + sub,od %r4,%r5,%r6 + sub,tr %r4,%r5,%r6 + sub,<> %r4,%r5,%r6 + sub,>= %r4,%r5,%r6 + sub,> %r4,%r5,%r6 + sub,>>= %r4,%r5,%r6 + sub,>> %r4,%r5,%r6 + sub,nsv %r4,%r5,%r6 + sub,ev %r4,%r5,%r6 + + subo %r4,%r5,%r6 + subo,= %r4,%r5,%r6 + subo,< %r4,%r5,%r6 + subo,<= %r4,%r5,%r6 + subo,<< %r4,%r5,%r6 + subo,<<= %r4,%r5,%r6 + subo,sv %r4,%r5,%r6 + subo,od %r4,%r5,%r6 + subo,tr %r4,%r5,%r6 + subo,<> %r4,%r5,%r6 + subo,>= %r4,%r5,%r6 + subo,> %r4,%r5,%r6 + subo,>>= %r4,%r5,%r6 + subo,>> %r4,%r5,%r6 + subo,nsv %r4,%r5,%r6 + subo,ev %r4,%r5,%r6 + + subb %r4,%r5,%r6 + subb,= %r4,%r5,%r6 + subb,< %r4,%r5,%r6 + subb,<= %r4,%r5,%r6 + subb,<< %r4,%r5,%r6 + subb,<<= %r4,%r5,%r6 + subb,sv %r4,%r5,%r6 + subb,od %r4,%r5,%r6 + subb,tr %r4,%r5,%r6 + subb,<> %r4,%r5,%r6 + subb,>= %r4,%r5,%r6 + subb,> %r4,%r5,%r6 + subb,>>= %r4,%r5,%r6 + subb,>> %r4,%r5,%r6 + subb,nsv %r4,%r5,%r6 + subb,ev %r4,%r5,%r6 + + subbo %r4,%r5,%r6 + subbo,= %r4,%r5,%r6 + subbo,< %r4,%r5,%r6 + subbo,<= %r4,%r5,%r6 + subbo,<< %r4,%r5,%r6 + subbo,<<= %r4,%r5,%r6 + subbo,sv %r4,%r5,%r6 + subbo,od %r4,%r5,%r6 + subbo,tr %r4,%r5,%r6 + subbo,<> %r4,%r5,%r6 + subbo,>= %r4,%r5,%r6 + subbo,> %r4,%r5,%r6 + subbo,>>= %r4,%r5,%r6 + subbo,>> %r4,%r5,%r6 + subbo,nsv %r4,%r5,%r6 + subbo,ev %r4,%r5,%r6 + + subt %r4,%r5,%r6 + subt,= %r4,%r5,%r6 + subt,< %r4,%r5,%r6 + subt,<= %r4,%r5,%r6 + subt,<< %r4,%r5,%r6 + subt,<<= %r4,%r5,%r6 + subt,sv %r4,%r5,%r6 + subt,od %r4,%r5,%r6 + subt,tr %r4,%r5,%r6 + subt,<> %r4,%r5,%r6 + subt,>= %r4,%r5,%r6 + subt,> %r4,%r5,%r6 + subt,>>= %r4,%r5,%r6 + subt,>> %r4,%r5,%r6 + subt,nsv %r4,%r5,%r6 + subt,ev %r4,%r5,%r6 + + subto %r4,%r5,%r6 + subto,= %r4,%r5,%r6 + subto,< %r4,%r5,%r6 + subto,<= %r4,%r5,%r6 + subto,<< %r4,%r5,%r6 + subto,<<= %r4,%r5,%r6 + subto,sv %r4,%r5,%r6 + subto,od %r4,%r5,%r6 + subto,tr %r4,%r5,%r6 + subto,<> %r4,%r5,%r6 + subto,>= %r4,%r5,%r6 + subto,> %r4,%r5,%r6 + subto,>>= %r4,%r5,%r6 + subto,>> %r4,%r5,%r6 + subto,nsv %r4,%r5,%r6 + subto,ev %r4,%r5,%r6 diff --git a/gas/testsuite/gas/hppa/basic/subi.s b/gas/testsuite/gas/hppa/basic/subi.s new file mode 100755 index 0000000..063267c --- /dev/null +++ b/gas/testsuite/gas/hppa/basic/subi.s @@ -0,0 +1,49 @@ + .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 +; Basic immediate instruction tests. +; +; 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. + subi 123,%r5,%r6 + subi,= 123,%r5,%r6 + subi,< 123,%r5,%r6 + subi,<= 123,%r5,%r6 + subi,<< 123,%r5,%r6 + subi,<<= 123,%r5,%r6 + subi,sv 123,%r5,%r6 + subi,od 123,%r5,%r6 + subi,tr 123,%r5,%r6 + subi,<> 123,%r5,%r6 + subi,>= 123,%r5,%r6 + subi,> 123,%r5,%r6 + subi,>>= 123,%r5,%r6 + subi,>> 123,%r5,%r6 + subi,nsv 123,%r5,%r6 + subi,ev 123,%r5,%r6 + + subio 123,%r5,%r6 + subio,= 123,%r5,%r6 + subio,< 123,%r5,%r6 + subio,<= 123,%r5,%r6 + subio,<< 123,%r5,%r6 + subio,<<= 123,%r5,%r6 + subio,sv 123,%r5,%r6 + subio,od 123,%r5,%r6 + subio,tr 123,%r5,%r6 + subio,<> 123,%r5,%r6 + subio,>= 123,%r5,%r6 + subio,> 123,%r5,%r6 + subio,>>= 123,%r5,%r6 + subio,>> 123,%r5,%r6 + subio,nsv 123,%r5,%r6 + subio,ev 123,%r5,%r6 diff --git a/gas/testsuite/gas/hppa/basic/system.s b/gas/testsuite/gas/hppa/basic/system.s new file mode 100755 index 0000000..1b2e7bf --- /dev/null +++ b/gas/testsuite/gas/hppa/basic/system.s @@ -0,0 +1,46 @@ + .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 +; Basic immediate instruction tests. +; +; 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. + break 5,12 + rfi + rfir + ssm 5,%r4 + rsm 5,%r4 + mtsm %r4 + ldsid (%sr0,%r5),%r4 + mtsp %r4,%sr0 + mtctl %r4,%cr10 + mfsp %sr0,%r4 + mfctl %cr10,%r4 + sync + syncdma + diag 1234 + + prober (%sr0,%r5),%r6,%r7 + proberi (%sr0,%r5),1,%r7 + probew (%sr0,%r5),%r6,%r7 + probewi (%sr0,%r5),1,%r7 + + lpa %r4(%sr0,%r5),%r6 + lpa,m %r4(%sr0,%r5),%r6 + lha %r4(%sr0,%r5),%r6 + lha,m %r4(%sr0,%r5),%r6 + lci %r4(%sr0,%r5),%r6 + + idtlba %r4,(%sr0,%r5) + iitlba %r4,(%sr4,%r5) + idtlbp %r4,(%sr0,%r5) + iitlbp %r4,(%sr4,%r5) diff --git a/gas/testsuite/gas/hppa/basic/unit.s b/gas/testsuite/gas/hppa/basic/unit.s new file mode 100755 index 0000000..b69b10e --- /dev/null +++ b/gas/testsuite/gas/hppa/basic/unit.s @@ -0,0 +1,55 @@ + .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 +; Basic immediate instruction tests. +; +; 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. + + uxor %r4,%r5,%r6 + uxor,sbz %r4,%r5,%r6 + uxor,shz %r4,%r5,%r6 + uxor,sdc %r4,%r5,%r6 + uxor,sbc %r4,%r5,%r6 + uxor,shc %r4,%r5,%r6 + uxor,tr %r4,%r5,%r6 + uxor,nbz %r4,%r5,%r6 + uxor,nhz %r4,%r5,%r6 + uxor,ndc %r4,%r5,%r6 + uxor,nbc %r4,%r5,%r6 + uxor,nhc %r4,%r5,%r6 + + uaddcm %r4,%r5,%r6 + uaddcm,sbz %r4,%r5,%r6 + uaddcm,shz %r4,%r5,%r6 + uaddcm,sdc %r4,%r5,%r6 + uaddcm,sbc %r4,%r5,%r6 + uaddcm,shc %r4,%r5,%r6 + uaddcm,tr %r4,%r5,%r6 + uaddcm,nbz %r4,%r5,%r6 + uaddcm,nhz %r4,%r5,%r6 + uaddcm,ndc %r4,%r5,%r6 + uaddcm,nbc %r4,%r5,%r6 + uaddcm,nhc %r4,%r5,%r6 + + uaddcmt %r4,%r5,%r6 + uaddcmt,sbz %r4,%r5,%r6 + uaddcmt,shz %r4,%r5,%r6 + uaddcmt,sdc %r4,%r5,%r6 + uaddcmt,sbc %r4,%r5,%r6 + uaddcmt,shc %r4,%r5,%r6 + uaddcmt,tr %r4,%r5,%r6 + uaddcmt,nbz %r4,%r5,%r6 + uaddcmt,nhz %r4,%r5,%r6 + uaddcmt,ndc %r4,%r5,%r6 + uaddcmt,nbc %r4,%r5,%r6 + uaddcmt,nhc %r4,%r5,%r6 diff --git a/gas/testsuite/gas/hppa/basic/weird.s b/gas/testsuite/gas/hppa/basic/weird.s new file mode 100755 index 0000000..6df4ea1 --- /dev/null +++ b/gas/testsuite/gas/hppa/basic/weird.s @@ -0,0 +1,870 @@ + .stabs "weird.c",0x64,0,0,Label0 +Label0: + .stabs "inttype:t1=bu4;0;32;",0x80,0,0,0 + + + .stabs "sym32: !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + + .stabs "type32:t32= !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + + + .stabs "attr104:G404=@h !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr105:G405=@i !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + + .stabs "var0:G300=@a8;1",0x20,0,0, 0 + .export var0 + .data + .align 4 +var0: + .long 42 + + .stabs "sym33:! !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym35:# !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym36:$ !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym37:% !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym38:& !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym39:' !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym40:( !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym41:) !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym42:* !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym43:+ !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym44:, !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym45:- !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + + .export attr122 + .data + .align 4 +attr122: + .long 42 + .export attr123 + .data + .align 4 +attr123: + .long 42 + .export attr124 + .data + .align 4 +attr124: + .long 42 + + .stabs "sym46:. !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym47:/ !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym48:0 !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym49:1 !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym50:2 !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + + .stabs "attr96:G396=@` !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr97:G397=@a !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr98:G398=@b !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr99:G399=@c !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + + .stabs "sym51:3 !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym52:4 !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym53:5 !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym54:6 !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym55:7 !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym56:8 !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym57:9 !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym58:: !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym59:; !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym60:< !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym61:= !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym62:> !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym63:? !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym64:@ !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym65:A !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym66:B !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym67:C !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym68:D !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym69:E !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym70:F !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym71:G !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym72:H !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym73:I !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym74:J !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym75:K !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym76:L !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym77:M !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym78:N !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym79:O !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym80:P !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym81:Q !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym82:R !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym83:S !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym84:T !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym85:U !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym86:V !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym87:W !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym88:X !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym89:Y !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym90:Z !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym91:[ !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + + .stabs "sym93:] !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym94:^ !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym95:_ !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym96:` !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym97:a !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym98:b !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym99:c !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym100:d !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym101:e !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym102:f !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym103:g !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym104:h !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym105:i !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym106:j !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym107:k !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym108:l !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym109:m !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym110:n !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym111:o !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym112:p !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym113:q !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym114:r !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym115:s !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym116:t !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym117:u !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym118:v !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym119:w !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym120:x !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym121:y !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym122:z !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym123:{ !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym124:| !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym125:} !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "sym126:~ !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + + .stabs "type33:t33=! !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type35:t35=# !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type36:t36=$ !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type37:t37=% !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type38:t38=& !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type39:t39=' !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type40:t40=( !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type41:t41=) !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type42:t42=* !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type43:t43=+ !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type44:t44=, !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type45:t45=- !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type46:t46=. !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type47:t47=/ !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type48:t48=0 !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type49:t49=1 !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type50:t50=2 !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type51:t51=3 !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type52:t52=4 !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type53:t53=5 !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type54:t54=6 !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type55:t55=7 !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type56:t56=8 !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type57:t57=9 !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type58:t58=: !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type59:t59=; !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type60:t60=< !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type61:t61== !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type62:t62=> !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type63:t63=? !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type64:t64=@ !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type65:t65=A !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type66:t66=B !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type67:t67=C !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + + .export attr66 + .data + .align 4 +attr66: + .long 42 + .export attr67 + .data + .align 4 +attr67: + .long 42 + .export attr68 + .data + .align 4 +attr68: + .long 42 + .export attr69 + .data + .align 4 +attr69: + .long 42 + + .stabs "type68:t68=D !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type69:t69=E !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type70:t70=F !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type71:t71=G !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type72:t72=H !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type73:t73=I !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type74:t74=J !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type75:t75=K !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type76:t76=L !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type77:t77=M !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type78:t78=N !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type79:t79=O !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type80:t80=P !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type81:t81=Q !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type82:t82=R !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type83:t83=S !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type84:t84=T !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type85:t85=U !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type86:t86=V !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type87:t87=W !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + + .stabs "attr69:G369=@E !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr70:G370=@F !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr71:G371=@G !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + + .stabs "type88:t88=X !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type89:t89=Y !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type90:t90=Z !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type91:t91=[ !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + + .stabs "type93:t93=] !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type94:t94=^ !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type95:t95=_ !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type96:t96=` !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type97:t97=a !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type98:t98=b !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type99:t99=c !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type100:t100=d !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type101:t101=e !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type102:t102=f !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type103:t103=g !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type104:t104=h !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type105:t105=i !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type106:t106=j !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type107:t107=k !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type108:t108=l !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type109:t109=m !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type110:t110=n !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type111:t111=o !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type112:t112=p !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type113:t113=q !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type114:t114=r !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type115:t115=s !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type116:t116=t !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type117:t117=u !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type118:t118=v !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type119:t119=w !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type120:t120=x !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type121:t121=y !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type122:t122=z !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type123:t123={ !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type124:t124=| !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type125:t125=} !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type126:t126=~ !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + + .stabs "attr32:G332=@ !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr33:G333=@! !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr35:G334=@# !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + + .stabs "primary:G200=ered:0,green:1,blue:2,;", 0x20,0,0, 0 + + .stabs "attr36:G335=@$ !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + + .export primary + .data + .align 4 +primary: + .long 42 + + .stabs "attr37:G337=@% !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + + .stabs "const69:c=e1,69", 0x80,0,0, 0 + + .stabs "const70:c=e190=bs2;0;16;,70", 0x80,0,0, 0 + + .stabs "attr38:G338=@& !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + + .stabs "bad_neg0type:t201=s8field0:1,0,32;field2:-534,32,64;field3:-1,96,32;;", 0x80,0,0, 0 + + .stabs "bad_neg0:G201", 0x20,0,0, 0 + + .export bad_neg0 + .data + .align 4 +bad_neg0: + .long 42 + .long 43, 44, 45 + + .stabs "attr39:G339=@' !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr41:G341=@) !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr42:G342=@* !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr43:G343=@+ !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr44:G344=@, !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr46:G346=@. !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr47:G347=@/ !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr58:G358=@: !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + + .stabs "attr59:G359=@;@ !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + + .stabs "attr60:G360=@< !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr61:G361=@= !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr62:G362=@> !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr63:G363=@? !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr64:G364=@@ !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr65:G365=@A !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr66:G366=@B !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr67:G367=@C !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr68:G368=@D !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr72:G372=@H !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr73:G373=@I !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr74:G374=@J !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr75:G375=@K !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr76:G376=@L !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr77:G377=@M !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr78:G378=@N !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr79:G379=@O !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr80:G380=@P !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr81:G381=@Q !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr82:G382=@R !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr83:G383=@S !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr84:G384=@T !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr85:G385=@U !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr86:G386=@V !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr87:G387=@W !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr88:G388=@X !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr89:G389=@Y !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr90:G390=@Z !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr91:G391=@[ !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + + .stabs "attr93:G393=@] !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + + + .export _common0 + .data + .align 4 +_common0: + .long 42 + .long 24 + .long 22 + .export common0 + .data + .align 4 +common0: + .long 42 + .long 24 + .long 22 + .stabs "common0",0xe2,0,0,0 + .stabs "common0var0:S1", 0x20,0,0, 0 + .stabs "common0var1:S1", 0x20,0,0, 4 + .stabs "common0var2:S1", 0x20,0,0, 8 + .stabs "common0",0xe4,0,0,0 + + .stabs "attr94:G394=@^ !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr95:G395=@_ !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr100:G400=@d !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr101:G401=@e !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr102:G402=@f !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr103:G403=@g !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr106:G406=@j !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr107:G407=@k !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr108:G408=@l !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr109:G409=@m !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr110:G410=@n !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr111:G411=@o !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr112:G412=@p !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr113:G413=@q !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr114:G414=@r !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr115:G415=@s !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr116:G416=@t !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr117:G417=@u !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr118:G418=@v !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr119:G419=@w !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr120:G420=@x !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr121:G421=@y !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr122:G422=@z !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr123:G423=@{ !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr124:G424=@| !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr125:G425=@} !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + .stabs "attr126:G426=@~ !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 + + .export attr32 + .data + .align 4 +attr32: + .long 42 + .export attr33 + .data + .align 4 +attr33: + .long 42 + .export attr35 + .data + .align 4 +attr35: + .long 42 + .export attr36 + .data + .align 4 +attr36: + .long 42 + .export attr37 + .data + .align 4 +attr37: + .long 42 + .export attr38 + .data + .align 4 +attr38: + .long 42 + .export attr39 + .data + .align 4 +attr39: + .long 42 + .export attr41 + .data + .align 4 +attr41: + .long 42 + .export attr42 + .data + .align 4 +attr42: + .long 42 + .export attr43 + .data + .align 4 +attr43: + .long 42 + .export attr44 + .data + .align 4 +attr44: + .long 42 + .export attr46 + .data + .align 4 +attr46: + .long 42 + .export attr47 + .data + .align 4 +attr47: + .long 42 + .export attr58 + .data + .align 4 +attr58: + .long 42 + .export attr59 + .data + .align 4 +attr59: + .long 42 + .export attr60 + .data + .align 4 +attr60: + .long 42 + .export attr61 + .data + .align 4 +attr61: + .long 42 + .export attr62 + .data + .align 4 +attr62: + .long 42 + .export attr63 + .data + .align 4 +attr63: + .long 42 + .export attr64 + .data + .align 4 +attr64: + .long 42 + .export attr65 + .data + .align 4 +attr65: + .long 42 + .export attr70 + .data + .align 4 +attr70: + .long 42 + .export attr71 + .data + .align 4 +attr71: + .long 42 + .export attr72 + .data + .align 4 +attr72: + .long 42 + .export attr73 + .data + .align 4 +attr73: + .long 42 + .export attr74 + .data + .align 4 +attr74: + .long 42 + .export attr75 + .data + .align 4 +attr75: + .long 42 + .export attr76 + .data + .align 4 +attr76: + .long 42 + .export attr77 + .data + .align 4 +attr77: + .long 42 + .export attr78 + .data + .align 4 +attr78: + .long 42 + .export attr79 + .data + .align 4 +attr79: + .long 42 + .export attr80 + .data + .align 4 +attr80: + .long 42 + .export attr81 + .data + .align 4 +attr81: + .long 42 + .export attr82 + .data + .align 4 +attr82: + .long 42 + .export attr83 + .data + .align 4 +attr83: + .long 42 + .export attr84 + .data + .align 4 +attr84: + .long 42 + + .stabs "float72type:t202=R87;9;", 0x80,0,0, 0 + + .stabs "int256var:G203=bu32;0;256;", 0x20,0,0, 0 + .export int256var + .data + .align 4 +int256var: + .long 42 + .long 0x2b, 0x2c, 0x2d, 0x2d, 0x2c, 0x2b, 0x2a + + + .stabs "consth:c=e1,4294967296", 0x80,0,0, 0 + + .stabs "consth2:c=e1,-734723985732642758928475678987234563284937456", 0x80,0,0, 0 + + .stabs "bad_neg0const:c=S201,128,128,11222211343434345656565677888877", 0x80,0,0, 0 + + .stabs "bad_type0:t(-3,7)", 0x80,0,0, 0 + .stabs "bad_type1:t(42,6)", 0x80,0,0, 0 + + .stabs "array_index0:t205=r1;0;5;", 0x80,0,0, 0 + .stabs "array0:G206=a205;1", 0x20,0,0, 0 + .export array0 + .data + .align 4 +array0: + .long 42 + .long 43, 44, 45, 46, 47 + + .stabs "array_index1:t207=", 0x80,0,0, 0 + .stabs "array1:G208=aeai1_red:0,ai1_green:1,ai1_blue:2,;;1", 0x20,0,0, 0 + .export array1 + .data + .align 4 +array1: + .long 42 + .long 43, 44 + + .stabs "inttype_one:t209=1", 0x80,0,0, 0 + .stabs "inttype_two:t210=1", 0x80,0,0, 0 + .stabs "one_var:G209", 0x20,0,0, 0 + .export one_var + .data + .align 4 +one_var: + .long 42 + .stabs "two_var:G210", 0x20,0,0, 0 + .export two_var + .data + .align 4 +two_var: + .long 42 + + .stabs "intp:t211=*1", 0x80,0,0, 0 + .stabs "pointer_to_int_var:G212=*1", 0x80,0,0, 0 + .stabs "intp_var:G211", 0x20,0,0, 0 + .export intp_var + .data + .align 4 +intp_var: + .long 42 + + .stabs "unrecog_const:c=xjksdflskd33,4;473;", 0x80,0,0, 0 + + .export attr85 + .data + .align 4 +attr85: + .long 42 + .export attr86 + .data + .align 4 +attr86: + .long 42 + .export attr87 + .data + .align 4 +attr87: + .long 42 + .export attr88 + .data + .align 4 +attr88: + .long 42 + .export attr89 + .data + .align 4 +attr89: + .long 42 + .export attr90 + .data + .align 4 +attr90: + .long 42 + .export attr91 + .data + .align 4 +attr91: + .long 42 + .export attr92 + .data + .align 4 +attr92: + .long 42 + .export attr93 + .data + .align 4 +attr93: + .long 42 + .export attr94 + .data + .align 4 +attr94: + .long 42 + .export attr95 + .data + .align 4 +attr95: + .long 42 + .export attr96 + .data + .align 4 +attr96: + .long 42 + .export attr97 + .data + .align 4 +attr97: + .long 42 + .export attr98 + .data + .align 4 +attr98: + .long 42 + .export attr99 + .data + .align 4 +attr99: + .long 42 + .export attr100 + .data + .align 4 +attr100: + .long 42 + .export attr101 + .data + .align 4 +attr101: + .long 42 + .export attr102 + .data + .align 4 +attr102: + .long 42 + .export attr103 + .data + .align 4 +attr103: + .long 42 + .export attr104 + .data + .align 4 +attr104: + .long 42 + .export attr105 + .data + .align 4 +attr105: + .long 42 + .export attr106 + .data + .align 4 +attr106: + .long 42 + .export attr107 + .data + .align 4 +attr107: + .long 42 + .export attr108 + .data + .align 4 +attr108: + .long 42 + .export attr109 + .data + .align 4 +attr109: + .long 42 + .export attr110 + .data + .align 4 +attr110: + .long 42 + .export attr111 + .data + .align 4 +attr111: + .long 42 + .export attr112 + .data + .align 4 +attr112: + .long 42 + .export attr113 + .data + .align 4 +attr113: + .long 42 + .export attr114 + .data + .align 4 +attr114: + .long 42 + .export attr115 + .data + .align 4 +attr115: + .long 42 + .export attr116 + .data + .align 4 +attr116: + .long 42 + .export attr117 + .data + .align 4 +attr117: + .long 42 + .export attr118 + .data + .align 4 +attr118: + .long 42 + .export attr119 + .data + .align 4 +attr119: + .long 42 + .export attr120 + .data + .align 4 +attr120: + .long 42 + .export attr121 + .data + .align 4 +attr121: + .long 42 + .export attr125 + .data + .align 4 +attr125: + .long 42 + .export attr126 + .data + .align 4 +attr126: + .long 42 + + .stabs "var1:G301=@s32;1",0x20,0,0, 0 + .export var1 + .data + .align 4 +var1: + .long 42 + .stabs "var2:G302=@p42;1",0x20,0,0, 0 + .export var2 + .data + .align 4 +var2: + .long 42 + .stabs "var3:G303=@P;1",0x20,0,0, 0 + .export var3 + .data + .align 4 +var3: + .long 42 + + + + + + + + + + + + + .stabs "v_comb:G448=s24!2,020,445=s12!1,120,444=s4x:1,0,32;;;$vb444:446=*444,0;a:/01,32,32;;;0264,447=s12!1,120,444;$vb444:446,0;b:/01,32,32;;;comb:/01,128,32;;", 0x20,0,0, 0 + + .export v_comb + .align 1 +v_comb: + .long v_comb_shared + .long 43 + .long v_comb_shared + .long 44 + .long 45 +v_comb_shared: + .long 42 + + .stabs "sym92:\\ !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "type92:t92=\\ !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",0x80,0,0,0 + .stabs "attr92:G392=@\\ !#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;1",0x20,0,0, 0 diff --git a/gas/testsuite/gas/hppa/parse/align1.s b/gas/testsuite/gas/hppa/parse/align1.s new file mode 100755 index 0000000..df81e96 --- /dev/null +++ b/gas/testsuite/gas/hppa/parse/align1.s @@ -0,0 +1,41 @@ + .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 1 + .align 8 + nop +; "8" assumed if no alignment given. + .align + nop + .align 4096 + nop + + + .SPACE $PRIVATE$ + .SUBSPA $BSS$ + + .ALIGN 8 +$L00BSS: +home_buff: + .BLOCK 1024 + .ALIGN 8 +current_buff: + .BLOCK 1024 + .ALIGN 4 +lock_file: + .BLOCK 4 + .ALIGN 8 +L332.name: + .BLOCK 30 + .ALIGN 4 +L352.last_case_wa: + .BLOCK 4 + + diff --git a/gas/testsuite/gas/hppa/parse/align2.s b/gas/testsuite/gas/hppa/parse/align2.s new file mode 100755 index 0000000..af734c8 --- /dev/null +++ b/gas/testsuite/gas/hppa/parse/align2.s @@ -0,0 +1,15 @@ + .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 3 + + + + diff --git a/gas/testsuite/gas/hppa/parse/appbug.s b/gas/testsuite/gas/hppa/parse/appbug.s new file mode 100644 index 0000000..7a37f9e --- /dev/null +++ b/gas/testsuite/gas/hppa/parse/appbug.s @@ -0,0 +1 @@ +# 1 "crt0.s" diff --git a/gas/testsuite/gas/hppa/parse/badfmpyadd.s b/gas/testsuite/gas/hppa/parse/badfmpyadd.s new file mode 100644 index 0000000..8880144 --- /dev/null +++ b/gas/testsuite/gas/hppa/parse/badfmpyadd.s @@ -0,0 +1,33 @@ + .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 + .IMPORT $global$,DATA + .IMPORT $$dyncall,MILLICODE +; gcc_compiled.: + .SPACE $TEXT$ + .SUBSPA $CODE$ + + .align 4 + .EXPORT foobar,ENTRY,PRIV_LEV=3,ARGW0=FR,ARGW1=FU,ARGW2=FR,ARGW3=FU,RTNVAL=FR +foobar + .PROC + .CALLINFO FRAME=0,NO_CALLS + .ENTRY + ldo -64(%r30),%r20 + addil LR'x-$global$,%r27 + fldds 8(0,%r20),%fr4 + fldds 0(0,%r20),%fr22 + ldo RR'x-$global$(%r1),%r19 + fmpysub,sgl %fr5L,%fr7L,%fr5L,%fr22L,%fr4L + bv 0(%r2) + fstds %fr5,0(0,%r19) + .EXIT + .PROCEND + .SPACE $PRIVATE$ + .SUBSPA $BSS$ + +x .comm 8 +y .comm 8 diff --git a/gas/testsuite/gas/hppa/parse/block1.s b/gas/testsuite/gas/hppa/parse/block1.s new file mode 100755 index 0000000..317699f --- /dev/null +++ b/gas/testsuite/gas/hppa/parse/block1.s @@ -0,0 +1,18 @@ + .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 $DATA$ + +foo: + .block +bar: + .block 0x7fffffff +com: + + + diff --git a/gas/testsuite/gas/hppa/parse/block2.s b/gas/testsuite/gas/hppa/parse/block2.s new file mode 100755 index 0000000..1a3b5f1 --- /dev/null +++ b/gas/testsuite/gas/hppa/parse/block2.s @@ -0,0 +1,15 @@ + .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 $DATA$ + +foo: + .block -1 + + + diff --git a/gas/testsuite/gas/hppa/parse/calldatabug.s b/gas/testsuite/gas/hppa/parse/calldatabug.s new file mode 100755 index 0000000..8cc6ff5 --- /dev/null +++ b/gas/testsuite/gas/hppa/parse/calldatabug.s @@ -0,0 +1,189 @@ + .SPACE $PRIVATE$ + .SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=31 + .SPACE $TEXT$ + .SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=44 + .SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY + .IMPORT $global$,DATA + .IMPORT $$dyncall,MILLICODE +; gcc_compiled.: + .IMPORT printf,CODE + .SPACE $TEXT$ + .SUBSPA $CODE$ + + .align 4 +LC$0000: + .STRING "%d %lf %d\x0a\x00" + .align 4 + .EXPORT error__3AAAiidi + .EXPORT error__3AAAiidi,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=FR,ARGW4=FU,RTNVAL=GR +error__3AAAiidi: + .PROC + .CALLINFO FRAME=128,CALLS,SAVE_RP + .ENTRY + stw 2,-20(0,30) + copy 4,1 + copy 30,4 + stwm 1,128(0,30) + stw 9,8(0,4) + stw 8,12(0,4) + stw 7,16(0,4) + stw 6,20(0,4) + stw 5,24(0,4) + copy %r26,%r5 + ldo -8(0),%r6 + ldo -32(%r4),%r19 + add %r19,%r6,%r7 + stw %r25,0(0,%r7) + ldo -12(0),%r8 + ldo -32(%r4),%r19 + add %r19,%r8,%r9 + stw %r24,0(0,%r9) + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldo -24(0),%r20 + ldo -32(%r4),%r21 + add %r21,%r20,%r20 + ldo -28(0),%r21 + ldo -32(%r4),%r22 + add %r22,%r21,%r21 + ldw 0(0,%r21),%r22 + stw %r22,-52(0,%r30) + ldil L'LC$0000,%r26 + ldo R'LC$0000(%r26),%r26 + ldw 0(0,%r19),%r25 + fldds 0(0,%r20),%fr7 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=FR,ARGW3=FU + bl printf,2 + nop + bl,n L$0002,0 + bl,n L$0001,0 +L$0002: +L$0001: + ldw 8(0,4),9 + ldw 12(0,4),8 + ldw 16(0,4),7 + ldw 20(0,4),6 + ldw 24(0,4),5 + ldo 8(4),30 + ldw -28(0,30),2 + bv 0(2) + ldwm -8(30),4 + .EXIT + .PROCEND + .align 4 + .EXPORT ok__3AAAidi + .EXPORT ok__3AAAidi,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,ARGW2=FR,ARGW3=FU,RTNVAL=GR +ok__3AAAidi: + .PROC + .CALLINFO FRAME=128,CALLS,SAVE_RP + .ENTRY + stw 2,-20(0,30) + copy 4,1 + copy 30,4 + stwm 1,128(0,30) + stw 9,8(0,4) + stw 8,12(0,4) + stw 7,16(0,4) + stw 6,20(0,4) + stw 5,24(0,4) + copy %r26,%r5 + ldo -8(0),%r6 + ldo -32(%r4),%r19 + add %r19,%r6,%r7 + stw %r25,0(0,%r7) + ldo -16(0),%r8 + ldo -32(%r4),%r19 + add %r19,%r8,%r9 + fstds %fr7,0(0,%r9) + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldo -16(0),%r20 + ldo -32(%r4),%r21 + add %r21,%r20,%r20 + ldo -20(0),%r21 + ldo -32(%r4),%r22 + add %r22,%r21,%r21 + ldw 0(0,%r21),%r22 + stw %r22,-52(0,%r30) + ldil L'LC$0000,%r26 + ldo R'LC$0000(%r26),%r26 + ldw 0(0,%r19),%r25 + fldds 0(0,%r20),%fr7 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=FR,ARGW3=FU + bl printf,2 + nop + bl,n L$0004,0 + bl,n L$0003,0 +L$0004: +L$0003: + ldw 8(0,4),9 + ldw 12(0,4),8 + ldw 16(0,4),7 + ldw 20(0,4),6 + ldw 24(0,4),5 + ldo 8(4),30 + ldw -28(0,30),2 + bv 0(2) + ldwm -8(30),4 + .EXIT + .PROCEND + .IMPORT __main,CODE + .align 8 +LC$0001: + ; .double 5.50000000000000000000e+00 + .word 1075183616 ; = 0x40160000 + .word 0 ; = 0x0 + .align 4 + .EXPORT main + .EXPORT main,PRIV_LEV=3,RTNVAL=GR +main: + .PROC + .CALLINFO FRAME=128,CALLS,SAVE_RP + .ENTRY + stw 2,-20(0,30) + copy 4,1 + copy 30,4 + stwm 1,128(0,30) + .CALL + bl __main,2 + nop + ldo -24(0),%r19 + ldo -32(%r30),%r20 + add %r20,%r19,%r19 + ldil L'LC$0001,%r20 + ldo R'LC$0001(%r20),%r21 + ldw 0(0,%r21),%r22 + ldw 4(0,%r21),%r23 + stw %r22,0(0,%r19) + stw %r23,4(0,%r19) + ldo 3(0),%r19 + stw %r19,-60(0,%r30) + ldo 8(%r4),%r26 + ldo 1(0),%r25 + ldo 4(0),%r24 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl error__3AAAiidi,2 + nop + ldo 3(0),%r19 + stw %r19,-52(0,%r30) + ldo 8(%r4),%r26 + ldo 1(0),%r25 + ldil L'LC$0001,%r19 + ldo R'LC$0001(%r19),%r20 + fldds 0(0,%r20),%fr7 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=FR,ARGW3=FU + bl ok__3AAAidi,2 + nop + copy 0,%r28 + bl,n L$0005,0 + bl,n L$0005,0 +L$0005: + ldo 8(4),30 + ldw -28(0,30),2 + bv 0(2) + ldwm -8(30),4 + .EXIT + .PROCEND + diff --git a/gas/testsuite/gas/hppa/parse/callinfobug.s b/gas/testsuite/gas/hppa/parse/callinfobug.s new file mode 100644 index 0000000..c08c773 --- /dev/null +++ b/gas/testsuite/gas/hppa/parse/callinfobug.s @@ -0,0 +1,8 @@ + .space $TEXT$ + .subspa $CODE$ + .align 4 + .export divu,millicode + .proc + .callinfo millicode +divu + .procend diff --git a/gas/testsuite/gas/hppa/parse/defbug.s b/gas/testsuite/gas/hppa/parse/defbug.s new file mode 100644 index 0000000..064caf4 --- /dev/null +++ b/gas/testsuite/gas/hppa/parse/defbug.s @@ -0,0 +1,18 @@ + .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 + .import _seterrno + .export vfork ! .label vfork ! .proc! .callinfo no_calls! .entry ! .label __vfork ! mtsp %r0,%sr0! ldil L%0xc0000004,%r1! ble R%0xc0000004(%sr0,%r1)! ldi 66 ,%r22 ! b,n yyy! b,n __vfork ! b _seterrno! copy %r28,%r26! .label yyy + add,= %r0,%r29,%r0 + copy %r0,%r28 + bv,n (%r2) + .exit + .procend diff --git a/gas/testsuite/gas/hppa/parse/entrybug.s b/gas/testsuite/gas/hppa/parse/entrybug.s new file mode 100755 index 0000000..3d862ff --- /dev/null +++ b/gas/testsuite/gas/hppa/parse/entrybug.s @@ -0,0 +1,24 @@ + .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 + .IMPORT $global$,DATA + .IMPORT $$dyncall,MILLICODE +; gcc_compiled.: + .SPACE $TEXT$ + .SUBSPA $CODE$ + + .align 4 + .PARAM foo,RTNVAL=GR +foo: + .PROC + .CALLINFO FRAME=128,NO_CALLS,ENTRY_GR=1,ENTRY_FR=11 + .ENTRY + bv,n 0(%r2) + .EXIT + .PROCEND + .SPACE $TEXT$ + .SUBSPA $LIT$ + diff --git a/gas/testsuite/gas/hppa/parse/exportbug.s b/gas/testsuite/gas/hppa/parse/exportbug.s new file mode 100755 index 0000000..4966415 --- /dev/null +++ b/gas/testsuite/gas/hppa/parse/exportbug.s @@ -0,0 +1,14 @@ + .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 + .EXPORT main,ENTRY,PRIV_LEV=3,RTNVAL=GR + + diff --git a/gas/testsuite/gas/hppa/parse/exprbug.s b/gas/testsuite/gas/hppa/parse/exprbug.s new file mode 100644 index 0000000..8809a9a --- /dev/null +++ b/gas/testsuite/gas/hppa/parse/exprbug.s @@ -0,0 +1,39 @@ + .space $TEXT$ + .subspa $CODE$ + + .align 8 + .export icode,data +icode: + .proc + .callinfo frame=0,no_calls + .entry + bv,n 0(2) + .exit + nop + .procend + + ; + ; FIRST, argv array of pointers to args, 1st is same as path. + ; + .align 8 +ic_argv: + .word ic_argv1-icode ; second, pointer to 1st argument + .word ic_path-icode ; first, pointer to init path + .word 0 ; fourth, NULL argv terminator (pad) + .word 0 ; third, NULL argv terminator + +ic_path: + .blockz 4096 ; must be multiple of 4 bytes + .word 0 ; in case full string is used + .word 0 ; this will be the string terminator + +ic_argv1: + .blockz 4096 ; must be multiple of 4 bytes + .word 0 ; in case full string is used + .word 0 ; this will be the string terminator + + .export szicode,data +szicode: + .word szicode-icode + .word 0 ; must have at least one filler at end + diff --git a/gas/testsuite/gas/hppa/parse/fixup7bug.s b/gas/testsuite/gas/hppa/parse/fixup7bug.s new file mode 100755 index 0000000..7fc780f --- /dev/null +++ b/gas/testsuite/gas/hppa/parse/fixup7bug.s @@ -0,0 +1,6192 @@ + .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 + .IMPORT $global$,DATA + .IMPORT $$dyncall,MILLICODE +; gcc_compiled.: + .IMPORT xmalloc,CODE + .IMPORT _obstack_newchunk,CODE + .IMPORT memset,CODE + .SPACE $TEXT$ + .SUBSPA $CODE$ + + .align 4 + .EXPORT alloc_type,CODE + .EXPORT alloc_type,ENTRY,PRIV_LEV=3,ARGW0=GR,RTNVAL=GR +alloc_type: + .PROC + .CALLINFO FRAME=192,CALLS,SAVE_RP + .ENTRY + stw 2,-20(0,30) + copy 4,1 + copy 30,4 + stwm 1,192(0,30) + stw 7,32(0,4) + stw 6,36(0,4) + stw 5,40(0,4) + ldo -4(0),%r5 + ldo -32(%r4),%r19 + add %r19,%r5,%r6 + stw %r26,0(0,%r6) + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + comiclr,= 0,%r20,0 + bl L$0002,0 + nop + ldo 52(0),%r26 + .CALL ARGW0=GR + bl xmalloc,2 + nop + copy %r28,%r7 + bl,n L$0003,0 +L$0002: + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldo 120(%r19),%r20 + stw %r20,8(0,%r4) + ldw 8(0,%r4),%r19 + stw %r19,12(0,%r4) + ldo 52(0),%r19 + stw %r19,16(0,%r4) + ldw 12(0,%r4),%r19 + ldw 12(0,%r4),%r20 + ldw 16(0,%r19),%r19 + ldw 12(0,%r20),%r20 + sub %r19,%r20,%r19 + ldw 16(0,%r4),%r20 + comclr,< %r19,%r20,0 + bl L$0004,0 + nop + ldw 12(0,%r4),%r26 + ldw 16(0,%r4),%r25 + .CALL ARGW0=GR,ARGW1=GR + bl _obstack_newchunk,2 + nop + copy 0,%r19 + bl,n L$0005,0 +L$0004: + copy 0,%r19 +L$0005: + ldw 12(0,%r4),%r19 + ldw 12(0,%r4),%r20 + ldw 12(0,%r20),%r21 + ldw 16(0,%r4),%r22 + add %r21,%r22,%r20 + copy %r20,%r21 + stw %r21,12(0,%r19) + ldw 8(0,%r4),%r19 + stw %r19,20(0,%r4) + ldw 20(0,%r4),%r19 + ldw 8(0,%r19),%r20 + stw %r20,24(0,%r4) + ldw 20(0,%r4),%r19 + ldw 12(0,%r19),%r20 + ldw 24(0,%r4),%r19 + comclr,= %r20,%r19,0 + bl L$0006,0 + nop + ldw 20(0,%r4),%r19 + ldw 40(0,%r19),%r20 + copy %r20,%r21 + depi -1,1,1,%r21 + stw %r21,40(0,%r19) +L$0006: + ldw 20(0,%r4),%r19 + ldw 20(0,%r4),%r20 + ldw 20(0,%r4),%r21 + ldw 12(0,%r20),%r20 + ldw 24(0,%r21),%r21 + add %r20,%r21,%r20 + ldw 20(0,%r4),%r21 + ldw 24(0,%r21),%r22 + uaddcm 0,%r22,%r21 + and %r20,%r21,%r20 + copy %r20,%r21 + stw %r21,12(0,%r19) + ldw 20(0,%r4),%r19 + ldw 20(0,%r4),%r20 + ldw 12(0,%r19),%r19 + ldw 4(0,%r20),%r20 + sub %r19,%r20,%r19 + ldw 20(0,%r4),%r20 + ldw 20(0,%r4),%r21 + ldw 16(0,%r20),%r20 + ldw 4(0,%r21),%r21 + sub %r20,%r21,%r20 + comclr,> %r19,%r20,0 + bl L$0007,0 + nop + ldw 20(0,%r4),%r19 + ldw 20(0,%r4),%r20 + ldw 16(0,%r20),%r21 + stw %r21,12(0,%r19) + copy %r21,%r19 + bl,n L$0008,0 +L$0007: + copy 0,%r19 +L$0008: + ldw 20(0,%r4),%r19 + ldw 20(0,%r4),%r20 + ldw 12(0,%r20),%r21 + stw %r21,8(0,%r19) + ldw 24(0,%r4),%r7 +L$0003: + copy %r7,%r26 + copy 0,%r25 + ldo 52(0),%r24 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl memset,2 + nop + stw 0,0(0,%r7) + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + stw %r20,12(0,%r7) + ldo -1(0),%r19 + stw %r19,44(0,%r7) + copy %r7,%r28 + bl,n L$0001,0 +L$0001: + ldw 32(0,4),7 + ldw 36(0,4),6 + ldw 40(0,4),5 + ldo 8(4),30 + ldw -28(0,30),2 + bv 0(2) + ldwm -8(30),4 + .EXIT + .PROCEND + .align 4 + .EXPORT make_pointer_type,CODE + .EXPORT make_pointer_type,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,RTNVAL=GR +make_pointer_type: + .PROC + .CALLINFO FRAME=192,CALLS,SAVE_RP + .ENTRY + stw 2,-20(0,30) + copy 4,1 + copy 30,4 + stwm 1,192(0,30) + stw 9,16(0,4) + stw 8,20(0,4) + stw 7,24(0,4) + stw 6,28(0,4) + stw 5,32(0,4) + ldo -4(0),%r5 + ldo -32(%r4),%r19 + add %r19,%r5,%r6 + stw %r26,0(0,%r6) + ldo -8(0),%r7 + ldo -32(%r4),%r19 + add %r19,%r7,%r8 + stw %r25,0(0,%r8) + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 20(0,%r19),%r9 + comiclr,<> 0,%r9,0 + bl L$0010,0 + nop + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + comiclr,= 0,%r20,0 + bl L$0011,0 + nop + copy %r9,%r28 + bl,n L$0009,0 + bl,n L$0012,0 +L$0011: + ldo -8(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 0(0,%r19),%r20 + comiclr,= 0,%r20,0 + bl L$0013,0 + nop + ldo -8(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + stw %r9,0(0,%r19) + copy %r9,%r28 + bl,n L$0009,0 +L$0013: +L$0012: +L$0010: + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + comiclr,<> 0,%r20,0 + bl L$0015,0 + nop + ldo -8(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 0(0,%r19),%r20 + comiclr,= 0,%r20,0 + bl L$0014,0 + nop + bl,n L$0015,0 +L$0015: + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 12(0,%r19),%r26 + .CALL ARGW0=GR + bl alloc_type,2 + nop + copy %r28,%r9 + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + comiclr,<> 0,%r20,0 + bl L$0016,0 + nop + ldo -8(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + stw %r9,0(0,%r19) +L$0016: + bl,n L$0017,0 +L$0014: + ldo -8(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 0(0,%r19),%r9 + ldw 12(0,%r9),%r19 + stw %r19,8(0,%r4) + copy %r9,%r26 + copy 0,%r25 + ldo 52(0),%r24 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl memset,2 + nop + ldw 8(0,%r4),%r19 + stw %r19,12(0,%r9) +L$0017: + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + stw %r20,16(0,%r9) + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + stw %r9,20(0,%r19) + ldo 4(0),%r19 + stw %r19,8(0,%r9) + ldo 1(0),%r19 + stw %r19,0(0,%r9) + ldh 32(0,%r9),%r19 + copy %r19,%r20 + depi -1,31,1,%r20 + sth %r20,32(0,%r9) + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 20(0,%r19),%r20 + comiclr,= 0,%r20,0 + bl L$0018,0 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + stw %r9,20(0,%r19) +L$0018: + copy %r9,%r28 + bl,n L$0009,0 +L$0009: + ldw 16(0,4),9 + ldw 20(0,4),8 + ldw 24(0,4),7 + ldw 28(0,4),6 + ldw 32(0,4),5 + ldo 8(4),30 + ldw -28(0,30),2 + bv 0(2) + ldwm -8(30),4 + .EXIT + .PROCEND + .align 4 + .EXPORT lookup_pointer_type,CODE + .EXPORT lookup_pointer_type,ENTRY,PRIV_LEV=3,ARGW0=GR,RTNVAL=GR +lookup_pointer_type: + .PROC + .CALLINFO FRAME=128,CALLS,SAVE_RP + .ENTRY + stw 2,-20(0,30) + copy 4,1 + copy 30,4 + stwm 1,128(0,30) + stw 6,8(0,4) + stw 5,12(0,4) + ldo -4(0),%r5 + ldo -32(%r4),%r19 + add %r19,%r5,%r6 + stw %r26,0(0,%r6) + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r26 + copy 0,%r25 + .CALL ARGW0=GR,ARGW1=GR + bl make_pointer_type,2 + nop + bl,n L$0019,0 +L$0019: + ldw 8(0,4),6 + ldw 12(0,4),5 + ldo 8(4),30 + ldw -28(0,30),2 + bv 0(2) + ldwm -8(30),4 + .EXIT + .PROCEND + .align 4 + .EXPORT make_reference_type,CODE + .EXPORT make_reference_type,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,RTNVAL=GR +make_reference_type: + .PROC + .CALLINFO FRAME=192,CALLS,SAVE_RP + .ENTRY + stw 2,-20(0,30) + copy 4,1 + copy 30,4 + stwm 1,192(0,30) + stw 9,16(0,4) + stw 8,20(0,4) + stw 7,24(0,4) + stw 6,28(0,4) + stw 5,32(0,4) + ldo -4(0),%r5 + ldo -32(%r4),%r19 + add %r19,%r5,%r6 + stw %r26,0(0,%r6) + ldo -8(0),%r7 + ldo -32(%r4),%r19 + add %r19,%r7,%r8 + stw %r25,0(0,%r8) + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 24(0,%r19),%r9 + comiclr,<> 0,%r9,0 + bl L$0021,0 + nop + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + comiclr,= 0,%r20,0 + bl L$0022,0 + nop + copy %r9,%r28 + bl,n L$0020,0 + bl,n L$0023,0 +L$0022: + ldo -8(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 0(0,%r19),%r20 + comiclr,= 0,%r20,0 + bl L$0024,0 + nop + ldo -8(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + stw %r9,0(0,%r19) + copy %r9,%r28 + bl,n L$0020,0 +L$0024: +L$0023: +L$0021: + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + comiclr,<> 0,%r20,0 + bl L$0026,0 + nop + ldo -8(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 0(0,%r19),%r20 + comiclr,= 0,%r20,0 + bl L$0025,0 + nop + bl,n L$0026,0 +L$0026: + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 12(0,%r19),%r26 + .CALL ARGW0=GR + bl alloc_type,2 + nop + copy %r28,%r9 + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + comiclr,<> 0,%r20,0 + bl L$0027,0 + nop + ldo -8(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + stw %r9,0(0,%r19) +L$0027: + bl,n L$0028,0 +L$0025: + ldo -8(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 0(0,%r19),%r9 + ldw 12(0,%r9),%r19 + stw %r19,8(0,%r4) + copy %r9,%r26 + copy 0,%r25 + ldo 52(0),%r24 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl memset,2 + nop + ldw 8(0,%r4),%r19 + stw %r19,12(0,%r9) +L$0028: + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + stw %r20,16(0,%r9) + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + stw %r9,24(0,%r19) + ldo 4(0),%r19 + stw %r19,8(0,%r9) + ldo 16(0),%r19 + stw %r19,0(0,%r9) + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 24(0,%r19),%r20 + comiclr,= 0,%r20,0 + bl L$0029,0 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + stw %r9,24(0,%r19) +L$0029: + copy %r9,%r28 + bl,n L$0020,0 +L$0020: + ldw 16(0,4),9 + ldw 20(0,4),8 + ldw 24(0,4),7 + ldw 28(0,4),6 + ldw 32(0,4),5 + ldo 8(4),30 + ldw -28(0,30),2 + bv 0(2) + ldwm -8(30),4 + .EXIT + .PROCEND + .align 4 + .EXPORT lookup_reference_type,CODE + .EXPORT lookup_reference_type,ENTRY,PRIV_LEV=3,ARGW0=GR,RTNVAL=GR +lookup_reference_type: + .PROC + .CALLINFO FRAME=128,CALLS,SAVE_RP + .ENTRY + stw 2,-20(0,30) + copy 4,1 + copy 30,4 + stwm 1,128(0,30) + stw 6,8(0,4) + stw 5,12(0,4) + ldo -4(0),%r5 + ldo -32(%r4),%r19 + add %r19,%r5,%r6 + stw %r26,0(0,%r6) + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r26 + copy 0,%r25 + .CALL ARGW0=GR,ARGW1=GR + bl make_reference_type,2 + nop + bl,n L$0030,0 +L$0030: + ldw 8(0,4),6 + ldw 12(0,4),5 + ldo 8(4),30 + ldw -28(0,30),2 + bv 0(2) + ldwm -8(30),4 + .EXIT + .PROCEND + .align 4 + .EXPORT make_function_type,CODE + .EXPORT make_function_type,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,RTNVAL=GR +make_function_type: + .PROC + .CALLINFO FRAME=192,CALLS,SAVE_RP + .ENTRY + stw 2,-20(0,30) + copy 4,1 + copy 30,4 + stwm 1,192(0,30) + stw 9,16(0,4) + stw 8,20(0,4) + stw 7,24(0,4) + stw 6,28(0,4) + stw 5,32(0,4) + ldo -4(0),%r5 + ldo -32(%r4),%r19 + add %r19,%r5,%r6 + stw %r26,0(0,%r6) + ldo -8(0),%r7 + ldo -32(%r4),%r19 + add %r19,%r7,%r8 + stw %r25,0(0,%r8) + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 28(0,%r19),%r9 + comiclr,<> 0,%r9,0 + bl L$0032,0 + nop + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + comiclr,= 0,%r20,0 + bl L$0033,0 + nop + copy %r9,%r28 + bl,n L$0031,0 + bl,n L$0034,0 +L$0033: + ldo -8(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 0(0,%r19),%r20 + comiclr,= 0,%r20,0 + bl L$0035,0 + nop + ldo -8(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + stw %r9,0(0,%r19) + copy %r9,%r28 + bl,n L$0031,0 +L$0035: +L$0034: +L$0032: + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + comiclr,<> 0,%r20,0 + bl L$0037,0 + nop + ldo -8(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 0(0,%r19),%r20 + comiclr,= 0,%r20,0 + bl L$0036,0 + nop + bl,n L$0037,0 +L$0037: + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 12(0,%r19),%r26 + .CALL ARGW0=GR + bl alloc_type,2 + nop + copy %r28,%r9 + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + comiclr,<> 0,%r20,0 + bl L$0038,0 + nop + ldo -8(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + stw %r9,0(0,%r19) +L$0038: + bl,n L$0039,0 +L$0036: + ldo -8(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 0(0,%r19),%r9 + ldw 12(0,%r9),%r19 + stw %r19,8(0,%r4) + copy %r9,%r26 + copy 0,%r25 + ldo 52(0),%r24 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl memset,2 + nop + ldw 8(0,%r4),%r19 + stw %r19,12(0,%r9) +L$0039: + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + stw %r20,16(0,%r9) + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + stw %r9,28(0,%r19) + ldo 1(0),%r19 + stw %r19,8(0,%r9) + ldo 6(0),%r19 + stw %r19,0(0,%r9) + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 28(0,%r19),%r20 + comiclr,= 0,%r20,0 + bl L$0040,0 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + stw %r9,28(0,%r19) +L$0040: + copy %r9,%r28 + bl,n L$0031,0 +L$0031: + ldw 16(0,4),9 + ldw 20(0,4),8 + ldw 24(0,4),7 + ldw 28(0,4),6 + ldw 32(0,4),5 + ldo 8(4),30 + ldw -28(0,30),2 + bv 0(2) + ldwm -8(30),4 + .EXIT + .PROCEND + .align 4 + .EXPORT lookup_function_type,CODE + .EXPORT lookup_function_type,ENTRY,PRIV_LEV=3,ARGW0=GR,RTNVAL=GR +lookup_function_type: + .PROC + .CALLINFO FRAME=128,CALLS,SAVE_RP + .ENTRY + stw 2,-20(0,30) + copy 4,1 + copy 30,4 + stwm 1,128(0,30) + stw 6,8(0,4) + stw 5,12(0,4) + ldo -4(0),%r5 + ldo -32(%r4),%r19 + add %r19,%r5,%r6 + stw %r26,0(0,%r6) + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r26 + copy 0,%r25 + .CALL ARGW0=GR,ARGW1=GR + bl make_function_type,2 + nop + bl,n L$0041,0 +L$0041: + ldw 8(0,4),6 + ldw 12(0,4),5 + ldo 8(4),30 + ldw -28(0,30),2 + bv 0(2) + ldwm -8(30),4 + .EXIT + .PROCEND + .IMPORT smash_to_member_type,CODE + .align 4 + .EXPORT lookup_member_type,CODE + .EXPORT lookup_member_type,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,RTNVAL=GR +lookup_member_type: + .PROC + .CALLINFO FRAME=128,CALLS,SAVE_RP + .ENTRY + stw 2,-20(0,30) + copy 4,1 + copy 30,4 + stwm 1,128(0,30) + stw 8,8(0,4) + stw 7,12(0,4) + stw 6,16(0,4) + stw 5,20(0,4) + ldo 24(4),1 + fstds,ma %fr12,8(0,1) + ldo -4(0),%r5 + ldo -32(%r4),%r19 + add %r19,%r5,%r6 + stw %r26,0(0,%r6) + ldo -8(0),%r7 + ldo -32(%r4),%r19 + add %r19,%r7,%r8 + stw %r25,0(0,%r8) + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 12(0,%r19),%r26 + .CALL ARGW0=GR + bl alloc_type,2 + nop + stw %r28,-16(30) + fldws -16(30),%fr12 + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldo -4(0),%r20 + ldo -32(%r4),%r21 + add %r21,%r20,%r20 + fstws %fr12,-16(30) + ldw -16(30),%r26 + ldw 0(0,%r19),%r25 + ldw 0(0,%r20),%r24 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl smash_to_member_type,2 + nop + fstws %fr12,-16(30) + ldw -16(30),%r28 + bl,n L$0042,0 +L$0042: + ldw 8(0,4),8 + ldw 12(0,4),7 + ldw 16(0,4),6 + ldw 20(0,4),5 + ldo 24(4),1 + fldds,ma 8(0,1),%fr12 + ldo 8(4),30 + ldw -28(0,30),2 + bv 0(2) + ldwm -8(30),4 + .EXIT + .PROCEND + .align 4 + .EXPORT allocate_stub_method,CODE + .EXPORT allocate_stub_method,ENTRY,PRIV_LEV=3,ARGW0=GR,RTNVAL=GR +allocate_stub_method: + .PROC + .CALLINFO FRAME=128,CALLS,SAVE_RP + .ENTRY + stw 2,-20(0,30) + copy 4,1 + copy 30,4 + stwm 1,128(0,30) + stw 6,16(0,4) + stw 5,20(0,4) + ldo -4(0),%r5 + ldo -32(%r4),%r19 + add %r19,%r5,%r6 + stw %r26,0(0,%r6) + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 12(0,%r19),%r26 + .CALL ARGW0=GR + bl alloc_type,2 + nop + stw %r28,8(0,%r4) + ldw 8(0,%r4),%r19 + ldo -4(0),%r20 + ldo -32(%r4),%r21 + add %r21,%r20,%r20 + ldw 0(0,%r20),%r21 + stw %r21,16(0,%r19) + ldw 8(0,%r4),%r19 + ldo 4(0),%r20 + sth %r20,32(0,%r19) + ldw 8(0,%r4),%r19 + ldo 15(0),%r20 + stw %r20,0(0,%r19) + ldw 8(0,%r4),%r19 + ldo 1(0),%r20 + stw %r20,8(0,%r19) + ldw 8(0,%r4),%r28 + bl,n L$0043,0 +L$0043: + ldw 16(0,4),6 + ldw 20(0,4),5 + ldo 8(4),30 + ldw -28(0,30),2 + bv 0(2) + ldwm -8(30),4 + .EXIT + .PROCEND + .IMPORT builtin_type_int,DATA + .align 4 + .EXPORT create_array_type,CODE + .EXPORT create_array_type,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,RTNVAL=GR +create_array_type: + .PROC + .CALLINFO FRAME=192,CALLS,SAVE_RP + .ENTRY + stw 2,-20(0,30) + copy 4,1 + copy 30,4 + stwm 1,192(0,30) + stw 10,56(0,4) + stw 9,60(0,4) + stw 8,64(0,4) + stw 7,68(0,4) + stw 6,72(0,4) + stw 5,76(0,4) + ldo -4(0),%r5 + ldo -32(%r4),%r19 + add %r19,%r5,%r6 + stw %r26,0(0,%r6) + ldo -8(0),%r7 + ldo -32(%r4),%r19 + add %r19,%r7,%r8 + stw %r25,0(0,%r8) + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 12(0,%r19),%r26 + .CALL ARGW0=GR + bl alloc_type,2 + nop + stw %r28,8(0,%r4) + ldw 8(0,%r4),%r19 + ldo 2(0),%r20 + stw %r20,0(0,%r19) + ldw 8(0,%r4),%r19 + ldo -4(0),%r20 + ldo -32(%r4),%r21 + add %r21,%r20,%r20 + ldw 0(0,%r20),%r21 + stw %r21,16(0,%r19) + ldw 8(0,%r4),%r19 + ldo -8(0),%r20 + ldo -32(%r4),%r21 + add %r21,%r20,%r20 + ldo -4(0),%r21 + ldo -32(%r4),%r23 + add %r23,%r21,%r22 + ldw 0(0,%r22),%r21 + ldw 0(0,%r20),%r20 + ldw 8(0,%r21),%r21 + stw %r20,-16(30) + fldws -16(30),%fr5 + stw %r21,-16(30) + fldws -16(30),%fr5R + xmpyu %fr5,%fr5R,%fr4 + fstws %fr4R,-16(30) + ldw -16(30),%r24 + stw %r24,8(0,%r19) + ldw 8(0,%r4),%r19 + ldo 1(0),%r20 + sth %r20,34(0,%r19) + ldw 8(0,%r4),%r9 + ldw 8(0,%r4),%r19 + ldw 12(0,%r19),%r20 + comiclr,<> 0,%r20,0 + bl L$0050,0 + nop + ldw 8(0,%r4),%r19 + ldw 12(0,%r19),%r20 + ldo 120(%r20),%r19 + stw %r19,16(0,%r4) + ldw 16(0,%r4),%r19 + stw %r19,20(0,%r4) + ldo 16(0),%r19 + stw %r19,24(0,%r4) + ldw 20(0,%r4),%r19 + ldw 20(0,%r4),%r20 + ldw 16(0,%r19),%r19 + ldw 12(0,%r20),%r20 + sub %r19,%r20,%r19 + ldw 24(0,%r4),%r20 + comclr,< %r19,%r20,0 + bl L$0045,0 + nop + ldw 20(0,%r4),%r26 + ldw 24(0,%r4),%r25 + .CALL ARGW0=GR,ARGW1=GR + bl _obstack_newchunk,2 + nop + copy 0,%r19 + bl,n L$0046,0 +L$0045: + copy 0,%r19 +L$0046: + ldw 20(0,%r4),%r19 + ldw 20(0,%r4),%r20 + ldw 12(0,%r20),%r21 + ldw 24(0,%r4),%r22 + add %r21,%r22,%r20 + copy %r20,%r21 + stw %r21,12(0,%r19) + ldw 16(0,%r4),%r19 + stw %r19,28(0,%r4) + ldw 28(0,%r4),%r19 + ldw 8(0,%r19),%r20 + stw %r20,32(0,%r4) + ldw 28(0,%r4),%r19 + ldw 12(0,%r19),%r20 + ldw 32(0,%r4),%r19 + comclr,= %r20,%r19,0 + bl L$0047,0 + nop + ldw 28(0,%r4),%r19 + ldw 40(0,%r19),%r20 + copy %r20,%r21 + depi -1,1,1,%r21 + stw %r21,40(0,%r19) +L$0047: + ldw 28(0,%r4),%r19 + ldw 28(0,%r4),%r20 + ldw 28(0,%r4),%r21 + ldw 12(0,%r20),%r20 + ldw 24(0,%r21),%r21 + add %r20,%r21,%r20 + ldw 28(0,%r4),%r21 + ldw 24(0,%r21),%r22 + uaddcm 0,%r22,%r21 + and %r20,%r21,%r20 + copy %r20,%r21 + stw %r21,12(0,%r19) + ldw 28(0,%r4),%r19 + ldw 28(0,%r4),%r20 + ldw 12(0,%r19),%r19 + ldw 4(0,%r20),%r20 + sub %r19,%r20,%r19 + ldw 28(0,%r4),%r20 + ldw 28(0,%r4),%r21 + ldw 16(0,%r20),%r20 + ldw 4(0,%r21),%r21 + sub %r20,%r21,%r20 + comclr,> %r19,%r20,0 + bl L$0048,0 + nop + ldw 28(0,%r4),%r19 + ldw 28(0,%r4),%r20 + ldw 16(0,%r20),%r21 + stw %r21,12(0,%r19) + copy %r21,%r19 + bl,n L$0049,0 +L$0048: + copy 0,%r19 +L$0049: + ldw 28(0,%r4),%r19 + ldw 28(0,%r4),%r20 + ldw 12(0,%r20),%r21 + stw %r21,8(0,%r19) + ldw 32(0,%r4),%r10 + bl,n L$0051,0 +L$0050: + ldo 16(0),%r26 + .CALL ARGW0=GR + bl xmalloc,2 + nop + copy %r28,%r10 +L$0051: + stw %r10,36(0,%r9) + ldw 8(0,%r4),%r19 + ldw 12(0,%r19),%r26 + .CALL ARGW0=GR + bl alloc_type,2 + nop + stw %r28,12(0,%r4) + ldw 12(0,%r4),%r19 + ldo 11(0),%r20 + stw %r20,0(0,%r19) + ldw 12(0,%r4),%r19 + addil L'builtin_type_int-$global$,%r27 + ldw R'builtin_type_int-$global$(%r1),%r20 + stw %r20,16(0,%r19) + ldw 12(0,%r4),%r19 + ldo 4(0),%r20 + stw %r20,8(0,%r19) + ldw 12(0,%r4),%r19 + ldo 2(0),%r20 + sth %r20,34(0,%r19) + ldw 12(0,%r4),%r9 + ldw 12(0,%r4),%r19 + ldw 12(0,%r19),%r20 + comiclr,<> 0,%r20,0 + bl L$0057,0 + nop + ldw 12(0,%r4),%r19 + ldw 12(0,%r19),%r20 + ldo 120(%r20),%r19 + stw %r19,36(0,%r4) + ldw 36(0,%r4),%r19 + stw %r19,40(0,%r4) + ldo 32(0),%r19 + stw %r19,44(0,%r4) + ldw 40(0,%r4),%r19 + ldw 40(0,%r4),%r20 + ldw 16(0,%r19),%r19 + ldw 12(0,%r20),%r20 + sub %r19,%r20,%r19 + ldw 44(0,%r4),%r20 + comclr,< %r19,%r20,0 + bl L$0052,0 + nop + ldw 40(0,%r4),%r26 + ldw 44(0,%r4),%r25 + .CALL ARGW0=GR,ARGW1=GR + bl _obstack_newchunk,2 + nop + copy 0,%r19 + bl,n L$0053,0 +L$0052: + copy 0,%r19 +L$0053: + ldw 40(0,%r4),%r19 + ldw 40(0,%r4),%r20 + ldw 12(0,%r20),%r21 + ldw 44(0,%r4),%r22 + add %r21,%r22,%r20 + copy %r20,%r21 + stw %r21,12(0,%r19) + ldw 36(0,%r4),%r19 + stw %r19,48(0,%r4) + ldw 48(0,%r4),%r19 + ldw 8(0,%r19),%r20 + stw %r20,52(0,%r4) + ldw 48(0,%r4),%r19 + ldw 12(0,%r19),%r20 + ldw 52(0,%r4),%r19 + comclr,= %r20,%r19,0 + bl L$0054,0 + nop + ldw 48(0,%r4),%r19 + ldw 40(0,%r19),%r20 + copy %r20,%r21 + depi -1,1,1,%r21 + stw %r21,40(0,%r19) +L$0054: + ldw 48(0,%r4),%r19 + ldw 48(0,%r4),%r20 + ldw 48(0,%r4),%r21 + ldw 12(0,%r20),%r20 + ldw 24(0,%r21),%r21 + add %r20,%r21,%r20 + ldw 48(0,%r4),%r21 + ldw 24(0,%r21),%r22 + uaddcm 0,%r22,%r21 + and %r20,%r21,%r20 + copy %r20,%r21 + stw %r21,12(0,%r19) + ldw 48(0,%r4),%r19 + ldw 48(0,%r4),%r20 + ldw 12(0,%r19),%r19 + ldw 4(0,%r20),%r20 + sub %r19,%r20,%r19 + ldw 48(0,%r4),%r20 + ldw 48(0,%r4),%r21 + ldw 16(0,%r20),%r20 + ldw 4(0,%r21),%r21 + sub %r20,%r21,%r20 + comclr,> %r19,%r20,0 + bl L$0055,0 + nop + ldw 48(0,%r4),%r19 + ldw 48(0,%r4),%r20 + ldw 16(0,%r20),%r21 + stw %r21,12(0,%r19) + copy %r21,%r19 + bl,n L$0056,0 +L$0055: + copy 0,%r19 +L$0056: + ldw 48(0,%r4),%r19 + ldw 48(0,%r4),%r20 + ldw 12(0,%r20),%r21 + stw %r21,8(0,%r19) + ldw 52(0,%r4),%r10 + bl,n L$0058,0 +L$0057: + ldo 32(0),%r26 + .CALL ARGW0=GR + bl xmalloc,2 + nop + copy %r28,%r10 +L$0058: + stw %r10,36(0,%r9) + ldw 12(0,%r4),%r19 + ldw 36(0,%r19),%r20 + stw 0,0(0,%r20) + ldw 12(0,%r4),%r19 + ldo 16(0),%r20 + ldw 36(0,%r19),%r21 + add %r20,%r21,%r19 + ldo -8(0),%r20 + ldo -32(%r4),%r22 + add %r22,%r20,%r21 + ldw 0(0,%r21),%r20 + ldo -1(%r20),%r21 + stw %r21,0(0,%r19) + ldw 12(0,%r4),%r20 + ldw 36(0,%r20),%r19 + addil L'builtin_type_int-$global$,%r27 + ldw R'builtin_type_int-$global$(%r1),%r20 + stw %r20,8(0,%r19) + ldw 12(0,%r4),%r19 + ldo 16(0),%r20 + ldw 36(0,%r19),%r21 + add %r20,%r21,%r19 + addil L'builtin_type_int-$global$,%r27 + ldw R'builtin_type_int-$global$(%r1),%r20 + stw %r20,8(0,%r19) + ldw 8(0,%r4),%r19 + ldw 36(0,%r19),%r20 + ldw 12(0,%r4),%r19 + stw %r19,8(0,%r20) + ldw 8(0,%r4),%r19 + ldo -1(0),%r20 + stw %r20,44(0,%r19) + ldw 8(0,%r4),%r28 + bl,n L$0044,0 +L$0044: + ldw 56(0,4),10 + ldw 60(0,4),9 + ldw 64(0,4),8 + ldw 68(0,4),7 + ldw 72(0,4),6 + ldw 76(0,4),5 + ldo 8(4),30 + ldw -28(0,30),2 + bv 0(2) + ldwm -8(30),4 + .EXIT + .PROCEND + .align 4 + .EXPORT smash_to_member_type,CODE + .EXPORT smash_to_member_type,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,ARGW2=GR +smash_to_member_type: + .PROC + .CALLINFO FRAME=192,CALLS,SAVE_RP + .ENTRY + stw 2,-20(0,30) + copy 4,1 + copy 30,4 + stwm 1,192(0,30) + stw 10,16(0,4) + stw 9,20(0,4) + stw 8,24(0,4) + stw 7,28(0,4) + stw 6,32(0,4) + stw 5,36(0,4) + ldo -4(0),%r5 + ldo -32(%r4),%r19 + add %r19,%r5,%r6 + stw %r26,0(0,%r6) + ldo -8(0),%r7 + ldo -32(%r4),%r19 + add %r19,%r7,%r8 + stw %r25,0(0,%r8) + ldo -12(0),%r9 + ldo -32(%r4),%r19 + add %r19,%r9,%r10 + stw %r24,0(0,%r10) + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 12(0,%r19),%r20 + stw %r20,8(0,%r4) + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r26 + copy 0,%r25 + ldo 52(0),%r24 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl memset,2 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 8(0,%r4),%r20 + stw %r20,12(0,%r19) + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldo -12(0),%r20 + ldo -32(%r4),%r21 + add %r21,%r20,%r20 + ldw 0(0,%r20),%r21 + stw %r21,16(0,%r19) + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldo -8(0),%r20 + ldo -32(%r4),%r21 + add %r21,%r20,%r20 + ldw 0(0,%r20),%r21 + stw %r21,40(0,%r19) + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldo 1(0),%r20 + stw %r20,8(0,%r19) + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldo 14(0),%r20 + stw %r20,0(0,%r19) +L$0059: + ldw 16(0,4),10 + ldw 20(0,4),9 + ldw 24(0,4),8 + ldw 28(0,4),7 + ldw 32(0,4),6 + ldw 36(0,4),5 + ldo 8(4),30 + ldw -28(0,30),2 + bv 0(2) + ldwm -8(30),4 + .EXIT + .PROCEND + .align 4 + .EXPORT smash_to_method_type,CODE + .EXPORT smash_to_method_type,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR +smash_to_method_type: + .PROC + .CALLINFO FRAME=192,CALLS,SAVE_RP + .ENTRY + stw 2,-20(0,30) + copy 4,1 + copy 30,4 + stwm 1,192(0,30) + stw 12,16(0,4) + stw 11,20(0,4) + stw 10,24(0,4) + stw 9,28(0,4) + stw 8,32(0,4) + stw 7,36(0,4) + stw 6,40(0,4) + stw 5,44(0,4) + ldo -4(0),%r5 + ldo -32(%r4),%r19 + add %r19,%r5,%r6 + stw %r26,0(0,%r6) + ldo -8(0),%r7 + ldo -32(%r4),%r19 + add %r19,%r7,%r8 + stw %r25,0(0,%r8) + ldo -12(0),%r9 + ldo -32(%r4),%r19 + add %r19,%r9,%r10 + stw %r24,0(0,%r10) + ldo -16(0),%r11 + ldo -32(%r4),%r19 + add %r19,%r11,%r12 + stw %r23,0(0,%r12) + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 12(0,%r19),%r20 + stw %r20,8(0,%r4) + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r26 + copy 0,%r25 + ldo 52(0),%r24 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl memset,2 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 8(0,%r4),%r20 + stw %r20,12(0,%r19) + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldo -12(0),%r20 + ldo -32(%r4),%r21 + add %r21,%r20,%r20 + ldw 0(0,%r20),%r21 + stw %r21,16(0,%r19) + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldo -8(0),%r20 + ldo -32(%r4),%r21 + add %r21,%r20,%r20 + ldw 0(0,%r20),%r21 + stw %r21,40(0,%r19) + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldo -16(0),%r20 + ldo -32(%r4),%r21 + add %r21,%r20,%r20 + ldw 0(0,%r20),%r21 + stw %r21,48(0,%r19) + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldo 1(0),%r20 + stw %r20,8(0,%r19) + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldo 15(0),%r20 + stw %r20,0(0,%r19) +L$0060: + ldw 16(0,4),12 + ldw 20(0,4),11 + ldw 24(0,4),10 + ldw 28(0,4),9 + ldw 32(0,4),8 + ldw 36(0,4),7 + ldw 40(0,4),6 + ldw 44(0,4),5 + ldo 8(4),30 + ldw -28(0,30),2 + bv 0(2) + ldwm -8(30),4 + .EXIT + .PROCEND + .IMPORT strncmp,CODE + .align 4 +LC$0000: + .STRING "struct \x00" + .align 4 +LC$0001: + .STRING "union \x00" + .align 4 +LC$0002: + .STRING "enum \x00" + .align 4 + .EXPORT type_name_no_tag,CODE + .EXPORT type_name_no_tag,ENTRY,PRIV_LEV=3,ARGW0=GR,RTNVAL=GR +type_name_no_tag: + .PROC + .CALLINFO FRAME=128,CALLS,SAVE_RP + .ENTRY + stw 2,-20(0,30) + copy 4,1 + copy 30,4 + stwm 1,128(0,30) + stw 6,8(0,4) + stw 5,12(0,4) + copy %r26,%r5 + ldw 4(0,%r5),%r6 + comiclr,<> 0,%r6,0 + bl L$0062,0 + nop + ldw 0(0,%r5),%r19 + comiclr,<> 4,%r19,0 + bl L$0066,0 + nop + comiclr,>= 4,%r19,0 + bl L$0072,0 + nop + comiclr,<> 3,%r19,0 + bl L$0064,0 + nop + bl,n L$0070,0 +L$0072: + comiclr,<> 5,%r19,0 + bl L$0068,0 + nop + bl,n L$0070,0 +L$0064: + copy %r6,%r26 + ldil L'LC$0000,%r25 + ldo R'LC$0000(%r25),%r25 + ldo 7(0),%r24 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl strncmp,2 + nop + copy %r28,%r19 + comiclr,= 0,%r19,0 + bl L$0065,0 + nop + ldo 7(%r6),%r6 +L$0065: + bl,n L$0063,0 +L$0066: + copy %r6,%r26 + ldil L'LC$0001,%r25 + ldo R'LC$0001(%r25),%r25 + ldo 6(0),%r24 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl strncmp,2 + nop + copy %r28,%r19 + comiclr,= 0,%r19,0 + bl L$0067,0 + nop + ldo 6(%r6),%r6 +L$0067: + bl,n L$0063,0 +L$0068: + copy %r6,%r26 + ldil L'LC$0002,%r25 + ldo R'LC$0002(%r25),%r25 + ldo 5(0),%r24 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl strncmp,2 + nop + copy %r28,%r19 + comiclr,= 0,%r19,0 + bl L$0069,0 + nop + ldo 5(%r6),%r6 +L$0069: + bl,n L$0063,0 +L$0070: + bl,n L$0063,0 +L$0063: +L$0062: + copy %r6,%r28 + bl,n L$0061,0 +L$0061: + ldw 8(0,4),6 + ldw 12(0,4),5 + ldo 8(4),30 + ldw -28(0,30),2 + bv 0(2) + ldwm -8(30),4 + .EXIT + .PROCEND + .IMPORT current_language,DATA + .IMPORT strcmp,CODE + .align 4 + .EXPORT lookup_primitive_typename,CODE + .EXPORT lookup_primitive_typename,ENTRY,PRIV_LEV=3,ARGW0=GR,RTNVAL=GR +lookup_primitive_typename: + .PROC + .CALLINFO FRAME=128,CALLS,SAVE_RP + .ENTRY + stw 2,-20(0,30) + copy 4,1 + copy 30,4 + stwm 1,128(0,30) + stw 6,16(0,4) + stw 5,20(0,4) + ldo -4(0),%r5 + ldo -32(%r4),%r19 + add %r19,%r5,%r6 + stw %r26,0(0,%r6) + addil L'current_language-$global$,%r27 + ldw R'current_language-$global$(%r1),%r19 + ldw 8(0,%r19),%r20 + stw %r20,8(0,%r4) +L$0074: + ldw 8(0,%r4),%r19 + ldw 0(0,%r19),%r20 + comiclr,<> 0,%r20,0 + bl L$0075,0 + nop + ldw 8(0,%r4),%r19 + ldw 0(0,%r19),%r20 + ldw 0(0,%r20),%r19 + ldo -4(0),%r20 + ldo -32(%r4),%r21 + add %r21,%r20,%r20 + ldw 4(0,%r19),%r26 + ldw 0(0,%r20),%r25 + .CALL ARGW0=GR,ARGW1=GR + bl strcmp,2 + nop + copy %r28,%r19 + comiclr,= 0,%r19,0 + bl L$0077,0 + nop + ldw 8(0,%r4),%r19 + ldw 0(0,%r19),%r20 + ldw 0(0,%r20),%r28 + bl,n L$0073,0 +L$0077: +L$0076: + ldw 8(0,%r4),%r19 + ldo 4(%r19),%r20 + stw %r20,8(0,%r4) + bl,n L$0074,0 +L$0075: + copy 0,%r28 + bl,n L$0073,0 +L$0073: + ldw 16(0,4),6 + ldw 20(0,4),5 + ldo 8(4),30 + ldw -28(0,30),2 + bv 0(2) + ldwm -8(30),4 + .EXIT + .PROCEND + .IMPORT lookup_symbol,CODE + .IMPORT error,CODE + .align 4 +LC$0003: + .STRING "No type named %s.\x00" + .align 4 + .EXPORT lookup_typename,CODE + .EXPORT lookup_typename,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,ARGW2=GR,RTNVAL=GR +lookup_typename: + .PROC + .CALLINFO FRAME=192,CALLS,SAVE_RP + .ENTRY + stw 2,-20(0,30) + copy 4,1 + copy 30,4 + stwm 1,192(0,30) + stw 12,8(0,4) + stw 11,12(0,4) + stw 10,16(0,4) + stw 9,20(0,4) + stw 8,24(0,4) + stw 7,28(0,4) + stw 6,32(0,4) + stw 5,36(0,4) + ldo -4(0),%r5 + ldo -32(%r4),%r19 + add %r19,%r5,%r6 + stw %r26,0(0,%r6) + ldo -8(0),%r7 + ldo -32(%r4),%r19 + add %r19,%r7,%r8 + stw %r25,0(0,%r8) + ldo -12(0),%r9 + ldo -32(%r4),%r19 + add %r19,%r9,%r10 + stw %r24,0(0,%r10) + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldo -8(0),%r20 + ldo -32(%r4),%r21 + add %r21,%r20,%r20 + stw 0,-52(0,%r30) + ldw 0(0,%r19),%r26 + ldw 0(0,%r20),%r25 + ldo 1(0),%r24 + copy 0,%r23 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl lookup_symbol,2 + nop + copy %r28,%r11 + comiclr,<> 0,%r11,0 + bl L$0080,0 + nop + ldw 8(0,%r11),%r19 + comiclr,= 8,%r19,0 + bl L$0080,0 + nop + bl,n L$0079,0 +L$0080: + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r26 + .CALL ARGW0=GR + bl lookup_primitive_typename,2 + nop + copy %r28,%r12 + comiclr,<> 0,%r12,0 + bl L$0081,0 + nop + copy %r12,%r28 + bl,n L$0078,0 + bl,n L$0082,0 +L$0081: + comiclr,= 0,%r12,0 + bl L$0083,0 + nop + ldo -12(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + comiclr,<> 0,%r20,0 + bl L$0083,0 + nop + copy 0,%r28 + bl,n L$0078,0 + bl,n L$0084,0 +L$0083: + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldil L'LC$0003,%r26 + ldo R'LC$0003(%r26),%r26 + ldw 0(0,%r19),%r25 + .CALL ARGW0=GR,ARGW1=GR + bl error,2 + nop +L$0084: +L$0082: +L$0079: + ldw 12(0,%r11),%r28 + bl,n L$0078,0 +L$0078: + ldw 8(0,4),12 + ldw 12(0,4),11 + ldw 16(0,4),10 + ldw 20(0,4),9 + ldw 24(0,4),8 + ldw 28(0,4),7 + ldw 32(0,4),6 + ldw 36(0,4),5 + ldo 8(4),30 + ldw -28(0,30),2 + bv 0(2) + ldwm -8(30),4 + .EXIT + .PROCEND + .IMPORT alloca,CODE + .IMPORT strlen,CODE + .IMPORT strcpy,CODE + .align 4 +LC$0004: + .STRING "unsigned \x00" + .align 4 + .EXPORT lookup_unsigned_typename,CODE + .EXPORT lookup_unsigned_typename,ENTRY,PRIV_LEV=3,ARGW0=GR,RTNVAL=GR +lookup_unsigned_typename: + .PROC + .CALLINFO FRAME=128,CALLS,SAVE_RP + .ENTRY + stw 2,-20(0,30) + copy 4,1 + copy 30,4 + stwm 1,128(0,30) + stw 6,16(0,4) + stw 5,20(0,4) + ldo -4(0),%r5 + ldo -32(%r4),%r19 + add %r19,%r5,%r6 + stw %r26,0(0,%r6) + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r26 + .CALL ARGW0=GR + bl strlen,2 + nop + copy %r28,%r19 + ldo 10(%r19),%r20 + ldo 7(%r20),%r21 + copy %r21,%r19 + ldo 63(%r19),%r20 + extru %r20,25,26,%r19 + zdep %r19,25,26,%r20 + ldo -96(%r30),%r19 + add %r30,%r20,%r30 + ldo 7(%r19),%r20 + extru %r20,28,29,%r19 + zdep %r19,28,29,%r20 + stw %r20,8(0,%r4) + ldw 8(0,%r4),%r26 + ldil L'LC$0004,%r25 + ldo R'LC$0004(%r25),%r25 + .CALL ARGW0=GR,ARGW1=GR + bl strcpy,2 + nop + ldw 8(0,%r4),%r20 + ldo 9(%r20),%r19 + ldo -4(0),%r20 + ldo -32(%r4),%r21 + add %r21,%r20,%r20 + copy %r19,%r26 + ldw 0(0,%r20),%r25 + .CALL ARGW0=GR,ARGW1=GR + bl strcpy,2 + nop + ldw 8(0,%r4),%r26 + copy 0,%r25 + copy 0,%r24 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl lookup_typename,2 + nop + bl,n L$0085,0 +L$0085: + ldw 16(0,4),6 + ldw 20(0,4),5 + ldo 8(4),30 + ldw -28(0,30),2 + bv 0(2) + ldwm -8(30),4 + .EXIT + .PROCEND + .align 4 +LC$0005: + .STRING "signed \x00" + .align 4 + .EXPORT lookup_signed_typename,CODE + .EXPORT lookup_signed_typename,ENTRY,PRIV_LEV=3,ARGW0=GR,RTNVAL=GR +lookup_signed_typename: + .PROC + .CALLINFO FRAME=128,CALLS,SAVE_RP + .ENTRY + stw 2,-20(0,30) + copy 4,1 + copy 30,4 + stwm 1,128(0,30) + stw 6,16(0,4) + stw 5,20(0,4) + ldo -4(0),%r5 + ldo -32(%r4),%r19 + add %r19,%r5,%r6 + stw %r26,0(0,%r6) + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r26 + .CALL ARGW0=GR + bl strlen,2 + nop + copy %r28,%r19 + ldo 8(%r19),%r20 + ldo 7(%r20),%r21 + copy %r21,%r19 + ldo 63(%r19),%r20 + extru %r20,25,26,%r19 + zdep %r19,25,26,%r20 + ldo -96(%r30),%r19 + add %r30,%r20,%r30 + ldo 7(%r19),%r20 + extru %r20,28,29,%r19 + zdep %r19,28,29,%r20 + stw %r20,12(0,%r4) + ldw 12(0,%r4),%r26 + ldil L'LC$0005,%r25 + ldo R'LC$0005(%r25),%r25 + .CALL ARGW0=GR,ARGW1=GR + bl strcpy,2 + nop + ldw 12(0,%r4),%r20 + ldo 7(%r20),%r19 + ldo -4(0),%r20 + ldo -32(%r4),%r21 + add %r21,%r20,%r20 + copy %r19,%r26 + ldw 0(0,%r20),%r25 + .CALL ARGW0=GR,ARGW1=GR + bl strcpy,2 + nop + ldw 12(0,%r4),%r26 + copy 0,%r25 + ldo 1(0),%r24 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl lookup_typename,2 + nop + stw %r28,8(0,%r4) + ldw 8(0,%r4),%r19 + comiclr,<> 0,%r19,0 + bl L$0087,0 + nop + ldw 8(0,%r4),%r28 + bl,n L$0086,0 +L$0087: + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r26 + copy 0,%r25 + copy 0,%r24 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl lookup_typename,2 + nop + bl,n L$0086,0 +L$0086: + ldw 16(0,4),6 + ldw 20(0,4),5 + ldo 8(4),30 + ldw -28(0,30),2 + bv 0(2) + ldwm -8(30),4 + .EXIT + .PROCEND + .align 4 +LC$0006: + .STRING "No struct type named %s.\x00" + .align 4 +LC$0007: + .STRING "This context has class, union or enum %s, not a struct.\x00" + .align 4 + .EXPORT lookup_struct,CODE + .EXPORT lookup_struct,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,RTNVAL=GR +lookup_struct: + .PROC + .CALLINFO FRAME=128,CALLS,SAVE_RP + .ENTRY + stw 2,-20(0,30) + copy 4,1 + copy 30,4 + stwm 1,128(0,30) + stw 9,8(0,4) + stw 8,12(0,4) + stw 7,16(0,4) + stw 6,20(0,4) + stw 5,24(0,4) + ldo -4(0),%r5 + ldo -32(%r4),%r19 + add %r19,%r5,%r6 + stw %r26,0(0,%r6) + ldo -8(0),%r7 + ldo -32(%r4),%r19 + add %r19,%r7,%r8 + stw %r25,0(0,%r8) + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldo -8(0),%r20 + ldo -32(%r4),%r21 + add %r21,%r20,%r20 + stw 0,-52(0,%r30) + ldw 0(0,%r19),%r26 + ldw 0(0,%r20),%r25 + ldo 2(0),%r24 + copy 0,%r23 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl lookup_symbol,2 + nop + copy %r28,%r9 + comiclr,= 0,%r9,0 + bl L$0089,0 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldil L'LC$0006,%r26 + ldo R'LC$0006(%r26),%r26 + ldw 0(0,%r19),%r25 + .CALL ARGW0=GR,ARGW1=GR + bl error,2 + nop +L$0089: + ldw 12(0,%r9),%r19 + ldw 0(0,%r19),%r20 + comiclr,<> 3,%r20,0 + bl L$0090,0 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldil L'LC$0007,%r26 + ldo R'LC$0007(%r26),%r26 + ldw 0(0,%r19),%r25 + .CALL ARGW0=GR,ARGW1=GR + bl error,2 + nop +L$0090: + ldw 12(0,%r9),%r28 + bl,n L$0088,0 +L$0088: + ldw 8(0,4),9 + ldw 12(0,4),8 + ldw 16(0,4),7 + ldw 20(0,4),6 + ldw 24(0,4),5 + ldo 8(4),30 + ldw -28(0,30),2 + bv 0(2) + ldwm -8(30),4 + .EXIT + .PROCEND + .align 4 +LC$0008: + .STRING "No union type named %s.\x00" + .align 4 +LC$0009: + .STRING "This context has class, struct or enum %s, not a union.\x00" + .align 4 + .EXPORT lookup_union,CODE + .EXPORT lookup_union,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,RTNVAL=GR +lookup_union: + .PROC + .CALLINFO FRAME=128,CALLS,SAVE_RP + .ENTRY + stw 2,-20(0,30) + copy 4,1 + copy 30,4 + stwm 1,128(0,30) + stw 9,8(0,4) + stw 8,12(0,4) + stw 7,16(0,4) + stw 6,20(0,4) + stw 5,24(0,4) + ldo -4(0),%r5 + ldo -32(%r4),%r19 + add %r19,%r5,%r6 + stw %r26,0(0,%r6) + ldo -8(0),%r7 + ldo -32(%r4),%r19 + add %r19,%r7,%r8 + stw %r25,0(0,%r8) + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldo -8(0),%r20 + ldo -32(%r4),%r21 + add %r21,%r20,%r20 + stw 0,-52(0,%r30) + ldw 0(0,%r19),%r26 + ldw 0(0,%r20),%r25 + ldo 2(0),%r24 + copy 0,%r23 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl lookup_symbol,2 + nop + copy %r28,%r9 + comiclr,= 0,%r9,0 + bl L$0092,0 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldil L'LC$0008,%r26 + ldo R'LC$0008(%r26),%r26 + ldw 0(0,%r19),%r25 + .CALL ARGW0=GR,ARGW1=GR + bl error,2 + nop +L$0092: + ldw 12(0,%r9),%r19 + ldw 0(0,%r19),%r20 + comiclr,<> 4,%r20,0 + bl L$0093,0 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldil L'LC$0009,%r26 + ldo R'LC$0009(%r26),%r26 + ldw 0(0,%r19),%r25 + .CALL ARGW0=GR,ARGW1=GR + bl error,2 + nop +L$0093: + ldw 12(0,%r9),%r28 + bl,n L$0091,0 +L$0091: + ldw 8(0,4),9 + ldw 12(0,4),8 + ldw 16(0,4),7 + ldw 20(0,4),6 + ldw 24(0,4),5 + ldo 8(4),30 + ldw -28(0,30),2 + bv 0(2) + ldwm -8(30),4 + .EXIT + .PROCEND + .align 4 +LC$0010: + .STRING "No enum type named %s.\x00" + .align 4 +LC$0011: + .STRING "This context has class, struct or union %s, not an enum.\x00" + .align 4 + .EXPORT lookup_enum,CODE + .EXPORT lookup_enum,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,RTNVAL=GR +lookup_enum: + .PROC + .CALLINFO FRAME=128,CALLS,SAVE_RP + .ENTRY + stw 2,-20(0,30) + copy 4,1 + copy 30,4 + stwm 1,128(0,30) + stw 9,8(0,4) + stw 8,12(0,4) + stw 7,16(0,4) + stw 6,20(0,4) + stw 5,24(0,4) + ldo -4(0),%r5 + ldo -32(%r4),%r19 + add %r19,%r5,%r6 + stw %r26,0(0,%r6) + ldo -8(0),%r7 + ldo -32(%r4),%r19 + add %r19,%r7,%r8 + stw %r25,0(0,%r8) + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldo -8(0),%r20 + ldo -32(%r4),%r21 + add %r21,%r20,%r20 + stw 0,-52(0,%r30) + ldw 0(0,%r19),%r26 + ldw 0(0,%r20),%r25 + ldo 2(0),%r24 + copy 0,%r23 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl lookup_symbol,2 + nop + copy %r28,%r9 + comiclr,= 0,%r9,0 + bl L$0095,0 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldil L'LC$0010,%r26 + ldo R'LC$0010(%r26),%r26 + ldw 0(0,%r19),%r25 + .CALL ARGW0=GR,ARGW1=GR + bl error,2 + nop +L$0095: + ldw 12(0,%r9),%r19 + ldw 0(0,%r19),%r20 + comiclr,<> 5,%r20,0 + bl L$0096,0 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldil L'LC$0011,%r26 + ldo R'LC$0011(%r26),%r26 + ldw 0(0,%r19),%r25 + .CALL ARGW0=GR,ARGW1=GR + bl error,2 + nop +L$0096: + ldw 12(0,%r9),%r28 + bl,n L$0094,0 +L$0094: + ldw 8(0,4),9 + ldw 12(0,4),8 + ldw 16(0,4),7 + ldw 20(0,4),6 + ldw 24(0,4),5 + ldo 8(4),30 + ldw -28(0,30),2 + bv 0(2) + ldwm -8(30),4 + .EXIT + .PROCEND + .IMPORT strcat,CODE + .align 4 +LC$0012: + .STRING "<\x00" + .align 4 +LC$0013: + .STRING " >\x00" + .align 4 +LC$0014: + .STRING "No template type named %s.\x00" + .align 4 + .EXPORT lookup_template_type,CODE + .EXPORT lookup_template_type,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,ARGW2=GR,RTNVAL=GR +lookup_template_type: + .PROC + .CALLINFO FRAME=192,CALLS,SAVE_RP + .ENTRY + stw 2,-20(0,30) + copy 4,1 + copy 30,4 + stwm 1,192(0,30) + stw 11,16(0,4) + stw 10,20(0,4) + stw 9,24(0,4) + stw 8,28(0,4) + stw 7,32(0,4) + stw 6,36(0,4) + stw 5,40(0,4) + ldo -4(0),%r5 + ldo -32(%r4),%r19 + add %r19,%r5,%r6 + stw %r26,0(0,%r6) + ldo -8(0),%r7 + ldo -32(%r4),%r19 + add %r19,%r7,%r8 + stw %r25,0(0,%r8) + ldo -12(0),%r9 + ldo -32(%r4),%r19 + add %r19,%r9,%r10 + stw %r24,0(0,%r10) + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r26 + .CALL ARGW0=GR + bl strlen,2 + nop + copy %r28,%r11 + ldo -8(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 4(0,%r19),%r26 + .CALL ARGW0=GR + bl strlen,2 + nop + copy %r28,%r19 + add %r11,%r19,%r20 + ldo 4(%r20),%r19 + ldo 7(%r19),%r20 + copy %r20,%r19 + ldo 63(%r19),%r20 + extru %r20,25,26,%r19 + zdep %r19,25,26,%r20 + ldo -96(%r30),%r19 + add %r30,%r20,%r30 + ldo 7(%r19),%r20 + extru %r20,28,29,%r19 + zdep %r19,28,29,%r20 + stw %r20,12(0,%r4) + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 12(0,%r4),%r26 + ldw 0(0,%r19),%r25 + .CALL ARGW0=GR,ARGW1=GR + bl strcpy,2 + nop + ldw 12(0,%r4),%r26 + ldil L'LC$0012,%r25 + ldo R'LC$0012(%r25),%r25 + .CALL ARGW0=GR,ARGW1=GR + bl strcat,2 + nop + ldo -8(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 12(0,%r4),%r26 + ldw 4(0,%r19),%r25 + .CALL ARGW0=GR,ARGW1=GR + bl strcat,2 + nop + ldw 12(0,%r4),%r26 + ldil L'LC$0013,%r25 + ldo R'LC$0013(%r25),%r25 + .CALL ARGW0=GR,ARGW1=GR + bl strcat,2 + nop + ldo -12(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + stw 0,-52(0,%r30) + ldw 12(0,%r4),%r26 + ldw 0(0,%r19),%r25 + ldo 1(0),%r24 + copy 0,%r23 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl lookup_symbol,2 + nop + stw %r28,8(0,%r4) + ldw 8(0,%r4),%r19 + comiclr,= 0,%r19,0 + bl L$0098,0 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldil L'LC$0014,%r26 + ldo R'LC$0014(%r26),%r26 + ldw 0(0,%r19),%r25 + .CALL ARGW0=GR,ARGW1=GR + bl error,2 + nop +L$0098: + ldw 8(0,%r4),%r19 + ldw 12(0,%r19),%r20 + ldw 0(0,%r20),%r19 + comiclr,<> 3,%r19,0 + bl L$0099,0 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldil L'LC$0007,%r26 + ldo R'LC$0007(%r26),%r26 + ldw 0(0,%r19),%r25 + .CALL ARGW0=GR,ARGW1=GR + bl error,2 + nop +L$0099: + ldw 8(0,%r4),%r19 + ldw 12(0,%r19),%r28 + bl,n L$0097,0 +L$0097: + ldw 16(0,4),11 + ldw 20(0,4),10 + ldw 24(0,4),9 + ldw 28(0,4),8 + ldw 32(0,4),7 + ldw 36(0,4),6 + ldw 40(0,4),5 + ldo 8(4),30 + ldw -28(0,30),2 + bv 0(2) + ldwm -8(30),4 + .EXIT + .PROCEND + .IMPORT current_target,DATA + .IMPORT fflush,CODE + .IMPORT __iob,DATA + .IMPORT fprintf,CODE + .align 4 +LC$0015: + .STRING "Type \x00" + .IMPORT type_print,CODE + .align 4 +LC$0016: + .STRING "\x00" + .align 4 +LC$0017: + .STRING " is not a structure or union type.\x00" + .IMPORT check_stub_type,CODE + .align 4 +LC$0018: + .STRING " has no component named \x00" + .IMPORT fputs_filtered,CODE + .align 4 +LC$0019: + .STRING ".\x00" + .align 4 + .EXPORT lookup_struct_elt_type,CODE + .EXPORT lookup_struct_elt_type,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,ARGW2=GR,RTNVAL=GR +lookup_struct_elt_type: + .PROC + .CALLINFO FRAME=192,CALLS,SAVE_RP + .ENTRY + stw 2,-20(0,30) + copy 4,1 + copy 30,4 + stwm 1,192(0,30) + stw 11,24(0,4) + stw 10,28(0,4) + stw 9,32(0,4) + stw 8,36(0,4) + stw 7,40(0,4) + stw 6,44(0,4) + stw 5,48(0,4) + ldo -4(0),%r5 + ldo -32(%r4),%r19 + add %r19,%r5,%r6 + stw %r26,0(0,%r6) + ldo -8(0),%r7 + ldo -32(%r4),%r19 + add %r19,%r7,%r8 + stw %r25,0(0,%r8) + ldo -12(0),%r9 + ldo -32(%r4),%r19 + add %r19,%r9,%r10 + stw %r24,0(0,%r10) + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 0(0,%r19),%r20 + comiclr,<> 1,%r20,0 + bl L$0102,0 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 0(0,%r19),%r20 + ldo 16(0),%r19 + comclr,<> %r20,%r19,0 + bl L$0102,0 + nop + bl,n L$0101,0 +L$0102: + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldo -4(0),%r20 + ldo -32(%r4),%r22 + add %r22,%r20,%r21 + ldw 0(0,%r21),%r20 + ldw 16(0,%r20),%r21 + stw %r21,0(0,%r19) +L$0101: + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 0(0,%r19),%r20 + comiclr,<> 3,%r20,0 + bl L$0103,0 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 0(0,%r19),%r20 + comiclr,<> 4,%r20,0 + bl L$0103,0 + nop + addil L'current_target-$global$,%r27 + ldw R'current_target-$global$(%r1),%r19 + ldw 76(0,%r19),%r11 + copy %r11,22 + .CALL ARGW0=GR + bl $$dyncall,31 + copy 31,2 + addil L'__iob-$global$+16,%r27 + ldo R'__iob-$global$+16(%r1),%r26 + .CALL ARGW0=GR + bl fflush,2 + nop + addil L'__iob-$global$+32,%r27 + ldo R'__iob-$global$+32(%r1),%r26 + ldil L'LC$0015,%r25 + ldo R'LC$0015(%r25),%r25 + .CALL ARGW0=GR,ARGW1=GR + bl fprintf,2 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r26 + ldil L'LC$0016,%r25 + ldo R'LC$0016(%r25),%r25 + addil L'__iob-$global$+32,%r27 + ldo R'__iob-$global$+32(%r1),%r24 + ldo -1(0),%r23 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl type_print,2 + nop + ldil L'LC$0017,%r26 + ldo R'LC$0017(%r26),%r26 + .CALL ARGW0=GR + bl error,2 + nop +L$0103: + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r26 + .CALL ARGW0=GR + bl check_stub_type,2 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldh 34(0,%r19),%r20 + extrs %r20,31,16,%r19 + ldo -1(%r19),%r20 + stw %r20,8(0,%r4) +L$0104: + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 48(0,%r19),%r20 + ldh 0(0,%r20),%r21 + extrs %r21,31,16,%r19 + ldw 8(0,%r4),%r20 + comclr,>= %r20,%r19,0 + bl L$0105,0 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 8(0,%r4),%r20 + zdep %r20,27,28,%r21 + ldw 36(0,%r19),%r20 + add %r21,%r20,%r19 + ldw 12(0,%r19),%r20 + stw %r20,12(0,%r4) + ldw 12(0,%r4),%r19 + comiclr,<> 0,%r19,0 + bl L$0107,0 + nop + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 12(0,%r4),%r26 + ldw 0(0,%r19),%r25 + .CALL ARGW0=GR,ARGW1=GR + bl strcmp,2 + nop + copy %r28,%r19 + comiclr,= 0,%r19,0 + bl L$0107,0 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 8(0,%r4),%r20 + zdep %r20,27,28,%r21 + ldw 36(0,%r19),%r20 + add %r21,%r20,%r19 + ldw 8(0,%r19),%r28 + bl,n L$0100,0 +L$0107: +L$0106: + ldw 8(0,%r4),%r19 + ldo -1(%r19),%r20 + stw %r20,8(0,%r4) + bl,n L$0104,0 +L$0105: + nop + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 48(0,%r19),%r20 + ldh 0(0,%r20),%r21 + extrs %r21,31,16,%r19 + ldo -1(%r19),%r20 + stw %r20,8(0,%r4) +L$0108: + ldw 8(0,%r4),%r19 + comiclr,<= 0,%r19,0 + bl L$0109,0 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 8(0,%r4),%r20 + zdep %r20,27,28,%r21 + ldw 36(0,%r19),%r20 + add %r21,%r20,%r19 + ldo -8(0),%r20 + ldo -32(%r4),%r21 + add %r21,%r20,%r20 + ldw 8(0,%r19),%r26 + ldw 0(0,%r20),%r25 + copy 0,%r24 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl lookup_struct_elt_type,2 + nop + stw %r28,16(0,%r4) + ldw 16(0,%r4),%r19 + comiclr,<> 0,%r19,0 + bl L$0111,0 + nop + ldw 16(0,%r4),%r28 + bl,n L$0100,0 +L$0111: +L$0110: + ldw 8(0,%r4),%r19 + ldo -1(%r19),%r20 + stw %r20,8(0,%r4) + bl,n L$0108,0 +L$0109: + ldo -12(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + comiclr,<> 0,%r20,0 + bl L$0112,0 + nop + copy 0,%r28 + bl,n L$0100,0 +L$0112: + addil L'current_target-$global$,%r27 + ldw R'current_target-$global$(%r1),%r19 + ldw 76(0,%r19),%r11 + copy %r11,22 + .CALL ARGW0=GR + bl $$dyncall,31 + copy 31,2 + addil L'__iob-$global$+16,%r27 + ldo R'__iob-$global$+16(%r1),%r26 + .CALL ARGW0=GR + bl fflush,2 + nop + addil L'__iob-$global$+32,%r27 + ldo R'__iob-$global$+32(%r1),%r26 + ldil L'LC$0015,%r25 + ldo R'LC$0015(%r25),%r25 + .CALL ARGW0=GR,ARGW1=GR + bl fprintf,2 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r26 + ldil L'LC$0016,%r25 + ldo R'LC$0016(%r25),%r25 + addil L'__iob-$global$+32,%r27 + ldo R'__iob-$global$+32(%r1),%r24 + ldo -1(0),%r23 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl type_print,2 + nop + addil L'__iob-$global$+32,%r27 + ldo R'__iob-$global$+32(%r1),%r26 + ldil L'LC$0018,%r25 + ldo R'LC$0018(%r25),%r25 + .CALL ARGW0=GR,ARGW1=GR + bl fprintf,2 + nop + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r26 + addil L'__iob-$global$+32,%r27 + ldo R'__iob-$global$+32(%r1),%r25 + .CALL ARGW0=GR,ARGW1=GR + bl fputs_filtered,2 + nop + ldil L'LC$0019,%r26 + ldo R'LC$0019(%r26),%r26 + .CALL ARGW0=GR + bl error,2 + nop + ldo -1(0),%r28 + bl,n L$0100,0 +L$0100: + ldw 24(0,4),11 + ldw 28(0,4),10 + ldw 32(0,4),9 + ldw 36(0,4),8 + ldw 40(0,4),7 + ldw 44(0,4),6 + ldw 48(0,4),5 + ldo 8(4),30 + ldw -28(0,30),2 + bv 0(2) + ldwm -8(30),4 + .EXIT + .PROCEND + .align 4 + .EXPORT fill_in_vptr_fieldno,CODE + .EXPORT fill_in_vptr_fieldno,ENTRY,PRIV_LEV=3,ARGW0=GR +fill_in_vptr_fieldno: + .PROC + .CALLINFO FRAME=128,CALLS,SAVE_RP + .ENTRY + stw 2,-20(0,30) + copy 4,1 + copy 30,4 + stwm 1,128(0,30) + stw 6,16(0,4) + stw 5,20(0,4) + ldo -4(0),%r5 + ldo -32(%r4),%r19 + add %r19,%r5,%r6 + stw %r26,0(0,%r6) + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 44(0,%r19),%r20 + comiclr,> 0,%r20,0 + bl L$0114,0 + nop + ldo 1(0),%r19 + stw %r19,8(0,%r4) +L$0115: + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 48(0,%r19),%r20 + ldh 0(0,%r20),%r21 + extrs %r21,31,16,%r19 + ldw 8(0,%r4),%r20 + comclr,< %r20,%r19,0 + bl L$0116,0 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 8(0,%r4),%r20 + zdep %r20,27,28,%r21 + ldw 36(0,%r19),%r20 + add %r21,%r20,%r19 + ldw 8(0,%r19),%r26 + .CALL ARGW0=GR + bl fill_in_vptr_fieldno,2 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 8(0,%r4),%r20 + zdep %r20,27,28,%r21 + ldw 36(0,%r19),%r20 + add %r21,%r20,%r19 + ldw 8(0,%r19),%r20 + ldw 44(0,%r20),%r19 + comiclr,<= 0,%r19,0 + bl L$0118,0 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldo -4(0),%r20 + ldo -32(%r4),%r22 + add %r22,%r20,%r21 + ldw 0(0,%r21),%r20 + ldw 8(0,%r4),%r21 + zdep %r21,27,28,%r22 + ldw 36(0,%r20),%r21 + add %r22,%r21,%r20 + ldw 8(0,%r20),%r21 + ldw 44(0,%r21),%r20 + stw %r20,44(0,%r19) + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldo -4(0),%r20 + ldo -32(%r4),%r22 + add %r22,%r20,%r21 + ldw 0(0,%r21),%r20 + ldw 8(0,%r4),%r21 + zdep %r21,27,28,%r22 + ldw 36(0,%r20),%r21 + add %r22,%r21,%r20 + ldw 8(0,%r20),%r21 + ldw 40(0,%r21),%r20 + stw %r20,40(0,%r19) + bl,n L$0116,0 +L$0118: +L$0117: + ldw 8(0,%r4),%r19 + ldo 1(%r19),%r20 + stw %r20,8(0,%r4) + bl,n L$0115,0 +L$0116: +L$0114: +L$0113: + ldw 16(0,4),6 + ldw 20(0,4),5 + ldo 8(4),30 + ldw -28(0,30),2 + bv 0(2) + ldwm -8(30),4 + .EXIT + .PROCEND + .EXPORT stub_noname_complaint,DATA + .align 4 +LC$0020: + .STRING "stub type has NULL name\x00" + .SPACE $PRIVATE$ + .SUBSPA $DATA$ + + .align 4 +stub_noname_complaint: + .word LC$0020 + .word 0 + .word 0 + .IMPORT complain,CODE + .IMPORT memcpy,CODE + .SPACE $TEXT$ + .SUBSPA $CODE$ + + .align 4 + .EXPORT check_stub_type,CODE + .EXPORT check_stub_type,ENTRY,PRIV_LEV=3,ARGW0=GR +check_stub_type: + .PROC + .CALLINFO FRAME=128,CALLS,SAVE_RP + .ENTRY + stw 2,-20(0,30) + copy 4,1 + copy 30,4 + stwm 1,128(0,30) + stw 6,16(0,4) + stw 5,20(0,4) + ldo -4(0),%r5 + ldo -32(%r4),%r19 + add %r19,%r5,%r6 + stw %r26,0(0,%r6) + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldh 32(0,%r19),%r20 + ldo 4(0),%r21 + and %r20,%r21,%r19 + extrs %r19,31,16,%r20 + comiclr,<> 0,%r20,0 + bl L$0120,0 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r26 + .CALL ARGW0=GR + bl type_name_no_tag,2 + nop + stw %r28,8(0,%r4) + ldw 8(0,%r4),%r19 + comiclr,= 0,%r19,0 + bl L$0121,0 + nop + addil L'stub_noname_complaint-$global$,%r27 + ldo R'stub_noname_complaint-$global$(%r1),%r26 + copy 0,%r25 + .CALL ARGW0=GR,ARGW1=GR + bl complain,2 + nop + bl,n L$0119,0 +L$0121: + stw 0,-52(0,%r30) + ldw 8(0,%r4),%r26 + copy 0,%r25 + ldo 2(0),%r24 + copy 0,%r23 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl lookup_symbol,2 + nop + stw %r28,12(0,%r4) + ldw 12(0,%r4),%r19 + comiclr,<> 0,%r19,0 + bl L$0122,0 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 12(0,%r4),%r20 + ldw 0(0,%r19),%r26 + ldw 12(0,%r20),%r25 + ldo 52(0),%r24 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl memcpy,2 + nop +L$0122: +L$0120: +L$0119: + ldw 16(0,4),6 + ldw 20(0,4),5 + ldo 8(4),30 + ldw -28(0,30),2 + bv 0(2) + ldwm -8(30),4 + .EXIT + .PROCEND + .IMPORT gdb_mangle_name,CODE + .IMPORT cplus_demangle,CODE + .align 4 +LC$0021: + .STRING "Internal: Cannot demangle mangled name `%s'.\x00" + .IMPORT strchr,CODE + .IMPORT parse_and_eval_type,CODE + .IMPORT builtin_type_void,DATA + .IMPORT free,CODE + .align 4 + .EXPORT check_stub_method,CODE + .EXPORT check_stub_method,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,ARGW2=GR +check_stub_method: + .PROC + .CALLINFO FRAME=192,CALLS,SAVE_RP + .ENTRY + stw 2,-20(0,30) + copy 4,1 + copy 30,4 + stwm 1,192(0,30) + stw 11,64(0,4) + stw 10,68(0,4) + stw 9,72(0,4) + stw 8,76(0,4) + stw 7,80(0,4) + stw 6,84(0,4) + stw 5,88(0,4) + ldo -4(0),%r5 + ldo -32(%r4),%r19 + add %r19,%r5,%r6 + stw %r26,0(0,%r6) + ldo -8(0),%r7 + ldo -32(%r4),%r19 + add %r19,%r7,%r8 + stw %r25,0(0,%r8) + ldo -12(0),%r9 + ldo -32(%r4),%r19 + add %r19,%r9,%r10 + stw %r24,0(0,%r10) + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldo -8(0),%r20 + ldo -32(%r4),%r21 + add %r21,%r20,%r20 + ldo -12(0),%r21 + ldo -32(%r4),%r22 + add %r22,%r21,%r21 + ldw 0(0,%r19),%r26 + ldw 0(0,%r20),%r25 + ldw 0(0,%r21),%r24 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl gdb_mangle_name,2 + nop + stw %r28,12(0,%r4) + ldw 12(0,%r4),%r26 + ldo 3(0),%r25 + .CALL ARGW0=GR,ARGW1=GR + bl cplus_demangle,2 + nop + stw %r28,16(0,%r4) + stw 0,28(0,%r4) + ldo 1(0),%r19 + stw %r19,32(0,%r4) + ldw 16(0,%r4),%r19 + comiclr,= 0,%r19,0 + bl L$0124,0 + nop + ldil L'LC$0021,%r26 + ldo R'LC$0021(%r26),%r26 + ldw 12(0,%r4),%r25 + .CALL ARGW0=GR,ARGW1=GR + bl error,2 + nop +L$0124: + ldw 16(0,%r4),%r26 + ldo 40(0),%r25 + .CALL ARGW0=GR,ARGW1=GR + bl strchr,2 + nop + copy %r28,%r19 + ldo 1(%r19),%r20 + stw %r20,20(0,%r4) + ldw 20(0,%r4),%r19 + stw %r19,24(0,%r4) +L$0125: + ldw 24(0,%r4),%r19 + ldb 0(0,%r19),%r20 + extrs %r20,31,8,%r19 + comiclr,<> 0,%r19,0 + bl L$0126,0 + nop + ldw 24(0,%r4),%r19 + ldb 0(0,%r19),%r20 + extrs %r20,31,8,%r19 + ldo 40(0),%r20 + comclr,= %r19,%r20,0 + bl L$0127,0 + nop + ldw 28(0,%r4),%r19 + ldo 1(%r19),%r20 + stw %r20,28(0,%r4) + bl,n L$0128,0 +L$0127: + ldw 24(0,%r4),%r19 + ldb 0(0,%r19),%r20 + extrs %r20,31,8,%r19 + ldo 41(0),%r20 + comclr,= %r19,%r20,0 + bl L$0129,0 + nop + ldw 28(0,%r4),%r19 + ldo -1(%r19),%r20 + stw %r20,28(0,%r4) + bl,n L$0130,0 +L$0129: + ldw 24(0,%r4),%r19 + ldb 0(0,%r19),%r20 + extrs %r20,31,8,%r19 + ldo 44(0),%r20 + comclr,= %r19,%r20,0 + bl L$0131,0 + nop + ldw 28(0,%r4),%r19 + comiclr,= 0,%r19,0 + bl L$0131,0 + nop + ldw 32(0,%r4),%r19 + ldo 1(%r19),%r20 + stw %r20,32(0,%r4) +L$0131: +L$0130: +L$0128: + ldw 24(0,%r4),%r19 + ldo 1(%r19),%r20 + stw %r20,24(0,%r4) + bl,n L$0125,0 +L$0126: + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 12(0,%r19),%r20 + comiclr,<> 0,%r20,0 + bl L$0137,0 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 12(0,%r19),%r20 + ldo 120(%r20),%r19 + stw %r19,44(0,%r4) + ldw 44(0,%r4),%r19 + stw %r19,48(0,%r4) + ldw 32(0,%r4),%r20 + ldo 2(%r20),%r19 + zdep %r19,29,30,%r20 + stw %r20,52(0,%r4) + ldw 48(0,%r4),%r19 + ldw 48(0,%r4),%r20 + ldw 16(0,%r19),%r19 + ldw 12(0,%r20),%r20 + sub %r19,%r20,%r19 + ldw 52(0,%r4),%r20 + comclr,< %r19,%r20,0 + bl L$0132,0 + nop + ldw 48(0,%r4),%r26 + ldw 52(0,%r4),%r25 + .CALL ARGW0=GR,ARGW1=GR + bl _obstack_newchunk,2 + nop + copy 0,%r19 + bl,n L$0133,0 +L$0132: + copy 0,%r19 +L$0133: + ldw 48(0,%r4),%r19 + ldw 48(0,%r4),%r20 + ldw 12(0,%r20),%r21 + ldw 52(0,%r4),%r22 + add %r21,%r22,%r20 + copy %r20,%r21 + stw %r21,12(0,%r19) + ldw 44(0,%r4),%r19 + stw %r19,56(0,%r4) + ldw 56(0,%r4),%r19 + ldw 8(0,%r19),%r20 + stw %r20,60(0,%r4) + ldw 56(0,%r4),%r19 + ldw 12(0,%r19),%r20 + ldw 60(0,%r4),%r19 + comclr,= %r20,%r19,0 + bl L$0134,0 + nop + ldw 56(0,%r4),%r19 + ldw 40(0,%r19),%r20 + copy %r20,%r21 + depi -1,1,1,%r21 + stw %r21,40(0,%r19) +L$0134: + ldw 56(0,%r4),%r19 + ldw 56(0,%r4),%r20 + ldw 56(0,%r4),%r21 + ldw 12(0,%r20),%r20 + ldw 24(0,%r21),%r21 + add %r20,%r21,%r20 + ldw 56(0,%r4),%r21 + ldw 24(0,%r21),%r22 + uaddcm 0,%r22,%r21 + and %r20,%r21,%r20 + copy %r20,%r21 + stw %r21,12(0,%r19) + ldw 56(0,%r4),%r19 + ldw 56(0,%r4),%r20 + ldw 12(0,%r19),%r19 + ldw 4(0,%r20),%r20 + sub %r19,%r20,%r19 + ldw 56(0,%r4),%r20 + ldw 56(0,%r4),%r21 + ldw 16(0,%r20),%r20 + ldw 4(0,%r21),%r21 + sub %r20,%r21,%r20 + comclr,> %r19,%r20,0 + bl L$0135,0 + nop + ldw 56(0,%r4),%r19 + ldw 56(0,%r4),%r20 + ldw 16(0,%r20),%r21 + stw %r21,12(0,%r19) + copy %r21,%r19 + bl,n L$0136,0 +L$0135: + copy 0,%r19 +L$0136: + ldw 56(0,%r4),%r19 + ldw 56(0,%r4),%r20 + ldw 12(0,%r20),%r21 + stw %r21,8(0,%r19) + ldw 60(0,%r4),%r11 + bl,n L$0138,0 +L$0137: + ldw 32(0,%r4),%r20 + ldo 2(%r20),%r19 + zdep %r19,29,30,%r20 + copy %r20,%r26 + .CALL ARGW0=GR + bl xmalloc,2 + nop + copy %r28,%r11 +L$0138: + stw %r11,36(0,%r4) + ldw 20(0,%r4),%r19 + stw %r19,24(0,%r4) + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r26 + .CALL ARGW0=GR + bl lookup_pointer_type,2 + nop + copy %r28,%r19 + ldw 36(0,%r4),%r20 + stw %r19,0(0,%r20) + ldo 1(0),%r19 + stw %r19,32(0,%r4) + ldw 24(0,%r4),%r19 + ldb 0(0,%r19),%r20 + extrs %r20,31,8,%r19 + ldo 41(0),%r20 + comclr,<> %r19,%r20,0 + bl L$0139,0 + nop + stw 0,28(0,%r4) +L$0140: + ldw 24(0,%r4),%r19 + ldb 0(0,%r19),%r20 + extrs %r20,31,8,%r19 + comiclr,<> 0,%r19,0 + bl L$0141,0 + nop + ldw 28(0,%r4),%r19 + comiclr,>= 0,%r19,0 + bl L$0142,0 + nop + ldw 24(0,%r4),%r19 + ldb 0(0,%r19),%r20 + extrs %r20,31,8,%r19 + ldo 44(0),%r20 + comclr,<> %r19,%r20,0 + bl L$0143,0 + nop + ldw 24(0,%r4),%r19 + ldb 0(0,%r19),%r20 + extrs %r20,31,8,%r19 + ldo 41(0),%r20 + comclr,<> %r19,%r20,0 + bl L$0143,0 + nop + bl,n L$0142,0 +L$0143: + ldw 24(0,%r4),%r19 + ldw 20(0,%r4),%r20 + sub %r19,%r20,%r19 + ldw 20(0,%r4),%r26 + copy %r19,%r25 + .CALL ARGW0=GR,ARGW1=GR + bl parse_and_eval_type,2 + nop + copy %r28,%r19 + ldw 32(0,%r4),%r20 + zdep %r20,29,30,%r21 + ldw 36(0,%r4),%r22 + add %r21,%r22,%r20 + stw %r19,0(0,%r20) + ldw 32(0,%r4),%r19 + ldo 1(%r19),%r20 + stw %r20,32(0,%r4) + ldw 24(0,%r4),%r19 + ldo 1(%r19),%r20 + stw %r20,20(0,%r4) +L$0142: + ldw 24(0,%r4),%r19 + ldb 0(0,%r19),%r20 + extrs %r20,31,8,%r19 + ldo 40(0),%r20 + comclr,= %r19,%r20,0 + bl L$0144,0 + nop + ldw 28(0,%r4),%r19 + ldo 1(%r19),%r20 + stw %r20,28(0,%r4) + bl,n L$0145,0 +L$0144: + ldw 24(0,%r4),%r19 + ldb 0(0,%r19),%r20 + extrs %r20,31,8,%r19 + ldo 41(0),%r20 + comclr,= %r19,%r20,0 + bl L$0146,0 + nop + ldw 28(0,%r4),%r19 + ldo -1(%r19),%r20 + stw %r20,28(0,%r4) +L$0146: +L$0145: + ldw 24(0,%r4),%r19 + ldo 1(%r19),%r20 + stw %r20,24(0,%r4) + bl,n L$0140,0 +L$0141: +L$0139: + ldo -2(0),%r19 + ldw 24(0,%r4),%r20 + add %r19,%r20,%r19 + ldb 0(0,%r19),%r20 + extrs %r20,31,8,%r19 + ldo 46(0),%r20 + comclr,<> %r19,%r20,0 + bl L$0147,0 + nop + ldw 32(0,%r4),%r19 + zdep %r19,29,30,%r20 + ldw 36(0,%r4),%r21 + add %r20,%r21,%r19 + addil L'builtin_type_void-$global$,%r27 + ldw R'builtin_type_void-$global$(%r1),%r20 + stw %r20,0(0,%r19) + bl,n L$0148,0 +L$0147: + ldw 32(0,%r4),%r19 + zdep %r19,29,30,%r20 + ldw 36(0,%r4),%r21 + add %r20,%r21,%r19 + stw 0,0(0,%r19) +L$0148: + ldw 16(0,%r4),%r26 + .CALL ARGW0=GR + bl free,2 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + ldw 48(0,%r20),%r19 + ldo -8(0),%r20 + ldo -32(%r4),%r21 + add %r21,%r20,%r20 + ldw 0(0,%r20),%r21 + zdep %r21,30,31,%r20 + add %r20,%r21,%r20 + zdep %r20,29,30,%r20 + ldw 20(0,%r19),%r21 + add %r20,%r21,%r19 + ldw 8(0,%r19),%r20 + stw %r20,8(0,%r4) + ldo -12(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + zdep %r20,29,30,%r19 + add %r19,%r20,%r19 + zdep %r19,29,30,%r19 + ldw 8(0,%r4),%r20 + add %r19,%r20,%r19 + ldw 12(0,%r4),%r20 + stw %r20,0(0,%r19) + ldo -12(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + zdep %r20,29,30,%r19 + add %r19,%r20,%r19 + zdep %r19,29,30,%r19 + ldw 8(0,%r4),%r20 + add %r19,%r20,%r19 + ldw 4(0,%r19),%r20 + stw %r20,40(0,%r4) + ldw 40(0,%r4),%r19 + ldo -4(0),%r20 + ldo -32(%r4),%r21 + add %r21,%r20,%r20 + ldw 0(0,%r20),%r21 + stw %r21,40(0,%r19) + ldw 40(0,%r4),%r19 + ldw 36(0,%r4),%r20 + stw %r20,48(0,%r19) + ldw 40(0,%r4),%r19 + ldw 40(0,%r4),%r20 + ldh 32(0,%r20),%r21 + copy %r21,%r20 + depi 0,29,1,%r20 + sth %r20,32(0,%r19) + ldo -12(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + zdep %r20,29,30,%r19 + add %r19,%r20,%r19 + zdep %r19,29,30,%r19 + ldw 8(0,%r4),%r20 + add %r19,%r20,%r19 + ldw 16(0,%r19),%r20 + copy %r20,%r21 + depi 0,4,1,%r21 + stw %r21,16(0,%r19) +L$0123: + ldw 64(0,4),11 + ldw 68(0,4),10 + ldw 72(0,4),9 + ldw 76(0,4),8 + ldw 80(0,4),7 + ldw 84(0,4),6 + ldw 88(0,4),5 + ldo 8(4),30 + ldw -28(0,30),2 + bv 0(2) + ldwm -8(30),4 + .EXIT + .PROCEND + .align 4 + .EXPORT allocate_cplus_struct_type,CODE + .EXPORT allocate_cplus_struct_type,ENTRY,PRIV_LEV=3,ARGW0=GR +allocate_cplus_struct_type: + .PROC + .CALLINFO FRAME=192,CALLS,SAVE_RP + .ENTRY + stw 2,-20(0,30) + copy 4,1 + copy 30,4 + stwm 1,192(0,30) + stw 8,32(0,4) + stw 7,36(0,4) + stw 6,40(0,4) + stw 5,44(0,4) + ldo -4(0),%r5 + ldo -32(%r4),%r19 + add %r19,%r5,%r6 + stw %r26,0(0,%r6) + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + ldw 48(0,%r20),%r19 + ldil L'cplus_struct_default,%r20 + ldo R'cplus_struct_default(%r20),%r20 + comclr,= %r19,%r20,0 + bl L$0150,0 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r7 + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 12(0,%r19),%r20 + comiclr,<> 0,%r20,0 + bl L$0156,0 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 12(0,%r19),%r20 + ldo 120(%r20),%r19 + stw %r19,8(0,%r4) + ldw 8(0,%r4),%r19 + stw %r19,12(0,%r4) + ldo 24(0),%r19 + stw %r19,16(0,%r4) + ldw 12(0,%r4),%r19 + ldw 12(0,%r4),%r20 + ldw 16(0,%r19),%r19 + ldw 12(0,%r20),%r20 + sub %r19,%r20,%r19 + ldw 16(0,%r4),%r20 + comclr,< %r19,%r20,0 + bl L$0151,0 + nop + ldw 12(0,%r4),%r26 + ldw 16(0,%r4),%r25 + .CALL ARGW0=GR,ARGW1=GR + bl _obstack_newchunk,2 + nop + copy 0,%r19 + bl,n L$0152,0 +L$0151: + copy 0,%r19 +L$0152: + ldw 12(0,%r4),%r19 + ldw 12(0,%r4),%r20 + ldw 12(0,%r20),%r21 + ldw 16(0,%r4),%r22 + add %r21,%r22,%r20 + copy %r20,%r21 + stw %r21,12(0,%r19) + ldw 8(0,%r4),%r19 + stw %r19,20(0,%r4) + ldw 20(0,%r4),%r19 + ldw 8(0,%r19),%r20 + stw %r20,24(0,%r4) + ldw 20(0,%r4),%r19 + ldw 12(0,%r19),%r20 + ldw 24(0,%r4),%r19 + comclr,= %r20,%r19,0 + bl L$0153,0 + nop + ldw 20(0,%r4),%r19 + ldw 40(0,%r19),%r20 + copy %r20,%r21 + depi -1,1,1,%r21 + stw %r21,40(0,%r19) +L$0153: + ldw 20(0,%r4),%r19 + ldw 20(0,%r4),%r20 + ldw 20(0,%r4),%r21 + ldw 12(0,%r20),%r20 + ldw 24(0,%r21),%r21 + add %r20,%r21,%r20 + ldw 20(0,%r4),%r21 + ldw 24(0,%r21),%r22 + uaddcm 0,%r22,%r21 + and %r20,%r21,%r20 + copy %r20,%r21 + stw %r21,12(0,%r19) + ldw 20(0,%r4),%r19 + ldw 20(0,%r4),%r20 + ldw 12(0,%r19),%r19 + ldw 4(0,%r20),%r20 + sub %r19,%r20,%r19 + ldw 20(0,%r4),%r20 + ldw 20(0,%r4),%r21 + ldw 16(0,%r20),%r20 + ldw 4(0,%r21),%r21 + sub %r20,%r21,%r20 + comclr,> %r19,%r20,0 + bl L$0154,0 + nop + ldw 20(0,%r4),%r19 + ldw 20(0,%r4),%r20 + ldw 16(0,%r20),%r21 + stw %r21,12(0,%r19) + copy %r21,%r19 + bl,n L$0155,0 +L$0154: + copy 0,%r19 +L$0155: + ldw 20(0,%r4),%r19 + ldw 20(0,%r4),%r20 + ldw 12(0,%r20),%r21 + stw %r21,8(0,%r19) + ldw 24(0,%r4),%r8 + bl,n L$0157,0 +L$0156: + ldo 24(0),%r26 + .CALL ARGW0=GR + bl xmalloc,2 + nop + copy %r28,%r8 +L$0157: + stw %r8,48(0,%r7) + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 48(0,%r19),%r20 + ldil L'cplus_struct_default,%r19 + copy %r20,%r21 + ldo R'cplus_struct_default(%r19),%r22 + ldws,ma 4(0,%r22),%r19 + ldws,ma 4(0,%r22),%r20 + stws,ma %r19,4(0,%r21) + ldws,ma 4(0,%r22),%r19 + stws,ma %r20,4(0,%r21) + ldws,ma 4(0,%r22),%r20 + stws,ma %r19,4(0,%r21) + ldws,ma 4(0,%r22),%r19 + stws,ma %r20,4(0,%r21) + ldws,ma 4(0,%r22),%r20 + stws,ma %r19,4(0,%r21) + stw %r20,0(0,%r21) +L$0150: +L$0149: + ldw 32(0,4),8 + ldw 36(0,4),7 + ldw 40(0,4),6 + ldw 44(0,4),5 + ldo 8(4),30 + ldw -28(0,30),2 + bv 0(2) + ldwm -8(30),4 + .EXIT + .PROCEND + .IMPORT obsavestring,CODE + .align 4 + .EXPORT init_type,CODE + .EXPORT init_type,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR,RTNVAL=GR +init_type: + .PROC + .CALLINFO FRAME=192,CALLS,SAVE_RP + .ENTRY + stw 2,-20(0,30) + copy 4,1 + copy 30,4 + stwm 1,192(0,30) + stw 14,8(0,4) + stw 13,12(0,4) + stw 12,16(0,4) + stw 11,20(0,4) + stw 10,24(0,4) + stw 9,28(0,4) + stw 8,32(0,4) + stw 7,36(0,4) + stw 6,40(0,4) + stw 5,44(0,4) + ldo -4(0),%r5 + ldo -32(%r4),%r19 + add %r19,%r5,%r6 + stw %r26,0(0,%r6) + ldo -8(0),%r7 + ldo -32(%r4),%r19 + add %r19,%r7,%r8 + stw %r25,0(0,%r8) + ldo -12(0),%r9 + ldo -32(%r4),%r19 + add %r19,%r9,%r10 + stw %r24,0(0,%r10) + ldo -16(0),%r11 + ldo -32(%r4),%r19 + add %r19,%r11,%r12 + stw %r23,0(0,%r12) + ldo -20(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r26 + .CALL ARGW0=GR + bl alloc_type,2 + nop + copy %r28,%r13 + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + stw %r20,0(0,%r13) + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + stw %r20,8(0,%r13) + ldo -12(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldh 32(0,%r13),%r20 + ldh 2(0,%r19),%r19 + or %r20,%r19,%r20 + sth %r20,32(0,%r13) + ldo -16(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + comiclr,<> 0,%r20,0 + bl L$0159,0 + nop + ldo -20(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + comiclr,<> 0,%r20,0 + bl L$0159,0 + nop + ldo -16(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r14 + ldo -16(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r26 + .CALL ARGW0=GR + bl strlen,2 + nop + copy %r28,%r19 + ldo -20(0),%r20 + ldo -32(%r4),%r21 + add %r21,%r20,%r20 + ldw 0(0,%r20),%r21 + ldo 120(%r21),%r20 + ldw 0(0,%r14),%r26 + copy %r19,%r25 + copy %r20,%r24 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl obsavestring,2 + nop + copy %r28,%r19 + stw %r19,4(0,%r13) + bl,n L$0160,0 +L$0159: + ldo -16(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + stw %r20,4(0,%r13) +L$0160: + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + comiclr,<> 3,%r20,0 + bl L$0162,0 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + comiclr,<> 4,%r20,0 + bl L$0162,0 + nop + bl,n L$0161,0 +L$0162: + ldil L'cplus_struct_default,%r19 + ldo R'cplus_struct_default(%r19),%r19 + stw %r19,48(0,%r13) +L$0161: + copy %r13,%r28 + bl,n L$0158,0 +L$0158: + ldw 8(0,4),14 + ldw 12(0,4),13 + ldw 16(0,4),12 + ldw 20(0,4),11 + ldw 24(0,4),10 + ldw 28(0,4),9 + ldw 32(0,4),8 + ldw 36(0,4),7 + ldw 40(0,4),6 + ldw 44(0,4),5 + ldo 8(4),30 + ldw -28(0,30),2 + bv 0(2) + ldwm -8(30),4 + .EXIT + .PROCEND + .align 4 +LC$0022: + .STRING "internal error - invalid fundamental type id %d\x00" + .align 4 +LC$0023: + .STRING "internal error: unhandled type id %d\x00" + .align 4 +LC$0024: + .STRING "void\x00" + .align 4 +LC$0025: + .STRING "boolean\x00" + .align 4 +LC$0026: + .STRING "string\x00" + .align 4 +LC$0027: + .STRING "char\x00" + .align 4 +LC$0028: + .STRING "signed char\x00" + .align 4 +LC$0029: + .STRING "unsigned char\x00" + .align 4 +LC$0030: + .STRING "short\x00" + .align 4 +LC$0031: + .STRING "unsigned short\x00" + .align 4 +LC$0032: + .STRING "int\x00" + .align 4 +LC$0033: + .STRING "unsigned int\x00" + .align 4 +LC$0034: + .STRING "fixed decimal\x00" + .align 4 +LC$0035: + .STRING "long\x00" + .align 4 +LC$0036: + .STRING "unsigned long\x00" + .align 4 +LC$0037: + .STRING "long long\x00" + .align 4 +LC$0038: + .STRING "signed long long\x00" + .align 4 +LC$0039: + .STRING "unsigned long long\x00" + .align 4 +LC$0040: + .STRING "float\x00" + .align 4 +LC$0041: + .STRING "double\x00" + .align 4 +LC$0042: + .STRING "floating decimal\x00" + .align 4 +LC$0043: + .STRING "long double\x00" + .align 4 +LC$0044: + .STRING "complex\x00" + .align 4 +LC$0045: + .STRING "double complex\x00" + .align 4 +LC$0046: + .STRING "long double complex\x00" + .align 4 + .EXPORT lookup_fundamental_type,CODE + .EXPORT lookup_fundamental_type,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,RTNVAL=GR +lookup_fundamental_type: + .PROC + .CALLINFO FRAME=192,CALLS,SAVE_RP + .ENTRY + stw 2,-20(0,30) + copy 4,1 + copy 30,4 + stwm 1,192(0,30) + stw 12,32(0,4) + stw 11,36(0,4) + stw 10,40(0,4) + stw 9,44(0,4) + stw 8,48(0,4) + stw 7,52(0,4) + stw 6,56(0,4) + stw 5,60(0,4) + ldo -4(0),%r5 + ldo -32(%r4),%r19 + add %r19,%r5,%r6 + stw %r26,0(0,%r6) + ldo -8(0),%r7 + ldo -32(%r4),%r19 + add %r19,%r7,%r8 + stw %r25,0(0,%r8) + copy 0,%r9 + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + comiclr,<= 0,%r20,0 + bl L$0165,0 + nop + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + ldo 25(0),%r19 + comclr,<= %r20,%r19,0 + bl L$0165,0 + nop + bl,n L$0164,0 +L$0165: + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldil L'LC$0022,%r26 + ldo R'LC$0022(%r26),%r26 + ldw 0(0,%r19),%r25 + .CALL ARGW0=GR,ARGW1=GR + bl error,2 + nop + bl,n L$0166,0 +L$0164: + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 196(0,%r19),%r20 + comiclr,= 0,%r20,0 + bl L$0167,0 + nop + ldo 104(0),%r11 + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r12 + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldo 120(%r19),%r20 + stw %r20,8(0,%r4) + ldw 8(0,%r4),%r19 + stw %r19,12(0,%r4) + stw %r11,16(0,%r4) + ldw 12(0,%r4),%r19 + ldw 12(0,%r4),%r20 + ldw 16(0,%r19),%r19 + ldw 12(0,%r20),%r20 + sub %r19,%r20,%r19 + ldw 16(0,%r4),%r20 + comclr,< %r19,%r20,0 + bl L$0168,0 + nop + ldw 12(0,%r4),%r26 + ldw 16(0,%r4),%r25 + .CALL ARGW0=GR,ARGW1=GR + bl _obstack_newchunk,2 + nop + copy 0,%r19 + bl,n L$0169,0 +L$0168: + copy 0,%r19 +L$0169: + ldw 12(0,%r4),%r19 + ldw 12(0,%r4),%r20 + ldw 12(0,%r20),%r21 + ldw 16(0,%r4),%r22 + add %r21,%r22,%r20 + copy %r20,%r21 + stw %r21,12(0,%r19) + ldw 8(0,%r4),%r19 + stw %r19,20(0,%r4) + ldw 20(0,%r4),%r19 + ldw 8(0,%r19),%r20 + stw %r20,24(0,%r4) + ldw 20(0,%r4),%r19 + ldw 12(0,%r19),%r20 + ldw 24(0,%r4),%r19 + comclr,= %r20,%r19,0 + bl L$0170,0 + nop + ldw 20(0,%r4),%r19 + ldw 40(0,%r19),%r20 + copy %r20,%r21 + depi -1,1,1,%r21 + stw %r21,40(0,%r19) +L$0170: + ldw 20(0,%r4),%r19 + ldw 20(0,%r4),%r20 + ldw 20(0,%r4),%r21 + ldw 12(0,%r20),%r20 + ldw 24(0,%r21),%r21 + add %r20,%r21,%r20 + ldw 20(0,%r4),%r21 + ldw 24(0,%r21),%r22 + uaddcm 0,%r22,%r21 + and %r20,%r21,%r20 + copy %r20,%r21 + stw %r21,12(0,%r19) + ldw 20(0,%r4),%r19 + ldw 20(0,%r4),%r20 + ldw 12(0,%r19),%r19 + ldw 4(0,%r20),%r20 + sub %r19,%r20,%r19 + ldw 20(0,%r4),%r20 + ldw 20(0,%r4),%r21 + ldw 16(0,%r20),%r20 + ldw 4(0,%r21),%r21 + sub %r20,%r21,%r20 + comclr,> %r19,%r20,0 + bl L$0171,0 + nop + ldw 20(0,%r4),%r19 + ldw 20(0,%r4),%r20 + ldw 16(0,%r20),%r21 + stw %r21,12(0,%r19) + copy %r21,%r19 + bl,n L$0172,0 +L$0171: + copy 0,%r19 +L$0172: + ldw 20(0,%r4),%r19 + ldw 20(0,%r4),%r20 + ldw 12(0,%r20),%r21 + stw %r21,8(0,%r19) + ldw 24(0,%r4),%r19 + stw %r19,196(0,%r12) + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 196(0,%r19),%r26 + copy 0,%r25 + copy %r11,%r24 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl memset,2 + nop +L$0167: + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldo -8(0),%r20 + ldo -32(%r4),%r21 + add %r21,%r20,%r20 + ldw 0(0,%r20),%r21 + zdep %r21,29,30,%r20 + ldw 196(0,%r19),%r19 + add %r20,%r19,%r10 + ldw 0(0,%r10),%r9 + comiclr,= 0,%r9,0 + bl L$0173,0 + nop + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + addi,uv -26,%r20,0 + blr,n %r20,0 + b,n L$0175 +L$0202: + b L$0176 + nop + b L$0177 + nop + b L$0179 + nop + b L$0180 + nop + b L$0181 + nop + b L$0182 + nop + b L$0183 + nop + b L$0184 + nop + b L$0185 + nop + b L$0186 + nop + b L$0187 + nop + b L$0189 + nop + b L$0190 + nop + b L$0191 + nop + b L$0192 + nop + b L$0193 + nop + b L$0194 + nop + b L$0195 + nop + b L$0196 + nop + b L$0198 + nop + b L$0199 + nop + b L$0200 + nop + b L$0201 + nop + b L$0178 + nop + b L$0188 + nop + b L$0197 + nop +L$0175: + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldil L'LC$0023,%r26 + ldo R'LC$0023(%r26),%r26 + ldw 0(0,%r19),%r25 + .CALL ARGW0=GR,ARGW1=GR + bl error,2 + nop + bl,n L$0174,0 +L$0176: + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + stw %r20,-52(0,%r30) + ldo 9(0),%r26 + ldo 1(0),%r25 + copy 0,%r24 + ldil L'LC$0024,%r23 + ldo R'LC$0024(%r23),%r23 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl init_type,2 + nop + copy %r28,%r9 + bl,n L$0174,0 +L$0177: + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + stw %r20,-52(0,%r30) + ldo 7(0),%r26 + ldo 4(0),%r25 + ldo 1(0),%r24 + ldil L'LC$0025,%r23 + ldo R'LC$0025(%r23),%r23 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl init_type,2 + nop + copy %r28,%r9 + bl,n L$0174,0 +L$0178: + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + stw %r20,-52(0,%r30) + ldo 12(0),%r26 + ldo 1(0),%r25 + copy 0,%r24 + ldil L'LC$0026,%r23 + ldo R'LC$0026(%r23),%r23 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl init_type,2 + nop + copy %r28,%r9 + bl,n L$0174,0 +L$0179: + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + stw %r20,-52(0,%r30) + ldo 7(0),%r26 + ldo 1(0),%r25 + copy 0,%r24 + ldil L'LC$0027,%r23 + ldo R'LC$0027(%r23),%r23 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl init_type,2 + nop + copy %r28,%r9 + bl,n L$0174,0 +L$0180: + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + stw %r20,-52(0,%r30) + ldo 7(0),%r26 + ldo 1(0),%r25 + ldo 2(0),%r24 + ldil L'LC$0028,%r23 + ldo R'LC$0028(%r23),%r23 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl init_type,2 + nop + copy %r28,%r9 + bl,n L$0174,0 +L$0181: + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + stw %r20,-52(0,%r30) + ldo 7(0),%r26 + ldo 1(0),%r25 + ldo 1(0),%r24 + ldil L'LC$0029,%r23 + ldo R'LC$0029(%r23),%r23 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl init_type,2 + nop + copy %r28,%r9 + bl,n L$0174,0 +L$0182: + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + stw %r20,-52(0,%r30) + ldo 7(0),%r26 + ldo 2(0),%r25 + copy 0,%r24 + ldil L'LC$0030,%r23 + ldo R'LC$0030(%r23),%r23 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl init_type,2 + nop + copy %r28,%r9 + bl,n L$0174,0 +L$0183: + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + stw %r20,-52(0,%r30) + ldo 7(0),%r26 + ldo 2(0),%r25 + ldo 2(0),%r24 + ldil L'LC$0030,%r23 + ldo R'LC$0030(%r23),%r23 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl init_type,2 + nop + copy %r28,%r9 + bl,n L$0174,0 +L$0184: + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + stw %r20,-52(0,%r30) + ldo 7(0),%r26 + ldo 2(0),%r25 + ldo 1(0),%r24 + ldil L'LC$0031,%r23 + ldo R'LC$0031(%r23),%r23 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl init_type,2 + nop + copy %r28,%r9 + bl,n L$0174,0 +L$0185: + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + stw %r20,-52(0,%r30) + ldo 7(0),%r26 + ldo 4(0),%r25 + copy 0,%r24 + ldil L'LC$0032,%r23 + ldo R'LC$0032(%r23),%r23 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl init_type,2 + nop + copy %r28,%r9 + bl,n L$0174,0 +L$0186: + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + stw %r20,-52(0,%r30) + ldo 7(0),%r26 + ldo 4(0),%r25 + ldo 2(0),%r24 + ldil L'LC$0032,%r23 + ldo R'LC$0032(%r23),%r23 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl init_type,2 + nop + copy %r28,%r9 + bl,n L$0174,0 +L$0187: + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + stw %r20,-52(0,%r30) + ldo 7(0),%r26 + ldo 4(0),%r25 + ldo 1(0),%r24 + ldil L'LC$0033,%r23 + ldo R'LC$0033(%r23),%r23 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl init_type,2 + nop + copy %r28,%r9 + bl,n L$0174,0 +L$0188: + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + stw %r20,-52(0,%r30) + ldo 7(0),%r26 + ldo 4(0),%r25 + copy 0,%r24 + ldil L'LC$0034,%r23 + ldo R'LC$0034(%r23),%r23 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl init_type,2 + nop + copy %r28,%r9 + bl,n L$0174,0 +L$0189: + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + stw %r20,-52(0,%r30) + ldo 7(0),%r26 + ldo 4(0),%r25 + copy 0,%r24 + ldil L'LC$0035,%r23 + ldo R'LC$0035(%r23),%r23 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl init_type,2 + nop + copy %r28,%r9 + bl,n L$0174,0 +L$0190: + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + stw %r20,-52(0,%r30) + ldo 7(0),%r26 + ldo 4(0),%r25 + ldo 2(0),%r24 + ldil L'LC$0035,%r23 + ldo R'LC$0035(%r23),%r23 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl init_type,2 + nop + copy %r28,%r9 + bl,n L$0174,0 +L$0191: + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + stw %r20,-52(0,%r30) + ldo 7(0),%r26 + ldo 4(0),%r25 + ldo 1(0),%r24 + ldil L'LC$0036,%r23 + ldo R'LC$0036(%r23),%r23 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl init_type,2 + nop + copy %r28,%r9 + bl,n L$0174,0 +L$0192: + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + stw %r20,-52(0,%r30) + ldo 7(0),%r26 + ldo 8(0),%r25 + copy 0,%r24 + ldil L'LC$0037,%r23 + ldo R'LC$0037(%r23),%r23 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl init_type,2 + nop + copy %r28,%r9 + bl,n L$0174,0 +L$0193: + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + stw %r20,-52(0,%r30) + ldo 7(0),%r26 + ldo 8(0),%r25 + ldo 2(0),%r24 + ldil L'LC$0038,%r23 + ldo R'LC$0038(%r23),%r23 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl init_type,2 + nop + copy %r28,%r9 + bl,n L$0174,0 +L$0194: + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + stw %r20,-52(0,%r30) + ldo 7(0),%r26 + ldo 8(0),%r25 + ldo 1(0),%r24 + ldil L'LC$0039,%r23 + ldo R'LC$0039(%r23),%r23 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl init_type,2 + nop + copy %r28,%r9 + bl,n L$0174,0 +L$0195: + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + stw %r20,-52(0,%r30) + ldo 8(0),%r26 + ldo 4(0),%r25 + copy 0,%r24 + ldil L'LC$0040,%r23 + ldo R'LC$0040(%r23),%r23 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl init_type,2 + nop + copy %r28,%r9 + bl,n L$0174,0 +L$0196: + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + stw %r20,-52(0,%r30) + ldo 8(0),%r26 + ldo 8(0),%r25 + copy 0,%r24 + ldil L'LC$0041,%r23 + ldo R'LC$0041(%r23),%r23 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl init_type,2 + nop + copy %r28,%r9 + bl,n L$0174,0 +L$0197: + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + stw %r20,-52(0,%r30) + ldo 8(0),%r26 + ldo 8(0),%r25 + copy 0,%r24 + ldil L'LC$0042,%r23 + ldo R'LC$0042(%r23),%r23 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl init_type,2 + nop + copy %r28,%r9 + bl,n L$0174,0 +L$0198: + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + stw %r20,-52(0,%r30) + ldo 8(0),%r26 + ldo 16(0),%r25 + copy 0,%r24 + ldil L'LC$0043,%r23 + ldo R'LC$0043(%r23),%r23 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl init_type,2 + nop + copy %r28,%r9 + bl,n L$0174,0 +L$0199: + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + stw %r20,-52(0,%r30) + ldo 8(0),%r26 + ldo 8(0),%r25 + copy 0,%r24 + ldil L'LC$0044,%r23 + ldo R'LC$0044(%r23),%r23 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl init_type,2 + nop + copy %r28,%r9 + bl,n L$0174,0 +L$0200: + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + stw %r20,-52(0,%r30) + ldo 8(0),%r26 + ldo 16(0),%r25 + copy 0,%r24 + ldil L'LC$0045,%r23 + ldo R'LC$0045(%r23),%r23 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl init_type,2 + nop + copy %r28,%r9 + bl,n L$0174,0 +L$0201: + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + stw %r20,-52(0,%r30) + ldo 8(0),%r26 + ldo 16(0),%r25 + copy 0,%r24 + ldil L'LC$0046,%r23 + ldo R'LC$0046(%r23),%r23 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl init_type,2 + nop + copy %r28,%r9 + bl,n L$0174,0 +L$0174: + stw %r9,0(0,%r10) +L$0173: +L$0166: + copy %r9,%r28 + bl,n L$0163,0 +L$0163: + ldw 32(0,4),12 + ldw 36(0,4),11 + ldw 40(0,4),10 + ldw 44(0,4),9 + ldw 48(0,4),8 + ldw 52(0,4),7 + ldw 56(0,4),6 + ldw 60(0,4),5 + ldo 8(4),30 + ldw -28(0,30),2 + bv 0(2) + ldwm -8(30),4 + .EXIT + .PROCEND + .IMPORT puts_filtered,CODE + .align 4 +LC$0047: + .STRING " \x00" + .IMPORT printf_filtered,CODE + .align 4 +LC$0048: + .STRING "1\x00" + .align 4 +LC$0049: + .STRING "0\x00" + .align 4 +print_bit_vector: + .PROC + .CALLINFO FRAME=128,CALLS,SAVE_RP + .ENTRY + stw 2,-20(0,30) + copy 4,1 + copy 30,4 + stwm 1,128(0,30) + stw 8,16(0,4) + stw 7,20(0,4) + stw 6,24(0,4) + stw 5,28(0,4) + ldo -4(0),%r5 + ldo -32(%r4),%r19 + add %r19,%r5,%r6 + stw %r26,0(0,%r6) + ldo -8(0),%r7 + ldo -32(%r4),%r19 + add %r19,%r7,%r8 + stw %r25,0(0,%r8) + stw 0,8(0,%r4) +L$0204: + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 8(0,%r4),%r20 + ldw 0(0,%r19),%r19 + comclr,< %r20,%r19,0 + bl L$0205,0 + nop + ldw 8(0,%r4),%r19 + ldw 8(0,%r4),%r20 + comiclr,> 0,%r19,0 + bl L$0208,0 + nop + ldo 7(%r19),%r19 +L$0208: + extrs %r19,28,29,%r19 + zdep %r19,28,29,%r21 + sub %r20,%r21,%r19 + comiclr,= 0,%r19,0 + bl L$0207,0 + nop + ldil L'LC$0047,%r26 + ldo R'LC$0047(%r26),%r26 + .CALL ARGW0=GR + bl puts_filtered,2 + nop +L$0207: + ldw 8(0,%r4),%r20 + extrs %r20,28,29,%r19 + ldo -4(0),%r20 + ldo -32(%r4),%r21 + add %r21,%r20,%r20 + ldw 0(0,%r20),%r21 + add %r19,%r21,%r20 + ldb 0(0,%r20),%r19 + ldw 8(0,%r4),%r20 + extru %r20,31,3,%r21 + subi,>>= 31,%r21,%r20 + copy 0,%r20 + mtsar %r20 + vextrs %r19,32,%r19 + extru %r19,31,1,%r20 + comiclr,<> 0,%r20,0 + bl L$0209,0 + nop + ldil L'LC$0048,%r26 + ldo R'LC$0048(%r26),%r26 + .CALL ARGW0=GR + bl printf_filtered,2 + nop + bl,n L$0210,0 +L$0209: + ldil L'LC$0049,%r26 + ldo R'LC$0049(%r26),%r26 + .CALL ARGW0=GR + bl printf_filtered,2 + nop +L$0210: +L$0206: + ldw 8(0,%r4),%r19 + ldo 1(%r19),%r20 + stw %r20,8(0,%r4) + bl,n L$0204,0 +L$0205: +L$0203: + ldw 16(0,4),8 + ldw 20(0,4),7 + ldw 24(0,4),6 + ldw 28(0,4),5 + ldo 8(4),30 + ldw -28(0,30),2 + bv 0(2) + ldwm -8(30),4 + .EXIT + .PROCEND + .IMPORT recursive_dump_type,CODE + .align 4 +print_arg_types: + .PROC + .CALLINFO FRAME=128,CALLS,SAVE_RP + .ENTRY + stw 2,-20(0,30) + copy 4,1 + copy 30,4 + stwm 1,128(0,30) + stw 8,8(0,4) + stw 7,12(0,4) + stw 6,16(0,4) + stw 5,20(0,4) + ldo -4(0),%r5 + ldo -32(%r4),%r19 + add %r19,%r5,%r6 + stw %r26,0(0,%r6) + ldo -8(0),%r7 + ldo -32(%r4),%r19 + add %r19,%r7,%r8 + stw %r25,0(0,%r8) + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + comiclr,<> 0,%r20,0 + bl L$0212,0 + nop +L$0213: + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 0(0,%r19),%r20 + comiclr,<> 0,%r20,0 + bl L$0214,0 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldo -8(0),%r20 + ldo -32(%r4),%r21 + add %r21,%r20,%r20 + ldw 0(0,%r20),%r21 + ldo 2(%r21),%r20 + ldw 0(0,%r19),%r26 + copy %r20,%r25 + .CALL ARGW0=GR,ARGW1=GR + bl recursive_dump_type,2 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + ldo 4(%r20),%r21 + stw %r21,0(0,%r19) + ldw 0(0,%r20),%r19 + ldw 0(0,%r19),%r20 + comiclr,= 9,%r20,0 + bl L$0215,0 + nop + bl,n L$0214,0 +L$0215: + bl,n L$0213,0 +L$0214: +L$0212: +L$0211: + ldw 8(0,4),8 + ldw 12(0,4),7 + ldw 16(0,4),6 + ldw 20(0,4),5 + ldo 8(4),30 + ldw -28(0,30),2 + bv 0(2) + ldwm -8(30),4 + .EXIT + .PROCEND + .IMPORT printfi_filtered,CODE + .align 4 +LC$0050: + .STRING "fn_fieldlists 0x%x\x0a\x00" + .align 4 +LC$0051: + .STRING "[%d] name '%s' (0x%x) length %d\x0a\x00" + .align 4 +LC$0052: + .STRING "[%d] physname '%s' (0x%x)\x0a\x00" + .align 4 +LC$0053: + .STRING "type 0x%x\x0a\x00" + .align 4 +LC$0054: + .STRING "args 0x%x\x0a\x00" + .align 4 +LC$0055: + .STRING "fcontext 0x%x\x0a\x00" + .align 4 +LC$0056: + .STRING "is_const %d\x0a\x00" + .align 4 +LC$0057: + .STRING "is_volatile %d\x0a\x00" + .align 4 +LC$0058: + .STRING "is_private %d\x0a\x00" + .align 4 +LC$0059: + .STRING "is_protected %d\x0a\x00" + .align 4 +LC$0060: + .STRING "is_stub %d\x0a\x00" + .align 4 +LC$0061: + .STRING "voffset %u\x0a\x00" + .align 4 +dump_fn_fieldlists: + .PROC + .CALLINFO FRAME=192,CALLS,SAVE_RP + .ENTRY + stw 2,-20(0,30) + copy 4,1 + copy 30,4 + stwm 1,192(0,30) + stw 8,24(0,4) + stw 7,28(0,4) + stw 6,32(0,4) + stw 5,36(0,4) + ldo -4(0),%r5 + ldo -32(%r4),%r19 + add %r19,%r5,%r6 + stw %r26,0(0,%r6) + ldo -8(0),%r7 + ldo -32(%r4),%r19 + add %r19,%r7,%r8 + stw %r25,0(0,%r8) + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldo -4(0),%r20 + ldo -32(%r4),%r21 + add %r21,%r20,%r20 + ldw 0(0,%r20),%r21 + ldw 48(0,%r21),%r20 + ldw 0(0,%r19),%r26 + ldil L'LC$0050,%r25 + ldo R'LC$0050(%r25),%r25 + ldw 20(0,%r20),%r24 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl printfi_filtered,2 + nop + stw 0,8(0,%r4) +L$0217: + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 48(0,%r19),%r20 + ldh 2(0,%r20),%r21 + extrs %r21,31,16,%r19 + ldw 8(0,%r4),%r20 + comclr,< %r20,%r19,0 + bl L$0218,0 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + ldw 48(0,%r20),%r19 + ldw 8(0,%r4),%r21 + zdep %r21,30,31,%r20 + add %r20,%r21,%r20 + zdep %r20,29,30,%r20 + ldw 20(0,%r19),%r21 + add %r20,%r21,%r19 + ldw 8(0,%r19),%r20 + stw %r20,16(0,%r4) + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + ldo 2(%r20),%r19 + ldo -4(0),%r20 + ldo -32(%r4),%r21 + add %r21,%r20,%r20 + ldw 0(0,%r20),%r21 + ldw 48(0,%r21),%r20 + ldw 8(0,%r4),%r22 + zdep %r22,30,31,%r21 + add %r21,%r22,%r21 + zdep %r21,29,30,%r21 + ldw 20(0,%r20),%r22 + add %r21,%r22,%r20 + ldo -4(0),%r21 + ldo -32(%r4),%r22 + add %r22,%r21,%r21 + ldw 0(0,%r21),%r22 + ldw 48(0,%r22),%r21 + ldw 8(0,%r4),%r23 + zdep %r23,30,31,%r22 + add %r22,%r23,%r22 + zdep %r22,29,30,%r22 + ldw 20(0,%r21),%r23 + add %r22,%r23,%r21 + ldw 0(0,%r21),%r22 + stw %r22,-52(0,%r30) + ldo -4(0),%r21 + ldo -32(%r4),%r22 + add %r22,%r21,%r21 + ldw 0(0,%r21),%r22 + ldw 48(0,%r22),%r21 + ldw 8(0,%r4),%r23 + zdep %r23,30,31,%r22 + add %r22,%r23,%r22 + zdep %r22,29,30,%r22 + ldw 20(0,%r21),%r23 + add %r22,%r23,%r21 + ldw 4(0,%r21),%r22 + stw %r22,-56(0,%r30) + copy %r19,%r26 + ldil L'LC$0051,%r25 + ldo R'LC$0051(%r25),%r25 + ldw 8(0,%r4),%r24 + ldw 0(0,%r20),%r23 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl printfi_filtered,2 + nop + stw 0,12(0,%r4) +L$0220: + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + ldw 48(0,%r20),%r19 + ldw 8(0,%r4),%r21 + zdep %r21,30,31,%r20 + add %r20,%r21,%r20 + zdep %r20,29,30,%r20 + ldw 20(0,%r19),%r21 + add %r20,%r21,%r19 + ldw 12(0,%r4),%r20 + ldw 4(0,%r19),%r19 + comclr,< %r20,%r19,0 + bl L$0221,0 + nop + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + ldo 4(%r20),%r19 + ldw 12(0,%r4),%r21 + zdep %r21,29,30,%r20 + add %r20,%r21,%r20 + zdep %r20,29,30,%r20 + ldw 16(0,%r4),%r21 + add %r20,%r21,%r20 + ldw 12(0,%r4),%r22 + zdep %r22,29,30,%r21 + add %r21,%r22,%r21 + zdep %r21,29,30,%r21 + ldw 16(0,%r4),%r22 + add %r21,%r22,%r21 + ldw 0(0,%r21),%r22 + stw %r22,-52(0,%r30) + copy %r19,%r26 + ldil L'LC$0052,%r25 + ldo R'LC$0052(%r25),%r25 + ldw 12(0,%r4),%r24 + ldw 0(0,%r20),%r23 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl printfi_filtered,2 + nop + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + ldo 8(%r20),%r19 + ldw 12(0,%r4),%r21 + zdep %r21,29,30,%r20 + add %r20,%r21,%r20 + zdep %r20,29,30,%r20 + ldw 16(0,%r4),%r21 + add %r20,%r21,%r20 + copy %r19,%r26 + ldil L'LC$0053,%r25 + ldo R'LC$0053(%r25),%r25 + ldw 4(0,%r20),%r24 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl printfi_filtered,2 + nop + ldw 12(0,%r4),%r20 + zdep %r20,29,30,%r19 + add %r19,%r20,%r19 + zdep %r19,29,30,%r19 + ldw 16(0,%r4),%r20 + add %r19,%r20,%r19 + ldo -8(0),%r20 + ldo -32(%r4),%r21 + add %r21,%r20,%r20 + ldw 0(0,%r20),%r21 + ldo 10(%r21),%r20 + ldw 4(0,%r19),%r26 + copy %r20,%r25 + .CALL ARGW0=GR,ARGW1=GR + bl recursive_dump_type,2 + nop + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + ldo 8(%r20),%r19 + ldw 12(0,%r4),%r21 + zdep %r21,29,30,%r20 + add %r20,%r21,%r20 + zdep %r20,29,30,%r20 + ldw 16(0,%r4),%r22 + add %r20,%r22,%r21 + ldw 4(0,%r21),%r20 + copy %r19,%r26 + ldil L'LC$0054,%r25 + ldo R'LC$0054(%r25),%r25 + ldw 48(0,%r20),%r24 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl printfi_filtered,2 + nop + ldw 12(0,%r4),%r20 + zdep %r20,29,30,%r19 + add %r19,%r20,%r19 + zdep %r19,29,30,%r19 + ldw 16(0,%r4),%r21 + add %r19,%r21,%r20 + ldw 4(0,%r20),%r19 + ldo -8(0),%r20 + ldo -32(%r4),%r21 + add %r21,%r20,%r20 + ldw 48(0,%r19),%r26 + ldw 0(0,%r20),%r25 + .CALL ARGW0=GR,ARGW1=GR + bl print_arg_types,2 + nop + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + ldo 8(%r20),%r19 + ldw 12(0,%r4),%r21 + zdep %r21,29,30,%r20 + add %r20,%r21,%r20 + zdep %r20,29,30,%r20 + ldw 16(0,%r4),%r21 + add %r20,%r21,%r20 + copy %r19,%r26 + ldil L'LC$0055,%r25 + ldo R'LC$0055(%r25),%r25 + ldw 12(0,%r20),%r24 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl printfi_filtered,2 + nop + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + ldo 8(%r20),%r19 + ldw 12(0,%r4),%r21 + zdep %r21,29,30,%r20 + add %r20,%r21,%r20 + zdep %r20,29,30,%r20 + ldw 16(0,%r4),%r21 + add %r20,%r21,%r20 + ldw 16(0,%r20),%r21 + extru %r21,0+1-1,1,%r20 + copy %r19,%r26 + ldil L'LC$0056,%r25 + ldo R'LC$0056(%r25),%r25 + copy %r20,%r24 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl printfi_filtered,2 + nop + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + ldo 8(%r20),%r19 + ldw 12(0,%r4),%r21 + zdep %r21,29,30,%r20 + add %r20,%r21,%r20 + zdep %r20,29,30,%r20 + ldw 16(0,%r4),%r21 + add %r20,%r21,%r20 + ldw 16(0,%r20),%r21 + extru %r21,1+1-1,1,%r20 + copy %r19,%r26 + ldil L'LC$0057,%r25 + ldo R'LC$0057(%r25),%r25 + copy %r20,%r24 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl printfi_filtered,2 + nop + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + ldo 8(%r20),%r19 + ldw 12(0,%r4),%r21 + zdep %r21,29,30,%r20 + add %r20,%r21,%r20 + zdep %r20,29,30,%r20 + ldw 16(0,%r4),%r21 + add %r20,%r21,%r20 + ldw 16(0,%r20),%r21 + extru %r21,2+1-1,1,%r20 + copy %r19,%r26 + ldil L'LC$0058,%r25 + ldo R'LC$0058(%r25),%r25 + copy %r20,%r24 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl printfi_filtered,2 + nop + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + ldo 8(%r20),%r19 + ldw 12(0,%r4),%r21 + zdep %r21,29,30,%r20 + add %r20,%r21,%r20 + zdep %r20,29,30,%r20 + ldw 16(0,%r4),%r21 + add %r20,%r21,%r20 + ldw 16(0,%r20),%r21 + extru %r21,3+1-1,1,%r20 + copy %r19,%r26 + ldil L'LC$0059,%r25 + ldo R'LC$0059(%r25),%r25 + copy %r20,%r24 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl printfi_filtered,2 + nop + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + ldo 8(%r20),%r19 + ldw 12(0,%r4),%r21 + zdep %r21,29,30,%r20 + add %r20,%r21,%r20 + zdep %r20,29,30,%r20 + ldw 16(0,%r4),%r21 + add %r20,%r21,%r20 + ldw 16(0,%r20),%r21 + extru %r21,4+1-1,1,%r20 + copy %r19,%r26 + ldil L'LC$0060,%r25 + ldo R'LC$0060(%r25),%r25 + copy %r20,%r24 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl printfi_filtered,2 + nop + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + ldo 8(%r20),%r19 + ldw 12(0,%r4),%r21 + zdep %r21,29,30,%r20 + add %r20,%r21,%r20 + zdep %r20,29,30,%r20 + ldw 16(0,%r4),%r21 + add %r20,%r21,%r20 + ldw 16(0,%r20),%r21 + extru %r21,8+24-1,24,%r22 + ldo -2(%r22),%r20 + copy %r19,%r26 + ldil L'LC$0061,%r25 + ldo R'LC$0061(%r25),%r25 + copy %r20,%r24 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl printfi_filtered,2 + nop +L$0222: + ldw 12(0,%r4),%r19 + ldo 1(%r19),%r20 + stw %r20,12(0,%r4) + bl,n L$0220,0 +L$0221: +L$0219: + ldw 8(0,%r4),%r19 + ldo 1(%r19),%r20 + stw %r20,8(0,%r4) + bl,n L$0217,0 +L$0218: +L$0216: + ldw 24(0,4),8 + ldw 28(0,4),7 + ldw 32(0,4),6 + ldw 36(0,4),5 + ldo 8(4),30 + ldw -28(0,30),2 + bv 0(2) + ldwm -8(30),4 + .EXIT + .PROCEND + .align 4 +LC$0062: + .STRING "n_baseclasses %d\x0a\x00" + .align 4 +LC$0063: + .STRING "nfn_fields %d\x0a\x00" + .align 4 +LC$0064: + .STRING "nfn_fields_total %d\x0a\x00" + .align 4 +LC$0065: + .STRING "virtual_field_bits (%d bits at *0x%x)\x00" + .align 4 +LC$0066: + .STRING "\x0a\x00" + .align 4 +LC$0067: + .STRING "private_field_bits (%d bits at *0x%x)\x00" + .align 4 +LC$0068: + .STRING "protected_field_bits (%d bits at *0x%x)\x00" + .align 4 +print_cplus_stuff: + .PROC + .CALLINFO FRAME=128,CALLS,SAVE_RP + .ENTRY + stw 2,-20(0,30) + copy 4,1 + copy 30,4 + stwm 1,128(0,30) + stw 8,16(0,4) + stw 7,20(0,4) + stw 6,24(0,4) + stw 5,28(0,4) + ldo -4(0),%r5 + ldo -32(%r4),%r19 + add %r19,%r5,%r6 + stw %r26,0(0,%r6) + ldo -8(0),%r7 + ldo -32(%r4),%r19 + add %r19,%r7,%r8 + stw %r25,0(0,%r8) + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldo -4(0),%r20 + ldo -32(%r4),%r22 + add %r22,%r20,%r21 + ldw 0(0,%r21),%r20 + ldw 48(0,%r20),%r21 + ldh 0(0,%r21),%r22 + extrs %r22,31,16,%r20 + ldw 0(0,%r19),%r26 + ldil L'LC$0062,%r25 + ldo R'LC$0062(%r25),%r25 + copy %r20,%r24 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl printfi_filtered,2 + nop + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldo -4(0),%r20 + ldo -32(%r4),%r22 + add %r22,%r20,%r21 + ldw 0(0,%r21),%r20 + ldw 48(0,%r20),%r21 + ldh 2(0,%r21),%r22 + extrs %r22,31,16,%r20 + ldw 0(0,%r19),%r26 + ldil L'LC$0063,%r25 + ldo R'LC$0063(%r25),%r25 + copy %r20,%r24 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl printfi_filtered,2 + nop + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldo -4(0),%r20 + ldo -32(%r4),%r21 + add %r21,%r20,%r20 + ldw 0(0,%r20),%r21 + ldw 48(0,%r21),%r20 + ldw 0(0,%r19),%r26 + ldil L'LC$0064,%r25 + ldo R'LC$0064(%r25),%r25 + ldw 4(0,%r20),%r24 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl printfi_filtered,2 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 48(0,%r19),%r20 + ldh 0(0,%r20),%r21 + extrs %r21,31,16,%r19 + comiclr,< 0,%r19,0 + bl L$0224,0 + nop + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldo -4(0),%r20 + ldo -32(%r4),%r22 + add %r22,%r20,%r21 + ldw 0(0,%r21),%r20 + ldw 48(0,%r20),%r21 + ldh 0(0,%r21),%r22 + extrs %r22,31,16,%r20 + ldo -4(0),%r21 + ldo -32(%r4),%r22 + add %r22,%r21,%r21 + ldw 0(0,%r21),%r22 + ldw 48(0,%r22),%r21 + ldw 0(0,%r19),%r26 + ldil L'LC$0065,%r25 + ldo R'LC$0065(%r25),%r25 + copy %r20,%r24 + ldw 8(0,%r21),%r23 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl printfi_filtered,2 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + ldw 48(0,%r20),%r19 + ldo -4(0),%r20 + ldo -32(%r4),%r22 + add %r22,%r20,%r21 + ldw 0(0,%r21),%r20 + ldw 48(0,%r20),%r21 + ldh 0(0,%r21),%r22 + extrs %r22,31,16,%r20 + ldw 8(0,%r19),%r26 + copy %r20,%r25 + .CALL ARGW0=GR,ARGW1=GR + bl print_bit_vector,2 + nop + ldil L'LC$0066,%r26 + ldo R'LC$0066(%r26),%r26 + .CALL ARGW0=GR + bl puts_filtered,2 + nop +L$0224: + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldh 34(0,%r19),%r20 + extrs %r20,31,16,%r19 + comiclr,< 0,%r19,0 + bl L$0225,0 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 48(0,%r19),%r20 + ldw 12(0,%r20),%r19 + comiclr,<> 0,%r19,0 + bl L$0226,0 + nop + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldo -4(0),%r20 + ldo -32(%r4),%r22 + add %r22,%r20,%r21 + ldw 0(0,%r21),%r20 + ldh 34(0,%r20),%r21 + extrs %r21,31,16,%r20 + ldo -4(0),%r21 + ldo -32(%r4),%r22 + add %r22,%r21,%r21 + ldw 0(0,%r21),%r22 + ldw 48(0,%r22),%r21 + ldw 0(0,%r19),%r26 + ldil L'LC$0067,%r25 + ldo R'LC$0067(%r25),%r25 + copy %r20,%r24 + ldw 12(0,%r21),%r23 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl printfi_filtered,2 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + ldw 48(0,%r20),%r19 + ldo -4(0),%r20 + ldo -32(%r4),%r22 + add %r22,%r20,%r21 + ldw 0(0,%r21),%r20 + ldh 34(0,%r20),%r21 + extrs %r21,31,16,%r20 + ldw 12(0,%r19),%r26 + copy %r20,%r25 + .CALL ARGW0=GR,ARGW1=GR + bl print_bit_vector,2 + nop + ldil L'LC$0066,%r26 + ldo R'LC$0066(%r26),%r26 + .CALL ARGW0=GR + bl puts_filtered,2 + nop +L$0226: + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 48(0,%r19),%r20 + ldw 16(0,%r20),%r19 + comiclr,<> 0,%r19,0 + bl L$0227,0 + nop + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldo -4(0),%r20 + ldo -32(%r4),%r22 + add %r22,%r20,%r21 + ldw 0(0,%r21),%r20 + ldh 34(0,%r20),%r21 + extrs %r21,31,16,%r20 + ldo -4(0),%r21 + ldo -32(%r4),%r22 + add %r22,%r21,%r21 + ldw 0(0,%r21),%r22 + ldw 48(0,%r22),%r21 + ldw 0(0,%r19),%r26 + ldil L'LC$0068,%r25 + ldo R'LC$0068(%r25),%r25 + copy %r20,%r24 + ldw 16(0,%r21),%r23 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl printfi_filtered,2 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + ldw 48(0,%r20),%r19 + ldo -4(0),%r20 + ldo -32(%r4),%r22 + add %r22,%r20,%r21 + ldw 0(0,%r21),%r20 + ldh 34(0,%r20),%r21 + extrs %r21,31,16,%r20 + ldw 16(0,%r19),%r26 + copy %r20,%r25 + .CALL ARGW0=GR,ARGW1=GR + bl print_bit_vector,2 + nop + ldil L'LC$0066,%r26 + ldo R'LC$0066(%r26),%r26 + .CALL ARGW0=GR + bl puts_filtered,2 + nop +L$0227: +L$0225: + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 48(0,%r19),%r20 + ldh 2(0,%r20),%r21 + extrs %r21,31,16,%r19 + comiclr,< 0,%r19,0 + bl L$0228,0 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldo -8(0),%r20 + ldo -32(%r4),%r21 + add %r21,%r20,%r20 + ldw 0(0,%r19),%r26 + ldw 0(0,%r20),%r25 + .CALL ARGW0=GR,ARGW1=GR + bl dump_fn_fieldlists,2 + nop +L$0228: +L$0223: + ldw 16(0,4),8 + ldw 20(0,4),7 + ldw 24(0,4),6 + ldw 28(0,4),5 + ldo 8(4),30 + ldw -28(0,30),2 + bv 0(2) + ldwm -8(30),4 + .EXIT + .PROCEND + .align 4 +LC$0069: + .STRING "type node 0x%x\x0a\x00" + .align 4 +LC$0070: + .STRING "name '%s' (0x%x)\x0a\x00" + .align 4 +LC$0071: + .STRING "<NULL>\x00" + .align 4 +LC$0072: + .STRING "code 0x%x \x00" + .align 4 +LC$0073: + .STRING "(TYPE_CODE_UNDEF)\x00" + .align 4 +LC$0074: + .STRING "(TYPE_CODE_PTR)\x00" + .align 4 +LC$0075: + .STRING "(TYPE_CODE_ARRAY)\x00" + .align 4 +LC$0076: + .STRING "(TYPE_CODE_STRUCT)\x00" + .align 4 +LC$0077: + .STRING "(TYPE_CODE_UNION)\x00" + .align 4 +LC$0078: + .STRING "(TYPE_CODE_ENUM)\x00" + .align 4 +LC$0079: + .STRING "(TYPE_CODE_FUNC)\x00" + .align 4 +LC$0080: + .STRING "(TYPE_CODE_INT)\x00" + .align 4 +LC$0081: + .STRING "(TYPE_CODE_FLT)\x00" + .align 4 +LC$0082: + .STRING "(TYPE_CODE_VOID)\x00" + .align 4 +LC$0083: + .STRING "(TYPE_CODE_SET)\x00" + .align 4 +LC$0084: + .STRING "(TYPE_CODE_RANGE)\x00" + .align 4 +LC$0085: + .STRING "(TYPE_CODE_PASCAL_ARRAY)\x00" + .align 4 +LC$0086: + .STRING "(TYPE_CODE_ERROR)\x00" + .align 4 +LC$0087: + .STRING "(TYPE_CODE_MEMBER)\x00" + .align 4 +LC$0088: + .STRING "(TYPE_CODE_METHOD)\x00" + .align 4 +LC$0089: + .STRING "(TYPE_CODE_REF)\x00" + .align 4 +LC$0090: + .STRING "(TYPE_CODE_CHAR)\x00" + .align 4 +LC$0091: + .STRING "(TYPE_CODE_BOOL)\x00" + .align 4 +LC$0092: + .STRING "(UNKNOWN TYPE CODE)\x00" + .align 4 +LC$0093: + .STRING "length %d\x0a\x00" + .align 4 +LC$0094: + .STRING "objfile 0x%x\x0a\x00" + .align 4 +LC$0095: + .STRING "target_type 0x%x\x0a\x00" + .align 4 +LC$0096: + .STRING "pointer_type 0x%x\x0a\x00" + .align 4 +LC$0097: + .STRING "reference_type 0x%x\x0a\x00" + .align 4 +LC$0098: + .STRING "function_type 0x%x\x0a\x00" + .align 4 +LC$0099: + .STRING "flags 0x%x\x00" + .align 4 +LC$0100: + .STRING " TYPE_FLAG_UNSIGNED\x00" + .align 4 +LC$0101: + .STRING " TYPE_FLAG_SIGNED\x00" + .align 4 +LC$0102: + .STRING " TYPE_FLAG_STUB\x00" + .align 4 +LC$0103: + .STRING "nfields %d 0x%x\x0a\x00" + .align 4 +LC$0104: + .STRING "[%d] bitpos %d bitsize %d type 0x%x name '%s' (0x%x)\x0a\x00" + .align 4 +LC$0105: + .STRING "vptr_basetype 0x%x\x0a\x00" + .align 4 +LC$0106: + .STRING "vptr_fieldno %d\x0a\x00" + .align 4 +LC$0107: + .STRING "arg_types 0x%x\x0a\x00" + .align 4 +LC$0108: + .STRING "cplus_stuff 0x%x\x0a\x00" + .align 4 +LC$0109: + .STRING "type_specific 0x%x\x00" + .align 4 +LC$0110: + .STRING " (unknown data form)\x00" + .align 4 + .EXPORT recursive_dump_type,CODE + .EXPORT recursive_dump_type,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR +recursive_dump_type: + .PROC + .CALLINFO FRAME=128,CALLS,SAVE_RP + .ENTRY + stw 2,-20(0,30) + copy 4,1 + copy 30,4 + stwm 1,128(0,30) + stw 8,16(0,4) + stw 7,20(0,4) + stw 6,24(0,4) + stw 5,28(0,4) + ldo -4(0),%r5 + ldo -32(%r4),%r19 + add %r19,%r5,%r6 + stw %r26,0(0,%r6) + ldo -8(0),%r7 + ldo -32(%r4),%r19 + add %r19,%r7,%r8 + stw %r25,0(0,%r8) + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldo -4(0),%r20 + ldo -32(%r4),%r21 + add %r21,%r20,%r20 + ldw 0(0,%r19),%r26 + ldil L'LC$0069,%r25 + ldo R'LC$0069(%r25),%r25 + ldw 0(0,%r20),%r24 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl printfi_filtered,2 + nop + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldo -4(0),%r20 + ldo -32(%r4),%r22 + add %r22,%r20,%r21 + ldw 0(0,%r21),%r20 + ldo -4(0),%r21 + ldo -32(%r4),%r22 + add %r22,%r21,%r21 + ldw 0(0,%r21),%r22 + ldw 4(0,%r22),%r21 + ldo -4(0),%r22 + ldo -32(%r4),%r24 + add %r24,%r22,%r23 + ldw 0(0,%r23),%r22 + ldw 4(0,%r22),%r23 + comiclr,= 0,%r23,0 + bl L$0230,0 + nop + ldil L'LC$0071,%r21 + ldo R'LC$0071(%r21),%r21 +L$0230: + ldw 0(0,%r19),%r26 + ldil L'LC$0070,%r25 + ldo R'LC$0070(%r25),%r25 + ldw 4(0,%r20),%r24 + copy %r21,%r23 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl printfi_filtered,2 + nop + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldo -4(0),%r20 + ldo -32(%r4),%r22 + add %r22,%r20,%r21 + ldw 0(0,%r21),%r20 + ldw 0(0,%r19),%r26 + ldil L'LC$0072,%r25 + ldo R'LC$0072(%r25),%r25 + ldw 0(0,%r20),%r24 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl printfi_filtered,2 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 0(0,%r19),%r20 + addi,uv -19,%r20,0 + blr,n %r20,0 + b,n L$0251 +L$0252: + b L$0232 + nop + b L$0233 + nop + b L$0234 + nop + b L$0235 + nop + b L$0236 + nop + b L$0237 + nop + b L$0238 + nop + b L$0239 + nop + b L$0240 + nop + b L$0241 + nop + b L$0242 + nop + b L$0243 + nop + b L$0244 + nop + b L$0245 + nop + b L$0246 + nop + b L$0247 + nop + b L$0248 + nop + b L$0249 + nop + b L$0250 + nop +L$0232: + ldil L'LC$0073,%r26 + ldo R'LC$0073(%r26),%r26 + .CALL ARGW0=GR + bl printf_filtered,2 + nop + bl,n L$0231,0 +L$0233: + ldil L'LC$0074,%r26 + ldo R'LC$0074(%r26),%r26 + .CALL ARGW0=GR + bl printf_filtered,2 + nop + bl,n L$0231,0 +L$0234: + ldil L'LC$0075,%r26 + ldo R'LC$0075(%r26),%r26 + .CALL ARGW0=GR + bl printf_filtered,2 + nop + bl,n L$0231,0 +L$0235: + ldil L'LC$0076,%r26 + ldo R'LC$0076(%r26),%r26 + .CALL ARGW0=GR + bl printf_filtered,2 + nop + bl,n L$0231,0 +L$0236: + ldil L'LC$0077,%r26 + ldo R'LC$0077(%r26),%r26 + .CALL ARGW0=GR + bl printf_filtered,2 + nop + bl,n L$0231,0 +L$0237: + ldil L'LC$0078,%r26 + ldo R'LC$0078(%r26),%r26 + .CALL ARGW0=GR + bl printf_filtered,2 + nop + bl,n L$0231,0 +L$0238: + ldil L'LC$0079,%r26 + ldo R'LC$0079(%r26),%r26 + .CALL ARGW0=GR + bl printf_filtered,2 + nop + bl,n L$0231,0 +L$0239: + ldil L'LC$0080,%r26 + ldo R'LC$0080(%r26),%r26 + .CALL ARGW0=GR + bl printf_filtered,2 + nop + bl,n L$0231,0 +L$0240: + ldil L'LC$0081,%r26 + ldo R'LC$0081(%r26),%r26 + .CALL ARGW0=GR + bl printf_filtered,2 + nop + bl,n L$0231,0 +L$0241: + ldil L'LC$0082,%r26 + ldo R'LC$0082(%r26),%r26 + .CALL ARGW0=GR + bl printf_filtered,2 + nop + bl,n L$0231,0 +L$0242: + ldil L'LC$0083,%r26 + ldo R'LC$0083(%r26),%r26 + .CALL ARGW0=GR + bl printf_filtered,2 + nop + bl,n L$0231,0 +L$0243: + ldil L'LC$0084,%r26 + ldo R'LC$0084(%r26),%r26 + .CALL ARGW0=GR + bl printf_filtered,2 + nop + bl,n L$0231,0 +L$0244: + ldil L'LC$0085,%r26 + ldo R'LC$0085(%r26),%r26 + .CALL ARGW0=GR + bl printf_filtered,2 + nop + bl,n L$0231,0 +L$0245: + ldil L'LC$0086,%r26 + ldo R'LC$0086(%r26),%r26 + .CALL ARGW0=GR + bl printf_filtered,2 + nop + bl,n L$0231,0 +L$0246: + ldil L'LC$0087,%r26 + ldo R'LC$0087(%r26),%r26 + .CALL ARGW0=GR + bl printf_filtered,2 + nop + bl,n L$0231,0 +L$0247: + ldil L'LC$0088,%r26 + ldo R'LC$0088(%r26),%r26 + .CALL ARGW0=GR + bl printf_filtered,2 + nop + bl,n L$0231,0 +L$0248: + ldil L'LC$0089,%r26 + ldo R'LC$0089(%r26),%r26 + .CALL ARGW0=GR + bl printf_filtered,2 + nop + bl,n L$0231,0 +L$0249: + ldil L'LC$0090,%r26 + ldo R'LC$0090(%r26),%r26 + .CALL ARGW0=GR + bl printf_filtered,2 + nop + bl,n L$0231,0 +L$0250: + ldil L'LC$0091,%r26 + ldo R'LC$0091(%r26),%r26 + .CALL ARGW0=GR + bl printf_filtered,2 + nop + bl,n L$0231,0 +L$0251: + ldil L'LC$0092,%r26 + ldo R'LC$0092(%r26),%r26 + .CALL ARGW0=GR + bl printf_filtered,2 + nop + bl,n L$0231,0 +L$0231: + ldil L'LC$0066,%r26 + ldo R'LC$0066(%r26),%r26 + .CALL ARGW0=GR + bl puts_filtered,2 + nop + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldo -4(0),%r20 + ldo -32(%r4),%r22 + add %r22,%r20,%r21 + ldw 0(0,%r21),%r20 + ldw 0(0,%r19),%r26 + ldil L'LC$0093,%r25 + ldo R'LC$0093(%r25),%r25 + ldw 8(0,%r20),%r24 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl printfi_filtered,2 + nop + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldo -4(0),%r20 + ldo -32(%r4),%r22 + add %r22,%r20,%r21 + ldw 0(0,%r21),%r20 + ldw 0(0,%r19),%r26 + ldil L'LC$0094,%r25 + ldo R'LC$0094(%r25),%r25 + ldw 12(0,%r20),%r24 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl printfi_filtered,2 + nop + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldo -4(0),%r20 + ldo -32(%r4),%r22 + add %r22,%r20,%r21 + ldw 0(0,%r21),%r20 + ldw 0(0,%r19),%r26 + ldil L'LC$0095,%r25 + ldo R'LC$0095(%r25),%r25 + ldw 16(0,%r20),%r24 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl printfi_filtered,2 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 16(0,%r19),%r20 + comiclr,<> 0,%r20,0 + bl L$0253,0 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldo -8(0),%r20 + ldo -32(%r4),%r21 + add %r21,%r20,%r20 + ldw 0(0,%r20),%r21 + ldo 2(%r21),%r20 + ldw 16(0,%r19),%r26 + copy %r20,%r25 + .CALL ARGW0=GR,ARGW1=GR + bl recursive_dump_type,2 + nop +L$0253: + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldo -4(0),%r20 + ldo -32(%r4),%r22 + add %r22,%r20,%r21 + ldw 0(0,%r21),%r20 + ldw 0(0,%r19),%r26 + ldil L'LC$0096,%r25 + ldo R'LC$0096(%r25),%r25 + ldw 20(0,%r20),%r24 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl printfi_filtered,2 + nop + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldo -4(0),%r20 + ldo -32(%r4),%r22 + add %r22,%r20,%r21 + ldw 0(0,%r21),%r20 + ldw 0(0,%r19),%r26 + ldil L'LC$0097,%r25 + ldo R'LC$0097(%r25),%r25 + ldw 24(0,%r20),%r24 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl printfi_filtered,2 + nop + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldo -4(0),%r20 + ldo -32(%r4),%r22 + add %r22,%r20,%r21 + ldw 0(0,%r21),%r20 + ldw 0(0,%r19),%r26 + ldil L'LC$0098,%r25 + ldo R'LC$0098(%r25),%r25 + ldw 28(0,%r20),%r24 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl printfi_filtered,2 + nop + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldo -4(0),%r20 + ldo -32(%r4),%r22 + add %r22,%r20,%r21 + ldw 0(0,%r21),%r20 + ldh 32(0,%r20),%r21 + extrs %r21,31,16,%r20 + ldw 0(0,%r19),%r26 + ldil L'LC$0099,%r25 + ldo R'LC$0099(%r25),%r25 + copy %r20,%r24 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl printfi_filtered,2 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldh 32(0,%r19),%r20 + extru %r20,31,1,%r19 + extrs %r19,31,16,%r20 + comiclr,<> 0,%r20,0 + bl L$0254,0 + nop + ldil L'LC$0100,%r26 + ldo R'LC$0100(%r26),%r26 + .CALL ARGW0=GR + bl puts_filtered,2 + nop +L$0254: + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldh 32(0,%r19),%r20 + ldo 2(0),%r21 + and %r20,%r21,%r19 + extrs %r19,31,16,%r20 + comiclr,<> 0,%r20,0 + bl L$0255,0 + nop + ldil L'LC$0101,%r26 + ldo R'LC$0101(%r26),%r26 + .CALL ARGW0=GR + bl puts_filtered,2 + nop +L$0255: + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldh 32(0,%r19),%r20 + ldo 4(0),%r21 + and %r20,%r21,%r19 + extrs %r19,31,16,%r20 + comiclr,<> 0,%r20,0 + bl L$0256,0 + nop + ldil L'LC$0102,%r26 + ldo R'LC$0102(%r26),%r26 + .CALL ARGW0=GR + bl puts_filtered,2 + nop +L$0256: + ldil L'LC$0066,%r26 + ldo R'LC$0066(%r26),%r26 + .CALL ARGW0=GR + bl puts_filtered,2 + nop + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldo -4(0),%r20 + ldo -32(%r4),%r22 + add %r22,%r20,%r21 + ldw 0(0,%r21),%r20 + ldh 34(0,%r20),%r21 + extrs %r21,31,16,%r20 + ldo -4(0),%r21 + ldo -32(%r4),%r23 + add %r23,%r21,%r22 + ldw 0(0,%r22),%r21 + ldw 0(0,%r19),%r26 + ldil L'LC$0103,%r25 + ldo R'LC$0103(%r25),%r25 + copy %r20,%r24 + ldw 36(0,%r21),%r23 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl printfi_filtered,2 + nop + stw 0,8(0,%r4) +L$0257: + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldh 34(0,%r19),%r20 + extrs %r20,31,16,%r19 + ldw 8(0,%r4),%r20 + comclr,< %r20,%r19,0 + bl L$0258,0 + nop + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + ldo 2(%r20),%r19 + ldo -4(0),%r20 + ldo -32(%r4),%r22 + add %r22,%r20,%r21 + ldw 0(0,%r21),%r20 + ldw 8(0,%r4),%r21 + zdep %r21,27,28,%r22 + ldw 36(0,%r20),%r21 + add %r22,%r21,%r20 + ldo -4(0),%r21 + ldo -32(%r4),%r23 + add %r23,%r21,%r22 + ldw 0(0,%r22),%r21 + ldw 8(0,%r4),%r22 + zdep %r22,27,28,%r23 + ldw 36(0,%r21),%r22 + add %r23,%r22,%r21 + ldw 4(0,%r21),%r22 + stw %r22,-52(0,%r30) + ldo -4(0),%r21 + ldo -32(%r4),%r23 + add %r23,%r21,%r22 + ldw 0(0,%r22),%r21 + ldw 8(0,%r4),%r22 + zdep %r22,27,28,%r23 + ldw 36(0,%r21),%r22 + add %r23,%r22,%r21 + ldw 8(0,%r21),%r22 + stw %r22,-56(0,%r30) + ldo -4(0),%r21 + ldo -32(%r4),%r23 + add %r23,%r21,%r22 + ldw 0(0,%r22),%r21 + ldw 8(0,%r4),%r22 + zdep %r22,27,28,%r23 + ldw 36(0,%r21),%r22 + add %r23,%r22,%r21 + ldw 12(0,%r21),%r22 + stw %r22,-60(0,%r30) + ldo -4(0),%r21 + ldo -32(%r4),%r23 + add %r23,%r21,%r22 + ldw 0(0,%r22),%r21 + ldw 8(0,%r4),%r22 + zdep %r22,27,28,%r23 + ldw 36(0,%r21),%r22 + add %r23,%r22,%r21 + ldw 12(0,%r21),%r22 + stw %r22,-64(0,%r30) + ldo -4(0),%r21 + ldo -32(%r4),%r23 + add %r23,%r21,%r22 + ldw 0(0,%r22),%r21 + ldw 8(0,%r4),%r22 + zdep %r22,27,28,%r23 + ldw 36(0,%r21),%r22 + add %r23,%r22,%r21 + ldw 12(0,%r21),%r22 + comiclr,= 0,%r22,0 + bl L$0260,0 + nop + ldil L'LC$0071,%r21 + ldo R'LC$0071(%r21),%r21 + stw %r21,-64(0,%r30) +L$0260: + copy %r19,%r26 + ldil L'LC$0104,%r25 + ldo R'LC$0104(%r25),%r25 + ldw 8(0,%r4),%r24 + ldw 0(0,%r20),%r23 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl printfi_filtered,2 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 8(0,%r4),%r20 + zdep %r20,27,28,%r21 + ldw 36(0,%r19),%r20 + add %r21,%r20,%r19 + ldw 8(0,%r19),%r20 + comiclr,<> 0,%r20,0 + bl L$0261,0 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 8(0,%r4),%r20 + zdep %r20,27,28,%r21 + ldw 36(0,%r19),%r20 + add %r21,%r20,%r19 + ldo -8(0),%r20 + ldo -32(%r4),%r21 + add %r21,%r20,%r20 + ldw 0(0,%r20),%r21 + ldo 4(%r21),%r20 + ldw 8(0,%r19),%r26 + copy %r20,%r25 + .CALL ARGW0=GR,ARGW1=GR + bl recursive_dump_type,2 + nop +L$0261: +L$0259: + ldw 8(0,%r4),%r19 + ldo 1(%r19),%r20 + stw %r20,8(0,%r4) + bl,n L$0257,0 +L$0258: + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldo -4(0),%r20 + ldo -32(%r4),%r22 + add %r22,%r20,%r21 + ldw 0(0,%r21),%r20 + ldw 0(0,%r19),%r26 + ldil L'LC$0105,%r25 + ldo R'LC$0105(%r25),%r25 + ldw 40(0,%r20),%r24 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl printfi_filtered,2 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 40(0,%r19),%r20 + comiclr,<> 0,%r20,0 + bl L$0262,0 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldo -8(0),%r20 + ldo -32(%r4),%r21 + add %r21,%r20,%r20 + ldw 0(0,%r20),%r21 + ldo 2(%r21),%r20 + ldw 40(0,%r19),%r26 + copy %r20,%r25 + .CALL ARGW0=GR,ARGW1=GR + bl recursive_dump_type,2 + nop +L$0262: + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldo -4(0),%r20 + ldo -32(%r4),%r22 + add %r22,%r20,%r21 + ldw 0(0,%r21),%r20 + ldw 0(0,%r19),%r26 + ldil L'LC$0106,%r25 + ldo R'LC$0106(%r25),%r25 + ldw 44(0,%r20),%r24 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl printfi_filtered,2 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldw 0(0,%r19),%r20 + ldw 0(0,%r20),%r19 + comiclr,<> 6,%r19,0 + bl L$0265,0 + nop + comiclr,>= 6,%r19,0 + bl L$0270,0 + nop + comiclr,<> 3,%r19,0 + bl L$0266,0 + nop + bl,n L$0267,0 +L$0270: + comiclr,<> 15,%r19,0 + bl L$0264,0 + nop + bl,n L$0267,0 +L$0264: +L$0265: + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldo -4(0),%r20 + ldo -32(%r4),%r22 + add %r22,%r20,%r21 + ldw 0(0,%r21),%r20 + ldw 0(0,%r19),%r26 + ldil L'LC$0107,%r25 + ldo R'LC$0107(%r25),%r25 + ldw 48(0,%r20),%r24 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl printfi_filtered,2 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldo -8(0),%r20 + ldo -32(%r4),%r21 + add %r21,%r20,%r20 + ldw 48(0,%r19),%r26 + ldw 0(0,%r20),%r25 + .CALL ARGW0=GR,ARGW1=GR + bl print_arg_types,2 + nop + bl,n L$0263,0 +L$0266: + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldo -4(0),%r20 + ldo -32(%r4),%r22 + add %r22,%r20,%r21 + ldw 0(0,%r21),%r20 + ldw 0(0,%r19),%r26 + ldil L'LC$0108,%r25 + ldo R'LC$0108(%r25),%r25 + ldw 48(0,%r20),%r24 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl printfi_filtered,2 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldo -8(0),%r20 + ldo -32(%r4),%r21 + add %r21,%r20,%r20 + ldw 0(0,%r19),%r26 + ldw 0(0,%r20),%r25 + .CALL ARGW0=GR,ARGW1=GR + bl print_cplus_stuff,2 + nop + bl,n L$0263,0 +L$0267: + ldo -8(0),%r19 + ldo -32(%r4),%r20 + add %r20,%r19,%r19 + ldo -4(0),%r20 + ldo -32(%r4),%r22 + add %r22,%r20,%r21 + ldw 0(0,%r21),%r20 + ldw 0(0,%r19),%r26 + ldil L'LC$0109,%r25 + ldo R'LC$0109(%r25),%r25 + ldw 48(0,%r20),%r24 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl printfi_filtered,2 + nop + ldo -4(0),%r19 + ldo -32(%r4),%r21 + add %r21,%r19,%r20 + ldw 0(0,%r20),%r19 + ldw 48(0,%r19),%r20 + comiclr,<> 0,%r20,0 + bl L$0268,0 + nop + ldil L'LC$0110,%r26 + ldo R'LC$0110(%r26),%r26 + .CALL ARGW0=GR + bl printf_filtered,2 + nop +L$0268: + ldil L'LC$0066,%r26 + ldo R'LC$0066(%r26),%r26 + .CALL ARGW0=GR + bl printf_filtered,2 + nop + bl,n L$0263,0 +L$0263: +L$0229: + ldw 16(0,4),8 + ldw 20(0,4),7 + ldw 24(0,4),6 + ldw 28(0,4),5 + ldo 8(4),30 + ldw -28(0,30),2 + bv 0(2) + ldwm -8(30),4 + .EXIT + .PROCEND + .SPACE $PRIVATE$ + .SUBSPA $BSS$ + +cplus_struct_default: .comm 24 + diff --git a/gas/testsuite/gas/hppa/parse/global.s b/gas/testsuite/gas/hppa/parse/global.s new file mode 100755 index 0000000..550c4a5 --- /dev/null +++ b/gas/testsuite/gas/hppa/parse/global.s @@ -0,0 +1,15 @@ + .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$ + .IMPORT foo,data + + .align 4 +; Official gas code will not accept sym-$global$. + addil L%foo-$global$,%r27 + diff --git a/gas/testsuite/gas/hppa/parse/labelbug.s b/gas/testsuite/gas/hppa/parse/labelbug.s new file mode 100644 index 0000000..a83f817 --- /dev/null +++ b/gas/testsuite/gas/hppa/parse/labelbug.s @@ -0,0 +1,35 @@ + .SPACE $PRIVATE$ + .SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=31 + .SUBSPA $BSS$,QUAD=1,ALIGN=8,ACCESS=31,ZERO,SORT=82 + .SPACE $TEXT$, SORT=8 + .SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=44 + .SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY + + .SPACE $TEXT$ + .SUBSPA $CODE$ + + .align 4 +; A comment. This should not be interpreted as a label, but both of the +; following statements should. +label_without_colon +label_with_colon: + +; A problem tege found... +; Input scrubbing in gas makes life a real nightmare for assemblers +; in which the *position* within a line determines how to interpret +; a stream a characters. These test one particular case where gas +; had the tendency to delete the whitespace between the opcode and +; operands if a label without a colon began a line, and the operands +; started with a non-numeric character. +L$1 add %r2,%r2,%r2 +L$2: add %r2,%r2,%r2 +L$3 + add %r2,%r2,%r2 + +L$4 add 2,%r2,%r2 +L$5: add 2,%r2,%r2 +L$6 + add 2,%r2,%r2 + +; An instruction or pseudo-op may begin anywhere after column 0. + b,n label_without_colon diff --git a/gas/testsuite/gas/hppa/parse/linesepbug.s b/gas/testsuite/gas/hppa/parse/linesepbug.s new file mode 100755 index 0000000..a819c15 --- /dev/null +++ b/gas/testsuite/gas/hppa/parse/linesepbug.s @@ -0,0 +1,20 @@ + .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 +; Basic immediate instruction tests. +; +; 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. + +foo: + .WORD 0 !.IMPORT $bar$,DATA + diff --git a/gas/testsuite/gas/hppa/parse/lselbug.s b/gas/testsuite/gas/hppa/parse/lselbug.s new file mode 100755 index 0000000..29cd997 --- /dev/null +++ b/gas/testsuite/gas/hppa/parse/lselbug.s @@ -0,0 +1,18 @@ + .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 +; In gas-1.36 the ldil instruction using parenthesis generated +; garbage bits while the one without parens worked fine. + ldil L%(0x00040000 | 0x00000008 | 0x00000002),%r21 + ldo L%(0x00040000 | 0x00000008 | 0x00000002) (%r21),%r21 + ldil L%0x00040000 | 0x00000008 | 0x00000002,%r21 + ldo L%0x00040000 | 0x00000008 | 0x00000002 (%r21),%r21 + diff --git a/gas/testsuite/gas/hppa/parse/nosubspace.s b/gas/testsuite/gas/hppa/parse/nosubspace.s new file mode 100755 index 0000000..2904603 --- /dev/null +++ b/gas/testsuite/gas/hppa/parse/nosubspace.s @@ -0,0 +1,21 @@ + .SPACE $TEXT$ + + .align 4 + .EXPORT mpn_add_n + .EXPORT mpn_add_n,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR,RTNVAL=GR +mpn_add_n: + .PROC + .CALLINFO FRAME=0,NO_CALLS + .ENTRY + + add %r0,%r0,%r0 ; reset cy +Loop: + ldws,ma 4(0,%r25),%r20 + ldws,ma 4(0,%r24),%r19 + + addc %r19,%r20,%r19 + addib,<> -1,%r23,Loop + stws,ma %r19,4(0,%r26) + + bv 0(2) + addc %r0,%r0,%r28 diff --git a/gas/testsuite/gas/hppa/parse/parse.exp b/gas/testsuite/gas/hppa/parse/parse.exp old mode 100644 new mode 100755 diff --git a/gas/testsuite/gas/hppa/parse/procbug.s b/gas/testsuite/gas/hppa/parse/procbug.s new file mode 100755 index 0000000..5ae5057 --- /dev/null +++ b/gas/testsuite/gas/hppa/parse/procbug.s @@ -0,0 +1,16 @@ + .space $TEXT$ + .subspa $CODE$ + .align 4 + .export divu,entry + .proc + .callinfo +divu: stws,ma %r4,4(%r5) ; save registers on stack + .procend + + .export divu2,entry + .proc + .callinfo + .entry +divu2: stws,ma %r4,4(%r5) ; save registers on stack + .exit + .procend diff --git a/gas/testsuite/gas/hppa/parse/regpopbug.s b/gas/testsuite/gas/hppa/parse/regpopbug.s new file mode 100644 index 0000000..46db262 --- /dev/null +++ b/gas/testsuite/gas/hppa/parse/regpopbug.s @@ -0,0 +1,17 @@ + .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$ + +r0 .reg %r0 +shift .reg %sar +fpreg10 .reg %fr10 +shift2 .reg shift + +; Make sure we didn't botch .equ... +yabba .equ r0 + shift diff --git a/gas/testsuite/gas/hppa/parse/spacebug.s b/gas/testsuite/gas/hppa/parse/spacebug.s new file mode 100644 index 0000000..183b401 --- /dev/null +++ b/gas/testsuite/gas/hppa/parse/spacebug.s @@ -0,0 +1,3 @@ +start: .long 0, 1, 2, 3, 4, 5, 6, 7 + .space 0x20 - (. - start) +foo: .long 42 diff --git a/gas/testsuite/gas/hppa/parse/ssbug.s b/gas/testsuite/gas/hppa/parse/ssbug.s new file mode 100644 index 0000000..1960e0d --- /dev/null +++ b/gas/testsuite/gas/hppa/parse/ssbug.s @@ -0,0 +1,10 @@ + .SPACE $PRIVATE$ + .SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=31 + .SUBSPA $BSS$,QUAD=1,ALIGN=8,ACCESS=31,ZERO,SORT=82 + .SUBSPA $SHORTBSS$,QUAD=1,ALIGN=8,ACCESS=31,ZERO,SORT=80 + .SPACE $TEXT$ + .SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=44 + .SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY + + + diff --git a/gas/testsuite/gas/hppa/parse/stdreg.s b/gas/testsuite/gas/hppa/parse/stdreg.s new file mode 100644 index 0000000..e42978e --- /dev/null +++ b/gas/testsuite/gas/hppa/parse/stdreg.s @@ -0,0 +1,27 @@ + .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 + .export foo +foo: + .proc + .callinfo no_calls + .entry + ldi 15,%sp + ldi 15,%rp + ldi 15,%dp + ldi 15,%ret0 + ldi 15,%ret1 + ldi 15,%arg0 + ldi 15,%arg1 + ldi 15,%arg2 + ldi 15,%arg3 + .exit + .procend diff --git a/gas/testsuite/gas/hppa/parse/stringer.s b/gas/testsuite/gas/hppa/parse/stringer.s new file mode 100755 index 0000000..06c5e6d --- /dev/null +++ b/gas/testsuite/gas/hppa/parse/stringer.s @@ -0,0 +1,19 @@ + .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 $PRIVATE$ + .SUBSPA $DATA$ + + +; GAS used to mis-parse the embedded quotes + .STRING "#include \"awk.def\"\x0a\x00" + +; Octal escapes used to consume > 3 chars which led to this +; string being screwed in a big way. + .STRING "\0110x123" + + diff --git a/gas/testsuite/gas/hppa/parse/undefbug.s b/gas/testsuite/gas/hppa/parse/undefbug.s new file mode 100755 index 0000000..d5eda92 --- /dev/null +++ b/gas/testsuite/gas/hppa/parse/undefbug.s @@ -0,0 +1,14 @@ + .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 + bl somewhere,%r2 + nop + diff --git a/gas/testsuite/gas/hppa/parse/versionbug.s b/gas/testsuite/gas/hppa/parse/versionbug.s new file mode 100755 index 0000000..9fef1b7 --- /dev/null +++ b/gas/testsuite/gas/hppa/parse/versionbug.s @@ -0,0 +1,9 @@ + .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 + + .VERSION "abc123" + diff --git a/gas/testsuite/gas/hppa/parse/xmpyubug.s b/gas/testsuite/gas/hppa/parse/xmpyubug.s new file mode 100644 index 0000000..3ee7274 --- /dev/null +++ b/gas/testsuite/gas/hppa/parse/xmpyubug.s @@ -0,0 +1,17 @@ + .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 +; No format selector for xmpyu! + xmpyu,sgl %fr4,%fr5,%fr6 + xmpyu,dbl %fr4,%fr5,%fr6 + xmpyu,quad %fr4,%fr5,%fr6 + + diff --git a/gas/testsuite/gas/hppa/reloc/applybug.s b/gas/testsuite/gas/hppa/reloc/applybug.s new file mode 100644 index 0000000..0ec11df --- /dev/null +++ b/gas/testsuite/gas/hppa/reloc/applybug.s @@ -0,0 +1,130 @@ + .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 + .IMPORT $global$,DATA + .IMPORT $$dyncall,MILLICODE +; gcc_compiled.: + .SPACE $PRIVATE$ + .SUBSPA $DATA$ + + .align 4 +tab___2 + .word L$0002 + .word L$0003 + .word L$0004 + .SPACE $TEXT$ + .SUBSPA $CODE$ + + .align 4 + .EXPORT execute,CODE + .EXPORT execute,ENTRY,PRIV_LEV=3,ARGW0=GR,RTNVAL=GR +execute + .PROC + .CALLINFO FRAME=0,NO_CALLS + .ENTRY + addil L'buf-$global$,%r27 + ldo R'buf-$global$(%r1),%r20 + ldil L'L$0002,%r19 + movb,<> %r26,%r26,L$0002 + ldo R'L$0002(%r19),%r22 + copy 0,%r21 + addil L'tab___2-$global$,%r27 + ldo R'tab___2-$global$(%r1),%r23 + addil L'optab-$global$,%r27 + ldo R'optab-$global$(%r1),%r20 +L$0009 + sh2add %r21,%r23,%r19 + ldh 2(0,%r19),%r19 + ldo 1(%r21),%r21 + sub %r19,%r22,%r19 + comib,>= 2,%r21,L$0009 + sths,ma %r19,2(0,%r20) + bv,n 0(%r2) +L$0002 + ldi 120,%r19 + stbs,ma %r19,1(0,%r20) + ldhs,ma 2(0,%r26),%r19 + add %r22,%r19,%r19 + bv,n 0(%r19) +L$0003 + ldi 121,%r19 + stbs,ma %r19,1(0,%r20) + ldhs,ma 2(0,%r26),%r19 + add %r22,%r19,%r19 + bv,n 0(%r19) +L$0004 + ldi 122,%r19 + stb %r19,0(0,%r20) + bv 0(%r2) + stbs,mb 0,1(0,%r20) + .EXIT + .PROCEND + .IMPORT __main,CODE + .IMPORT strcmp,CODE + .SPACE $TEXT$ + .SUBSPA $LIT$ + + .align 4 +L$C0000 + .STRING "xyxyz\x00" + .IMPORT abort,CODE + .IMPORT exit,CODE + .SPACE $TEXT$ + .SUBSPA $CODE$ + + .align 4 + .EXPORT main,CODE + .EXPORT main,ENTRY,PRIV_LEV=3,RTNVAL=GR +main + .PROC + .CALLINFO FRAME=128,CALLS,SAVE_RP + .ENTRY + stw %r2,-20(0,%r30) + .CALL + bl __main,%r2 + ldo 128(%r30),%r30 + .CALL ARGW0=GR + bl execute,%r2 + copy 0,%r26 + addil L'optab-$global$,%r27 + copy %r1,%r19 + ldo R'optab-$global$(%r19),%r21 + ldh 2(0,%r21),%r20 + ldh R'optab-$global$(%r19),%r19 + addil L'p-$global$,%r27 + copy %r1,%r22 + sth %r20,R'p-$global$(%r22) + ldo R'p-$global$(%r22),%r26 + sth %r20,4(0,%r26) + sth %r19,2(0,%r26) + ldh 4(0,%r21),%r19 + .CALL ARGW0=GR + bl execute,%r2 + sth %r19,6(0,%r26) + addil L'buf-$global$,%r27 + copy %r1,%r19 + ldo R'buf-$global$(%r19),%r26 + ldil L'L$C0000,%r25 + .CALL ARGW0=GR,ARGW1=GR + bl strcmp,%r2 + ldo R'L$C0000(%r25),%r25 + comib,=,n 0,%r28,L$0011 + .CALL + bl abort,%r2 + nop +L$0011 + .CALL ARGW0=GR + bl exit,%r2 + copy 0,%r26 + nop + .EXIT + .PROCEND + .SPACE $PRIVATE$ + .SUBSPA $BSS$ + +optab .comm 10 +buf .comm 10 +p .comm 10 diff --git a/gas/testsuite/gas/hppa/reloc/blebug.s b/gas/testsuite/gas/hppa/reloc/blebug.s new file mode 100755 index 0000000..0930774 --- /dev/null +++ b/gas/testsuite/gas/hppa/reloc/blebug.s @@ -0,0 +1,16 @@ + .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 + .IMPORT $$dyncall,MILLICODE ; Code for dynamic function calls. + +_sigtramp: + ldil L%$$dyncall,%r2 ; whose address is in r22. + ble R%$$dyncall(%sr4,%r2) diff --git a/gas/testsuite/gas/hppa/reloc/blebug2.s b/gas/testsuite/gas/hppa/reloc/blebug2.s new file mode 100755 index 0000000..9577b53 --- /dev/null +++ b/gas/testsuite/gas/hppa/reloc/blebug2.s @@ -0,0 +1,14 @@ + .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 + + ldil L%0xc0001004,%r1 + ble R%0xc0001004(%sr7,%r1) diff --git a/gas/testsuite/gas/hppa/reloc/blebug3.s b/gas/testsuite/gas/hppa/reloc/blebug3.s new file mode 100755 index 0000000..5ee9b3b --- /dev/null +++ b/gas/testsuite/gas/hppa/reloc/blebug3.s @@ -0,0 +1,14 @@ + .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 + .import yabba,code + + ble R%yabba(%sr4,%r0) diff --git a/gas/testsuite/gas/hppa/reloc/exitbug.s b/gas/testsuite/gas/hppa/reloc/exitbug.s new file mode 100644 index 0000000..8898e35 --- /dev/null +++ b/gas/testsuite/gas/hppa/reloc/exitbug.s @@ -0,0 +1,19 @@ + .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 + .IMPORT $global$,DATA + .IMPORT $$dyncall,MILLICODE +; gcc_compiled.: + .SPACE $TEXT$ + .SUBSPA $CODE$ + + .align 4 + .EXPORT foo,CODE + .EXPORT foo,ENTRY,PRIV_LEV=3 +foo: + .PROC + .CALLINFO FRAME=0 + .PROCEND diff --git a/gas/testsuite/gas/hppa/reloc/fixupbug.s b/gas/testsuite/gas/hppa/reloc/fixupbug.s new file mode 100644 index 0000000..8a58d02 --- /dev/null +++ b/gas/testsuite/gas/hppa/reloc/fixupbug.s @@ -0,0 +1,19 @@ + .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 + .SUBSPA $MILLICODE$,QUAD=0,ALIGN=8,ACCESS=44,SORT=8 + + .SPACE $TEXT$ + .SUBSPA $CODE$ + + b,n $$foo + nop + nop + + .SPACE $TEXT$ + .SUBSPA $MILLICODE$ +$$foo: + nop diff --git a/gas/testsuite/gas/hppa/reloc/funcrelocbug.s b/gas/testsuite/gas/hppa/reloc/funcrelocbug.s new file mode 100644 index 0000000..a2973b5 --- /dev/null +++ b/gas/testsuite/gas/hppa/reloc/funcrelocbug.s @@ -0,0 +1,186 @@ + .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 + .IMPORT $global$,DATA + .IMPORT $$dyncall,MILLICODE +; gcc_compiled.: + .SPACE $TEXT$ + .SUBSPA $CODE$ + + .align 4 + .EXPORT g,CODE + .EXPORT g,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,ARGW2=GR,RTNVAL=GR +g + .PROC + .CALLINFO FRAME=128,CALLS,SAVE_RP,SAVE_SP,ENTRY_GR=3 + .ENTRY + stw %r2,-20(0,%r30) + copy %r3,%r1 + copy %r30,%r3 + stwm %r1,128(0,%r30) + stw %r26,-36(0,%r3) + stw %r25,-40(0,%r3) + stw %r24,-44(0,%r3) + ldw -36(0,%r3),%r26 + ldw -40(0,%r3),%r25 + ldw -44(0,%r3),%r19 + copy %r19,%r22 + .CALL ARGW0=GR + bl $$dyncall,%r31 + copy %r31,%r2 + copy %r28,%r19 + comiclr,<> 0,%r19,0 + bl,n L$0002,0 + ldw -36(0,%r3),%r28 + bl,n L$0001,0 + bl,n L$0003,0 +L$0002 + ldw -40(0,%r3),%r28 + bl,n L$0001,0 +L$0003 +L$0001 + ldw -20(0,%r3),%r2 + ldo 64(%r3),%r30 + ldwm -64(0,%r30),%r3 + bv,n 0(%r2) + .EXIT + .PROCEND + .align 4 +f2___4 + .PROC + .CALLINFO FRAME=64,NO_CALLS,SAVE_SP,ENTRY_GR=3 + .ENTRY + copy %r3,%r1 + copy %r30,%r3 + stwm %r1,64(0,%r30) + stw %r29,8(0,%r3) + stw %r26,-36(0,%r3) + stw %r25,-40(0,%r3) + ldw -36(0,%r3),%r19 + ldw -40(0,%r3),%r20 + comclr,>= %r20,%r19,%r19 + ldi 1,%r19 + copy %r19,%r28 + bl,n L$0005,0 +L$0005 + ldo 64(%r3),%r30 + ldwm -64(0,%r30),%r3 + bv,n 0(%r2) + .EXIT + .PROCEND + .IMPORT abort,CODE + .SPACE $PRIVATE$ + .SUBSPA $DATA$ + + .align 4 +L$TRAMP0000 + ldw 36(0,%r22),%r21 + bb,>=,n %r21,30,.+16 + depi 0,31,2,%r21 + ldw 4(0,%r21),%r19 + ldw 0(0,%r21),%r21 + ldsid (0,%r21),%r1 + mtsp %r1,%sr0 + be 0(%sr0,%r21) + ldw 40(0,%r22),%r29 + .word 0 + .word 0 + .SPACE $TEXT$ + .SUBSPA $CODE$ + + .align 4 + .EXPORT f,CODE + .EXPORT f,ENTRY,PRIV_LEV=3,RTNVAL=GR +f + .PROC + .CALLINFO FRAME=192,CALLS,SAVE_RP,SAVE_SP,ENTRY_GR=3 + .ENTRY + stw %r2,-20(0,%r30) + copy %r3,%r1 + copy %r30,%r3 + stwm %r1,192(0,%r30) + ldo 16(%r3),%r19 + addil L'L$TRAMP0000-$global$,%r27 + ldo R'L$TRAMP0000-$global$(%r1),%r22 + ldo 40(0),%r20 + ldws,ma 4(0,%r22),%r21 + addib,>= -4,%r20,.-4 + stws,ma %r21,4(0,%r19) + ldil L'f2___4,%r20 + ldo R'f2___4(%r20),%r19 + stw %r19,52(0,%r3) + ldo 8(%r3),%r19 + stw %r19,56(0,%r3) + ldo 16(%r3),%r19 + ldo 48(%r3),%r20 + fdc 0(0,%r19) + fdc 0(0,%r20) + sync + ldo 32(%r19),%r22 + mfsp %sr0,%r21 + ldsid (0,%r19),%r20 + mtsp %r20,%sr0 + fic 0(%sr0,%r19) + fic 0(%sr0,%r22) + sync + mtsp %r21,%sr0 + nop + nop + nop + nop + nop + nop + ldo 16(%r3),%r19 + ldi 1,%r26 + ldi 2,%r25 + copy %r19,%r24 + .CALL ARGW0=NO,ARGW1=NO,ARGW2=NO,ARGW3=NO + bl g,%r2 + nop + copy %r28,%r19 + comiclr,<> 2,%r19,0 + bl,n L$0006,0 + .CALL ARGW0=NO,ARGW1=NO,ARGW2=NO,ARGW3=NO + bl abort,%r2 + nop +L$0006 +L$0004 + ldw -20(0,%r3),%r2 + ldo 64(%r3),%r30 + ldwm -64(0,%r30),%r3 + bv,n 0(%r2) + .EXIT + .PROCEND + .IMPORT __main,CODE + .IMPORT exit,CODE + .align 4 + .EXPORT main,CODE + .EXPORT main,ENTRY,PRIV_LEV=3,RTNVAL=GR +main + .PROC + .CALLINFO FRAME=128,CALLS,SAVE_RP,SAVE_SP,ENTRY_GR=3 + .ENTRY + stw %r2,-20(0,%r30) + copy %r3,%r1 + copy %r30,%r3 + stwm %r1,128(0,%r30) + .CALL ARGW0=NO,ARGW1=NO,ARGW2=NO,ARGW3=NO + bl __main,%r2 + nop + .CALL ARGW0=NO,ARGW1=NO,ARGW2=NO,ARGW3=NO + bl f,%r2 + nop + copy 0,%r26 + .CALL ARGW0=NO,ARGW1=NO,ARGW2=NO,ARGW3=NO + bl exit,%r2 + nop +L$0007 + ldw -20(0,%r3),%r2 + ldo 64(%r3),%r30 + ldwm -64(0,%r30),%r3 + bv,n 0(%r2) + .EXIT + .PROCEND diff --git a/gas/testsuite/gas/hppa/reloc/labelopbug.s b/gas/testsuite/gas/hppa/reloc/labelopbug.s new file mode 100755 index 0000000..1aa46c3 --- /dev/null +++ b/gas/testsuite/gas/hppa/reloc/labelopbug.s @@ -0,0 +1,37 @@ + .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 + .IMPORT $global$,DATA + .IMPORT $$dyncall,MILLICODE +; gcc_compiled.: + .SPACE $TEXT$ + .SUBSPA $CODE$ + + .align 4 +s: + .PROC + .CALLINFO FRAME=128,CALLS,SAVE_RP + .ENTRY + stw 2,-20(0,30) + copy 4,1 + copy 30,4 + stwm 1,128(0,30) + stw %r30,12(0,%r4) + ldil L'L$0007,%r19 + ldo R'L$0007(%r19),%r19 + comib,>= 0,%r26,L$0002 + stw %r19,8(0,%r4) +L$0003: +L$0002: + bl L$0001,0 + ldo 1(0),%r28 +L$0007: + ldil L'L$0002,%r19 + ldo R'L$0002(%r19),%r19 + comb,= %r29,%r19,L$0002 + ldo -8(%r4),%r4 + .EXIT + .PROCEND diff --git a/gas/testsuite/gas/hppa/reloc/longcall.s b/gas/testsuite/gas/hppa/reloc/longcall.s new file mode 100644 index 0000000..da62be7 --- /dev/null +++ b/gas/testsuite/gas/hppa/reloc/longcall.s @@ -0,0 +1,40 @@ + .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 + .IMPORT $global$,DATA + .IMPORT $$dyncall,MILLICODE +; gcc_compiled.: + .IMPORT bar,CODE + .SPACE $TEXT$ + .SUBSPA $CODE$ + + .align 4 + .EXPORT foo,CODE + .EXPORT foo,ENTRY,PRIV_LEV=3,RTNVAL=GR +foo + .PROC + .CALLINFO FRAME=64,CALLS,SAVE_RP + .ENTRY + stw %r2,-20(0,%r30) + .CALL + bl bar,%r2 + ldo 64(%r30),%r30 + .blockz 262144 + ldw -84(0,%r30),%r2 + bv 0(%r2) + ldo -64(%r30),%r30 + .EXIT + .PROCEND + .align 4 + .EXPORT bar,CODE + .EXPORT bar,ENTRY,PRIV_LEV=3,RTNVAL=GR +bar + .PROC + .CALLINFO FRAME=0,NO_CALLS + .ENTRY + bv,n 0(%r2) + .EXIT + .PROCEND diff --git a/gas/testsuite/gas/hppa/reloc/picreloc.s b/gas/testsuite/gas/hppa/reloc/picreloc.s new file mode 100644 index 0000000..639a44c --- /dev/null +++ b/gas/testsuite/gas/hppa/reloc/picreloc.s @@ -0,0 +1,13 @@ + + .SPACE $TEXT$,SORT=8 + .SUBSPA $CODE$,QUAD=0,ALIGN=4,ACCESS=0x2c,CODE_ONLY,SORT=24 + .SPACE $PRIVATE$,SORT=16 + .SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=0x1f,SORT=16 +bogo + .ALIGN 8 + .WORD bogo+4 ; = 0x4 + .STRING "\x00\x00\x00{\x00\x00\x01\xC8\x00\x00\x03\x15" + .SPACE $PRIVATE$ + .SUBSPA $DATA$ + .EXPORT bogo + .END diff --git a/gas/testsuite/gas/hppa/reloc/plabelbug.s b/gas/testsuite/gas/hppa/reloc/plabelbug.s new file mode 100755 index 0000000..3d6bc12 --- /dev/null +++ b/gas/testsuite/gas/hppa/reloc/plabelbug.s @@ -0,0 +1,47 @@ + .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 + .IMPORT $global$,DATA + .IMPORT $$dyncall,MILLICODE +; gcc_compiled.: + .IMPORT abort,CODE + .EXPORT f,DATA + .SPACE $PRIVATE$ + .SUBSPA $DATA$ + + .align 4 +f: + .word P%abort + .word P%abort + .IMPORT __main,CODE + .IMPORT printf,CODE + .SPACE $TEXT$ + .SUBSPA $CODE$ + + .align 4 +LC$0000: + .STRING "frob\x0a\x00" + .align 4 + .EXPORT main,CODE + .EXPORT main,ENTRY,PRIV_LEV=3,RTNVAL=GR +main: + .PROC + .CALLINFO FRAME=128,CALLS,SAVE_RP + .ENTRY + stw %r2,-20(0,%r30) + ldo 128(%r30),%r30 + .CALL + bl __main,2 + nop + ldil L'LC$0000,%r26 + .CALL ARGW0=GR + bl printf,2 + ldo R'LC$0000(%r26),%r26 + ldw -148(0,%r30),%r2 + bv 0(%r2) + ldo -128(%r30),%r30 + .EXIT + .PROCEND diff --git a/gas/testsuite/gas/hppa/reloc/r_no_reloc.s b/gas/testsuite/gas/hppa/reloc/r_no_reloc.s new file mode 100644 index 0000000..026f2d0 --- /dev/null +++ b/gas/testsuite/gas/hppa/reloc/r_no_reloc.s @@ -0,0 +1,45 @@ + .COPYRIGHT "MetaWare Incorporated, 1992" + .VERSION "hc2.6a -O1 t3.c\n" + + .SPACE $PRIVATE$,SORT=16 + .SUBSPA $BSS$,QUAD=1,ALIGN=8,ACCESS=0x1F,SORT=80,ZERO + .SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=0x1F,SORT=16 + + .SPACE $TEXT$,SORT=8 + .SUBSPA $CODE$,QUAD=0,ALIGN=4,ACCESS=44,CODE_ONLY,SORT=24 + + .SPACE $PRIVATE$ + .SUBSPA $DATA$ + .ALIGN 8 +$L00DATA + .ALIGN 8 + .EXPORT s +s + .WORD 0x0 + .BLOCKZ 786425 + .BLOCKZ 7 + + .SPACE $TEXT$ + .SUBSPA $CODE$ +L$001.3 +g .PROC + .CALLINFO FRAME=0,NO_CALLS + .ENTRY + ;ldo 120(%r0),%r28 --> to delay slot + bv %r0(%r2) + .EXIT + ldo 120(%r0),%r28 + .PROCEND + + + .SPACE $PRIVATE$ + .SUBSPA $DATA$ + .ALIGN 4 + .EXPORT l +l + .WORD P'g + .IMPORT common,DATA ; common section, size=0 + .IMPORT $global$,DATA + .EXPORT g,ENTRY,PRIV_LEV=3,RTNVAL=GR + .END + diff --git a/gas/testsuite/gas/hppa/reloc/reduce.s b/gas/testsuite/gas/hppa/reloc/reduce.s new file mode 100755 index 0000000..e7aba83 --- /dev/null +++ b/gas/testsuite/gas/hppa/reloc/reduce.s @@ -0,0 +1,48 @@ + .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 + .IMPORT $global$,DATA + .IMPORT $$dyncall,MILLICODE +; gcc_compiled.: + .SPACE $TEXT$ + .SUBSPA $CODE$ + + .align 4 + .PARAM foo,RTNVAL=GR +foo: + .PROC + .CALLINFO FRAME=0,NO_CALLS + .ENTRY + bv,n 0(%r2) + .EXIT + .PROCEND + .SPACE $TEXT$ + .SUBSPA $CODE$ + + .align 4 +LC$0000: + .word P%foo + .SPACE $TEXT$ + .SUBSPA $CODE$ + + .align 4 + .EXPORT bar,CODE + .EXPORT bar,ENTRY,PRIV_LEV=3,RTNVAL=GR +bar: + .PROC + .CALLINFO FRAME=128,CALLS,SAVE_RP + .ENTRY + ldil L'LC$0000,%r19 + ldw R'LC$0000(%r19),%r26 + stw %r2,-20(0,%r30) + .CALL ARGW0=GR + bl foo,%r2 + ldo 128(%r30),%r30 + ldw -148(0,%r30),%r2 + bv 0(%r2) + ldo -128(%r30),%r30 + .EXIT + .PROCEND diff --git a/gas/testsuite/gas/hppa/reloc/reduce2.s b/gas/testsuite/gas/hppa/reloc/reduce2.s new file mode 100644 index 0000000..2828036 --- /dev/null +++ b/gas/testsuite/gas/hppa/reloc/reduce2.s @@ -0,0 +1,80 @@ + .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 + .IMPORT $global$,DATA + .IMPORT $$dyncall,MILLICODE +; gcc_compiled.: + .SPACE $TEXT$ + .SUBSPA $LIT$ + + .align 8 +L$P0000 + .word 0x12345678 + .word 0x0 + + .align 8 +L$C0000 + .word 0x3ff00000 + .word 0x0 + .SPACE $TEXT$ + .SUBSPA $CODE$ + + .align 4 + .EXPORT g,ENTRY,PRIV_LEV=3,RTNVAL=FR +g + .PROC + .CALLINFO FRAME=0,NO_CALLS + .ENTRY + stw %r19,-32(0,%r30) + ldw T'L$C0000(%r19),%r20 + bv 0(%r2) + fldds 0(0,%r20),%fr4 + .EXIT + .PROCEND + .IMPORT abort,CODE + .IMPORT exit,CODE + .SPACE $TEXT$ + .SUBSPA $LIT$ + + .align 8 +L$C0001 + .word 0x3ff00000 + .word 0x0 + .SPACE $TEXT$ + .SUBSPA $CODE$ + + .align 4 + .EXPORT main,ENTRY,PRIV_LEV=3,RTNVAL=GR +main + .PROC + .CALLINFO FRAME=128,CALLS,SAVE_RP,ENTRY_GR=3 + .ENTRY + stw %r2,-20(0,%r30) + ldo 128(%r30),%r30 + stw %r19,-32(0,%r30) + stw %r4,-128(0,%r30) + + copy %r19,%r4 + .CALL + bl g,%r2 + copy %r4,%r19 + copy %r4,%r19 + ldw T'L$C0001(%r19),%r20 + fldds 0(0,%r20),%fr8 + fcmp,dbl,= %fr4,%fr8 + ftest + add,tr 0,0,0 + bl,n L$0003,0 + .CALL + bl abort,%r2 + nop +L$0003 + .CALL ARGW0=GR + bl exit,%r2 + ldi 0,%r26 + nop + .EXIT + .PROCEND diff --git a/gas/testsuite/gas/hppa/reloc/reduce3.s b/gas/testsuite/gas/hppa/reloc/reduce3.s new file mode 100644 index 0000000..338f730 --- /dev/null +++ b/gas/testsuite/gas/hppa/reloc/reduce3.s @@ -0,0 +1,51 @@ + .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 + .IMPORT $global$,DATA + .IMPORT $$dyncall,MILLICODE +; gcc_compiled.: + .EXPORT blah,DATA + .SPACE $PRIVATE$ + .SUBSPA $DATA$ + + .align 8 +blah + ; .double 0e+00 + .word 0 ; = 0x0 + .word 0 ; = 0x0 + .EXPORT foo,DATA + .align 8 +foo + ; .double 0e+00 + .word 0 ; = 0x0 + .word 0 ; = 0x0 + .EXPORT yabba,DATA + .align 4 +yabba + .word 1 + .SPACE $TEXT$ + .SUBSPA $CODE$ + + .align 4 + .EXPORT bar,CODE + .EXPORT bar,ENTRY,PRIV_LEV=3,RTNVAL=GR +bar + .PROC + .CALLINFO FRAME=64,NO_CALLS,SAVE_SP,ENTRY_GR=3 + .ENTRY + copy %r3,%r1 + copy %r30,%r3 + stwm %r1,64(0,%r30) + addil L'yabba-$global$,%r27 + ldo R'yabba-$global$(%r1),%r19 + ldi 2,%r20 + stw %r20,0(0,%r19) +L$0001 + ldo 64(%r3),%r30 + ldwm -64(0,%r30),%r3 + bv,n 0(%r2) + .EXIT + .PROCEND diff --git a/gas/testsuite/gas/hppa/reloc/reloc.exp b/gas/testsuite/gas/hppa/reloc/reloc.exp old mode 100644 new mode 100755 diff --git a/gas/testsuite/gas/hppa/reloc/roundmode.s b/gas/testsuite/gas/hppa/reloc/roundmode.s new file mode 100644 index 0000000..5a87e63 --- /dev/null +++ b/gas/testsuite/gas/hppa/reloc/roundmode.s @@ -0,0 +1,23 @@ + .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 + .IMPORT foo,data + +; Switch in/out of different rounding modes. +; Also make sure we "optimize" away useless rounding mode relocations + addil LR'foo-0x12345,%r27 + ldo RR'foo-0x12345(%r1),%r1 + addil L'foo-0x12345,%r27 + ldo R'foo-0x12345(%r1),%r1 + addil LR'foo-0x12345,%r27 + ldo RR'foo-0x12345(%r1),%r1 + addil LR'foo-0x12345,%r27 + ldo RR'foo-0x12345(%r1),%r1 diff --git a/gas/testsuite/gas/hppa/reloc/selectorbug.s b/gas/testsuite/gas/hppa/reloc/selectorbug.s new file mode 100644 index 0000000..6925d38 --- /dev/null +++ b/gas/testsuite/gas/hppa/reloc/selectorbug.s @@ -0,0 +1,28 @@ + .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 + .IMPORT $global$,DATA + .IMPORT $$dyncall,MILLICODE +; gcc_compiled.: + .EXPORT intVec_error_handler,DATA + .SPACE $PRIVATE$ + .SUBSPA $DATA$ + +intVec_error_handler: + .word P%default_intVec_error_handler__FPCc + .SPACE $TEXT$ + .SUBSPA $CODE$ + + .align 4 + .EXPORT foo,CODE + .EXPORT foo,ENTRY,PRIV_LEV=3 +foo: + .PROC + .CALLINFO FRAME=0 + .ENTRY + .stabd 68,0,41 + .EXIT + .PROCEND diff --git a/gas/testsuite/gas/hppa/unsorted/align3.s b/gas/testsuite/gas/hppa/unsorted/align3.s new file mode 100644 index 0000000..8bd2408 --- /dev/null +++ b/gas/testsuite/gas/hppa/unsorted/align3.s @@ -0,0 +1,20 @@ + .SPACE $PRIVATE$ + .SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=31 + .SPACE $TEXT$ + .SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY + + .blockz 4 + +main: + .SPACE $PRIVATE$ + .SUBSPA $DATA$ + + .SPACE $TEXT$ + .SUBSPA $CODE$ + + .PROC + .CALLINFO FRAME=0 + .ENTRY + nop + .EXIT + .PROCEND diff --git a/gas/testsuite/gas/hppa/unsorted/align4.s b/gas/testsuite/gas/hppa/unsorted/align4.s new file mode 100644 index 0000000..9f2f99b --- /dev/null +++ b/gas/testsuite/gas/hppa/unsorted/align4.s @@ -0,0 +1,4 @@ + .space $TEXT$ + .subspa $YABBA$ + .subspa $MILLICODE$ + .align 64 diff --git a/gas/testsuite/gas/hppa/unsorted/brlenbug.s b/gas/testsuite/gas/hppa/unsorted/brlenbug.s new file mode 100644 index 0000000..536b564 --- /dev/null +++ b/gas/testsuite/gas/hppa/unsorted/brlenbug.s @@ -0,0 +1,3502 @@ + .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 + .IMPORT $global$,DATA + .IMPORT $$dyncall,MILLICODE +; gcc_compiled.: + .SPACE $PRIVATE$ + .SUBSPA $DATA$ + + .align 4 +done___2 + .word 0 + .IMPORT memset,CODE + .EXPORT re_syntax_options,DATA + .align 4 +re_syntax_options + .word 0 + .SPACE $PRIVATE$ + .SUBSPA $DATA$ + + .align 4 +re_error_msg + .word 0 + .word L$C0000 + .word L$C0001 + .word L$C0002 + .word L$C0003 + .word L$C0004 + .word L$C0005 + .word L$C0006 + .word L$C0007 + .word L$C0008 + .word L$C0009 + .word L$C0010 + .word L$C0011 + .word L$C0012 + .word L$C0013 + .word L$C0014 + .word L$C0015 + .SPACE $TEXT$ + .SUBSPA $LIT$ + + .align 4 +L$C0015 + .STRING "Unmatched ) or \\)\x00" + .align 4 +L$C0014 + .STRING "Regular expression too big\x00" + .align 4 +L$C0013 + .STRING "Premature end of regular expression\x00" + .align 4 +L$C0012 + .STRING "Invalid preceding regular expression\x00" + .align 4 +L$C0011 + .STRING "Memory exhausted\x00" + .align 4 +L$C0010 + .STRING "Invalid range end\x00" + .align 4 +L$C0009 + .STRING "Invalid content of \\{\\}\x00" + .align 4 +L$C0008 + .STRING "Unmatched \\{\x00" + .align 4 +L$C0007 + .STRING "Unmatched ( or \\(\x00" + .align 4 +L$C0006 + .STRING "Unmatched [ or [^\x00" + .align 4 +L$C0005 + .STRING "Invalid back reference\x00" + .align 4 +L$C0004 + .STRING "Trailing backslash\x00" + .align 4 +L$C0003 + .STRING "Invalid character class name\x00" + .align 4 +L$C0002 + .STRING "Invalid collation character\x00" + .align 4 +L$C0001 + .STRING "Invalid regular expression\x00" + .align 4 +L$C0000 + .STRING "No match\x00" + .EXPORT re_max_failures,DATA + .SPACE $PRIVATE$ + .SUBSPA $DATA$ + + .align 4 +re_max_failures + .word 2000 + .IMPORT malloc,CODE + .IMPORT realloc,CODE + .IMPORT free,CODE + .IMPORT strcmp,CODE + .SPACE $TEXT$ + .SUBSPA $LIT$ + + .align 4 +L$C0016 + .STRING "alnum\x00" + .align 4 +L$C0017 + .STRING "alpha\x00" + .align 4 +L$C0018 + .STRING "blank\x00" + .align 4 +L$C0019 + .STRING "cntrl\x00" + .align 4 +L$C0020 + .STRING "digit\x00" + .align 4 +L$C0021 + .STRING "graph\x00" + .align 4 +L$C0022 + .STRING "lower\x00" + .align 4 +L$C0023 + .STRING "print\x00" + .align 4 +L$C0024 + .STRING "punct\x00" + .align 4 +L$C0025 + .STRING "space\x00" + .align 4 +L$C0026 + .STRING "upper\x00" + .align 4 +L$C0027 + .STRING "xdigit\x00" + .IMPORT __alnum,DATA + .IMPORT __ctype2,DATA + .IMPORT __ctype,DATA + .IMPORT at_begline_loc_p,CODE + .IMPORT at_endline_loc_p,CODE + .IMPORT store_op1,CODE + .IMPORT insert_op1,CODE + .IMPORT store_op2,CODE + .IMPORT insert_op2,CODE + .IMPORT compile_range,CODE + .IMPORT group_in_compile_stack,CODE + .SPACE $TEXT$ + .SUBSPA $CODE$ + + .align 4 +regex_compile + .PROC + .CALLINFO FRAME=320,CALLS,SAVE_RP,ENTRY_GR=18 + .ENTRY + stw %r2,-20(0,%r30) ;# 8989 reload_outsi+2/6 + ldo 320(%r30),%r30 ;# 8991 addsi3/2 + stw %r18,-168(0,%r30) ;# 8993 reload_outsi+2/6 + stw %r17,-164(0,%r30) ;# 8995 reload_outsi+2/6 + stw %r16,-160(0,%r30) ;# 8997 reload_outsi+2/6 + stw %r15,-156(0,%r30) ;# 8999 reload_outsi+2/6 + stw %r14,-152(0,%r30) ;# 9001 reload_outsi+2/6 + stw %r13,-148(0,%r30) ;# 9003 reload_outsi+2/6 + stw %r12,-144(0,%r30) ;# 9005 reload_outsi+2/6 + stw %r11,-140(0,%r30) ;# 9007 reload_outsi+2/6 + stw %r10,-136(0,%r30) ;# 9009 reload_outsi+2/6 + stw %r9,-132(0,%r30) ;# 9011 reload_outsi+2/6 + stw %r8,-128(0,%r30) ;# 9013 reload_outsi+2/6 + stw %r7,-124(0,%r30) ;# 9015 reload_outsi+2/6 + stw %r6,-120(0,%r30) ;# 9017 reload_outsi+2/6 + stw %r5,-116(0,%r30) ;# 9019 reload_outsi+2/6 + stw %r4,-112(0,%r30) ;# 9021 reload_outsi+2/6 + stw %r3,-108(0,%r30) ;# 9023 reload_outsi+2/6 + stw %r26,-276(0,%r30) ;# 4 reload_outsi+2/6 + ldi 0,%r9 ;# 25 reload_outsi+2/2 + ldi 0,%r8 ;# 28 reload_outsi+2/2 + stw 0,-260(0,%r30) ;# 34 reload_outsi+2/6 + ldi 0,%r10 ;# 31 reload_outsi+2/2 + ldi 640,%r26 ;# 37 reload_outsi+2/2 + ldw -276(0,%r30),%r1 ;# 8774 reload_outsi+2/5 + copy %r24,%r15 ;# 8 reload_outsi+2/1 + stw %r1,-296(0,%r30) ;# 2325 reload_outsi+2/6 + copy %r23,%r5 ;# 10 reload_outsi+2/1 + addl %r1,%r25,%r16 ;# 19 addsi3/1 + .CALL ARGW0=GR + bl malloc,%r2 ;# 39 call_value_internal_symref + ldw 20(0,%r5),%r14 ;# 22 reload_outsi+2/5 + comib,<> 0,%r28,L$0021 ;# 48 bleu+1 + stw %r28,-312(0,%r30) ;# 43 reload_outsi+2/6 +L$0953 + bl L$0867,0 ;# 53 jump + ldi 12,%r28 ;# 51 reload_outsi+2/2 +L$0021 + ldi 32,%r19 ;# 58 reload_outsi+2/2 + stw %r19,-308(0,%r30) ;# 59 reload_outsi+2/6 + stw 0,-304(0,%r30) ;# 62 reload_outsi+2/6 + stw %r15,12(0,%r5) ;# 65 reload_outsi+2/6 + stw 0,8(0,%r5) ;# 85 reload_outsi+2/6 + stw 0,24(0,%r5) ;# 88 reload_outsi+2/6 + addil LR'done___2-$global$,%r27 ;# 92 pic2_lo_sum+1 + ldw 28(0,%r5),%r19 ;# 68 reload_outsi+2/5 + ldw RR'done___2-$global$(%r1),%r20 ;# 94 reload_outsi+2/5 + depi 0,3,1,%r19 ;# 69 andsi3/2 + depi 0,6,2,%r19 ;# 80 andsi3/2 + comib,<> 0,%r20,L$0022 ;# 95 bleu+1 + stw %r19,28(0,%r5) ;# 82 reload_outsi+2/6 + addil LR're_syntax_table-$global$,%r27 ;# 99 pic2_lo_sum+1 + ldo RR're_syntax_table-$global$(%r1),%r4 ;# 100 movhi-2 + copy %r4,%r26 ;# 101 reload_outsi+2/1 + ldi 0,%r25 ;# 102 reload_outsi+2/2 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl memset,%r2 ;# 104 call_value_internal_symref + ldi 256,%r24 ;# 103 reload_outsi+2/2 + ldi 1,%r20 ;# 8732 movqi+1/2 + ldo 97(%r4),%r19 ;# 8736 addsi3/2 + ldo 122(%r4),%r4 ;# 8738 addsi3/2 + stbs,ma %r20,1(0,%r19) ;# 115 movqi+1/6 +L$1155 + comb,>=,n %r4,%r19,L$1155 ;# 121 bleu+1 + stbs,ma %r20,1(0,%r19) ;# 115 movqi+1/6 + ldi 1,%r21 ;# 8717 movqi+1/2 + addil LR're_syntax_table-$global$,%r27 ;# 8712 pic2_lo_sum+1 + ldo RR're_syntax_table-$global$(%r1),%r19 ;# 8715 movhi-2 + ldo 65(%r19),%r20 ;# 8721 addsi3/2 + ldo 90(%r19),%r19 ;# 8723 addsi3/2 + stbs,ma %r21,1(0,%r20) ;# 138 movqi+1/6 +L$1156 + comb,>=,n %r19,%r20,L$1156 ;# 144 bleu+1 + stbs,ma %r21,1(0,%r20) ;# 138 movqi+1/6 + ldi 48,%r20 ;# 151 reload_outsi+2/2 + ldi 57,%r22 ;# 7976 reload_outsi+2/2 + ldi 1,%r21 ;# 8707 movqi+1/2 + addil LR're_syntax_table-$global$+48,%r27 ;# 8705 pic2_lo_sum+1 + ldo RR're_syntax_table-$global$+48(%r1),%r19 ;# 8711 movhi-2 +L$0037 + ldo 1(%r20),%r20 ;# 164 addsi3/2 + comb,>= %r22,%r20,L$0037 ;# 167 bleu+1 + stbs,ma %r21,1(0,%r19) ;# 161 movqi+1/6 + addil LR're_syntax_table-$global$,%r27 ;# 174 pic2_lo_sum+1 + ldo RR're_syntax_table-$global$(%r1),%r19 ;# 175 movhi-2 + ldi 1,%r20 ;# 176 movqi+1/2 + stb %r20,95(0,%r19) ;# 177 movqi+1/6 + addil LR'done___2-$global$,%r27 ;# 178 pic2_lo_sum+1 + ldi 1,%r19 ;# 180 reload_outsi+2/2 + stw %r19,RR'done___2-$global$(%r1) ;# 181 reload_outsi+2/6 +L$0022 + ldw 4(0,%r5),%r19 ;# 187 reload_outsi+2/5 + comib,<>,n 0,%r19,L$0039 ;# 189 bleu+1 + ldw 0(0,%r5),%r26 ;# 193 reload_outsi+2/5 + comib,=,n 0,%r26,L$0040 ;# 195 bleu+1 + .CALL ARGW0=GR,ARGW1=GR + bl realloc,%r2 ;# 205 call_value_internal_symref + ldi 32,%r25 ;# 203 reload_outsi+2/2 + bl L$1157,0 ;# 211 jump + stw %r28,0(0,%r5) ;# 223 reload_outsi+2/6 +L$0040 + .CALL ARGW0=GR + bl malloc,%r2 ;# 219 call_value_internal_symref + ldi 32,%r26 ;# 217 reload_outsi+2/2 + stw %r28,0(0,%r5) ;# 223 reload_outsi+2/6 +L$1157 + ldw 0(0,%r5),%r19 ;# 228 reload_outsi+2/5 + comib,<> 0,%r19,L$0042 ;# 230 bleu+1 + ldi 32,%r19 ;# 243 reload_outsi+2/2 + .CALL ARGW0=GR + bl free,%r2 ;# 234 call_internal_symref + ldw -312(0,%r30),%r26 ;# 232 reload_outsi+2/5 + bl L$0867,0 ;# 238 jump + ldi 12,%r28 ;# 51 reload_outsi+2/2 +L$0042 + stw %r19,4(0,%r5) ;# 244 reload_outsi+2/6 +L$0039 + ldw 0(0,%r5),%r6 ;# 249 reload_outsi+2/5 + ldw -296(0,%r30),%r19 ;# 7981 reload_outsi+2/5 + comclr,<> %r16,%r19,0 ;# 7982 bleu+1 + bl L$0044,0 + copy %r6,%r12 ;# 253 reload_outsi+2/1 + ldw -296(0,%r30),%r19 ;# 2334 reload_outsi+2/5 +L$1178 + ldbs,ma 1(0,%r19),%r7 ;# 277 zero_extendqisi2/2 + comib,= 0,%r14,L$0047 ;# 282 bleu+1 + stw %r19,-296(0,%r30) ;# 2337 reload_outsi+2/6 + addl %r14,%r7,%r19 ;# 283 addsi3/1 + ldb 0(0,%r19),%r7 ;# 286 zero_extendqisi2/2 +L$0047 + ldo -10(%r7),%r19 ;# 7895 addsi3/2 + addi,uv -115,%r19,0 ;# 7896 casesi0 + blr,n %r19,0 + b,n L$0076 +L$0863 + bl L$0376,0 + nop ;# 9092 switch_jump +L$0954 + bl L$0076,0 + nop ;# 9095 switch_jump +L$0955 + bl L$0076,0 + nop ;# 9098 switch_jump +L$0956 + bl L$0076,0 + nop ;# 9101 switch_jump +L$0957 + bl L$0076,0 + nop ;# 9104 switch_jump +L$0958 + bl L$0076,0 + nop ;# 9107 switch_jump +L$0959 + bl L$0076,0 + nop ;# 9110 switch_jump +L$0960 + bl L$0076,0 + nop ;# 9113 switch_jump +L$0961 + bl L$0076,0 + nop ;# 9116 switch_jump +L$0962 + bl L$0076,0 + nop ;# 9119 switch_jump +L$0963 + bl L$0076,0 + nop ;# 9122 switch_jump +L$0964 + bl L$0076,0 + nop ;# 9125 switch_jump +L$0965 + bl L$0076,0 + nop ;# 9128 switch_jump +L$0966 + bl L$0076,0 + nop ;# 9131 switch_jump +L$0967 + bl L$0076,0 + nop ;# 9134 switch_jump +L$0968 + bl L$0076,0 + nop ;# 9137 switch_jump +L$0969 + bl L$0076,0 + nop ;# 9140 switch_jump +L$0970 + bl L$0076,0 + nop ;# 9143 switch_jump +L$0971 + bl L$0076,0 + nop ;# 9146 switch_jump +L$0972 + bl L$0076,0 + nop ;# 9149 switch_jump +L$0973 + bl L$0076,0 + nop ;# 9152 switch_jump +L$0974 + bl L$0076,0 + nop ;# 9155 switch_jump +L$0975 + bl L$0076,0 + nop ;# 9158 switch_jump +L$0976 + bl L$0076,0 + nop ;# 9161 switch_jump +L$0977 + bl L$0076,0 + nop ;# 9164 switch_jump +L$0978 + bl L$0076,0 + nop ;# 9167 switch_jump +L$0979 + bl L$0077,0 ;# 9170 switch_jump + ldw -296(0,%r30),%r26 ;# 2349 reload_outsi+2/5 +L$0980 + bl L$0076,0 + nop ;# 9173 switch_jump +L$0981 + bl L$0076,0 + nop ;# 9176 switch_jump +L$0982 + bl L$0076,0 + nop ;# 9179 switch_jump +L$0983 + bl L$0368,0 + nop ;# 9182 switch_jump +L$0984 + bl L$0372,0 + nop ;# 9185 switch_jump +L$0985 + bl L$0104,0 + nop ;# 9188 switch_jump +L$0986 + bl L$1158,0 ;# 9191 switch_jump + ldi 1026,%r19 ;# 662 reload_outsi+2/2 +L$0987 + bl L$0076,0 + nop ;# 9194 switch_jump +L$0988 + bl L$0076,0 + nop ;# 9197 switch_jump +L$0989 + bl L$0196,0 ;# 9200 switch_jump + ldw 0(0,%r5),%r4 ;# 8027 reload_outsi+2/5 +L$0990 + bl L$0076,0 + nop ;# 9203 switch_jump +L$0991 + bl L$0076,0 + nop ;# 9206 switch_jump +L$0992 + bl L$0076,0 + nop ;# 9209 switch_jump +L$0993 + bl L$0076,0 + nop ;# 9212 switch_jump +L$0994 + bl L$0076,0 + nop ;# 9215 switch_jump +L$0995 + bl L$0076,0 + nop ;# 9218 switch_jump +L$0996 + bl L$0076,0 + nop ;# 9221 switch_jump +L$0997 + bl L$0076,0 + nop ;# 9224 switch_jump +L$0998 + bl L$0076,0 + nop ;# 9227 switch_jump +L$0999 + bl L$0076,0 + nop ;# 9230 switch_jump +L$1000 + bl L$0076,0 + nop ;# 9233 switch_jump +L$1001 + bl L$0076,0 + nop ;# 9236 switch_jump +L$1002 + bl L$0076,0 + nop ;# 9239 switch_jump +L$1003 + bl L$0076,0 + nop ;# 9242 switch_jump +L$1004 + bl L$0076,0 + nop ;# 9245 switch_jump +L$1005 + bl L$0076,0 + nop ;# 9248 switch_jump +L$1006 + bl L$0101,0 ;# 9251 switch_jump + ldi 1026,%r19 ;# 662 reload_outsi+2/2 +L$1007 + bl L$0076,0 + nop ;# 9254 switch_jump +L$1008 + bl L$0076,0 + nop ;# 9257 switch_jump +L$1009 + bl L$0076,0 + nop ;# 9260 switch_jump +L$1010 + bl L$0076,0 + nop ;# 9263 switch_jump +L$1011 + bl L$0076,0 + nop ;# 9266 switch_jump +L$1012 + bl L$0076,0 + nop ;# 9269 switch_jump +L$1013 + bl L$0076,0 + nop ;# 9272 switch_jump +L$1014 + bl L$0076,0 + nop ;# 9275 switch_jump +L$1015 + bl L$0076,0 + nop ;# 9278 switch_jump +L$1016 + bl L$0076,0 + nop ;# 9281 switch_jump +L$1017 + bl L$0076,0 + nop ;# 9284 switch_jump +L$1018 + bl L$0076,0 + nop ;# 9287 switch_jump +L$1019 + bl L$0076,0 + nop ;# 9290 switch_jump +L$1020 + bl L$0076,0 + nop ;# 9293 switch_jump +L$1021 + bl L$0076,0 + nop ;# 9296 switch_jump +L$1022 + bl L$0076,0 + nop ;# 9299 switch_jump +L$1023 + bl L$0076,0 + nop ;# 9302 switch_jump +L$1024 + bl L$0076,0 + nop ;# 9305 switch_jump +L$1025 + bl L$0076,0 + nop ;# 9308 switch_jump +L$1026 + bl L$0076,0 + nop ;# 9311 switch_jump +L$1027 + bl L$0076,0 + nop ;# 9314 switch_jump +L$1028 + bl L$0076,0 + nop ;# 9317 switch_jump +L$1029 + bl L$0076,0 + nop ;# 9320 switch_jump +L$1030 + bl L$0076,0 + nop ;# 9323 switch_jump +L$1031 + bl L$0076,0 + nop ;# 9326 switch_jump +L$1032 + bl L$0076,0 + nop ;# 9329 switch_jump +L$1033 + bl L$0076,0 + nop ;# 9332 switch_jump +L$1034 + bl L$0216,0 ;# 9335 switch_jump + ldw -296(0,%r30),%r19 ;# 2418 reload_outsi+2/5 +L$1035 + bl L$0387,0 ;# 9338 switch_jump + ldw -296(0,%r30),%r19 ;# 3797 reload_outsi+2/5 +L$1036 + bl L$0076,0 + nop ;# 9341 switch_jump +L$1037 + bl L$0053,0 ;# 9344 switch_jump + ldw -276(0,%r30),%r1 ;# 8777 reload_outsi+2/5 +L$1038 + bl L$0076,0 + nop ;# 9347 switch_jump +L$1039 + bl L$0076,0 + nop ;# 9350 switch_jump +L$1040 + bl L$0076,0 + nop ;# 9353 switch_jump +L$1041 + bl L$0076,0 + nop ;# 9356 switch_jump +L$1042 + bl L$0076,0 + nop ;# 9359 switch_jump +L$1043 + bl L$0076,0 + nop ;# 9362 switch_jump +L$1044 + bl L$0076,0 + nop ;# 9365 switch_jump +L$1045 + bl L$0076,0 + nop ;# 9368 switch_jump +L$1046 + bl L$0076,0 + nop ;# 9371 switch_jump +L$1047 + bl L$0076,0 + nop ;# 9374 switch_jump +L$1048 + bl L$0076,0 + nop ;# 9377 switch_jump +L$1049 + bl L$0076,0 + nop ;# 9380 switch_jump +L$1050 + bl L$0076,0 + nop ;# 9383 switch_jump +L$1051 + bl L$0076,0 + nop ;# 9386 switch_jump +L$1052 + bl L$0076,0 + nop ;# 9389 switch_jump +L$1053 + bl L$0076,0 + nop ;# 9392 switch_jump +L$1054 + bl L$0076,0 + nop ;# 9395 switch_jump +L$1055 + bl L$0076,0 + nop ;# 9398 switch_jump +L$1056 + bl L$0076,0 + nop ;# 9401 switch_jump +L$1057 + bl L$0076,0 + nop ;# 9404 switch_jump +L$1058 + bl L$0076,0 + nop ;# 9407 switch_jump +L$1059 + bl L$0076,0 + nop ;# 9410 switch_jump +L$1060 + bl L$0076,0 + nop ;# 9413 switch_jump +L$1061 + bl L$0076,0 + nop ;# 9416 switch_jump +L$1062 + bl L$0076,0 + nop ;# 9419 switch_jump +L$1063 + bl L$0076,0 + nop ;# 9422 switch_jump +L$1064 + bl L$0076,0 + nop ;# 9425 switch_jump +L$1065 + bl L$0076,0 + nop ;# 9428 switch_jump +L$1066 + bl L$0383,0 ;# 9431 switch_jump + ldi 4608,%r20 ;# 3778 reload_outsi+2/2 +L$1067 + bl L$0380,0 + nop ;# 9434 switch_jump +L$1068 + bl,n L$0076,0 ;# 7899 jump +L$0053 + ldw -296(0,%r30),%r25 ;# 2343 reload_outsi+2/5 + ldo 1(%r1),%r19 ;# 306 addsi3/2 + comb,=,n %r19,%r25,L$0055 ;# 308 bleu+1 + bb,< %r15,28,L$0055 ;# 313 bleu+3 + ldw -276(0,%r30),%r26 ;# 315 reload_outsi+2/5 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl at_begline_loc_p,%r2 ;# 321 call_value_internal_symref + copy %r15,%r24 ;# 319 reload_outsi+2/1 + extrs %r28,31,8,%r28 ;# 324 extendqisi2 + comiclr,<> 0,%r28,0 ;# 326 bleu+1 + bl,n L$0076,0 +L$0055 + ldw 0(0,%r5),%r4 ;# 7986 reload_outsi+2/5 + ldw 4(0,%r5),%r20 ;# 7989 reload_outsi+2/5 + sub %r6,%r4,%r19 ;# 7987 subsi3/1 + ldo 1(%r19),%r19 ;# 7988 addsi3/2 + comb,>>=,n %r20,%r19,L$0060 ;# 7990 bleu+1 + ldil L'65536,%r3 ;# 8701 reload_outsi+2/3 +L$0061 + comclr,<> %r3,%r20,0 ;# 357 bleu+1 + bl L$0944,0 + zdep %r20,30,31,%r19 ;# 367 ashlsi3+1 + comb,>>= %r3,%r19,L$0066 ;# 375 bleu+1 + stw %r19,4(0,%r5) ;# 369 reload_outsi+2/6 + stw %r3,4(0,%r5) ;# 378 reload_outsi+2/6 +L$0066 + ldw 0(0,%r5),%r26 ;# 385 reload_outsi+2/5 + .CALL ARGW0=GR,ARGW1=GR + bl realloc,%r2 ;# 389 call_value_internal_symref + ldw 4(0,%r5),%r25 ;# 387 reload_outsi+2/5 + comib,= 0,%r28,L$0953 ;# 397 bleu+1 + stw %r28,0(0,%r5) ;# 393 reload_outsi+2/6 + comb,= %r28,%r4,L$0059 ;# 407 bleu+1 + sub %r6,%r4,%r19 ;# 409 subsi3/1 + addl %r28,%r19,%r6 ;# 412 addsi3/1 + sub %r12,%r4,%r19 ;# 413 subsi3/1 + comib,= 0,%r10,L$0069 ;# 418 bleu+1 + addl %r28,%r19,%r12 ;# 416 addsi3/1 + sub %r10,%r4,%r19 ;# 419 subsi3/1 + addl %r28,%r19,%r10 ;# 422 addsi3/1 +L$0069 + comib,= 0,%r8,L$0070 ;# 425 bleu+1 + sub %r8,%r4,%r19 ;# 426 subsi3/1 + addl %r28,%r19,%r8 ;# 429 addsi3/1 +L$0070 + comib,= 0,%r9,L$0059 ;# 432 bleu+1 + sub %r9,%r4,%r19 ;# 433 subsi3/1 + addl %r28,%r19,%r9 ;# 436 addsi3/1 +L$0059 + ldw 0(0,%r5),%r4 ;# 337 reload_outsi+2/5 + ldw 4(0,%r5),%r20 ;# 341 reload_outsi+2/5 + sub %r6,%r4,%r19 ;# 338 subsi3/1 + ldo 1(%r19),%r19 ;# 339 addsi3/2 + comb,<< %r20,%r19,L$0061 + nop ;# 343 bleu+1 +L$0060 + ldi 8,%r19 ;# 458 movqi+1/2 + bl L$0043,0 ;# 479 jump + stbs,ma %r19,1(0,%r6) ;# 459 movqi+1/6 +L$0077 + comb,=,n %r16,%r26,L$0079 ;# 485 bleu+1 + bb,< %r15,28,L$0079 ;# 490 bleu+3 + copy %r16,%r25 ;# 494 reload_outsi+2/1 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl at_endline_loc_p,%r2 ;# 498 call_value_internal_symref + copy %r15,%r24 ;# 496 reload_outsi+2/1 + extrs %r28,31,8,%r28 ;# 501 extendqisi2 + comiclr,<> 0,%r28,0 ;# 503 bleu+1 + bl,n L$0076,0 +L$0079 + ldw 0(0,%r5),%r4 ;# 7994 reload_outsi+2/5 + ldw 4(0,%r5),%r20 ;# 7997 reload_outsi+2/5 + sub %r6,%r4,%r19 ;# 7995 subsi3/1 + ldo 1(%r19),%r19 ;# 7996 addsi3/2 + comb,>>=,n %r20,%r19,L$0084 ;# 7998 bleu+1 + ldil L'65536,%r3 ;# 8699 reload_outsi+2/3 +L$0085 + comclr,<> %r3,%r20,0 ;# 534 bleu+1 + bl L$0944,0 + zdep %r20,30,31,%r19 ;# 544 ashlsi3+1 + comb,>>= %r3,%r19,L$0090 ;# 552 bleu+1 + stw %r19,4(0,%r5) ;# 546 reload_outsi+2/6 + stw %r3,4(0,%r5) ;# 555 reload_outsi+2/6 +L$0090 + ldw 0(0,%r5),%r26 ;# 562 reload_outsi+2/5 + .CALL ARGW0=GR,ARGW1=GR + bl realloc,%r2 ;# 566 call_value_internal_symref + ldw 4(0,%r5),%r25 ;# 564 reload_outsi+2/5 + comib,= 0,%r28,L$0953 ;# 574 bleu+1 + stw %r28,0(0,%r5) ;# 570 reload_outsi+2/6 + comb,= %r28,%r4,L$0083 ;# 584 bleu+1 + sub %r6,%r4,%r19 ;# 586 subsi3/1 + addl %r28,%r19,%r6 ;# 589 addsi3/1 + sub %r12,%r4,%r19 ;# 590 subsi3/1 + comib,= 0,%r10,L$0093 ;# 595 bleu+1 + addl %r28,%r19,%r12 ;# 593 addsi3/1 + sub %r10,%r4,%r19 ;# 596 subsi3/1 + addl %r28,%r19,%r10 ;# 599 addsi3/1 +L$0093 + comib,= 0,%r8,L$0094 ;# 602 bleu+1 + sub %r8,%r4,%r19 ;# 603 subsi3/1 + addl %r28,%r19,%r8 ;# 606 addsi3/1 +L$0094 + comib,= 0,%r9,L$0083 ;# 609 bleu+1 + sub %r9,%r4,%r19 ;# 610 subsi3/1 + addl %r28,%r19,%r9 ;# 613 addsi3/1 +L$0083 + ldw 0(0,%r5),%r4 ;# 514 reload_outsi+2/5 + ldw 4(0,%r5),%r20 ;# 518 reload_outsi+2/5 + sub %r6,%r4,%r19 ;# 515 subsi3/1 + ldo 1(%r19),%r19 ;# 516 addsi3/2 + comb,<< %r20,%r19,L$0085 + nop ;# 520 bleu+1 +L$0084 + ldi 9,%r19 ;# 635 movqi+1/2 + bl L$0043,0 ;# 656 jump + stbs,ma %r19,1(0,%r6) ;# 636 movqi+1/6 +L$0877 + bl L$0110,0 ;# 897 jump + stw %r21,-296(0,%r30) ;# 2391 reload_outsi+2/6 +L$0101 +L$1158 + and %r15,%r19,%r19 ;# 663 andsi3/1 + comiclr,= 0,%r19,0 ;# 665 bleu+1 + bl,n L$0076,0 +L$0104 + comib,<> 0,%r8,L$0105 ;# 674 bleu+1 + ldi 0,%r13 ;# 711 reload_outsi+2/2 + extrs,>= %r15,26,1,0 ;# 681 bleu+3 + extrs,< %r15,27,1,0 ;# 700 movsi-4 + nop + bl,n L$0076,0 +L$0105 + ldi 0,%r11 ;# 714 reload_outsi+2/2 + ldi 0,%r22 ;# 716 reload_outsi+2/2 + ldi 43,%r24 ;# 8688 reload_outsi+2/2 + ldi 63,%r23 ;# 8690 reload_outsi+2/2 + ldi 42,%r28 ;# 8692 reload_outsi+2/2 + ldi 2,%r19 ;# 8694 reload_outsi+2/2 + and %r15,%r19,%r25 ;# 8695 andsi3/1 + ldi 92,%r26 ;# 8697 reload_outsi+2/2 +L$0109 + comb,= %r24,%r7,L$0112 ;# 727 bleu+1 + copy %r11,%r19 ;# 8780 reload_outsi+2/1 + depi -1,31,1,%r19 ;# 729 iorsi3+1/2 + bl L$0113,0 ;# 731 jump + extrs %r19,31,8,%r19 ;# 730 extendqisi2 +L$0112 + extrs %r11,31,8,%r19 ;# 734 extendqisi2 +L$0113 +L$1159 + comb,= %r23,%r7,L$0114 ;# 744 bleu+1 + copy %r19,%r11 ;# 737 reload_outsi+2/1 + copy %r22,%r19 ;# 8783 reload_outsi+2/1 + depi -1,31,1,%r19 ;# 746 iorsi3+1/2 + bl L$0115,0 ;# 748 jump + extrs %r19,31,8,%r19 ;# 747 extendqisi2 +L$0114 + extrs %r22,31,8,%r19 ;# 751 extendqisi2 +L$0115 + ldw -296(0,%r30),%r21 ;# 2355 reload_outsi+2/5 + comb,= %r16,%r21,L$0110 ;# 757 bleu+1 + copy %r19,%r22 ;# 754 reload_outsi+2/1 + copy %r21,%r20 ;# 8743 reload_outsi+2/1 + ldbs,ma 1(0,%r20),%r7 ;# 776 zero_extendqisi2/2 + comib,= 0,%r14,L$0118 ;# 781 bleu+1 + stw %r20,-296(0,%r30) ;# 2364 reload_outsi+2/6 + addl %r14,%r7,%r19 ;# 782 addsi3/1 + ldb 0(0,%r19),%r7 ;# 785 zero_extendqisi2/2 +L$0118 + comb,= %r28,%r7,L$0109 + nop ;# 802 bleu+1 + comib,<>,n 0,%r25,L$0869 ;# 807 bleu+1 + comb,= %r24,%r7,L$1159 ;# 811 bleu+1 + extrs %r11,31,8,%r19 ;# 734 extendqisi2 + comb,= %r23,%r7,L$0109 ;# 815 bleu+1 + ldw -296(0,%r30),%r19 ;# 2400 reload_outsi+2/5 + bl,n L$1160,0 ;# 827 jump +L$0869 + comb,<> %r26,%r7,L$0126 ;# 831 bleu+1 + ldw -296(0,%r30),%r19 ;# 2400 reload_outsi+2/5 + comclr,<> %r16,%r20,0 ;# 835 bleu+1 + bl L$0903,0 + ldo 1(%r20),%r19 ;# 863 addsi3/2 + ldb 1(0,%r21),%r3 ;# 860 zero_extendqisi2/2 + comib,= 0,%r14,L$0129 ;# 865 bleu+1 + stw %r19,-296(0,%r30) ;# 2379 reload_outsi+2/6 + addl %r14,%r3,%r19 ;# 866 addsi3/1 + ldb 0(0,%r19),%r3 ;# 869 zero_extendqisi2/2 +L$0129 + comb,= %r24,%r3,L$0109 ;# 886 bleu+1 + copy %r3,%r7 ;# 903 reload_outsi+2/1 + comb,<> %r23,%r3,L$0877 + nop ;# 890 bleu+1 + bl,n L$0109,0 ;# 905 jump +L$0126 +L$1160 + ldo -1(%r19),%r19 ;# 910 addsi3/2 + stw %r19,-296(0,%r30) ;# 2397 reload_outsi+2/6 +L$0110 + comiclr,<> 0,%r8,0 ;# 927 bleu+1 + bl L$1161,0 + ldw -296(0,%r30),%r19 ;# 2328 reload_outsi+2/5 + comib,=,n 0,%r22,L$0137 ;# 934 bleu+1 + ldw 0(0,%r5),%r3 ;# 8002 reload_outsi+2/5 + ldw 4(0,%r5),%r20 ;# 8005 reload_outsi+2/5 + sub %r6,%r3,%r19 ;# 8003 subsi3/1 + ldo 3(%r19),%r19 ;# 8004 addsi3/2 + comb,>>=,n %r20,%r19,L$0139 ;# 8006 bleu+1 + ldil L'65536,%r4 ;# 8686 reload_outsi+2/3 +L$0140 + comclr,<> %r4,%r20,0 ;# 961 bleu+1 + bl L$0944,0 + zdep %r20,30,31,%r19 ;# 971 ashlsi3+1 + comb,>>= %r4,%r19,L$0145 ;# 979 bleu+1 + stw %r19,4(0,%r5) ;# 973 reload_outsi+2/6 + stw %r4,4(0,%r5) ;# 982 reload_outsi+2/6 +L$0145 + ldw 0(0,%r5),%r26 ;# 989 reload_outsi+2/5 + .CALL ARGW0=GR,ARGW1=GR + bl realloc,%r2 ;# 993 call_value_internal_symref + ldw 4(0,%r5),%r25 ;# 991 reload_outsi+2/5 + comib,= 0,%r28,L$0953 ;# 1001 bleu+1 + stw %r28,0(0,%r5) ;# 997 reload_outsi+2/6 + comb,= %r28,%r3,L$0138 ;# 1011 bleu+1 + sub %r6,%r3,%r19 ;# 1013 subsi3/1 + addl %r28,%r19,%r6 ;# 1016 addsi3/1 + sub %r12,%r3,%r19 ;# 1017 subsi3/1 + comib,= 0,%r10,L$0148 ;# 1022 bleu+1 + addl %r28,%r19,%r12 ;# 1020 addsi3/1 + sub %r10,%r3,%r19 ;# 1023 subsi3/1 + addl %r28,%r19,%r10 ;# 1026 addsi3/1 +L$0148 + comib,= 0,%r8,L$0149 ;# 1029 bleu+1 + sub %r8,%r3,%r19 ;# 1030 subsi3/1 + addl %r28,%r19,%r8 ;# 1033 addsi3/1 +L$0149 + comib,= 0,%r9,L$0138 ;# 1036 bleu+1 + sub %r9,%r3,%r19 ;# 1037 subsi3/1 + addl %r28,%r19,%r9 ;# 1040 addsi3/1 +L$0138 + ldw 0(0,%r5),%r3 ;# 941 reload_outsi+2/5 + ldw 4(0,%r5),%r20 ;# 945 reload_outsi+2/5 + sub %r6,%r3,%r19 ;# 942 subsi3/1 + ldo 3(%r19),%r19 ;# 943 addsi3/2 + comb,<< %r20,%r19,L$0140 + nop ;# 947 bleu+1 +L$0139 + comib,= 0,%r14,L$0154 ;# 1063 bleu+1 + ldw -296(0,%r30),%r19 ;# 2403 reload_outsi+2/5 + ldb -2(0,%r19),%r19 ;# 1066 zero_extendqisi2/2 + addl %r14,%r19,%r19 ;# 1067 addsi3/1 + bl L$0947,0 ;# 1071 jump + ldb 0(0,%r19),%r19 ;# 1069 movqi+1/5 +L$0154 + ldb -2(0,%r19),%r19 ;# 1075 movqi+1/5 +L$0947 + comib,= 0,%r14,L$0156 ;# 1079 bleu+1 + extrs %r19,31,8,%r20 ;# 1076 extendqisi2 + ldb 46(0,%r14),%r19 ;# 1081 movqi+1/5 + extrs %r19,31,8,%r19 ;# 1082 extendqisi2 + comb,= %r19,%r20,L$0157 ;# 1084 bleu+1 + ldi 17,%r26 ;# 1159 reload_outsi+2/2 + bl,n L$1162,0 ;# 1085 jump +L$0156 + ldi 46,%r19 ;# 1089 reload_outsi+2/2 + comb,<> %r19,%r20,L$1162 ;# 1091 bleu+1 + ldi 17,%r26 ;# 1159 reload_outsi+2/2 +L$0157 + comib,= 0,%r11,L$0153 ;# 1096 bleu+1 + ldw -296(0,%r30),%r19 ;# 2409 reload_outsi+2/5 + comb,<<= %r16,%r19,L$1162 ;# 1098 bleu+1 + ldi 17,%r26 ;# 1159 reload_outsi+2/2 + comib,=,n 0,%r14,L$0158 ;# 1100 bleu+1 + ldb 0(0,%r19),%r19 ;# 1103 zero_extendqisi2/2 + addl %r14,%r19,%r19 ;# 1104 addsi3/1 +L$0158 + ldb 0(0,%r19),%r19 ;# 1112 movqi+1/5 + comib,= 0,%r14,L$0160 ;# 1116 bleu+1 + extrs %r19,31,8,%r20 ;# 1113 extendqisi2 + ldb 10(0,%r14),%r19 ;# 1118 movqi+1/5 + extrs %r19,31,8,%r19 ;# 1119 extendqisi2 + comb,= %r19,%r20,L$0161 ;# 1121 bleu+1 + ldi 17,%r26 ;# 1159 reload_outsi+2/2 + bl,n L$1162,0 ;# 1122 jump +L$0160 + comib,<> 10,%r20,L$1162 ;# 1126 bleu+1 + ldi 17,%r26 ;# 1159 reload_outsi+2/2 +L$0161 + bb,< %r15,25,L$1162 ;# 1134 bleu+3 + ldi 17,%r26 ;# 1159 reload_outsi+2/2 + ldi 12,%r26 ;# 1140 reload_outsi+2/2 + copy %r6,%r25 ;# 1142 reload_outsi+2/1 + sub %r8,%r6,%r24 ;# 1137 subsi3/1 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl store_op1,%r2 ;# 1146 call_internal_symref + ldo -3(%r24),%r24 ;# 1144 addsi3/2 + bl L$0162,0 ;# 1151 jump + ldi 1,%r13 ;# 1149 reload_outsi+2/2 +L$0153 + ldi 17,%r26 ;# 1159 reload_outsi+2/2 +L$1162 + copy %r6,%r25 ;# 1161 reload_outsi+2/1 + sub %r8,%r6,%r24 ;# 1156 subsi3/1 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl store_op1,%r2 ;# 1165 call_internal_symref + ldo -6(%r24),%r24 ;# 1163 addsi3/2 +L$0162 + ldo 3(%r6),%r6 ;# 1168 addsi3/2 +L$0137 + ldw 0(0,%r5),%r3 ;# 8010 reload_outsi+2/5 + ldw 4(0,%r5),%r20 ;# 8013 reload_outsi+2/5 + sub %r6,%r3,%r19 ;# 8011 subsi3/1 + ldo 3(%r19),%r19 ;# 8012 addsi3/2 + comb,>>=,n %r20,%r19,L$0164 ;# 8014 bleu+1 + ldil L'65536,%r4 ;# 8684 reload_outsi+2/3 +L$0165 + comclr,<> %r4,%r20,0 ;# 1195 bleu+1 + bl L$0944,0 + zdep %r20,30,31,%r19 ;# 1205 ashlsi3+1 + comb,>>= %r4,%r19,L$0170 ;# 1213 bleu+1 + stw %r19,4(0,%r5) ;# 1207 reload_outsi+2/6 + stw %r4,4(0,%r5) ;# 1216 reload_outsi+2/6 +L$0170 + ldw 0(0,%r5),%r26 ;# 1223 reload_outsi+2/5 + .CALL ARGW0=GR,ARGW1=GR + bl realloc,%r2 ;# 1227 call_value_internal_symref + ldw 4(0,%r5),%r25 ;# 1225 reload_outsi+2/5 + comib,= 0,%r28,L$0953 ;# 1235 bleu+1 + stw %r28,0(0,%r5) ;# 1231 reload_outsi+2/6 + comb,= %r28,%r3,L$0163 ;# 1245 bleu+1 + sub %r6,%r3,%r19 ;# 1247 subsi3/1 + addl %r28,%r19,%r6 ;# 1250 addsi3/1 + sub %r12,%r3,%r19 ;# 1251 subsi3/1 + comib,= 0,%r10,L$0173 ;# 1256 bleu+1 + addl %r28,%r19,%r12 ;# 1254 addsi3/1 + sub %r10,%r3,%r19 ;# 1257 subsi3/1 + addl %r28,%r19,%r10 ;# 1260 addsi3/1 +L$0173 + comib,= 0,%r8,L$0174 ;# 1263 bleu+1 + sub %r8,%r3,%r19 ;# 1264 subsi3/1 + addl %r28,%r19,%r8 ;# 1267 addsi3/1 +L$0174 + comib,= 0,%r9,L$0163 ;# 1270 bleu+1 + sub %r9,%r3,%r19 ;# 1271 subsi3/1 + addl %r28,%r19,%r9 ;# 1274 addsi3/1 +L$0163 + ldw 0(0,%r5),%r3 ;# 1175 reload_outsi+2/5 + ldw 4(0,%r5),%r20 ;# 1179 reload_outsi+2/5 + sub %r6,%r3,%r19 ;# 1176 subsi3/1 + ldo 3(%r19),%r19 ;# 1177 addsi3/2 + comb,<< %r20,%r19,L$0165 + nop ;# 1181 bleu+1 +L$0164 + ldi 14,%r26 ;# 8786 reload_outsi+2/2 + comiclr,= 0,%r13,0 ;# 1310 beq-1/2 + ldi 15,%r26 + copy %r8,%r25 ;# 1312 reload_outsi+2/1 + sub %r6,%r8,%r24 ;# 1314 subsi3/1 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl insert_op1,%r2 ;# 1318 call_internal_symref + copy %r6,%r23 ;# 1316 reload_outsi+2/1 + ldi 0,%r9 ;# 1321 reload_outsi+2/2 + comib,<> 0,%r11,L$0043 ;# 1326 bleu+1 + ldo 3(%r6),%r6 ;# 1323 addsi3/2 + ldw 0(0,%r5),%r3 ;# 8019 reload_outsi+2/5 + ldw 4(0,%r5),%r20 ;# 8022 reload_outsi+2/5 + sub %r6,%r3,%r19 ;# 8020 subsi3/1 + ldo 3(%r19),%r19 ;# 8021 addsi3/2 + comb,>>=,n %r20,%r19,L$0182 ;# 8023 bleu+1 + ldil L'65536,%r4 ;# 8682 reload_outsi+2/3 +L$0183 + comb,= %r4,%r20,L$0944 ;# 1352 bleu+1 + zdep %r20,30,31,%r19 ;# 1362 ashlsi3+1 + comb,>>= %r4,%r19,L$0188 ;# 1370 bleu+1 + stw %r19,4(0,%r5) ;# 1364 reload_outsi+2/6 + stw %r4,4(0,%r5) ;# 1373 reload_outsi+2/6 +L$0188 + ldw 0(0,%r5),%r26 ;# 1380 reload_outsi+2/5 + .CALL ARGW0=GR,ARGW1=GR + bl realloc,%r2 ;# 1384 call_value_internal_symref + ldw 4(0,%r5),%r25 ;# 1382 reload_outsi+2/5 + comib,= 0,%r28,L$0953 ;# 1392 bleu+1 + stw %r28,0(0,%r5) ;# 1388 reload_outsi+2/6 + comb,= %r28,%r3,L$0181 ;# 1402 bleu+1 + sub %r6,%r3,%r19 ;# 1404 subsi3/1 + addl %r28,%r19,%r6 ;# 1407 addsi3/1 + sub %r12,%r3,%r19 ;# 1408 subsi3/1 + comib,= 0,%r10,L$0191 ;# 1413 bleu+1 + addl %r28,%r19,%r12 ;# 1411 addsi3/1 + sub %r10,%r3,%r19 ;# 1414 subsi3/1 + addl %r28,%r19,%r10 ;# 1417 addsi3/1 +L$0191 + comib,= 0,%r8,L$0192 ;# 1420 bleu+1 + sub %r8,%r3,%r19 ;# 1421 subsi3/1 + addl %r28,%r19,%r8 ;# 1424 addsi3/1 +L$0192 + comib,= 0,%r9,L$0181 ;# 1427 bleu+1 + sub %r9,%r3,%r19 ;# 1428 subsi3/1 + addl %r28,%r19,%r9 ;# 1431 addsi3/1 +L$0181 + ldw 0(0,%r5),%r3 ;# 1332 reload_outsi+2/5 + ldw 4(0,%r5),%r20 ;# 1336 reload_outsi+2/5 + sub %r6,%r3,%r19 ;# 1333 subsi3/1 + ldo 3(%r19),%r19 ;# 1334 addsi3/2 + comb,<< %r20,%r19,L$0183 + nop ;# 1338 bleu+1 +L$0182 + ldi 18,%r26 ;# 1454 reload_outsi+2/2 + copy %r8,%r25 ;# 1456 reload_outsi+2/1 + ldi 3,%r24 ;# 1458 reload_outsi+2/2 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl insert_op1,%r2 ;# 1462 call_internal_symref + copy %r6,%r23 ;# 1460 reload_outsi+2/1 + bl L$0043,0 ;# 1470 jump + ldo 3(%r6),%r6 ;# 1464 addsi3/2 +L$0196 + ldw 4(0,%r5),%r20 ;# 8030 reload_outsi+2/5 + sub %r6,%r4,%r19 ;# 8028 subsi3/1 + ldo 1(%r19),%r19 ;# 8029 addsi3/2 + comb,>>= %r20,%r19,L$0201 ;# 8031 bleu+1 + copy %r6,%r8 ;# 1475 reload_outsi+2/1 + ldil L'65536,%r3 ;# 8680 reload_outsi+2/3 +L$0202 + comb,= %r3,%r20,L$0944 ;# 1503 bleu+1 + zdep %r20,30,31,%r19 ;# 1513 ashlsi3+1 + comb,>>= %r3,%r19,L$0207 ;# 1521 bleu+1 + stw %r19,4(0,%r5) ;# 1515 reload_outsi+2/6 + stw %r3,4(0,%r5) ;# 1524 reload_outsi+2/6 +L$0207 + ldw 0(0,%r5),%r26 ;# 1531 reload_outsi+2/5 + .CALL ARGW0=GR,ARGW1=GR + bl realloc,%r2 ;# 1535 call_value_internal_symref + ldw 4(0,%r5),%r25 ;# 1533 reload_outsi+2/5 + comib,= 0,%r28,L$0953 ;# 1543 bleu+1 + stw %r28,0(0,%r5) ;# 1539 reload_outsi+2/6 + comb,= %r28,%r4,L$0200 ;# 1553 bleu+1 + sub %r6,%r4,%r19 ;# 1555 subsi3/1 + addl %r28,%r19,%r6 ;# 1558 addsi3/1 + sub %r12,%r4,%r19 ;# 1559 subsi3/1 + comib,= 0,%r10,L$0210 ;# 1564 bleu+1 + addl %r28,%r19,%r12 ;# 1562 addsi3/1 + sub %r10,%r4,%r19 ;# 1565 subsi3/1 + addl %r28,%r19,%r10 ;# 1568 addsi3/1 +L$0210 + comib,= 0,%r8,L$0211 ;# 1571 bleu+1 + sub %r8,%r4,%r19 ;# 1572 subsi3/1 + addl %r28,%r19,%r8 ;# 1575 addsi3/1 +L$0211 + comib,= 0,%r9,L$0200 ;# 1578 bleu+1 + sub %r9,%r4,%r19 ;# 1579 subsi3/1 + addl %r28,%r19,%r9 ;# 1582 addsi3/1 +L$0200 + ldw 0(0,%r5),%r4 ;# 1483 reload_outsi+2/5 + ldw 4(0,%r5),%r20 ;# 1487 reload_outsi+2/5 + sub %r6,%r4,%r19 ;# 1484 subsi3/1 + ldo 1(%r19),%r19 ;# 1485 addsi3/2 + comb,<< %r20,%r19,L$0202 + nop ;# 1489 bleu+1 +L$0201 + ldi 2,%r19 ;# 1604 movqi+1/2 + bl L$0043,0 ;# 1617 jump + stbs,ma %r19,1(0,%r6) ;# 1605 movqi+1/6 +L$0216 + comb,= %r16,%r19,L$0902 ;# 1626 bleu+1 + ldi 0,%r13 ;# 1623 reload_outsi+2/2 + ldw 0(0,%r5),%r3 ;# 8035 reload_outsi+2/5 + ldw 4(0,%r5),%r20 ;# 8038 reload_outsi+2/5 + sub %r6,%r3,%r19 ;# 8036 subsi3/1 + ldo 34(%r19),%r19 ;# 8037 addsi3/2 + comb,>>= %r20,%r19,L$0219 ;# 8039 bleu+1 + ldil L'65536,%r4 ;# 8678 reload_outsi+2/3 +L$0220 + comb,= %r4,%r20,L$0944 ;# 1661 bleu+1 + zdep %r20,30,31,%r19 ;# 1671 ashlsi3+1 + comb,>>= %r4,%r19,L$0225 ;# 1679 bleu+1 + stw %r19,4(0,%r5) ;# 1673 reload_outsi+2/6 + stw %r4,4(0,%r5) ;# 1682 reload_outsi+2/6 +L$0225 + ldw 0(0,%r5),%r26 ;# 1689 reload_outsi+2/5 + .CALL ARGW0=GR,ARGW1=GR + bl realloc,%r2 ;# 1693 call_value_internal_symref + ldw 4(0,%r5),%r25 ;# 1691 reload_outsi+2/5 + comib,= 0,%r28,L$0953 ;# 1701 bleu+1 + stw %r28,0(0,%r5) ;# 1697 reload_outsi+2/6 + comb,= %r28,%r3,L$0218 ;# 1711 bleu+1 + sub %r6,%r3,%r19 ;# 1713 subsi3/1 + addl %r28,%r19,%r6 ;# 1716 addsi3/1 + sub %r12,%r3,%r19 ;# 1717 subsi3/1 + comib,= 0,%r10,L$0228 ;# 1722 bleu+1 + addl %r28,%r19,%r12 ;# 1720 addsi3/1 + sub %r10,%r3,%r19 ;# 1723 subsi3/1 + addl %r28,%r19,%r10 ;# 1726 addsi3/1 +L$0228 + comib,= 0,%r8,L$0229 ;# 1729 bleu+1 + sub %r8,%r3,%r19 ;# 1730 subsi3/1 + addl %r28,%r19,%r8 ;# 1733 addsi3/1 +L$0229 + comib,= 0,%r9,L$0218 ;# 1736 bleu+1 + sub %r9,%r3,%r19 ;# 1737 subsi3/1 + addl %r28,%r19,%r9 ;# 1740 addsi3/1 +L$0218 + ldw 0(0,%r5),%r3 ;# 1641 reload_outsi+2/5 + ldw 4(0,%r5),%r20 ;# 1645 reload_outsi+2/5 + sub %r6,%r3,%r19 ;# 1642 subsi3/1 + ldo 34(%r19),%r19 ;# 1643 addsi3/2 + comb,<< %r20,%r19,L$0220 + nop ;# 1647 bleu+1 +L$0219 + ldw 0(0,%r5),%r4 ;# 8043 reload_outsi+2/5 + ldw 4(0,%r5),%r20 ;# 8046 reload_outsi+2/5 + sub %r6,%r4,%r19 ;# 8044 subsi3/1 + ldo 1(%r19),%r19 ;# 8045 addsi3/2 + comb,>>= %r20,%r19,L$0237 ;# 8047 bleu+1 + copy %r6,%r8 ;# 1763 reload_outsi+2/1 + ldil L'65536,%r3 ;# 8676 reload_outsi+2/3 +L$0238 + comb,= %r3,%r20,L$0944 ;# 1791 bleu+1 + zdep %r20,30,31,%r19 ;# 1801 ashlsi3+1 + comb,>>= %r3,%r19,L$0243 ;# 1809 bleu+1 + stw %r19,4(0,%r5) ;# 1803 reload_outsi+2/6 + stw %r3,4(0,%r5) ;# 1812 reload_outsi+2/6 +L$0243 + ldw 0(0,%r5),%r26 ;# 1819 reload_outsi+2/5 + .CALL ARGW0=GR,ARGW1=GR + bl realloc,%r2 ;# 1823 call_value_internal_symref + ldw 4(0,%r5),%r25 ;# 1821 reload_outsi+2/5 + comib,= 0,%r28,L$0953 ;# 1831 bleu+1 + stw %r28,0(0,%r5) ;# 1827 reload_outsi+2/6 + comb,= %r28,%r4,L$0236 ;# 1841 bleu+1 + sub %r6,%r4,%r19 ;# 1843 subsi3/1 + addl %r28,%r19,%r6 ;# 1846 addsi3/1 + sub %r12,%r4,%r19 ;# 1847 subsi3/1 + comib,= 0,%r10,L$0246 ;# 1852 bleu+1 + addl %r28,%r19,%r12 ;# 1850 addsi3/1 + sub %r10,%r4,%r19 ;# 1853 subsi3/1 + addl %r28,%r19,%r10 ;# 1856 addsi3/1 +L$0246 + comib,= 0,%r8,L$0247 ;# 1859 bleu+1 + sub %r8,%r4,%r19 ;# 1860 subsi3/1 + addl %r28,%r19,%r8 ;# 1863 addsi3/1 +L$0247 + comib,= 0,%r9,L$0236 ;# 1866 bleu+1 + sub %r9,%r4,%r19 ;# 1867 subsi3/1 + addl %r28,%r19,%r9 ;# 1870 addsi3/1 +L$0236 + ldw 0(0,%r5),%r4 ;# 1771 reload_outsi+2/5 + ldw 4(0,%r5),%r20 ;# 1775 reload_outsi+2/5 + sub %r6,%r4,%r19 ;# 1772 subsi3/1 + ldo 1(%r19),%r19 ;# 1773 addsi3/2 + comb,<< %r20,%r19,L$0238 + nop ;# 1777 bleu+1 +L$0237 + copy %r6,%r22 ;# 1909 reload_outsi+2/1 + ldo 1(%r6),%r6 ;# 1891 addsi3/2 + ldw -296(0,%r30),%r19 ;# 2421 reload_outsi+2/5 + ldb 0(0,%r19),%r19 ;# 1893 movqi+1/5 + ldi 94,%r21 ;# 1896 reload_outsi+2/2 + extrs %r19,31,8,%r19 ;# 1894 extendqisi2 + comb,<> %r21,%r19,L$0251 ;# 1898 bleu+1 + ldi 3,%r20 ;# 8051 movqi+1/2 + ldi 4,%r20 ;# 1900 movqi+1/2 +L$0251 + stb %r20,0(0,%r22) ;# 1911 movqi+1/6 + ldw -296(0,%r30),%r20 ;# 2424 reload_outsi+2/5 + ldb 0(0,%r20),%r19 ;# 1923 movqi+1/5 + extrs %r19,31,8,%r19 ;# 1924 extendqisi2 + comb,<> %r21,%r19,L$0254 ;# 1928 bleu+1 + ldo 1(%r20),%r19 ;# 1930 addsi3/2 + stw %r19,-296(0,%r30) ;# 2427 reload_outsi+2/6 +L$0254 + ldw 0(0,%r5),%r4 ;# 8052 reload_outsi+2/5 + ldw 4(0,%r5),%r20 ;# 8055 reload_outsi+2/5 + ldw -296(0,%r30),%r1 ;# 2433 reload_outsi+2/5 + sub %r6,%r4,%r19 ;# 8053 subsi3/1 + ldo 1(%r19),%r19 ;# 8054 addsi3/2 + comb,>>= %r20,%r19,L$0259 ;# 8056 bleu+1 + stw %r1,-268(0,%r30) ;# 8789 reload_outsi+2/6 + ldil L'65536,%r3 ;# 8674 reload_outsi+2/3 +L$0260 + comb,= %r3,%r20,L$0944 ;# 1962 bleu+1 + zdep %r20,30,31,%r19 ;# 1972 ashlsi3+1 + comb,>>= %r3,%r19,L$0265 ;# 1980 bleu+1 + stw %r19,4(0,%r5) ;# 1974 reload_outsi+2/6 + stw %r3,4(0,%r5) ;# 1983 reload_outsi+2/6 +L$0265 + ldw 0(0,%r5),%r26 ;# 1990 reload_outsi+2/5 + .CALL ARGW0=GR,ARGW1=GR + bl realloc,%r2 ;# 1994 call_value_internal_symref + ldw 4(0,%r5),%r25 ;# 1992 reload_outsi+2/5 + comib,= 0,%r28,L$0953 ;# 2002 bleu+1 + stw %r28,0(0,%r5) ;# 1998 reload_outsi+2/6 + comb,= %r28,%r4,L$0258 ;# 2012 bleu+1 + sub %r6,%r4,%r19 ;# 2014 subsi3/1 + addl %r28,%r19,%r6 ;# 2017 addsi3/1 + sub %r12,%r4,%r19 ;# 2018 subsi3/1 + comib,= 0,%r10,L$0268 ;# 2023 bleu+1 + addl %r28,%r19,%r12 ;# 2021 addsi3/1 + sub %r10,%r4,%r19 ;# 2024 subsi3/1 + addl %r28,%r19,%r10 ;# 2027 addsi3/1 +L$0268 + comib,= 0,%r8,L$0269 ;# 2030 bleu+1 + sub %r8,%r4,%r19 ;# 2031 subsi3/1 + addl %r28,%r19,%r8 ;# 2034 addsi3/1 +L$0269 + comib,= 0,%r9,L$0258 ;# 2037 bleu+1 + sub %r9,%r4,%r19 ;# 2038 subsi3/1 + addl %r28,%r19,%r9 ;# 2041 addsi3/1 +L$0258 + ldw 0(0,%r5),%r4 ;# 1942 reload_outsi+2/5 + ldw 4(0,%r5),%r20 ;# 1946 reload_outsi+2/5 + sub %r6,%r4,%r19 ;# 1943 subsi3/1 + ldo 1(%r19),%r19 ;# 1944 addsi3/2 + comb,<< %r20,%r19,L$0260 + nop ;# 1948 bleu+1 +L$0259 + ldi 32,%r19 ;# 2063 movqi+1/2 + stbs,ma %r19,1(0,%r6) ;# 2064 movqi+1/6 + copy %r6,%r26 ;# 2077 reload_outsi+2/1 + ldi 0,%r25 ;# 2079 reload_outsi+2/2 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl memset,%r2 ;# 2083 call_value_internal_symref + ldi 32,%r24 ;# 2081 reload_outsi+2/2 + ldb -2(0,%r6),%r19 ;# 2087 zero_extendqisi2/2 + comib,<> 4,%r19,L$0274 ;# 2089 bleu+1 + ldi 93,%r17 ;# 8622 reload_outsi+2/2 + bb,>=,n %r15,23,L$0274 ;# 2094 movsi-4 + ldb 1(0,%r6),%r19 ;# 2097 movqi+1/5 + depi -1,29,1,%r19 ;# 2099 iorsi3+1/2 + stb %r19,1(0,%r6) ;# 2101 movqi+1/6 +L$0274 + ldi 4,%r18 ;# 8628 reload_outsi+2/2 + and %r15,%r18,%r1 ;# 8629 andsi3/1 + stw %r1,-252(0,%r30) ;# 8792 reload_outsi+2/6 + ldo -288(%r30),%r11 ;# 8632 addsi3/2 +L$0275 + ldw -296(0,%r30),%r20 ;# 2436 reload_outsi+2/5 +L$1165 + comb,= %r16,%r20,L$0902 ;# 2109 bleu+1 + copy %r20,%r21 ;# 8745 reload_outsi+2/1 + ldbs,ma 1(0,%r21),%r7 ;# 2134 zero_extendqisi2/2 + comib,= 0,%r14,L$0280 ;# 2139 bleu+1 + stw %r21,-296(0,%r30) ;# 2445 reload_outsi+2/6 + addl %r14,%r7,%r19 ;# 2140 addsi3/1 + ldb 0(0,%r19),%r7 ;# 2143 zero_extendqisi2/2 +L$0280 + bb,>= %r15,31,L$0285 ;# 2159 movsi-4 + ldi 92,%r19 ;# 2161 reload_outsi+2/2 + comb,<>,n %r19,%r7,L$0285 ;# 2163 bleu+1 + comb,= %r16,%r21,L$0903 ;# 2167 bleu+1 + ldo 1(%r21),%r19 ;# 2195 addsi3/2 + ldb 1(0,%r20),%r3 ;# 2192 zero_extendqisi2/2 + comib,= 0,%r14,L$0288 ;# 2197 bleu+1 + stw %r19,-296(0,%r30) ;# 2460 reload_outsi+2/6 + addl %r14,%r3,%r19 ;# 2198 addsi3/1 + ldb 0(0,%r19),%r3 ;# 2201 zero_extendqisi2/2 +L$0288 + extru %r3,28,29,%r19 ;# 2216 lshrsi3/2 + addl %r6,%r19,%r19 ;# 2219 addsi3/1 + bl L$0948,0 ;# 2235 jump + extru %r3,31,3,%r20 ;# 2222 andsi3/1 +L$0285 + comb,<>,n %r17,%r7,L$0293 ;# 2243 bleu+1 + ldw -268(0,%r30),%r1 ;# 8798 reload_outsi+2/5 + ldw -296(0,%r30),%r20 ;# 2466 reload_outsi+2/5 + ldo 1(%r1),%r19 ;# 2244 addsi3/2 + comb,<>,n %r19,%r20,L$0276 ;# 2246 bleu+1 +L$0293 + comib,= 0,%r13,L$0294 ;# 2253 bleu+1 + ldi 45,%r1 ;# 8801 reload_outsi+2/2 + comb,<> %r1,%r7,L$1163 ;# 2257 bleu+1 + ldw -296(0,%r30),%r20 ;# 2524 reload_outsi+2/5 + ldw -296(0,%r30),%r19 ;# 2469 reload_outsi+2/5 + ldb 0(0,%r19),%r19 ;# 2259 movqi+1/5 + extrs %r19,31,8,%r19 ;# 2260 extendqisi2 + comb,<>,n %r17,%r19,L$0895 ;# 2264 bleu+1 +L$0294 + ldi 45,%r1 ;# 8804 reload_outsi+2/2 + comb,<> %r1,%r7,L$1163 ;# 2280 bleu+1 + ldw -296(0,%r30),%r20 ;# 2524 reload_outsi+2/5 + ldw -276(0,%r30),%r1 ;# 8807 reload_outsi+2/5 + ldo -2(%r20),%r19 ;# 2281 addsi3/2 + comb,>>,n %r1,%r19,L$1179 ;# 2283 bleu+1 + ldb -2(0,%r20),%r19 ;# 2285 movqi+1/5 + ldi 91,%r1 ;# 8810 reload_outsi+2/2 + extrs %r19,31,8,%r19 ;# 2286 extendqisi2 + comb,= %r1,%r19,L$1163 ;# 2290 bleu+1 + ldw -276(0,%r30),%r1 ;# 8813 reload_outsi+2/5 +L$1179 + ldo -3(%r20),%r19 ;# 2294 addsi3/2 + comb,>>,n %r1,%r19,L$0297 ;# 2296 bleu+1 + ldb -3(0,%r20),%r19 ;# 2298 movqi+1/5 + ldi 91,%r1 ;# 8816 reload_outsi+2/2 + extrs %r19,31,8,%r19 ;# 2299 extendqisi2 + comb,<> %r1,%r19,L$1164 ;# 2303 bleu+1 + ldw -296(0,%r30),%r19 ;# 2487 reload_outsi+2/5 + ldb -2(0,%r20),%r19 ;# 2305 movqi+1/5 + ldi 94,%r20 ;# 2308 reload_outsi+2/2 + extrs %r19,31,8,%r19 ;# 2306 extendqisi2 + comb,= %r20,%r19,L$1163 ;# 2310 bleu+1 + ldw -296(0,%r30),%r20 ;# 2524 reload_outsi+2/5 +L$0297 + ldw -296(0,%r30),%r19 ;# 2487 reload_outsi+2/5 +L$1164 + ldb 0(0,%r19),%r19 ;# 2315 movqi+1/5 + extrs %r19,31,8,%r19 ;# 2316 extendqisi2 + comb,<> %r17,%r19,L$0302 ;# 2320 bleu+1 + ldw -296(0,%r30),%r20 ;# 2524 reload_outsi+2/5 +L$1163 + ldb 0(0,%r20),%r19 ;# 2526 movqi+1/5 + ldi 45,%r1 ;# 8819 reload_outsi+2/2 + extrs %r19,31,8,%r19 ;# 2527 extendqisi2 + comb,<>,n %r1,%r19,L$0300 ;# 2531 bleu+1 + ldb 1(0,%r20),%r19 ;# 2535 movqi+1/5 + extrs %r19,31,8,%r19 ;# 2536 extendqisi2 + comb,=,n %r17,%r19,L$0300 ;# 2540 bleu+1 + comb,= %r16,%r20,L$0922 ;# 2550 bleu+1 + ldo 1(%r20),%r19 ;# 2559 addsi3/2 + stw %r19,-296(0,%r30) ;# 2561 reload_outsi+2/6 +L$0302 + stw %r6,-52(0,%r30) ;# 2588 reload_outsi+2/6 + ldo -296(%r30),%r26 ;# 2590 addsi3/2 + copy %r16,%r25 ;# 2592 reload_outsi+2/1 + copy %r14,%r24 ;# 2594 reload_outsi+2/1 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl compile_range,%r2 ;# 2598 call_value_internal_symref + copy %r15,%r23 ;# 2596 reload_outsi+2/1 + movb,= %r28,%r4,L$1165 ;# 2603 decrement_and_branch_until_zero+2/1 + ldw -296(0,%r30),%r20 ;# 2436 reload_outsi+2/5 + .CALL ARGW0=GR + bl free,%r2 ;# 2607 call_internal_symref + ldw -312(0,%r30),%r26 ;# 2605 reload_outsi+2/5 + bl L$0867,0 ;# 2611 jump + copy %r4,%r28 ;# 2609 reload_outsi+2/1 +L$0300 + ldw -252(0,%r30),%r1 ;# 8822 reload_outsi+2/5 + comib,= 0,%r1,L$0309 ;# 2624 bleu+1 + ldi 91,%r1 ;# 8825 reload_outsi+2/2 + comb,<> %r1,%r7,L$1166 ;# 2628 bleu+1 + ldi 0,%r13 ;# 3624 reload_outsi+2/2 + ldw -296(0,%r30),%r20 ;# 2630 reload_outsi+2/5 + ldb 0(0,%r20),%r19 ;# 2632 movqi+1/5 + ldi 58,%r1 ;# 8828 reload_outsi+2/2 + extrs %r19,31,8,%r19 ;# 2633 extendqisi2 + comb,<>,n %r1,%r19,L$1166 ;# 2637 bleu+1 + comb,= %r16,%r20,L$0922 ;# 2647 bleu+1 + ldo 1(%r20),%r19 ;# 2656 addsi3/2 + stw %r19,-296(0,%r30) ;# 2658 reload_outsi+2/6 + comb,= %r16,%r19,L$0902 ;# 2689 bleu+1 + ldi 0,%r3 ;# 2684 reload_outsi+2/2 +L$0317 + ldw -296(0,%r30),%r19 ;# 2709 reload_outsi+2/5 + comb,= %r16,%r19,L$0922 ;# 2711 bleu+1 + ldo 1(%r19),%r20 ;# 2720 addsi3/2 + stw %r20,-296(0,%r30) ;# 2722 reload_outsi+2/6 + comib,= 0,%r14,L$0321 ;# 2729 bleu+1 + ldb 0(0,%r19),%r7 ;# 2725 zero_extendqisi2/2 + addl %r14,%r7,%r19 ;# 2730 addsi3/1 + ldb 0(0,%r19),%r7 ;# 2733 zero_extendqisi2/2 +L$0321 + ldi 58,%r1 ;# 8831 reload_outsi+2/2 + comb,= %r1,%r7,L$1167 ;# 2750 bleu+1 + addl %r11,%r3,%r19 ;# 2789 addsi3/1 + comb,=,n %r17,%r7,L$1167 ;# 2754 bleu+1 + comb,=,n %r16,%r20,L$1167 ;# 2758 bleu+1 + comib,= 6,%r3,L$1167 ;# 2760 bleu+1 + copy %r3,%r20 ;# 2770 reload_outsi+2/1 + ldo 1(%r20),%r19 ;# 2771 addsi3/2 + extru %r19,31,8,%r3 ;# 2772 zero_extendqisi2/1 + addl %r11,%r20,%r20 ;# 2776 addsi3/1 + bl L$0317,0 ;# 2783 jump + stb %r7,0(0,%r20) ;# 2778 movqi+1/6 +L$1167 + comb,<> %r1,%r7,L$0328 ;# 2796 bleu+1 + stb 0,0(0,%r19) ;# 2791 movqi+1/6 + ldw -296(0,%r30),%r19 ;# 2798 reload_outsi+2/5 + ldb 0(0,%r19),%r19 ;# 2800 movqi+1/5 + extrs %r19,31,8,%r19 ;# 2801 extendqisi2 + comb,<> %r17,%r19,L$1168 ;# 2805 bleu+1 + ldi 255,%r19 ;# 8069 reload_outsi+2/2 + copy %r11,%r26 ;# 2813 reload_outsi+2/1 + ldil LR'L$C0016,%r1 ;# 8835 add_high_const+3 + ldo RR'L$C0016(%r1),%r1 ;# 8836 movhi-2 + .CALL ARGW0=GR,ARGW1=GR + bl strcmp,%r2 ;# 2817 call_value_internal_symref + copy %r1,%r25 ;# 2815 reload_outsi+2/1 + copy %r11,%r26 ;# 2829 reload_outsi+2/1 + ldil LR'L$C0017,%r1 ;# 8837 add_high_const+3 + ldo RR'L$C0017(%r1),%r1 ;# 8838 movhi-2 + copy %r1,%r25 ;# 2831 reload_outsi+2/1 + comiclr,<> 0,%r28,%r28 ;# 2821 scc + ldi 1,%r28 + .CALL ARGW0=GR,ARGW1=GR + bl strcmp,%r2 ;# 2833 call_value_internal_symref + stw %r28,-244(0,%r30) ;# 8841 reload_outsi+2/6 + copy %r11,%r26 ;# 2845 reload_outsi+2/1 + ldil LR'L$C0018,%r1 ;# 8842 add_high_const+3 + ldo RR'L$C0018(%r1),%r1 ;# 8843 movhi-2 + copy %r1,%r25 ;# 2847 reload_outsi+2/1 + comiclr,<> 0,%r28,%r28 ;# 2837 scc + ldi 1,%r28 + .CALL ARGW0=GR,ARGW1=GR + bl strcmp,%r2 ;# 2849 call_value_internal_symref + stw %r28,-236(0,%r30) ;# 8846 reload_outsi+2/6 + copy %r11,%r26 ;# 2861 reload_outsi+2/1 + ldil LR'L$C0019,%r1 ;# 8847 add_high_const+3 + ldo RR'L$C0019(%r1),%r1 ;# 8848 movhi-2 + copy %r1,%r25 ;# 2863 reload_outsi+2/1 + comiclr,<> 0,%r28,%r28 ;# 2853 scc + ldi 1,%r28 + .CALL ARGW0=GR,ARGW1=GR + bl strcmp,%r2 ;# 2865 call_value_internal_symref + stw %r28,-228(0,%r30) ;# 8851 reload_outsi+2/6 + copy %r11,%r26 ;# 2877 reload_outsi+2/1 + ldil LR'L$C0020,%r1 ;# 8852 add_high_const+3 + ldo RR'L$C0020(%r1),%r1 ;# 8853 movhi-2 + copy %r1,%r25 ;# 2879 reload_outsi+2/1 + comiclr,<> 0,%r28,%r28 ;# 2869 scc + ldi 1,%r28 + .CALL ARGW0=GR,ARGW1=GR + bl strcmp,%r2 ;# 2881 call_value_internal_symref + stw %r28,-220(0,%r30) ;# 8856 reload_outsi+2/6 + copy %r11,%r26 ;# 2893 reload_outsi+2/1 + ldil LR'L$C0021,%r1 ;# 8857 add_high_const+3 + ldo RR'L$C0021(%r1),%r1 ;# 8858 movhi-2 + copy %r1,%r25 ;# 2895 reload_outsi+2/1 + comiclr,<> 0,%r28,%r28 ;# 2885 scc + ldi 1,%r28 + .CALL ARGW0=GR,ARGW1=GR + bl strcmp,%r2 ;# 2897 call_value_internal_symref + stw %r28,-212(0,%r30) ;# 8861 reload_outsi+2/6 + copy %r11,%r26 ;# 2909 reload_outsi+2/1 + ldil LR'L$C0022,%r1 ;# 8862 add_high_const+3 + ldo RR'L$C0022(%r1),%r1 ;# 8863 movhi-2 + copy %r1,%r25 ;# 2911 reload_outsi+2/1 + comiclr,<> 0,%r28,%r28 ;# 2901 scc + ldi 1,%r28 + .CALL ARGW0=GR,ARGW1=GR + bl strcmp,%r2 ;# 2913 call_value_internal_symref + stw %r28,-204(0,%r30) ;# 8866 reload_outsi+2/6 + copy %r11,%r26 ;# 2925 reload_outsi+2/1 + ldil LR'L$C0023,%r1 ;# 8867 add_high_const+3 + ldo RR'L$C0023(%r1),%r1 ;# 8868 movhi-2 + copy %r1,%r25 ;# 2927 reload_outsi+2/1 + comiclr,<> 0,%r28,%r28 ;# 2917 scc + ldi 1,%r28 + .CALL ARGW0=GR,ARGW1=GR + bl strcmp,%r2 ;# 2929 call_value_internal_symref + stw %r28,-196(0,%r30) ;# 8871 reload_outsi+2/6 + copy %r11,%r26 ;# 2941 reload_outsi+2/1 + ldil LR'L$C0024,%r1 ;# 8872 add_high_const+3 + ldo RR'L$C0024(%r1),%r1 ;# 8873 movhi-2 + copy %r1,%r25 ;# 2943 reload_outsi+2/1 + comiclr,<> 0,%r28,%r28 ;# 2933 scc + ldi 1,%r28 + .CALL ARGW0=GR,ARGW1=GR + bl strcmp,%r2 ;# 2945 call_value_internal_symref + stw %r28,-188(0,%r30) ;# 8876 reload_outsi+2/6 + copy %r11,%r26 ;# 2957 reload_outsi+2/1 + ldil LR'L$C0025,%r1 ;# 8877 add_high_const+3 + ldo RR'L$C0025(%r1),%r1 ;# 8878 movhi-2 + copy %r1,%r25 ;# 2959 reload_outsi+2/1 + comiclr,<> 0,%r28,%r28 ;# 2949 scc + ldi 1,%r28 + .CALL ARGW0=GR,ARGW1=GR + bl strcmp,%r2 ;# 2961 call_value_internal_symref + stw %r28,-180(0,%r30) ;# 8881 reload_outsi+2/6 + copy %r11,%r26 ;# 2973 reload_outsi+2/1 + ldil LR'L$C0026,%r19 ;# 2970 add_high_const+3 + ldo RR'L$C0026(%r19),%r3 ;# 2971 movhi-2 + copy %r3,%r25 ;# 2975 reload_outsi+2/1 + comiclr,<> 0,%r28,%r28 ;# 2965 scc + ldi 1,%r28 + .CALL ARGW0=GR,ARGW1=GR + bl strcmp,%r2 ;# 2977 call_value_internal_symref + stw %r28,-172(0,%r30) ;# 8884 reload_outsi+2/6 + copy %r11,%r26 ;# 2989 reload_outsi+2/1 + ldil LR'L$C0027,%r19 ;# 2986 add_high_const+3 + ldo RR'L$C0027(%r19),%r4 ;# 2987 movhi-2 + comiclr,<> 0,%r28,%r13 ;# 2981 scc + ldi 1,%r13 + .CALL ARGW0=GR,ARGW1=GR + bl strcmp,%r2 ;# 2993 call_value_internal_symref + copy %r4,%r25 ;# 2991 reload_outsi+2/1 + copy %r11,%r26 ;# 3005 reload_outsi+2/1 + ldil LR'L$C0017,%r1 ;# 8885 add_high_const+3 + ldo RR'L$C0017(%r1),%r1 ;# 8886 movhi-2 + comiclr,<> 0,%r28,%r7 ;# 2997 scc + ldi 1,%r7 + .CALL ARGW0=GR,ARGW1=GR + bl strcmp,%r2 ;# 3009 call_value_internal_symref + copy %r1,%r25 ;# 3007 reload_outsi+2/1 + comib,= 0,%r28,L$0329 ;# 3013 bleu+1 + copy %r11,%r26 ;# 3018 reload_outsi+2/1 + .CALL ARGW0=GR,ARGW1=GR + bl strcmp,%r2 ;# 3022 call_value_internal_symref + copy %r3,%r25 ;# 3020 reload_outsi+2/1 + comib,= 0,%r28,L$0329 ;# 3026 bleu+1 + copy %r11,%r26 ;# 3031 reload_outsi+2/1 + ldil LR'L$C0022,%r1 ;# 8887 add_high_const+3 + ldo RR'L$C0022(%r1),%r1 ;# 8888 movhi-2 + .CALL ARGW0=GR,ARGW1=GR + bl strcmp,%r2 ;# 3035 call_value_internal_symref + copy %r1,%r25 ;# 3033 reload_outsi+2/1 + comib,= 0,%r28,L$0329 ;# 3039 bleu+1 + copy %r11,%r26 ;# 3044 reload_outsi+2/1 + ldil LR'L$C0020,%r1 ;# 8889 add_high_const+3 + ldo RR'L$C0020(%r1),%r1 ;# 8890 movhi-2 + .CALL ARGW0=GR,ARGW1=GR + bl strcmp,%r2 ;# 3048 call_value_internal_symref + copy %r1,%r25 ;# 3046 reload_outsi+2/1 + comib,= 0,%r28,L$0329 ;# 3052 bleu+1 + copy %r11,%r26 ;# 3057 reload_outsi+2/1 + ldil LR'L$C0016,%r1 ;# 8891 add_high_const+3 + ldo RR'L$C0016(%r1),%r1 ;# 8892 movhi-2 + .CALL ARGW0=GR,ARGW1=GR + bl strcmp,%r2 ;# 3061 call_value_internal_symref + copy %r1,%r25 ;# 3059 reload_outsi+2/1 + comib,= 0,%r28,L$0329 ;# 3065 bleu+1 + copy %r11,%r26 ;# 3070 reload_outsi+2/1 + .CALL ARGW0=GR,ARGW1=GR + bl strcmp,%r2 ;# 3074 call_value_internal_symref + copy %r4,%r25 ;# 3072 reload_outsi+2/1 + comib,= 0,%r28,L$0329 ;# 3078 bleu+1 + copy %r11,%r26 ;# 3083 reload_outsi+2/1 + ldil LR'L$C0025,%r1 ;# 8893 add_high_const+3 + ldo RR'L$C0025(%r1),%r1 ;# 8894 movhi-2 + .CALL ARGW0=GR,ARGW1=GR + bl strcmp,%r2 ;# 3087 call_value_internal_symref + copy %r1,%r25 ;# 3085 reload_outsi+2/1 + comib,= 0,%r28,L$0329 ;# 3091 bleu+1 + copy %r11,%r26 ;# 3096 reload_outsi+2/1 + ldil LR'L$C0023,%r1 ;# 8895 add_high_const+3 + ldo RR'L$C0023(%r1),%r1 ;# 8896 movhi-2 + .CALL ARGW0=GR,ARGW1=GR + bl strcmp,%r2 ;# 3100 call_value_internal_symref + copy %r1,%r25 ;# 3098 reload_outsi+2/1 + comib,= 0,%r28,L$0329 ;# 3104 bleu+1 + copy %r11,%r26 ;# 3109 reload_outsi+2/1 + ldil LR'L$C0024,%r1 ;# 8897 add_high_const+3 + ldo RR'L$C0024(%r1),%r1 ;# 8898 movhi-2 + .CALL ARGW0=GR,ARGW1=GR + bl strcmp,%r2 ;# 3113 call_value_internal_symref + copy %r1,%r25 ;# 3111 reload_outsi+2/1 + comib,= 0,%r28,L$0329 ;# 3117 bleu+1 + copy %r11,%r26 ;# 3122 reload_outsi+2/1 + ldil LR'L$C0021,%r1 ;# 8899 add_high_const+3 + ldo RR'L$C0021(%r1),%r1 ;# 8900 movhi-2 + .CALL ARGW0=GR,ARGW1=GR + bl strcmp,%r2 ;# 3126 call_value_internal_symref + copy %r1,%r25 ;# 3124 reload_outsi+2/1 + comib,= 0,%r28,L$0329 ;# 3130 bleu+1 + copy %r11,%r26 ;# 3135 reload_outsi+2/1 + ldil LR'L$C0019,%r1 ;# 8901 add_high_const+3 + ldo RR'L$C0019(%r1),%r1 ;# 8902 movhi-2 + .CALL ARGW0=GR,ARGW1=GR + bl strcmp,%r2 ;# 3139 call_value_internal_symref + copy %r1,%r25 ;# 3137 reload_outsi+2/1 + comib,= 0,%r28,L$0329 ;# 3143 bleu+1 + copy %r11,%r26 ;# 3148 reload_outsi+2/1 + ldil LR'L$C0018,%r1 ;# 8903 add_high_const+3 + ldo RR'L$C0018(%r1),%r1 ;# 8904 movhi-2 + .CALL ARGW0=GR,ARGW1=GR + bl strcmp,%r2 ;# 3152 call_value_internal_symref + copy %r1,%r25 ;# 3150 reload_outsi+2/1 + comib,<>,n 0,%r28,L$0900 ;# 3156 bleu+1 +L$0329 + ldw -296(0,%r30),%r19 ;# 3173 reload_outsi+2/5 + comb,= %r16,%r19,L$0922 ;# 3175 bleu+1 + ldo 1(%r19),%r19 ;# 3184 addsi3/2 + comb,= %r16,%r19,L$0902 ;# 3214 bleu+1 + stw %r19,-296(0,%r30) ;# 3186 reload_outsi+2/6 + ldi 0,%r22 ;# 3227 reload_outsi+2/2 + addil LR'__alnum-$global$,%r27 ;# 8596 pic2_lo_sum+1 + copy %r1,%r2 ;# 8907 reload_outsi+2/1 + addil LR'__ctype2-$global$,%r27 ;# 8598 pic2_lo_sum+1 + copy %r1,%r23 ;# 8910 reload_outsi+2/1 + addil LR'__ctype-$global$,%r27 ;# 8600 pic2_lo_sum+1 + copy %r1,%r4 ;# 8913 reload_outsi+2/1 + ldi 32,%r25 ;# 8605 reload_outsi+2/2 + ldi 2,%r24 ;# 8607 reload_outsi+2/2 + ldi 16,%r31 ;# 8609 reload_outsi+2/2 + ldi 8,%r29 ;# 8611 reload_outsi+2/2 + ldi 128,%r28 ;# 8613 reload_outsi+2/2 + ldi 255,%r26 ;# 8615 reload_outsi+2/2 + ldw -244(0,%r30),%r1 ;# 8916 reload_outsi+2/5 +L$1173 + comib,=,n 0,%r1,L$0343 ;# 3240 bleu+1 + stw %r22,RR'__alnum-$global$(%r2) ;# 3244 reload_outsi+2/6 + ldw RR'__ctype2-$global$(%r23),%r19 ;# 3248 reload_outsi+2/5 + ldw RR'__ctype-$global$(%r4),%r21 ;# 3260 reload_outsi+2/5 + addl %r19,%r22,%r19 ;# 3253 addsi3/1 + addl %r21,%r22,%r21 ;# 3265 addsi3/1 + ldb 0(0,%r19),%r20 ;# 3255 movqi+1/5 + ldb 0(0,%r21),%r19 ;# 3267 movqi+1/5 + extru %r20,31,1,%r20 ;# 3256 andsi3/1 + and %r19,%r18,%r19 ;# 3270 andsi3/1 + or %r20,%r19,%r20 ;# 3278 xordi3-1 + comib,<> 0,%r20,L$1169 ;# 3280 bleu+1 + extru %r22,31,8,%r19 ;# 3330 zero_extendqisi2/1 +L$0343 + ldw -236(0,%r30),%r1 ;# 8919 reload_outsi+2/5 + comib,= 0,%r1,L$0344 ;# 3285 bleu+1 + ldw RR'__ctype2-$global$(%r23),%r19 ;# 3289 reload_outsi+2/5 + addl %r19,%r22,%r19 ;# 3290 addsi3/1 + ldb 0(0,%r19),%r19 ;# 3292 movqi+1/5 + bb,< %r19,31,L$1169 ;# 3296 bleu+3 + extru %r22,31,8,%r19 ;# 3330 zero_extendqisi2/1 +L$0344 + ldw -228(0,%r30),%r1 ;# 8922 reload_outsi+2/5 + comib,=,n 0,%r1,L$0345 ;# 3301 bleu+1 + comb,= %r25,%r22,L$1169 ;# 3305 bleu+1 + extru %r22,31,8,%r19 ;# 3330 zero_extendqisi2/1 + comib,= 9,%r22,L$1170 ;# 3307 bleu+1 + extru %r19,28,29,%r21 ;# 3332 lshrsi3/2 +L$0345 + ldw -220(0,%r30),%r1 ;# 8925 reload_outsi+2/5 + comib,= 0,%r1,L$0341 ;# 3312 bleu+1 + ldw RR'__ctype-$global$(%r4),%r19 ;# 3316 reload_outsi+2/5 + addl %r19,%r22,%r19 ;# 3317 addsi3/1 + ldb 0(0,%r19),%r19 ;# 3319 movqi+1/5 + and %r19,%r25,%r19 ;# 3322 andsi3/1 + comib,= 0,%r19,L$0341 ;# 3325 bleu+1 + extru %r22,31,8,%r19 ;# 3330 zero_extendqisi2/1 +L$1169 + extru %r19,28,29,%r21 ;# 3332 lshrsi3/2 +L$1170 + addl %r6,%r21,%r21 ;# 3335 addsi3/1 + extru %r19,31,3,%r19 ;# 3339 andsi3/1 + subi 31,%r19,%r19 ;# 3340 subsi3/2 + ldb 0(0,%r21),%r20 ;# 3343 movqi+1/5 + mtsar %r19 ;# 8928 reload_outsi+2/7 + vdepi -1,1,%r20 ;# 3348 vdepi_ior + stb %r20,0(0,%r21) ;# 3350 movqi+1/6 +L$0341 + ldw -212(0,%r30),%r1 ;# 8931 reload_outsi+2/5 + comib,= 0,%r1,L$0348 ;# 3354 bleu+1 + ldw RR'__ctype-$global$(%r4),%r19 ;# 3358 reload_outsi+2/5 + addl %r19,%r22,%r19 ;# 3359 addsi3/1 + ldb 0(0,%r19),%r19 ;# 3361 movqi+1/5 + and %r19,%r18,%r19 ;# 3364 andsi3/1 + comib,<> 0,%r19,L$1171 ;# 3367 bleu+1 + extru %r22,31,8,%r19 ;# 3426 zero_extendqisi2/1 +L$0348 + ldw -204(0,%r30),%r1 ;# 8934 reload_outsi+2/5 + comib,= 0,%r1,L$0349 ;# 3372 bleu+1 + ldw RR'__ctype2-$global$(%r23),%r19 ;# 3376 reload_outsi+2/5 + addl %r19,%r22,%r19 ;# 3377 addsi3/1 + ldb 0(0,%r19),%r19 ;# 3379 movqi+1/5 + and %r19,%r24,%r19 ;# 3382 andsi3/1 + comib,<> 0,%r19,L$1171 ;# 3385 bleu+1 + extru %r22,31,8,%r19 ;# 3426 zero_extendqisi2/1 +L$0349 + ldw -196(0,%r30),%r1 ;# 8937 reload_outsi+2/5 + comib,= 0,%r1,L$0350 ;# 3390 bleu+1 + ldw RR'__ctype-$global$(%r4),%r19 ;# 3394 reload_outsi+2/5 + addl %r19,%r22,%r19 ;# 3395 addsi3/1 + ldb 0(0,%r19),%r19 ;# 3397 movqi+1/5 + and %r19,%r24,%r19 ;# 3400 andsi3/1 + comib,<> 0,%r19,L$1171 ;# 3403 bleu+1 + extru %r22,31,8,%r19 ;# 3426 zero_extendqisi2/1 +L$0350 + ldw -188(0,%r30),%r1 ;# 8940 reload_outsi+2/5 + comib,= 0,%r1,L$0346 ;# 3408 bleu+1 + ldw RR'__ctype2-$global$(%r23),%r19 ;# 3412 reload_outsi+2/5 + addl %r19,%r22,%r19 ;# 3413 addsi3/1 + ldb 0(0,%r19),%r19 ;# 3415 movqi+1/5 + and %r19,%r18,%r19 ;# 3418 andsi3/1 + comib,= 0,%r19,L$0346 ;# 3421 bleu+1 + extru %r22,31,8,%r19 ;# 3426 zero_extendqisi2/1 +L$1171 + extru %r19,28,29,%r21 ;# 3428 lshrsi3/2 + addl %r6,%r21,%r21 ;# 3431 addsi3/1 + extru %r19,31,3,%r19 ;# 3435 andsi3/1 + subi 31,%r19,%r19 ;# 3436 subsi3/2 + ldb 0(0,%r21),%r20 ;# 3439 movqi+1/5 + mtsar %r19 ;# 8943 reload_outsi+2/7 + vdepi -1,1,%r20 ;# 3444 vdepi_ior + stb %r20,0(0,%r21) ;# 3446 movqi+1/6 +L$0346 + ldw -180(0,%r30),%r1 ;# 8946 reload_outsi+2/5 + comib,= 0,%r1,L$0353 ;# 3450 bleu+1 + ldw RR'__ctype-$global$(%r4),%r19 ;# 3454 reload_outsi+2/5 + addl %r19,%r22,%r19 ;# 3455 addsi3/1 + ldb 0(0,%r19),%r19 ;# 3457 movqi+1/5 + and %r19,%r31,%r19 ;# 3460 andsi3/1 + comib,<> 0,%r19,L$1172 ;# 3463 bleu+1 + extru %r22,31,8,%r19 ;# 3520 zero_extendqisi2/1 +L$0353 + ldw -172(0,%r30),%r1 ;# 8949 reload_outsi+2/5 + comib,= 0,%r1,L$0354 ;# 3468 bleu+1 + ldw RR'__ctype-$global$(%r4),%r19 ;# 3472 reload_outsi+2/5 + addl %r19,%r22,%r19 ;# 3473 addsi3/1 + ldb 0(0,%r19),%r19 ;# 3475 movqi+1/5 + and %r19,%r29,%r19 ;# 3478 andsi3/1 + comib,<> 0,%r19,L$1172 ;# 3481 bleu+1 + extru %r22,31,8,%r19 ;# 3520 zero_extendqisi2/1 +L$0354 + comib,= 0,%r13,L$0355 ;# 3486 bleu+1 + ldw RR'__ctype-$global$(%r4),%r19 ;# 3490 reload_outsi+2/5 + addl %r19,%r22,%r19 ;# 3491 addsi3/1 + ldb 0(0,%r19),%r19 ;# 3493 movqi+1/5 + bb,< %r19,31,L$1172 ;# 3497 bleu+3 + extru %r22,31,8,%r19 ;# 3520 zero_extendqisi2/1 +L$0355 + comib,= 0,%r7,L$0339 ;# 3502 bleu+1 + ldw RR'__ctype-$global$(%r4),%r19 ;# 3506 reload_outsi+2/5 + addl %r19,%r22,%r19 ;# 3507 addsi3/1 + ldb 0(0,%r19),%r19 ;# 3509 movqi+1/5 + and %r19,%r28,%r19 ;# 3512 andsi3/1 + comib,= 0,%r19,L$0339 ;# 3515 bleu+1 + extru %r22,31,8,%r19 ;# 3520 zero_extendqisi2/1 +L$1172 + extru %r19,28,29,%r21 ;# 3522 lshrsi3/2 + addl %r6,%r21,%r21 ;# 3525 addsi3/1 + extru %r19,31,3,%r19 ;# 3529 andsi3/1 + subi 31,%r19,%r19 ;# 3530 subsi3/2 + ldb 0(0,%r21),%r20 ;# 3533 movqi+1/5 + mtsar %r19 ;# 8952 reload_outsi+2/7 + vdepi -1,1,%r20 ;# 3538 vdepi_ior + stb %r20,0(0,%r21) ;# 3540 movqi+1/6 +L$0339 + ldo 1(%r22),%r22 ;# 3546 addsi3/2 + comb,>=,n %r26,%r22,L$1173 ;# 3233 bleu+1 + ldw -244(0,%r30),%r1 ;# 8916 reload_outsi+2/5 + bl L$0275,0 ;# 3559 jump + ldi 1,%r13 ;# 3556 reload_outsi+2/2 +L$0328 + ldi 255,%r19 ;# 8069 reload_outsi+2/2 +L$1168 + comb,= %r19,%r3,L$0359 ;# 8070 bleu+1 + copy %r19,%r21 ;# 8595 reload_outsi+2/1 +L$0360 + ldo -1(%r3),%r20 ;# 3571 addsi3/2 + ldw -296(0,%r30),%r19 ;# 3583 reload_outsi+2/5 + extru %r20,31,8,%r3 ;# 3572 zero_extendqisi2/1 + ldo -1(%r19),%r19 ;# 3584 addsi3/2 + comb,<> %r21,%r3,L$0360 ;# 3577 bleu+1 + stw %r19,-296(0,%r30) ;# 3588 reload_outsi+2/6 +L$0359 + ldb 11(0,%r6),%r19 ;# 3599 movqi+1/5 + depi -1,28,1,%r19 ;# 3601 iorsi3+1/2 + stb %r19,11(0,%r6) ;# 3603 movqi+1/6 + ldb 7(0,%r6),%r19 ;# 3606 movqi+1/5 + ldi 0,%r13 ;# 3613 reload_outsi+2/2 + depi -1,29,1,%r19 ;# 3608 iorsi3+1/2 + bl L$0275,0 ;# 3618 jump + stb %r19,7(0,%r6) ;# 3610 movqi+1/6 +L$0309 + ldi 0,%r13 ;# 3624 reload_outsi+2/2 +L$1166 + extru %r7,21+8-1,8,%r19 ;# 3627 extzv + addl %r6,%r19,%r19 ;# 3630 addsi3/1 + extru %r7,31,3,%r20 ;# 3633 andsi3/1 +L$0948 + subi 31,%r20,%r20 ;# 3634 subsi3/2 + ldb 0(0,%r19),%r21 ;# 3637 movqi+1/5 + mtsar %r20 ;# 8955 reload_outsi+2/7 + vdepi -1,1,%r21 ;# 3642 vdepi_ior + bl L$0275,0 ;# 3653 jump + stb %r21,0(0,%r19) ;# 3644 movqi+1/6 +L$0276 + ldb -1(0,%r6),%r20 ;# 8074 movqi+1/5 + extru %r20,31,8,%r19 ;# 8075 zero_extendqisi2/1 + comib,= 0,%r19,L$0364 ;# 8076 bleu+1 + addl %r19,%r6,%r19 ;# 8079 addsi3/1 + ldb -1(0,%r19),%r19 ;# 8082 zero_extendqisi2/2 + comib,<> 0,%r19,L$0364 ;# 8083 bleu+1 + ldo -1(%r20),%r19 ;# 8242 addsi3/2 + bl L$1183,0 ;# 8253 jump + stb %r19,-1(0,%r6) ;# 3688 movqi+1/6 +L$0365 + ldo -1(%r19),%r19 ;# 3686 addsi3/2 + stb %r19,-1(0,%r6) ;# 3688 movqi+1/6 +L$1183 + extru %r19,31,8,%r19 ;# 3662 zero_extendqisi2/1 + comib,= 0,%r19,L$0364 ;# 3664 bleu+1 + addl %r19,%r6,%r19 ;# 3668 addsi3/1 + ldb -1(0,%r19),%r19 ;# 3672 zero_extendqisi2/2 + comib,=,n 0,%r19,L$0365 ;# 3674 bleu+1 + ldb -1(0,%r6),%r19 ;# 3683 movqi+1/5 +L$0364 + ldb -1(0,%r6),%r19 ;# 3700 zero_extendqisi2/2 + bl L$0043,0 ;# 3705 jump + addl %r6,%r19,%r6 ;# 3701 addsi3/1 +L$0368 + bb,>=,n %r15,18,L$0076 ;# 3713 movsi-4 + bl L$1181,0 ;# 3721 jump + ldw 24(0,%r5),%r19 ;# 3861 reload_outsi+2/5 +L$0372 + bb,>=,n %r15,18,L$0076 ;# 3730 movsi-4 + bl,n L$0374,0 ;# 3738 jump +L$0376 + bb,>=,n %r15,20,L$0076 ;# 3747 movsi-4 + bl,n L$0378,0 ;# 3755 jump +L$0380 + bb,>=,n %r15,16,L$0076 ;# 3764 movsi-4 + bl,n L$0378,0 ;# 3772 jump +L$0383 + and %r15,%r20,%r19 ;# 3779 andsi3/1 + comb,= %r20,%r19,L$1174 ;# 3783 bleu+1 + ldi -1,%r4 ;# 5074 reload_outsi+2/2 + bl,n L$0076,0 ;# 3791 jump +L$0387 + comb,=,n %r16,%r19,L$0903 ;# 3799 bleu+1 + ldb 0(0,%r19),%r7 ;# 3831 zero_extendqisi2/2 + ldo 1(%r19),%r19 ;# 3826 addsi3/2 + stw %r19,-296(0,%r30) ;# 3828 reload_outsi+2/6 + ldo -39(%r7),%r19 ;# 7446 addsi3/2 + addi,uv -86,%r19,0 ;# 7447 casesi0 + blr,n %r19,0 + b,n L$0397 +L$0817 + bl L$0759,0 ;# 9437 switch_jump + ldw 0(0,%r5),%r4 ;# 8204 reload_outsi+2/5 +L$1069 + bl L$0395,0 + nop ;# 9440 switch_jump +L$1070 + bl L$0422,0 + nop ;# 9443 switch_jump +L$1071 + bl L$0397,0 + nop ;# 9446 switch_jump +L$1072 + bl L$0811,0 + nop ;# 9449 switch_jump +L$1073 + bl L$0397,0 + nop ;# 9452 switch_jump +L$1074 + bl L$0397,0 + nop ;# 9455 switch_jump +L$1075 + bl L$0397,0 + nop ;# 9458 switch_jump +L$1076 + bl L$0397,0 + nop ;# 9461 switch_jump +L$1077 + bl L$0397,0 + nop ;# 9464 switch_jump +L$1078 + bl L$0787,0 + nop ;# 9467 switch_jump +L$1079 + bl L$0787,0 + nop ;# 9470 switch_jump +L$1080 + bl L$0787,0 + nop ;# 9473 switch_jump +L$1081 + bl L$0787,0 + nop ;# 9476 switch_jump +L$1082 + bl L$0787,0 + nop ;# 9479 switch_jump +L$1083 + bl L$0787,0 + nop ;# 9482 switch_jump +L$1084 + bl L$0787,0 + nop ;# 9485 switch_jump +L$1085 + bl L$0787,0 + nop ;# 9488 switch_jump +L$1086 + bl L$0787,0 + nop ;# 9491 switch_jump +L$1087 + bl L$0397,0 + nop ;# 9494 switch_jump +L$1088 + bl L$0397,0 + nop ;# 9497 switch_jump +L$1089 + bl L$0659,0 ;# 9500 switch_jump + ldw 0(0,%r5),%r4 ;# 8164 reload_outsi+2/5 +L$1090 + bl L$0397,0 + nop ;# 9503 switch_jump +L$1091 + bl L$0679,0 ;# 9506 switch_jump + ldw 0(0,%r5),%r4 ;# 8172 reload_outsi+2/5 +L$1092 + bl L$0811,0 + nop ;# 9509 switch_jump +L$1093 + bl L$0397,0 + nop ;# 9512 switch_jump +L$1094 + bl L$0397,0 + nop ;# 9515 switch_jump +L$1095 + bl L$0719,0 ;# 9518 switch_jump + ldw 0(0,%r5),%r4 ;# 8188 reload_outsi+2/5 +L$1096 + bl L$0397,0 + nop ;# 9521 switch_jump +L$1097 + bl L$0397,0 + nop ;# 9524 switch_jump +L$1098 + bl L$0397,0 + nop ;# 9527 switch_jump +L$1099 + bl L$0397,0 + nop ;# 9530 switch_jump +L$1100 + bl L$0397,0 + nop ;# 9533 switch_jump +L$1101 + bl L$0397,0 + nop ;# 9536 switch_jump +L$1102 + bl L$0397,0 + nop ;# 9539 switch_jump +L$1103 + bl L$0397,0 + nop ;# 9542 switch_jump +L$1104 + bl L$0397,0 + nop ;# 9545 switch_jump +L$1105 + bl L$0397,0 + nop ;# 9548 switch_jump +L$1106 + bl L$0397,0 + nop ;# 9551 switch_jump +L$1107 + bl L$0397,0 + nop ;# 9554 switch_jump +L$1108 + bl L$0397,0 + nop ;# 9557 switch_jump +L$1109 + bl L$0397,0 + nop ;# 9560 switch_jump +L$1110 + bl L$0397,0 + nop ;# 9563 switch_jump +L$1111 + bl L$0397,0 + nop ;# 9566 switch_jump +L$1112 + bl L$0397,0 + nop ;# 9569 switch_jump +L$1113 + bl L$0397,0 + nop ;# 9572 switch_jump +L$1114 + bl L$0397,0 + nop ;# 9575 switch_jump +L$1115 + bl L$0397,0 + nop ;# 9578 switch_jump +L$1116 + bl L$0639,0 ;# 9581 switch_jump + ldw 0(0,%r5),%r4 ;# 8156 reload_outsi+2/5 +L$1117 + bl L$0397,0 + nop ;# 9584 switch_jump +L$1118 + bl L$0397,0 + nop ;# 9587 switch_jump +L$1119 + bl L$0397,0 + nop ;# 9590 switch_jump +L$1120 + bl L$0397,0 + nop ;# 9593 switch_jump +L$1121 + bl L$0397,0 + nop ;# 9596 switch_jump +L$1122 + bl L$0397,0 + nop ;# 9599 switch_jump +L$1123 + bl L$0397,0 + nop ;# 9602 switch_jump +L$1124 + bl L$0397,0 + nop ;# 9605 switch_jump +L$1125 + bl L$0739,0 ;# 9608 switch_jump + ldw 0(0,%r5),%r4 ;# 8196 reload_outsi+2/5 +L$1126 + bl L$0397,0 + nop ;# 9611 switch_jump +L$1127 + bl L$0699,0 ;# 9614 switch_jump + ldw 0(0,%r5),%r4 ;# 8180 reload_outsi+2/5 +L$1128 + bl L$0397,0 + nop ;# 9617 switch_jump +L$1129 + bl L$0397,0 + nop ;# 9620 switch_jump +L$1130 + bl L$0397,0 + nop ;# 9623 switch_jump +L$1131 + bl L$0397,0 + nop ;# 9626 switch_jump +L$1132 + bl L$0397,0 + nop ;# 9629 switch_jump +L$1133 + bl L$0397,0 + nop ;# 9632 switch_jump +L$1134 + bl L$0397,0 + nop ;# 9635 switch_jump +L$1135 + bl L$0397,0 + nop ;# 9638 switch_jump +L$1136 + bl L$0397,0 + nop ;# 9641 switch_jump +L$1137 + bl L$0397,0 + nop ;# 9644 switch_jump +L$1138 + bl L$0397,0 + nop ;# 9647 switch_jump +L$1139 + bl L$0397,0 + nop ;# 9650 switch_jump +L$1140 + bl L$0397,0 + nop ;# 9653 switch_jump +L$1141 + bl L$0397,0 + nop ;# 9656 switch_jump +L$1142 + bl L$0397,0 + nop ;# 9659 switch_jump +L$1143 + bl L$0397,0 + nop ;# 9662 switch_jump +L$1144 + bl L$0397,0 + nop ;# 9665 switch_jump +L$1145 + bl L$0397,0 + nop ;# 9668 switch_jump +L$1146 + bl L$0397,0 + nop ;# 9671 switch_jump +L$1147 + bl L$0397,0 + nop ;# 9674 switch_jump +L$1148 + bl L$0619,0 ;# 9677 switch_jump + ldw 0(0,%r5),%r4 ;# 8148 reload_outsi+2/5 +L$1149 + bl L$0397,0 + nop ;# 9680 switch_jump +L$1150 + bl L$0397,0 + nop ;# 9683 switch_jump +L$1151 + bl L$0397,0 + nop ;# 9686 switch_jump +L$1152 + bl L$0506,0 + nop ;# 9689 switch_jump +L$1153 + bl L$0472,0 ;# 9692 switch_jump + ldil L'33792,%r19 ;# 4724 add_high_const+3 +L$1154 + bl,n L$0397,0 ;# 7450 jump +L$0395 + bb,<,n %r15,18,L$0397 ;# 3853 bleu+3 + ldw 24(0,%r5),%r19 ;# 3861 reload_outsi+2/5 +L$1181 + ldo 1(%r19),%r19 ;# 3862 addsi3/2 + stw %r19,24(0,%r5) ;# 3866 reload_outsi+2/6 + ldw -304(0,%r30),%r20 ;# 3871 reload_outsi+2/5 + ldw -260(0,%r30),%r1 ;# 8958 reload_outsi+2/5 + ldw -308(0,%r30),%r19 ;# 3873 reload_outsi+2/5 + ldo 1(%r1),%r1 ;# 3868 addsi3/2 + comb,<> %r19,%r20,L$0398 ;# 3875 bleu+1 + stw %r1,-260(0,%r30) ;# 8961 reload_outsi+2/6 + zdep %r20,28,29,%r25 ;# 3885 ashlsi3+1 + sh1addl %r20,%r25,%r25 ;# 3886 ashlsi3-2 + ldw -312(0,%r30),%r26 ;# 3890 reload_outsi+2/5 + .CALL ARGW0=GR,ARGW1=GR + bl realloc,%r2 ;# 3894 call_value_internal_symref + zdep %r25,29,30,%r25 ;# 3892 ashlsi3+1 + comib,= 0,%r28,L$0953 ;# 3903 bleu+1 + stw %r28,-312(0,%r30) ;# 3898 reload_outsi+2/6 + ldw -308(0,%r30),%r19 ;# 3912 reload_outsi+2/5 + zdep %r19,30,31,%r19 ;# 3914 ashlsi3+1 + stw %r19,-308(0,%r30) ;# 3916 reload_outsi+2/6 +L$0398 + ldw -304(0,%r30),%r20 ;# 3921 reload_outsi+2/5 + ldw -312(0,%r30),%r21 ;# 3923 reload_outsi+2/5 + ldw 0(0,%r5),%r19 ;# 3933 reload_outsi+2/5 + sh2addl %r20,%r20,%r20 ;# 3928 ashlsi3-2 + sh2addl %r20,%r21,%r21 ;# 3931 ashlsi3-2 + sub %r12,%r19,%r19 ;# 3934 subsi3/1 + stw %r19,0(0,%r21) ;# 3936 reload_outsi+2/6 + ldw -304(0,%r30),%r19 ;# 3939 reload_outsi+2/5 + ldw -312(0,%r30),%r20 ;# 3941 reload_outsi+2/5 + sh2addl %r19,%r19,%r19 ;# 3946 ashlsi3-2 + comib,= 0,%r10,L$0400 ;# 3951 bleu+1 + sh2addl %r19,%r20,%r20 ;# 3949 ashlsi3-2 + ldw 0(0,%r5),%r19 ;# 3953 reload_outsi+2/5 + sub %r10,%r19,%r19 ;# 3954 subsi3/1 + ldo 1(%r19),%r19 ;# 3955 addsi3/2 + bl L$0401,0 ;# 3958 jump + stw %r19,4(0,%r20) ;# 3957 reload_outsi+2/6 +L$0400 + stw 0,4(0,%r20) ;# 3962 reload_outsi+2/6 +L$0401 + ldw -304(0,%r30),%r20 ;# 3966 reload_outsi+2/5 + ldw -312(0,%r30),%r21 ;# 3968 reload_outsi+2/5 + ldw 0(0,%r5),%r19 ;# 3978 reload_outsi+2/5 + sh2addl %r20,%r20,%r20 ;# 3973 ashlsi3-2 + sh2addl %r20,%r21,%r21 ;# 3976 ashlsi3-2 + sub %r6,%r19,%r19 ;# 3979 subsi3/1 + stw %r19,12(0,%r21) ;# 3981 reload_outsi+2/6 + ldw -304(0,%r30),%r19 ;# 3984 reload_outsi+2/5 + ldw -312(0,%r30),%r20 ;# 3986 reload_outsi+2/5 + ldw -260(0,%r30),%r1 ;# 8964 reload_outsi+2/5 + sh2addl %r19,%r19,%r19 ;# 3991 ashlsi3-2 + sh2addl %r19,%r20,%r20 ;# 3994 ashlsi3-2 + ldi 255,%r19 ;# 3999 reload_outsi+2/2 + comb,<< %r19,%r1,L$0402 ;# 4001 bleu+1 + stw %r1,16(0,%r20) ;# 3996 reload_outsi+2/6 + ldw -304(0,%r30),%r20 ;# 4005 reload_outsi+2/5 + ldw -312(0,%r30),%r21 ;# 4007 reload_outsi+2/5 + ldw 0(0,%r5),%r19 ;# 4017 reload_outsi+2/5 + sh2addl %r20,%r20,%r20 ;# 4012 ashlsi3-2 + sh2addl %r20,%r21,%r21 ;# 4015 ashlsi3-2 + sub %r6,%r19,%r19 ;# 4018 subsi3/1 + ldo 2(%r19),%r19 ;# 4019 addsi3/2 + stw %r19,8(0,%r21) ;# 4021 reload_outsi+2/6 + ldw 0(0,%r5),%r4 ;# 8087 reload_outsi+2/5 + ldw 4(0,%r5),%r20 ;# 8090 reload_outsi+2/5 + sub %r6,%r4,%r19 ;# 8088 subsi3/1 + ldo 3(%r19),%r19 ;# 8089 addsi3/2 + comb,>>=,n %r20,%r19,L$0407 ;# 8091 bleu+1 + ldil L'65536,%r3 ;# 8593 reload_outsi+2/3 +L$0408 + comb,= %r3,%r20,L$0944 ;# 4049 bleu+1 + zdep %r20,30,31,%r19 ;# 4059 ashlsi3+1 + comb,>>= %r3,%r19,L$0413 ;# 4067 bleu+1 + stw %r19,4(0,%r5) ;# 4061 reload_outsi+2/6 + stw %r3,4(0,%r5) ;# 4070 reload_outsi+2/6 +L$0413 + ldw 0(0,%r5),%r26 ;# 4077 reload_outsi+2/5 + .CALL ARGW0=GR,ARGW1=GR + bl realloc,%r2 ;# 4081 call_value_internal_symref + ldw 4(0,%r5),%r25 ;# 4079 reload_outsi+2/5 + comib,= 0,%r28,L$0953 ;# 4089 bleu+1 + stw %r28,0(0,%r5) ;# 4085 reload_outsi+2/6 + comb,= %r28,%r4,L$0406 ;# 4099 bleu+1 + sub %r6,%r4,%r19 ;# 4101 subsi3/1 + comib,= 0,%r10,L$0416 ;# 4110 bleu+1 + addl %r28,%r19,%r6 ;# 4104 addsi3/1 + sub %r10,%r4,%r19 ;# 4111 subsi3/1 + addl %r28,%r19,%r10 ;# 4114 addsi3/1 +L$0416 + comib,= 0,%r8,L$0417 ;# 4117 bleu+1 + sub %r8,%r4,%r19 ;# 4118 subsi3/1 + addl %r28,%r19,%r8 ;# 4121 addsi3/1 +L$0417 + comib,= 0,%r9,L$0406 ;# 4124 bleu+1 + sub %r9,%r4,%r19 ;# 4125 subsi3/1 + addl %r28,%r19,%r9 ;# 4128 addsi3/1 +L$0406 + ldw 0(0,%r5),%r4 ;# 4029 reload_outsi+2/5 + ldw 4(0,%r5),%r20 ;# 4033 reload_outsi+2/5 + sub %r6,%r4,%r19 ;# 4030 subsi3/1 + ldo 3(%r19),%r19 ;# 4031 addsi3/2 + comb,<< %r20,%r19,L$0408 + nop ;# 4035 bleu+1 +L$0407 + ldi 5,%r19 ;# 4150 movqi+1/2 + stbs,ma %r19,1(0,%r6) ;# 4151 movqi+1/6 + ldb -257(0,%r30),%r1 ;# 4156 movqi+1/5 + stbs,ma %r1,1(0,%r6) ;# 8968 movqi+1/6 + stbs,ma 0,1(0,%r6) ;# 4159 movqi+1/6 +L$0402 + ldi 0,%r10 ;# 4182 reload_outsi+2/2 + ldi 0,%r8 ;# 4185 reload_outsi+2/2 + copy %r6,%r12 ;# 4188 reload_outsi+2/1 + ldw -304(0,%r30),%r19 ;# 4174 reload_outsi+2/5 + ldi 0,%r9 ;# 4191 reload_outsi+2/2 + ldo 1(%r19),%r19 ;# 4175 addsi3/2 + bl L$0043,0 ;# 4193 jump + stw %r19,-304(0,%r30) ;# 4179 reload_outsi+2/6 +L$0422 + bb,< %r15,18,L$0397 ;# 4201 bleu+3 + ldw -304(0,%r30),%r19 ;# 4207 reload_outsi+2/5 + comib,<>,n 0,%r19,L$0374 ;# 4209 bleu+1 + bb,>=,n %r15,14,L$0950 ;# 4215 movsi-4 + bl,n L$0397,0 ;# 4230 jump +L$0374 + comib,=,n 0,%r10,L$0427 ;# 4237 bleu+1 + ldw 0(0,%r5),%r4 ;# 8095 reload_outsi+2/5 + ldw 4(0,%r5),%r20 ;# 8098 reload_outsi+2/5 + sub %r6,%r4,%r19 ;# 8096 subsi3/1 + ldo 1(%r19),%r19 ;# 8097 addsi3/2 + comb,>>=,n %r20,%r19,L$0432 ;# 8099 bleu+1 + ldil L'65536,%r3 ;# 8591 reload_outsi+2/3 +L$0433 + comb,= %r3,%r20,L$0944 ;# 4266 bleu+1 + zdep %r20,30,31,%r19 ;# 4276 ashlsi3+1 + comb,>>= %r3,%r19,L$0438 ;# 4284 bleu+1 + stw %r19,4(0,%r5) ;# 4278 reload_outsi+2/6 + stw %r3,4(0,%r5) ;# 4287 reload_outsi+2/6 +L$0438 + ldw 0(0,%r5),%r26 ;# 4294 reload_outsi+2/5 + .CALL ARGW0=GR,ARGW1=GR + bl realloc,%r2 ;# 4298 call_value_internal_symref + ldw 4(0,%r5),%r25 ;# 4296 reload_outsi+2/5 + comib,= 0,%r28,L$0953 ;# 4306 bleu+1 + stw %r28,0(0,%r5) ;# 4302 reload_outsi+2/6 + comb,= %r28,%r4,L$0431 ;# 4316 bleu+1 + sub %r6,%r4,%r19 ;# 4318 subsi3/1 + addl %r28,%r19,%r6 ;# 4321 addsi3/1 + sub %r12,%r4,%r19 ;# 4322 subsi3/1 + comib,= 0,%r10,L$0441 ;# 4327 bleu+1 + addl %r28,%r19,%r12 ;# 4325 addsi3/1 + sub %r10,%r4,%r19 ;# 4328 subsi3/1 + addl %r28,%r19,%r10 ;# 4331 addsi3/1 +L$0441 + comib,= 0,%r8,L$0442 ;# 4334 bleu+1 + sub %r8,%r4,%r19 ;# 4335 subsi3/1 + addl %r28,%r19,%r8 ;# 4338 addsi3/1 +L$0442 + comib,= 0,%r9,L$0431 ;# 4341 bleu+1 + sub %r9,%r4,%r19 ;# 4342 subsi3/1 + addl %r28,%r19,%r9 ;# 4345 addsi3/1 +L$0431 + ldw 0(0,%r5),%r4 ;# 4246 reload_outsi+2/5 + ldw 4(0,%r5),%r20 ;# 4250 reload_outsi+2/5 + sub %r6,%r4,%r19 ;# 4247 subsi3/1 + ldo 1(%r19),%r19 ;# 4248 addsi3/2 + comb,<< %r20,%r19,L$0433 + nop ;# 4252 bleu+1 +L$0432 + ldi 19,%r19 ;# 4367 movqi+1/2 + stbs,ma %r19,1(0,%r6) ;# 4368 movqi+1/6 + uaddcm %r6,%r10,%r24 ;# 4381 adddi3+1 + ldi 13,%r26 ;# 4384 reload_outsi+2/2 + copy %r10,%r25 ;# 4386 reload_outsi+2/1 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl store_op1,%r2 ;# 4390 call_internal_symref + ldo -3(%r24),%r24 ;# 4388 addsi3/2 +L$0427 + ldw -304(0,%r30),%r19 ;# 4395 reload_outsi+2/5 + comib,<>,n 0,%r19,L$0447 ;# 4397 bleu+1 + bb,<,n %r15,14,L$0076 ;# 4403 bleu+3 +L$0950 + .CALL ARGW0=GR + bl free,%r2 ;# 4414 call_internal_symref + ldw -312(0,%r30),%r26 ;# 4412 reload_outsi+2/5 + bl L$0867,0 ;# 4418 jump + ldi 16,%r28 ;# 4416 reload_outsi+2/2 +L$0447 + ldo -1(%r19),%r19 ;# 4427 addsi3/2 + stw %r19,-304(0,%r30) ;# 4431 reload_outsi+2/6 + ldw -312(0,%r30),%r20 ;# 4436 reload_outsi+2/5 + sh2addl %r19,%r19,%r19 ;# 4441 ashlsi3-2 + sh2addl %r19,%r20,%r20 ;# 4444 ashlsi3-2 + ldw 0(0,%r5),%r21 ;# 4446 reload_outsi+2/5 + ldw 0(0,%r20),%r19 ;# 4448 reload_outsi+2/5 + ldw 4(0,%r20),%r20 ;# 4464 reload_outsi+2/5 + comib,= 0,%r20,L$0450 ;# 4466 bleu+1 + addl %r21,%r19,%r12 ;# 4449 addsi3/1 + addl %r21,%r20,%r19 ;# 4483 addsi3/1 + bl L$0451,0 ;# 4485 jump + ldo -1(%r19),%r10 ;# 4484 addsi3/2 +L$0450 + ldi 0,%r10 ;# 4489 reload_outsi+2/2 +L$0451 + ldw -304(0,%r30),%r19 ;# 4493 reload_outsi+2/5 + ldw -312(0,%r30),%r20 ;# 4495 reload_outsi+2/5 + ldw 0(0,%r5),%r21 ;# 4505 reload_outsi+2/5 + sh2addl %r19,%r19,%r19 ;# 4500 ashlsi3-2 + sh2addl %r19,%r20,%r20 ;# 4503 ashlsi3-2 + ldw 12(0,%r20),%r19 ;# 4507 reload_outsi+2/5 + ldw 16(0,%r20),%r7 ;# 4523 reload_outsi+2/5 + addl %r21,%r19,%r8 ;# 4508 addsi3/1 + ldi 255,%r19 ;# 4529 reload_outsi+2/2 + comb,<< %r19,%r7,L$0043 ;# 4531 bleu+1 + ldi 0,%r9 ;# 4526 reload_outsi+2/2 + ldw 8(0,%r20),%r19 ;# 4550 reload_outsi+2/5 + ldw -260(0,%r30),%r1 ;# 8971 reload_outsi+2/5 + addl %r21,%r19,%r19 ;# 4551 addsi3/1 + sub %r1,%r7,%r20 ;# 4557 subsi3/1 + stb %r20,0(0,%r19) ;# 4559 movqi+1/6 + ldw 0(0,%r5),%r4 ;# 8103 reload_outsi+2/5 + ldw 4(0,%r5),%r20 ;# 8106 reload_outsi+2/5 + sub %r6,%r4,%r19 ;# 8104 subsi3/1 + ldo 3(%r19),%r19 ;# 8105 addsi3/2 + comb,>>=,n %r20,%r19,L$0457 ;# 8107 bleu+1 + ldil L'65536,%r3 ;# 8589 reload_outsi+2/3 +L$0458 + comb,= %r3,%r20,L$0944 ;# 4587 bleu+1 + zdep %r20,30,31,%r19 ;# 4597 ashlsi3+1 + comb,>>= %r3,%r19,L$0463 ;# 4605 bleu+1 + stw %r19,4(0,%r5) ;# 4599 reload_outsi+2/6 + stw %r3,4(0,%r5) ;# 4608 reload_outsi+2/6 +L$0463 + ldw 0(0,%r5),%r26 ;# 4615 reload_outsi+2/5 + .CALL ARGW0=GR,ARGW1=GR + bl realloc,%r2 ;# 4619 call_value_internal_symref + ldw 4(0,%r5),%r25 ;# 4617 reload_outsi+2/5 + comib,= 0,%r28,L$0953 ;# 4627 bleu+1 + stw %r28,0(0,%r5) ;# 4623 reload_outsi+2/6 + comb,= %r28,%r4,L$0456 ;# 4637 bleu+1 + sub %r6,%r4,%r19 ;# 4639 subsi3/1 + addl %r28,%r19,%r6 ;# 4642 addsi3/1 + sub %r12,%r4,%r19 ;# 4643 subsi3/1 + comib,= 0,%r10,L$0466 ;# 4648 bleu+1 + addl %r28,%r19,%r12 ;# 4646 addsi3/1 + sub %r10,%r4,%r19 ;# 4649 subsi3/1 + addl %r28,%r19,%r10 ;# 4652 addsi3/1 +L$0466 + comib,= 0,%r8,L$0467 ;# 4655 bleu+1 + sub %r8,%r4,%r19 ;# 4656 subsi3/1 + addl %r28,%r19,%r8 ;# 4659 addsi3/1 +L$0467 + comib,= 0,%r9,L$0456 ;# 4662 bleu+1 + sub %r9,%r4,%r19 ;# 4663 subsi3/1 + addl %r28,%r19,%r9 ;# 4666 addsi3/1 +L$0456 + ldw 0(0,%r5),%r4 ;# 4567 reload_outsi+2/5 + ldw 4(0,%r5),%r20 ;# 4571 reload_outsi+2/5 + sub %r6,%r4,%r19 ;# 4568 subsi3/1 + ldo 3(%r19),%r19 ;# 4569 addsi3/2 + comb,<< %r20,%r19,L$0458 + nop ;# 4573 bleu+1 +L$0457 + ldi 6,%r19 ;# 4688 movqi+1/2 + stbs,ma %r19,1(0,%r6) ;# 4689 movqi+1/6 + stbs,ma %r7,1(0,%r6) ;# 4694 movqi+1/6 + ldw -260(0,%r30),%r1 ;# 8974 reload_outsi+2/5 + sub %r1,%r7,%r19 ;# 4700 subsi3/1 + bl L$0043,0 ;# 4720 jump + stbs,ma %r19,1(0,%r6) ;# 4702 movqi+1/6 +L$0472 + ldo R'33792(%r19),%r19 ;# 4725 movhi-2 + and %r15,%r19,%r19 ;# 4726 andsi3/1 + comib,<>,n 0,%r19,L$0397 ;# 4728 bleu+1 +L$0378 + bb,<,n %r15,21,L$0076 ;# 4739 bleu+3 + ldw 0(0,%r5),%r3 ;# 8111 reload_outsi+2/5 + ldw 4(0,%r5),%r20 ;# 8114 reload_outsi+2/5 + sub %r6,%r3,%r19 ;# 8112 subsi3/1 + ldo 3(%r19),%r19 ;# 8113 addsi3/2 + comb,>>=,n %r20,%r19,L$0476 ;# 8115 bleu+1 + ldil L'65536,%r4 ;# 8587 reload_outsi+2/3 +L$0477 + comb,= %r4,%r20,L$0944 ;# 4768 bleu+1 + zdep %r20,30,31,%r19 ;# 4778 ashlsi3+1 + comb,>>= %r4,%r19,L$0482 ;# 4786 bleu+1 + stw %r19,4(0,%r5) ;# 4780 reload_outsi+2/6 + stw %r4,4(0,%r5) ;# 4789 reload_outsi+2/6 +L$0482 + ldw 0(0,%r5),%r26 ;# 4796 reload_outsi+2/5 + .CALL ARGW0=GR,ARGW1=GR + bl realloc,%r2 ;# 4800 call_value_internal_symref + ldw 4(0,%r5),%r25 ;# 4798 reload_outsi+2/5 + comib,= 0,%r28,L$0953 ;# 4808 bleu+1 + stw %r28,0(0,%r5) ;# 4804 reload_outsi+2/6 + comb,= %r28,%r3,L$0475 ;# 4818 bleu+1 + sub %r6,%r3,%r19 ;# 4820 subsi3/1 + addl %r28,%r19,%r6 ;# 4823 addsi3/1 + sub %r12,%r3,%r19 ;# 4824 subsi3/1 + comib,= 0,%r10,L$0485 ;# 4829 bleu+1 + addl %r28,%r19,%r12 ;# 4827 addsi3/1 + sub %r10,%r3,%r19 ;# 4830 subsi3/1 + addl %r28,%r19,%r10 ;# 4833 addsi3/1 +L$0485 + comib,= 0,%r8,L$0486 ;# 4836 bleu+1 + sub %r8,%r3,%r19 ;# 4837 subsi3/1 + addl %r28,%r19,%r8 ;# 4840 addsi3/1 +L$0486 + comib,= 0,%r9,L$0475 ;# 4843 bleu+1 + sub %r9,%r3,%r19 ;# 4844 subsi3/1 + addl %r28,%r19,%r9 ;# 4847 addsi3/1 +L$0475 + ldw 0(0,%r5),%r3 ;# 4748 reload_outsi+2/5 + ldw 4(0,%r5),%r20 ;# 4752 reload_outsi+2/5 + sub %r6,%r3,%r19 ;# 4749 subsi3/1 + ldo 3(%r19),%r19 ;# 4750 addsi3/2 + comb,<< %r20,%r19,L$0477 + nop ;# 4754 bleu+1 +L$0476 + ldi 14,%r26 ;# 4873 reload_outsi+2/2 + copy %r12,%r25 ;# 4875 reload_outsi+2/1 + sub %r6,%r25,%r24 ;# 4870 subsi3/1 + ldo 3(%r24),%r24 ;# 4877 addsi3/2 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl insert_op1,%r2 ;# 4881 call_internal_symref + copy %r6,%r23 ;# 4879 reload_outsi+2/1 + ldi 0,%r9 ;# 4884 reload_outsi+2/2 + comib,= 0,%r10,L$0490 ;# 4889 bleu+1 + ldo 3(%r6),%r6 ;# 4886 addsi3/2 + ldi 13,%r26 ;# 4894 reload_outsi+2/2 + copy %r10,%r25 ;# 4896 reload_outsi+2/1 + sub %r6,%r25,%r24 ;# 4891 subsi3/1 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl store_op1,%r2 ;# 4900 call_internal_symref + ldo -3(%r24),%r24 ;# 4898 addsi3/2 +L$0490 + ldw 0(0,%r5),%r3 ;# 8119 reload_outsi+2/5 + ldw 4(0,%r5),%r20 ;# 8122 reload_outsi+2/5 + sub %r6,%r3,%r19 ;# 8120 subsi3/1 + ldo 3(%r19),%r19 ;# 8121 addsi3/2 + comb,>>= %r20,%r19,L$0492 ;# 8123 bleu+1 + copy %r6,%r10 ;# 4904 reload_outsi+2/1 + ldil L'65536,%r4 ;# 8585 reload_outsi+2/3 +L$0493 + comb,= %r4,%r20,L$0944 ;# 4929 bleu+1 + zdep %r20,30,31,%r19 ;# 4939 ashlsi3+1 + comb,>>= %r4,%r19,L$0498 ;# 4947 bleu+1 + stw %r19,4(0,%r5) ;# 4941 reload_outsi+2/6 + stw %r4,4(0,%r5) ;# 4950 reload_outsi+2/6 +L$0498 + ldw 0(0,%r5),%r26 ;# 4957 reload_outsi+2/5 + .CALL ARGW0=GR,ARGW1=GR + bl realloc,%r2 ;# 4961 call_value_internal_symref + ldw 4(0,%r5),%r25 ;# 4959 reload_outsi+2/5 + comib,= 0,%r28,L$0953 ;# 4969 bleu+1 + stw %r28,0(0,%r5) ;# 4965 reload_outsi+2/6 + comb,= %r28,%r3,L$0491 ;# 4979 bleu+1 + sub %r6,%r3,%r19 ;# 4981 subsi3/1 + comib,= 0,%r10,L$0501 ;# 4990 bleu+1 + addl %r28,%r19,%r6 ;# 4984 addsi3/1 + sub %r10,%r3,%r19 ;# 4991 subsi3/1 + addl %r28,%r19,%r10 ;# 4994 addsi3/1 +L$0501 + comib,= 0,%r8,L$0502 ;# 4997 bleu+1 + sub %r8,%r3,%r19 ;# 4998 subsi3/1 + addl %r28,%r19,%r8 ;# 5001 addsi3/1 +L$0502 + comib,= 0,%r9,L$0491 ;# 5004 bleu+1 + sub %r9,%r3,%r19 ;# 5005 subsi3/1 + addl %r28,%r19,%r9 ;# 5008 addsi3/1 +L$0491 + ldw 0(0,%r5),%r3 ;# 4909 reload_outsi+2/5 + ldw 4(0,%r5),%r20 ;# 4913 reload_outsi+2/5 + sub %r6,%r3,%r19 ;# 4910 subsi3/1 + ldo 3(%r19),%r19 ;# 4911 addsi3/2 + comb,<< %r20,%r19,L$0493 + nop ;# 4915 bleu+1 +L$0492 + ldo 3(%r6),%r6 ;# 5030 addsi3/2 + ldi 0,%r8 ;# 5033 reload_outsi+2/2 + bl L$0043,0 ;# 5038 jump + copy %r6,%r12 ;# 5036 reload_outsi+2/1 +L$0506 + bb,>= %r15,22,L$0397 ;# 5046 movsi-4 + ldi 4608,%r20 ;# 5048 reload_outsi+2/2 + and %r15,%r20,%r19 ;# 5049 andsi3/1 + comb,= %r20,%r19,L$0397 ;# 5053 bleu+1 + ldw -296(0,%r30),%r20 ;# 5055 reload_outsi+2/5 + ldw -276(0,%r30),%r1 ;# 8977 reload_outsi+2/5 + ldo -2(%r20),%r19 ;# 5056 addsi3/2 + comb,<> %r1,%r19,L$1175 ;# 5058 bleu+1 + ldi -1,%r4 ;# 5074 reload_outsi+2/2 + comb,=,n %r16,%r20,L$0397 ;# 5062 bleu+1 +L$1174 + ldw -296(0,%r30),%r20 ;# 5079 reload_outsi+2/5 +L$1175 + copy %r4,%r11 ;# 5076 reload_outsi+2/1 + comb,<> %r16,%r20,L$0517 ;# 5085 bleu+1 + ldo -1(%r20),%r23 ;# 5080 addsi3/2 + bb,>=,n %r15,19,L$0915 ;# 5092 movsi-4 + bl L$1182,0 ;# 5107 jump + stw %r23,-296(0,%r30) ;# 5968 reload_outsi+2/6 +L$0517 + ldo 1(%r20),%r19 ;# 5134 addsi3/2 + stw %r19,-296(0,%r30) ;# 5136 reload_outsi+2/6 + comib,= 0,%r14,L$0515 ;# 5143 bleu+1 + ldb 0(0,%r20),%r7 ;# 5139 zero_extendqisi2/2 + addl %r14,%r7,%r19 ;# 5144 addsi3/1 + ldb 0(0,%r19),%r7 ;# 5147 zero_extendqisi2/2 +L$0515 + addil LR'__ctype-$global$,%r27 ;# 8257 pic2_lo_sum+1 + ldw RR'__ctype-$global$(%r1),%r21 ;# 8259 reload_outsi+2/5 + addl %r21,%r7,%r19 ;# 8260 addsi3/1 + ldb 0(0,%r19),%r19 ;# 8261 movqi+1/5 + bb,>= %r19,29,L$0513 ;# 8265 movsi-4 + ldi 4,%r20 ;# 8263 reload_outsi+2/2 + copy %r20,%r22 ;# 8583 reload_outsi+2/1 +L$0522 + comiclr,< -1,%r11,0 ;# 8128 movsicc+1/1 + ldi 0,%r11 + sh2addl %r11,%r11,%r19 ;# 5188 ashlsi3-2 + sh1addl %r19,%r7,%r19 ;# 5191 ashlsi3-2 + ldw -296(0,%r30),%r20 ;# 5194 reload_outsi+2/5 + comb,= %r16,%r20,L$0513 ;# 5196 bleu+1 + ldo -48(%r19),%r11 ;# 5192 addsi3/2 + ldo 1(%r20),%r19 ;# 5215 addsi3/2 + stw %r19,-296(0,%r30) ;# 5217 reload_outsi+2/6 + comib,= 0,%r14,L$0520 ;# 5224 bleu+1 + ldb 0(0,%r20),%r7 ;# 5220 zero_extendqisi2/2 + addl %r14,%r7,%r19 ;# 5225 addsi3/1 + ldb 0(0,%r19),%r7 ;# 5228 zero_extendqisi2/2 +L$0520 + addl %r21,%r7,%r19 ;# 5166 addsi3/1 + ldb 0(0,%r19),%r19 ;# 5168 movqi+1/5 + and %r19,%r22,%r19 ;# 5172 andsi3/1 + comib,<> 0,%r19,L$0522 + nop ;# 5174 bleu+1 +L$0513 + ldi 44,%r19 ;# 5252 reload_outsi+2/2 + comb,<> %r19,%r7,L$0532 ;# 5254 bleu+1 + ldw -296(0,%r30),%r20 ;# 5259 reload_outsi+2/5 + comb,= %r16,%r20,L$0533 ;# 5261 bleu+1 + ldo 1(%r20),%r19 ;# 5278 addsi3/2 + stw %r19,-296(0,%r30) ;# 5280 reload_outsi+2/6 + comib,= 0,%r14,L$0535 ;# 5287 bleu+1 + ldb 0(0,%r20),%r7 ;# 5283 zero_extendqisi2/2 + addl %r14,%r7,%r19 ;# 5288 addsi3/1 + ldb 0(0,%r19),%r7 ;# 5291 zero_extendqisi2/2 +L$0535 + addil LR'__ctype-$global$,%r27 ;# 8269 pic2_lo_sum+1 + ldw RR'__ctype-$global$(%r1),%r21 ;# 8271 reload_outsi+2/5 + addl %r21,%r7,%r19 ;# 8272 addsi3/1 + ldb 0(0,%r19),%r19 ;# 8273 movqi+1/5 + bb,>= %r19,29,L$0533 ;# 8277 movsi-4 + ldi 4,%r20 ;# 8275 reload_outsi+2/2 + copy %r20,%r22 ;# 8578 reload_outsi+2/1 +L$0542 + comiclr,< -1,%r4,0 ;# 8132 movsicc+1/1 + ldi 0,%r4 + sh2addl %r4,%r4,%r19 ;# 5332 ashlsi3-2 + sh1addl %r19,%r7,%r19 ;# 5335 ashlsi3-2 + ldw -296(0,%r30),%r20 ;# 5338 reload_outsi+2/5 + comb,= %r16,%r20,L$0533 ;# 5340 bleu+1 + ldo -48(%r19),%r4 ;# 5336 addsi3/2 + ldo 1(%r20),%r19 ;# 5359 addsi3/2 + stw %r19,-296(0,%r30) ;# 5361 reload_outsi+2/6 + comib,= 0,%r14,L$0540 ;# 5368 bleu+1 + ldb 0(0,%r20),%r7 ;# 5364 zero_extendqisi2/2 + addl %r14,%r7,%r19 ;# 5369 addsi3/1 + ldb 0(0,%r19),%r7 ;# 5372 zero_extendqisi2/2 +L$0540 + addl %r21,%r7,%r19 ;# 5310 addsi3/1 + ldb 0(0,%r19),%r19 ;# 5312 movqi+1/5 + and %r19,%r22,%r19 ;# 5316 andsi3/1 + comib,<> 0,%r19,L$0542 + nop ;# 5318 bleu+1 +L$0533 + comiclr,< -1,%r4,0 ;# 8136 beq-1/4 + zdepi -1,31,15,%r4 + bl,n L$0553,0 ;# 5401 jump +L$0532 + copy %r11,%r4 ;# 5406 reload_outsi+2/1 +L$0553 + comib,> 0,%r11,L$0951 ;# 5410 bleu+1 + zdepi -1,31,15,%r19 ;# 5412 reload_outsi+2/4 + comb,<,n %r19,%r4,L$0951 ;# 5414 bleu+1 + comb,<,n %r4,%r11,L$0951 ;# 5416 bleu+1 + bb,< %r15,19,L$1176 ;# 5451 bleu+3 + ldi 125,%r19 ;# 5514 reload_outsi+2/2 + ldi 92,%r19 ;# 5455 reload_outsi+2/2 + comb,<> %r19,%r7,L$0915 ;# 5457 bleu+1 + ldw -296(0,%r30),%r20 ;# 5473 reload_outsi+2/5 + comb,= %r16,%r20,L$0922 ;# 5475 bleu+1 + ldo 1(%r20),%r19 ;# 5484 addsi3/2 + stw %r19,-296(0,%r30) ;# 5486 reload_outsi+2/6 + comib,= 0,%r14,L$0558 ;# 5493 bleu+1 + ldb 0(0,%r20),%r7 ;# 5489 zero_extendqisi2/2 + addl %r14,%r7,%r19 ;# 5494 addsi3/1 + ldb 0(0,%r19),%r7 ;# 5497 zero_extendqisi2/2 +L$0558 + ldi 125,%r19 ;# 5514 reload_outsi+2/2 +L$1176 + comb,=,n %r19,%r7,L$0566 ;# 5516 bleu+1 +L$0951 + bb,<,n %r15,19,L$0511 ;# 5523 bleu+3 + .CALL ARGW0=GR + bl free,%r2 ;# 5534 call_internal_symref + ldw -312(0,%r30),%r26 ;# 5532 reload_outsi+2/5 + bl L$0867,0 ;# 5538 jump + ldi 10,%r28 ;# 5536 reload_outsi+2/2 +L$0566 + comib,<>,n 0,%r8,L$0569 ;# 5545 bleu+1 + bb,<,n %r15,26,L$0917 ;# 5552 bleu+3 + bb,>=,n %r15,27,L$0511 ;# 5571 movsi-4 + copy %r6,%r8 ;# 5574 reload_outsi+2/1 +L$0569 + comib,<> 0,%r4,L$0574 ;# 5587 bleu+1 + ldi 10,%r13 ;# 8980 reload_outsi+2/2 + ldw 0(0,%r5),%r3 ;# 8139 reload_outsi+2/5 + ldw 4(0,%r5),%r20 ;# 8142 reload_outsi+2/5 + sub %r6,%r3,%r19 ;# 8140 subsi3/1 + ldo 3(%r19),%r19 ;# 8141 addsi3/2 + comb,>>=,n %r20,%r19,L$0576 ;# 8143 bleu+1 + ldil L'65536,%r4 ;# 8573 reload_outsi+2/3 +L$0577 + comb,= %r4,%r20,L$0944 ;# 5613 bleu+1 + zdep %r20,30,31,%r19 ;# 5623 ashlsi3+1 + comb,>>= %r4,%r19,L$0582 ;# 5631 bleu+1 + stw %r19,4(0,%r5) ;# 5625 reload_outsi+2/6 + stw %r4,4(0,%r5) ;# 5634 reload_outsi+2/6 +L$0582 + ldw 0(0,%r5),%r26 ;# 5641 reload_outsi+2/5 + .CALL ARGW0=GR,ARGW1=GR + bl realloc,%r2 ;# 5645 call_value_internal_symref + ldw 4(0,%r5),%r25 ;# 5643 reload_outsi+2/5 + comib,= 0,%r28,L$0953 ;# 5653 bleu+1 + stw %r28,0(0,%r5) ;# 5649 reload_outsi+2/6 + comb,= %r28,%r3,L$0575 ;# 5663 bleu+1 + sub %r6,%r3,%r19 ;# 5665 subsi3/1 + addl %r28,%r19,%r6 ;# 5668 addsi3/1 + sub %r12,%r3,%r19 ;# 5669 subsi3/1 + comib,= 0,%r10,L$0585 ;# 5674 bleu+1 + addl %r28,%r19,%r12 ;# 5672 addsi3/1 + sub %r10,%r3,%r19 ;# 5675 subsi3/1 + addl %r28,%r19,%r10 ;# 5678 addsi3/1 +L$0585 + comib,= 0,%r8,L$0586 ;# 5681 bleu+1 + sub %r8,%r3,%r19 ;# 5682 subsi3/1 + addl %r28,%r19,%r8 ;# 5685 addsi3/1 +L$0586 + comib,= 0,%r9,L$0575 ;# 5688 bleu+1 + sub %r9,%r3,%r19 ;# 5689 subsi3/1 + addl %r28,%r19,%r9 ;# 5692 addsi3/1 +L$0575 + ldw 0(0,%r5),%r3 ;# 5593 reload_outsi+2/5 + ldw 4(0,%r5),%r20 ;# 5597 reload_outsi+2/5 + sub %r6,%r3,%r19 ;# 5594 subsi3/1 + ldo 3(%r19),%r19 ;# 5595 addsi3/2 + comb,<< %r20,%r19,L$0577 + nop ;# 5599 bleu+1 +L$0576 + ldi 12,%r26 ;# 5718 reload_outsi+2/2 + copy %r8,%r25 ;# 5720 reload_outsi+2/1 + sub %r6,%r8,%r24 ;# 5722 subsi3/1 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl insert_op1,%r2 ;# 5726 call_internal_symref + copy %r6,%r23 ;# 5724 reload_outsi+2/1 + bl L$0590,0 ;# 5730 jump + ldo 3(%r6),%r6 ;# 5728 addsi3/2 +L$0574 + comiclr,> 2,%r4,0 ;# 8282 beq-1/2 + ldi 20,%r13 + ldw 0(0,%r5),%r3 ;# 8285 reload_outsi+2/5 + ldw 4(0,%r5),%r20 ;# 8288 reload_outsi+2/5 + sub %r6,%r3,%r19 ;# 8286 subsi3/1 + addl %r19,%r13,%r19 ;# 8287 addsi3/1 + comb,>>=,n %r20,%r19,L$0868 ;# 8289 bleu+1 + ldil L'65536,%r7 ;# 8571 reload_outsi+2/3 +L$0595 + comb,= %r7,%r20,L$0944 ;# 5769 bleu+1 + zdep %r20,30,31,%r19 ;# 5779 ashlsi3+1 + comb,>>= %r7,%r19,L$0600 ;# 5787 bleu+1 + stw %r19,4(0,%r5) ;# 5781 reload_outsi+2/6 + stw %r7,4(0,%r5) ;# 5790 reload_outsi+2/6 +L$0600 + ldw 0(0,%r5),%r26 ;# 5797 reload_outsi+2/5 + .CALL ARGW0=GR,ARGW1=GR + bl realloc,%r2 ;# 5801 call_value_internal_symref + ldw 4(0,%r5),%r25 ;# 5799 reload_outsi+2/5 + comib,= 0,%r28,L$0953 ;# 5809 bleu+1 + stw %r28,0(0,%r5) ;# 5805 reload_outsi+2/6 + comb,= %r28,%r3,L$0593 ;# 5819 bleu+1 + sub %r6,%r3,%r19 ;# 5821 subsi3/1 + addl %r28,%r19,%r6 ;# 5824 addsi3/1 + sub %r12,%r3,%r19 ;# 5825 subsi3/1 + comib,= 0,%r10,L$0603 ;# 5830 bleu+1 + addl %r28,%r19,%r12 ;# 5828 addsi3/1 + sub %r10,%r3,%r19 ;# 5831 subsi3/1 + addl %r28,%r19,%r10 ;# 5834 addsi3/1 +L$0603 + comib,= 0,%r8,L$0604 ;# 5837 bleu+1 + sub %r8,%r3,%r19 ;# 5838 subsi3/1 + addl %r28,%r19,%r8 ;# 5841 addsi3/1 +L$0604 + comib,= 0,%r9,L$0593 ;# 5844 bleu+1 + sub %r9,%r3,%r19 ;# 5845 subsi3/1 + addl %r28,%r19,%r9 ;# 5848 addsi3/1 +L$0593 + ldw 0(0,%r5),%r3 ;# 5749 reload_outsi+2/5 + ldw 4(0,%r5),%r20 ;# 5753 reload_outsi+2/5 + sub %r6,%r3,%r19 ;# 5750 subsi3/1 + addl %r19,%r13,%r19 ;# 5751 addsi3/1 + comb,<< %r20,%r19,L$0595 + nop ;# 5755 bleu+1 +L$0868 + comib,>= 1,%r4,L$0608 ;# 5872 bleu+1 + ldo 5(%r6),%r19 ;# 5870 addsi3/2 + sub %r19,%r8,%r19 ;# 5874 subsi3/1 + bl L$0609,0 ;# 5876 jump + ldo 2(%r19),%r24 ;# 5875 addsi3/2 +L$0608 + sub %r19,%r8,%r19 ;# 5879 subsi3/1 + ldo -3(%r19),%r24 ;# 5880 addsi3/2 +L$0609 + ldi 20,%r26 ;# 5885 reload_outsi+2/2 + copy %r8,%r25 ;# 5887 reload_outsi+2/1 + copy %r11,%r23 ;# 5891 reload_outsi+2/1 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl insert_op2,%r2 ;# 5893 call_internal_symref + stw %r6,-52(0,%r30) ;# 5883 reload_outsi+2/6 + ldo 5(%r6),%r6 ;# 5895 addsi3/2 + ldi 22,%r26 ;# 5900 reload_outsi+2/2 + copy %r8,%r25 ;# 5902 reload_outsi+2/1 + ldi 5,%r24 ;# 5904 reload_outsi+2/2 + copy %r11,%r23 ;# 5906 reload_outsi+2/1 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl insert_op2,%r2 ;# 5908 call_internal_symref + stw %r6,-52(0,%r30) ;# 5898 reload_outsi+2/6 + comib,>= 1,%r4,L$0590 ;# 5913 bleu+1 + ldo 5(%r6),%r6 ;# 5910 addsi3/2 + ldi 21,%r26 ;# 5921 reload_outsi+2/2 + copy %r6,%r25 ;# 5923 reload_outsi+2/1 + sub %r8,%r6,%r24 ;# 5917 subsi3/1 + ldo 2(%r24),%r24 ;# 5925 addsi3/2 + ldo -1(%r4),%r4 ;# 5919 addsi3/2 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl store_op2,%r2 ;# 5929 call_internal_symref + copy %r4,%r23 ;# 5927 reload_outsi+2/1 + ldo 5(%r6),%r6 ;# 5931 addsi3/2 + stw %r6,-52(0,%r30) ;# 5936 reload_outsi+2/6 + ldi 22,%r26 ;# 5938 reload_outsi+2/2 + copy %r8,%r25 ;# 5940 reload_outsi+2/1 + sub %r6,%r8,%r24 ;# 5942 subsi3/1 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR + bl insert_op2,%r2 ;# 5946 call_internal_symref + copy %r4,%r23 ;# 5944 reload_outsi+2/1 + ldo 5(%r6),%r6 ;# 5948 addsi3/2 +L$0590 + bl L$0043,0 ;# 5963 jump + ldi 0,%r9 ;# 5956 reload_outsi+2/2 +L$0511 + stw %r23,-296(0,%r30) ;# 5968 reload_outsi+2/6 +L$1182 + ldw -296(0,%r30),%r20 ;# 5977 reload_outsi+2/5 + comb,= %r16,%r20,L$0922 ;# 5979 bleu+1 + ldo 1(%r20),%r21 ;# 5988 addsi3/2 + ldb 0(0,%r20),%r20 ;# 5992 movqi+1/5 + stw %r21,-296(0,%r30) ;# 5990 reload_outsi+2/6 + comib,= 0,%r14,L$0612 ;# 5997 bleu+1 + extru %r20,31,8,%r7 ;# 5993 zero_extendqisi2/1 + addl %r14,%r7,%r19 ;# 5998 addsi3/1 + ldb 0(0,%r19),%r7 ;# 6001 zero_extendqisi2/2 +L$0612 + bb,< %r15,19,L$0076 ;# 6019 bleu+3 + ldw -276(0,%r30),%r1 ;# 8983 reload_outsi+2/5 + comb,>>= %r1,%r21,L$0076 ;# 6025 bleu+1 + extrs %r20,31,8,%r20 ;# 6030 extendqisi2 + ldi 92,%r19 ;# 6032 reload_outsi+2/2 + comb,=,n %r19,%r20,L$0397 ;# 6034 bleu+1 + bl,n L$0076,0 ;# 6042 jump +L$0619 + ldw 4(0,%r5),%r20 ;# 8151 reload_outsi+2/5 + sub %r6,%r4,%r19 ;# 8149 subsi3/1 + ldo 1(%r19),%r19 ;# 8150 addsi3/2 + comb,>>= %r20,%r19,L$0624 ;# 8152 bleu+1 + copy %r6,%r8 ;# 6047 reload_outsi+2/1 + ldil L'65536,%r3 ;# 8569 reload_outsi+2/3 +L$0625 + comb,= %r3,%r20,L$0944 ;# 6075 bleu+1 + zdep %r20,30,31,%r19 ;# 6085 ashlsi3+1 + comb,>>= %r3,%r19,L$0630 ;# 6093 bleu+1 + stw %r19,4(0,%r5) ;# 6087 reload_outsi+2/6 + stw %r3,4(0,%r5) ;# 6096 reload_outsi+2/6 +L$0630 + ldw 0(0,%r5),%r26 ;# 6103 reload_outsi+2/5 + .CALL ARGW0=GR,ARGW1=GR + bl realloc,%r2 ;# 6107 call_value_internal_symref + ldw 4(0,%r5),%r25 ;# 6105 reload_outsi+2/5 + comiclr,<> 0,%r28,0 ;# 6115 bleu+1 + bl L$0953,0 + stw %r28,0(0,%r5) ;# 6111 reload_outsi+2/6 + comb,= %r28,%r4,L$0623 ;# 6125 bleu+1 + sub %r6,%r4,%r19 ;# 6127 subsi3/1 + addl %r28,%r19,%r6 ;# 6130 addsi3/1 + sub %r12,%r4,%r19 ;# 6131 subsi3/1 + comib,= 0,%r10,L$0633 ;# 6136 bleu+1 + addl %r28,%r19,%r12 ;# 6134 addsi3/1 + sub %r10,%r4,%r19 ;# 6137 subsi3/1 + addl %r28,%r19,%r10 ;# 6140 addsi3/1 +L$0633 + comib,= 0,%r8,L$0634 ;# 6143 bleu+1 + sub %r8,%r4,%r19 ;# 6144 subsi3/1 + addl %r28,%r19,%r8 ;# 6147 addsi3/1 +L$0634 + comib,= 0,%r9,L$0623 ;# 6150 bleu+1 + sub %r9,%r4,%r19 ;# 6151 subsi3/1 + addl %r28,%r19,%r9 ;# 6154 addsi3/1 +L$0623 + ldw 0(0,%r5),%r4 ;# 6055 reload_outsi+2/5 + ldw 4(0,%r5),%r20 ;# 6059 reload_outsi+2/5 + sub %r6,%r4,%r19 ;# 6056 subsi3/1 + ldo 1(%r19),%r19 ;# 6057 addsi3/2 + comb,<< %r20,%r19,L$0625 + nop ;# 6061 bleu+1 +L$0624 + ldi 23,%r19 ;# 6176 movqi+1/2 + bl L$0043,0 ;# 6189 jump + stbs,ma %r19,1(0,%r6) ;# 6177 movqi+1/6 +L$0639 + ldw 4(0,%r5),%r20 ;# 8159 reload_outsi+2/5 + sub %r6,%r4,%r19 ;# 8157 subsi3/1 + ldo 1(%r19),%r19 ;# 8158 addsi3/2 + comb,>>= %r20,%r19,L$0644 ;# 8160 bleu+1 + copy %r6,%r8 ;# 6194 reload_outsi+2/1 + ldil L'65536,%r3 ;# 8567 reload_outsi+2/3 +L$0645 + comb,= %r3,%r20,L$0944 ;# 6222 bleu+1 + zdep %r20,30,31,%r19 ;# 6232 ashlsi3+1 + comb,>>= %r3,%r19,L$0650 ;# 6240 bleu+1 + stw %r19,4(0,%r5) ;# 6234 reload_outsi+2/6 + stw %r3,4(0,%r5) ;# 6243 reload_outsi+2/6 +L$0650 + ldw 0(0,%r5),%r26 ;# 6250 reload_outsi+2/5 + .CALL ARGW0=GR,ARGW1=GR + bl realloc,%r2 ;# 6254 call_value_internal_symref + ldw 4(0,%r5),%r25 ;# 6252 reload_outsi+2/5 + comiclr,<> 0,%r28,0 ;# 6262 bleu+1 + bl L$0953,0 + stw %r28,0(0,%r5) ;# 6258 reload_outsi+2/6 + comb,= %r28,%r4,L$0643 ;# 6272 bleu+1 + sub %r6,%r4,%r19 ;# 6274 subsi3/1 + addl %r28,%r19,%r6 ;# 6277 addsi3/1 + sub %r12,%r4,%r19 ;# 6278 subsi3/1 + comib,= 0,%r10,L$0653 ;# 6283 bleu+1 + addl %r28,%r19,%r12 ;# 6281 addsi3/1 + sub %r10,%r4,%r19 ;# 6284 subsi3/1 + addl %r28,%r19,%r10 ;# 6287 addsi3/1 +L$0653 + comib,= 0,%r8,L$0654 ;# 6290 bleu+1 + sub %r8,%r4,%r19 ;# 6291 subsi3/1 + addl %r28,%r19,%r8 ;# 6294 addsi3/1 +L$0654 + comib,= 0,%r9,L$0643 ;# 6297 bleu+1 + sub %r9,%r4,%r19 ;# 6298 subsi3/1 + addl %r28,%r19,%r9 ;# 6301 addsi3/1 +L$0643 + ldw 0(0,%r5),%r4 ;# 6202 reload_outsi+2/5 + ldw 4(0,%r5),%r20 ;# 6206 reload_outsi+2/5 + sub %r6,%r4,%r19 ;# 6203 subsi3/1 + ldo 1(%r19),%r19 ;# 6204 addsi3/2 + comb,<< %r20,%r19,L$0645 + nop ;# 6208 bleu+1 +L$0644 + ldi 24,%r19 ;# 6323 movqi+1/2 + bl L$0043,0 ;# 6336 jump + stbs,ma %r19,1(0,%r6) ;# 6324 movqi+1/6 +L$0659 + ldw 4(0,%r5),%r20 ;# 8167 reload_outsi+2/5 + sub %r6,%r4,%r19 ;# 8165 subsi3/1 + ldo 1(%r19),%r19 ;# 8166 addsi3/2 + comb,>>=,n %r20,%r19,L$0664 ;# 8168 bleu+1 + ldil L'65536,%r3 ;# 8565 reload_outsi+2/3 +L$0665 + comb,= %r3,%r20,L$0944 ;# 6366 bleu+1 + zdep %r20,30,31,%r19 ;# 6376 ashlsi3+1 + comb,>>= %r3,%r19,L$0670 ;# 6384 bleu+1 + stw %r19,4(0,%r5) ;# 6378 reload_outsi+2/6 + stw %r3,4(0,%r5) ;# 6387 reload_outsi+2/6 +L$0670 + ldw 0(0,%r5),%r26 ;# 6394 reload_outsi+2/5 + .CALL ARGW0=GR,ARGW1=GR + bl realloc,%r2 ;# 6398 call_value_internal_symref + ldw 4(0,%r5),%r25 ;# 6396 reload_outsi+2/5 + comiclr,<> 0,%r28,0 ;# 6406 bleu+1 + bl L$0953,0 + stw %r28,0(0,%r5) ;# 6402 reload_outsi+2/6 + comb,= %r28,%r4,L$0663 ;# 6416 bleu+1 + sub %r6,%r4,%r19 ;# 6418 subsi3/1 + addl %r28,%r19,%r6 ;# 6421 addsi3/1 + sub %r12,%r4,%r19 ;# 6422 subsi3/1 + comib,= 0,%r10,L$0673 ;# 6427 bleu+1 + addl %r28,%r19,%r12 ;# 6425 addsi3/1 + sub %r10,%r4,%r19 ;# 6428 subsi3/1 + addl %r28,%r19,%r10 ;# 6431 addsi3/1 +L$0673 + comib,= 0,%r8,L$0674 ;# 6434 bleu+1 + sub %r8,%r4,%r19 ;# 6435 subsi3/1 + addl %r28,%r19,%r8 ;# 6438 addsi3/1 +L$0674 + comib,= 0,%r9,L$0663 ;# 6441 bleu+1 + sub %r9,%r4,%r19 ;# 6442 subsi3/1 + addl %r28,%r19,%r9 ;# 6445 addsi3/1 +L$0663 + ldw 0(0,%r5),%r4 ;# 6346 reload_outsi+2/5 + ldw 4(0,%r5),%r20 ;# 6350 reload_outsi+2/5 + sub %r6,%r4,%r19 ;# 6347 subsi3/1 + ldo 1(%r19),%r19 ;# 6348 addsi3/2 + comb,<< %r20,%r19,L$0665 + nop ;# 6352 bleu+1 +L$0664 + ldi 25,%r19 ;# 6467 movqi+1/2 + bl L$0043,0 ;# 6480 jump + stbs,ma %r19,1(0,%r6) ;# 6468 movqi+1/6 +L$0679 + ldw 4(0,%r5),%r20 ;# 8175 reload_outsi+2/5 + sub %r6,%r4,%r19 ;# 8173 subsi3/1 + ldo 1(%r19),%r19 ;# 8174 addsi3/2 + comb,>>=,n %r20,%r19,L$0684 ;# 8176 bleu+1 + ldil L'65536,%r3 ;# 8563 reload_outsi+2/3 +L$0685 + comb,= %r3,%r20,L$0944 ;# 6510 bleu+1 + zdep %r20,30,31,%r19 ;# 6520 ashlsi3+1 + comb,>>= %r3,%r19,L$0690 ;# 6528 bleu+1 + stw %r19,4(0,%r5) ;# 6522 reload_outsi+2/6 + stw %r3,4(0,%r5) ;# 6531 reload_outsi+2/6 +L$0690 + ldw 0(0,%r5),%r26 ;# 6538 reload_outsi+2/5 + .CALL ARGW0=GR,ARGW1=GR + bl realloc,%r2 ;# 6542 call_value_internal_symref + ldw 4(0,%r5),%r25 ;# 6540 reload_outsi+2/5 + comiclr,<> 0,%r28,0 ;# 6550 bleu+1 + bl L$0953,0 + stw %r28,0(0,%r5) ;# 6546 reload_outsi+2/6 + comb,= %r28,%r4,L$0683 ;# 6560 bleu+1 + sub %r6,%r4,%r19 ;# 6562 subsi3/1 + addl %r28,%r19,%r6 ;# 6565 addsi3/1 + sub %r12,%r4,%r19 ;# 6566 subsi3/1 + comib,= 0,%r10,L$0693 ;# 6571 bleu+1 + addl %r28,%r19,%r12 ;# 6569 addsi3/1 + sub %r10,%r4,%r19 ;# 6572 subsi3/1 + addl %r28,%r19,%r10 ;# 6575 addsi3/1 +L$0693 + comib,= 0,%r8,L$0694 ;# 6578 bleu+1 + sub %r8,%r4,%r19 ;# 6579 subsi3/1 + addl %r28,%r19,%r8 ;# 6582 addsi3/1 +L$0694 + comib,= 0,%r9,L$0683 ;# 6585 bleu+1 + sub %r9,%r4,%r19 ;# 6586 subsi3/1 + addl %r28,%r19,%r9 ;# 6589 addsi3/1 +L$0683 + ldw 0(0,%r5),%r4 ;# 6490 reload_outsi+2/5 + ldw 4(0,%r5),%r20 ;# 6494 reload_outsi+2/5 + sub %r6,%r4,%r19 ;# 6491 subsi3/1 + ldo 1(%r19),%r19 ;# 6492 addsi3/2 + comb,<< %r20,%r19,L$0685 + nop ;# 6496 bleu+1 +L$0684 + ldi 26,%r19 ;# 6611 movqi+1/2 + bl L$0043,0 ;# 6624 jump + stbs,ma %r19,1(0,%r6) ;# 6612 movqi+1/6 +L$0699 + ldw 4(0,%r5),%r20 ;# 8183 reload_outsi+2/5 + sub %r6,%r4,%r19 ;# 8181 subsi3/1 + ldo 1(%r19),%r19 ;# 8182 addsi3/2 + comb,>>=,n %r20,%r19,L$0704 ;# 8184 bleu+1 + ldil L'65536,%r3 ;# 8561 reload_outsi+2/3 +L$0705 + comb,= %r3,%r20,L$0944 ;# 6654 bleu+1 + zdep %r20,30,31,%r19 ;# 6664 ashlsi3+1 + comb,>>= %r3,%r19,L$0710 ;# 6672 bleu+1 + stw %r19,4(0,%r5) ;# 6666 reload_outsi+2/6 + stw %r3,4(0,%r5) ;# 6675 reload_outsi+2/6 +L$0710 + ldw 0(0,%r5),%r26 ;# 6682 reload_outsi+2/5 + .CALL ARGW0=GR,ARGW1=GR + bl realloc,%r2 ;# 6686 call_value_internal_symref + ldw 4(0,%r5),%r25 ;# 6684 reload_outsi+2/5 + comiclr,<> 0,%r28,0 ;# 6694 bleu+1 + bl L$0953,0 + stw %r28,0(0,%r5) ;# 6690 reload_outsi+2/6 + comb,= %r28,%r4,L$0703 ;# 6704 bleu+1 + sub %r6,%r4,%r19 ;# 6706 subsi3/1 + addl %r28,%r19,%r6 ;# 6709 addsi3/1 + sub %r12,%r4,%r19 ;# 6710 subsi3/1 + comib,= 0,%r10,L$0713 ;# 6715 bleu+1 + addl %r28,%r19,%r12 ;# 6713 addsi3/1 + sub %r10,%r4,%r19 ;# 6716 subsi3/1 + addl %r28,%r19,%r10 ;# 6719 addsi3/1 +L$0713 + comib,= 0,%r8,L$0714 ;# 6722 bleu+1 + sub %r8,%r4,%r19 ;# 6723 subsi3/1 + addl %r28,%r19,%r8 ;# 6726 addsi3/1 +L$0714 + comib,= 0,%r9,L$0703 ;# 6729 bleu+1 + sub %r9,%r4,%r19 ;# 6730 subsi3/1 + addl %r28,%r19,%r9 ;# 6733 addsi3/1 +L$0703 + ldw 0(0,%r5),%r4 ;# 6634 reload_outsi+2/5 + ldw 4(0,%r5),%r20 ;# 6638 reload_outsi+2/5 + sub %r6,%r4,%r19 ;# 6635 subsi3/1 + ldo 1(%r19),%r19 ;# 6636 addsi3/2 + comb,<< %r20,%r19,L$0705 + nop ;# 6640 bleu+1 +L$0704 + ldi 27,%r19 ;# 6755 movqi+1/2 + bl L$0043,0 ;# 6768 jump + stbs,ma %r19,1(0,%r6) ;# 6756 movqi+1/6 +L$0719 + ldw 4(0,%r5),%r20 ;# 8191 reload_outsi+2/5 + sub %r6,%r4,%r19 ;# 8189 subsi3/1 + ldo 1(%r19),%r19 ;# 8190 addsi3/2 + comb,>>=,n %r20,%r19,L$0724 ;# 8192 bleu+1 + ldil L'65536,%r3 ;# 8559 reload_outsi+2/3 +L$0725 + comb,= %r3,%r20,L$0944 ;# 6798 bleu+1 + zdep %r20,30,31,%r19 ;# 6808 ashlsi3+1 + comb,>>= %r3,%r19,L$0730 ;# 6816 bleu+1 + stw %r19,4(0,%r5) ;# 6810 reload_outsi+2/6 + stw %r3,4(0,%r5) ;# 6819 reload_outsi+2/6 +L$0730 + ldw 0(0,%r5),%r26 ;# 6826 reload_outsi+2/5 + .CALL ARGW0=GR,ARGW1=GR + bl realloc,%r2 ;# 6830 call_value_internal_symref + ldw 4(0,%r5),%r25 ;# 6828 reload_outsi+2/5 + comiclr,<> 0,%r28,0 ;# 6838 bleu+1 + bl L$0953,0 + stw %r28,0(0,%r5) ;# 6834 reload_outsi+2/6 + comb,= %r28,%r4,L$0723 ;# 6848 bleu+1 + sub %r6,%r4,%r19 ;# 6850 subsi3/1 + addl %r28,%r19,%r6 ;# 6853 addsi3/1 + sub %r12,%r4,%r19 ;# 6854 subsi3/1 + comib,= 0,%r10,L$0733 ;# 6859 bleu+1 + addl %r28,%r19,%r12 ;# 6857 addsi3/1 + sub %r10,%r4,%r19 ;# 6860 subsi3/1 + addl %r28,%r19,%r10 ;# 6863 addsi3/1 +L$0733 + comib,= 0,%r8,L$0734 ;# 6866 bleu+1 + sub %r8,%r4,%r19 ;# 6867 subsi3/1 + addl %r28,%r19,%r8 ;# 6870 addsi3/1 +L$0734 + comib,= 0,%r9,L$0723 ;# 6873 bleu+1 + sub %r9,%r4,%r19 ;# 6874 subsi3/1 + addl %r28,%r19,%r9 ;# 6877 addsi3/1 +L$0723 + ldw 0(0,%r5),%r4 ;# 6778 reload_outsi+2/5 + ldw 4(0,%r5),%r20 ;# 6782 reload_outsi+2/5 + sub %r6,%r4,%r19 ;# 6779 subsi3/1 + ldo 1(%r19),%r19 ;# 6780 addsi3/2 + comb,<< %r20,%r19,L$0725 + nop ;# 6784 bleu+1 +L$0724 + ldi 28,%r19 ;# 6899 movqi+1/2 + bl L$0043,0 ;# 6912 jump + stbs,ma %r19,1(0,%r6) ;# 6900 movqi+1/6 +L$0739 + ldw 4(0,%r5),%r20 ;# 8199 reload_outsi+2/5 + sub %r6,%r4,%r19 ;# 8197 subsi3/1 + ldo 1(%r19),%r19 ;# 8198 addsi3/2 + comb,>>=,n %r20,%r19,L$0744 ;# 8200 bleu+1 + ldil L'65536,%r3 ;# 8557 reload_outsi+2/3 +L$0745 + comb,= %r3,%r20,L$0944 ;# 6942 bleu+1 + zdep %r20,30,31,%r19 ;# 6952 ashlsi3+1 + comb,>>= %r3,%r19,L$0750 ;# 6960 bleu+1 + stw %r19,4(0,%r5) ;# 6954 reload_outsi+2/6 + stw %r3,4(0,%r5) ;# 6963 reload_outsi+2/6 +L$0750 + ldw 0(0,%r5),%r26 ;# 6970 reload_outsi+2/5 + .CALL ARGW0=GR,ARGW1=GR + bl realloc,%r2 ;# 6974 call_value_internal_symref + ldw 4(0,%r5),%r25 ;# 6972 reload_outsi+2/5 + comiclr,<> 0,%r28,0 ;# 6982 bleu+1 + bl L$0953,0 + stw %r28,0(0,%r5) ;# 6978 reload_outsi+2/6 + comb,= %r28,%r4,L$0743 ;# 6992 bleu+1 + sub %r6,%r4,%r19 ;# 6994 subsi3/1 + addl %r28,%r19,%r6 ;# 6997 addsi3/1 + sub %r12,%r4,%r19 ;# 6998 subsi3/1 + comib,= 0,%r10,L$0753 ;# 7003 bleu+1 + addl %r28,%r19,%r12 ;# 7001 addsi3/1 + sub %r10,%r4,%r19 ;# 7004 subsi3/1 + addl %r28,%r19,%r10 ;# 7007 addsi3/1 +L$0753 + comib,= 0,%r8,L$0754 ;# 7010 bleu+1 + sub %r8,%r4,%r19 ;# 7011 subsi3/1 + addl %r28,%r19,%r8 ;# 7014 addsi3/1 +L$0754 + comib,= 0,%r9,L$0743 ;# 7017 bleu+1 + sub %r9,%r4,%r19 ;# 7018 subsi3/1 + addl %r28,%r19,%r9 ;# 7021 addsi3/1 +L$0743 + ldw 0(0,%r5),%r4 ;# 6922 reload_outsi+2/5 + ldw 4(0,%r5),%r20 ;# 6926 reload_outsi+2/5 + sub %r6,%r4,%r19 ;# 6923 subsi3/1 + ldo 1(%r19),%r19 ;# 6924 addsi3/2 + comb,<< %r20,%r19,L$0745 + nop ;# 6928 bleu+1 +L$0744 + ldi 10,%r19 ;# 7043 movqi+1/2 + bl L$0043,0 ;# 7056 jump + stbs,ma %r19,1(0,%r6) ;# 7044 movqi+1/6 +L$0759 + ldw 4(0,%r5),%r20 ;# 8207 reload_outsi+2/5 + sub %r6,%r4,%r19 ;# 8205 subsi3/1 + ldo 1(%r19),%r19 ;# 8206 addsi3/2 + comb,>>=,n %r20,%r19,L$0764 ;# 8208 bleu+1 + ldil L'65536,%r3 ;# 8555 reload_outsi+2/3 +L$0765 + comb,= %r3,%r20,L$0944 ;# 7086 bleu+1 + zdep %r20,30,31,%r19 ;# 7096 ashlsi3+1 + comb,>>= %r3,%r19,L$0770 ;# 7104 bleu+1 + stw %r19,4(0,%r5) ;# 7098 reload_outsi+2/6 + stw %r3,4(0,%r5) ;# 7107 reload_outsi+2/6 +L$0770 + ldw 0(0,%r5),%r26 ;# 7114 reload_outsi+2/5 + .CALL ARGW0=GR,ARGW1=GR + bl realloc,%r2 ;# 7118 call_value_internal_symref + ldw 4(0,%r5),%r25 ;# 7116 reload_outsi+2/5 + comiclr,<> 0,%r28,0 ;# 7126 bleu+1 + bl L$0953,0 + stw %r28,0(0,%r5) ;# 7122 reload_outsi+2/6 + comb,= %r28,%r4,L$0763 ;# 7136 bleu+1 + sub %r6,%r4,%r19 ;# 7138 subsi3/1 + addl %r28,%r19,%r6 ;# 7141 addsi3/1 + sub %r12,%r4,%r19 ;# 7142 subsi3/1 + comib,= 0,%r10,L$0773 ;# 7147 bleu+1 + addl %r28,%r19,%r12 ;# 7145 addsi3/1 + sub %r10,%r4,%r19 ;# 7148 subsi3/1 + addl %r28,%r19,%r10 ;# 7151 addsi3/1 +L$0773 + comib,= 0,%r8,L$0774 ;# 7154 bleu+1 + sub %r8,%r4,%r19 ;# 7155 subsi3/1 + addl %r28,%r19,%r8 ;# 7158 addsi3/1 +L$0774 + comib,= 0,%r9,L$0763 ;# 7161 bleu+1 + sub %r9,%r4,%r19 ;# 7162 subsi3/1 + addl %r28,%r19,%r9 ;# 7165 addsi3/1 +L$0763 + ldw 0(0,%r5),%r4 ;# 7066 reload_outsi+2/5 + ldw 4(0,%r5),%r20 ;# 7070 reload_outsi+2/5 + sub %r6,%r4,%r19 ;# 7067 subsi3/1 + ldo 1(%r19),%r19 ;# 7068 addsi3/2 + comb,<< %r20,%r19,L$0765 + nop ;# 7072 bleu+1 +L$0764 + ldi 11,%r19 ;# 7187 movqi+1/2 + bl L$0043,0 ;# 7200 jump + stbs,ma %r19,1(0,%r6) ;# 7188 movqi+1/6 +L$0787 + bb,< %r15,17,L$0076 ;# 7216 bleu+3 + ldo -48(%r7),%r19 ;# 7224 addsi3/2 + ldw -260(0,%r30),%r1 ;# 8986 reload_outsi+2/5 + extru %r19,31,8,%r3 ;# 7225 zero_extendqisi2/1 + comb,<< %r1,%r3,L$0939 ;# 7230 bleu+1 + ldo -312(%r30),%r26 ;# 7244 addsi3/2 + .CALL ARGW0=GR,ARGW1=GR + bl group_in_compile_stack,%r2 ;# 7248 call_value_internal_symref + copy %r3,%r25 ;# 7246 reload_outsi+2/1 + extrs %r28,31,8,%r28 ;# 7251 extendqisi2 + comib,<>,n 0,%r28,L$0076 ;# 7253 bleu+1 + ldw 0(0,%r5),%r4 ;# 8212 reload_outsi+2/5 + ldw 4(0,%r5),%r20 ;# 8215 reload_outsi+2/5 + sub %r6,%r4,%r19 ;# 8213 subsi3/1 + ldo 2(%r19),%r19 ;# 8214 addsi3/2 + comb,>>= %r20,%r19,L$0795 ;# 8216 bleu+1 + copy %r6,%r8 ;# 7260 reload_outsi+2/1 + ldil L'65536,%r7 ;# 8553 reload_outsi+2/3 +L$0796 + comb,= %r7,%r20,L$0944 ;# 7288 bleu+1 + zdep %r20,30,31,%r19 ;# 7298 ashlsi3+1 + comb,>>= %r7,%r19,L$0801 ;# 7306 bleu+1 + stw %r19,4(0,%r5) ;# 7300 reload_outsi+2/6 + stw %r7,4(0,%r5) ;# 7309 reload_outsi+2/6 +L$0801 + ldw 0(0,%r5),%r26 ;# 7316 reload_outsi+2/5 + .CALL ARGW0=GR,ARGW1=GR + bl realloc,%r2 ;# 7320 call_value_internal_symref + ldw 4(0,%r5),%r25 ;# 7318 reload_outsi+2/5 + comiclr,<> 0,%r28,0 ;# 7328 bleu+1 + bl L$0953,0 + stw %r28,0(0,%r5) ;# 7324 reload_outsi+2/6 + comb,= %r28,%r4,L$0794 ;# 7338 bleu+1 + sub %r6,%r4,%r19 ;# 7340 subsi3/1 + addl %r28,%r19,%r6 ;# 7343 addsi3/1 + sub %r12,%r4,%r19 ;# 7344 subsi3/1 + comib,= 0,%r10,L$0804 ;# 7349 bleu+1 + addl %r28,%r19,%r12 ;# 7347 addsi3/1 + sub %r10,%r4,%r19 ;# 7350 subsi3/1 + addl %r28,%r19,%r10 ;# 7353 addsi3/1 +L$0804 + comib,= 0,%r8,L$0805 ;# 7356 bleu+1 + sub %r8,%r4,%r19 ;# 7357 subsi3/1 + addl %r28,%r19,%r8 ;# 7360 addsi3/1 +L$0805 + comib,= 0,%r9,L$0794 ;# 7363 bleu+1 + sub %r9,%r4,%r19 ;# 7364 subsi3/1 + addl %r28,%r19,%r9 ;# 7367 addsi3/1 +L$0794 + ldw 0(0,%r5),%r4 ;# 7268 reload_outsi+2/5 + ldw 4(0,%r5),%r20 ;# 7272 reload_outsi+2/5 + sub %r6,%r4,%r19 ;# 7269 subsi3/1 + ldo 2(%r19),%r19 ;# 7270 addsi3/2 + comb,<< %r20,%r19,L$0796 + nop ;# 7274 bleu+1 +L$0795 + ldi 7,%r19 ;# 7389 movqi+1/2 + stbs,ma %r19,1(0,%r6) ;# 7390 movqi+1/6 + bl L$0043,0 ;# 7405 jump + stbs,ma %r3,1(0,%r6) ;# 7393 movqi+1/6 +L$0811 + bb,< %r15,30,L$0104 + nop ;# 7414 bleu+3 +L$0397 + comib,= 0,%r14,L$0815 ;# 7429 bleu+1 + addl %r14,%r7,%r19 ;# 7430 addsi3/1 + bl L$0816,0 ;# 7434 jump + ldb 0(0,%r19),%r19 ;# 7433 zero_extendqisi2/2 +L$0815 + copy %r7,%r19 ;# 7438 reload_outsi+2/1 +L$0816 + copy %r19,%r7 ;# 7441 reload_outsi+2/1 +L$0076 + comib,=,n 0,%r9,L$0820 ;# 7460 bleu+1 + ldb 0(0,%r9),%r20 ;# 7463 zero_extendqisi2/2 + addl %r9,%r20,%r19 ;# 7464 addsi3/1 + ldo 1(%r19),%r19 ;# 7465 addsi3/2 + comb,<> %r6,%r19,L$0820 ;# 7467 bleu+1 + ldi 255,%r19 ;# 7472 reload_outsi+2/2 + comb,= %r19,%r20,L$0820 ;# 7474 bleu+1 + ldw -296(0,%r30),%r21 ;# 7476 reload_outsi+2/5 + ldb 0(0,%r21),%r19 ;# 7478 movqi+1/5 + extrs %r19,31,8,%r20 ;# 7479 extendqisi2 + ldi 42,%r19 ;# 7481 reload_outsi+2/2 + comb,= %r19,%r20,L$0820 ;# 7483 bleu+1 + ldi 94,%r19 ;# 7490 reload_outsi+2/2 + comb,=,n %r19,%r20,L$0820 ;# 7492 bleu+1 + bb,>= %r15,30,L$0821 ;# 7497 movsi-4 + ldi 92,%r19 ;# 7504 reload_outsi+2/2 + comb,<>,n %r19,%r20,L$0822 ;# 7506 bleu+1 + ldb 1(0,%r21),%r19 ;# 7510 movqi+1/5 + extrs %r19,31,8,%r20 ;# 7511 extendqisi2 +L$0821 + ldi 43,%r19 ;# 7534 reload_outsi+2/2 + comb,= %r19,%r20,L$0820 ;# 7536 bleu+1 + ldi 63,%r19 ;# 7543 reload_outsi+2/2 + comb,=,n %r19,%r20,L$0820 ;# 7545 bleu+1 +L$0822 + bb,>=,n %r15,22,L$0819 ;# 7553 movsi-4 + bb,>= %r15,19,L$0823 ;# 7558 movsi-4 + ldw -296(0,%r30),%r19 ;# 7560 reload_outsi+2/5 + ldb 0(0,%r19),%r19 ;# 7562 movqi+1/5 + ldi 123,%r20 ;# 7565 reload_outsi+2/2 + extrs %r19,31,8,%r19 ;# 7563 extendqisi2 + comb,=,n %r20,%r19,L$0820 ;# 7567 bleu+1 + ldw 0(0,%r5),%r4 ;# 8228 reload_outsi+2/5 + bl,n L$1177,0 ;# 7568 jump +L$0823 + ldw -296(0,%r30),%r21 ;# 7572 reload_outsi+2/5 + ldb 0(0,%r21),%r19 ;# 7574 movqi+1/5 + ldi 92,%r20 ;# 7577 reload_outsi+2/2 + extrs %r19,31,8,%r19 ;# 7575 extendqisi2 + comb,<>,n %r20,%r19,L$0819 ;# 7579 bleu+1 + ldb 1(0,%r21),%r19 ;# 7583 movqi+1/5 + ldi 123,%r20 ;# 7586 reload_outsi+2/2 + extrs %r19,31,8,%r19 ;# 7584 extendqisi2 + comb,<>,n %r20,%r19,L$0819 ;# 7588 bleu+1 +L$0820 + ldw 0(0,%r5),%r4 ;# 8220 reload_outsi+2/5 + ldw 4(0,%r5),%r20 ;# 8223 reload_outsi+2/5 + sub %r6,%r4,%r19 ;# 8221 subsi3/1 + ldo 2(%r19),%r19 ;# 8222 addsi3/2 + comb,>>= %r20,%r19,L$0829 ;# 8224 bleu+1 + copy %r6,%r8 ;# 7596 reload_outsi+2/1 + ldil L'65536,%r3 ;# 8551 reload_outsi+2/3 +L$0830 + comb,= %r3,%r20,L$0944 ;# 7624 bleu+1 + zdep %r20,30,31,%r19 ;# 7634 ashlsi3+1 + comb,>>= %r3,%r19,L$0835 ;# 7642 bleu+1 + stw %r19,4(0,%r5) ;# 7636 reload_outsi+2/6 + stw %r3,4(0,%r5) ;# 7645 reload_outsi+2/6 +L$0835 + ldw 0(0,%r5),%r26 ;# 7652 reload_outsi+2/5 + .CALL ARGW0=GR,ARGW1=GR + bl realloc,%r2 ;# 7656 call_value_internal_symref + ldw 4(0,%r5),%r25 ;# 7654 reload_outsi+2/5 + comiclr,<> 0,%r28,0 ;# 7664 bleu+1 + bl L$0953,0 + stw %r28,0(0,%r5) ;# 7660 reload_outsi+2/6 + comb,= %r28,%r4,L$0828 ;# 7674 bleu+1 + sub %r6,%r4,%r19 ;# 7676 subsi3/1 + addl %r28,%r19,%r6 ;# 7679 addsi3/1 + sub %r12,%r4,%r19 ;# 7680 subsi3/1 + comib,= 0,%r10,L$0838 ;# 7685 bleu+1 + addl %r28,%r19,%r12 ;# 7683 addsi3/1 + sub %r10,%r4,%r19 ;# 7686 subsi3/1 + addl %r28,%r19,%r10 ;# 7689 addsi3/1 +L$0838 + comib,= 0,%r8,L$0839 ;# 7692 bleu+1 + sub %r8,%r4,%r19 ;# 7693 subsi3/1 + addl %r28,%r19,%r8 ;# 7696 addsi3/1 +L$0839 + comib,= 0,%r9,L$0828 ;# 7699 bleu+1 + sub %r9,%r4,%r19 ;# 7700 subsi3/1 + addl %r28,%r19,%r9 ;# 7703 addsi3/1 +L$0828 + ldw 0(0,%r5),%r4 ;# 7604 reload_outsi+2/5 + ldw 4(0,%r5),%r20 ;# 7608 reload_outsi+2/5 + sub %r6,%r4,%r19 ;# 7605 subsi3/1 + ldo 2(%r19),%r19 ;# 7606 addsi3/2 + comb,<< %r20,%r19,L$0830 + nop ;# 7610 bleu+1 +L$0829 + ldi 1,%r19 ;# 7725 movqi+1/2 + stbs,ma %r19,1(0,%r6) ;# 7726 movqi+1/6 + stbs,ma 0,1(0,%r6) ;# 7729 movqi+1/6 + ldo -1(%r6),%r9 ;# 7741 addsi3/2 +L$0819 + ldw 0(0,%r5),%r4 ;# 8228 reload_outsi+2/5 +L$1177 + ldw 4(0,%r5),%r20 ;# 8231 reload_outsi+2/5 + sub %r6,%r4,%r19 ;# 8229 subsi3/1 + ldo 1(%r19),%r19 ;# 8230 addsi3/2 + comb,>>=,n %r20,%r19,L$0848 ;# 8232 bleu+1 + ldil L'65536,%r3 ;# 8549 reload_outsi+2/3 +L$0849 + comb,= %r3,%r20,L$0944 ;# 7771 bleu+1 + zdep %r20,30,31,%r19 ;# 7781 ashlsi3+1 + comb,>>= %r3,%r19,L$0854 ;# 7789 bleu+1 + stw %r19,4(0,%r5) ;# 7783 reload_outsi+2/6 + stw %r3,4(0,%r5) ;# 7792 reload_outsi+2/6 +L$0854 + ldw 0(0,%r5),%r26 ;# 7799 reload_outsi+2/5 + .CALL ARGW0=GR,ARGW1=GR + bl realloc,%r2 ;# 7803 call_value_internal_symref + ldw 4(0,%r5),%r25 ;# 7801 reload_outsi+2/5 + comiclr,<> 0,%r28,0 ;# 7811 bleu+1 + bl L$0953,0 + stw %r28,0(0,%r5) ;# 7807 reload_outsi+2/6 + comb,= %r28,%r4,L$0847 ;# 7821 bleu+1 + sub %r6,%r4,%r19 ;# 7823 subsi3/1 + addl %r28,%r19,%r6 ;# 7826 addsi3/1 + sub %r12,%r4,%r19 ;# 7827 subsi3/1 + comib,= 0,%r10,L$0857 ;# 7832 bleu+1 + addl %r28,%r19,%r12 ;# 7830 addsi3/1 + sub %r10,%r4,%r19 ;# 7833 subsi3/1 + addl %r28,%r19,%r10 ;# 7836 addsi3/1 +L$0857 + comib,= 0,%r8,L$0858 ;# 7839 bleu+1 + sub %r8,%r4,%r19 ;# 7840 subsi3/1 + addl %r28,%r19,%r8 ;# 7843 addsi3/1 +L$0858 + comib,= 0,%r9,L$0847 ;# 7846 bleu+1 + sub %r9,%r4,%r19 ;# 7847 subsi3/1 + addl %r28,%r19,%r9 ;# 7850 addsi3/1 +L$0847 + ldw 0(0,%r5),%r4 ;# 7751 reload_outsi+2/5 + ldw 4(0,%r5),%r20 ;# 7755 reload_outsi+2/5 + sub %r6,%r4,%r19 ;# 7752 subsi3/1 + ldo 1(%r19),%r19 ;# 7753 addsi3/2 + comb,<< %r20,%r19,L$0849 + nop ;# 7757 bleu+1 +L$0848 + stbs,ma %r7,1(0,%r6) ;# 7872 movqi+1/6 + ldb 0(0,%r9),%r19 ;# 7885 movqi+1/5 + ldo 1(%r19),%r19 ;# 7888 addsi3/2 + stb %r19,0(0,%r9) ;# 7890 movqi+1/6 +L$0043 + ldw -296(0,%r30),%r19 ;# 2328 reload_outsi+2/5 +L$1161 + comclr,= %r16,%r19,0 ;# 258 bleu+1 + bl L$1178,0 + ldw -296(0,%r30),%r19 ;# 2334 reload_outsi+2/5 +L$0044 + comib,= 0,%r10,L$0865 ;# 7913 bleu+1 + ldi 13,%r26 ;# 7918 reload_outsi+2/2 + copy %r10,%r25 ;# 7920 reload_outsi+2/1 + sub %r6,%r25,%r24 ;# 7915 subsi3/1 + .CALL ARGW0=GR,ARGW1=GR,ARGW2=GR + bl store_op1,%r2 ;# 7924 call_internal_symref + ldo -3(%r24),%r24 ;# 7922 addsi3/2 +L$0865 + ldw -304(0,%r30),%r19 ;# 7928 reload_outsi+2/5 + comib,<>,n 0,%r19,L$0866 ;# 7930 bleu+1 + .CALL ARGW0=GR + bl free,%r2 ;# 7946 call_internal_symref + ldw -312(0,%r30),%r26 ;# 7944 reload_outsi+2/5 + ldw 0(0,%r5),%r19 ;# 7949 reload_outsi+2/5 + ldi 0,%r28 ;# 7955 reload_outsi+2/2 + sub %r6,%r19,%r19 ;# 7950 subsi3/1 + bl L$0867,0 ;# 7957 jump + stw %r19,8(0,%r5) ;# 7952 reload_outsi+2/6 +L$0895 + .CALL ARGW0=GR + bl free,%r2 ;# 2269 call_internal_symref + ldw -312(0,%r30),%r26 ;# 2267 reload_outsi+2/5 + bl L$0867,0 ;# 2273 jump + ldi 11,%r28 ;# 2271 reload_outsi+2/2 +L$0900 + .CALL ARGW0=GR + bl free,%r2 ;# 3161 call_internal_symref + ldw -312(0,%r30),%r26 ;# 3159 reload_outsi+2/5 + bl L$0867,0 ;# 3165 jump + ldi 4,%r28 ;# 3163 reload_outsi+2/2 +L$0902 + .CALL ARGW0=GR + bl free,%r2 ;# 3218 call_internal_symref + ldw -312(0,%r30),%r26 ;# 3216 reload_outsi+2/5 + bl L$0867,0 ;# 3222 jump + ldi 7,%r28 ;# 3220 reload_outsi+2/2 +L$0903 + .CALL ARGW0=GR + bl free,%r2 ;# 3803 call_internal_symref + ldw -312(0,%r30),%r26 ;# 3801 reload_outsi+2/5 + bl L$0867,0 ;# 3807 jump + ldi 5,%r28 ;# 3805 reload_outsi+2/2 +L$0915 + .CALL ARGW0=GR + bl free,%r2 ;# 5461 call_internal_symref + ldw -312(0,%r30),%r26 ;# 5459 reload_outsi+2/5 + bl L$0867,0 ;# 5465 jump + ldi 9,%r28 ;# 5463 reload_outsi+2/2 +L$0917 + .CALL ARGW0=GR + bl free,%r2 ;# 5557 call_internal_symref + ldw -312(0,%r30),%r26 ;# 5555 reload_outsi+2/5 + bl L$0867,0 ;# 5561 jump + ldi 13,%r28 ;# 5559 reload_outsi+2/2 +L$0922 + bl L$0867,0 ;# 5983 jump + ldi 14,%r28 ;# 5981 reload_outsi+2/2 +L$0939 + .CALL ARGW0=GR + bl free,%r2 ;# 7235 call_internal_symref + ldw -312(0,%r30),%r26 ;# 7233 reload_outsi+2/5 + bl L$0867,0 ;# 7239 jump + ldi 6,%r28 ;# 7237 reload_outsi+2/2 +L$0944 + bl L$0867,0 ;# 7775 jump + ldi 15,%r28 ;# 7773 reload_outsi+2/2 +L$0866 + .CALL ARGW0=GR + bl free,%r2 ;# 7935 call_internal_symref + ldw -312(0,%r30),%r26 ;# 7933 reload_outsi+2/5 + ldi 8,%r28 ;# 7937 reload_outsi+2/2 +L$0867 + ldw -340(0,%r30),%r2 ;# 9026 reload_outsi+2/5 + ldw -168(0,%r30),%r18 ;# 9028 reload_outsi+2/5 + ldw -164(0,%r30),%r17 ;# 9030 reload_outsi+2/5 + ldw -160(0,%r30),%r16 ;# 9032 reload_outsi+2/5 + ldw -156(0,%r30),%r15 ;# 9034 reload_outsi+2/5 + ldw -152(0,%r30),%r14 ;# 9036 reload_outsi+2/5 + ldw -148(0,%r30),%r13 ;# 9038 reload_outsi+2/5 + ldw -144(0,%r30),%r12 ;# 9040 reload_outsi+2/5 + ldw -140(0,%r30),%r11 ;# 9042 reload_outsi+2/5 + ldw -136(0,%r30),%r10 ;# 9044 reload_outsi+2/5 + ldw -132(0,%r30),%r9 ;# 9046 reload_outsi+2/5 + ldw -128(0,%r30),%r8 ;# 9048 reload_outsi+2/5 + ldw -124(0,%r30),%r7 ;# 9050 reload_outsi+2/5 + ldw -120(0,%r30),%r6 ;# 9052 reload_outsi+2/5 + ldw -116(0,%r30),%r5 ;# 9054 reload_outsi+2/5 + ldw -112(0,%r30),%r4 ;# 9056 reload_outsi+2/5 + ldw -108(0,%r30),%r3 ;# 9058 reload_outsi+2/5 + bv 0(%r2) ;# 9061 return_internal + ldo -320(%r30),%r30 ;# 9060 addsi3/2 + .EXIT + .PROCEND + .SPACE $PRIVATE$ + .SUBSPA $BSS$ + + .align 1 +re_syntax_table + .block 256 diff --git a/gas/testsuite/gas/hppa/unsorted/common.s b/gas/testsuite/gas/hppa/unsorted/common.s new file mode 100644 index 0000000..d92b0cb --- /dev/null +++ b/gas/testsuite/gas/hppa/unsorted/common.s @@ -0,0 +1,8 @@ + .text +text_symbol: + .long 1 + .long external_symbol + .data +data_symbol: + .long 2 +common_symbol .comm 4 diff --git a/gas/testsuite/gas/hppa/unsorted/fragbug.s b/gas/testsuite/gas/hppa/unsorted/fragbug.s new file mode 100644 index 0000000..5734193 --- /dev/null +++ b/gas/testsuite/gas/hppa/unsorted/fragbug.s @@ -0,0 +1,3 @@ + .SPACE $TEXT$ + .SUBSPA $CODE$ + nop diff --git a/gas/testsuite/gas/hppa/unsorted/globalbug.s b/gas/testsuite/gas/hppa/unsorted/globalbug.s new file mode 100644 index 0000000..d0f05f6 --- /dev/null +++ b/gas/testsuite/gas/hppa/unsorted/globalbug.s @@ -0,0 +1,16 @@ + + .space $PRIVATE$ + .subspa $GLOBAL$ + .export $global$ +$global$ + .space $TEXT$ + .subspa $CODE$ + + .proc + .callinfo +ivaaddr + nop + nop + addil L%ivaaddr-$global$,%dp + ldo R%ivaaddr-$global$(%r1),%r19 + .procend diff --git a/gas/testsuite/gas/hppa/unsorted/importbug.s b/gas/testsuite/gas/hppa/unsorted/importbug.s new file mode 100644 index 0000000..05eb6d2 --- /dev/null +++ b/gas/testsuite/gas/hppa/unsorted/importbug.s @@ -0,0 +1,42 @@ + .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 + .IMPORT $global$,DATA + .IMPORT $$dyncall,MILLICODE +; gcc_compiled.: + .EXPORT foo,DATA + .SPACE $PRIVATE$ + .SUBSPA $DATA$ + + .align 4 +foo: + .word 0 + .IMPORT __main,CODE + .SPACE $TEXT$ + .SUBSPA $CODE$ + + .align 4 + .EXPORT main,CODE + .EXPORT main,ENTRY,PRIV_LEV=3,RTNVAL=GR +main: + .PROC + .CALLINFO FRAME=64,CALLS,SAVE_RP,SAVE_SP,ENTRY_GR=3 + .ENTRY + .import foo + stw %r2,-20(0,%r30) + copy %r3,%r1 + copy %r30,%r3 + stwm %r1,64(0,%r30) + .CALL + bl __main,%r2 + nop +L$0001: + ldw -20(0,%r3),%r2 + ldo 64(%r3),%r30 + ldwm -64(0,%r30),%r3 + bv,n 0(%r2) + .EXIT + .PROCEND diff --git a/gas/testsuite/gas/hppa/unsorted/labeldiffs.s b/gas/testsuite/gas/hppa/unsorted/labeldiffs.s new file mode 100755 index 0000000..7c773bd --- /dev/null +++ b/gas/testsuite/gas/hppa/unsorted/labeldiffs.s @@ -0,0 +1,40 @@ +; Should check to make sure something useful gets put on those .word +; statements. + .space $TEXT$ + .subspa $CODE$ + + .align 8 + .export icode,data +icode: + .proc + .callinfo frame=0,no_calls + .entry + bv,n 0(2) + .exit + nop + .procend + + ; + ; FIRST, argv array of pointers to args, 1st is same as path. + ; + .align 8 +ic_argv: + .word ic_argv1-icode ; second, pointer to 1st argument + .word ic_path-icode ; first, pointer to init path + .word 0 ; fourth, NULL argv terminator (pad) + .word 0 ; third, NULL argv terminator + +ic_path: + .blockz 4096 ; must be multiple of 4 bytes + .word 0 ; in case full string is used + .word 0 ; this will be the string terminator + +ic_argv1: + .blockz 4096 ; must be multiple of 4 bytes + .word 0 ; in case full string is used + .word 0 ; this will be the string terminator + + .export szicode,data +szicode: + .word szicode-icode + .word 0 ; must have at least one filler at end diff --git a/gas/testsuite/gas/hppa/unsorted/locallabel.s b/gas/testsuite/gas/hppa/unsorted/locallabel.s new file mode 100755 index 0000000..7d5721e --- /dev/null +++ b/gas/testsuite/gas/hppa/unsorted/locallabel.s @@ -0,0 +1,15 @@ + .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 + +Label: +L$01234: + diff --git a/gas/testsuite/gas/hppa/unsorted/ss_align.s b/gas/testsuite/gas/hppa/unsorted/ss_align.s new file mode 100755 index 0000000..6e98eb2 --- /dev/null +++ b/gas/testsuite/gas/hppa/unsorted/ss_align.s @@ -0,0 +1,12 @@ + .SPACE $PRIVATE$ + .SUBSPA $DATA$,QUAD=1,ALIGN=64,ACCESS=31 + .SPACE $TEXT$ + .SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=44 + .SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY + .IMPORT $global$,DATA + .IMPORT $$dyncall,MILLICODE +; gcc_compiled.: + .SPACE $PRIVATE$ + .SUBSPA $DATA$ +sym1: .WORD 2 + diff --git a/gas/testsuite/gas/hppa/unsorted/unsorted.exp b/gas/testsuite/gas/hppa/unsorted/unsorted.exp old mode 100644 new mode 100755 diff --git a/gas/testsuite/gas/i386/inout.s b/gas/testsuite/gas/i386/inout.s new file mode 100644 index 0000000..36c38de --- /dev/null +++ b/gas/testsuite/gas/i386/inout.s @@ -0,0 +1,11 @@ +# Various syntaxes + inb %dx + outl %eax,%dx +# For these two, fix up the test case to check what modes are used -- they +# should be using outb and inw. Currently the assembler is getting them +# both wrong. + out %al, $42 + in $13, %ax +# These are used in AIX. + inw (%dx) + outw (%dx) diff --git a/gas/testsuite/gas/i386/pushw.s b/gas/testsuite/gas/i386/pushw.s new file mode 100644 index 0000000..b7fdecd --- /dev/null +++ b/gas/testsuite/gas/i386/pushw.s @@ -0,0 +1,2 @@ +2: pushw $200 +1: .long 1b-2b diff --git a/gas/testsuite/gas/ieee-fp/x930509a.s b/gas/testsuite/gas/ieee-fp/x930509a.s new file mode 100644 index 0000000..261b338 --- /dev/null +++ b/gas/testsuite/gas/ieee-fp/x930509a.s @@ -0,0 +1,5 @@ + .global _flt_min + .data + .align 4 +_flt_min: + .single 0r1.17549435e-38 diff --git a/gas/testsuite/gas/m32r/allinsn.s b/gas/testsuite/gas/m32r/allinsn.s new file mode 100644 index 0000000..86b4569 --- /dev/null +++ b/gas/testsuite/gas/m32r/allinsn.s @@ -0,0 +1,501 @@ + .data +foodata: .word 42 + .text +footext: + .text + .global add +add: + add fp,fp + .text + .global add3 +add3: + add3 fp,fp,#0 + .text + .global and +and: + and fp,fp + .text + .global and3 +and3: + and3 fp,fp,#0 + .text + .global or +or: + or fp,fp + .text + .global or3 +or3: + or3 fp,fp,#0 + .text + .global xor +xor: + xor fp,fp + .text + .global xor3 +xor3: + xor3 fp,fp,#0 + .text + .global addi +addi: + addi fp,#0 + .text + .global addv +addv: + addv fp,fp + .text + .global addv3 +addv3: + addv3 fp,fp,#0 + .text + .global addx +addx: + addx fp,fp + .text + .global bc8 +bc8: + bc footext + .text + .global bc8_s +bc8_s: + bc.s footext + .text + .global bc24 +bc24: + bc footext + .text + .global bc24_l +bc24_l: + bc.l footext + .text + .global beq +beq: + beq fp,fp,footext + .text + .global beqz +beqz: + beqz fp,footext + .text + .global bgez +bgez: + bgez fp,footext + .text + .global bgtz +bgtz: + bgtz fp,footext + .text + .global blez +blez: + blez fp,footext + .text + .global bltz +bltz: + bltz fp,footext + .text + .global bnez +bnez: + bnez fp,footext + .text + .global bl8 +bl8: + bl footext + .text + .global bl8_s +bl8_s: + bl.s footext + .text + .global bl24 +bl24: + bl footext + .text + .global bl24_l +bl24_l: + bl.l footext + .text + .global bnc8 +bnc8: + bnc footext + .text + .global bnc8_s +bnc8_s: + bnc.s footext + .text + .global bnc24 +bnc24: + bnc footext + .text + .global bnc24_l +bnc24_l: + bnc.l footext + .text + .global bne +bne: + bne fp,fp,footext + .text + .global bra8 +bra8: + bra footext + .text + .global bra8_s +bra8_s: + bra.s footext + .text + .global bra24 +bra24: + bra footext + .text + .global bra24_l +bra24_l: + bra.l footext + .text + .global cmp +cmp: + cmp fp,fp + .text + .global cmpi +cmpi: + cmpi fp,#0 + .text + .global cmpu +cmpu: + cmpu fp,fp + .text + .global cmpui +cmpui: + cmpui fp,#0 + .text + .global div +div: + div fp,fp + .text + .global divu +divu: + divu fp,fp + .text + .global rem +rem: + rem fp,fp + .text + .global remu +remu: + remu fp,fp + .text + .global jl +jl: + jl fp + .text + .global jmp +jmp: + jmp fp + .text + .global ld +ld: + ld fp,@fp + .text + .global ld_2 +ld_2: + ld fp,@(fp) + .text + .global ld_d +ld_d: + ld fp,@(0,fp) + .text + .global ld_d2 +ld_d2: + ld fp,@(fp,0) + .text + .global ldb +ldb: + ldb fp,@fp + .text + .global ldb_2 +ldb_2: + ldb fp,@(fp) + .text + .global ldb_d +ldb_d: + ldb fp,@(0,fp) + .text + .global ldb_d2 +ldb_d2: + ldb fp,@(fp,0) + .text + .global ldh +ldh: + ldh fp,@fp + .text + .global ldh_2 +ldh_2: + ldh fp,@(fp) + .text + .global ldh_d +ldh_d: + ldh fp,@(0,fp) + .text + .global ldh_d2 +ldh_d2: + ldh fp,@(fp,0) + .text + .global ldub +ldub: + ldub fp,@fp + .text + .global ldub_2 +ldub_2: + ldub fp,@(fp) + .text + .global ldub_d +ldub_d: + ldub fp,@(0,fp) + .text + .global ldub_d2 +ldub_d2: + ldub fp,@(fp,0) + .text + .global lduh +lduh: + lduh fp,@fp + .text + .global lduh_2 +lduh_2: + lduh fp,@(fp) + .text + .global lduh_d +lduh_d: + lduh fp,@(0,fp) + .text + .global lduh_d2 +lduh_d2: + lduh fp,@(fp,0) + .text + .global ld_plus +ld_plus: + ld fp,@fp+ + .text + .global ld24 +ld24: + ld24 fp,foodata + .text + .global ldi8 +ldi8: + ldi fp,0 + .text + .global ldi16 +ldi16: + ldi fp,256 + .text + .global lock +lock: + lock fp,@fp + .text + .global machi +machi: + machi fp,fp + .text + .global maclo +maclo: + maclo fp,fp + .text + .global macwhi +macwhi: + macwhi fp,fp + .text + .global macwlo +macwlo: + macwlo fp,fp + .text + .global mul +mul: + mul fp,fp + .text + .global mulhi +mulhi: + mulhi fp,fp + .text + .global mullo +mullo: + mullo fp,fp + .text + .global mulwhi +mulwhi: + mulwhi fp,fp + .text + .global mulwlo +mulwlo: + mulwlo fp,fp + .text + .global mv +mv: + mv fp,fp + .text + .global mvfachi +mvfachi: + mvfachi fp + .text + .global mvfaclo +mvfaclo: + mvfaclo fp + .text + .global mvfacmi +mvfacmi: + mvfacmi fp + .text + .global mvfc +mvfc: + mvfc fp,psw + .text + .global mvtachi +mvtachi: + mvtachi fp + .text + .global mvtaclo +mvtaclo: + mvtaclo fp + .text + .global mvtc +mvtc: + mvtc fp,psw + .text + .global neg +neg: + neg fp,fp + .text + .global nop +nop: + nop + .text + .global not +not: + not fp,fp + .text + .global rac +rac: + .text + .global rach +rach: + .text + .global rte +rte: + .text + .global seth +seth: + seth fp,0 + .text + .global sll +sll: + sll fp,fp + .text + .global sll3 +sll3: + sll3 fp,fp,0 + .text + .global slli +slli: + slli fp,0 + .text + .global sra +sra: + sra fp,fp + .text + .global sra3 +sra3: + sra3 fp,fp,0 + .text + .global srai +srai: + srai fp,0 + .text + .global srl +srl: + srl fp,fp + .text + .global srl3 +srl3: + srl3 fp,fp,0 + .text + .global srli +srli: + srli fp,0 + .text + .global st +st: + st fp,@fp + .text + .global st_2 +st_2: + st fp,@(fp) + .text + .global st_d +st_d: + st fp,@(0,fp) + .text + .global st_d2 +st_d2: + st fp,@(fp,0) + .text + .global stb +stb: + stb fp,@fp + .text + .global stb_2 +stb_2: + stb fp,@(fp) + .text + .global stb_d +stb_d: + stb fp,@(0,fp) + .text + .global stb_d2 +stb_d2: + stb fp,@(fp,0) + .text + .global sth +sth: + sth fp,@fp + .text + .global sth_2 +sth_2: + sth fp,@(fp) + .text + .global sth_d +sth_d: + sth fp,@(0,fp) + .text + .global sth_d2 +sth_d2: + sth fp,@(fp,0) + .text + .global st_plus +st_plus: + st fp,@+fp + .text + .global st_minus +st_minus: + st fp,@-fp + .text + .global sub +sub: + sub fp,fp + .text + .global subv +subv: + subv fp,fp + .text + .global subx +subx: + subx fp,fp + .text + .global trap +trap: + trap 0 + .text + .global unlock +unlock: + unlock fp,@fp + .text + .global push +push: + push fp + .text + .global pop +pop: + pop fp diff --git a/gas/testsuite/gas/m32r/high-1.s b/gas/testsuite/gas/m32r/high-1.s new file mode 100644 index 0000000..8a5d1d1 --- /dev/null +++ b/gas/testsuite/gas/m32r/high-1.s @@ -0,0 +1,14 @@ +; Test high/shigh handling. + +foo: + seth r4,#high(foo+0x10000) + or3 r4,r4,#low(foo+0x10000) + + seth r4,#high(0x12348765) + or3 r4,r4,#low(0x12348765) + + seth r4,#shigh(0x12348765) + or3 r4,r4,#low(0x12348765) + + seth r4,#shigh(0x87654321) + or3 r4,r4,#low(0x87654321) diff --git a/gas/testsuite/gas/m32r/relax-1.s b/gas/testsuite/gas/m32r/relax-1.s new file mode 100644 index 0000000..d4e12c0 --- /dev/null +++ b/gas/testsuite/gas/m32r/relax-1.s @@ -0,0 +1,17 @@ +; Test relaxation into non-zero offset to different segment. + + .section .branch, "ax",@progbits + .balign 4 +branch: + bra Work + + + .section .text + .balign 4 +DoesNotWork: + nop + nop + +Work: + nop + nop diff --git a/gas/testsuite/gas/m32r/uppercase.s b/gas/testsuite/gas/m32r/uppercase.s new file mode 100644 index 0000000..eeeba7d --- /dev/null +++ b/gas/testsuite/gas/m32r/uppercase.s @@ -0,0 +1,5 @@ + .text + .global foo +foo: + mv R0,R1 + mvfc R0,CBR diff --git a/gas/testsuite/gas/m68k-coff/p2389.s b/gas/testsuite/gas/m68k-coff/p2389.s new file mode 100644 index 0000000..3fa93e9 --- /dev/null +++ b/gas/testsuite/gas/m68k-coff/p2389.s @@ -0,0 +1,19 @@ +# I reached a point where the file looks +# clean and complies with gas syntax, but it core dumps gas. Here's a +# little gdb info: +# +# Program terminated with signal 11, Segmentation fault. +# #0 0x6323c in memcpy () +# (gdb) bt +# #0 0x6323c in memcpy () +# #1 0xf2b0 in fill_section (abfd=0xeaee8, filehdr=0x8a7f4, +# file_cursor=0xf7fff654) at obj-format.c:534 +# #2 0x112a8 in write_object_file () at obj-format.c:1786 +# #3 0x13ef8 in main (argc=5, argv=0xf7fff7bc) at ../../p3/gas/as.c:310 +# (gdb) +# +# gas did manage to create the .o file at this point. + + .bss + +_ASIC_INT_TBL: .space 32,0 | keep interrupt routines here diff --git a/gas/testsuite/gas/m68k-coff/p2389a.s b/gas/testsuite/gas/m68k-coff/p2389a.s new file mode 100644 index 0000000..76b2765 --- /dev/null +++ b/gas/testsuite/gas/m68k-coff/p2389a.s @@ -0,0 +1,3 @@ + .bss + +_ASIC_INT_TBL: .space 32,1 | keep interrupt routines here diff --git a/gas/testsuite/gas/m68k-coff/p2430.s b/gas/testsuite/gas/m68k-coff/p2430.s new file mode 100644 index 0000000..49723d9 --- /dev/null +++ b/gas/testsuite/gas/m68k-coff/p2430.s @@ -0,0 +1,6 @@ +# This differs from p2430a.s (the customer's actual source file) only +# in whitespace and comments. Strangely, this file gave no problems... + + .sect foo +tag: + bra tag diff --git a/gas/testsuite/gas/m68k-coff/p2430a.s b/gas/testsuite/gas/m68k-coff/p2430a.s new file mode 100644 index 0000000..601fb11 --- /dev/null +++ b/gas/testsuite/gas/m68k-coff/p2430a.s @@ -0,0 +1,4 @@ + .sect foo + +tag: + bra tag diff --git a/gas/testsuite/gas/m68k-coff/t1.s b/gas/testsuite/gas/m68k-coff/t1.s new file mode 100644 index 0000000..cc015f2 --- /dev/null +++ b/gas/testsuite/gas/m68k-coff/t1.s @@ -0,0 +1,36 @@ +# 1 "libgcc1.S" +# 42 "libxyz1.S" +# 259 "libgcc1.S" + .text + .proc +|#PROC# 04 + .globl __mulsi3 + __mulsi3 : +|#PROLOGUE# 0 + link %a6 ,#0 + addl #-LF14, %sp + moveml #LS14, %sp @ +|#PROLOGUE# 1 + movew %a6 @(0x8), %d0 + muluw %a6 @(0xe), %d0 + movew %a6 @(0xa), %d1 + muluw %a6 @(0xc), %d1 + addw %d1 , %d0 + lsll #8, %d0 + lsll #8, %d0 + movew %a6 @(0xa), %d1 + muluw %a6 @(0xe), %d1 + addl %d1 , %d0 + jra LE14 +LE14: +|#PROLOGUE# 2 + moveml %sp @, #LS14 + unlk %a6 +|#PROLOGUE# 3 + rts + LF14 = 4 + LS14 = 0x0002 + LFF14 = 0 +# 354 "libgcc1.S" + LSS14 = 0x0 + LV14 = 0 diff --git a/gas/testsuite/gas/m68k/bitfield.s b/gas/testsuite/gas/m68k/bitfield.s new file mode 100644 index 0000000..4d2f758 --- /dev/null +++ b/gas/testsuite/gas/m68k/bitfield.s @@ -0,0 +1,24 @@ +# Test handling of bitfield instruction operands. + .text + .globl foo +foo: + bfexts (%a0){&1:&2},%d0 + bfexts (%a0){&1:&(2+4)},%d0 + bfexts (%a0){&(1+2):&2},%d0 + bfexts (%a0){&(1+2):&(2+4)},%d0 + bfexts %a0@,&1,&2,%d0 + bfexts %a0@,&1,&(2+4),%d0 + bfexts %a0@,&1+2,&2,%d0 + bfexts %a0@,&(1+2),&(2+4),%d0 + bfset (%a0){&1:&2} + bfset (%a0){&1:&(2+4)} + bfset (%a0){&(1+2):&2} + bfset (%a0){&(1+2):&(2+4)} + bfset %a0@,&1,&2 + bfset %a0@,&1,&(2+4) + bfset %a0@,&1+2,&2 + bfset %a0@,&(1+2),&(2+4) + bfexts (%a0){%d1:%d2},%d0 + bfexts %a0@,%d1,%d2,%d0 + bfset (%a0){%d1:%d2} + bfset %a0@,%d1,%d2 diff --git a/gas/testsuite/gas/m68k/cas.s b/gas/testsuite/gas/m68k/cas.s new file mode 100644 index 0000000..f64e7f5 --- /dev/null +++ b/gas/testsuite/gas/m68k/cas.s @@ -0,0 +1,16 @@ +# Test parsing of the operands of the cas instruction + .text + .globl foo +foo: + cas %d0,%d1,(%a0) + cas %d0,%d1,%a0@ + cas2 %d0:%d2,%d3:%d4,(%a0):(%a1) + cas2 %d0:%d2,%d3:%d4,(%d0):(%d1) + cas2 %d0:%d2,%d3:%d4,%a0@:%a1@ + cas2 %d0:%d2,%d3:%d4,@(%a0):@(%a1) + cas2 %d0:%d2,%d3:%d4,@(%d0):@(%d1) + cas2 %d0,%d2,%d3,%d4,(%a0),(%a1) + cas2 %d0,%d2,%d3,%d4,(%d0),(%d1) + cas2 %d0,%d2,%d3,%d4,%a0@,%a1@ + cas2 %d0,%d2,%d3,%d4,@(%a0),@(%a1) + cas2 %d0,%d2,%d3,%d4,@(%d0),@(%d1) diff --git a/gas/testsuite/gas/m68k/disperr.s b/gas/testsuite/gas/m68k/disperr.s new file mode 100644 index 0000000..fcd3b7b --- /dev/null +++ b/gas/testsuite/gas/m68k/disperr.s @@ -0,0 +1,16 @@ +#NO_APP +gcc2_compiled.: +___gnu_compiled_c: +.text + .even +.globl _foo +_foo: + link %a6,#-12 + fmovex %a6@(-12),%fp0 + fmovex %fp0,%sp@- + jbsr _bar + addqw #8,%sp + addqw #4,%sp +L1: + unlk %a6 + rts diff --git a/gas/testsuite/gas/m68k/fmoveml.s b/gas/testsuite/gas/m68k/fmoveml.s new file mode 100644 index 0000000..e74224b --- /dev/null +++ b/gas/testsuite/gas/m68k/fmoveml.s @@ -0,0 +1,58 @@ +# Test handling of the fmoveml and fmovemx instructions. + .text + .globl foo +foo: + fmoveml %fpcr,%a0@ + fmoveml %fpsr,%a0@ + fmoveml %fpiar,%a0@ + fmoveml %fpcr/%fpsr,%a0@ + fmoveml %fpcr/%fpiar,%a0@ + fmoveml %fpsr/%fpiar,%a0@ + fmoveml %fpcr/%fpsr/%fpiar,%a0@ + fmoveml %fpcr,%d0 + fmoveml %fpsr,%d0 + fmoveml %fpiar,%d0 + fmoveml %fpiar,%a0 + fmoveml %a0@,%fpcr + fmoveml %a0@,%fpsr + fmoveml %a0@,%fpiar + fmoveml %a0@,%fpsr/%fpcr + fmoveml %a0@,%fpiar/%fpcr + fmoveml %a0@,%fpiar/%fpsr + fmoveml %a0@,%fpsr/%fpiar/%fpcr + fmoveml %d0,%fpcr + fmoveml %d0,%fpsr + fmoveml %d0,%fpiar + fmoveml %a0,%fpiar + fmoveml &1,%fpcr + fmoveml &1,%fpsr + fmoveml &1,%fpiar + fmoveml &1,%fpcr/%fpsr + fmoveml &1,%fpcr/%fpiar + fmoveml &1,%fpsr/%fpiar + fmoveml &1,%fpiar/%fpsr/%fpcr + + fmovemx %fp1,%a0@ + fmovemx %fp4,%a0@ + fmovemx %fp7,%a0@ + fmovemx %fp1/%fp3,%a0@ + fmovemx %fp1-%fp4,%a0@ + fmovemx %fp0/%fp7,%a0@ + fmovemx %fp0-%fp7,%a0@ + fmovemx %a0@,%fp0 + fmovemx %a0@,%fp1 + fmovemx %a0@,%fp7 + fmovemx %a0@,%fp0/%fp3 + fmovemx %a0@,%fp0/%fp4 + fmovemx %a0@,%fp2-%fp4 + fmovemx %a0@,%fp1-%fp7 + fmovemx &1,%a0@- + fmovemx &0xff,%a0@- + fmovemx &0x11,%a0@- + fmovemx %a0@+,&1 + fmovemx %a0@+,&0xff + fmovemx %a0@+,&0x11 + fmovemx %d0,%a0@- + fmovemx %a0@+,%d0 + fmovemx &sym,%a0@- + sym = 0x22 diff --git a/gas/testsuite/gas/m68k/link.s b/gas/testsuite/gas/m68k/link.s new file mode 100644 index 0000000..1a321dd --- /dev/null +++ b/gas/testsuite/gas/m68k/link.s @@ -0,0 +1,13 @@ +# Test handling of link instruction. + .text + .globl foo +foo: + link %a6,&0 + link %a6,&-4 + link %a6,&-0x7fff + link %a6,&-0x8000 + link %a6,&-0x8001 + link %a6,&0x7fff + link %a6,&0x8000 + link %a6,&0x8001 + nop diff --git a/gas/testsuite/gas/m68k/operands.s b/gas/testsuite/gas/m68k/operands.s new file mode 100644 index 0000000..291d733 --- /dev/null +++ b/gas/testsuite/gas/m68k/operands.s @@ -0,0 +1,273 @@ +# Test handling of MIT and Motorola syntax operands +# If you change this file, see also op68000.d. + .text + .globl foo +foo: + | Data register direct + tstl %d0 + + | Address register direct + tstl %a0 + + | Address register indirect + tstl %a0@ + tstl (%a0) + + | Address register indirect with postincrement + tstl %a0@+ + tstl (%a0)+ + + | Address register indirect with predecrement + tstl %a0@- + tstl -(%a0) + + | Address register indirect with displacement + tstl %a0@(8) + tstl (8,%a0) + tstl 8(%a0) + + | Address register indirect with index (8-bit displacement) + tstl %a0@(8,%d0) + tstl %a0@(8,%d0:w) + tstl %a0@(8,%d0:w:1) + tstl %a0@(8,%d0:w:2) + tstl %a0@(8,%d0:w:4) + tstl %a0@(8,%d0:w:8) + tstl %a0@(8,%d0:l) + tstl %a0@(8,%d0:l:1) + tstl %a0@(8,%d0:l:2) + tstl %a0@(8,%d0:l:4) + tstl %a0@(8,%d0:l:8) + tstl %a0@(%d0:w:2) + tstl (8,%a0,%d0) + tstl (8,%a0,%d0*1) + tstl (8,%a0,%d0*2) + tstl (8,%a0,%d0*4) + tstl (8,%a0,%d0*8) + tstl (8,%a0,%d0.w) + tstl (8,%a0,%d0.w*1) + tstl (8,%a0,%d0.w*2) + tstl (8,%a0,%d0.w*4) + tstl (8,%a0,%d0.w*8) + tstl (8,%a0,%d0.l) + tstl (8,%a0,%d0.l*1) + tstl (8,%a0,%d0.l*2) + tstl (8,%a0,%d0.l*4) + tstl (8,%a0,%d0.l*8) + tstl (8,%d0,%a0) + tstl (8,%a1.w*2,%a0) + tstl (8,%a1,%a0) + tstl 8(%a0,%d0.w*2) + tstl 8(%d0.w*2,%a0) + tstl 8(%a1.w*2,%a0) + tstl (%a0,%d0.w*2) + tstl (%d0.w*2,%a0) + + | Address register indirect with index (base displacement) + tstl %a0@(1000,%d0:w:2) + tstl @(1000,%d0:w:2) + tstl @(%d0:w:2) + tstl @(1000) + tstl %a0@(100000) + tstl (1000,%a0,%d0.w*2) + tstl (1000,%d0,%a0) + tstl (1000,%a1.w*2,%a0) + tstl 1000(%a0,%d0.w*2) + tstl 1000(%d0,%a0) + tstl (1000,%d0.w*2) + tstl 1000(%d0.w*2) + tstl (%d0.w*2) + tstl (100000,%a0) + tstl 100000(%a0) + tstl %za1@(1000,%d0:w:2) + tstl %za1@(100000) + tstl (1000,%za1,%d0.w*2) + tstl (1000,%d0,%za1) + tstl (1000,%a1.w*2,%za1) + tstl 1000(%za1,%d0.w*2) + tstl 1000(%d0,%za1) + tstl (100000,%za1) + tstl 100000(%za1) + tstl %a0@(1000,%zd1:w:2) + tstl @(1000,%zd1:w:2) + tstl @(%zd1:w:2) + tstl (1000,%a0,%zd1.w*2) + tstl (1000,%zd1,%a0) + tstl (1000,%za1.w*2,%a0) + tstl 1000(%a0,%zd1.w*2) + tstl 1000(%zd1,%a0) + tstl (1000,%zd1.w*2) + tstl 1000(%zd1.w*2) + tstl (%zd1.w*2) + + | Memory indirect postindexed + tstl %a0@(1000)@(2000,%d0:w:2) + tstl %a0@(1000)@(%d0:w:2) + tstl %a0@(1000)@(2000) + tstl @(1000)@(2000,%d0:w:2) + tstl @(1000)@(%d0:w:2) + tstl @(1000)@(2000) + tstl %a0@(0)@(2000,%d0:w:2) + tstl %a0@(0)@(%d0:w:2) + tstl %a0@(0)@(2000) + tstl @(0)@(2000,%d0:w:2) + tstl @(0)@(%d0:w:2) + tstl @(0)@(2000) + tstl ([1000,%a0],%d0:w:2,2000) + tstl ([1000,%a0],%d0:w:2) + tstl ([1000,%a0],2000) + tstl ([1000],%d0:w:2,2000) + tstl ([1000],%d0:w:2) + tstl ([1000],2000) + tstl ([%a0],%d0:w:2,2000) + tstl ([%a0],%d0:w:2) + tstl ([%a0],2000) + tstl ([0],%d0:w:2,2000) + tstl ([0],%d0:w:2) + tstl ([0],2000) + + | Memory indirect preindexed + tstl %a0@(1000,%d0:w:2)@(2000) + tstl %a0@(1000,%d0:w:2)@(0) + tstl @(1000,%d0:w:2)@(2000) + tstl @(1000,%d0:w:2)@(0) + tstl %a0@(%d0:w:2)@(2000) + tstl %a0@(%d0:w:2)@(0) + tstl @(%d0:w:2)@(2000) + tstl @(%d0:w:2)@(0) + tstl ([1000,%a0,%d0:w:2],2000) + tstl ([1000,%d0:w:2,%a0],2000) + tstl ([1000,%d0,%a0],2000) + tstl ([1000,%a1,%a0],2000) + tstl ([1000,%a1:w:2,%a0],2000) + tstl ([1000,%a0,%d0:w:2]) + tstl ([1000,%d0,%a0]) + tstl ([1000,%d0:w:2],2000) + tstl ([1000,%d0:w:2]) + tstl ([%a0,%d0:w:2],2000) + tstl ([%d0,%a0],2000) + tstl ([%a0,%d0:w:2]) + tstl ([%d0,%a0]) + tstl ([%d0:w:2],2000) + tstl ([%d0:w:2]) + + | Program counter indirect with displacement + tstl %pc@(8) + tstl (8,%pc) + tstl 8(%pc) + tstl foo + + | Program counter indirect with index (8-bit displacement) + tstl %pc@(8,%d0:w:2) + tstl %pc@(%d0:w:2) + tstl (8,%pc,%d0.w*2) + tstl (8,%d0,%pc) + tstl (8,%a0,%pc) + tstl 8(%pc,%d0.w*2) + tstl 8(%d0,%pc) + tstl 8(%a0,%pc) + tstl (%pc,%d0.w*2) + tstl (%d0,%pc) + tstl (%a0,%pc) + + | Program counter indirect with index (base displacement) + tstl %pc@(1000,%d0:w:2) + tstl %pc@(100000) + tstl (1000,%pc,%d0.w*2) + tstl (1000,%d0,%pc) + tstl (1000,%a1.w*2,%pc) + tstl (1000,%a1,%pc) + tstl 1000(%pc,%d0.w*2) + tstl 1000(%d0,%pc) + tstl 1000(%a1,%pc) + tstl (100000,%pc) + tstl 100000(%pc) + tstl %zpc@(1000,%d0:w:2) + tstl %zpc@(100000) + tstl (1000,%zpc,%d0.w*2) + tstl (1000,%d0,%zpc) + tstl (1000,%a1.w*2,%zpc) + tstl (1000,%a1,%zpc) + tstl 1000(%zpc,%d0.w*2) + tstl 1000(%d0,%zpc) + tstl 1000(%a1,%zpc) + tstl (100000,%zpc) + tstl 100000(%zpc) + + | Program counter memory indirect postindexed + tstl %pc@(1000)@(2000,%d0:w:2) + tstl %pc@(1000)@(%d0:w:2) + tstl %pc@(1000)@(2000) + tstl %pc@(0)@(2000,%d0:w:2) + tstl %pc@(0)@(%d0:w:2) + tstl %pc@(0)@(2000) + tstl ([1000,%pc],%d0:w:2,2000) + tstl ([1000,%pc],%d0:w:2) + tstl ([1000,%pc],2000) + tstl ([%pc],%d0:w:2,2000) + tstl ([%pc],%d0:w:2) + tstl ([%pc],2000) + tstl %zpc@(1000)@(2000,%d0:w:2) + tstl %zpc@(1000)@(%d0:w:2) + tstl %zpc@(1000)@(2000) + tstl %zpc@(0)@(2000,%d0:w:2) + tstl %zpc@(0)@(%d0:w:2) + tstl %zpc@(0)@(2000) + tstl ([1000,%zpc],%d0:w:2,2000) + tstl ([1000,%zpc],%d0:w:2) + tstl ([1000,%zpc],2000) + tstl ([%zpc],%d0:w:2,2000) + tstl ([%zpc],%d0:w:2) + tstl ([%zpc],2000) + + | Program counter memory indirect preindexed + tstl %pc@(1000,%d0:w:2)@(2000) + tstl %pc@(1000,%d0:w:2)@(0) + tstl %pc@(%d0:w:2)@(2000) + tstl %pc@(%d0:w:2)@(0) + tstl ([1000,%pc,%d0:w:2],2000) + tstl ([1000,%d0:w:2,%pc],2000) + tstl ([1000,%d0,%pc],2000) + tstl ([1000,%a1,%pc],2000) + tstl ([1000,%pc,%a1],2000) + tstl ([1000,%a1:w:2,%pc],2000) + tstl ([1000,%pc,%d0:w:2]) + tstl ([1000,%d0,%pc]) + tstl ([1000,%a1,%pc]) + tstl ([%pc,%d0:w:2],2000) + tstl ([%pc,%a0],2000) + tstl ([%pc,%d0:w:2]) + tstl ([%d0,%pc]) + tstl %zpc@(1000,%d0:w:2)@(2000) + tstl %zpc@(1000,%d0:w:2)@(0) + tstl %zpc@(%d0:w:2)@(2000) + tstl %zpc@(%d0:w:2)@(0) + tstl ([1000,%zpc,%d0:w:2],2000) + tstl ([1000,%d0:w:2,%zpc],2000) + tstl ([1000,%d0,%zpc],2000) + tstl ([1000,%a1,%zpc],2000) + tstl ([1000,%zpc,%a1],2000) + tstl ([1000,%a1:w:2,%zpc],2000) + tstl ([1000,%zpc,%d0:w:2]) + tstl ([1000,%d0,%zpc]) + tstl ([1000,%a1,%zpc]) + tstl ([%zpc,%d0:w:2],2000) + tstl ([%zpc,%a0],2000) + tstl ([%zpc,%d0:w:2]) + tstl ([%d0,%zpc]) + + | Absolute short + tstl 4 + tstl 4.w + tstl (4).w + + | Absolute long + tstl 100000 + tstl 8.l + tstl (8).l + + | Immediate + addib &1,%d0 + addiw &1,%d0 + addil &1,%d0 + addqb &1,%d0 diff --git a/gas/testsuite/gas/m68k/p2410.s b/gas/testsuite/gas/m68k/p2410.s new file mode 100644 index 0000000..4f0337a --- /dev/null +++ b/gas/testsuite/gas/m68k/p2410.s @@ -0,0 +1,15 @@ +.text +start: nop + nop + nop + bras label1 + bras label2 +.globl label1 +label1: nop + .space 0xa0 + nop + nop +.globl label2 +label2: bras label1 + bras label2 + nop diff --git a/gas/testsuite/gas/m68k/p2663.s b/gas/testsuite/gas/m68k/p2663.s new file mode 100644 index 0000000..9f3650f --- /dev/null +++ b/gas/testsuite/gas/m68k/p2663.s @@ -0,0 +1,16 @@ +| +| This code generates an incorrect pc relative offset +| +bug: movel #4,%d7 + jsr table(%pc,%d7.w) | wrong + jsr %pc@(table-.-2:b,%d7:w) | correct but cryptic + nop + nop +table: + bra junk + bra junk + bra junk + +junk: + nop + rts diff --git a/gas/testsuite/gas/m68k/pcrel.s b/gas/testsuite/gas/m68k/pcrel.s new file mode 100644 index 0000000..9c5c22b --- /dev/null +++ b/gas/testsuite/gas/m68k/pcrel.s @@ -0,0 +1,59 @@ + nop +lbl_b: nop + moveml lbl_b,%a0-%a1 + moveml %pc@(lbl_b),%a0-%a1 + moveml %pc@(lbl_b,%d0),%a0-%a1 + lea lbl_b,%a0 + lea %pc@(lbl_b),%a0 + lea %pc@(lbl_b-128),%a0 + lea %pc@(lbl_b,%d0),%a0 + lea %pc@(lbl_b:b,%d0),%a0 + lea %pc@(lbl_b-.-2:b,%d0),%a0 + lea %pc@(lbl_b:w,%d0),%a0 + lea %pc@(lbl_b-.-2:w,%d0),%a0 + lea %pc@(lbl_b:l,%d0),%a0 + lea %pc@(lbl_b-.-2:l,%d0),%a0 + nop + bsrl lbl_a + bsr lbl_a + bsrs lbl_a + jbsr lbl_a + nop + lea lbl_a,%a0 + lea %pc@(lbl_a),%a0 + lea %pc@(lbl_a+128),%a0 + lea %pc@(lbl_a,%d0),%a0 + lea %pc@(lbl_a:b,%d0),%a0 + lea %pc@(lbl_a-.-2:b,%d0),%a0 + lea %pc@(lbl_a:w,%d0),%a0 + lea %pc@(lbl_a-.-2:w,%d0),%a0 + lea %pc@(lbl_a:l,%d0),%a0 + lea %pc@(lbl_a-.-2:l,%d0),%a0 + lea %pc@(18:l,%d0),%a0 + lea %pc@(10:w,%d0),%a0 + lea %pc@(4:b,%d0),%a0 + nop +lbl_a: nop + nop + lea %pc@(.-126,%d0),%a0 + lea %pc@(.-127,%d0),%a0 + lea %pc@(.-32766,%d0),%a0 + lea %pc@(.-32767,%d0),%a0 + nop + lea %pc@(.+129,%d0),%a0 + lea %pc@(.+130,%d0),%a0 + lea %pc@(.+32769,%d0),%a0 + lea %pc@(.+32770,%d0),%a0 + nop + lea %pc@(.-32766),%a0 + lea %pc@(.-32767),%a0 + nop + lea %pc@(.+32769),%a0 + lea %pc@(.+32770),%a0 + nop + lea %pc@(undef),%a0 + lea %pc@(undef,%d0),%a0 + nop + lea undef,%a0 + nop + .long 0 diff --git a/gas/testsuite/gas/m68k/pic1.s b/gas/testsuite/gas/m68k/pic1.s new file mode 100644 index 0000000..8578774 --- /dev/null +++ b/gas/testsuite/gas/m68k/pic1.s @@ -0,0 +1,5 @@ + .text + .globl _foo +_foo: + leal %pc@(_i), %a0 + leal %pc@(_i-.), %a1 diff --git a/gas/testsuite/gas/m68k/t2.s b/gas/testsuite/gas/m68k/t2.s new file mode 100644 index 0000000..7b71e86 --- /dev/null +++ b/gas/testsuite/gas/m68k/t2.s @@ -0,0 +1,6 @@ + .text +loop2: + move.l %d1,%a0@+ + dbf %d0,loop1 + .data +loop1: bra loop2 diff --git a/gas/testsuite/gas/m88k/init.s b/gas/testsuite/gas/m88k/init.s new file mode 100644 index 0000000..29681cb --- /dev/null +++ b/gas/testsuite/gas/m88k/init.s @@ -0,0 +1,5 @@ +; Test proper padding of the .init section + section .init,"x" + align 4 + subu r31,r31,16 + st r13,r31,32 diff --git a/gas/testsuite/gas/macros/err.s b/gas/testsuite/gas/macros/err.s new file mode 100644 index 0000000..cc97631 --- /dev/null +++ b/gas/testsuite/gas/macros/err.s @@ -0,0 +1,5 @@ + .macro m + m + .endm + + m diff --git a/gas/testsuite/gas/macros/irp.s b/gas/testsuite/gas/macros/irp.s new file mode 100644 index 0000000..2f9a621 --- /dev/null +++ b/gas/testsuite/gas/macros/irp.s @@ -0,0 +1,8 @@ + .irp param,1,2,3 + .long r\param + .endr + + .irpc param,123 + .long s\param + .endr + diff --git a/gas/testsuite/gas/macros/rept.s b/gas/testsuite/gas/macros/rept.s new file mode 100644 index 0000000..243cf67 --- /dev/null +++ b/gas/testsuite/gas/macros/rept.s @@ -0,0 +1,3 @@ + .rept 3 + .long r1 + .endr diff --git a/gas/testsuite/gas/macros/semi.s b/gas/testsuite/gas/macros/semi.s new file mode 100644 index 0000000..d6e0963 --- /dev/null +++ b/gas/testsuite/gas/macros/semi.s @@ -0,0 +1,14 @@ + .macro semicolon + .ascii "; " + .endm + + .macro colon + .ascii ": " + .endm + + semicolon + .ascii "; " + colon + .ascii ": " + + .p2align 5,0 diff --git a/gas/testsuite/gas/macros/test1.s b/gas/testsuite/gas/macros/test1.s new file mode 100644 index 0000000..988b7cd --- /dev/null +++ b/gas/testsuite/gas/macros/test1.s @@ -0,0 +1,7 @@ + .macro m arg1 arg2 + .globl \arg1 + \arg1 = \arg2 + .endm + + m s1,1 + m s2,2 diff --git a/gas/testsuite/gas/macros/test2.s b/gas/testsuite/gas/macros/test2.s new file mode 100644 index 0000000..838ce94 --- /dev/null +++ b/gas/testsuite/gas/macros/test2.s @@ -0,0 +1,9 @@ + .macro m arg1 arg2 arg3 + .long \arg1 + .ifc ,\arg2\arg3 + .ELSE + m \arg2,\arg3 + .endif + .endm + + m r1,r2,r3 diff --git a/gas/testsuite/gas/macros/test3.s b/gas/testsuite/gas/macros/test3.s new file mode 100644 index 0000000..c6410ae --- /dev/null +++ b/gas/testsuite/gas/macros/test3.s @@ -0,0 +1,7 @@ + .macro m arg1 arg2 + \arg1 + .exitm + \arg2 + .endm + + m ".long r1",.garbage diff --git a/gas/testsuite/gas/mips/abs.s b/gas/testsuite/gas/mips/abs.s new file mode 100644 index 0000000..1f2172b --- /dev/null +++ b/gas/testsuite/gas/mips/abs.s @@ -0,0 +1,5 @@ +# Source file used to test the abs macro. +foo: + abs $4 + abs $4,$5 + .space 8 diff --git a/gas/testsuite/gas/mips/add.s b/gas/testsuite/gas/mips/add.s new file mode 100644 index 0000000..44e964b --- /dev/null +++ b/gas/testsuite/gas/mips/add.s @@ -0,0 +1,16 @@ +# Source file used to test the add macro. + +foo: + add $4,$4,0 + add $4,$4,1 + add $4,$4,0x8000 + add $4,$4,-0x8000 + add $4,$4,0x10000 + add $4,$4,0x1a5a5 + +# addu is handled the same way add is; just confirm that it isn't +# totally broken. + addu $4,$4,1 + +# Round to a 16 byte boundary, for ease in testing multiple targets. + nop diff --git a/gas/testsuite/gas/mips/and.s b/gas/testsuite/gas/mips/and.s new file mode 100644 index 0000000..4dfc57e --- /dev/null +++ b/gas/testsuite/gas/mips/and.s @@ -0,0 +1,28 @@ +# Source file used to test the and macro. + +foo: + and $4,$4,0 + and $4,$4,1 + and $4,$4,0x8000 + and $4,$4,-0x8000 + and $4,$4,0x10000 + and $4,$4,0x1a5a5 + +# nor, or, and xor are handled by the same code. There is a special +# case for nor, so we test all variants. + + nor $4,$5,0 + nor $4,$5,1 + nor $4,$5,0x8000 + nor $4,$5,-0x8000 + nor $4,$5,0x10000 + nor $4,$5,0x1a5a5 + + or $4,$5,0 + + xor $4,$5,0 + + # Round to a 16 byte boundary, for ease in testing multiple targets. + nop + nop + nop diff --git a/gas/testsuite/gas/mips/beq.s b/gas/testsuite/gas/mips/beq.s new file mode 100644 index 0000000..9922eec --- /dev/null +++ b/gas/testsuite/gas/mips/beq.s @@ -0,0 +1,28 @@ +# Source file used to test the beq macro. + .globl text_label .text +text_label: + beq $4,$5,text_label + beq $4,0,text_label + beq $4,1,text_label + beq $4,0x8000,text_label + beq $4,-0x8000,text_label + beq $4,0x10000,text_label + beq $4,0x1a5a5,text_label + +# bne is handled by the same code as beq. Just sanity check. + bne $4,0,text_label + +# Sanity check beql and bnel + .set mips2 + beql $4,0,text_label + bnel $4,0,text_label + +# Test that branches which overflow are converted to jumps. + .space 0x20000 + b text_label + bal text_label + +# Round to a 16 byte boundary, for ease in testing multiple targets. + nop + nop + nop diff --git a/gas/testsuite/gas/mips/bge.s b/gas/testsuite/gas/mips/bge.s new file mode 100644 index 0000000..405fd82 --- /dev/null +++ b/gas/testsuite/gas/mips/bge.s @@ -0,0 +1,31 @@ +# Source file used to test the bge macro. + +text_label: + bge $4,$5,text_label + bge $4,$0,text_label + bge $0,$5,text_label + bge $4,0,text_label + bge $4,1,text_label + bge $4,2,text_label + bge $4,0x8000,text_label + bge $4,-0x8000,text_label + bge $4,0x10000,text_label + bge $4,0x1a5a5,text_label + +# bgt is handled like bge, except when both arguments are registers. +# Just sanity check it otherwise. + bgt $4,$5,text_label + bgt $4,$0,text_label + bgt $0,$5,text_label + bgt $4,0,text_label + +# Sanity test bgel and bgtl + .set mips2 + bgel $4,$5,text_label + bgtl $4,$5,text_label + +# Round to a 16 byte boundary, for ease in testing multiple targets. + nop + nop + nop + nop diff --git a/gas/testsuite/gas/mips/bgeu.s b/gas/testsuite/gas/mips/bgeu.s new file mode 100644 index 0000000..1c37f96 --- /dev/null +++ b/gas/testsuite/gas/mips/bgeu.s @@ -0,0 +1,27 @@ +# Source file used to test the bgeu macro. + +text_label: + bgeu $4,$5,text_label + bgeu $0,$5,text_label + # A second argument of 0 or $0 is always true + bgeu $4,1,text_label + bgeu $4,2,text_label + bgeu $4,0x8000,text_label + bgeu $4,-0x8000,text_label + bgeu $4,0x10000,text_label + bgeu $4,0x1a5a5,text_label + +# bgtu is handled like bgeu, except when both arguments are registers. +# Just sanity check it otherwise. + bgtu $4,$5,text_label + bgtu $4,$0,text_label + bgtu $4,0,text_label + +# Sanity test bgeul and bgtul + .set mips2 + bgeul $4,$5,text_label + bgtul $4,$5,text_label + +# Round to a 16 byte boundary, for ease in testing multiple targets. + nop + nop diff --git a/gas/testsuite/gas/mips/blt.s b/gas/testsuite/gas/mips/blt.s new file mode 100644 index 0000000..0003056 --- /dev/null +++ b/gas/testsuite/gas/mips/blt.s @@ -0,0 +1,31 @@ +# Source file used to test the blt macro. + +text_label: + blt $4,$5,text_label + blt $4,$0,text_label + blt $0,$5,text_label + blt $4,0,text_label + blt $4,1,text_label + blt $4,2,text_label + blt $4,0x8000,text_label + blt $4,-0x8000,text_label + blt $4,0x10000,text_label + blt $4,0x1a5a5,text_label + +# ble is handled like blt, except when both arguments are registers. +# Just sanity check it otherwise. + ble $4,$5,text_label + ble $4,$0,text_label + ble $0,$5,text_label + ble $4,0,text_label + +# Sanity test bltl and blel + .set mips2 + bltl $4,$5,text_label + blel $4,$5,text_label + +# Round to a 16 byte boundary, for ease in testing multiple targets. + nop + nop + nop + nop diff --git a/gas/testsuite/gas/mips/bltu.s b/gas/testsuite/gas/mips/bltu.s new file mode 100644 index 0000000..44b1ae6 --- /dev/null +++ b/gas/testsuite/gas/mips/bltu.s @@ -0,0 +1,27 @@ +# Source file used to test the bltu macro. + +text_label: + bltu $4,$5,text_label + bltu $0,$5,text_label + # A second argument of 0 or $0 is always false + bltu $4,1,text_label + bltu $4,2,text_label + bltu $4,0x8000,text_label + bltu $4,-0x8000,text_label + bltu $4,0x10000,text_label + bltu $4,0x1a5a5,text_label + +# bleu is handled like bltu, except when both arguments are registers. +# Just sanity check it otherwise. + bleu $4,$5,text_label + bleu $4,$0,text_label + bleu $4,0,text_label + +# Sanity test bltul and bleul + .set mips2 + bltul $4,$5,text_label + bleul $4,$5,text_label + +# Round to a 16 byte boundary, for ease in testing multiple targets. + nop + nop diff --git a/gas/testsuite/gas/mips/delay.s b/gas/testsuite/gas/mips/delay.s new file mode 100644 index 0000000..5ee2f00 --- /dev/null +++ b/gas/testsuite/gas/mips/delay.s @@ -0,0 +1,8 @@ +# Source file used to test the abs macro. +foo: + mtc1 $0,$f0 + cvt.d.w $f0,$f0 + mtc1 $0,$f1 + cvt.d.w $f1,$f1 + .space 8 + diff --git a/gas/testsuite/gas/mips/div.s b/gas/testsuite/gas/mips/div.s new file mode 100644 index 0000000..6d99906 --- /dev/null +++ b/gas/testsuite/gas/mips/div.s @@ -0,0 +1,41 @@ +# Source file used to test the div macro. +foo: + div $0,$4,$5 + div $4,$5 + div $4,$5,$6 + div $4,1 + div $4,$5,1 + div $4,-1 + div $4,$5,-1 + div $4,2 + div $4,$5,2 + div $4,0x8000 + div $4,$5,0x8000 + div $4,-0x8000 + div $4,$5,-0x8000 + div $4,0x10000 + div $4,$5,0x10000 + div $4,0x1a5a5 + div $4,$5,0x1a5a5 + +# divu is like div, except when both arguments are registers. +# Just sanity check it otherwise. + divu $0,$4,$5 + divu $4,$5 + divu $4,$5,$6 + divu $4,1 + +# rem is like div, remu is like divu + rem $4,$5,$6 + remu $4,$5,2 + +# Sanity check the 64 bit versions. + .set mips3 + ddiv $4,$5,$6 + ddivu $4,$5,2 + drem $4,$5,0x8000 + dremu $4,$5,-0x8000 + +# force some padding, to make objdump consistently report that there's some +# here... + .space 8 diff --git a/gas/testsuite/gas/mips/dli.s b/gas/testsuite/gas/mips/dli.s new file mode 100644 index 0000000..6579528 --- /dev/null +++ b/gas/testsuite/gas/mips/dli.s @@ -0,0 +1,67 @@ +# Source file used to test the dli macro. + +foo: + dli $4,0 + dli $4,1 + dli $4,-1 + dli $4,0x8000 + dli $4,-0x8000 + dli $4,0x10000 + dli $4,0x1a5a5 + dli $4,0x80001234 + dli $4,0xffffffff + dli $4,0x00000000ffffffff + dli $4,0xffffffffffffffff + dli $4,0x000fffffffffffff + dli $4,0xffffffff80001234 + dli $4,0xffff800012345678 + dli $4,0x8000123456780000 + dli $4,0xffffffffffff8765 + dli $4,0xffffffffffff4321 + + dli $4,0xfffffffffffffff0 + dli $4,0xffffffffffffff00 + dli $4,0xfffffffffffff000 + dli $4,0xffffffffffff0000 + dli $4,0xfffffffffff00000 + dli $4,0xffffffffff000000 + dli $4,0xfffffffff0000000 + dli $4,0xffffffff00000000 + dli $4,0xfffffff000000000 + dli $4,0xffffff0000000000 + dli $4,0xfffff00000000000 + dli $4,0xffff000000000000 + dli $4,0xfff0000000000000 + dli $4,0xff00000000000000 + dli $4,0xf000000000000000 + + dli $4,0x0fffffffffffffff + dli $4,0x00ffffffffffffff + dli $4,0x000fffffffffffff + dli $4,0x0000ffffffffffff + dli $4,0x00000fffffffffff + dli $4,0x000000ffffffffff + dli $4,0x0000000fffffffff + dli $4,0x00000000ffffffff + dli $4,0x000000000fffffff + dli $4,0x0000000000ffffff + dli $4,0x00000000000fffff + dli $4,0x000000000000ffff + dli $4,0x0000000000000fff + dli $4,0x00000000000000ff + dli $4,0x000000000000000f + + dli $4,0x000000000003fffc + dli $4,0x00003fffc0000000 + dli $4,0x0003fffc00000000 + dli $4,0x003fffc000000000 + dli $4,0x003fffffffc00000 + dli $4,0x003ffffffffc0000 + dli $4,0x003fffffffffc000 + + dli $4,0x003ffc03ffffc000 + +# Round to a 16 byte boundary, for ease in testing multiple targets. + nop + nop + nop diff --git a/gas/testsuite/gas/mips/itbl.s b/gas/testsuite/gas/mips/itbl.s new file mode 100644 index 0000000..085545b --- /dev/null +++ b/gas/testsuite/gas/mips/itbl.s @@ -0,0 +1,18 @@ + + ; Test case for assembler option "itbl". + ; Run as "as --itbl itbl itbl.s" + ; or with stand-alone test case "itbl-test itbl itbl.s". + + ; Call mips coprocessor "cofun"s as defined in "itbl". + + fee $d3,$c2,0x1 ; 0x4ff07601 + fie ; 0x4ff00000 + foh $2,0x100 + fum $d3,$c2 ; 0x4ff07601 + pig $2,0x100 + + ; Call a mips coprocessor instruction with register "d1" + ; defined in "itbl". + + LWC1 $d1,0x100($2) + diff --git a/gas/testsuite/gas/mips/jal-svr4pic.s b/gas/testsuite/gas/mips/jal-svr4pic.s new file mode 100644 index 0000000..9d89dfa --- /dev/null +++ b/gas/testsuite/gas/mips/jal-svr4pic.s @@ -0,0 +1,20 @@ +# Source file used to test the jal macro with -KPIC code. + +text_label: + .set noreorder + .cpload $25 + .set reorder + .cprestore 0 + jal $25 + jal $4,$25 + jal text_label + jal external_text_label + +# Test j as well + j text_label + +# Round to a 16 byte boundary, for ease in testing multiple targets. + nop + nop + nop + nop diff --git a/gas/testsuite/gas/mips/jal.s b/gas/testsuite/gas/mips/jal.s new file mode 100644 index 0000000..379be95 --- /dev/null +++ b/gas/testsuite/gas/mips/jal.s @@ -0,0 +1,11 @@ +# Source file used to test the jal macro. + .globl text_label .text +text_label: + jal $25 + jal $4,$25 + jal text_label + jal external_text_label + +# Test j as well + j text_label + j external_text_label diff --git a/gas/testsuite/gas/mips/la-empic.s b/gas/testsuite/gas/mips/la-empic.s new file mode 100644 index 0000000..c6df5e3 --- /dev/null +++ b/gas/testsuite/gas/mips/la-empic.s @@ -0,0 +1,57 @@ +# Source file used to test the la macro with -membedded-pic + + .data +data_label: + .extern big_external_data_label,1000 + .extern small_external_data_label,1 + .comm big_external_common,1000 + .comm small_external_common,1 + .lcomm big_local_common,1000 + .lcomm small_local_common,1 + + .text +text_label: + la $4,0 + la $4,1 + la $4,0x8000 + la $4,-0x8000 + la $4,0x10000 + la $4,0x1a5a5 + la $4,0($5) + la $4,1($5) + la $4,0x8000($5) + la $4,-0x8000($5) + la $4,0x10000($5) + la $4,0x1a5a5($5) + la $4,data_label + la $4,big_external_data_label + la $4,small_external_data_label + la $4,big_external_common + la $4,small_external_common + la $4,big_local_common + la $4,small_local_common + la $4,data_label+1 + la $4,big_external_data_label+1 + la $4,small_external_data_label+1 + la $4,big_external_common+1 + la $4,small_external_common+1 + la $4,big_local_common+1 + la $4,small_local_common+1 + la $4,data_label($5) + la $4,big_external_data_label($5) + la $4,small_external_data_label($5) + la $4,big_external_common($5) + la $4,small_external_common($5) + la $4,big_local_common($5) + la $4,small_local_common($5) + la $4,data_label+1($5) + la $4,big_external_data_label+1($5) + la $4,small_external_data_label+1($5) + la $4,big_external_common+1($5) + la $4,small_external_common+1($5) + la $4,big_local_common+1($5) + la $4,small_local_common+1($5) + +second_text_label: + la $4,external_text_label - text_label + la $4,second_text_label - text_label diff --git a/gas/testsuite/gas/mips/la.s b/gas/testsuite/gas/mips/la.s new file mode 100644 index 0000000..078c811 --- /dev/null +++ b/gas/testsuite/gas/mips/la.s @@ -0,0 +1,114 @@ +# Source file used to test the la macro. + + .data +data_label: + .extern big_external_data_label,1000 + .extern small_external_data_label,1 + .comm big_external_common,1000 + .comm small_external_common,1 + .lcomm big_local_common,1000 + .lcomm small_local_common,1 + + .text + la $4,0 + la $4,1 + la $4,0x8000 + la $4,-0x8000 + la $4,0x10000 + la $4,0x1a5a5 + la $4,0($5) + la $4,1($5) + la $4,0x8000($5) + la $4,-0x8000($5) + la $4,0x10000($5) + la $4,0x1a5a5($5) + la $4,data_label + la $4,big_external_data_label + la $4,small_external_data_label + la $4,big_external_common + la $4,small_external_common + la $4,big_local_common + la $4,small_local_common + la $4,data_label+1 + la $4,big_external_data_label+1 + la $4,small_external_data_label+1 + la $4,big_external_common+1 + la $4,small_external_common+1 + la $4,big_local_common+1 + la $4,small_local_common+1 + la $4,data_label+0x8000 + la $4,big_external_data_label+0x8000 + la $4,small_external_data_label+0x8000 + la $4,big_external_common+0x8000 + la $4,small_external_common+0x8000 + la $4,big_local_common+0x8000 + la $4,small_local_common+0x8000 + la $4,data_label-0x8000 + la $4,big_external_data_label-0x8000 + la $4,small_external_data_label-0x8000 + la $4,big_external_common-0x8000 + la $4,small_external_common-0x8000 + la $4,big_local_common-0x8000 + la $4,small_local_common-0x8000 + la $4,data_label+0x10000 + la $4,big_external_data_label+0x10000 + la $4,small_external_data_label+0x10000 + la $4,big_external_common+0x10000 + la $4,small_external_common+0x10000 + la $4,big_local_common+0x10000 + la $4,small_local_common+0x10000 + la $4,data_label+0x1a5a5 + la $4,big_external_data_label+0x1a5a5 + la $4,small_external_data_label+0x1a5a5 + la $4,big_external_common+0x1a5a5 + la $4,small_external_common+0x1a5a5 + la $4,big_local_common+0x1a5a5 + la $4,small_local_common+0x1a5a5 + la $4,data_label($5) + la $4,big_external_data_label($5) + la $4,small_external_data_label($5) + la $4,big_external_common($5) + la $4,small_external_common($5) + la $4,big_local_common($5) + la $4,small_local_common($5) + la $4,data_label+1($5) + la $4,big_external_data_label+1($5) + la $4,small_external_data_label+1($5) + la $4,big_external_common+1($5) + la $4,small_external_common+1($5) + la $4,big_local_common+1($5) + la $4,small_local_common+1($5) + la $4,data_label+0x8000($5) + la $4,big_external_data_label+0x8000($5) + la $4,small_external_data_label+0x8000($5) + la $4,big_external_common+0x8000($5) + la $4,small_external_common+0x8000($5) + la $4,big_local_common+0x8000($5) + la $4,small_local_common+0x8000($5) + la $4,data_label-0x8000($5) + la $4,big_external_data_label-0x8000($5) + la $4,small_external_data_label-0x8000($5) + la $4,big_external_common-0x8000($5) + la $4,small_external_common-0x8000($5) + la $4,big_local_common-0x8000($5) + la $4,small_local_common-0x8000($5) + la $4,data_label+0x10000($5) + la $4,big_external_data_label+0x10000($5) + la $4,small_external_data_label+0x10000($5) + la $4,big_external_common+0x10000($5) + la $4,small_external_common+0x10000($5) + la $4,big_local_common+0x10000($5) + la $4,small_local_common+0x10000($5) + la $4,data_label+0x1a5a5($5) + la $4,big_external_data_label+0x1a5a5($5) + la $4,small_external_data_label+0x1a5a5($5) + la $4,big_external_common+0x1a5a5($5) + la $4,small_external_common+0x1a5a5($5) + la $4,big_local_common+0x1a5a5($5) + la $4,small_local_common+0x1a5a5($5) + + .ifndef KPIC +# Round to a 16 byte boundary, for ease in testing multiple targets. + nop + nop + .endif diff --git a/gas/testsuite/gas/mips/lb-pic.s b/gas/testsuite/gas/mips/lb-pic.s new file mode 100644 index 0000000..f2cfdf9 --- /dev/null +++ b/gas/testsuite/gas/mips/lb-pic.s @@ -0,0 +1,55 @@ +# Source file used to test the lb macro with PIC code. + + .data +data_label: + .extern big_external_data_label,1000 + .extern small_external_data_label,1 + .comm big_external_common,1000 + .comm small_external_common,1 + .lcomm big_local_common,1000 + .lcomm small_local_common,1 + + .text + lb $4,0 + lb $4,1 + lb $4,0x8000 + lb $4,-0x8000 + lb $4,0x10000 + lb $4,0x1a5a5 + lb $4,0($5) + lb $4,1($5) + lb $4,0x8000($5) + lb $4,-0x8000($5) + lb $4,0x10000($5) + lb $4,0x1a5a5($5) + lb $4,data_label + lb $4,big_external_data_label + lb $4,small_external_data_label + lb $4,big_external_common + lb $4,small_external_common + lb $4,big_local_common + lb $4,small_local_common + lb $4,data_label+1 + lb $4,big_external_data_label+1 + lb $4,small_external_data_label+1 + lb $4,big_external_common+1 + lb $4,small_external_common+1 + lb $4,big_local_common+1 + lb $4,small_local_common+1 + lb $4,data_label($5) + lb $4,big_external_data_label($5) + lb $4,small_external_data_label($5) + lb $4,big_external_common($5) + lb $4,small_external_common($5) + lb $4,big_local_common($5) + lb $4,small_local_common($5) + lb $4,data_label+1($5) + lb $4,big_external_data_label+1($5) + lb $4,small_external_data_label+1($5) + lb $4,big_external_common+1($5) + lb $4,small_external_common+1($5) + lb $4,big_local_common+1($5) + lb $4,small_local_common+1($5) + +# Round to a 16 byte boundary, for ease in testing multiple targets. + nop diff --git a/gas/testsuite/gas/mips/lb.s b/gas/testsuite/gas/mips/lb.s new file mode 100644 index 0000000..303ccaf --- /dev/null +++ b/gas/testsuite/gas/mips/lb.s @@ -0,0 +1,125 @@ +# Source file used to test the lb macro. + + .data +data_label: + .extern big_external_data_label,1000 + .extern small_external_data_label,1 + .comm big_external_common,1000 + .comm small_external_common,1 + .lcomm big_local_common,1000 + .lcomm small_local_common,1 + + .text + lb $4,0 + lb $4,1 + lb $4,0x8000 + lb $4,-0x8000 + lb $4,0x10000 + lb $4,0x1a5a5 + lb $4,0($5) + lb $4,1($5) + lb $4,0x8000($5) + lb $4,-0x8000($5) + lb $4,0x10000($5) + lb $4,0x1a5a5($5) + lb $4,data_label + lb $4,big_external_data_label + lb $4,small_external_data_label + lb $4,big_external_common + lb $4,small_external_common + lb $4,big_local_common + lb $4,small_local_common + lb $4,data_label+1 + lb $4,big_external_data_label+1 + lb $4,small_external_data_label+1 + lb $4,big_external_common+1 + lb $4,small_external_common+1 + lb $4,big_local_common+1 + lb $4,small_local_common+1 + lb $4,data_label+0x8000 + lb $4,big_external_data_label+0x8000 + lb $4,small_external_data_label+0x8000 + lb $4,big_external_common+0x8000 + lb $4,small_external_common+0x8000 + lb $4,big_local_common+0x8000 + lb $4,small_local_common+0x8000 + lb $4,data_label-0x8000 + lb $4,big_external_data_label-0x8000 + lb $4,small_external_data_label-0x8000 + lb $4,big_external_common-0x8000 + lb $4,small_external_common-0x8000 + lb $4,big_local_common-0x8000 + lb $4,small_local_common-0x8000 + lb $4,data_label+0x10000 + lb $4,big_external_data_label+0x10000 + lb $4,small_external_data_label+0x10000 + lb $4,big_external_common+0x10000 + lb $4,small_external_common+0x10000 + lb $4,big_local_common+0x10000 + lb $4,small_local_common+0x10000 + lb $4,data_label+0x1a5a5 + lb $4,big_external_data_label+0x1a5a5 + lb $4,small_external_data_label+0x1a5a5 + lb $4,big_external_common+0x1a5a5 + lb $4,small_external_common+0x1a5a5 + lb $4,big_local_common+0x1a5a5 + lb $4,small_local_common+0x1a5a5 + lb $4,data_label($5) + lb $4,big_external_data_label($5) + lb $4,small_external_data_label($5) + lb $4,big_external_common($5) + lb $4,small_external_common($5) + lb $4,big_local_common($5) + lb $4,small_local_common($5) + lb $4,data_label+1($5) + lb $4,big_external_data_label+1($5) + lb $4,small_external_data_label+1($5) + lb $4,big_external_common+1($5) + lb $4,small_external_common+1($5) + lb $4,big_local_common+1($5) + lb $4,small_local_common+1($5) + lb $4,data_label+0x8000($5) + lb $4,big_external_data_label+0x8000($5) + lb $4,small_external_data_label+0x8000($5) + lb $4,big_external_common+0x8000($5) + lb $4,small_external_common+0x8000($5) + lb $4,big_local_common+0x8000($5) + lb $4,small_local_common+0x8000($5) + lb $4,data_label-0x8000($5) + lb $4,big_external_data_label-0x8000($5) + lb $4,small_external_data_label-0x8000($5) + lb $4,big_external_common-0x8000($5) + lb $4,small_external_common-0x8000($5) + lb $4,big_local_common-0x8000($5) + lb $4,small_local_common-0x8000($5) + lb $4,data_label+0x10000($5) + lb $4,big_external_data_label+0x10000($5) + lb $4,small_external_data_label+0x10000($5) + lb $4,big_external_common+0x10000($5) + lb $4,small_external_common+0x10000($5) + lb $4,big_local_common+0x10000($5) + lb $4,small_local_common+0x10000($5) + lb $4,data_label+0x1a5a5($5) + lb $4,big_external_data_label+0x1a5a5($5) + lb $4,small_external_data_label+0x1a5a5($5) + lb $4,big_external_common+0x1a5a5($5) + lb $4,small_external_common+0x1a5a5($5) + lb $4,big_local_common+0x1a5a5($5) + lb $4,small_local_common+0x1a5a5($5) + +# Several macros are handled like lb. Sanity check them. + lbu $4,0 + lh $4,0 + lhu $4,0 + lw $4,0 + lwl $4,0 + lwr $4,0 + lwc0 $4,0 + lwc1 $4,0 + lwc2 $4,0 + lwc3 $4,0 + +# Round to a 16 byte boundary, for ease in testing multiple targets. + nop + nop + nop diff --git a/gas/testsuite/gas/mips/ld-pic.s b/gas/testsuite/gas/mips/ld-pic.s new file mode 100644 index 0000000..ccf52df --- /dev/null +++ b/gas/testsuite/gas/mips/ld-pic.s @@ -0,0 +1,60 @@ +# Source file used to test the ld macro with PIC code. + + .set mips1 + + .data +data_label: + .extern big_external_data_label,1000 + .extern small_external_data_label,1 + .comm big_external_common,1000 + .comm small_external_common,1 + .lcomm big_local_common,1000 + .lcomm small_local_common,1 + + .text + ld $4,0 + ld $4,1 + ld $4,0x8000 + ld $4,-0x8000 + ld $4,0x10000 + ld $4,0x1a5a5 + ld $4,0($5) + ld $4,1($5) + ld $4,0x8000($5) + ld $4,-0x8000($5) + ld $4,0x10000($5) + ld $4,0x1a5a5($5) + ld $4,data_label + ld $4,big_external_data_label + ld $4,small_external_data_label + ld $4,big_external_common + ld $4,small_external_common + ld $4,big_local_common + ld $4,small_local_common + ld $4,data_label+1 + ld $4,big_external_data_label+1 + ld $4,small_external_data_label+1 + ld $4,big_external_common+1 + ld $4,small_external_common+1 + ld $4,big_local_common+1 + ld $4,small_local_common+1 + ld $4,data_label($5) + ld $4,big_external_data_label($5) + ld $4,small_external_data_label($5) + ld $4,big_external_common($5) + ld $4,small_external_common($5) + ld $4,big_local_common($5) + ld $4,small_local_common($5) + ld $4,data_label+1($5) + ld $4,big_external_data_label+1($5) + ld $4,small_external_data_label+1($5) + ld $4,big_external_common+1($5) + ld $4,small_external_common+1($5) + ld $4,big_local_common+1($5) + ld $4,small_local_common+1($5) + +# Round to a 16 byte boundary, for ease in testing multiple targets. + .ifndef EMPIC + nop + nop + .endif diff --git a/gas/testsuite/gas/mips/ld.s b/gas/testsuite/gas/mips/ld.s new file mode 100644 index 0000000..05ee3c0 --- /dev/null +++ b/gas/testsuite/gas/mips/ld.s @@ -0,0 +1,144 @@ +# Source file used to test the ld macro. + + .set mips1 + + .data +data_label: + .extern big_external_data_label,1000 + .extern small_external_data_label,1 + .comm big_external_common,1000 + .comm small_external_common,1 + .lcomm big_local_common,1000 + .lcomm small_local_common,1 + + .text + ld $4,0 + ld $4,1 + ld $4,0x8000 + ld $4,-0x8000 + ld $4,0x10000 + ld $4,0x1a5a5 + ld $4,0($5) + ld $4,1($5) + ld $4,0x8000($5) + ld $4,-0x8000($5) + ld $4,0x10000($5) + ld $4,0x1a5a5($5) + ld $4,data_label + ld $4,big_external_data_label + ld $4,small_external_data_label + ld $4,big_external_common + ld $4,small_external_common + ld $4,big_local_common + ld $4,small_local_common + ld $4,data_label+1 + ld $4,big_external_data_label+1 + ld $4,small_external_data_label+1 + ld $4,big_external_common+1 + ld $4,small_external_common+1 + ld $4,big_local_common+1 + ld $4,small_local_common+1 + ld $4,data_label+0x8000 + ld $4,big_external_data_label+0x8000 + ld $4,small_external_data_label+0x8000 + ld $4,big_external_common+0x8000 + ld $4,small_external_common+0x8000 + ld $4,big_local_common+0x8000 + ld $4,small_local_common+0x8000 + ld $4,data_label-0x8000 + ld $4,big_external_data_label-0x8000 + ld $4,small_external_data_label-0x8000 + ld $4,big_external_common-0x8000 + ld $4,small_external_common-0x8000 + ld $4,big_local_common-0x8000 + ld $4,small_local_common-0x8000 + ld $4,data_label+0x10000 + ld $4,big_external_data_label+0x10000 + ld $4,small_external_data_label+0x10000 + ld $4,big_external_common+0x10000 + ld $4,small_external_common+0x10000 + ld $4,big_local_common+0x10000 + ld $4,small_local_common+0x10000 + ld $4,data_label+0x1a5a5 + ld $4,big_external_data_label+0x1a5a5 + ld $4,small_external_data_label+0x1a5a5 + ld $4,big_external_common+0x1a5a5 + ld $4,small_external_common+0x1a5a5 + ld $4,big_local_common+0x1a5a5 + ld $4,small_local_common+0x1a5a5 + ld $4,data_label($5) + ld $4,big_external_data_label($5) + ld $4,small_external_data_label($5) + ld $4,big_external_common($5) + ld $4,small_external_common($5) + ld $4,big_local_common($5) + ld $4,small_local_common($5) + ld $4,data_label+1($5) + ld $4,big_external_data_label+1($5) + ld $4,small_external_data_label+1($5) + ld $4,big_external_common+1($5) + ld $4,small_external_common+1($5) + ld $4,big_local_common+1($5) + ld $4,small_local_common+1($5) + ld $4,data_label+0x8000($5) + ld $4,big_external_data_label+0x8000($5) + ld $4,small_external_data_label+0x8000($5) + ld $4,big_external_common+0x8000($5) + ld $4,small_external_common+0x8000($5) + ld $4,big_local_common+0x8000($5) + ld $4,small_local_common+0x8000($5) + ld $4,data_label-0x8000($5) + ld $4,big_external_data_label-0x8000($5) + ld $4,small_external_data_label-0x8000($5) + ld $4,big_external_common-0x8000($5) + ld $4,small_external_common-0x8000($5) + ld $4,big_local_common-0x8000($5) + ld $4,small_local_common-0x8000($5) + ld $4,data_label+0x10000($5) + ld $4,big_external_data_label+0x10000($5) + ld $4,small_external_data_label+0x10000($5) + ld $4,big_external_common+0x10000($5) + ld $4,small_external_common+0x10000($5) + ld $4,big_local_common+0x10000($5) + ld $4,small_local_common+0x10000($5) + ld $4,data_label+0x1a5a5($5) + ld $4,big_external_data_label+0x1a5a5($5) + ld $4,small_external_data_label+0x1a5a5($5) + ld $4,big_external_common+0x1a5a5($5) + ld $4,small_external_common+0x1a5a5($5) + ld $4,big_local_common+0x1a5a5($5) + ld $4,small_local_common+0x1a5a5($5) + +# l.d and s.d are sort of like ld. + l.d $f4,0 + l.d $f4,1 + l.d $f4,0x8000 + l.d $f4,-0x8000 + l.d $f4,0($5) + l.d $f4,1($5) + l.d $f4,0x8000($5) + l.d $f4,-0x8000($5) + l.d $f4,small_external_common+0x1a5a5($5) + # Little endian will insert a nop here. + # We put it in explicitly so that big and little endian are similar. + nop + s.d $f4,0 + s.d $f4,1 + s.d $f4,0x8000 + s.d $f4,-0x8000 + s.d $f4,0($5) + s.d $f4,1($5) + s.d $f4,0x8000($5) + s.d $f4,-0x8000($5) + s.d $f4,big_external_common+0x1a5a5($5) + +# sd is handled like ld. Sanity check it. + sd $4,0 + +# Sanity check the -mips3 versions + .set mips3 + ld $4,big_local_common+0x1a5a5($5) + sd $4,small_local_common+0x1a5a5($5) + +# Round to a 16 byte boundary, for ease in testing multiple targets. + nop diff --git a/gas/testsuite/gas/mips/li.s b/gas/testsuite/gas/mips/li.s new file mode 100644 index 0000000..9c3a601 --- /dev/null +++ b/gas/testsuite/gas/mips/li.s @@ -0,0 +1,12 @@ +# Source file used to test the li macro. + +foo: + li $4,0 + li $4,1 + li $4,0x8000 + li $4,-0x8000 + li $4,0x10000 + li $4,0x1a5a5 + +# Round to a 16 byte boundary, for ease in testing multiple targets. + nop diff --git a/gas/testsuite/gas/mips/lifloat.s b/gas/testsuite/gas/mips/lifloat.s new file mode 100644 index 0000000..3977f0e --- /dev/null +++ b/gas/testsuite/gas/mips/lifloat.s @@ -0,0 +1,24 @@ +# Source file used to test the li.d and li.s macros. + +foo: + li.d $4,1.12345 + li.d $f4,1.12345 + + li.s $4,1.12345 + li.s $f4,1.12345 + +# Round to a 16 byte boundary, for ease in testing multiple targets. + .ifdef SVR4 + nop + nop + nop + .endif + .ifdef XGOT + nop + nop + nop + .endif + .ifdef EMPIC + nop + nop + .endif diff --git a/gas/testsuite/gas/mips/mips16.s b/gas/testsuite/gas/mips/mips16.s new file mode 100644 index 0000000..6268fb1 --- /dev/null +++ b/gas/testsuite/gas/mips/mips16.s @@ -0,0 +1,258 @@ +# Test the mips16 instruction set. + + .set mips16 + + .macro ldst op, reg, base + \op \reg,0(\base) + \op \reg,1(\base) + \op \reg,2(\base) + \op \reg,3(\base) + \op \reg,4(\base) + \op \reg,8(\base) + \op \reg,16(\base) + \op \reg,32(\base) + \op \reg,64(\base) + \op \reg,128(\base) + \op \reg,256(\base) + \op \reg,512(\base) + \op \reg,1024(\base) + \op \reg,2048(\base) + \op \reg,-1(\base) + \op \reg,-2(\base) + \op \reg,-3(\base) + \op \reg,-4(\base) + \op \reg,-8(\base) + \op \reg,-16(\base) + \op \reg,-32(\base) + \op \reg,-64(\base) + \op \reg,-128(\base) + \op \reg,-256(\base) + \op \reg,-512(\base) + \op \reg,-1024(\base) + \op \reg,-2048(\base) + .endm + + .p2align 3 +data1: + .word 0 +insns1: + ldst ld, $2, $3 + ld $2,data1 + ld $2,data2 + ld $2,bar + ld $2,quux + ldst ld, $2, $sp + ldst lwu, $2, $3 + ldst lw, $2, $3 + lw $2,data1 + lw $2,data2 + lw $2,bar + lw $2,quux + ldst lw, $2, $sp + ldst lh, $2, $3 + ldst lhu, $2, $3 + ldst lb, $2, $3 + ldst lbu, $2, $3 + ldst sd, $2, $3 + ldst sd, $2, $sp + ldst sd, $31, $sp + ldst sw, $2, $3 + ldst sw, $2, $sp + ldst sw, $31, $sp + ldst sh, $2, $3 + ldst sb, $2, $3 + + li $2,0 + li $2,1 + li $2,256 + + move $2,$30 + move $20,$2 + + daddu $2,$3,0 + daddu $2,$3,1 + daddu $2,$3,-1 + daddu $2,$3,16 + daddu $2,$3,-16 + daddu $2,$3,$4 + daddu $2,0 + daddu $2,1 + daddu $2,-1 + daddu $2,32 + daddu $2,-32 + daddu $2,128 + daddu $2,-128 + dla $2,data1 + dla $2,data2 + dla $2,bar + dla $2,quux + daddu $sp,0 + daddu $sp,1 + daddu $sp,-1 + daddu $sp,256 + daddu $sp,-256 + daddu $2,$sp,0 + daddu $2,$sp,1 + daddu $2,$sp,-1 + daddu $2,$sp,32 + daddu $2,$sp,-32 + daddu $2,$sp,128 + daddu $2,$sp,-128 + + addu $2,$3,0 + addu $2,$3,1 + addu $2,$3,-1 + addu $2,$3,16 + addu $2,$3,-16 + addu $2,$3,$4 + addu $2,0 + addu $2,1 + addu $2,-1 + addu $2,32 + addu $2,-32 + addu $2,128 + addu $2,-128 + la $2,data1 + la $2,data2 + la $2,bar + la $2,quux + addu $sp,0 + addu $sp,1 + addu $sp,-1 + addu $sp,256 + addu $sp,-256 + addu $2,$sp,0 + addu $2,$sp,1 + addu $2,$sp,-1 + addu $2,$sp,32 + addu $2,$sp,-32 + addu $2,$sp,128 + addu $2,$sp,-128 + +data2: + .word 0 +insns2: + dsubu $2,$3,$4 + subu $2,$3,$4 + neg $2,$3 + + and $2,$3 + or $2,$3 + xor $2,$3 + not $2,$3 + + slt $2,0 + slt $2,1 + slt $2,-1 + slt $2,255 + slt $2,256 + slt $2,$3 + sltu $2,0 + sltu $2,1 + sltu $2,-1 + sltu $2,255 + sltu $2,256 + sltu $2,$3 + cmp $2,0 + cmp $2,1 + cmp $2,255 + cmp $2,256 + cmp $2,$3 + + dsll $2,$3,0 + dsll $2,$3,1 + dsll $2,$3,8 + dsll $2,$3,9 + dsll $2,$3,63 + dsll $2,$3 + dsrl $2,0 + dsrl $2,1 + dsrl $2,8 + dsrl $2,9 + dsrl $2,63 + dsrl $2,$3 + dsra $2,0 + dsra $2,1 + dsra $2,8 + dsra $2,9 + dsra $2,63 + dsra $2,$3 + + mflo $2 + mfhi $3 + + sll $2,$3,0 + sll $2,$3,1 + sll $2,$3,8 + sll $2,$3,9 + sll $2,$3,31 + sll $2,$3 + srl $2,$3,0 + srl $2,$3,1 + srl $2,$3,8 + srl $2,$3,9 + srl $2,$3,31 + srl $2,$3 + sra $2,$3,0 + sra $2,$3,1 + sra $2,$3,8 + sra $2,$3,9 + sra $2,$3,31 + sra $2,$3 + + dmult $2,$3 + dmultu $2,$3 + ddiv $2,$3 + ddivu $2,$3 + + mult $2,$3 + multu $2,$3 + div $2,$3 + divu $2,$3 + + jr $2 + jr $31 + jalr $31,$2 + + beqz $2,insns1 + beqz $2,insns2 + beqz $2,bar + beqz $2,quux + bnez $2,insns1 + bnez $2,insns2 + bnez $2,bar + bnez $2,quux + bteqz insns1 + bteqz insns2 + bteqz bar + bteqz quux + btnez insns1 + btnez insns2 + btnez bar + btnez quux + b insns1 + b insns2 + b bar + b quux + + break 0 + break 1 + break 63 + + jal extern + + entry + entry $4 + entry $4-$6,$16 + entry $16-$17,$31 + entry $31 + exit + exit $16 + exit $16-$17,$31 + exit $31 + + .p2align 3 +bar: + + .skip 200 +quux: diff --git a/gas/testsuite/gas/mips/mips4.s b/gas/testsuite/gas/mips/mips4.s new file mode 100644 index 0000000..bf8b943 --- /dev/null +++ b/gas/testsuite/gas/mips/mips4.s @@ -0,0 +1,52 @@ +# Source file used to test -mips4 instructions. + +text_label: + bc1f text_label + bc1f $fcc1,text_label + bc1fl $fcc1,text_label + bc1t $fcc1,text_label + bc1tl $fcc2,text_label + c.f.d $f4,$f6 + c.f.d $fcc1,$f4,$f6 + ldxc1 $f2,$4($5) + lwxc1 $f2,$4($5) + madd.d $f0,$f2,$f4,$f6 + madd.s $f0,$f2,$f4,$f6 + movf $4,$5,$fcc4 + movf.d $f4,$f6,$fcc0 + movf.s $f4,$f6,$fcc0 + movn $4,$6,$6 + movn.d $f4,$f5,$6 + movn.s $f4,$f5,$6 + movt $4,$5,$fcc4 + movt.d $f4,$f6,$fcc0 + movt.s $f4,$f6,$fcc0 + movz $4,$6,$6 + movz.d $f4,$f5,$6 + movz.s $f4,$f5,$6 + msub.d $f0,$f2,$f4,$f6 + msub.s $f0,$f2,$f4,$f6 + nmadd.d $f0,$f2,$f4,$f6 + nmadd.s $f0,$f2,$f4,$f6 + nmsub.d $f0,$f2,$f4,$f6 + nmsub.s $f0,$f2,$f4,$f6 + + # We don't test pref because currently the disassembler will + # disassemble it as lwc3. lwc3 is correct for mips1 to mips3, + # while pref is correct for mips4. Unfortunately, the + # disassembler does not know which architecture it is + # disassembling for. + # pref 4,0($4) + + prefx 4,$4($5) + recip.d $f4,$f6 + recip.s $f4,$f6 + rsqrt.d $f4,$f6 + rsqrt.s $f4,$f6 + sdxc1 $f4,$4($5) + swxc1 $f4,$4($5) + +# Round to a 16 byte boundary, for ease in testing multiple targets. + nop + nop + nop diff --git a/gas/testsuite/gas/mips/mips4010.s b/gas/testsuite/gas/mips/mips4010.s new file mode 100644 index 0000000..e8d6e25 --- /dev/null +++ b/gas/testsuite/gas/mips/mips4010.s @@ -0,0 +1,20 @@ + .text + +stuff: + .ent stuff + flushi + flushd + flushid + madd $4,$5 + maddu $5,$6 + ffc $6,$7 + ffs $7,$8 + msub $8,$9 + msubu $9,$10 + selsl $10,$11,$12 + selsr $11,$12,$13 + waiti + wb 16($14) + addciu $14,$15,16 + nop + nop diff --git a/gas/testsuite/gas/mips/mips4100.s b/gas/testsuite/gas/mips/mips4100.s new file mode 100644 index 0000000..ca20e0e --- /dev/null +++ b/gas/testsuite/gas/mips/mips4100.s @@ -0,0 +1,10 @@ + .text + +stuff: + .ent stuff + dmadd16 $4,$5 + madd16 $5,$6 + hibernate + standby + suspend + nop diff --git a/gas/testsuite/gas/mips/mips4650.s b/gas/testsuite/gas/mips/mips4650.s new file mode 100644 index 0000000..52c22a1 --- /dev/null +++ b/gas/testsuite/gas/mips/mips4650.s @@ -0,0 +1,8 @@ + .text + +stuff: + .ent stuff + mad $4,$5 + madu $5,$6 + mul $6,$7,$8 + nop diff --git a/gas/testsuite/gas/mips/mul.s b/gas/testsuite/gas/mips/mul.s new file mode 100644 index 0000000..b29e369 --- /dev/null +++ b/gas/testsuite/gas/mips/mul.s @@ -0,0 +1,27 @@ +# Source file used to test the mul macro. + +foo: + mul $4,$5 + mul $4,$5,$6 + mul $4,$5,0 + mul $4,$5,1 + mul $4,$5,0x8000 + mul $4,$5,-0x8000 + mul $4,$5,0x10000 + mul $4,$5,0x1a5a5 + +# mulo and mulou are only supported for register arguments + mulo $4,$5 + mulo $4,$5,$6 + + mulou $4,$5 + mulou $4,$5,$6 + +# Sanity check the 64 bit versions. + .set mips3 + dmul $4,$5,$6 + dmul $4,$5,1 + dmulo $4,$5,$6 + dmulou $4,$5,$6 + + .space 8 diff --git a/gas/testsuite/gas/mips/rol.s b/gas/testsuite/gas/mips/rol.s new file mode 100644 index 0000000..259a957 --- /dev/null +++ b/gas/testsuite/gas/mips/rol.s @@ -0,0 +1,12 @@ +# Source file used to test the rol and ror macros. + +foo: + rol $4,$5 + rol $4,$5,$6 + rol $4,1 + rol $4,$5,1 + + ror $4,$5 + ror $4,$5,$6 + ror $4,1 + ror $4,$5,1 diff --git a/gas/testsuite/gas/mips/sb.s b/gas/testsuite/gas/mips/sb.s new file mode 100644 index 0000000..d0c7354 --- /dev/null +++ b/gas/testsuite/gas/mips/sb.s @@ -0,0 +1,124 @@ +# Source file used to test the sb macro. + + .data +data_label: + .extern big_external_data_label,1000 + .extern small_external_data_label,1 + .comm big_external_common,1000 + .comm small_external_common,1 + .lcomm big_local_common,1000 + .lcomm small_local_common,1 + + .text + sb $4,0 + sb $4,1 + sb $4,0x8000 + sb $4,-0x8000 + sb $4,0x10000 + sb $4,0x1a5a5 + sb $4,0($5) + sb $4,1($5) + sb $4,0x8000($5) + sb $4,-0x8000($5) + sb $4,0x10000($5) + sb $4,0x1a5a5($5) + sb $4,data_label + sb $4,big_external_data_label + sb $4,small_external_data_label + sb $4,big_external_common + sb $4,small_external_common + sb $4,big_local_common + sb $4,small_local_common + sb $4,data_label+1 + sb $4,big_external_data_label+1 + sb $4,small_external_data_label+1 + sb $4,big_external_common+1 + sb $4,small_external_common+1 + sb $4,big_local_common+1 + sb $4,small_local_common+1 + sb $4,data_label+0x8000 + sb $4,big_external_data_label+0x8000 + sb $4,small_external_data_label+0x8000 + sb $4,big_external_common+0x8000 + sb $4,small_external_common+0x8000 + sb $4,big_local_common+0x8000 + sb $4,small_local_common+0x8000 + sb $4,data_label-0x8000 + sb $4,big_external_data_label-0x8000 + sb $4,small_external_data_label-0x8000 + sb $4,big_external_common-0x8000 + sb $4,small_external_common-0x8000 + sb $4,big_local_common-0x8000 + sb $4,small_local_common-0x8000 + sb $4,data_label+0x10000 + sb $4,big_external_data_label+0x10000 + sb $4,small_external_data_label+0x10000 + sb $4,big_external_common+0x10000 + sb $4,small_external_common+0x10000 + sb $4,big_local_common+0x10000 + sb $4,small_local_common+0x10000 + sb $4,data_label+0x1a5a5 + sb $4,big_external_data_label+0x1a5a5 + sb $4,small_external_data_label+0x1a5a5 + sb $4,big_external_common+0x1a5a5 + sb $4,small_external_common+0x1a5a5 + sb $4,big_local_common+0x1a5a5 + sb $4,small_local_common+0x1a5a5 + sb $4,data_label($5) + sb $4,big_external_data_label($5) + sb $4,small_external_data_label($5) + sb $4,big_external_common($5) + sb $4,small_external_common($5) + sb $4,big_local_common($5) + sb $4,small_local_common($5) + sb $4,data_label+1($5) + sb $4,big_external_data_label+1($5) + sb $4,small_external_data_label+1($5) + sb $4,big_external_common+1($5) + sb $4,small_external_common+1($5) + sb $4,big_local_common+1($5) + sb $4,small_local_common+1($5) + sb $4,data_label+0x8000($5) + sb $4,big_external_data_label+0x8000($5) + sb $4,small_external_data_label+0x8000($5) + sb $4,big_external_common+0x8000($5) + sb $4,small_external_common+0x8000($5) + sb $4,big_local_common+0x8000($5) + sb $4,small_local_common+0x8000($5) + sb $4,data_label-0x8000($5) + sb $4,big_external_data_label-0x8000($5) + sb $4,small_external_data_label-0x8000($5) + sb $4,big_external_common-0x8000($5) + sb $4,small_external_common-0x8000($5) + sb $4,big_local_common-0x8000($5) + sb $4,small_local_common-0x8000($5) + sb $4,data_label+0x10000($5) + sb $4,big_external_data_label+0x10000($5) + sb $4,small_external_data_label+0x10000($5) + sb $4,big_external_common+0x10000($5) + sb $4,small_external_common+0x10000($5) + sb $4,big_local_common+0x10000($5) + sb $4,small_local_common+0x10000($5) + sb $4,data_label+0x1a5a5($5) + sb $4,big_external_data_label+0x1a5a5($5) + sb $4,small_external_data_label+0x1a5a5($5) + sb $4,big_external_common+0x1a5a5($5) + sb $4,small_external_common+0x1a5a5($5) + sb $4,big_local_common+0x1a5a5($5) + sb $4,small_local_common+0x1a5a5($5) + +# Several macros are handled like sb. Sanity check them. + sd $4,0 + sh $4,0 + sw $4,0 + swc0 $4,0 + swc1 $4,0 + swc2 $4,0 + swc3 $4,0 + s.s $f4,0 + swl $4,0 + swr $4,0 + +# Round to a 16 byte boundary, for ease in testing multiple targets. + nop + nop diff --git a/gas/testsuite/gas/mips/trunc.s b/gas/testsuite/gas/mips/trunc.s new file mode 100644 index 0000000..e1e90f1 --- /dev/null +++ b/gas/testsuite/gas/mips/trunc.s @@ -0,0 +1,6 @@ +# Source file used to test the trunc macros. + +foo: + trunc.w.d $f4,$f6,$4 + + trunc.w.s $f4,$f6,$4 diff --git a/gas/testsuite/gas/mips/uld.s b/gas/testsuite/gas/mips/uld.s new file mode 100644 index 0000000..9eaffbc --- /dev/null +++ b/gas/testsuite/gas/mips/uld.s @@ -0,0 +1,66 @@ +# Source file used to test the uld macro. + + .data +data_label: + .extern big_external_data_label,1000 + .extern small_external_data_label,1 + .comm big_external_common,1000 + .comm small_external_common,1 + .lcomm big_local_common,1000 + .lcomm small_local_common,1 + + .text + uld $4,0 + uld $4,1 + uld $4,0x8000 + uld $4,-0x8000 + uld $4,0x10000 + uld $4,0x1a5a5 + uld $4,0($5) + uld $4,1($5) + uld $4,data_label + uld $4,big_external_data_label + uld $4,small_external_data_label + uld $4,big_external_common + uld $4,small_external_common + uld $4,big_local_common + uld $4,small_local_common + uld $4,data_label+1 + uld $4,big_external_data_label+1 + uld $4,small_external_data_label+1 + uld $4,big_external_common+1 + uld $4,small_external_common+1 + uld $4,big_local_common+1 + uld $4,small_local_common+1 + uld $4,data_label+0x8000 + uld $4,big_external_data_label+0x8000 + uld $4,small_external_data_label+0x8000 + uld $4,big_external_common+0x8000 + uld $4,small_external_common+0x8000 + uld $4,big_local_common+0x8000 + uld $4,small_local_common+0x8000 + uld $4,data_label-0x8000 + uld $4,big_external_data_label-0x8000 + uld $4,small_external_data_label-0x8000 + uld $4,big_external_common-0x8000 + uld $4,small_external_common-0x8000 + uld $4,big_local_common-0x8000 + uld $4,small_local_common-0x8000 + uld $4,data_label+0x10000 + uld $4,big_external_data_label+0x10000 + uld $4,small_external_data_label+0x10000 + uld $4,big_external_common+0x10000 + uld $4,small_external_common+0x10000 + uld $4,big_local_common+0x10000 + uld $4,small_local_common+0x10000 + uld $4,data_label+0x1a5a5 + uld $4,big_external_data_label+0x1a5a5 + uld $4,small_external_data_label+0x1a5a5 + uld $4,big_external_common+0x1a5a5 + uld $4,small_external_common+0x1a5a5 + uld $4,big_local_common+0x1a5a5 + uld $4,small_local_common+0x1a5a5 + +# Round to a 16 byte boundary, for ease in testing multiple targets. + nop + nop diff --git a/gas/testsuite/gas/mips/ulh-pic.s b/gas/testsuite/gas/mips/ulh-pic.s new file mode 100644 index 0000000..633b29c --- /dev/null +++ b/gas/testsuite/gas/mips/ulh-pic.s @@ -0,0 +1,36 @@ +# Test unaligned load and store macros with PIC code. We don't bother +# to test most cases. The actual loads and stores are tested by the +# non-PIC test case. We just want to check that the initial address +# is loaded correctly. + + .data +data_label: + .extern big_external_data_label,1000 + .extern small_external_data_label,1 + .comm big_external_common,1000 + .comm small_external_common,1 + .lcomm big_local_common,1000 + .lcomm small_local_common,1 + + .text + ulh $4,data_label + ulhu $4,big_external_data_label + ulw $4,small_external_data_label + ush $4,big_external_common + usw $4,small_external_common + ulh $4,big_local_common + ulhu $4,small_local_common + ulw $4,data_label+1 + ush $4,big_external_data_label+1 + usw $4,small_external_data_label+1 + ulh $4,big_external_common+1 + ulhu $4,small_external_common+1 + ulw $4,big_local_common+1 + ush $4,small_local_common+1 + +# Round to a 16 byte boundary, for ease in testing multiple targets. + nop + .ifndef XGOT + nop + nop + .endif diff --git a/gas/testsuite/gas/mips/ulh.s b/gas/testsuite/gas/mips/ulh.s new file mode 100644 index 0000000..26ecbb9 --- /dev/null +++ b/gas/testsuite/gas/mips/ulh.s @@ -0,0 +1,69 @@ +# Source file used to test the ulh macro. + + .data +data_label: + .extern big_external_data_label,1000 + .extern small_external_data_label,1 + .comm big_external_common,1000 + .comm small_external_common,1 + .lcomm big_local_common,1000 + .lcomm small_local_common,1 + + .text + ulh $4,0 + ulh $4,1 + ulh $4,0x8000 + ulh $4,-0x8000 + ulh $4,0x10000 + ulh $4,0x1a5a5 + ulh $4,0($5) + ulh $4,1($5) + ulh $4,data_label + ulh $4,big_external_data_label + ulh $4,small_external_data_label + ulh $4,big_external_common + ulh $4,small_external_common + ulh $4,big_local_common + ulh $4,small_local_common + ulh $4,data_label+1 + ulh $4,big_external_data_label+1 + ulh $4,small_external_data_label+1 + ulh $4,big_external_common+1 + ulh $4,small_external_common+1 + ulh $4,big_local_common+1 + ulh $4,small_local_common+1 + ulh $4,data_label+0x8000 + ulh $4,big_external_data_label+0x8000 + ulh $4,small_external_data_label+0x8000 + ulh $4,big_external_common+0x8000 + ulh $4,small_external_common+0x8000 + ulh $4,big_local_common+0x8000 + ulh $4,small_local_common+0x8000 + ulh $4,data_label-0x8000 + ulh $4,big_external_data_label-0x8000 + ulh $4,small_external_data_label-0x8000 + ulh $4,big_external_common-0x8000 + ulh $4,small_external_common-0x8000 + ulh $4,big_local_common-0x8000 + ulh $4,small_local_common-0x8000 + ulh $4,data_label+0x10000 + ulh $4,big_external_data_label+0x10000 + ulh $4,small_external_data_label+0x10000 + ulh $4,big_external_common+0x10000 + ulh $4,small_external_common+0x10000 + ulh $4,big_local_common+0x10000 + ulh $4,small_local_common+0x10000 + ulh $4,data_label+0x1a5a5 + ulh $4,big_external_data_label+0x1a5a5 + ulh $4,small_external_data_label+0x1a5a5 + ulh $4,big_external_common+0x1a5a5 + ulh $4,small_external_common+0x1a5a5 + ulh $4,big_local_common+0x1a5a5 + ulh $4,small_local_common+0x1a5a5 + +# ulhu is handled like ulh. Sanity check it. + ulhu $4,0 + +# Round to a 16 byte boundary, for ease in testing multiple targets. + nop + nop diff --git a/gas/testsuite/gas/mips/ulw.s b/gas/testsuite/gas/mips/ulw.s new file mode 100644 index 0000000..3a36f1c --- /dev/null +++ b/gas/testsuite/gas/mips/ulw.s @@ -0,0 +1,66 @@ +# Source file used to test the ulw macro. + + .data +data_label: + .extern big_external_data_label,1000 + .extern small_external_data_label,1 + .comm big_external_common,1000 + .comm small_external_common,1 + .lcomm big_local_common,1000 + .lcomm small_local_common,1 + + .text + ulw $4,0 + ulw $4,1 + ulw $4,0x8000 + ulw $4,-0x8000 + ulw $4,0x10000 + ulw $4,0x1a5a5 + ulw $4,0($5) + ulw $4,1($5) + ulw $4,data_label + ulw $4,big_external_data_label + ulw $4,small_external_data_label + ulw $4,big_external_common + ulw $4,small_external_common + ulw $4,big_local_common + ulw $4,small_local_common + ulw $4,data_label+1 + ulw $4,big_external_data_label+1 + ulw $4,small_external_data_label+1 + ulw $4,big_external_common+1 + ulw $4,small_external_common+1 + ulw $4,big_local_common+1 + ulw $4,small_local_common+1 + ulw $4,data_label+0x8000 + ulw $4,big_external_data_label+0x8000 + ulw $4,small_external_data_label+0x8000 + ulw $4,big_external_common+0x8000 + ulw $4,small_external_common+0x8000 + ulw $4,big_local_common+0x8000 + ulw $4,small_local_common+0x8000 + ulw $4,data_label-0x8000 + ulw $4,big_external_data_label-0x8000 + ulw $4,small_external_data_label-0x8000 + ulw $4,big_external_common-0x8000 + ulw $4,small_external_common-0x8000 + ulw $4,big_local_common-0x8000 + ulw $4,small_local_common-0x8000 + ulw $4,data_label+0x10000 + ulw $4,big_external_data_label+0x10000 + ulw $4,small_external_data_label+0x10000 + ulw $4,big_external_common+0x10000 + ulw $4,small_external_common+0x10000 + ulw $4,big_local_common+0x10000 + ulw $4,small_local_common+0x10000 + ulw $4,data_label+0x1a5a5 + ulw $4,big_external_data_label+0x1a5a5 + ulw $4,small_external_data_label+0x1a5a5 + ulw $4,big_external_common+0x1a5a5 + ulw $4,small_external_common+0x1a5a5 + ulw $4,big_local_common+0x1a5a5 + ulw $4,small_local_common+0x1a5a5 + +# Round to a 16 byte boundary, for ease in testing multiple targets. + nop + nop diff --git a/gas/testsuite/gas/mips/usd.s b/gas/testsuite/gas/mips/usd.s new file mode 100644 index 0000000..fd36735 --- /dev/null +++ b/gas/testsuite/gas/mips/usd.s @@ -0,0 +1,66 @@ +# Source file used to test the usd macro. + + .data +data_label: + .extern big_external_data_label,1000 + .extern small_external_data_label,1 + .comm big_external_common,1000 + .comm small_external_common,1 + .lcomm big_local_common,1000 + .lcomm small_local_common,1 + + .text + usd $4,0 + usd $4,1 + usd $4,0x8000 + usd $4,-0x8000 + usd $4,0x10000 + usd $4,0x1a5a5 + usd $4,0($5) + usd $4,1($5) + usd $4,data_label + usd $4,big_external_data_label + usd $4,small_external_data_label + usd $4,big_external_common + usd $4,small_external_common + usd $4,big_local_common + usd $4,small_local_common + usd $4,data_label+1 + usd $4,big_external_data_label+1 + usd $4,small_external_data_label+1 + usd $4,big_external_common+1 + usd $4,small_external_common+1 + usd $4,big_local_common+1 + usd $4,small_local_common+1 + usd $4,data_label+0x8000 + usd $4,big_external_data_label+0x8000 + usd $4,small_external_data_label+0x8000 + usd $4,big_external_common+0x8000 + usd $4,small_external_common+0x8000 + usd $4,big_local_common+0x8000 + usd $4,small_local_common+0x8000 + usd $4,data_label-0x8000 + usd $4,big_external_data_label-0x8000 + usd $4,small_external_data_label-0x8000 + usd $4,big_external_common-0x8000 + usd $4,small_external_common-0x8000 + usd $4,big_local_common-0x8000 + usd $4,small_local_common-0x8000 + usd $4,data_label+0x10000 + usd $4,big_external_data_label+0x10000 + usd $4,small_external_data_label+0x10000 + usd $4,big_external_common+0x10000 + usd $4,small_external_common+0x10000 + usd $4,big_local_common+0x10000 + usd $4,small_local_common+0x10000 + usd $4,data_label+0x1a5a5 + usd $4,big_external_data_label+0x1a5a5 + usd $4,small_external_data_label+0x1a5a5 + usd $4,big_external_common+0x1a5a5 + usd $4,small_external_common+0x1a5a5 + usd $4,big_local_common+0x1a5a5 + usd $4,small_local_common+0x1a5a5 + +# Round to a 16 byte boundary, for ease in testing multiple targets. + nop + nop diff --git a/gas/testsuite/gas/mips/ush.s b/gas/testsuite/gas/mips/ush.s new file mode 100644 index 0000000..c155814 --- /dev/null +++ b/gas/testsuite/gas/mips/ush.s @@ -0,0 +1,65 @@ +# Source file used to test the ush macro. + + .data +data_label: + .extern big_external_data_label,1000 + .extern small_external_data_label,1 + .comm big_external_common,1000 + .comm small_external_common,1 + .lcomm big_local_common,1000 + .lcomm small_local_common,1 + + .text + ush $4,0 + ush $4,1 + ush $4,0x8000 + ush $4,-0x8000 + ush $4,0x10000 + ush $4,0x1a5a5 + ush $4,0($5) + ush $4,1($5) + ush $4,data_label + ush $4,big_external_data_label + ush $4,small_external_data_label + ush $4,big_external_common + ush $4,small_external_common + ush $4,big_local_common + ush $4,small_local_common + ush $4,data_label+1 + ush $4,big_external_data_label+1 + ush $4,small_external_data_label+1 + ush $4,big_external_common+1 + ush $4,small_external_common+1 + ush $4,big_local_common+1 + ush $4,small_local_common+1 + ush $4,data_label+0x8000 + ush $4,big_external_data_label+0x8000 + ush $4,small_external_data_label+0x8000 + ush $4,big_external_common+0x8000 + ush $4,small_external_common+0x8000 + ush $4,big_local_common+0x8000 + ush $4,small_local_common+0x8000 + ush $4,data_label-0x8000 + ush $4,big_external_data_label-0x8000 + ush $4,small_external_data_label-0x8000 + ush $4,big_external_common-0x8000 + ush $4,small_external_common-0x8000 + ush $4,big_local_common-0x8000 + ush $4,small_local_common-0x8000 + ush $4,data_label+0x10000 + ush $4,big_external_data_label+0x10000 + ush $4,small_external_data_label+0x10000 + ush $4,big_external_common+0x10000 + ush $4,small_external_common+0x10000 + ush $4,big_local_common+0x10000 + ush $4,small_local_common+0x10000 + ush $4,data_label+0x1a5a5 + ush $4,big_external_data_label+0x1a5a5 + ush $4,small_external_data_label+0x1a5a5 + ush $4,big_external_common+0x1a5a5 + ush $4,small_external_common+0x1a5a5 + ush $4,big_local_common+0x1a5a5 + ush $4,small_local_common+0x1a5a5 + +# Round to a 16 byte boundary, for ease in testing multiple targets. + nop diff --git a/gas/testsuite/gas/mips/usw.s b/gas/testsuite/gas/mips/usw.s new file mode 100644 index 0000000..df1c60c --- /dev/null +++ b/gas/testsuite/gas/mips/usw.s @@ -0,0 +1,66 @@ +# Source file used to test the usw macro. + + .data +data_label: + .extern big_external_data_label,1000 + .extern small_external_data_label,1 + .comm big_external_common,1000 + .comm small_external_common,1 + .lcomm big_local_common,1000 + .lcomm small_local_common,1 + + .text + usw $4,0 + usw $4,1 + usw $4,0x8000 + usw $4,-0x8000 + usw $4,0x10000 + usw $4,0x1a5a5 + usw $4,0($5) + usw $4,1($5) + usw $4,data_label + usw $4,big_external_data_label + usw $4,small_external_data_label + usw $4,big_external_common + usw $4,small_external_common + usw $4,big_local_common + usw $4,small_local_common + usw $4,data_label+1 + usw $4,big_external_data_label+1 + usw $4,small_external_data_label+1 + usw $4,big_external_common+1 + usw $4,small_external_common+1 + usw $4,big_local_common+1 + usw $4,small_local_common+1 + usw $4,data_label+0x8000 + usw $4,big_external_data_label+0x8000 + usw $4,small_external_data_label+0x8000 + usw $4,big_external_common+0x8000 + usw $4,small_external_common+0x8000 + usw $4,big_local_common+0x8000 + usw $4,small_local_common+0x8000 + usw $4,data_label-0x8000 + usw $4,big_external_data_label-0x8000 + usw $4,small_external_data_label-0x8000 + usw $4,big_external_common-0x8000 + usw $4,small_external_common-0x8000 + usw $4,big_local_common-0x8000 + usw $4,small_local_common-0x8000 + usw $4,data_label+0x10000 + usw $4,big_external_data_label+0x10000 + usw $4,small_external_data_label+0x10000 + usw $4,big_external_common+0x10000 + usw $4,small_external_common+0x10000 + usw $4,big_local_common+0x10000 + usw $4,small_local_common+0x10000 + usw $4,data_label+0x1a5a5 + usw $4,big_external_data_label+0x1a5a5 + usw $4,small_external_data_label+0x1a5a5 + usw $4,big_external_common+0x1a5a5 + usw $4,small_external_common+0x1a5a5 + usw $4,big_local_common+0x1a5a5 + usw $4,small_local_common+0x1a5a5 + +# Round to a 16 byte boundary, for ease in testing multiple targets. + nop + nop diff --git a/gas/testsuite/gas/mn10200/add.s b/gas/testsuite/gas/mn10200/add.s new file mode 100755 index 0000000..ed251bc --- /dev/null +++ b/gas/testsuite/gas/mn10200/add.s @@ -0,0 +1,13 @@ + .text + add d1,d2 + add d2,a3 + add a2,d1 + add a3,a2 + add 16,d1 + add 256,d2 + add 131071,d3 + add 16,a1 + add 256,a2 + add 131071,a3 + addc d1,d2 + addnf 16,a2 diff --git a/gas/testsuite/gas/mn10200/basic.exp b/gas/testsuite/gas/mn10200/basic.exp old mode 100644 new mode 100755 diff --git a/gas/testsuite/gas/mn10200/bcc.s b/gas/testsuite/gas/mn10200/bcc.s new file mode 100755 index 0000000..8292dce --- /dev/null +++ b/gas/testsuite/gas/mn10200/bcc.s @@ -0,0 +1,17 @@ + .text +foo: + beq foo + bne foo + bgt foo + bge foo + ble foo + blt foo + bhi foo + bcc foo + bls foo + bcs foo + bvc foo + bvs foo + bnc foo + bns foo + bra foo diff --git a/gas/testsuite/gas/mn10200/bccx.s b/gas/testsuite/gas/mn10200/bccx.s new file mode 100755 index 0000000..e4e7edf --- /dev/null +++ b/gas/testsuite/gas/mn10200/bccx.s @@ -0,0 +1,16 @@ + .text +foo: + beqx foo + bnex foo + bgtx foo + bgex foo + blex foo + bltx foo + bhix foo + bccx foo + blsx foo + bcsx foo + bvcx foo + bvsx foo + bncx foo + bnsx foo diff --git a/gas/testsuite/gas/mn10200/bit.s b/gas/testsuite/gas/mn10200/bit.s new file mode 100755 index 0000000..5db60d4 --- /dev/null +++ b/gas/testsuite/gas/mn10200/bit.s @@ -0,0 +1,5 @@ + .text + btst 64,d1 + btst 8192,d2 + bset d1,(a2) + bclr d1,(a2) diff --git a/gas/testsuite/gas/mn10200/cmp.s b/gas/testsuite/gas/mn10200/cmp.s new file mode 100755 index 0000000..133925b --- /dev/null +++ b/gas/testsuite/gas/mn10200/cmp.s @@ -0,0 +1,10 @@ + .text + cmp d1,d2 + cmp d2,a3 + cmp a3,d3 + cmp a3,a2 + cmp 16,d3 + cmp 256,d2 + cmp 131071,d1 + cmp 256,a2 + cmp 131071,a1 diff --git a/gas/testsuite/gas/mn10200/ext.s b/gas/testsuite/gas/mn10200/ext.s new file mode 100755 index 0000000..1be01ba --- /dev/null +++ b/gas/testsuite/gas/mn10200/ext.s @@ -0,0 +1,7 @@ + .text + ext d1 + extx d2 + extxu d3 + extxb d2 + extxbu d1 + diff --git a/gas/testsuite/gas/mn10200/logical.s b/gas/testsuite/gas/mn10200/logical.s new file mode 100755 index 0000000..0809d7f --- /dev/null +++ b/gas/testsuite/gas/mn10200/logical.s @@ -0,0 +1,12 @@ + .text + and d1,d2 + and 127,d2 + and 32767,d3 + and 32767,psw + or d1,d2 + or 127,d2 + or 32767,d3 + or 32767,psw + xor d1,d2 + xor 32767,d3 + not d3 diff --git a/gas/testsuite/gas/mn10200/mov1.s b/gas/testsuite/gas/mn10200/mov1.s new file mode 100755 index 0000000..c828e32 --- /dev/null +++ b/gas/testsuite/gas/mn10200/mov1.s @@ -0,0 +1,13 @@ + .text + mov d1,a2 + mov a2,d1 + mov d1,d2 + mov a2,a1 + mov psw,d3 + mov d2,psw + mov mdr,d1 + mov d2,mdr + mov (a2),d1 + mov (8,a2),d1 + mov (256,a2),d1 + mov (131071,a2),d1 diff --git a/gas/testsuite/gas/mn10200/mov2.s b/gas/testsuite/gas/mn10200/mov2.s new file mode 100755 index 0000000..8df6e25 --- /dev/null +++ b/gas/testsuite/gas/mn10200/mov2.s @@ -0,0 +1,10 @@ + .text + mov (d1,a1),d2 + mov (32768),d1 + mov (131071),d1 + mov (8,a2),a1 + mov (256,a2),a1 + mov (131071,a2),a1 + mov (d1,a1),a2 + mov (32768),a1 + mov (131071),a1 diff --git a/gas/testsuite/gas/mn10200/mov3.s b/gas/testsuite/gas/mn10200/mov3.s new file mode 100755 index 0000000..bd7490a --- /dev/null +++ b/gas/testsuite/gas/mn10200/mov3.s @@ -0,0 +1,11 @@ + .text + mov d1,(a2) + mov d1,(32,a2) + mov d1,(256,a2) + mov d1,(131071,a2) + mov d1,(d2,a2) + mov d1,(128) + mov d1,(131071) + mov a1,(32,a2) + mov a1,(256,a2) + mov a1,(131071,a2) diff --git a/gas/testsuite/gas/mn10200/mov4.s b/gas/testsuite/gas/mn10200/mov4.s new file mode 100755 index 0000000..f1187e0 --- /dev/null +++ b/gas/testsuite/gas/mn10200/mov4.s @@ -0,0 +1,9 @@ + .text + mov a1,(d2,a2) + mov a1,(128) + mov a1,(131071) + mov 8,d1 + mov 256,d1 + mov 131071,d1 + mov 256,a1 + mov 131071,a1 diff --git a/gas/testsuite/gas/mn10200/movb.s b/gas/testsuite/gas/mn10200/movb.s new file mode 100644 index 0000000..2556614 --- /dev/null +++ b/gas/testsuite/gas/mn10200/movb.s @@ -0,0 +1,13 @@ + .text + movb (8,a2),d1 + movb (256,a2),d1 + movb (131071,a2),d1 + movb (d2,a2),d3 + movb (131071),d2 + movb d1,(a2) + movb d1,(8,a2) + movb d1,(256,a2) + movb d1,(131071,a2) + movb d1,(d2,a2) + movb d1,(256) + movb d1,(131071) diff --git a/gas/testsuite/gas/mn10200/movbu.s b/gas/testsuite/gas/mn10200/movbu.s new file mode 100755 index 0000000..01d973a --- /dev/null +++ b/gas/testsuite/gas/mn10200/movbu.s @@ -0,0 +1,8 @@ + .text + movbu (a2),d1 + movbu (8,a2),d1 + movbu (256,a2),d1 + movbu (131071,a2),d1 + movbu (d1,a1),d2 + movbu (32768),d1 + movbu (131071),d1 diff --git a/gas/testsuite/gas/mn10200/movx.s b/gas/testsuite/gas/mn10200/movx.s new file mode 100755 index 0000000..70e1d71 --- /dev/null +++ b/gas/testsuite/gas/mn10200/movx.s @@ -0,0 +1,7 @@ + .text + movx (8,a2),d1 + movx (256,a2),d1 + movx (131071,a2),d1 + movx d1,(8,a2) + movx d1,(256,a2) + movx d1,(131071,a2) diff --git a/gas/testsuite/gas/mn10200/muldiv.s b/gas/testsuite/gas/mn10200/muldiv.s new file mode 100755 index 0000000..0f17026 --- /dev/null +++ b/gas/testsuite/gas/mn10200/muldiv.s @@ -0,0 +1,4 @@ + .text + mul d1,d2 + mulu d2,d3 + divu d3,d2 diff --git a/gas/testsuite/gas/mn10200/other.s b/gas/testsuite/gas/mn10200/other.s new file mode 100755 index 0000000..ecf94bd --- /dev/null +++ b/gas/testsuite/gas/mn10200/other.s @@ -0,0 +1,10 @@ + .text + jmp 256 + jmp 131071 + jmp (a2) + jsr 256 + jsr 131071 + jsr (a2) + rts + rti + nop diff --git a/gas/testsuite/gas/mn10200/shift.s b/gas/testsuite/gas/mn10200/shift.s new file mode 100755 index 0000000..568e769 --- /dev/null +++ b/gas/testsuite/gas/mn10200/shift.s @@ -0,0 +1,5 @@ + .text + asr d2 + lsr d3 + ror d1 + rol d2 diff --git a/gas/testsuite/gas/mn10200/sub.s b/gas/testsuite/gas/mn10200/sub.s new file mode 100755 index 0000000..2551654 --- /dev/null +++ b/gas/testsuite/gas/mn10200/sub.s @@ -0,0 +1,10 @@ + .text + sub d1,d2 + sub d2,a3 + sub a3,d3 + sub a3,a2 + sub 32767,d2 + sub 131071,d2 + sub 32767,a2 + sub 131071,a2 + subc d1,d2 diff --git a/gas/testsuite/gas/mn10300/add.s b/gas/testsuite/gas/mn10300/add.s new file mode 100755 index 0000000..16f558f --- /dev/null +++ b/gas/testsuite/gas/mn10300/add.s @@ -0,0 +1,15 @@ + .text + add d1,d2 + add d2,a3 + add a3,a2 + add a2,d1 + add 16,d1 + add 256,d2 + add 131071,d3 + add 16,a1 + add 256,a2 + add 131071,a3 + add 16,sp + add 256,sp + add 131071,sp + addc d1,d2 diff --git a/gas/testsuite/gas/mn10300/basic.exp b/gas/testsuite/gas/mn10300/basic.exp old mode 100644 new mode 100755 diff --git a/gas/testsuite/gas/mn10300/bcc.s b/gas/testsuite/gas/mn10300/bcc.s new file mode 100755 index 0000000..8292dce --- /dev/null +++ b/gas/testsuite/gas/mn10300/bcc.s @@ -0,0 +1,17 @@ + .text +foo: + beq foo + bne foo + bgt foo + bge foo + ble foo + blt foo + bhi foo + bcc foo + bls foo + bcs foo + bvc foo + bvs foo + bnc foo + bns foo + bra foo diff --git a/gas/testsuite/gas/mn10300/bit.s b/gas/testsuite/gas/mn10300/bit.s new file mode 100755 index 0000000..f5c5519 --- /dev/null +++ b/gas/testsuite/gas/mn10300/bit.s @@ -0,0 +1,12 @@ + .text + btst 64,d1 + btst 8192,d2 + btst 131071,d3 + btst 64,(8,a1) + btst 64,(131071) + bset d1,(a2) + bset 64,(8,a1) + bset 64,(131071) + bclr d1,(a2) + bclr 64,(8,a1) + bclr 64,(131071) diff --git a/gas/testsuite/gas/mn10300/cmp.s b/gas/testsuite/gas/mn10300/cmp.s new file mode 100755 index 0000000..7f8a71d --- /dev/null +++ b/gas/testsuite/gas/mn10300/cmp.s @@ -0,0 +1,11 @@ + .text + cmp d1,d2 + cmp d2,a3 + cmp a3,d3 + cmp a3,a2 + cmp 16,d3 + cmp 256,d2 + cmp 131071,d1 + cmp 16,a3 + cmp 256,a2 + cmp 131071,a1 diff --git a/gas/testsuite/gas/mn10300/ext.s b/gas/testsuite/gas/mn10300/ext.s new file mode 100755 index 0000000..f0e2e79 --- /dev/null +++ b/gas/testsuite/gas/mn10300/ext.s @@ -0,0 +1,7 @@ + .text + ext d1 + extb d2 + extbu d3 + exth d2 + exthu d1 + diff --git a/gas/testsuite/gas/mn10300/extend.s b/gas/testsuite/gas/mn10300/extend.s new file mode 100755 index 0000000..d6405b7 --- /dev/null +++ b/gas/testsuite/gas/mn10300/extend.s @@ -0,0 +1,15 @@ + .text + putx d1 + getx d2 + mulq d1,d2 + mulq 16,d2 + mulq 256,d3 + mulq 131071,d3 + mulqu d1,d2 + mulqu 16,d2 + mulqu 256,d3 + mulqu 131071,d3 + sat16 d2,d3 + sat24 d3,d2 + bsch d1,d2 + diff --git a/gas/testsuite/gas/mn10300/logical.s b/gas/testsuite/gas/mn10300/logical.s new file mode 100755 index 0000000..b0976db --- /dev/null +++ b/gas/testsuite/gas/mn10300/logical.s @@ -0,0 +1,15 @@ + .text + and d1,d2 + and 127,d2 + and 32767,d3 + and 131071,d3 + and 32767,psw + or d1,d2 + or 127,d2 + or 32767,d3 + or 131071,d3 + or 32767,psw + xor d1,d2 + xor 32767,d3 + xor 131071,d3 + not d3 diff --git a/gas/testsuite/gas/mn10300/loop.s b/gas/testsuite/gas/mn10300/loop.s new file mode 100755 index 0000000..d918207 --- /dev/null +++ b/gas/testsuite/gas/mn10300/loop.s @@ -0,0 +1,15 @@ + .text +foo: + leq + lne + lgt + lge + lle + llt + lhi + lcc + lls + lcs + lra + setlb + diff --git a/gas/testsuite/gas/mn10300/mov1.s b/gas/testsuite/gas/mn10300/mov1.s new file mode 100755 index 0000000..a44cc55 --- /dev/null +++ b/gas/testsuite/gas/mn10300/mov1.s @@ -0,0 +1,17 @@ + .text + mov d1,d2 + mov d1,a2 + mov a2,d1 + mov a2,a1 + mov sp,a2 + mov a1,sp + mov d2,psw + mov mdr,d1 + mov d2,mdr + mov (a2),d1 + mov (8,a2),d1 + mov (256,a2),d1 + mov (131071,a2),d1 + mov (8,sp),d1 + mov (256,sp),d1 + mov psw,d3 diff --git a/gas/testsuite/gas/mn10300/mov2.s b/gas/testsuite/gas/mn10300/mov2.s new file mode 100755 index 0000000..50d1edc5 --- /dev/null +++ b/gas/testsuite/gas/mn10300/mov2.s @@ -0,0 +1,16 @@ + .text + mov (131071,sp),d1 + mov (d1,a1),d2 + mov (32768),d1 + mov (131071),d1 + mov (a2),a1 + mov (8,a2),a1 + mov (256,a2),a1 + mov (131071,a2),a1 + mov (8,sp),a1 + mov (256,sp),a1 + mov (131071,sp),a1 + mov (d1,a1),a2 + mov (32768),a1 + mov (131071),a1 + mov (32,a1),sp diff --git a/gas/testsuite/gas/mn10300/mov3.s b/gas/testsuite/gas/mn10300/mov3.s new file mode 100755 index 0000000..90ec0b9 --- /dev/null +++ b/gas/testsuite/gas/mn10300/mov3.s @@ -0,0 +1,16 @@ + .text + mov d1,(a2) + mov d1,(32,a2) + mov d1,(256,a2) + mov d1,(131071,a2) + mov d1,(32,sp) + mov d1,(32768,sp) + mov d1,(131071,sp) + mov d1,(d2,a2) + mov d1,(128) + mov d1,(131071) + mov a1,(a2) + mov a1,(32,a2) + mov a1,(256,a2) + mov a1,(131071,a2) + mov a1,(32,sp) diff --git a/gas/testsuite/gas/mn10300/mov4.s b/gas/testsuite/gas/mn10300/mov4.s new file mode 100755 index 0000000..99d69c1 --- /dev/null +++ b/gas/testsuite/gas/mn10300/mov4.s @@ -0,0 +1,13 @@ + .text + mov a1,(32768,sp) + mov a1,(131071,sp) + mov a1,(d2,a2) + mov a1,(128) + mov a1,(131071) + mov sp,(32,a1) + mov 8,d1 + mov 256,d1 + mov 131071,d1 + mov 8,a1 + mov 256,a1 + mov 131071,a1 diff --git a/gas/testsuite/gas/mn10300/movbu.s b/gas/testsuite/gas/mn10300/movbu.s new file mode 100755 index 0000000..8fdb7be --- /dev/null +++ b/gas/testsuite/gas/mn10300/movbu.s @@ -0,0 +1,21 @@ + .text + movbu (a2),d1 + movbu (8,a2),d1 + movbu (256,a2),d1 + movbu (131071,a2),d1 + movbu (8,sp),d1 + movbu (256,sp),d1 + movbu (131071,sp),d1 + movbu (d1,a1),d2 + movbu (32768),d1 + movbu (131071),d1 + movbu d1,(a2) + movbu d1,(32,a2) + movbu d1,(256,a2) + movbu d1,(131071,a2) + movbu d1,(32,sp) + movbu d1,(32768,sp) + movbu d1,(131071,sp) + movbu d1,(d2,a2) + movbu d1,(128) + movbu d1,(131071) diff --git a/gas/testsuite/gas/mn10300/movhu.s b/gas/testsuite/gas/mn10300/movhu.s new file mode 100755 index 0000000..4637e80 --- /dev/null +++ b/gas/testsuite/gas/mn10300/movhu.s @@ -0,0 +1,21 @@ + .text + movhu (a2),d1 + movhu (8,a2),d1 + movhu (256,a2),d1 + movhu (131071,a2),d1 + movhu (8,sp),d1 + movhu (256,sp),d1 + movhu (131071,sp),d1 + movhu (d1,a1),d2 + movhu (32768),d1 + movhu (131071),d1 + movhu d1,(a2) + movhu d1,(32,a2) + movhu d1,(256,a2) + movhu d1,(131071,a2) + movhu d1,(32,sp) + movhu d1,(32768,sp) + movhu d1,(131071,sp) + movhu d1,(d2,a2) + movhu d1,(128) + movhu d1,(131071) diff --git a/gas/testsuite/gas/mn10300/movm.s b/gas/testsuite/gas/mn10300/movm.s new file mode 100755 index 0000000..ccfc683 --- /dev/null +++ b/gas/testsuite/gas/mn10300/movm.s @@ -0,0 +1,5 @@ + .text + movm (sp),[a2,a3] + movm (sp),[d2,d3,a2,a3,other] + movm [a2,a3],(sp) + movm [d2,d3,a2,a3,other],(sp) diff --git a/gas/testsuite/gas/mn10300/muldiv.s b/gas/testsuite/gas/mn10300/muldiv.s new file mode 100755 index 0000000..3f11e5d --- /dev/null +++ b/gas/testsuite/gas/mn10300/muldiv.s @@ -0,0 +1,5 @@ + .text + mul d1,d2 + mulu d2,d3 + div d3,d3 + divu d3,d2 diff --git a/gas/testsuite/gas/mn10300/other.s b/gas/testsuite/gas/mn10300/other.s new file mode 100755 index 0000000..3eaf74a --- /dev/null +++ b/gas/testsuite/gas/mn10300/other.s @@ -0,0 +1,20 @@ + .text + clr d2 + inc d1 + inc a2 + inc4 a3 + jmp (a2) + jmp 256 + jmp 131071 + call 256,[a2,a3],9 + call 131071,[a2,a3],32 + calls (a2) + calls 256 + calls 131071 + ret [a2,a3],7 + retf [a2,a3],5 + rets + rti + trap + nop + rtm diff --git a/gas/testsuite/gas/mn10300/shift.s b/gas/testsuite/gas/mn10300/shift.s new file mode 100755 index 0000000..ec8c9ce --- /dev/null +++ b/gas/testsuite/gas/mn10300/shift.s @@ -0,0 +1,10 @@ + .text + asr d1,d2 + asr 4,d2 + lsr d2,d3 + lsr 4,d3 + asl d3,d2 + asl 4,d2 + asl2 d2 + ror d1 + rol d2 diff --git a/gas/testsuite/gas/mn10300/sub.s b/gas/testsuite/gas/mn10300/sub.s new file mode 100755 index 0000000..13dc663 --- /dev/null +++ b/gas/testsuite/gas/mn10300/sub.s @@ -0,0 +1,8 @@ + .text + sub d1,d2 + sub d2,a3 + sub a3,d3 + sub a3,a2 + sub 131071,d2 + sub 131071,a1 + subc d1,d2 diff --git a/gas/testsuite/gas/mri/char.s b/gas/testsuite/gas/mri/char.s new file mode 100644 index 0000000..7b0a83a --- /dev/null +++ b/gas/testsuite/gas/mri/char.s @@ -0,0 +1,6 @@ +; Test MRI style character constants. + + dc.b 'a' + dc.b 'abc' + dc.l 'abcde' + dc.l 'a''b' diff --git a/gas/testsuite/gas/mri/comment.s b/gas/testsuite/gas/mri/comment.s new file mode 100644 index 0000000..857318f --- /dev/null +++ b/gas/testsuite/gas/mri/comment.s @@ -0,0 +1,13 @@ + xref label + xdef ROM,RAM + * this is a comment + + dc.l label loop if we haven't reach end yet + +ROM EQU $00000001 * word wide +RAM EQU $00000002 word wide + dc.l RAM + dc.l 0 ,really,a,comment +; a comment + ; another comment + ; another comment diff --git a/gas/testsuite/gas/mri/common.s b/gas/testsuite/gas/mri/common.s new file mode 100644 index 0000000..d735c6b --- /dev/null +++ b/gas/testsuite/gas/mri/common.s @@ -0,0 +1,11 @@ +; Test MRI common sections + common com1 + ds.l 1 +com2 common 00 + ds.l 1 +incom ds.l 1 + common com1 + ds.l 1 + data + dc.l com1 + dc.l incom diff --git a/gas/testsuite/gas/mri/constants.s b/gas/testsuite/gas/mri/constants.s new file mode 100644 index 0000000..0034e67 --- /dev/null +++ b/gas/testsuite/gas/mri/constants.s @@ -0,0 +1,31 @@ + xdef s01,s02,s03,s04,s05,s06,s07,s08,s09,s10,s11,s12,s13 +s01 equ %1010 +s02 equ 1010b +s03 equ @12 +s04 equ 12o +s05 equ 12q +s06 equ 10 +s07 equ 10d +s08 equ $a +s09 equ 0ah +s10 equ 'a' +s11 equ A'a' +s12 equ 'abcd' +s13 equ 'a''b' + + xdef foo +foo + moveq.l #%1010,d0 + moveq.l #1010b,d0 + moveq.l #@12,d0 + moveq.l #12o,d0 + moveq.l #12q,d0 + moveq.l #10,d0 + moveq.l #10d,d0 + moveq.l #$a,d0 + moveq.l #0ah,d0 + moveq.l #'a',d0 + moveq.l #A'a',d0 + nop + + end diff --git a/gas/testsuite/gas/mri/empty.s b/gas/testsuite/gas/mri/empty.s new file mode 100644 index 0000000..94c2cdd --- /dev/null +++ b/gas/testsuite/gas/mri/empty.s @@ -0,0 +1,9 @@ +SBT MACRO ; empty macro + ENDM + + SBT arg1 + SBT arg2 - one tww + SBT arg3 - one two three + SBT arg4 - one two three four + SBT arg5 - one two three four five + SBT arg6 - one two (three) diff --git a/gas/testsuite/gas/mri/equ.s b/gas/testsuite/gas/mri/equ.s new file mode 100644 index 0000000..a6512a1 --- /dev/null +++ b/gas/testsuite/gas/mri/equ.s @@ -0,0 +1,3 @@ +# Test the MRI EQU directive + XDEF SYMBOL +SYMBOL EQU 4 diff --git a/gas/testsuite/gas/mri/expr.s b/gas/testsuite/gas/mri/expr.s new file mode 100644 index 0000000..57677c1 --- /dev/null +++ b/gas/testsuite/gas/mri/expr.s @@ -0,0 +1,7 @@ +; Test expressions in MRI mode + xdef s1,s2,s3,s4,s5 +s1 equ 1>2 +s2 equ 3<<1*3 +s3 equ 5!!3 +s4 equ "0 +s5 equ (1>=2)!(1<>1) diff --git a/gas/testsuite/gas/mri/float.s b/gas/testsuite/gas/mri/float.s new file mode 100644 index 0000000..637f9c6 --- /dev/null +++ b/gas/testsuite/gas/mri/float.s @@ -0,0 +1,7 @@ +; Test floating point constants in MRI mode. + + dc.d :1234_5678_9abc_def0 + dc.s 1.0 + dc.s 1e1 + dc.s 1_e_1 + dc.s 1E2 diff --git a/gas/testsuite/gas/mri/for.s b/gas/testsuite/gas/mri/for.s new file mode 100644 index 0000000..7524725 --- /dev/null +++ b/gas/testsuite/gas/mri/for.s @@ -0,0 +1,22 @@ +; Test MRI structured for pseudo-op. + + xdef foo +foo + clr d1 + for d0 = #1 to #10 by #2 do + add d0,d1 arbitrary text 'in comment field + if <vs> then + break + endi + endf + + clr d1 + for d0 = #10 downto #1 do + if d1 <ge> #100 then + next + endi + add d0,d1 + endf + + nop + nop diff --git a/gas/testsuite/gas/mri/if.s b/gas/testsuite/gas/mri/if.s new file mode 100644 index 0000000..2646be8 --- /dev/null +++ b/gas/testsuite/gas/mri/if.s @@ -0,0 +1,17 @@ +; Test MRI structured if pseudo-op. + + xdef foo +foo + if d1 <gt> d0 and d2 <gt> d0 then + if d1 <gt> d2 then + move d1,d3 + else + move d2,d3 + endi + else + if d0 <gt> d1 or d0 <gt> d2 then + move d0,d3 + endi + endi + + nop diff --git a/gas/testsuite/gas/mri/label.s b/gas/testsuite/gas/mri/label.s new file mode 100644 index 0000000..b05ec2a --- /dev/null +++ b/gas/testsuite/gas/mri/label.s @@ -0,0 +1,5 @@ +; Test using an MRI style label +* Also test MRI style comments +! And another comment + XDEF LABEL +LABEL DC.L SYMBOL ; And yet another comment diff --git a/gas/testsuite/gas/mri/moveml.s b/gas/testsuite/gas/mri/moveml.s new file mode 100644 index 0000000..b8fc728 --- /dev/null +++ b/gas/testsuite/gas/mri/moveml.s @@ -0,0 +1,17 @@ +asdf reg a0-a2/d2-d7 +fdsa equ $16000 + + movem.l (sp)+,a0-a2/d2-d7 + movem.l (sp)+,asdf + + movem.l a0-a2/d2-d7,symbol + movem.l asdf,symbol + + movem.l symbol,a0-a2/d2-d7 + movem.l symbol,asdf + + movem.l fdsa,a0-a2/d2-d7 + movem.l fdsa,asdf + + movem.l a0-a2/d2-d7,fdsa + movem.l asdf,fdsa diff --git a/gas/testsuite/gas/mri/repeat.s b/gas/testsuite/gas/mri/repeat.s new file mode 100644 index 0000000..0e4ea2b --- /dev/null +++ b/gas/testsuite/gas/mri/repeat.s @@ -0,0 +1,14 @@ +; Test MRI structured repeat pseudo-op. + + xdef foo +foo + repeat + until <cs> + + clr d1 + repeat + add #1,d1 + until d1 <ge> #10 + + nop + nop diff --git a/gas/testsuite/gas/mri/semi.s b/gas/testsuite/gas/mri/semi.s new file mode 100644 index 0000000..5b30677 --- /dev/null +++ b/gas/testsuite/gas/mri/semi.s @@ -0,0 +1,14 @@ +semicolon macro + dc.b '; ' + endm + +colon macro + dc.b ': ' + endm + + semicolon + dc.b '; ' + colon + dc.b ': ' + + p2align 5 diff --git a/gas/testsuite/gas/mri/while.s b/gas/testsuite/gas/mri/while.s new file mode 100644 index 0000000..35cbdbb --- /dev/null +++ b/gas/testsuite/gas/mri/while.s @@ -0,0 +1,14 @@ +; Test MRI structured while pseudo-op. + + xdef foo +foo + while <cs> do + endw + + clr d1 + while d1 <le> #10 do + add #1,d1 + endw + + nop + nop diff --git a/gas/testsuite/gas/ppc/astest.s b/gas/testsuite/gas/ppc/astest.s new file mode 100644 index 0000000..f1af216 --- /dev/null +++ b/gas/testsuite/gas/ppc/astest.s @@ -0,0 +1,52 @@ + .section ".data" + .globl x + .globl z +x: .long 0 +z = . + 4 +four = z - x - 4 +y: .long 0 + + .section ".text" +foo: + nop ; nop ; nop + .globl a +a: b .+4 +b: b .+8 + b x + b y + b z + b z+20 + b .+four + b a + b b + b a+4 + b b+4 + b a@local + b b@local + .long . + .long .+8 + .long x-. + .long x+4-. + .long z-. + .long y-. + .long x + .long y + .long z + .long x-four + .long y-four + .long z-four + .long a-. + .long b-. + .long a + .long b + +apfour = a + four + .long apfour + .long a-apfour + .long apfour+2 + .long apfour-b + + .type foo,@function + .type a,@function + .type b,@function + .type apfour,@function diff --git a/gas/testsuite/gas/ppc/astest2.s b/gas/testsuite/gas/ppc/astest2.s new file mode 100644 index 0000000..5af2233 --- /dev/null +++ b/gas/testsuite/gas/ppc/astest2.s @@ -0,0 +1,52 @@ +four = 4 + .section ".text" +foo: + nop ; nop ; nop + .globl a + b .+4 + b .+8 + b x + b y + b z + b z+20 + b .+four + b a + b b + b a+4 + b b+4 + b a@local + b b@local + .long . + .long .+8 + .long x-. + .long x+4-. + .long z-. + .long y-. + .long x + .long y + .long z + .long x-four + .long y-four + .long z-four + .long a-. + .long b-. +a: .long a +b: .long b + +apfour = a + four + .long apfour + .long a-apfour + .long apfour+2 + .long apfour-b + + .section ".data" + .globl x + .globl z +x: .long 0 +z = . + 4 +y: .long 0 + + .type foo,@function + .type a,@function + .type b,@function + .type apfour,@function diff --git a/gas/testsuite/gas/sh/basic.exp b/gas/testsuite/gas/sh/basic.exp old mode 100644 new mode 100755 diff --git a/gas/testsuite/gas/sh/fp.s b/gas/testsuite/gas/sh/fp.s new file mode 100644 index 0000000..3da7249 --- /dev/null +++ b/gas/testsuite/gas/sh/fp.s @@ -0,0 +1,45 @@ + .file "test.c" + .data + +! Hitachi SH cc1 (cygnus-2.7.1-950728) arguments: -O -fpeephole +! -ffunction-cse -freg-struct-return -fdelayed-branch -fcommon -fgnu-linker + +gcc2_compiled.: +___gnu_compiled_c: + .text + .align 2 + .global _foo +_foo: + fmov.s @r0,fr0 + fmov.s fr0,@r0 + fmov.s @r0+,fr0 + fmov.s fr0,@-r0 + fmov.s @(r0,r0),fr0 + fmov.s fr0,@(r0,r0) + fmov fr0,fr1 + fldi0 fr0 + fldi1 fr0 + fadd fr0,fr1 + fsub fr0,fr1 + fmul fr0,fr1 + fdiv fr0,fr1 + fmac fr0,fr0,fr1 + fcmp/eq fr0,fr1 + fcmp/gt fr0,fr1 + ftst/nan fr0 + fneg fr0 + fabs fr0 + fsqrt fr0 + float fpul,fr0 + ftrc fr0,fpul + fsts fpul,fr0 + flds fr0,fpul + lds r3,fpul + lds.l @r3+,fpul + lds r3,fpscr + lds.l @r3+,fpscr + sts fpul,r3 + sts.l fpul,@-r3 + sts fpscr,r3 + sts.l fpscr,@-r3 + diff --git a/gas/testsuite/gas/sparc-solaris/addend.s b/gas/testsuite/gas/sparc-solaris/addend.s new file mode 100644 index 0000000..18eb108 --- /dev/null +++ b/gas/testsuite/gas/sparc-solaris/addend.s @@ -0,0 +1,11 @@ + .global foo +foo: + nop + nop + ba foo1+0x4 + ba foo1+0x4 + ba foo1 + ba foo1 + nop + .word foo1 + .word foo1+4 diff --git a/gas/testsuite/gas/sparc-solaris/sol-cc.s b/gas/testsuite/gas/sparc-solaris/sol-cc.s new file mode 100644 index 0000000..8a250da --- /dev/null +++ b/gas/testsuite/gas/sparc-solaris/sol-cc.s @@ -0,0 +1,81 @@ + .section ".text" ! [internal] + .proc 4 + .global main + .align 4 + .global main +main: +!#PROLOGUE# 0 +!#PROLOGUE# 1 + save %sp,-96,%sp + sethi %hi(.L18),%o0 + sethi %hi(msg),%o1 + or %o1,%lo(msg),%o1 ! [internal] + call printf,2 + or %o0,%lo(.L18),%o0 ! [internal] + ret + restore %g0,0,%o0 + .type main,#function + .size main,(.-main) + .section ".data" ! [internal] + .align 4 +Ddata.data: + .section ".bss" ! [internal] +Bbss.bss: + .section ".rodata" ! [internal] +Drodata.rodata: + .file "hi-sol.c" + .global msg + .global msg +msg: + .ascii "hello, world!\0" + .type msg,#object + .size msg,14 + .section ".data1", #write, #alloc ! [internal] + .align 4 +.L18: + .ascii "%s\n\0" + .ident "acomp: (CDS) SPARCompilers 2.0.1 03 Sep 1992" + .section "text" ! [internal] + .stabs "/cygint/s1/users/raeburn/",100,0,0,0 + .stabs "hi-sol.c",100,0,3,0 + .stabs "",56,0,0,0 + .stabs "",56,0,0,0 + .stabs "Xt ; g ; O ; V=2.0",60,0,0,0x2bb773ba + .stabs "char:t(0,1)=bsc1;0;8;",128,0,0,0 + .stabs "short:t(0,2)=bs2;0;16;",128,0,0,0 + .stabs "int:t(0,3)=bs4;0;32;",128,0,0,0 + .stabs "long:t(0,4)=bs4;0;32;",128,0,0,0 + .stabs "long long:t(0,5)=bs8;0;64;",128,0,0,0 + .stabs "signed char:t(0,6)=bsc1;0;8;",128,0,0,0 + .stabs "signed short:t(0,7)=bs2;0;16;",128,0,0,0 + .stabs "signed int:t(0,8)=bs4;0;32;",128,0,0,0 + .stabs "signed long:t(0,9)=bs4;0;32;",128,0,0,0 + .stabs "signed long long:t(0,10)=bs8;0;64;",128,0,0,0 + .stabs "unsigned char:t(0,11)=buc1;0;8;",128,0,0,0 + .stabs "unsigned short:t(0,12)=bu2;0;16;",128,0,0,0 + .stabs "unsigned int:t(0,13)=bu4;0;32;",128,0,0,0 + .stabs "unsigned long:t(0,14)=bu4;0;32;",128,0,0,0 + .stabs "unsigned long long:t(0,15)=bu8;0;64;",128,0,0,0 + .stabs "float:t(0,16)=R1;4;",128,0,0,0 + .stabs "double:t(0,17)=R2;8;",128,0,0,0 + .stabs "long double:t(0,18)=R6;16;",128,0,0,0 + .stabs "void:t(0,19)=bs0;0;0",128,0,0,0 + .stabs "msg:G(0,20)=ar(0,3);0;13;(0,1)",32,0,14,0 + .stabs "main:F(0,3);(0,3);(0,21)=*(0,22)=*(0,1)",36,0,0,main + .stabs "main",42,0,0,0 + .stabn 192,0,1,0 + .stabn 68,0,4,0 + .stabs "argc:p(0,3)",160,0,4,68 + .stabs "argv:p(0,21)",160,0,4,72 + .stabs "printf:P(0,3)",36,0,0,0 + .stabn 224,0,1,0 + .stabs "",98,0,0,0 + .section "text" ! [internal] + .xstabs ".stab.index","/cygint/s1/users/raeburn/",100,0,0,0 + .xstabs ".stab.index","hi-sol.c",100,0,3,0 + .xstabs ".stab.index","",56,0,0,0 + .xstabs ".stab.index","",56,0,0,0 + .xstabs ".stab.index","Xt ; g ; O ; V=2.0",60,0,0,0x2bb773ba + .xstabs ".stab.index","msg",32,0,0,0 + .xstabs ".stab.index","main",42,0,0,0 + .xstabs ".stab.index","main",36,0,0,0 diff --git a/gas/testsuite/gas/sparc-solaris/sol-gcc.s b/gas/testsuite/gas/sparc-solaris/sol-gcc.s new file mode 100644 index 0000000..295fdcd --- /dev/null +++ b/gas/testsuite/gas/sparc-solaris/sol-gcc.s @@ -0,0 +1,66 @@ + .file "hi-sol.c" +.stabs "/1h/devo/src/gas/testsuite/gas/",100,0,0,.LLtext0 +.stabs "hi-sol.c",100,0,0,.LLtext0 +.section ".text" +.LLtext0: + .stabs "gcc2_compiled.", 0x3c, 0, 0, 0 +.stabs "int:t1=r1;-2147483648;2147483647;",128,0,0,0 +.stabs "char:t2=r2;0;127;",128,0,0,0 +.stabs "long int:t3=r1;-2147483648;2147483647;",128,0,0,0 +.stabs "unsigned int:t4=r1;0;-1;",128,0,0,0 +.stabs "long unsigned int:t5=r1;0;-1;",128,0,0,0 +.stabs "short int:t6=r1;-32768;32767;",128,0,0,0 +.stabs "long long int:t7=r1;0;-1;",128,0,0,0 +.stabs "short unsigned int:t8=r1;0;65535;",128,0,0,0 +.stabs "long long unsigned int:t9=r1;0;-1;",128,0,0,0 +.stabs "signed char:t10=r1;-128;127;",128,0,0,0 +.stabs "unsigned char:t11=r1;0;255;",128,0,0,0 +.stabs "float:t12=r1;4;0;",128,0,0,0 +.stabs "double:t13=r1;8;0;",128,0,0,0 +.stabs "long double:t14=r1;8;0;",128,0,0,0 +.stabs "void:t15=15",128,0,0,0 +.stabs "msg:G16=ar1;0;13;2",32,0,0,0 + .global msg +.section ".rodata" + .align 8 + .type msg,#object + .size msg,14 +msg: + .asciz "hello, world!" + .align 8 +.LLC0: + .asciz "%s\n" +.section ".text" + .align 4 +.stabs "main:F1",36,0,0,main +.stabs "argc:P1",64,0,0,24 +.stabs "argv:P17=*18=*2",64,0,0,25 + .global main + .type main,#function + .proc 04 +main: +.stabn 68,0,4,.LM1-main +.LM1: + !#PROLOGUE# 0 + save %sp,-112,%sp + !#PROLOGUE# 1 +.stabn 68,0,5,.LM2-main +.LM2: +.LLBB2: + sethi %hi(.LLC0),%o0 + or %o0,%lo(.LLC0),%o0 + sethi %hi(msg),%o1 + call printf,0 + or %o1,%lo(msg),%o1 +.stabn 68,0,6,.LM3-main +.LM3: +.stabn 68,0,7,.LM4-main +.LM4: +.LLBE2: + ret + restore %g0,0,%o0 +.LLfe1: + .size main,.LLfe1-main +.stabn 192,0,0,.LLBB2-main +.stabn 224,0,0,.LLBE2-main + .ident "GCC: (GNU) cygnus-2.3.3" diff --git a/gas/testsuite/gas/sparc/asi.s b/gas/testsuite/gas/sparc/asi.s new file mode 100644 index 0000000..c56fe9c --- /dev/null +++ b/gas/testsuite/gas/sparc/asi.s @@ -0,0 +1,28 @@ +# Test asi's. + .text + lduwa [%g1]0,%g2 + lduwa [%g1]255,%g2 + lduwa [%g1]#ASI_AIUP,%g2 + lduwa [%g1]#ASI_AIUS,%g2 + lduwa [%g1]#ASI_AIUP_L,%g2 + lduwa [%g1]#ASI_AIUS_L,%g2 + lduwa [%g1]#ASI_P,%g2 + lduwa [%g1]#ASI_S,%g2 + lduwa [%g1]#ASI_PNF,%g2 + lduwa [%g1]#ASI_SNF,%g2 + lduwa [%g1]#ASI_P_L,%g2 + lduwa [%g1]#ASI_S_L,%g2 + lduwa [%g1]#ASI_PNF_L,%g2 + lduwa [%g1]#ASI_SNF_L,%g2 + lduwa [%g1]#ASI_AS_IF_USER_PRIMARY,%g2 + lduwa [%g1]#ASI_AS_IF_USER_SECONDARY,%g2 + lduwa [%g1]#ASI_AS_IF_USER_PRIMARY_LITTLE,%g2 + lduwa [%g1]#ASI_AS_IF_USER_SECONDARY_LITTLE,%g2 + lduwa [%g1]#ASI_PRIMARY,%g2 + lduwa [%g1]#ASI_SECONDARY,%g2 + lduwa [%g1]#ASI_PRIMARY_NOFAULT,%g2 + lduwa [%g1]#ASI_SECONDARY_NOFAULT,%g2 + lduwa [%g1]#ASI_PRIMARY_LITTLE,%g2 + lduwa [%g1]#ASI_SECONDARY_LITTLE,%g2 + lduwa [%g1]#ASI_PRIMARY_NOFAULT_LITTLE,%g2 + lduwa [%g1]#ASI_SECONDARY_NOFAULT_LITTLE,%g2 diff --git a/gas/testsuite/gas/sparc/membar.s b/gas/testsuite/gas/sparc/membar.s new file mode 100644 index 0000000..d805e07 --- /dev/null +++ b/gas/testsuite/gas/sparc/membar.s @@ -0,0 +1,12 @@ +# Test membar args + .text + membar 0 + membar 127 + membar #Sync|#MemIssue|#Lookaside|#StoreStore|#LoadStore|#StoreLoad|#LoadLoad + membar #Sync + membar #MemIssue + membar #Lookaside + membar #StoreStore + membar #LoadStore + membar #StoreLoad + membar #LoadLoad diff --git a/gas/testsuite/gas/sparc/mism-1.s b/gas/testsuite/gas/sparc/mism-1.s new file mode 100644 index 0000000..fac5e48 --- /dev/null +++ b/gas/testsuite/gas/sparc/mism-1.s @@ -0,0 +1,22 @@ +! Test architecture mismatch warnings. +! We don't test every possible mismatch, we just want to be reasonable sure +! the mismatch checking code works. +! +! { dg-do assemble { target sparc*-*-* } } +! { dg-options -Av6 } + +! sparclite + + divscc %g1,%g2,%g3 ! { dg-error "mismatch|sparclite" "sparclite divscc mismatch" } + + scan %g1,%g2,%g3 ! { dg-error "mismatch|sparclite" "sparclite scan mismatch" } + +! v9 + + movrz %g1,%g2,%g3 ! { dg-error "mismatch|v9" "v9 fp reg mismatch" } + +! v9a + + shutdown ! { dg-error "mismatch|v9a" "v9a shutdown mismatch" } + +foo: diff --git a/gas/testsuite/gas/sparc/prefetch.s b/gas/testsuite/gas/sparc/prefetch.s new file mode 100644 index 0000000..18c68bb --- /dev/null +++ b/gas/testsuite/gas/sparc/prefetch.s @@ -0,0 +1,11 @@ + .text + prefetch [%g1],0 + prefetch [%g1],31 + prefetch [%g1],#n_reads + prefetch [%g1],#one_read + prefetch [%g1],#n_writes + prefetch [%g1],#one_write + prefetcha [%g1]#ASI_AIUP,0 + prefetcha [%g1]%asi,31 + prefetcha [%g1]#ASI_AIUS,#n_reads + prefetcha [%g1]%asi,#one_read diff --git a/gas/testsuite/gas/sparc/rdpr.s b/gas/testsuite/gas/sparc/rdpr.s new file mode 100644 index 0000000..f44619c --- /dev/null +++ b/gas/testsuite/gas/sparc/rdpr.s @@ -0,0 +1,19 @@ +# Test rdpr + .text + rdpr %tpc,%g1 + rdpr %tnpc,%g2 + rdpr %tstate,%g3 + rdpr %tt,%g4 + rdpr %tick,%g5 + rdpr %tba,%g6 + rdpr %pstate,%g7 + rdpr %tl,%o0 + rdpr %pil,%o1 + rdpr %cwp,%o2 + rdpr %cansave,%o3 + rdpr %canrestore,%o4 + rdpr %cleanwin,%o5 + rdpr %otherwin,%o6 + rdpr %wstate,%o7 + rdpr %fq,%l0 + rdpr %ver,%l1 diff --git a/gas/testsuite/gas/sparc/reloc64.s b/gas/testsuite/gas/sparc/reloc64.s new file mode 100644 index 0000000..9ead6af --- /dev/null +++ b/gas/testsuite/gas/sparc/reloc64.s @@ -0,0 +1,48 @@ +# sparc64 special relocs + +foo: + sethi %uhi(0x1234567800000000),%g1 + or %g1,%ulo(0x1234567800000000),%g1 + nop + sethi %uhi(foo),%g1 + or %g1,%ulo(foo),%g1 + nop + sethi %uhi(foo+0x1234567800000000),%g1 + or %g1,%ulo(foo+0x1234567800000000),%g1 + nop + sethi %hh(0xfedcba9876543210),%g1 + or %g1,%hm(0xfedcba9876543210),%g1 + sethi %lm(0xfedcba9876543210),%g2 + or %g1,%lo(0xfedcba9876543210),%g2 + nop + sethi %hh(foo),%g1 + or %g1,%hm(foo),%g1 + sethi %lm(foo),%g2 + or %g1,%lo(foo),%g2 + nop + sethi %hh(foo+0xfedcba9876543210),%g1 + or %g1,%hm(foo+0xfedcba9876543210),%g1 + sethi %lm(foo+0xfedcba9876543210),%g2 + or %g1,%lo(foo+0xfedcba9876543210),%g2 + nop + sethi %h44(0xa9876543210),%g1 + or %g1,%m44(0xa9876543210),%g1 + or %g1,%l44(0xa9876543210),%g1 + nop + sethi %h44(foo),%g1 + or %g1,%m44(foo),%g1 + or %g1,%l44(foo),%g1 + nop + sethi %h44(foo+0xa9876543210),%g1 + or %g1,%m44(foo+0xa9876543210),%g1 + or %g1,%l44(foo+0xa9876543210),%g1 + nop + sethi %hix(0xffffffff76543210),%g1 + xor %g1,%lox(0xffffffff76543210),%g1 + nop + sethi %hix(foo),%g1 + xor %g1,%lox(foo),%g1 + nop + sethi %hix(foo+0xffffffff76543210),%g1 + xor %g1,%lox(foo+0xffffffff76543210),%g1 + nop diff --git a/gas/testsuite/gas/sparc/set64.s b/gas/testsuite/gas/sparc/set64.s new file mode 100644 index 0000000..92dc931 --- /dev/null +++ b/gas/testsuite/gas/sparc/set64.s @@ -0,0 +1,43 @@ +# sparc64 set insn handling (includes set, setuw, setsw, setx) +# FIXME: setuw,setsw not tested for yet. + +foo: + set foo,%g2 + set 0x76543210,%g3 + set 0,%g4 + set 65535,%g5 + + setx foo,%g1,%g2 + + setx -1,%g1,%g3 + setx 0,%g1,%g3 + setx 1,%g1,%g3 + setx 4095,%g1,%g3 + setx 4096,%g1,%g3 + setx -4096,%g1,%g3 + setx -4097,%g1,%g3 + setx 65535,%g1,%g3 + setx -65536,%g1,%g3 + + setx 2147483647,%g1,%g4 + setx 2147483648,%g1,%g4 + setx -2147483648,%g1,%g4 + setx -2147483649,%g1,%g4 + setx 4294967295,%g1,%g4 + setx 4294967296,%g1,%g4 + +! GAS doesn't handle large base10 numbers yet. +! setx 9223372036854775807,%g1,%g5 +! setx 9223372036854775808,%g1,%g5 +! setx -9223372036854775808,%g1,%g5 +! setx -9223372036854775809,%g1,%g5 + + setx 0x7fffffffffffffff,%g1,%g5 + setx 0x8000000000000000,%g1,%g5 ! test only hh22 needed + setx 0xffffffff00000000,%g1,%g5 ! test only hm10 needed + setx 0xffffffff80000000,%g1,%g5 ! test sign-ext of lower 32 + setx 0xffff0000ffff0000,%g1,%g5 ! test hh22,hi22 + setx 0xffff000000000001,%g1,%g5 ! test hh22,lo10 + setx 0x00000001ffff0001,%g1,%g5 ! test hm10,hi22,lo10 + setx 0x00000001ffff0000,%g1,%g5 ! test hm10,hi22 + setx 0x0000000100000001,%g1,%g5 ! test hm10,lo10 diff --git a/gas/testsuite/gas/sparc/splet-2.s b/gas/testsuite/gas/sparc/splet-2.s new file mode 100644 index 0000000..5d34495 --- /dev/null +++ b/gas/testsuite/gas/sparc/splet-2.s @@ -0,0 +1,21 @@ +! Test sparclet coprocessor registers. + + .text + .global start +start: + + cwrcxt %g1,%ccsr + cwrcxt %g1,%ccfr + cwrcxt %g1,%cccrcr + cwrcxt %g1,%ccpr + cwrcxt %g1,%ccsr2 + cwrcxt %g1,%cccrr + cwrcxt %g1,%ccrstr + + crdcxt %ccsr,%g1 + crdcxt %ccfr,%g1 + crdcxt %cccrcr,%g1 + crdcxt %ccpr,%g1 + crdcxt %ccsr2,%g1 + crdcxt %cccrr,%g1 + crdcxt %ccrstr,%g1 diff --git a/gas/testsuite/gas/sparc/splet.s b/gas/testsuite/gas/sparc/splet.s new file mode 100644 index 0000000..0dfd507 --- /dev/null +++ b/gas/testsuite/gas/sparc/splet.s @@ -0,0 +1,211 @@ + .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 diff --git a/gas/testsuite/gas/sparc/synth.s b/gas/testsuite/gas/sparc/synth.s new file mode 100644 index 0000000..9e06628 --- /dev/null +++ b/gas/testsuite/gas/sparc/synth.s @@ -0,0 +1,7 @@ +# common (v8 or v9) synthetic insns + .text +foo: + not %g1,%g2 + not %g1 + neg %g1,%g2 + neg %g1 diff --git a/gas/testsuite/gas/sparc/synth64.s b/gas/testsuite/gas/sparc/synth64.s new file mode 100644 index 0000000..659f3c2 --- /dev/null +++ b/gas/testsuite/gas/sparc/synth64.s @@ -0,0 +1,16 @@ +# sparc64 synthetic insns + .text + iprefetch foo +foo: + signx %g1,%g2 + clruw %g1,%g2 + cas [%g1],%g2,%g3 + casl [%g1],%g2,%g3 + casx [%g1],%g2,%g3 + casxl [%g1],%g2,%g3 + + clrx [%g1+%g2] + clrx [%g1] + clrx [%g1+1] + clrx [42+%g1] + clrx [0x42] diff --git a/gas/testsuite/gas/sparc/wrpr.s b/gas/testsuite/gas/sparc/wrpr.s new file mode 100644 index 0000000..67fd450 --- /dev/null +++ b/gas/testsuite/gas/sparc/wrpr.s @@ -0,0 +1,17 @@ +# Test wrpr + .text + wrpr %g1,%tpc + wrpr %g2,%tnpc + wrpr %g3,%tstate + wrpr %g4,%tt + wrpr %g5,%tick + wrpr %g6,%tba + wrpr %g7,%pstate + wrpr %o0,%tl + wrpr %o1,%pil + wrpr %o2,%cwp + wrpr %o3,%cansave + wrpr %o4,%canrestore + wrpr %o5,%cleanwin + wrpr %o6,%otherwin + wrpr %o7,%wstate diff --git a/gas/testsuite/gas/sun4/addend.s b/gas/testsuite/gas/sun4/addend.s new file mode 100644 index 0000000..18eb108 --- /dev/null +++ b/gas/testsuite/gas/sun4/addend.s @@ -0,0 +1,11 @@ + .global foo +foo: + nop + nop + ba foo1+0x4 + ba foo1+0x4 + ba foo1 + ba foo1 + nop + .word foo1 + .word foo1+4 diff --git a/gas/testsuite/gas/v850/arith.s b/gas/testsuite/gas/v850/arith.s new file mode 100644 index 0000000..e72140f --- /dev/null +++ b/gas/testsuite/gas/v850/arith.s @@ -0,0 +1,24 @@ + + .text + .global arith_opcodes +arith_opcodes: + add r5,r6 + add 5,r6 + addi 7,r5,r6 + divh r5,r6 + mulh r5,r6 + mulh 5,r6 + mulhi 7,r5,r6 + sar r5,r6 + sar 31,r6 + satadd r5,r6 + satadd 5,r6 + satsub r5,r6 + satsubi 7,r5,r6 + satsubr r5,r6 + shl r5,r6 + shl 31,r6 + shr r5,r6 + shr 31,r6 + sub r5,r6 + subr r5,r6 diff --git a/gas/testsuite/gas/v850/basic.exp b/gas/testsuite/gas/v850/basic.exp old mode 100644 new mode 100755 diff --git a/gas/testsuite/gas/v850/bit.s b/gas/testsuite/gas/v850/bit.s new file mode 100644 index 0000000..aa1ac05 --- /dev/null +++ b/gas/testsuite/gas/v850/bit.s @@ -0,0 +1,8 @@ + + .text + .global bit +bit: + clr1 5,16[r6] + not1 5,16[r6] + set1 5,16[r6] + tst1 5,16[r6] diff --git a/gas/testsuite/gas/v850/branch.s b/gas/testsuite/gas/v850/branch.s new file mode 100644 index 0000000..a1c1b42 --- /dev/null +++ b/gas/testsuite/gas/v850/branch.s @@ -0,0 +1,24 @@ + + .text + .global bcc +bcc: + bgt bcc + bge bcc + blt bcc + ble bcc + bh bcc + bnl bcc + bl bcc + bnh bcc + be bcc + bne bcc + bv bcc + bnv bcc + bn bcc + bp bcc + bc bcc + bnc bcc + bz bcc + bnz bcc + br bcc + bsa bcc diff --git a/gas/testsuite/gas/v850/compare.s b/gas/testsuite/gas/v850/compare.s new file mode 100644 index 0000000..d41c8a8 --- /dev/null +++ b/gas/testsuite/gas/v850/compare.s @@ -0,0 +1,28 @@ + + .text + .global compare +compare: + cmp r5,r6 + cmp 5,r6 + setf v,r5 + setf nv,r5 + setf c,r5 + setf l,r5 + setf nc,r5 + setf nl,r5 + setf z,r5 + setf nz,r5 + setf nh,r5 + setf h,r5 + setf s,r5 + setf n,r5 + setf ns,r5 + setf p,r5 + setf t,r5 + setf sa,r5 + setf lt,r5 + setf ge,r5 + setf le,r5 + setf gt,r5 + tst r5,r6 + diff --git a/gas/testsuite/gas/v850/fepsw.s b/gas/testsuite/gas/v850/fepsw.s new file mode 100644 index 0000000..e20333c --- /dev/null +++ b/gas/testsuite/gas/v850/fepsw.s @@ -0,0 +1,2 @@ + .text + ldsr r17,fepsw diff --git a/gas/testsuite/gas/v850/hilo.s b/gas/testsuite/gas/v850/hilo.s new file mode 100644 index 0000000..5067e56 --- /dev/null +++ b/gas/testsuite/gas/v850/hilo.s @@ -0,0 +1,5 @@ + + .text + movea lo(0xdeadbeef),r0,r1 + movhi hi(0xdeadbeef),r1,r1 + movhi hi0(0xdeadbeef),r1,r1 diff --git a/gas/testsuite/gas/v850/hilo2.s b/gas/testsuite/gas/v850/hilo2.s new file mode 100644 index 0000000..4a8249f --- /dev/null +++ b/gas/testsuite/gas/v850/hilo2.s @@ -0,0 +1,4 @@ + .text + .org 0x10000 + movea hi(blah),r0,r0 +blah: diff --git a/gas/testsuite/gas/v850/jumps.s b/gas/testsuite/gas/v850/jumps.s new file mode 100644 index 0000000..173164b --- /dev/null +++ b/gas/testsuite/gas/v850/jumps.s @@ -0,0 +1,8 @@ + + .text + .global jumps +jumps: + jarl jumps,r5 + jmp [r5] + jr jumps + diff --git a/gas/testsuite/gas/v850/logical.s b/gas/testsuite/gas/v850/logical.s new file mode 100644 index 0000000..ab00b3b --- /dev/null +++ b/gas/testsuite/gas/v850/logical.s @@ -0,0 +1,11 @@ + + .text + .global logicals +logicals: + and r5,r6 + andi 7,r5,r6 + not r5,r6 + or r5,r6 + ori 7,r5,r6 + xor r5,r6 + xori 7,r5,r6 diff --git a/gas/testsuite/gas/v850/mem.s b/gas/testsuite/gas/v850/mem.s new file mode 100644 index 0000000..9c69cea --- /dev/null +++ b/gas/testsuite/gas/v850/mem.s @@ -0,0 +1,16 @@ + + .text + .global memory +memory: + ld.b 5[r5],r6 + ld.h 4[r5],r6 + ld.w 4[r5],r6 + sld.b 64[ep],r6 + sld.h 128[ep],r6 + sld.w 128[ep],r6 + st.b r5,5[r6] + st.h r5,4[r6] + st.w r5,4[r6] + sst.b r6,64[ep] + sst.h r6,128[ep] + sst.w r6,128[ep] diff --git a/gas/testsuite/gas/v850/misc.s b/gas/testsuite/gas/v850/misc.s new file mode 100644 index 0000000..52c4e4b --- /dev/null +++ b/gas/testsuite/gas/v850/misc.s @@ -0,0 +1,13 @@ + + .text + .global misc +misc: + di + ei + halt + nop + reti + trap 0 + trap 31 + ldsr r7,psw + stsr psw,r7 diff --git a/gas/testsuite/gas/v850/move.s b/gas/testsuite/gas/v850/move.s new file mode 100644 index 0000000..cba6fae --- /dev/null +++ b/gas/testsuite/gas/v850/move.s @@ -0,0 +1,8 @@ + + .text + .global move +move: + mov r5,r6 + mov 5,r6 + movea 7,r5,r6 + movhi 7,r5,r6 diff --git a/gas/testsuite/gas/v850/range.s b/gas/testsuite/gas/v850/range.s new file mode 100644 index 0000000..42accf4 --- /dev/null +++ b/gas/testsuite/gas/v850/range.s @@ -0,0 +1,2 @@ + .text + ld.b 0xff62[r0],r0 diff --git a/gas/testsuite/gas/v850/reloc.s b/gas/testsuite/gas/v850/reloc.s new file mode 100644 index 0000000..6738d26 --- /dev/null +++ b/gas/testsuite/gas/v850/reloc.s @@ -0,0 +1,7 @@ + .text + movea lo(foo),r0,r1 + movhi hi(foo),r1,r1 + movhi hi0(foo),r1,r1 + movea zdaoff(_foo),r0,r1 + movhi tdaoff(_foo),ep,r1 + movhi sdaoff(_foo),gp,r1 diff --git a/gas/testsuite/gas/vax/quad.s b/gas/testsuite/gas/vax/quad.s new file mode 100644 index 0000000..78ad4ad --- /dev/null +++ b/gas/testsuite/gas/vax/quad.s @@ -0,0 +1,2 @@ + .text + movq $0xaabbccdd12345678,r0 diff --git a/gas/vmsconf.sh b/gas/vmsconf.sh old mode 100755 new mode 100644 diff --git a/gprof/gprof.info-1 b/gprof/gprof.info-1 deleted file mode 100644 index 1dc4006..0000000 --- a/gprof/gprof.info-1 +++ /dev/null @@ -1,1109 +0,0 @@ -This is Info file gprof.info, produced by Makeinfo version 1.68 from -the input file gprof.texi. - -START-INFO-DIR-ENTRY -* gprof: (gprof). Profiling your program's execution -END-INFO-DIR-ENTRY - - This file documents the gprof profiler of the GNU system. - - Copyright (C) 1988, 1992, 1997, 1998 Free Software Foundation, Inc. - - Permission is granted to make and distribute verbatim copies of this -manual provided the copyright notice and this permission notice are -preserved on all copies. - - Permission is granted to copy and distribute modified versions of -this manual under the conditions for verbatim copying, provided that -the entire resulting derived work is distributed under the terms of a -permission notice identical to this one. - - Permission is granted to copy and distribute translations of this -manual into another language, under the above conditions for modified -versions. - - -File: gprof.info, Node: Top, Next: Introduction, Up: (dir) - -Profiling a Program: Where Does It Spend Its Time? -************************************************** - - This manual describes the GNU profiler, `gprof', and how you can use -it to determine which parts of a program are taking most of the -execution time. We assume that you know how to write, compile, and -execute programs. GNU `gprof' was written by Jay Fenlason. - - This manual was updated August 1997 by Brent Baccala. - -* Menu: - -* Introduction:: What profiling means, and why it is useful. - -* Compiling:: How to compile your program for profiling. -* Executing:: Executing your program to generate profile data -* Invoking:: How to run `gprof', and its options - -* Output:: Interpreting `gprof''s output - -* Inaccuracy:: Potential problems you should be aware of -* How do I?:: Answers to common questions -* Incompatibilities:: (between GNU `gprof' and Unix `gprof'.) -* Details:: Details of how profiling is done - - -File: gprof.info, Node: Introduction, Next: Compiling, Prev: Top, Up: Top - -Introduction to Profiling -************************* - - Profiling allows you to learn where your program spent its time and -which functions called which other functions while it was executing. -This information can show you which pieces of your program are slower -than you expected, and might be candidates for rewriting to make your -program execute faster. It can also tell you which functions are being -called more or less often than you expected. This may help you spot -bugs that had otherwise been unnoticed. - - Since the profiler uses information collected during the actual -execution of your program, it can be used on programs that are too -large or too complex to analyze by reading the source. However, how -your program is run will affect the information that shows up in the -profile data. If you don't use some feature of your program while it -is being profiled, no profile information will be generated for that -feature. - - Profiling has several steps: - - * You must compile and link your program with profiling enabled. - *Note Compiling::. - - * You must execute your program to generate a profile data file. - *Note Executing::. - - * You must run `gprof' to analyze the profile data. *Note - Invoking::. - - The next three chapters explain these steps in greater detail. - - Several forms of output are available from the analysis. - - The "flat profile" shows how much time your program spent in each -function, and how many times that function was called. If you simply -want to know which functions burn most of the cycles, it is stated -concisely here. *Note Flat Profile::. - - The "call graph" shows, for each function, which functions called -it, which other functions it called, and how many times. There is also -an estimate of how much time was spent in the subroutines of each -function. This can suggest places where you might try to eliminate -function calls that use a lot of time. *Note Call Graph::. - - The "annotated source" listing is a copy of the program's source -code, labeled with the number of times each line of the program was -executed. *Note Annotated Source::. - - To better understand how profiling works, you may wish to read a -description of its implementation. *Note Implementation::. - - -File: gprof.info, Node: Compiling, Next: Executing, Prev: Introduction, Up: Top - -Compiling a Program for Profiling -********************************* - - The first step in generating profile information for your program is -to compile and link it with profiling enabled. - - To compile a source file for profiling, specify the `-pg' option when -you run the compiler. (This is in addition to the options you normally -use.) - - To link the program for profiling, if you use a compiler such as `cc' -to do the linking, simply specify `-pg' in addition to your usual -options. The same option, `-pg', alters either compilation or linking -to do what is necessary for profiling. Here are examples: - - cc -g -c myprog.c utils.c -pg - cc -o myprog myprog.o utils.o -pg - - The `-pg' option also works with a command that both compiles and -links: - - cc -o myprog myprog.c utils.c -g -pg - - If you run the linker `ld' directly instead of through a compiler -such as `cc', you may have to specify a profiling startup file -`gcrt0.o' as the first input file instead of the usual startup file -`crt0.o'. In addition, you would probably want to specify the -profiling C library, `libc_p.a', by writing `-lc_p' instead of the -usual `-lc'. This is not absolutely necessary, but doing this gives -you number-of-calls information for standard library functions such as -`read' and `open'. For example: - - ld -o myprog /lib/gcrt0.o myprog.o utils.o -lc_p - - If you compile only some of the modules of the program with `-pg', -you can still profile the program, but you won't get complete -information about the modules that were compiled without `-pg'. The -only information you get for the functions in those modules is the -total time spent in them; there is no record of how many times they -were called, or from where. This will not affect the flat profile -(except that the `calls' field for the functions will be blank), but -will greatly reduce the usefulness of the call graph. - - If you wish to perform line-by-line profiling, you will also need to -specify the `-g' option, instructing the compiler to insert debugging -symbols into the program that match program addresses to source code -lines. *Note Line-by-line::. - - In addition to the `-pg' and `-g' options, you may also wish to -specify the `-a' option when compiling. This will instrument the -program to perform basic-block counting. As the program runs, it will -count how many times it executed each branch of each `if' statement, -each iteration of each `do' loop, etc. This will enable `gprof' to -construct an annotated source code listing showing how many times each -line of code was executed. - - -File: gprof.info, Node: Executing, Next: Invoking, Prev: Compiling, Up: Top - -Executing the Program -********************* - - Once the program is compiled for profiling, you must run it in order -to generate the information that `gprof' needs. Simply run the program -as usual, using the normal arguments, file names, etc. The program -should run normally, producing the same output as usual. It will, -however, run somewhat slower than normal because of the time spent -collecting and the writing the profile data. - - The way you run the program--the arguments and input that you give -it--may have a dramatic effect on what the profile information shows. -The profile data will describe the parts of the program that were -activated for the particular input you use. For example, if the first -command you give to your program is to quit, the profile data will show -the time used in initialization and in cleanup, but not much else. - - Your program will write the profile data into a file called -`gmon.out' just before exiting. If there is already a file called -`gmon.out', its contents are overwritten. There is currently no way to -tell the program to write the profile data under a different name, but -you can rename the file afterward if you are concerned that it may be -overwritten. - - In order to write the `gmon.out' file properly, your program must -exit normally: by returning from `main' or by calling `exit'. Calling -the low-level function `_exit' does not write the profile data, and -neither does abnormal termination due to an unhandled signal. - - The `gmon.out' file is written in the program's *current working -directory* at the time it exits. This means that if your program calls -`chdir', the `gmon.out' file will be left in the last directory your -program `chdir''d to. If you don't have permission to write in this -directory, the file is not written, and you will get an error message. - - Older versions of the GNU profiling library may also write a file -called `bb.out'. This file, if present, contains an human-readable -listing of the basic-block execution counts. Unfortunately, the -appearance of a human-readable `bb.out' means the basic-block counts -didn't get written into `gmon.out'. The Perl script `bbconv.pl', -included with the `gprof' source distribution, will convert a `bb.out' -file into a format readable by `gprof'. - - -File: gprof.info, Node: Invoking, Next: Output, Prev: Executing, Up: Top - -`gprof' Command Summary -*********************** - - After you have a profile data file `gmon.out', you can run `gprof' -to interpret the information in it. The `gprof' program prints a flat -profile and a call graph on standard output. Typically you would -redirect the output of `gprof' into a file with `>'. - - You run `gprof' like this: - - gprof OPTIONS [EXECUTABLE-FILE [PROFILE-DATA-FILES...]] [> OUTFILE] - -Here square-brackets indicate optional arguments. - - If you omit the executable file name, the file `a.out' is used. If -you give no profile data file name, the file `gmon.out' is used. If -any file is not in the proper format, or if the profile data file does -not appear to belong to the executable file, an error message is -printed. - - You can give more than one profile data file by entering all their -names after the executable file name; then the statistics in all the -data files are summed together. - - The order of these options does not matter. - -* Menu: - -* Output Options:: Controlling `gprof''s output style -* Analysis Options:: Controlling how `gprof' analyses its data -* Miscellaneous Options:: -* Depricated Options:: Options you no longer need to use, but which - have been retained for compatibility -* Symspecs:: Specifying functions to include or exclude - - -File: gprof.info, Node: Output Options, Next: Analysis Options, Up: Invoking - -Output Options -============== - - These options specify which of several output formats `gprof' should -produce. - - Many of these options take an optional "symspec" to specify -functions to be included or excluded. These options can be specified -multiple times, with different symspecs, to include or exclude sets of -symbols. *Note Symspecs::. - - Specifying any of these options overrides the default (`-p -q'), -which prints a flat profile and call graph analysis for all functions. - -`-A[SYMSPEC]' -`--annotated-source[=SYMSPEC]' - The `-A' option causes `gprof' to print annotated source code. If - SYMSPEC is specified, print output only for matching symbols. - *Note Annotated Source::. - -`-b' -`--brief' - If the `-b' option is given, `gprof' doesn't print the verbose - blurbs that try to explain the meaning of all of the fields in the - tables. This is useful if you intend to print out the output, or - are tired of seeing the blurbs. - -`-C[SYMSPEC]' -`--exec-counts[=SYMSPEC]' - The `-C' option causes `gprof' to print a tally of functions and - the number of times each was called. If SYMSPEC is specified, - print tally only for matching symbols. - - If the profile data file contains basic-block count records, - specifing the `-l' option, along with `-C', will cause basic-block - execution counts to be tallied and displayed. - -`-i' -`--file-info' - The `-i' option causes `gprof' to display summary information - about the profile data file(s) and then exit. The number of - histogram, call graph, and basic-block count records is displayed. - -`-I DIRS' -`--directory-path=DIRS' - The `-I' option specifies a list of search directories in which to - find source files. Environment variable GPROF_PATH can also be - used to convery this information. Used mostly for annotated - source output. - -`-J[SYMSPEC]' -`--no-annotated-source[=SYMSPEC]' - The `-J' option causes `gprof' not to print annotated source code. - If SYMSPEC is specified, `gprof' prints annotated source, but - excludes matching symbols. - -`-L' -`--print-path' - Normally, source filenames are printed with the path component - suppressed. The `-L' option causes `gprof' to print the full - pathname of source filenames, which is determined from symbolic - debugging information in the image file and is relative to the - directory in which the compiler was invoked. - -`-p[SYMSPEC]' -`--flat-profile[=SYMSPEC]' - The `-p' option causes `gprof' to print a flat profile. If - SYMSPEC is specified, print flat profile only for matching symbols. - *Note Flat Profile::. - -`-P[SYMSPEC]' -`--no-flat-profile[=SYMSPEC]' - The `-P' option causes `gprof' to suppress printing a flat profile. - If SYMSPEC is specified, `gprof' prints a flat profile, but - excludes matching symbols. - -`-q[SYMSPEC]' -`--graph[=SYMSPEC]' - The `-q' option causes `gprof' to print the call graph analysis. - If SYMSPEC is specified, print call graph only for matching symbols - and their children. *Note Call Graph::. - -`-Q[SYMSPEC]' -`--no-graph[=SYMSPEC]' - The `-Q' option causes `gprof' to suppress printing the call graph. - If SYMSPEC is specified, `gprof' prints a call graph, but excludes - matching symbols. - -`-y' -`--separate-files' - This option affects annotated source output only. Normally, gprof - prints annotated source files to standard-output. If this option - is specified, annotated source for a file named `path/filename' is - generated in the file `filename-ann'. - -`-Z[SYMSPEC]' -`--no-exec-counts[=SYMSPEC]' - The `-Z' option causes `gprof' not to print a tally of functions - and the number of times each was called. If SYMSPEC is specified, - print tally, but exclude matching symbols. - -`--function-ordering' - The `--function-ordering' option causes `gprof' to print a - suggested function ordering for the program based on profiling - data. This option suggests an ordering which may improve paging, - tlb and cache behavior for the program on systems which support - arbitrary ordering of functions in an executable. - - The exact details of how to force the linker to place functions in - a particular order is system dependent and out of the scope of this - manual. - -`--file-ordering MAP_FILE' - The `--file-ordering' option causes `gprof' to print a suggested - .o link line ordering for the program based on profiling data. - This option suggests an ordering which may improve paging, tlb and - cache behavior for the program on systems which do not support - arbitrary ordering of functions in an executable. - - Use of the `-a' argument is highly recommended with this option. - - The MAP_FILE argument is a pathname to a file which provides - function name to object file mappings. The format of the file is - similar to the output of the program `nm'. - - c-parse.o:00000000 T yyparse - c-parse.o:00000004 C yyerrflag - c-lang.o:00000000 T maybe_objc_method_name - c-lang.o:00000000 T print_lang_statistics - c-lang.o:00000000 T recognize_objc_keyword - c-decl.o:00000000 T print_lang_identifier - c-decl.o:00000000 T print_lang_type - ... - - GNU `nm' `--extern-only' `--defined-only' `-v' `--print-file-name' - can be used to create MAP_FILE. - -`-T' -`--traditional' - The `-T' option causes `gprof' to print its output in - "traditional" BSD style. - -`-w WIDTH' -`--width=WIDTH' - Sets width of output lines to WIDTH. Currently only used when - printing the function index at the bottom of the call graph. - -`-x' -`--all-lines' - This option affects annotated source output only. By default, - only the lines at the beginning of a basic-block are annotated. - If this option is specified, every line in a basic-block is - annotated by repeating the annotation for the first line. This - behavior is similar to `tcov''s `-a'. - -`--demangle' -`--no-demangle' - These options control whether C++ symbol names should be demangled - when printing output. The default is to demangle symbols. The - `--no-demangle' option may be used to turn off demangling. - - -File: gprof.info, Node: Analysis Options, Next: Miscellaneous Options, Prev: Output Options, Up: Invoking - -Analysis Options -================ - -`-a' -`--no-static' - The `-a' option causes `gprof' to suppress the printing of - statically declared (private) functions. (These are functions - whose names are not listed as global, and which are not visible - outside the file/function/block where they were defined.) Time - spent in these functions, calls to/from them, etc, will all be - attributed to the function that was loaded directly before it in - the executable file. This option affects both the flat profile - and the call graph. - -`-c' -`--static-call-graph' - The `-c' option causes the call graph of the program to be - augmented by a heuristic which examines the text space of the - object file and identifies function calls in the binary machine - code. Since normal call graph records are only generated when - functions are entered, this option identifies children that could - have been called, but never were. Calls to functions that were - not compiled with profiling enabled are also identified, but only - if symbol table entries are present for them. Calls to dynamic - library routines are typically *not* found by this option. - Parents or children identified via this heuristic are indicated in - the call graph with call counts of `0'. - -`-D' -`--ignore-non-functions' - The `-D' option causes `gprof' to ignore symbols which are not - known to be functions. This option will give more accurate - profile data on systems where it is supported (Solaris and HPUX for - example). - -`-k FROM/TO' - The `-k' option allows you to delete from the call graph any arcs - from symbols matching symspec FROM to those matching symspec TO. - -`-l' -`--line' - The `-l' option enables line-by-line profiling, which causes - histogram hits to be charged to individual source code lines, - instead of functions. If the program was compiled with - basic-block counting enabled, this option will also identify how - many times each line of code was executed. While line-by-line - profiling can help isolate where in a large function a program is - spending its time, it also significantly increases the running - time of `gprof', and magnifies statistical inaccuracies. *Note - Sampling Error::. - -`-m NUM' -`--min-count=NUM' - This option affects execution count output only. Symbols that are - executed less than NUM times are suppressed. - -`-n[SYMSPEC]' -`--time[=SYMSPEC]' - The `-n' option causes `gprof', in its call graph analysis, to - only propagate times for symbols matching SYMSPEC. - -`-N[SYMSPEC]' -`--no-time[=SYMSPEC]' - The `-n' option causes `gprof', in its call graph analysis, not to - propagate times for symbols matching SYMSPEC. - -`-z' -`--display-unused-functions' - If you give the `-z' option, `gprof' will mention all functions in - the flat profile, even those that were never called, and that had - no time spent in them. This is useful in conjunction with the - `-c' option for discovering which routines were never called. - - -File: gprof.info, Node: Miscellaneous Options, Next: Depricated Options, Prev: Analysis Options, Up: Invoking - -Miscellaneous Options -===================== - -`-d[NUM]' -`--debug[=NUM]' - The `-d NUM' option specifies debugging options. If NUM is not - specified, enable all debugging. *Note Debugging::. - -`-ONAME' -`--file-format=NAME' - Selects the format of the profile data files. Recognized formats - are `auto' (the default), `bsd', `magic', and `prof' (not yet - supported). - -`-s' -`--sum' - The `-s' option causes `gprof' to summarize the information in the - profile data files it read in, and write out a profile data file - called `gmon.sum', which contains all the information from the - profile data files that `gprof' read in. The file `gmon.sum' may - be one of the specified input files; the effect of this is to - merge the data in the other input files into `gmon.sum'. - - Eventually you can run `gprof' again without `-s' to analyze the - cumulative data in the file `gmon.sum'. - -`-v' -`--version' - The `-v' flag causes `gprof' to print the current version number, - and then exit. - - -File: gprof.info, Node: Depricated Options, Next: Symspecs, Prev: Miscellaneous Options, Up: Invoking - -Depricated Options -================== - - These options have been replaced with newer versions that use - symspecs. - -`-e FUNCTION_NAME' - The `-e FUNCTION' option tells `gprof' to not print information - about the function FUNCTION_NAME (and its children...) in the call - graph. The function will still be listed as a child of any - functions that call it, but its index number will be shown as - `[not printed]'. More than one `-e' option may be given; only one - FUNCTION_NAME may be indicated with each `-e' option. - -`-E FUNCTION_NAME' - The `-E FUNCTION' option works like the `-e' option, but time - spent in the function (and children who were not called from - anywhere else), will not be used to compute the - percentages-of-time for the call graph. More than one `-E' option - may be given; only one FUNCTION_NAME may be indicated with each - `-E' option. - -`-f FUNCTION_NAME' - The `-f FUNCTION' option causes `gprof' to limit the call graph to - the function FUNCTION_NAME and its children (and their - children...). More than one `-f' option may be given; only one - FUNCTION_NAME may be indicated with each `-f' option. - -`-F FUNCTION_NAME' - The `-F FUNCTION' option works like the `-f' option, but only time - spent in the function and its children (and their children...) - will be used to determine total-time and percentages-of-time for - the call graph. More than one `-F' option may be given; only one - FUNCTION_NAME may be indicated with each `-F' option. The `-F' - option overrides the `-E' option. - - Note that only one function can be specified with each `-e', `-E', -`-f' or `-F' option. To specify more than one function, use multiple -options. For example, this command: - - gprof -e boring -f foo -f bar myprogram > gprof.output - -lists in the call graph all functions that were reached from either -`foo' or `bar' and were not reachable from `boring'. - - -File: gprof.info, Node: Symspecs, Prev: Depricated Options, Up: Invoking - -Symspecs -======== - - Many of the output options allow functions to be included or excluded -using "symspecs" (symbol specifications), which observe the following -syntax: - - filename_containing_a_dot - | funcname_not_containing_a_dot - | linenumber - | ( [ any_filename ] `:' ( any_funcname | linenumber ) ) - - Here are some sample symspecs: - -`main.c' - Selects everything in file "main.c"--the dot in the string tells - gprof to interpret the string as a filename, rather than as a - function name. To select a file whose name does not contain a - dot, a trailing colon should be specified. For example, "odd:" is - interpreted as the file named "odd". - -`main' - Selects all functions named "main". Notice that there may be - multiple instances of the same function name because some of the - definitions may be local (i.e., static). Unless a function name - is unique in a program, you must use the colon notation explained - below to specify a function from a specific source file. - Sometimes, function names contain dots. In such cases, it is - necessar to add a leading colon to the name. For example, ":.mul" - selects function ".mul". - -`main.c:main' - Selects function "main" in file "main.c". - -`main.c:134' - Selects line 134 in file "main.c". - - -File: gprof.info, Node: Output, Next: Inaccuracy, Prev: Invoking, Up: Top - -Interpreting `gprof''s Output -***************************** - - `gprof' can produce several different output styles, the most -important of which are described below. The simplest output styles -(file information, execution count, and function and file ordering) are -not described here, but are documented with the respective options that -trigger them. *Note Output Options::. - -* Menu: - -* Flat Profile:: The flat profile shows how much time was spent - executing directly in each function. -* Call Graph:: The call graph shows which functions called which - others, and how much time each function used - when its subroutine calls are included. -* Line-by-line:: `gprof' can analyze individual source code lines -* Annotated Source:: The annotated source listing displays source code - labeled with execution counts - - -File: gprof.info, Node: Flat Profile, Next: Call Graph, Up: Output - -The Flat Profile -================ - - The "flat profile" shows the total amount of time your program spent -executing each function. Unless the `-z' option is given, functions -with no apparent time spent in them, and no apparent calls to them, are -not mentioned. Note that if a function was not compiled for profiling, -and didn't run long enough to show up on the program counter histogram, -it will be indistinguishable from a function that was never called. - - This is part of a flat profile for a small program: - - Flat profile: - - Each sample counts as 0.01 seconds. - % cumulative self self total - time seconds seconds calls ms/call ms/call name - 33.34 0.02 0.02 7208 0.00 0.00 open - 16.67 0.03 0.01 244 0.04 0.12 offtime - 16.67 0.04 0.01 8 1.25 1.25 memccpy - 16.67 0.05 0.01 7 1.43 1.43 write - 16.67 0.06 0.01 mcount - 0.00 0.06 0.00 236 0.00 0.00 tzset - 0.00 0.06 0.00 192 0.00 0.00 tolower - 0.00 0.06 0.00 47 0.00 0.00 strlen - 0.00 0.06 0.00 45 0.00 0.00 strchr - 0.00 0.06 0.00 1 0.00 50.00 main - 0.00 0.06 0.00 1 0.00 0.00 memcpy - 0.00 0.06 0.00 1 0.00 10.11 print - 0.00 0.06 0.00 1 0.00 0.00 profil - 0.00 0.06 0.00 1 0.00 50.00 report - ... - -The functions are sorted by first by decreasing run-time spent in them, -then by decreasing number of calls, then alphabetically by name. The -functions `mcount' and `profil' are part of the profiling aparatus and -appear in every flat profile; their time gives a measure of the amount -of overhead due to profiling. - - Just before the column headers, a statement appears indicating how -much time each sample counted as. This "sampling period" estimates the -margin of error in each of the time figures. A time figure that is not -much larger than this is not reliable. In this example, each sample -counted as 0.01 seconds, suggesting a 100 Hz sampling rate. The -program's total execution time was 0.06 seconds, as indicated by the -`cumulative seconds' field. Since each sample counted for 0.01 -seconds, this means only six samples were taken during the run. Two of -the samples occured while the program was in the `open' function, as -indicated by the `self seconds' field. Each of the other four samples -occured one each in `offtime', `memccpy', `write', and `mcount'. Since -only six samples were taken, none of these values can be regarded as -particularly reliable. In another run, the `self seconds' field for -`mcount' might well be `0.00' or `0.02'. *Note Sampling Error::, for a -complete discussion. - - The remaining functions in the listing (those whose `self seconds' -field is `0.00') didn't appear in the histogram samples at all. -However, the call graph indicated that they were called, so therefore -they are listed, sorted in decreasing order by the `calls' field. -Clearly some time was spent executing these functions, but the paucity -of histogram samples prevents any determination of how much time each -took. - - Here is what the fields in each line mean: - -`% time' - This is the percentage of the total execution time your program - spent in this function. These should all add up to 100%. - -`cumulative seconds' - This is the cumulative total number of seconds the computer spent - executing this functions, plus the time spent in all the functions - above this one in this table. - -`self seconds' - This is the number of seconds accounted for by this function alone. - The flat profile listing is sorted first by this number. - -`calls' - This is the total number of times the function was called. If the - function was never called, or the number of times it was called - cannot be determined (probably because the function was not - compiled with profiling enabled), the "calls" field is blank. - -`self ms/call' - This represents the average number of milliseconds spent in this - function per call, if this function is profiled. Otherwise, this - field is blank for this function. - -`total ms/call' - This represents the average number of milliseconds spent in this - function and its descendants per call, if this function is - profiled. Otherwise, this field is blank for this function. This - is the only field in the flat profile that uses call graph - analysis. - -`name' - This is the name of the function. The flat profile is sorted by - this field alphabetically after the "self seconds" and "calls" - fields are sorted. - - -File: gprof.info, Node: Call Graph, Next: Line-by-line, Prev: Flat Profile, Up: Output - -The Call Graph -============== - - The "call graph" shows how much time was spent in each function and -its children. From this information, you can find functions that, -while they themselves may not have used much time, called other -functions that did use unusual amounts of time. - - Here is a sample call from a small program. This call came from the -same `gprof' run as the flat profile example in the previous chapter. - - granularity: each sample hit covers 2 byte(s) for 20.00% of 0.05 seconds - - index % time self children called name - <spontaneous> - [1] 100.0 0.00 0.05 start [1] - 0.00 0.05 1/1 main [2] - 0.00 0.00 1/2 on_exit [28] - 0.00 0.00 1/1 exit [59] - ----------------------------------------------- - 0.00 0.05 1/1 start [1] - [2] 100.0 0.00 0.05 1 main [2] - 0.00 0.05 1/1 report [3] - ----------------------------------------------- - 0.00 0.05 1/1 main [2] - [3] 100.0 0.00 0.05 1 report [3] - 0.00 0.03 8/8 timelocal [6] - 0.00 0.01 1/1 print [9] - 0.00 0.01 9/9 fgets [12] - 0.00 0.00 12/34 strncmp <cycle 1> [40] - 0.00 0.00 8/8 lookup [20] - 0.00 0.00 1/1 fopen [21] - 0.00 0.00 8/8 chewtime [24] - 0.00 0.00 8/16 skipspace [44] - ----------------------------------------------- - [4] 59.8 0.01 0.02 8+472 <cycle 2 as a whole> [4] - 0.01 0.02 244+260 offtime <cycle 2> [7] - 0.00 0.00 236+1 tzset <cycle 2> [26] - ----------------------------------------------- - - The lines full of dashes divide this table into "entries", one for -each function. Each entry has one or more lines. - - In each entry, the primary line is the one that starts with an index -number in square brackets. The end of this line says which function -the entry is for. The preceding lines in the entry describe the -callers of this function and the following lines describe its -subroutines (also called "children" when we speak of the call graph). - - The entries are sorted by time spent in the function and its -subroutines. - - The internal profiling function `mcount' (*note Flat Profile::.) is -never mentioned in the call graph. - -* Menu: - -* Primary:: Details of the primary line's contents. -* Callers:: Details of caller-lines' contents. -* Subroutines:: Details of subroutine-lines' contents. -* Cycles:: When there are cycles of recursion, - such as `a' calls `b' calls `a'... - - -File: gprof.info, Node: Primary, Next: Callers, Up: Call Graph - -The Primary Line ----------------- - - The "primary line" in a call graph entry is the line that describes -the function which the entry is about and gives the overall statistics -for this function. - - For reference, we repeat the primary line from the entry for function -`report' in our main example, together with the heading line that shows -the names of the fields: - - index % time self children called name - ... - [3] 100.0 0.00 0.05 1 report [3] - - Here is what the fields in the primary line mean: - -`index' - Entries are numbered with consecutive integers. Each function - therefore has an index number, which appears at the beginning of - its primary line. - - Each cross-reference to a function, as a caller or subroutine of - another, gives its index number as well as its name. The index - number guides you if you wish to look for the entry for that - function. - -`% time' - This is the percentage of the total time that was spent in this - function, including time spent in subroutines called from this - function. - - The time spent in this function is counted again for the callers of - this function. Therefore, adding up these percentages is - meaningless. - -`self' - This is the total amount of time spent in this function. This - should be identical to the number printed in the `seconds' field - for this function in the flat profile. - -`children' - This is the total amount of time spent in the subroutine calls - made by this function. This should be equal to the sum of all the - `self' and `children' entries of the children listed directly - below this function. - -`called' - This is the number of times the function was called. - - If the function called itself recursively, there are two numbers, - separated by a `+'. The first number counts non-recursive calls, - and the second counts recursive calls. - - In the example above, the function `report' was called once from - `main'. - -`name' - This is the name of the current function. The index number is - repeated after it. - - If the function is part of a cycle of recursion, the cycle number - is printed between the function's name and the index number (*note - Cycles::.). For example, if function `gnurr' is part of cycle - number one, and has index number twelve, its primary line would be - end like this: - - gnurr <cycle 1> [12] - - -File: gprof.info, Node: Callers, Next: Subroutines, Prev: Primary, Up: Call Graph - -Lines for a Function's Callers ------------------------------- - - A function's entry has a line for each function it was called by. -These lines' fields correspond to the fields of the primary line, but -their meanings are different because of the difference in context. - - For reference, we repeat two lines from the entry for the function -`report', the primary line and one caller-line preceding it, together -with the heading line that shows the names of the fields: - - index % time self children called name - ... - 0.00 0.05 1/1 main [2] - [3] 100.0 0.00 0.05 1 report [3] - - Here are the meanings of the fields in the caller-line for `report' -called from `main': - -`self' - An estimate of the amount of time spent in `report' itself when it - was called from `main'. - -`children' - An estimate of the amount of time spent in subroutines of `report' - when `report' was called from `main'. - - The sum of the `self' and `children' fields is an estimate of the - amount of time spent within calls to `report' from `main'. - -`called' - Two numbers: the number of times `report' was called from `main', - followed by the total number of nonrecursive calls to `report' from - all its callers. - -`name and index number' - The name of the caller of `report' to which this line applies, - followed by the caller's index number. - - Not all functions have entries in the call graph; some options to - `gprof' request the omission of certain functions. When a caller - has no entry of its own, it still has caller-lines in the entries - of the functions it calls. - - If the caller is part of a recursion cycle, the cycle number is - printed between the name and the index number. - - If the identity of the callers of a function cannot be determined, a -dummy caller-line is printed which has `<spontaneous>' as the "caller's -name" and all other fields blank. This can happen for signal handlers. - - -File: gprof.info, Node: Subroutines, Next: Cycles, Prev: Callers, Up: Call Graph - -Lines for a Function's Subroutines ----------------------------------- - - A function's entry has a line for each of its subroutines--in other -words, a line for each other function that it called. These lines' -fields correspond to the fields of the primary line, but their meanings -are different because of the difference in context. - - For reference, we repeat two lines from the entry for the function -`main', the primary line and a line for a subroutine, together with the -heading line that shows the names of the fields: - - index % time self children called name - ... - [2] 100.0 0.00 0.05 1 main [2] - 0.00 0.05 1/1 report [3] - - Here are the meanings of the fields in the subroutine-line for `main' -calling `report': - -`self' - An estimate of the amount of time spent directly within `report' - when `report' was called from `main'. - -`children' - An estimate of the amount of time spent in subroutines of `report' - when `report' was called from `main'. - - The sum of the `self' and `children' fields is an estimate of the - total time spent in calls to `report' from `main'. - -`called' - Two numbers, the number of calls to `report' from `main' followed - by the total number of nonrecursive calls to `report'. This ratio - is used to determine how much of `report''s `self' and `children' - time gets credited to `main'. *Note Assumptions::. - -`name' - The name of the subroutine of `main' to which this line applies, - followed by the subroutine's index number. - - If the caller is part of a recursion cycle, the cycle number is - printed between the name and the index number. - - -File: gprof.info, Node: Cycles, Prev: Subroutines, Up: Call Graph - -How Mutually Recursive Functions Are Described ----------------------------------------------- - - The graph may be complicated by the presence of "cycles of -recursion" in the call graph. A cycle exists if a function calls -another function that (directly or indirectly) calls (or appears to -call) the original function. For example: if `a' calls `b', and `b' -calls `a', then `a' and `b' form a cycle. - - Whenever there are call paths both ways between a pair of functions, -they belong to the same cycle. If `a' and `b' call each other and `b' -and `c' call each other, all three make one cycle. Note that even if -`b' only calls `a' if it was not called from `a', `gprof' cannot -determine this, so `a' and `b' are still considered a cycle. - - The cycles are numbered with consecutive integers. When a function -belongs to a cycle, each time the function name appears in the call -graph it is followed by `<cycle NUMBER>'. - - The reason cycles matter is that they make the time values in the -call graph paradoxical. The "time spent in children" of `a' should -include the time spent in its subroutine `b' and in `b''s -subroutines--but one of `b''s subroutines is `a'! How much of `a''s -time should be included in the children of `a', when `a' is indirectly -recursive? - - The way `gprof' resolves this paradox is by creating a single entry -for the cycle as a whole. The primary line of this entry describes the -total time spent directly in the functions of the cycle. The -"subroutines" of the cycle are the individual functions of the cycle, -and all other functions that were called directly by them. The -"callers" of the cycle are the functions, outside the cycle, that -called functions in the cycle. - - Here is an example portion of a call graph which shows a cycle -containing functions `a' and `b'. The cycle was entered by a call to -`a' from `main'; both `a' and `b' called `c'. - - index % time self children called name - ---------------------------------------- - 1.77 0 1/1 main [2] - [3] 91.71 1.77 0 1+5 <cycle 1 as a whole> [3] - 1.02 0 3 b <cycle 1> [4] - 0.75 0 2 a <cycle 1> [5] - ---------------------------------------- - 3 a <cycle 1> [5] - [4] 52.85 1.02 0 0 b <cycle 1> [4] - 2 a <cycle 1> [5] - 0 0 3/6 c [6] - ---------------------------------------- - 1.77 0 1/1 main [2] - 2 b <cycle 1> [4] - [5] 38.86 0.75 0 1 a <cycle 1> [5] - 3 b <cycle 1> [4] - 0 0 3/6 c [6] - ---------------------------------------- - -(The entire call graph for this program contains in addition an entry -for `main', which calls `a', and an entry for `c', with callers `a' and -`b'.) - - index % time self children called name - <spontaneous> - [1] 100.00 0 1.93 0 start [1] - 0.16 1.77 1/1 main [2] - ---------------------------------------- - 0.16 1.77 1/1 start [1] - [2] 100.00 0.16 1.77 1 main [2] - 1.77 0 1/1 a <cycle 1> [5] - ---------------------------------------- - 1.77 0 1/1 main [2] - [3] 91.71 1.77 0 1+5 <cycle 1 as a whole> [3] - 1.02 0 3 b <cycle 1> [4] - 0.75 0 2 a <cycle 1> [5] - 0 0 6/6 c [6] - ---------------------------------------- - 3 a <cycle 1> [5] - [4] 52.85 1.02 0 0 b <cycle 1> [4] - 2 a <cycle 1> [5] - 0 0 3/6 c [6] - ---------------------------------------- - 1.77 0 1/1 main [2] - 2 b <cycle 1> [4] - [5] 38.86 0.75 0 1 a <cycle 1> [5] - 3 b <cycle 1> [4] - 0 0 3/6 c [6] - ---------------------------------------- - 0 0 3/6 b <cycle 1> [4] - 0 0 3/6 a <cycle 1> [5] - [6] 0.00 0 0 6 c [6] - ---------------------------------------- - - The `self' field of the cycle's primary line is the total time spent -in all the functions of the cycle. It equals the sum of the `self' -fields for the individual functions in the cycle, found in the entry in -the subroutine lines for these functions. - - The `children' fields of the cycle's primary line and subroutine -lines count only subroutines outside the cycle. Even though `a' calls -`b', the time spent in those calls to `b' is not counted in `a''s -`children' time. Thus, we do not encounter the problem of what to do -when the time in those calls to `b' includes indirect recursive calls -back to `a'. - - The `children' field of a caller-line in the cycle's entry estimates -the amount of time spent *in the whole cycle*, and its other -subroutines, on the times when that caller called a function in the -cycle. - - The `calls' field in the primary line for the cycle has two numbers: -first, the number of times functions in the cycle were called by -functions outside the cycle; second, the number of times they were -called by functions in the cycle (including times when a function in -the cycle calls itself). This is a generalization of the usual split -into nonrecursive and recursive calls. - - The `calls' field of a subroutine-line for a cycle member in the -cycle's entry says how many time that function was called from -functions in the cycle. The total of all these is the second number in -the primary line's `calls' field. - - In the individual entry for a function in a cycle, the other -functions in the same cycle can appear as subroutines and as callers. -These lines show how many times each function in the cycle called or -was called from each other function in the cycle. The `self' and -`children' fields in these lines are blank because of the difficulty of -defining meanings for them when recursion is going on. - diff --git a/gprof/gprof.info-2 b/gprof/gprof.info-2 deleted file mode 100644 index 0e319ec..0000000 --- a/gprof/gprof.info-2 +++ /dev/null @@ -1,761 +0,0 @@ -This is Info file gprof.info, produced by Makeinfo version 1.68 from -the input file gprof.texi. - -START-INFO-DIR-ENTRY -* gprof: (gprof). Profiling your program's execution -END-INFO-DIR-ENTRY - - This file documents the gprof profiler of the GNU system. - - Copyright (C) 1988, 1992, 1997, 1998 Free Software Foundation, Inc. - - Permission is granted to make and distribute verbatim copies of this -manual provided the copyright notice and this permission notice are -preserved on all copies. - - Permission is granted to copy and distribute modified versions of -this manual under the conditions for verbatim copying, provided that -the entire resulting derived work is distributed under the terms of a -permission notice identical to this one. - - Permission is granted to copy and distribute translations of this -manual into another language, under the above conditions for modified -versions. - - -File: gprof.info, Node: Line-by-line, Next: Annotated Source, Prev: Call Graph, Up: Output - -Line-by-line Profiling -====================== - - `gprof''s `-l' option causes the program to perform "line-by-line" -profiling. In this mode, histogram samples are assigned not to -functions, but to individual lines of source code. The program usually -must be compiled with a `-g' option, in addition to `-pg', in order to -generate debugging symbols for tracking source code lines. - - The flat profile is the most useful output table in line-by-line -mode. The call graph isn't as useful as normal, since the current -version of `gprof' does not propagate call graph arcs from source code -lines to the enclosing function. The call graph does, however, show -each line of code that called each function, along with a count. - - Here is a section of `gprof''s output, without line-by-line -profiling. Note that `ct_init' accounted for four histogram hits, and -13327 calls to `init_block'. - - Flat profile: - - Each sample counts as 0.01 seconds. - % cumulative self self total - time seconds seconds calls us/call us/call name - 30.77 0.13 0.04 6335 6.31 6.31 ct_init - - - Call graph (explanation follows) - - - granularity: each sample hit covers 4 byte(s) for 7.69% of 0.13 seconds - - index % time self children called name - - 0.00 0.00 1/13496 name_too_long - 0.00 0.00 40/13496 deflate - 0.00 0.00 128/13496 deflate_fast - 0.00 0.00 13327/13496 ct_init - [7] 0.0 0.00 0.00 13496 init_block - - Now let's look at some of `gprof''s output from the same program run, -this time with line-by-line profiling enabled. Note that `ct_init''s -four histogram hits are broken down into four lines of source code - -one hit occured on each of lines 349, 351, 382 and 385. In the call -graph, note how `ct_init''s 13327 calls to `init_block' are broken down -into one call from line 396, 3071 calls from line 384, 3730 calls from -line 385, and 6525 calls from 387. - - Flat profile: - - Each sample counts as 0.01 seconds. - % cumulative self - time seconds seconds calls name - 7.69 0.10 0.01 ct_init (trees.c:349) - 7.69 0.11 0.01 ct_init (trees.c:351) - 7.69 0.12 0.01 ct_init (trees.c:382) - 7.69 0.13 0.01 ct_init (trees.c:385) - - - Call graph (explanation follows) - - - granularity: each sample hit covers 4 byte(s) for 7.69% of 0.13 seconds - - % time self children called name - - 0.00 0.00 1/13496 name_too_long (gzip.c:1440) - 0.00 0.00 1/13496 deflate (deflate.c:763) - 0.00 0.00 1/13496 ct_init (trees.c:396) - 0.00 0.00 2/13496 deflate (deflate.c:727) - 0.00 0.00 4/13496 deflate (deflate.c:686) - 0.00 0.00 5/13496 deflate (deflate.c:675) - 0.00 0.00 12/13496 deflate (deflate.c:679) - 0.00 0.00 16/13496 deflate (deflate.c:730) - 0.00 0.00 128/13496 deflate_fast (deflate.c:654) - 0.00 0.00 3071/13496 ct_init (trees.c:384) - 0.00 0.00 3730/13496 ct_init (trees.c:385) - 0.00 0.00 6525/13496 ct_init (trees.c:387) - [6] 0.0 0.00 0.00 13496 init_block (trees.c:408) - - -File: gprof.info, Node: Annotated Source, Prev: Line-by-line, Up: Output - -The Annotated Source Listing -============================ - - `gprof''s `-A' option triggers an annotated source listing, which -lists the program's source code, each function labeled with the number -of times it was called. You may also need to specify the `-I' option, -if `gprof' can't find the source code files. - - Compiling with `gcc ... -g -pg -a' augments your program with -basic-block counting code, in addition to function counting code. This -enables `gprof' to determine how many times each line of code was -exeucted. For example, consider the following function, taken from -gzip, with line numbers added: - - 1 ulg updcrc(s, n) - 2 uch *s; - 3 unsigned n; - 4 { - 5 register ulg c; - 6 - 7 static ulg crc = (ulg)0xffffffffL; - 8 - 9 if (s == NULL) { - 10 c = 0xffffffffL; - 11 } else { - 12 c = crc; - 13 if (n) do { - 14 c = crc_32_tab[...]; - 15 } while (--n); - 16 } - 17 crc = c; - 18 return c ^ 0xffffffffL; - 19 } - - `updcrc' has at least five basic-blocks. One is the function -itself. The `if' statement on line 9 generates two more basic-blocks, -one for each branch of the `if'. A fourth basic-block results from the -`if' on line 13, and the contents of the `do' loop form the fifth -basic-block. The compiler may also generate additional basic-blocks to -handle various special cases. - - A program augmented for basic-block counting can be analyzed with -`gprof -l -A'. I also suggest use of the `-x' option, which ensures -that each line of code is labeled at least once. Here is `updcrc''s -annotated source listing for a sample `gzip' run: - - ulg updcrc(s, n) - uch *s; - unsigned n; - 2 ->{ - register ulg c; - - static ulg crc = (ulg)0xffffffffL; - - 2 -> if (s == NULL) { - 1 -> c = 0xffffffffL; - 1 -> } else { - 1 -> c = crc; - 1 -> if (n) do { - 26312 -> c = crc_32_tab[...]; - 26312,1,26311 -> } while (--n); - } - 2 -> crc = c; - 2 -> return c ^ 0xffffffffL; - 2 ->} - - In this example, the function was called twice, passing once through -each branch of the `if' statement. The body of the `do' loop was -executed a total of 26312 times. Note how the `while' statement is -annotated. It began execution 26312 times, once for each iteration -through the loop. One of those times (the last time) it exited, while -it branched back to the beginning of the loop 26311 times. - - -File: gprof.info, Node: Inaccuracy, Next: How do I?, Prev: Output, Up: Top - -Inaccuracy of `gprof' Output -**************************** - -* Menu: - -* Sampling Error:: Statistical margins of error -* Assumptions:: Estimating children times - - -File: gprof.info, Node: Sampling Error, Next: Assumptions, Up: Inaccuracy - -Statistical Sampling Error -========================== - - The run-time figures that `gprof' gives you are based on a sampling -process, so they are subject to statistical inaccuracy. If a function -runs only a small amount of time, so that on the average the sampling -process ought to catch that function in the act only once, there is a -pretty good chance it will actually find that function zero times, or -twice. - - By contrast, the number-of-calls and basic-block figures are derived -by counting, not sampling. They are completely accurate and will not -vary from run to run if your program is deterministic. - - The "sampling period" that is printed at the beginning of the flat -profile says how often samples are taken. The rule of thumb is that a -run-time figure is accurate if it is considerably bigger than the -sampling period. - - The actual amount of error can be predicted. For N samples, the -*expected* error is the square-root of N. For example, if the sampling -period is 0.01 seconds and `foo''s run-time is 1 second, N is 100 -samples (1 second/0.01 seconds), sqrt(N) is 10 samples, so the expected -error in `foo''s run-time is 0.1 seconds (10*0.01 seconds), or ten -percent of the observed value. Again, if the sampling period is 0.01 -seconds and `bar''s run-time is 100 seconds, N is 10000 samples, -sqrt(N) is 100 samples, so the expected error in `bar''s run-time is 1 -second, or one percent of the observed value. It is likely to vary -this much *on the average* from one profiling run to the next. -(*Sometimes* it will vary more.) - - This does not mean that a small run-time figure is devoid of -information. If the program's *total* run-time is large, a small -run-time for one function does tell you that that function used an -insignificant fraction of the whole program's time. Usually this means -it is not worth optimizing. - - One way to get more accuracy is to give your program more (but -similar) input data so it will take longer. Another way is to combine -the data from several runs, using the `-s' option of `gprof'. Here is -how: - - 1. Run your program once. - - 2. Issue the command `mv gmon.out gmon.sum'. - - 3. Run your program again, the same as before. - - 4. Merge the new data in `gmon.out' into `gmon.sum' with this command: - - gprof -s EXECUTABLE-FILE gmon.out gmon.sum - - 5. Repeat the last two steps as often as you wish. - - 6. Analyze the cumulative data using this command: - - gprof EXECUTABLE-FILE gmon.sum > OUTPUT-FILE - - -File: gprof.info, Node: Assumptions, Prev: Sampling Error, Up: Inaccuracy - -Estimating `children' Times -=========================== - - Some of the figures in the call graph are estimates--for example, the -`children' time values and all the the time figures in caller and -subroutine lines. - - There is no direct information about these measurements in the -profile data itself. Instead, `gprof' estimates them by making an -assumption about your program that might or might not be true. - - The assumption made is that the average time spent in each call to -any function `foo' is not correlated with who called `foo'. If `foo' -used 5 seconds in all, and 2/5 of the calls to `foo' came from `a', -then `foo' contributes 2 seconds to `a''s `children' time, by -assumption. - - This assumption is usually true enough, but for some programs it is -far from true. Suppose that `foo' returns very quickly when its -argument is zero; suppose that `a' always passes zero as an argument, -while other callers of `foo' pass other arguments. In this program, -all the time spent in `foo' is in the calls from callers other than `a'. -But `gprof' has no way of knowing this; it will blindly and incorrectly -charge 2 seconds of time in `foo' to the children of `a'. - - We hope some day to put more complete data into `gmon.out', so that -this assumption is no longer needed, if we can figure out how. For the -nonce, the estimated figures are usually more useful than misleading. - - -File: gprof.info, Node: How do I?, Next: Incompatibilities, Prev: Inaccuracy, Up: Top - -Answers to Common Questions -*************************** - -How do I find which lines in my program were executed the most times? - Compile your program with basic-block counting enabled, run it, - then use the following pipeline: - - gprof -l -C OBJFILE | sort -k 3 -n -r - - This listing will show you the lines in your code executed most - often, but not necessarily those that consumed the most time. - -How do I find which lines in my program called a particular function? - Use `gprof -l' and lookup the function in the call graph. The - callers will be broken down by function and line number. - -How do I analyze a program that runs for less than a second? - Try using a shell script like this one: - - for i in `seq 1 100`; do - fastprog - mv gmon.out gmon.out.$i - done - - gprof -s fastprog gmon.out.* - - gprof fastprog gmon.sum - - If your program is completely deterministic, all the call counts - will be simple multiples of 100 (i.e. a function called once in - each run will appear with a call count of 100). - - -File: gprof.info, Node: Incompatibilities, Next: Details, Prev: How do I?, Up: Top - -Incompatibilities with Unix `gprof' -*********************************** - - GNU `gprof' and Berkeley Unix `gprof' use the same data file -`gmon.out', and provide essentially the same information. But there -are a few differences. - - * GNU `gprof' uses a new, generalized file format with support for - basic-block execution counts and non-realtime histograms. A magic - cookie and version number allows `gprof' to easily identify new - style files. Old BSD-style files can still be read. *Note File - Format::. - - * For a recursive function, Unix `gprof' lists the function as a - parent and as a child, with a `calls' field that lists the number - of recursive calls. GNU `gprof' omits these lines and puts the - number of recursive calls in the primary line. - - * When a function is suppressed from the call graph with `-e', GNU - `gprof' still lists it as a subroutine of functions that call it. - - * GNU `gprof' accepts the `-k' with its argument in the form - `from/to', instead of `from to'. - - * In the annotated source listing, if there are multiple basic - blocks on the same line, GNU `gprof' prints all of their counts, - seperated by commas. - - * The blurbs, field widths, and output formats are different. GNU - `gprof' prints blurbs after the tables, so that you can see the - tables without skipping the blurbs. - - -File: gprof.info, Node: Details, Prev: Incompatibilities, Up: Top - -Details of Profiling -******************** - -* Menu: - -* Implementation:: How a program collets profiling information -* File Format:: Format of `gmon.out' files -* Internals:: `gprof''s internal operation -* Debugging:: Using `gprof''s `-d' option - - -File: gprof.info, Node: Implementation, Next: File Format, Up: Details - -Implementation of Profiling -=========================== - - Profiling works by changing how every function in your program is -compiled so that when it is called, it will stash away some information -about where it was called from. From this, the profiler can figure out -what function called it, and can count how many times it was called. -This change is made by the compiler when your program is compiled with -the `-pg' option, which causes every function to call `mcount' (or -`_mcount', or `__mcount', depending on the OS and compiler) as one of -its first operations. - - The `mcount' routine, included in the profiling library, is -responsible for recording in an in-memory call graph table both its -parent routine (the child) and its parent's parent. This is typically -done by examining the stack frame to find both the address of the -child, and the return address in the original parent. Since this is a -very machine-dependant operation, `mcount' itself is typically a short -assembly-language stub routine that extracts the required information, -and then calls `__mcount_internal' (a normal C function) with two -arguments - `frompc' and `selfpc'. `__mcount_internal' is responsible -for maintaining the in-memory call graph, which records `frompc', -`selfpc', and the number of times each of these call arcs was -transversed. - - GCC Version 2 provides a magical function -(`__builtin_return_address'), which allows a generic `mcount' function -to extract the required information from the stack frame. However, on -some architectures, most notably the SPARC, using this builtin can be -very computationally expensive, and an assembly language version of -`mcount' is used for performance reasons. - - Number-of-calls information for library routines is collected by -using a special version of the C library. The programs in it are the -same as in the usual C library, but they were compiled with `-pg'. If -you link your program with `gcc ... -pg', it automatically uses the -profiling version of the library. - - Profiling also involves watching your program as it runs, and -keeping a histogram of where the program counter happens to be every -now and then. Typically the program counter is looked at around 100 -times per second of run time, but the exact frequency may vary from -system to system. - - This is done is one of two ways. Most UNIX-like operating systems -provide a `profil()' system call, which registers a memory array with -the kernel, along with a scale factor that determines how the program's -address space maps into the array. Typical scaling values cause every -2 to 8 bytes of address space to map into a single array slot. On -every tick of the system clock (assuming the profiled program is -running), the value of the program counter is examined and the -corresponding slot in the memory array is incremented. Since this is -done in the kernel, which had to interrupt the process anyway to handle -the clock interrupt, very little additional system overhead is required. - - However, some operating systems, most notably Linux 2.0 (and -earlier), do not provide a `profil()' system call. On such a system, -arrangements are made for the kernel to periodically deliver a signal -to the process (typically via `setitimer()'), which then performs the -same operation of examining the program counter and incrementing a slot -in the memory array. Since this method requires a signal to be -delivered to user space every time a sample is taken, it uses -considerably more overhead than kernel-based profiling. Also, due to -the added delay required to deliver the signal, this method is less -accurate as well. - - A special startup routine allocates memory for the histogram and -either calls `profil()' or sets up a clock signal handler. This -routine (`monstartup') can be invoked in several ways. On Linux -systems, a special profiling startup file `gcrt0.o', which invokes -`monstartup' before `main', is used instead of the default `crt0.o'. -Use of this special startup file is one of the effects of using `gcc -... -pg' to link. On SPARC systems, no special startup files are used. -Rather, the `mcount' routine, when it is invoked for the first time -(typically when `main' is called), calls `monstartup'. - - If the compiler's `-a' option was used, basic-block counting is also -enabled. Each object file is then compiled with a static array of -counts, initially zero. In the executable code, every time a new -basic-block begins (i.e. when an `if' statement appears), an extra -instruction is inserted to increment the corresponding count in the -array. At compile time, a paired array was constructed that recorded -the starting address of each basic-block. Taken together, the two -arrays record the starting address of every basic-block, along with the -number of times it was executed. - - The profiling library also includes a function (`mcleanup') which is -typically registered using `atexit()' to be called as the program -exits, and is responsible for writing the file `gmon.out'. Profiling -is turned off, various headers are output, and the histogram is -written, followed by the call-graph arcs and the basic-block counts. - - The output from `gprof' gives no indication of parts of your program -that are limited by I/O or swapping bandwidth. This is because samples -of the program counter are taken at fixed intervals of the program's -run time. Therefore, the time measurements in `gprof' output say -nothing about time that your program was not running. For example, a -part of the program that creates so much data that it cannot all fit in -physical memory at once may run very slowly due to thrashing, but -`gprof' will say it uses little time. On the other hand, sampling by -run time has the advantage that the amount of load due to other users -won't directly affect the output you get. - - -File: gprof.info, Node: File Format, Next: Internals, Prev: Implementation, Up: Details - -Profiling Data File Format -========================== - - The old BSD-derived file format used for profile data does not -contain a magic cookie that allows to check whether a data file really -is a gprof file. Furthermore, it does not provide a version number, -thus rendering changes to the file format almost impossible. GNU -`gprof' uses a new file format that provides these features. For -backward compatibility, GNU `gprof' continues to support the old -BSD-derived format, but not all features are supported with it. For -example, basic-block execution counts cannot be accommodated by the old -file format. - - The new file format is defined in header file `gmon_out.h'. It -consists of a header containing the magic cookie and a version number, -as well as some spare bytes available for future extensions. All data -in a profile data file is in the native format of the host on which the -profile was collected. GNU `gprof' adapts automatically to the -byte-order in use. - - In the new file format, the header is followed by a sequence of -records. Currently, there are three different record types: histogram -records, call-graph arc records, and basic-block execution count -records. Each file can contain any number of each record type. When -reading a file, GNU `gprof' will ensure records of the same type are -compatible with each other and compute the union of all records. For -example, for basic-block execution counts, the union is simply the sum -of all execution counts for each basic-block. - -Histogram Records ------------------ - - Histogram records consist of a header that is followed by an array of -bins. The header contains the text-segment range that the histogram -spans, the size of the histogram in bytes (unlike in the old BSD -format, this does not include the size of the header), the rate of the -profiling clock, and the physical dimension that the bin counts -represent after being scaled by the profiling clock rate. The physical -dimension is specified in two parts: a long name of up to 15 characters -and a single character abbreviation. For example, a histogram -representing real-time would specify the long name as "seconds" and the -abbreviation as "s". This feature is useful for architectures that -support performance monitor hardware (which, fortunately, is becoming -increasingly common). For example, under DEC OSF/1, the "uprofile" -command can be used to produce a histogram of, say, instruction cache -misses. In this case, the dimension in the histogram header could be -set to "i-cache misses" and the abbreviation could be set to "1" -(because it is simply a count, not a physical dimension). Also, the -profiling rate would have to be set to 1 in this case. - - Histogram bins are 16-bit numbers and each bin represent an equal -amount of text-space. For example, if the text-segment is one thousand -bytes long and if there are ten bins in the histogram, each bin -represents one hundred bytes. - -Call-Graph Records ------------------- - - Call-graph records have a format that is identical to the one used in -the BSD-derived file format. It consists of an arc in the call graph -and a count indicating the number of times the arc was traversed during -program execution. Arcs are specified by a pair of addresses: the -first must be within caller's function and the second must be within -the callee's function. When performing profiling at the function -level, these addresses can point anywhere within the respective -function. However, when profiling at the line-level, it is better if -the addresses are as close to the call-site/entry-point as possible. -This will ensure that the line-level call-graph is able to identify -exactly which line of source code performed calls to a function. - -Basic-Block Execution Count Records ------------------------------------ - - Basic-block execution count records consist of a header followed by a -sequence of address/count pairs. The header simply specifies the -length of the sequence. In an address/count pair, the address -identifies a basic-block and the count specifies the number of times -that basic-block was executed. Any address within the basic-address can -be used. - - -File: gprof.info, Node: Internals, Next: Debugging, Prev: File Format, Up: Details - -`gprof''s Internal Operation -============================ - - Like most programs, `gprof' begins by processing its options. -During this stage, it may building its symspec list -(`sym_ids.c:sym_id_add'), if options are specified which use symspecs. -`gprof' maintains a single linked list of symspecs, which will -eventually get turned into 12 symbol tables, organized into six -include/exclude pairs - one pair each for the flat profile -(INCL_FLAT/EXCL_FLAT), the call graph arcs (INCL_ARCS/EXCL_ARCS), -printing in the call graph (INCL_GRAPH/EXCL_GRAPH), timing propagation -in the call graph (INCL_TIME/EXCL_TIME), the annotated source listing -(INCL_ANNO/EXCL_ANNO), and the execution count listing -(INCL_EXEC/EXCL_EXEC). - - After option processing, `gprof' finishes building the symspec list -by adding all the symspecs in `default_excluded_list' to the exclude -lists EXCL_TIME and EXCL_GRAPH, and if line-by-line profiling is -specified, EXCL_FLAT as well. These default excludes are not added to -EXCL_ANNO, EXCL_ARCS, and EXCL_EXEC. - - Next, the BFD library is called to open the object file, verify that -it is an object file, and read its symbol table (`core.c:core_init'), -using `bfd_canonicalize_symtab' after mallocing an appropiate sized -array of asymbols. At this point, function mappings are read (if the -`--file-ordering' option has been specified), and the core text space -is read into memory (if the `-c' option was given). - - `gprof''s own symbol table, an array of Sym structures, is now built. -This is done in one of two ways, by one of two routines, depending on -whether line-by-line profiling (`-l' option) has been enabled. For -normal profiling, the BFD canonical symbol table is scanned. For -line-by-line profiling, every text space address is examined, and a new -symbol table entry gets created every time the line number changes. In -either case, two passes are made through the symbol table - one to -count the size of the symbol table required, and the other to actually -read the symbols. In between the two passes, a single array of type -`Sym' is created of the appropiate length. Finally, -`symtab.c:symtab_finalize' is called to sort the symbol table and -remove duplicate entries (entries with the same memory address). - - The symbol table must be a contiguous array for two reasons. First, -the `qsort' library function (which sorts an array) will be used to -sort the symbol table. Also, the symbol lookup routine -(`symtab.c:sym_lookup'), which finds symbols based on memory address, -uses a binary search algorithm which requires the symbol table to be a -sorted array. Function symbols are indicated with an `is_func' flag. -Line number symbols have no special flags set. Additionally, a symbol -can have an `is_static' flag to indicate that it is a local symbol. - - With the symbol table read, the symspecs can now be translated into -Syms (`sym_ids.c:sym_id_parse'). Remember that a single symspec can -match multiple symbols. An array of symbol tables (`syms') is created, -each entry of which is a symbol table of Syms to be included or -excluded from a particular listing. The master symbol table and the -symspecs are examined by nested loops, and every symbol that matches a -symspec is inserted into the appropriate syms table. This is done -twice, once to count the size of each required symbol table, and again -to build the tables, which have been malloced between passes. From now -on, to determine whether a symbol is on an include or exclude symspec -list, `gprof' simply uses its standard symbol lookup routine on the -appropriate table in the `syms' array. - - Now the profile data file(s) themselves are read -(`gmon_io.c:gmon_out_read'), first by checking for a new-style -`gmon.out' header, then assuming this is an old-style BSD `gmon.out' if -the magic number test failed. - - New-style histogram records are read by `hist.c:hist_read_rec'. For -the first histogram record, allocate a memory array to hold all the -bins, and read them in. When multiple profile data files (or files -with multiple histogram records) are read, the starting address, ending -address, number of bins and sampling rate must match between the -various histograms, or a fatal error will result. If everything -matches, just sum the additional histograms into the existing in-memory -array. - - As each call graph record is read (`call_graph.c:cg_read_rec'), the -parent and child addresses are matched to symbol table entries, and a -call graph arc is created by `cg_arcs.c:arc_add', unless the arc fails -a symspec check against INCL_ARCS/EXCL_ARCS. As each arc is added, a -linked list is maintained of the parent's child arcs, and of the child's -parent arcs. Both the child's call count and the arc's call count are -incremented by the record's call count. - - Basic-block records are read (`basic_blocks.c:bb_read_rec'), but -only if line-by-line profiling has been selected. Each basic-block -address is matched to a corresponding line symbol in the symbol table, -and an entry made in the symbol's bb_addr and bb_calls arrays. Again, -if multiple basic-block records are present for the same address, the -call counts are cumulative. - - A gmon.sum file is dumped, if requested (`gmon_io.c:gmon_out_write'). - - If histograms were present in the data files, assign them to symbols -(`hist.c:hist_assign_samples') by iterating over all the sample bins -and assigning them to symbols. Since the symbol table is sorted in -order of ascending memory addresses, we can simple follow along in the -symbol table as we make our pass over the sample bins. This step -includes a symspec check against INCL_FLAT/EXCL_FLAT. Depending on the -histogram scale factor, a sample bin may span multiple symbols, in -which case a fraction of the sample count is allocated to each symbol, -proportional to the degree of overlap. This effect is rare for normal -profiling, but overlaps are more common during line-by-line profiling, -and can cause each of two adjacent lines to be credited with half a -hit, for example. - - If call graph data is present, `cg_arcs.c:cg_assemble' is called. -First, if `-c' was specified, a machine-dependant routine (`find_call') -scans through each symbol's machine code, looking for subroutine call -instructions, and adding them to the call graph with a zero call count. -A topological sort is performed by depth-first numbering all the -symbols (`cg_dfn.c:cg_dfn'), so that children are always numbered less -than their parents, then making a array of pointers into the symbol -table and sorting it into numerical order, which is reverse topological -order (children appear before parents). Cycles are also detected at -this point, all members of which are assigned the same topological -number. Two passes are now made through this sorted array of symbol -pointers. The first pass, from end to beginning (parents to children), -computes the fraction of child time to propogate to each parent and a -print flag. The print flag reflects symspec handling of -INCL_GRAPH/EXCL_GRAPH, with a parent's include or exclude (print or no -print) property being propagated to its children, unless they -themselves explicitly appear in INCL_GRAPH or EXCL_GRAPH. A second -pass, from beginning to end (children to parents) actually propogates -the timings along the call graph, subject to a check against -INCL_TIME/EXCL_TIME. With the print flag, fractions, and timings now -stored in the symbol structures, the topological sort array is now -discarded, and a new array of pointers is assembled, this time sorted -by propagated time. - - Finally, print the various outputs the user requested, which is now -fairly straightforward. The call graph (`cg_print.c:cg_print') and -flat profile (`hist.c:hist_print') are regurgitations of values already -computed. The annotated source listing -(`basic_blocks.c:print_annotated_source') uses basic-block information, -if present, to label each line of code with call counts, otherwise only -the function call counts are presented. - - The function ordering code is marginally well documented in the -source code itself (`cg_print.c'). Basically, the functions with the -most use and the most parents are placed first, followed by other -functions with the most use, followed by lower use functions, followed -by unused functions at the end. - - -File: gprof.info, Node: Debugging, Prev: Internals, Up: Details - -Debugging `gprof' ------------------ - - If `gprof' was compiled with debugging enabled, the `-d' option -triggers debugging output (to stdout) which can be helpful in -understanding its operation. The debugging number specified is -interpreted as a sum of the following options: - -2 - Topological sort - Monitor depth-first numbering of symbols during call graph analysis - -4 - Cycles - Shows symbols as they are identified as cycle heads - -16 - Tallying - As the call graph arcs are read, show each arc and how the total - calls to each function are tallied - -32 - Call graph arc sorting - Details sorting individual parents/children within each call graph - entry - -64 - Reading histogram and call graph records - Shows address ranges of histograms as they are read, and each call - graph arc - -128 - Symbol table - Reading, classifying, and sorting the symbol table from the object - file. For line-by-line profiling (`-l' option), also shows line - numbers being assigned to memory addresses. - -256 - Static call graph - Trace operation of `-c' option - -512 - Symbol table and arc table lookups - Detail operation of lookup routines - -1024 - Call graph propagation - Shows how function times are propagated along the call graph - -2048 - Basic-blocks - Shows basic-block records as they are read from profile data (only - meaningful with `-l' option) - -4096 - Symspecs - Shows symspec-to-symbol pattern matching operation - -8192 - Annotate source - Tracks operation of `-A' option - - diff --git a/ld/emulparams/armcoff.sh b/ld/emulparams/armcoff.sh old mode 100755 new mode 100644 diff --git a/ld/emulparams/d10velf.sh b/ld/emulparams/d10velf.sh old mode 100755 new mode 100644 diff --git a/ld/emulparams/elf32_sparc.sh b/ld/emulparams/elf32_sparc.sh old mode 100755 new mode 100644 diff --git a/ld/emulparams/elf32b4300.sh b/ld/emulparams/elf32b4300.sh old mode 100755 new mode 100644 diff --git a/ld/emulparams/elf32bmip.sh b/ld/emulparams/elf32bmip.sh old mode 100755 new mode 100644 diff --git a/ld/emulparams/elf32ebmip.sh b/ld/emulparams/elf32ebmip.sh old mode 100755 new mode 100644 diff --git a/ld/emulparams/elf32elmip.sh b/ld/emulparams/elf32elmip.sh old mode 100755 new mode 100644 diff --git a/ld/emulparams/elf32l4300.sh b/ld/emulparams/elf32l4300.sh old mode 100755 new mode 100644 diff --git a/ld/emulparams/elf32lmip.sh b/ld/emulparams/elf32lmip.sh old mode 100755 new mode 100644 diff --git a/ld/emulparams/elf32lppc.sh b/ld/emulparams/elf32lppc.sh old mode 100755 new mode 100644 diff --git a/ld/emulparams/elf32ppc.sh b/ld/emulparams/elf32ppc.sh old mode 100755 new mode 100644 diff --git a/ld/emulparams/elf64_sparc.sh b/ld/emulparams/elf64_sparc.sh old mode 100755 new mode 100644 diff --git a/ld/emulparams/i386go32.sh b/ld/emulparams/i386go32.sh old mode 100755 new mode 100644 diff --git a/ld/emulparams/i386pe.sh b/ld/emulparams/i386pe.sh old mode 100755 new mode 100644 diff --git a/ld/emulparams/mn10200.sh b/ld/emulparams/mn10200.sh old mode 100644 new mode 100755 diff --git a/ld/emulparams/mn10300.sh b/ld/emulparams/mn10300.sh old mode 100644 new mode 100755 diff --git a/ld/emulparams/shelf.sh b/ld/emulparams/shelf.sh old mode 100644 new mode 100755 diff --git a/ld/emulparams/shlelf.sh b/ld/emulparams/shlelf.sh old mode 100644 new mode 100755 diff --git a/ld/emulparams/sparclinux.sh b/ld/emulparams/sparclinux.sh old mode 100644 new mode 100755 diff --git a/ld/ldint.info b/ld/ldint.info deleted file mode 100644 index 5767316..0000000 --- a/ld/ldint.info +++ /dev/null @@ -1,379 +0,0 @@ -This is ldint.info, produced by Makeinfo version 3.12f from -ldint.texinfo. - -START-INFO-DIR-ENTRY -* Ld-Internals: (ldint). The GNU linker internals. -END-INFO-DIR-ENTRY - - This file documents the internals of the GNU linker ld. - - Copyright (C) 1992, 93, 94, 95, 1996 Free Software Foundation, Inc. -Contributed by Cygnus Support. - - Permission is granted to make and distribute verbatim copies of this -manual provided the copyright notice and this permission notice are -preserved on all copies. - - Permission is granted to copy or distribute modified versions of this -manual under the terms of the GPL (for which purpose this text may be -regarded as a program in the language TeX). - - -File: ldint.info, Node: Top, Next: README, Up: (dir) - - - - This file documents the internals of the GNU linker `ld'. It is a -collection of miscellaneous information with little form at this point. -Mostly, it is a repository into which you can put information about GNU -`ld' as you discover it (or as you design changes to `ld'). - -* Menu: - -* README:: The README File -* Emulations:: How linker emulations are generated - - -File: ldint.info, Node: README, Next: Emulations, Prev: Top, Up: Top - -The `README' File -***************** - - Check the `README' file; it often has useful information that does -not appear anywhere else in the directory. - - -File: ldint.info, Node: Emulations, Prev: README, Up: Top - -How linker emulations are generated -*********************************** - - Each linker target has an "emulation". The emulation includes the -default linker script, and certain emulations also modify certain types -of linker behaviour. - - Emulations are created during the build process by the shell script -`genscripts.sh'. - - The `genscripts.sh' script starts by reading a file in the -`emulparams' directory. This is a shell script which sets various -shell variables used by `genscripts.sh' and the other shell scripts it -invokes. - - The `genscripts.sh' script will invoke a shell script in the -`scripttempl' directory in order to create default linker scripts -written in the linker command language. The `scripttempl' script will -be invoked 5 (or, in some cases, 6) times, with different assignments -to shell variables, to create different default scripts. The choice of -script is made based on the command line options. - - After creating the scripts, `genscripts.sh' will invoke yet another -shell script, this time in the `emultempl' directory. That shell -script will create the emulation source file, which contains C code. -This C code permits the linker emulation to override various linker -behaviours. Most targets use the generic emulation code, which is in -`emultempl/generic.em'. - - To summarize, `genscripts.sh' reads three shell scripts: an -emulation parameters script in the `emulparams' directory, a linker -script generation script in the `scripttempl' directory, and an -emulation source file generation script in the `emultempl' directory. - - For example, the Sun 4 linker sets up variables in -`emulparams/sun4.sh', creates linker scripts using -`scripttempl/aout.sc', and creates the emulation code using -`emultempl/sunos.em'. - - Note that the linker can support several emulations simultaneously, -depending upon how it is configured. An emulation can be selected with -the `-m' option. The `-V' option will list all supported emulations. - -* Menu: - -* emulation parameters:: `emulparams' scripts -* linker scripts:: `scripttempl' scripts -* linker emulations:: `emultempl' scripts - - -File: ldint.info, Node: emulation parameters, Next: linker scripts, Up: Emulations - -`emulparams' scripts -==================== - - Each target selects a particular file in the `emulparams' directory -by setting the shell variable `targ_emul' in `configure.tgt'. This -shell variable is used by the `configure' script to control building an -emulation source file. - - Certain conventions are enforced. Suppose the `targ_emul' variable -is set to EMUL in `configure.tgt'. The name of the emulation shell -script will be `emulparams/EMUL.sh'. The `Makefile' must have a target -named `eEMUL.c'; this target must depend upon `emulparams/EMUL.sh', as -well as the appropriate scripts in the `scripttempl' and `emultempl' -directories. The `Makefile' target must invoke `GENSCRIPTS' with two -arguments: EMUL, and the value of the make variable `tdir_EMUL'. The -value of the latter variable will be set by the `configure' script, and -is used to set the default target directory to search. - - By convention, the `emulparams/EMUL.sh' shell script should only set -shell variables. It may set shell variables which are to be -interpreted by the `scripttempl' and the `emultempl' scripts. Certain -shell variables are interpreted directly by the `genscripts.sh' script. - - Here is a list of shell variables interpreted by `genscripts.sh', as -well as some conventional shell variables interpreted by the -`scripttempl' and `emultempl' scripts. - -`SCRIPT_NAME' - This is the name of the `scripttempl' script to use. If - `SCRIPT_NAME' is set to SCRIPT, `genscripts.sh' will use the - script `scriptteml/SCRIPT.sc'. - -`TEMPLATE_NAME' - This is the name of the `emultemlp' script to use. If - `TEMPLATE_NAME' is set to TEMPLATE, `genscripts.sh' will use the - script `emultempl/TEMPLATE.em'. If this variable is not set, the - default value is `generic'. - -`GENERATE_SHLIB_SCRIPT' - If this is set to a nonempty string, `genscripts.sh' will invoke - the `scripttempl' script an extra time to create a shared library - script. *Note linker scripts::. - -`OUTPUT_FORMAT' - This is normally set to indicate the BFD output format use (e.g., - `"a.out-sunos-big"'. The `scripttempl' script will normally use - it in an `OUTPUT_FORMAT' expression in the linker script. - -`ARCH' - This is normally set to indicate the architecture to use (e.g., - `sparc'). The `scripttempl' script will normally use it in an - `OUTPUT_ARCH' expression in the linker script. - -`ENTRY' - Some `scripttempl' scripts use this to set the entry address, in an - `ENTRY' expression in the linker script. - -`TEXT_START_ADDR' - Some `scripttempl' scripts use this to set the start address of the - `.text' section. - -`NONPAGED_TEXT_START_ADDR' - If this is defined, the `genscripts.sh' script sets - `TEXT_START_ADDR' to its value before running the `scripttempl' - script for the `-n' and `-N' options (*note linker scripts::.). - -`SEGMENT_SIZE' - The `genscripts.sh' script uses this to set the default value of - `DATA_ALIGNMENT' when running the `scripttempl' script. - -`TARGET_PAGE_SIZE' - If `SEGMENT_SIZE' is not defined, the `genscripts.sh' script uses - this to define it. - - -File: ldint.info, Node: linker scripts, Next: linker emulations, Prev: emulation parameters, Up: Emulations - -`scripttempl' scripts -===================== - - Each linker target uses a `scripttempl' script to generate the -default linker scripts. The name of the `scripttempl' script is set by -the `SCRIPT_NAME' variable in the `emulparams' script. If -`SCRIPT_NAME' is set to SCRIPT, `genscripts.sh' will invoke -`scripttempl/SCRIPT.sc'. - - The `genscripts.sh' script will invoke the `scripttempl' script 5 or -6 times. Each time it will set the shell variable `LD_FLAG' to a -different value. When the linker is run, the options used will direct -it to select a particular script. (Script selection is controlled by -the `get_script' emulation entry point; this describes the conventional -behaviour). - - The `scripttempl' script should just write a linker script, written -in the linker command language, to standard output. If the emulation -name-the name of the `emulparams' file without the `.sc' extension-is -EMUL, then the output will be directed to `ldscripts/EMUL.EXTENSION' in -the build directory, where EXTENSION changes each time the -`scripttempl' script is invoked. - - Here is the list of values assigned to `LD_FLAG'. - -`(empty)' - The script generated is used by default (when none of the following - cases apply). The output has an extension of `.x'. - -`n' - The script generated is used when the linker is invoked with the - `-n' option. The output has an extension of `.xn'. - -`N' - The script generated is used when the linker is invoked with the - `-N' option. The output has an extension of `.xbn'. - -`r' - The script generated is used when the linker is invoked with the - `-r' option. The output has an extension of `.xr'. - -`u' - The script generated is used when the linker is invoked with the - `-Ur' option. The output has an extension of `.xu'. - -`shared' - The `scripttempl' script is only invoked with `LD_FLAG' set to - this value if `GENERATE_SHLIB_SCRIPT' is defined in the - `emulparams' file. The `emultempl' script must arrange to use - this script at the appropriate time, normally when the linker is - invoked with the `-shared' option. The output has an extension of - `.xs'. - - Besides the shell variables set by the `emulparams' script, and the -`LD_FLAG' variable, the `genscripts.sh' script will set certain -variables for each run of the `scripttempl' script. - -`RELOCATING' - This will be set to a non-empty string when the linker is doing a - final relocation (e.g., all scripts other than `-r' and `-Ur'). - -`CONSTRUCTING' - This will be set to a non-empty string when the linker is building - global constructor and destructor tables (e.g., all scripts other - than `-r'). - -`DATA_ALIGNMENT' - This will be set to an `ALIGN' expression when the output should be - page aligned, or to `.' when generating the `-N' script. - -`CREATE_SHLIB' - This will be set to a non-empty string when generating a `-shared' - script. - - The conventional way to write a `scripttempl' script is to first set -a few shell variables, and then write out a linker script using `cat' -with a here document. The linker script will use variable -substitutions, based on the above variables and those set in the -`emulparams' script, to control its behaviour. - - When there are parts of the `scripttempl' script which should only -be run when doing a final relocation, they should be enclosed within a -variable substitution based on `RELOCATING'. For example, on many -targets special symbols such as `_end' should be defined when doing a -final link. Naturally, those symbols should not be defined when doing -a relocateable link using `-r'. The `scripttempl' script could use a -construct like this to define those symbols: - ${RELOCATING+ _end = .;} - This will do the symbol assignment only if the `RELOCATING' variable -is defined. - - The basic job of the linker script is to put the sections in the -correct order, and at the correct memory addresses. For some targets, -the linker script may have to do some other operations. - - For example, on most MIPS platforms, the linker is responsible for -defining the special symbol `_gp', used to initialize the `$gp' -register. It must be set to the start of the small data section plus -`0x8000'. Naturally, it should only be defined when doing a final -relocation. This will typically be done like this: - ${RELOCATING+ _gp = ALIGN(16) + 0x8000;} - This line would appear just before the sections which compose the -small data section (`.sdata', `.sbss'). All those sections would be -contiguous in memory. - - Many COFF systems build constructor tables in the linker script. The -compiler will arrange to output the address of each global constructor -in a `.ctor' section, and the address of each global destructor in a -`.dtor' section (this is done by defining `ASM_OUTPUT_CONSTRUCTOR' and -`ASM_OUTPUT_DESTRUCTOR' in the `gcc' configuration files). The `gcc' -runtime support routines expect the constructor table to be named -`__CTOR_LIST__'. They expect it to be a list of words, with the first -word being the count of the number of entries. There should be a -trailing zero word. (Actually, the count may be -1 if the trailing -word is present, and the trailing word may be omitted if the count is -correct, but, as the `gcc' behaviour has changed slightly over the -years, it is safest to provide both). Here is a typical way that might -be handled in a `scripttempl' file. - ${CONSTRUCTING+ __CTOR_LIST__ = .;} - ${CONSTRUCTING+ LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2)} - ${CONSTRUCTING+ *(.ctors)} - ${CONSTRUCTING+ LONG(0)} - ${CONSTRUCTING+ __CTOR_END__ = .;} - ${CONSTRUCTING+ __DTOR_LIST__ = .;} - ${CONSTRUCTING+ LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2)} - ${CONSTRUCTING+ *(.dtors)} - ${CONSTRUCTING+ LONG(0)} - ${CONSTRUCTING+ __DTOR_END__ = .;} - The use of `CONSTRUCTING' ensures that these linker script commands -will only appear when the linker is supposed to be building the -constructor and destructor tables. This example is written for a target -which uses 4 byte pointers. - - Embedded systems often need to set a stack address. This is normally -best done by using the `PROVIDE' construct with a default stack -address. This permits the user to easily override the stack address -using the `--defsym' option. Here is an example: - ${RELOCATING+ PROVIDE (__stack = 0x80000000);} - The value of the symbol `__stack' would then be used in the startup -code to initialize the stack pointer. - - -File: ldint.info, Node: linker emulations, Prev: linker scripts, Up: Emulations - -`emultempl' scripts -=================== - - Each linker target uses an `emultempl' script to generate the -emulation code. The name of the `emultempl' script is set by the -`TEMPLATE_NAME' variable in the `emulparams' script. If the -`TEMPLATE_NAME' variable is not set, the default is `generic'. If the -value of `TEMPLATE_NAME' is TEMPLATE, `genscripts.sh' will use -`emultempl/TEMPLATE.em'. - - Most targets use the generic `emultempl' script, -`emultempl/generic.em'. A different `emultempl' script is only needed -if the linker must support unusual actions, such as linking against -shared libraries. - - The `emultempl' script is normally written as a simple invocation of -`cat' with a here document. The document will use a few variable -substitutions. Typically each function names uses a substitution -involving `EMULATION_NAME', for ease of debugging when the linker -supports multiple emulations. - - Every function and variable in the emitted file should be static. -The only globally visible object must be named -`ld_EMULATION_NAME_emulation', where EMULATION_NAME is the name of the -emulation set in `configure.tgt' (this is also the name of the -`emulparams' file without the `.sh' extension). The `genscripts.sh' -script will set the shell variable `EMULATION_NAME' before invoking the -`emultempl' script. - - The `ld_EMULATION_NAME_emulation' variable must be a `struct -ld_emulation_xfer_struct', as defined in `ldemul.h'. It defines a set -of function pointers which are invoked by the linker, as well as -strings for the emulation name (normally set from the shell variable -`EMULATION_NAME' and the default BFD target name (normally set from the -shell variable `OUTPUT_FORMAT' which is normally set by the -`emulparams' file). - - The `genscripts.sh' script will set the shell variable `COMPILE_IN' -when it invokes the `emultempl' script for the default emulation. In -this case, the `emultempl' script should include the linker scripts -directly, and return them from the `get_scripts' entry point. When the -emulation is not the default, the `get_scripts' entry point should just -return a file name. See `emultempl/generic.em' for an example of how -this is done. - - At some point, the linker emulation entry points should be -documented. - - - -Tag Table: -Node: Top685 -Node: README1113 -Node: Emulations1340 -Node: emulation parameters3540 -Node: linker scripts6755 -Node: linker emulations13406 - -End Tag Table diff --git a/ld/testsuite/ld-empic/runtesti.s b/ld/testsuite/ld-empic/runtesti.s new file mode 100644 index 0000000..efa1953 --- /dev/null +++ b/ld/testsuite/ld-empic/runtesti.s @@ -0,0 +1,94 @@ +# Assembler initialization code for actual execution test. + +# This code becomes the start of the execution test program. It is +# responsible for initializing the static data, invoking the C code, +# and returning the result. It is called as though it were a C +# function with an argument of the address of the data segment. + +# We need to know the value of _ftext and _fdata at link time, but we +# have no way to actually get that at runtime. This is because when +# this code is compiled with -membedded-pic, the la instruction will +# be turned into an addiu $gp instruction. We work around this by +# storing the information in words in the .data section. We then load +# the values of these words *before* doing the runtime relocation. + .sdata +text_start: + .word _ftext +data_start: + .word _fdata + + .globl start + .text +start: + # Grab some space on the stack, just as though we were a real + # function. + addiu $sp,$sp,-8 + sw $31,0($sp) + + # Save the $gp register, and set it up for our data section. + sw $gp,4($sp) + + addu $gp,$4,0x8000 # macro + + # The start of the data segment is in $4. + + # Get the address of start into $5 in a position independent + # fashion. + .set noreorder + $LF1 = . + 8 + bal $LF1 + la $5,start-$LF1 # macro + .set reorder + addu $5,$5,$31 + + # Now get the address of _ftext into $6. + la $6,_ftext-start # macro + addu $6,$6,$5 + + # Get the value of _ftext used to link into $7. + lw $7,text_start # macro + + # Get the value of _fdata used to link into $8. + lw $8,data_start # macro + + # Get the address of __runtime_reloc_start into $9. + la $9,__runtime_reloc_start-start # macro + addu $9,$9,$5 + + # Get the address of __runtime_reloc_stop into $10. + la $10,__runtime_reloc_stop-start # macro + addu $10,$10,$5 + + # The words between $9 and $10 are the runtime initialization + # instructions. Step through and relocate them. First set + # $11 and $12 to the values to add to text and data sections, + # respectively. + subu $11,$6,$7 + subu $12,$4,$8 + +1: + bge $9,$10,3f # macro + lw $13,0($9) + and $14,$13,0xfffffffe # macro + move $15,$11 + beq $13,$14,2f + move $15,$12 +2: + addu $14,$14,$4 + lw $24,0($14) + addu $24,$24,$15 + sw $24,0($14) + addiu $9,$9,4 + b 1b +3: + + # Now the statically initialized data has been relocated + # correctly, and we can call the C code which does the actual + # testing. + bal foo + + # We return the value returned by the C code. + lw $31,0($sp) + lw $gp,4($sp) + addu $sp,$sp,8 + j $31 diff --git a/ld/testsuite/ld-scripts/defined.s b/ld/testsuite/ld-scripts/defined.s new file mode 100644 index 0000000..a364bbb --- /dev/null +++ b/ld/testsuite/ld-scripts/defined.s @@ -0,0 +1,2 @@ + .globl defined + defined = 1 diff --git a/ld/testsuite/ld-scripts/phdrs.s b/ld/testsuite/ld-scripts/phdrs.s new file mode 100644 index 0000000..ec1f0d1 --- /dev/null +++ b/ld/testsuite/ld-scripts/phdrs.s @@ -0,0 +1,8 @@ + .text + + .long 1 + + .data + + .long 2 + diff --git a/ld/testsuite/ld-scripts/script.s b/ld/testsuite/ld-scripts/script.s new file mode 100644 index 0000000..d7b65b0 --- /dev/null +++ b/ld/testsuite/ld-scripts/script.s @@ -0,0 +1,8 @@ + .text + .globl text_symbol +text_symbol: + .long 1 + .data + .globl data_symbol +data_symbol: + .long 2 diff --git a/ld/testsuite/ld-scripts/sizeof.s b/ld/testsuite/ld-scripts/sizeof.s new file mode 100644 index 0000000..e221ca3 --- /dev/null +++ b/ld/testsuite/ld-scripts/sizeof.s @@ -0,0 +1 @@ + .space 16 diff --git a/ld/testsuite/ld-sh/sh1.s b/ld/testsuite/ld-sh/sh1.s new file mode 100644 index 0000000..d18e439 --- /dev/null +++ b/ld/testsuite/ld-sh/sh1.s @@ -0,0 +1,13 @@ + .text +foo: +L1: + mov.l L2,r0 + .uses L1 + jsr @r0 + rts + .align 2 +L2: + .long bar +bar: + rts + .align 4 diff --git a/ld/testsuite/ld-sh/start.s b/ld/testsuite/ld-sh/start.s new file mode 100644 index 0000000..2af4c79 --- /dev/null +++ b/ld/testsuite/ld-sh/start.s @@ -0,0 +1,27 @@ + .section .text + .global start +start: + + mov.l stack_k,r15 + + ! call the mainline +L1: + mov.l main_k,r0 + .uses L1 + jsr @r0 + nop + + .align 2 +stack_k: + .long _stack +main_k: + .long _main + + .global _trap +_trap: + trapa #3 + rts + nop + + .section .stack +_stack: .long 0xdeaddead -- 1.7.11.1
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor