aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorDavid Faust <david.faust@oracle.com>2020-09-18 09:56:43 -0700
committerDavid Faust <david.faust@oracle.com>2020-09-18 10:04:23 -0700
commit6e25f88828f500fc649aa6eac8b567c7b1e96c59 (patch)
treef2ee690ca5ba7bb36cb1c887a33daf76677311d7 /gas
parente163628395d40485c3b379fa39bdc211ee19d40b (diff)
downloadgdb-6e25f88828f500fc649aa6eac8b567c7b1e96c59.zip
gdb-6e25f88828f500fc649aa6eac8b567c7b1e96c59.tar.gz
gdb-6e25f88828f500fc649aa6eac8b567c7b1e96c59.tar.bz2
bpf: xBPF SDIV, SMOD instructions
Add gas and opcodes support for two xBPF-exclusive ALU operations: SDIV (signed division) and SMOD (signed modulo), and add tests for them in gas. cpu/ * bpf.cpu (insn-op-code-alu): Add SDIV and SMOD. (define-alu-insn-bin, daib): Take ISAs as an argument. (define-alu-instructions): Update calls to daib pmacro with ISAs; add sdiv and smod. gas/ * testsuite/gas/bpf/alu-xbpf.d: New file. * testsuite/gas/bpf/alu-xbpf.s: Likewise. * testsuite/gas/bpf/alu32-xbpf.d: Likewise. * testsuite/gas/bpf/alu32-xbpf.d: Likewise. * testuiste/gas/bpf/bpf.exp: Run new tests. opcodes/ * bpf-desc.c: Regenerate. * bpf-desc.h: Likewise. * bpf-opc.c: Likewise. * bpf-opc.h: Likewise.
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog8
-rw-r--r--gas/testsuite/gas/bpf/alu-xbpf.d17
-rw-r--r--gas/testsuite/gas/bpf/alu-xbpf.s11
-rw-r--r--gas/testsuite/gas/bpf/alu32-xbpf.d17
-rw-r--r--gas/testsuite/gas/bpf/alu32-xbpf.s11
-rw-r--r--gas/testsuite/gas/bpf/bpf.exp3
6 files changed, 67 insertions, 0 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 057feeb..cad6b5c 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,11 @@
+2020-09-018 David Faust <david.faust@oracle.com>
+
+ * testsuite/gas/bpf/alu-xbpf.d: New file.
+ * testsuite/gas/bpf/alu-xbpf.s: Likewise.
+ * testsuite/gas/bpf/alu32-xbpf.d: Likewise.
+ * testsuite/gas/bpf/alu32-xbpf.d: Likewise.
+ * testuiste/gas/bpf/bpf.exp: Run new tests.
+
2020-09-18 Tucker <tuckkern+sourceware@gmail.com>
PR 26556
diff --git a/gas/testsuite/gas/bpf/alu-xbpf.d b/gas/testsuite/gas/bpf/alu-xbpf.d
new file mode 100644
index 0000000..7f97d49
--- /dev/null
+++ b/gas/testsuite/gas/bpf/alu-xbpf.d
@@ -0,0 +1,17 @@
+#as: --EL -mxbpf
+#objdump: -dr -mxbpf
+#name: xBPF ALU64 insns
+
+.*: +file format .*bpf.*
+
+Disassembly of section \.text:
+
+0+ <\.text>:
+ 0: e7 02 00 00 02 00 00 00 sdiv %r2,2
+ 8: e7 03 00 00 fd ff ff ff sdiv %r3,-3
+ 10: e7 04 00 00 ef be ad 7e sdiv %r4,0x7eadbeef
+ 18: ef 25 00 00 00 00 00 00 sdiv %r5,%r2
+ 20: f7 02 00 00 03 00 00 00 smod %r2,3
+ 28: f7 03 00 00 fc ff ff ff smod %r3,-4
+ 30: f7 04 00 00 ef be ad 7e smod %r4,0x7eadbeef
+ 38: ff 25 00 00 00 00 00 00 smod %r5,%r2
diff --git a/gas/testsuite/gas/bpf/alu-xbpf.s b/gas/testsuite/gas/bpf/alu-xbpf.s
new file mode 100644
index 0000000..ebcebd7
--- /dev/null
+++ b/gas/testsuite/gas/bpf/alu-xbpf.s
@@ -0,0 +1,11 @@
+ # Tests for xBPF-specific alu instructions
+ .text
+ sdiv %r2, 2
+ sdiv %r3, -3
+ sdiv %r4, 0x7eadbeef
+ sdiv %r5, %r2
+
+ smod %r2, 3
+ smod %r3, -4
+ smod %r4, 0x7eadbeef
+ smod %r5, %r2
diff --git a/gas/testsuite/gas/bpf/alu32-xbpf.d b/gas/testsuite/gas/bpf/alu32-xbpf.d
new file mode 100644
index 0000000..03411d6
--- /dev/null
+++ b/gas/testsuite/gas/bpf/alu32-xbpf.d
@@ -0,0 +1,17 @@
+#as: --EL -mxbpf
+#objdump: -dr -mxbpf
+#name: xBPF ALU32 insns
+
+.*: +file format .*bpf.*
+
+Disassembly of section \.text:
+
+0+ <\.text>:
+ 0: e4 02 00 00 02 00 00 00 sdiv32 %r2,2
+ 8: e4 03 00 00 fd ff ff ff sdiv32 %r3,-3
+ 10: e4 04 00 00 ef be ad 7e sdiv32 %r4,0x7eadbeef
+ 18: ec 25 00 00 00 00 00 00 sdiv32 %r5,%r2
+ 20: f4 02 00 00 03 00 00 00 smod32 %r2,3
+ 28: f4 03 00 00 fc ff ff ff smod32 %r3,-4
+ 30: f4 04 00 00 ef be ad 7e smod32 %r4,0x7eadbeef
+ 38: fc 25 00 00 00 00 00 00 smod32 %r5,%r2
diff --git a/gas/testsuite/gas/bpf/alu32-xbpf.s b/gas/testsuite/gas/bpf/alu32-xbpf.s
new file mode 100644
index 0000000..9ce5a26
--- /dev/null
+++ b/gas/testsuite/gas/bpf/alu32-xbpf.s
@@ -0,0 +1,11 @@
+ # Tests for xBPF-specific alu instructions
+ .text
+ sdiv32 %r2, 2
+ sdiv32 %r3, -3
+ sdiv32 %r4, 0x7eadbeef
+ sdiv32 %r5, %r2
+
+ smod32 %r2, 3
+ smod32 %r3, -4
+ smod32 %r4, 0x7eadbeef
+ smod32 %r5, %r2
diff --git a/gas/testsuite/gas/bpf/bpf.exp b/gas/testsuite/gas/bpf/bpf.exp
index 242b190..f7c04f4 100644
--- a/gas/testsuite/gas/bpf/bpf.exp
+++ b/gas/testsuite/gas/bpf/bpf.exp
@@ -41,4 +41,7 @@ if {[istarget bpf*-*-*]} {
run_dump_test indcall-1
run_list_test indcall-bad-1
+
+ run_dump_test alu-xbpf
+ run_dump_test alu32-xbpf
}