| # 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 |