| # mach: bpf |
| # output: pass\nexit 0 (0x0)\n |
| ;;; endle.s |
| ;;; Tests for BPF endianness-conversion instructions in simulator |
| ;;; running in LITTLE ENDIAN |
| ;;; |
| ;;; Both 'be' and 'le' ISAs have both endbe and endle instructions. |
| |
| .include "testutils.inc" |
| |
| .text |
| .global main |
| .type main, @function |
| main: |
| lddw %r1, 0x12345678deadbeef |
| endbe %r1, 64 |
| fail_ne %r1, 0xefbeadde78563412 |
| endbe %r1, 64 |
| fail_ne %r1, 0x12345678deadbeef |
| |
| ;; `bitsize` < 64 will truncate |
| endbe %r1, 32 |
| fail_ne %r1, 0xefbeadde |
| endbe %r1, 32 |
| fail_ne %r1, 0xdeadbeef |
| |
| endbe %r1, 16 |
| fail_ne %r1, 0xefbe |
| endbe %r1, 16 |
| fail_ne %r1, 0xbeef |
| |
| ;; endle on le should be noop (except truncate) |
| lddw %r1, 0x12345678deadbeef |
| endle %r1, 64 |
| fail_ne %r1, 0x12345678deadbeef |
| |
| endle %r1, 32 |
| fail_ne %r1, 0xdeadbeef |
| |
| endle %r1, 16 |
| fail_ne %r1, 0xbeef |
| |
| pass |