.bundle_align_mode 5 # We use these macros to test each pattern at every offset from # bundle alignment, i.e. [0,31]. .macro offset_sequence size, offset .p2align 5 sequence_\size\()_offset_\offset\(): .if \offset .space \offset, 0xf4 .endif test_sequence \size .endm .macro test_offsets size offset_sequence \size, 0 offset_sequence \size, 1 offset_sequence \size, 2 offset_sequence \size, 3 offset_sequence \size, 4 offset_sequence \size, 5 offset_sequence \size, 6 offset_sequence \size, 7 offset_sequence \size, 8 offset_sequence \size, 9 offset_sequence \size, 10 offset_sequence \size, 11 offset_sequence \size, 12 offset_sequence \size, 13 offset_sequence \size, 14 offset_sequence \size, 15 offset_sequence \size, 16 offset_sequence \size, 17 offset_sequence \size, 18 offset_sequence \size, 19 offset_sequence \size, 20 offset_sequence \size, 21 offset_sequence \size, 22 offset_sequence \size, 23 offset_sequence \size, 24 offset_sequence \size, 25 offset_sequence \size, 26 offset_sequence \size, 27 offset_sequence \size, 28 offset_sequence \size, 29 offset_sequence \size, 30 offset_sequence \size, 31 .endm .macro test_sequence size .bundle_lock clc .rept \size - 1 cld .endr .bundle_unlock .endm test_offsets 1 test_offsets 2 test_offsets 3 test_offsets 4 test_offsets 5 test_offsets 6 test_offsets 7 test_offsets 8 test_offsets 9 test_offsets 10 test_offsets 11 test_offsets 12 test_offsets 13 test_offsets 14 test_offsets 15 test_offsets 16 test_offsets 17 test_offsets 18 test_offsets 19 test_offsets 20 test_offsets 21 test_offsets 22 test_offsets 23 test_offsets 24 test_offsets 25 test_offsets 26 test_offsets 27 test_offsets 28 test_offsets 29 test_offsets 30 test_offsets 31 test_offsets 32 .p2align 5 # Nested .bundle_lock. .bundle_lock clc .bundle_lock cld .bundle_unlock clc .bundle_unlock .p2align 5 hlt