.syntax unified .bundle_align_mode 4 # We use these macros to test each pattern at every offset from # bundle alignment, i.e. [0,16) by 2 or 4. size_arm = 4 size_thumb = 2 .macro offset_sequence which, size, offset .p2align 4 \which\()_sequence_\size\()_offset_\offset\(): .rept \offset / size_\which bkpt .endr test_sequence \size .endm .macro test_offsets_arm size .arm offset_sequence arm, \size, 0 offset_sequence arm, \size, 4 offset_sequence arm, \size, 8 offset_sequence arm, \size, 12 .endm .macro test_offsets_thumb size .thumb offset_sequence thumb, \size, 0 offset_sequence thumb, \size, 2 offset_sequence thumb, \size, 4 offset_sequence thumb, \size, 6 offset_sequence thumb, \size, 8 offset_sequence thumb, \size, 10 offset_sequence thumb, \size, 12 offset_sequence thumb, \size, 14 .endm .macro test_sequence size .bundle_lock adds r0, r1 .rept \size - 1 subs r0, r1 .endr .bundle_unlock .endm test_offsets_arm 1 test_offsets_arm 2 test_offsets_arm 3 test_offsets_arm 4 test_offsets_thumb 1 test_offsets_thumb 2 test_offsets_thumb 3 test_offsets_thumb 4 test_offsets_thumb 5 test_offsets_thumb 6 test_offsets_thumb 7 test_offsets_thumb 8 .arm .p2align 4 bkpt