1# Copyright (C) 1995-2017 Free Software Foundation, Inc. 2 3# This program is free software; you can redistribute it and/or modify 4# it under the terms of the GNU General Public License as published by 5# the Free Software Foundation; either version 3 of the License, or 6# (at your option) any later version. 7# 8# This program is distributed in the hope that it will be useful, 9# but WITHOUT ANY WARRANTY; without even the implied warranty of 10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11# GNU General Public License for more details. 12# 13# You should have received a copy of the GNU General Public License 14# along with this program; if not, write to the Free Software 15# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. 16 17# Please email any bugs, comments, and/or additions to this file to: 18# dejagnu@gnu.org 19 20# Written by Cygnus Support. 21 22if {[istarget "sh*-*-linux-*"] || [istarget "sh*l*-*-netbsdelf*"]} then { 23 global ASFLAGS 24 set ASFLAGS "$ASFLAGS -big" 25} 26if {[istarget "sh64*-*-*"] || [istarget "sh5*-*-*"]} then { 27 global ASFLAGS 28 29 set old_ASFLAGS $ASFLAGS 30 set ASFLAGS "$ASFLAGS --abi=32 --isa=SHcompact" 31} 32 33proc do_fp {} { 34 set testname "fp.s: floating point tests (sh3e)" 35 set x 0 36 37 gas_start "fp.s" "-al" 38 39 # Check the assembled instruction against a table built by the HP assembler 40 # Any differences should be checked by hand -- with the number of problems 41 # I've seen in the HP assembler I don't completely trust it. 42 # 43 # Instead of having a variable for each match string just increment the 44 # total number of matches seen. That's simpler when testing large numbers 45 # of instructions (as these tests to). 46 while 1 { 47 expect { 48 -re "^ +\[0-9\]+ 0000 F008\[^\n\]*\n" { set x [expr $x+1] } 49 -re "^ +\[0-9\]+ 0002 F00A\[^\n\]*\n" { set x [expr $x+1] } 50 -re "^ +\[0-9\]+ 0004 F009\[^\n\]*\n" { set x [expr $x+1] } 51 -re "^ +\[0-9\]+ 0006 F00B\[^\n\]*\n" { set x [expr $x+1] } 52 -re "^ +\[0-9\]+ 0008 F006\[^\n\]*\n" { set x [expr $x+1] } 53 -re "^ +\[0-9\]+ 000a F007\[^\n\]*\n" { set x [expr $x+1] } 54 -re "^ +\[0-9\]+ 000c F10C\[^\n\]*\n" { set x [expr $x+1] } 55 -re "^ +\[0-9\]+ 000e F08D\[^\n\]*\n" { set x [expr $x+1] } 56 -re "^ +\[0-9\]+ 0010 F09D\[^\n\]*\n" { set x [expr $x+1] } 57 -re "^ +\[0-9\]+ 0012 F100\[^\n\]*\n" { set x [expr $x+1] } 58 -re "^ +\[0-9\]+ 0014 F101\[^\n\]*\n" { set x [expr $x+1] } 59 -re "^ +\[0-9\]+ 0016 F102\[^\n\]*\n" { set x [expr $x+1] } 60 -re "^ +\[0-9\]+ 0018 F103\[^\n\]*\n" { set x [expr $x+1] } 61 -re "^ +\[0-9\]+ 001a F10E\[^\n\]*\n" { set x [expr $x+1] } 62 -re "^ +\[0-9\]+ 001c F104\[^\n\]*\n" { set x [expr $x+1] } 63 -re "^ +\[0-9\]+ 001e F105\[^\n\]*\n" { set x [expr $x+1] } 64 -re "^ +\[0-9\]+ 0020 F04D\[^\n\]*\n" { set x [expr $x+1] } 65 -re "^ +\[0-9\]+ 0022 F05D\[^\n\]*\n" { set x [expr $x+1] } 66 -re "^ +\[0-9\]+ 0024 F06D\[^\n\]*\n" { set x [expr $x+1] } 67 -re "^ +\[0-9\]+ 0026 F02D\[^\n\]*\n" { set x [expr $x+1] } 68 -re "^ +\[0-9\]+ 0028 F03D\[^\n\]*\n" { set x [expr $x+1] } 69 -re "^ +\[0-9\]+ 002a F00D\[^\n\]*\n" { set x [expr $x+1] } 70 -re "^ +\[0-9\]+ 002c F01D\[^\n\]*\n" { set x [expr $x+1] } 71 -re "^ +\[0-9\]+ 002e 435A\[^\n\]*\n" { set x [expr $x+1] } 72 -re "^ +\[0-9\]+ 0030 4356\[^\n\]*\n" { set x [expr $x+1] } 73 -re "^ +\[0-9\]+ 0032 436A\[^\n\]*\n" { set x [expr $x+1] } 74 -re "^ +\[0-9\]+ 0034 4366\[^\n\]*\n" { set x [expr $x+1] } 75 -re "^ +\[0-9\]+ 0036 035A\[^\n\]*\n" { set x [expr $x+1] } 76 -re "^ +\[0-9\]+ 0038 4352\[^\n\]*\n" { set x [expr $x+1] } 77 -re "^ +\[0-9\]+ 003a 036A\[^\n\]*\n" { set x [expr $x+1] } 78 -re "^ +\[0-9\]+ 003c 4362\[^\n\]*\n" { set x [expr $x+1] } 79 -re "^ +\[0-9\]+ 0000 08F0\[^\n\]*\n" { set x [expr $x+1] } 80 -re "^ +\[0-9\]+ 0002 0AF0\[^\n\]*\n" { set x [expr $x+1] } 81 -re "^ +\[0-9\]+ 0004 09F0\[^\n\]*\n" { set x [expr $x+1] } 82 -re "^ +\[0-9\]+ 0006 0BF0\[^\n\]*\n" { set x [expr $x+1] } 83 -re "^ +\[0-9\]+ 0008 06F0\[^\n\]*\n" { set x [expr $x+1] } 84 -re "^ +\[0-9\]+ 000a 07F0\[^\n\]*\n" { set x [expr $x+1] } 85 -re "^ +\[0-9\]+ 000c 0CF1\[^\n\]*\n" { set x [expr $x+1] } 86 -re "^ +\[0-9\]+ 000e 8DF0\[^\n\]*\n" { set x [expr $x+1] } 87 -re "^ +\[0-9\]+ 0010 9DF0\[^\n\]*\n" { set x [expr $x+1] } 88 -re "^ +\[0-9\]+ 0012 00F1\[^\n\]*\n" { set x [expr $x+1] } 89 -re "^ +\[0-9\]+ 0014 01F1\[^\n\]*\n" { set x [expr $x+1] } 90 -re "^ +\[0-9\]+ 0016 02F1\[^\n\]*\n" { set x [expr $x+1] } 91 -re "^ +\[0-9\]+ 0018 03F1\[^\n\]*\n" { set x [expr $x+1] } 92 -re "^ +\[0-9\]+ 001a 0EF1\[^\n\]*\n" { set x [expr $x+1] } 93 -re "^ +\[0-9\]+ 001c 04F1\[^\n\]*\n" { set x [expr $x+1] } 94 -re "^ +\[0-9\]+ 001e 05F1\[^\n\]*\n" { set x [expr $x+1] } 95 -re "^ +\[0-9\]+ 0020 4DF0\[^\n\]*\n" { set x [expr $x+1] } 96 -re "^ +\[0-9\]+ 0022 5DF0\[^\n\]*\n" { set x [expr $x+1] } 97 -re "^ +\[0-9\]+ 0024 6DF0\[^\n\]*\n" { set x [expr $x+1] } 98 -re "^ +\[0-9\]+ 0026 2DF0\[^\n\]*\n" { set x [expr $x+1] } 99 -re "^ +\[0-9\]+ 0028 3DF0\[^\n\]*\n" { set x [expr $x+1] } 100 -re "^ +\[0-9\]+ 002a 0DF0\[^\n\]*\n" { set x [expr $x+1] } 101 -re "^ +\[0-9\]+ 002c 1DF0\[^\n\]*\n" { set x [expr $x+1] } 102 -re "^ +\[0-9\]+ 002e 5A43\[^\n\]*\n" { set x [expr $x+1] } 103 -re "^ +\[0-9\]+ 0030 5643\[^\n\]*\n" { set x [expr $x+1] } 104 -re "^ +\[0-9\]+ 0032 6A43\[^\n\]*\n" { set x [expr $x+1] } 105 -re "^ +\[0-9\]+ 0034 6643\[^\n\]*\n" { set x [expr $x+1] } 106 -re "^ +\[0-9\]+ 0036 5A03\[^\n\]*\n" { set x [expr $x+1] } 107 -re "^ +\[0-9\]+ 0038 5243\[^\n\]*\n" { set x [expr $x+1] } 108 -re "^ +\[0-9\]+ 003a 6A03\[^\n\]*\n" { set x [expr $x+1] } 109 -re "^ +\[0-9\]+ 003c 6243\[^\n\]*\n" { set x [expr $x+1] } 110 -re "\[^\n\]*\n" { } 111 timeout { perror "timeout\n"; break } 112 eof { break } 113 } 114 } 115 116 # This was intended to do any cleanup necessary. It kinda looks like it 117 # isn't needed, but just in case, please keep it in for now. 118 gas_finish 119 120 # Did we find what we were looking for? If not, flunk it. 121 if [expr $x==31] then { pass $testname } else { fail $testname } 122} 123 124 125if [istarget sh*-*-*] then { 126 # Test the basic instruction parser. 127 do_fp 128 129 # coff is missing information about the machine type, so everything is 130 # dumped as sh4. 131 if {[istarget sh*-*coff] || [istarget sh*-pe*] || [istarget sh*-rtems]} then { 132 run_dump_test "pcrel-coff" 133 } elseif {[istarget sh*-hms] } { 134 run_dump_test "pcrel-hms" 135 } elseif {![istarget sh64*-*-*] && ![istarget sh5*-*-*] } { 136 # Test DSP instructions 137 run_dump_test "dsp" 138 139 run_dump_test "pcrel" 140 141 run_dump_test "pcrel2" 142 } 143 144 if {[istarget sh*-*elf] || [istarget sh*-*linux*]} then { 145 if {![istarget "sh64*-*-*"] && ![istarget "sh5*-*-*"]} then { 146 run_dump_test "sh4a" 147 run_dump_test "sh4a-fp" 148 149 run_dump_test "sh4a-dsp" 150 run_dump_test "sh4al-dsp" 151 152 run_dump_test "sh2a" 153 run_dump_test "sh2a-pic" 154 } 155 156 run_dump_test "pic" 157 run_dump_test "fdpic" 158 159 # Test TLS. 160 run_dump_test "tlsd" 161 162 run_dump_test "tlspic" 163 164 run_dump_test "tlsnopic" 165 166 # Test --renesas. 167 run_dump_test "renesas-1" 168 169 # Test --allow-reg-prefix. 170 run_dump_test "reg-prefix" 171 172 run_dump_test "too_large" 173 174 run_dump_test "sign-extension" 175 } 176} 177 178if {[info exists old_ASFLAGS]} { 179 global ASFLAGS 180 set ASFLAGS $old_ASFLAGS 181} 182