x86_32-optimal_nop.s revision 57a49a202f8613d99dcb2f75f2b5a9505898f1a1
1// RUN: llvm-mc -triple i386-apple-darwin9 %s -filetype=obj -o - | macho-dump --dump-section-data | FileCheck %s 2 3# 1 byte nop test 4 .align 4, 0 # start with 16 byte alignment filled with zeros 5 ret 6 # nop 7 # 0x90 8 .align 1, 0x90 9 ret 10# 2 byte nop test 11 .align 4, 0 # start with 16 byte alignment filled with zeros 12 ret 13 ret 14 # xchg %ax,%ax 15 # 0x66, 0x90 16 .align 2, 0x90 17 ret 18# 3 byte nop test 19 .align 4, 0 # start with 16 byte alignment filled with zeros 20 ret 21 # nopl (%[re]ax) 22 # 0x0f, 0x1f, 0x00 23 .align 2, 0x90 24 ret 25# 4 byte nop test 26 .align 4, 0 # start with 16 byte alignment filled with zeros 27 ret 28 ret 29 ret 30 ret 31 # nopl 0(%[re]ax) 32 # 0x0f, 0x1f, 0x40, 0x00 33 .align 3, 0x90 34 ret 35# 5 byte nop test 36 .align 4, 0 # start with 16 byte alignment filled with zeros 37 ret 38 ret 39 ret 40 # nopl 0(%[re]ax,%[re]ax,1) 41 # 0x0f, 0x1f, 0x44, 0x00, 0x00 42 .align 3, 0x90 43 ret 44# 6 byte nop test 45 .align 4, 0 # start with 16 byte alignment filled with zeros 46 ret 47 ret 48 # nopw 0(%[re]ax,%[re]ax,1) 49 # 0x66, 0x0f, 0x1f, 0x44, 0x00, 0x00 50 .align 3, 0x90 51 ret 52# 7 byte nop test 53 .align 4, 0 # start with 16 byte alignment filled with zeros 54 ret 55 # nopl 0L(%[re]ax) 56 # 0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00 57 .align 3, 0x90 58 ret 59# 8 byte nop test 60 .align 4, 0 # start with 16 byte alignment filled with zeros 61 ret 62 ret 63 ret 64 ret 65 ret 66 ret 67 ret 68 ret 69 # nopl 0L(%[re]ax,%[re]ax,1) 70 # 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00 71 .align 3, 0x90 72 ret 73# 9 byte nop test 74 .align 4, 0 # start with 16 byte alignment filled with zeros 75 ret 76 ret 77 ret 78 ret 79 ret 80 ret 81 ret 82 # nopw 0L(%[re]ax,%[re]ax,1) 83 # 0x66, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00 84 .align 4, 0x90 85 ret 86# 10 byte nop test 87 .align 4, 0 # start with 16 byte alignment filled with zeros 88 ret 89 ret 90 ret 91 ret 92 ret 93 ret 94 ret 95 # nopw %cs:0L(%[re]ax,%[re]ax,1) 96 # 0x66, 0x2e, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00 97 .align 4, 0x90 98 ret 99# 11 byte nop test 100 .align 4, 0 # start with 16 byte alignment filled with zeros 101 ret 102 ret 103 ret 104 ret 105 ret 106 # nopw %cs:0L(%[re]ax,%[re]ax,1) 107 # 0x66, 0x2e, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00 108 .align 4, 0x90 109 ret 110# 12 byte nop test 111 .align 4, 0 # start with 16 byte alignment filled with zeros 112 ret 113 ret 114 ret 115 ret 116 # nopw 0(%[re]ax,%[re]ax,1) 117 # nopw 0(%[re]ax,%[re]ax,1) 118 # 0x66, 0x0f, 0x1f, 0x44, 0x00, 0x00, 119 # 0x66, 0x0f, 0x1f, 0x44, 0x00, 0x00 120 .align 4, 0x90 121 ret 122# 13 byte nop test 123 .align 4, 0 # start with 16 byte alignment filled with zeros 124 ret 125 ret 126 ret 127 # nopw 0(%[re]ax,%[re]ax,1) 128 # nopl 0L(%[re]ax) 129 # 0x66, 0x0f, 0x1f, 0x44, 0x00, 0x00, 130 # 0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00 131 .align 4, 0x90 132 ret 133# 14 byte nop test 134 .align 4, 0 # start with 16 byte alignment filled with zeros 135 ret 136 ret 137 # nopl 0L(%[re]ax) 138 # nopl 0L(%[re]ax) 139 # 0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00, 140 # 0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00 141 .align 4, 0x90 142 ret 143# 15 byte nop test 144 .align 4, 0 # start with 16 byte alignment filled with zeros 145 ret 146 # nopl 0L(%[re]ax) 147 # nopl 0L(%[re]ax,%[re]ax,1) 148 # 0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00, 149 # 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00 150 .align 4, 0x90 151 ret 152 153// CHECK: ('cputype', 7) 154// CHECK: ('cpusubtype', 3) 155// CHECK: ('filetype', 1) 156// CHECK: ('num_load_commands', 1) 157// CHECK: ('load_commands_size', 124) 158// CHECK: ('flag', 0) 159// CHECK: ('load_commands', [ 160// CHECK: # Load Command 0 161// CHECK: (('command', 1) 162// CHECK: ('size', 124) 163// CHECK: ('segment_name', '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00') 164// CHECK: ('vm_addr', 0) 165// CHECK: ('vm_size', 337) 166// CHECK: ('file_offset', 152) 167// CHECK: ('file_size', 337) 168// CHECK: ('maxprot', 7) 169// CHECK: ('initprot', 7) 170// CHECK: ('num_sections', 1) 171// CHECK: ('flags', 0) 172// CHECK: ('sections', [ 173// CHECK: # Section 0 174// CHECK: (('section_name', '__text\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00') 175// CHECK: ('segment_name', '__TEXT\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00') 176// CHECK: ('address', 0) 177// CHECK: ('size', 337) 178// CHECK: ('offset', 152) 179// CHECK: ('alignment', 4) 180// CHECK: ('reloc_offset', 0) 181// CHECK: ('num_reloc', 0) 182// CHECK: ('flags', 0x80000400) 183// CHECK: ('reserved1', 0) 184// CHECK: ('reserved2', 0) 185// CHECK: ), 186// CHECK: ('_relocations', [ 187// CHECK: ]) 188// CHECK: ('_section_data', '\xc3\x90\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\xc3f\x90\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\x0f\x1f\x00\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\xc3\xc3\xc3\x0f\x1f@\x00\xc3\x00\x00\x00\x00\x00\x00\x00\xc3\xc3\xc3\x0f\x1fD\x00\x00\xc3\x00\x00\x00\x00\x00\x00\x00\xc3\xc3f\x0f\x1fD\x00\x00\xc3\x00\x00\x00\x00\x00\x00\x00\xc3\x0f\x1f\x80\x00\x00\x00\x00\xc3\x00\x00\x00\x00\x00\x00\x00\xc3\xc3\xc3\xc3\xc3\xc3\xc3\xc3\xc3\x00\x00\x00\x00\x00\x00\x00\xc3\xc3\xc3\xc3\xc3\xc3\xc3f\x0f\x1f\x84\x00\x00\x00\x00\x00\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\xc3\xc3\xc3\xc3\xc3\xc3f\x0f\x1f\x84\x00\x00\x00\x00\x00\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\xc3\xc3\xc3\xc3\x0f\x1fD\x00\x00f\x0f\x1fD\x00\x00\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\xc3\xc3\xc3f\x0f\x1fD\x00\x00f\x0f\x1fD\x00\x00\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\xc3\xc3f\x0f\x1fD\x00\x00\x0f\x1f\x80\x00\x00\x00\x00\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\xc3\x0f\x1f\x80\x00\x00\x00\x00\x0f\x1f\x80\x00\x00\x00\x00\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\x0f\x1f\x80\x00\x00\x00\x00\x0f\x1f\x84\x00\x00\x00\x00\x00\xc3') 189// CHECK: ]) 190// CHECK: ), 191// CHECK: ]) 192