(test_template_insn): Document usage.
authorDavid Edelsohn <dje.gcc@gmail.com>
Sat, 8 Apr 1995 23:43:39 +0000 (23:43 +0000)
committerDavid Edelsohn <dje.gcc@gmail.com>
Sat, 8 Apr 1995 23:43:39 +0000 (23:43 +0000)
New parameter `cpu', callers updated.
(main body): Test host/graphics/audio extensions.
Test ext/sex insns.

gas/testsuite/gas/arc/arc.exp

index f8a5a5f2bf64bdd4a0c9358147a05ae16ed786ae..ee293b76d69b6e162b92146a4b035a576d6fae5c 100644 (file)
@@ -1,8 +1,20 @@
 # ARC gas testsuite
 
 # Test an insn from a template .s/.d.
-
-proc test_template_insn { tmpl opcode icode } {
+# The best way to create the .d file is to run the tests without it, let
+# dejagnu crash, run as.new on the just built .s file, run objdump -dr on
+# the result of that, copy the result into the .d file, and edit in the
+# necessary patterns (@OC@, etc.).  Sounds complicated but it's easy.  The
+# catch is that we assume a working assembler is used to build it.  That's
+# obviously not entirely kosher, but once the .d file is created one can
+# verify it's contents over time.
+#
+# Template patterns:
+# @OC@ - placeholder for the opcode
+# @IC+?@ - place holder for the insn code
+# @I3+??@ - place holder for the operation code of code 3 insns.
+
+proc test_template_insn { cpu tmpl opcode icode } {
     global srcdir subdir objdir
 
     # Change @OC@ in the template file to $opcode
@@ -11,6 +23,7 @@ proc test_template_insn { tmpl opcode icode } {
     set out_fd [open $objdir/$opcode.s w]
     # FIXME: check return codes
 
+    puts $out_fd "\t.cpu $cpu\n"
     while { [gets $in_fd line] >= 0 } {
        regsub "@OC@" $line $opcode line
        puts $out_fd $line
@@ -58,40 +71,66 @@ proc test_template_insn { tmpl opcode icode } {
 
 if [istarget arc*-*-*] then {
 
-    test_template_insn math adc 9
-    test_template_insn math add 8
-    test_template_insn math and 12
-    test_template_insn math bic 14
-    test_template_insn math or 13
-    test_template_insn math sbc 11
-    test_template_insn math sub 10
-    test_template_insn math xor 15
-
-    test_template_insn alias mov 12
-    test_template_insn alias rlc 9
-    test_template_insn alias asl 8
+    test_template_insn base math adc 9
+    test_template_insn base math add 8
+    test_template_insn base math and 12
+    test_template_insn base math bic 14
+    test_template_insn base math or 13
+    test_template_insn base math sbc 11
+    test_template_insn base math sub 10
+    test_template_insn base math xor 15
+
+    test_template_insn base alias mov 12
+    test_template_insn base alias rlc 9
+    test_template_insn base alias asl 8
 # `lsl' gets dumped as `asl' so this must be tested elsewhere.
-#   test_template_insn alias lsl 8
+#   test_template_insn base alias lsl 8
 
-    test_template_insn sshift asr 1
-    test_template_insn sshift lsr 2
-    test_template_insn sshift ror 3
-    test_template_insn sshift rrc 4
+    test_template_insn base sshift asr 1
+    test_template_insn base sshift lsr 2
+    test_template_insn base sshift ror 3
+    test_template_insn base sshift rrc 4
 
-    test_template_insn branch b 4
-    test_template_insn branch bl 5
-    test_template_insn branch lp 6
+    test_template_insn base branch b 4
+    test_template_insn base branch bl 5
+    test_template_insn base branch lp 6
 
     run_dump_test "j"
 
-#    test_special "ext" 3
-#    test_special "sex" 3
+    test_template_insn base insn3 sexb 5
+    test_template_insn base insn3 sexw 6
+    test_template_insn base insn3 extb 7
+    test_template_insn base insn3 extw 8
 
     run_dump_test "flag"
+
 #    run_dump_test "ld"
 #    run_dump_test "lr"
 #    run_dump_test "nop"
 #    run_dump_test "st"
 #    run_dump_test "sr"
 
+    # Host extension instructions
+    test_template_insn host math mul64 20
+    test_template_insn host math mulu64 21
+
+    # Graphics extension instructions
+    test_template_insn graphics math mul64 20
+    test_template_insn graphics math mulu64 21
+    test_template_insn graphics math padc 25
+    test_template_insn graphics math padd 24
+    test_template_insn graphics math pand 28
+    test_template_insn graphics math psbc 27
+    test_template_insn graphics math psub 26
+    test_template_insn graphics alias pmov 28
+
+    # Audio extension instructions
+    test_template_insn audio math mac 24
+    test_template_insn audio math macu 25
+    test_template_insn audio math mac.s 26
+    test_template_insn audio math macu.s 27
+    test_template_insn audio math mul 28
+    test_template_insn audio math mulu 29
+    test_template_insn audio insn3 swap 9
+
 }