diff options
author | David Faust <david.faust@oracle.com> | 2020-09-18 09:56:43 -0700 |
---|---|---|
committer | David Faust <david.faust@oracle.com> | 2020-09-18 10:04:23 -0700 |
commit | 6e25f88828f500fc649aa6eac8b567c7b1e96c59 (patch) | |
tree | f2ee690ca5ba7bb36cb1c887a33daf76677311d7 /gas | |
parent | e163628395d40485c3b379fa39bdc211ee19d40b (diff) | |
download | gdb-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/ChangeLog | 8 | ||||
-rw-r--r-- | gas/testsuite/gas/bpf/alu-xbpf.d | 17 | ||||
-rw-r--r-- | gas/testsuite/gas/bpf/alu-xbpf.s | 11 | ||||
-rw-r--r-- | gas/testsuite/gas/bpf/alu32-xbpf.d | 17 | ||||
-rw-r--r-- | gas/testsuite/gas/bpf/alu32-xbpf.s | 11 | ||||
-rw-r--r-- | gas/testsuite/gas/bpf/bpf.exp | 3 |
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 } |