1 .syntax unified 2 .bundle_align_mode 4 3 4 # We use these macros to test each pattern at every offset from 5 # bundle alignment, i.e. [0,16) by 2 or 4. 6 7 size_arm = 4 8 size_thumb = 2 9 10 .macro offset_sequence which, size, offset 11 .p2align 4 12 \which\()_sequence_\size\()_offset_\offset\(): 13 .rept \offset / size_\which 14 bkpt 15 .endr 16 test_sequence \size 17 .endm 18 19 .macro test_offsets_arm size 20 .arm 21 offset_sequence arm, \size, 0 22 offset_sequence arm, \size, 4 23 offset_sequence arm, \size, 8 24 offset_sequence arm, \size, 12 25 .endm 26 27 .macro test_offsets_thumb size 28 .thumb 29 offset_sequence thumb, \size, 0 30 offset_sequence thumb, \size, 2 31 offset_sequence thumb, \size, 4 32 offset_sequence thumb, \size, 6 33 offset_sequence thumb, \size, 8 34 offset_sequence thumb, \size, 10 35 offset_sequence thumb, \size, 12 36 offset_sequence thumb, \size, 14 37 .endm 38 39 .macro test_sequence size 40 .bundle_lock 41 adds r0, r1 42 .rept \size - 1 43 subs r0, r1 44 .endr 45 .bundle_unlock 46 .endm 47 48 test_offsets_arm 1 49 test_offsets_arm 2 50 test_offsets_arm 3 51 test_offsets_arm 4 52 53 test_offsets_thumb 1 54 test_offsets_thumb 2 55 test_offsets_thumb 3 56 test_offsets_thumb 4 57 test_offsets_thumb 5 58 test_offsets_thumb 6 59 test_offsets_thumb 7 60 test_offsets_thumb 8 61 62 .arm 63 .p2align 4 64 bkpt 65