1# RUN: llvm-mc -triple x86_64 -disassemble %s | FileCheck %s --check-prefix=ATT 2# RUN: llvm-mc -triple x86_64 -disassemble -output-asm-variant=1 %s | FileCheck %s --check-prefix=INTEL 3 4## AddRegFrm 5 6# ATT: movl $1, %r16d 7# INTEL: mov r16d, 1 80xd5,0x10,0xb8,0x01,0x00,0x00,0x00 9 10## MRMSrcReg 11 12# ATT: movslq %r16d, %rax 13# INTEL: movsxd rax, r16d 140xd5,0x18,0x63,0xc0 15 16# ATT: movslq %eax, %r16 17# INTEL: movsxd r16, eax 180xd5,0x48,0x63,0xc0 19 20# ATT: movslq %r16d, %r17 21# INTEL: movsxd r17, r16d 220xd5,0x58,0x63,0xc8 23 24# ATT-NOT: rep 25# ATT: popcntl %r16d, %r17d 26# INTEL-NOT: rep 27# INTEL: popcnt r17d, r16d 280xf3,0xd5,0xd0,0xb8,0xc8 29 30## MRMSrcRegCC 31 32# ATT: cmovll %r16d, %eax 33# INTEL: cmovl eax, r16d 340xd5,0x90,0x4c,0xc0 35 36# ATT: cmovll %eax, %r16d 37# INTEL: cmovl r16d, eax 380xd5,0xc0,0x4c,0xc0 39 40# ATT: cmovll %r16d, %r17d 41# INTEL: cmovl r17d, r16d 420xd5,0xd0,0x4c,0xc8 43 44## MRMSrcMem 45 46# ATT: imull (%r16,%rax), %ebx 47# INTEL: imul ebx, dword ptr [r16 + rax] 480xd5,0x90,0xaf,0x1c,0x00 49 50# ATT: imull (%rax,%r16), %ebx 51# INTEL: imul ebx, dword ptr [rax + r16] 520xd5,0xa0,0xaf,0x1c,0x00 53 54# ATT: imull (%rax,%rbx), %r16d 55# INTEL: imul r16d, dword ptr [rax + rbx] 560xd5,0xc0,0xaf,0x04,0x18 57 58# ATT: imull (%r16,%r17), %eax 59# INTEL: imul eax, dword ptr [r16 + r17] 600xd5,0xb0,0xaf,0x04,0x08 61 62# ATT: imull (%rax,%r16), %r17d 63# INTEL: imul r17d, dword ptr [rax + r16] 640xd5,0xe0,0xaf,0x0c,0x00 65 66# ATT: imull (%r16,%rax), %r17d 67# INTEL: imul r17d, dword ptr [r16 + rax] 680xd5,0xd0,0xaf,0x0c,0x00 69 70# ATT: imull (%r16,%r17), %r18d 71# INTEL: imul r18d, dword ptr [r16 + r17] 720xd5,0xf0,0xaf,0x14,0x08 73 74## MRMSrcMemCC 75 76# ATT: cmovll (%r16,%rax), %ebx 77# INTEL: cmovl ebx, dword ptr [r16 + rax] 780xd5,0x90,0x4c,0x1c,0x00 79 80# ATT: cmovll (%rax,%r16), %ebx 81# INTEL: cmovl ebx, dword ptr [rax + r16] 820xd5,0xa0,0x4c,0x1c,0x00 83 84# ATT: cmovll (%rax,%rbx), %r16d 85# INTEL: cmovl r16d, dword ptr [rax + rbx] 860xd5,0xc0,0x4c,0x04,0x18 87 88# ATT: cmovll (%r16,%r17), %eax 89# INTEL: cmovl eax, dword ptr [r16 + r17] 900xd5,0xb0,0x4c,0x04,0x08 91 92# ATT: cmovll (%rax,%r16), %r17d 93# INTEL: cmovl r17d, dword ptr [rax + r16] 940xd5,0xe0,0x4c,0x0c,0x00 95 96# ATT: cmovll (%r16,%rax), %r17d 97# INTEL: cmovl r17d, dword ptr [r16 + rax] 980xd5,0xd0,0x4c,0x0c,0x00 99 100# ATT: cmovll (%r16,%r17), %r18d 101# INTEL: cmovl r18d, dword ptr [r16 + r17] 1020xd5,0xf0,0x4c,0x14,0x08 103 104## MRMDestReg 105 106# ATT: movl %eax, %r16d 107# INTEL: mov r16d, eax 1080xd5,0x10,0x89,0xc0 109 110# ATT: movl %r16d, %eax 111# INTEL: mov eax, r16d 1120xd5,0x40,0x89,0xc0 113 114# ATT: movl %r16d, %r17d 115# INTEL: mov r17d, r16d 1160xd5,0x50,0x89,0xc1 117 118## MRMDestMem 119 120# ATT: movl %ebx, (%r16,%rax) 121# INTEL: mov dword ptr [r16 + rax], ebx 1220xd5,0x10,0x89,0x1c,0x00 123 124# ATT: movl %ebx, (%rax,%r16) 125# INTEL: mov dword ptr [rax + r16], ebx 1260xd5,0x20,0x89,0x1c,0x00 127 128# ATT: movl %r16d, (%rax,%rbx) 129# INTEL: mov dword ptr [rax + rbx], r16d 1300xd5,0x40,0x89,0x04,0x18 131 132# ATT: movl %eax, (%r16,%r17) 133# INTEL: mov dword ptr [r16 + r17], eax 1340xd5,0x30,0x89,0x04,0x08 135 136# ATT: movl %r17d, (%rax,%r16) 137# INTEL: mov dword ptr [rax + r16], r17d 1380xd5,0x60,0x89,0x0c,0x00 139 140# ATT: movl %r17d, (%r16,%rax) 141# INTEL: mov dword ptr [r16 + rax], r17d 1420xd5,0x50,0x89,0x0c,0x00 143 144# ATT: movl %r18d, (%r16,%r17) 145# INTEL: mov dword ptr [r16 + r17], r18d 1460xd5,0x70,0x89,0x14,0x08 147 148# ATT: movb %bpl, (%r16,%r14) 149# INTEL: mov byte ptr [r16 + r14], bpl 1500xd5,0x12,0x88,0x2c,0x30 151 152## MRMXmCC 153 154# ATT: sete (%rax,%r16) 155# INTEL: sete byte ptr [rax + r16] 1560xd5,0xa0,0x94,0x04,0x00 157 158# ATT: sete (%r16,%rax) 159# INTEL: sete byte ptr [r16 + rax] 1600xd5,0x90,0x94,0x04,0x00 161 162# ATT: sete (%r16,%r17) 163# INTEL: sete byte ptr [r16 + r17] 1640xd5,0xb0,0x94,0x04,0x08 165 166## MRMXm 167 168# ATT: nopl (%rax,%r16) 169# INTEL: nop dword ptr [rax + r16] 1700xd5,0xa0,0x1f,0x04,0x00 171 172# ATT: nopl (%r16,%rax) 173# INTEL: nop dword ptr [r16 + rax] 1740xd5,0x90,0x1f,0x04,0x00 175 176# ATT: nopl (%r16,%r17) 177# INTEL: nop dword ptr [r16 + r17] 1780xd5,0xb0,0x1f,0x04,0x08 179 180## MRM0m 181 182# ATT: incl (%rax,%r16) 183# INTEL: inc dword ptr [rax + r16] 1840xd5,0x20,0xff,0x04,0x00 185 186# ATT: incl (%r16,%rax) 187# INTEL: inc dword ptr [r16 + rax] 1880xd5,0x10,0xff,0x04,0x00 189 190# ATT: incl (%r16,%r17) 191# INTEL: inc dword ptr [r16 + r17] 1920xd5,0x30,0xff,0x04,0x08 193 194## MRM1m 195 196# ATT: decl (%rax,%r16) 197# INTEL: dec dword ptr [rax + r16] 1980xd5,0x20,0xff,0x0c,0x00 199 200# ATT: decl (%r16,%rax) 201# INTEL: dec dword ptr [r16 + rax] 2020xd5,0x10,0xff,0x0c,0x00 203 204# ATT: decl (%r16,%r17) 205# INTEL: dec dword ptr [r16 + r17] 2060xd5,0x30,0xff,0x0c,0x08 207 208## MRM2m 209 210# ATT: notl (%rax,%r16) 211# INTEL: not dword ptr [rax + r16] 2120xd5,0x20,0xf7,0x14,0x00 213 214# ATT: notl (%r16,%rax) 215# INTEL: not dword ptr [r16 + rax] 2160xd5,0x10,0xf7,0x14,0x00 217 218# ATT: notl (%r16,%r17) 219# INTEL: not dword ptr [r16 + r17] 2200xd5,0x30,0xf7,0x14,0x08 221 222## MRM3m 223 224# ATT: negl (%rax,%r16) 225# INTEL: neg dword ptr [rax + r16] 2260xd5,0x20,0xf7,0x1c,0x00 227 228# ATT: negl (%r16,%rax) 229# INTEL: neg dword ptr [r16 + rax] 2300xd5,0x10,0xf7,0x1c,0x00 231 232# ATT: negl (%r16,%r17) 233# INTEL: neg dword ptr [r16 + r17] 2340xd5,0x30,0xf7,0x1c,0x08 235 236## MRM4m 237 238# ATT: mull (%rax,%r16) 239# INTEL: mul dword ptr [rax + r16] 2400xd5,0x20,0xf7,0x24,0x00 241 242# ATT: mull (%r16,%rax) 243# INTEL: mul dword ptr [r16 + rax] 2440xd5,0x10,0xf7,0x24,0x00 245 246# ATT: mull (%r16,%r17) 247# INTEL: mul dword ptr [r16 + r17] 2480xd5,0x30,0xf7,0x24,0x08 249 250## MRM5m 251 252# ATT: imull (%rax,%r16) 253# INTEL: imul dword ptr [rax + r16] 2540xd5,0x20,0xf7,0x2c,0x00 255 256# ATT: imull (%r16,%rax) 257# INTEL: imul dword ptr [r16 + rax] 2580xd5,0x10,0xf7,0x2c,0x00 259 260# ATT: imull (%r16,%r17) 261# INTEL: imul dword ptr [r16 + r17] 2620xd5,0x30,0xf7,0x2c,0x08 263 264## MRM6m 265 266# ATT: divl (%rax,%r16) 267# INTEL: div dword ptr [rax + r16] 2680xd5,0x20,0xf7,0x34,0x00 269 270# ATT: divl (%r16,%rax) 271# INTEL: div dword ptr [r16 + rax] 2720xd5,0x10,0xf7,0x34,0x00 273 274# ATT: divl (%r16,%r17) 275# INTEL: div dword ptr [r16 + r17] 2760xd5,0x30,0xf7,0x34,0x08 277 278## MRM7m 279 280# ATT: idivl (%rax,%r16) 281# INTEL: idiv dword ptr [rax + r16] 2820xd5,0x20,0xf7,0x3c,0x00 283 284# ATT: idivl (%r16,%rax) 285# INTEL: idiv dword ptr [r16 + rax] 2860xd5,0x10,0xf7,0x3c,0x00 287 288# ATT: idivl (%r16,%r17) 289# INTEL: idiv dword ptr [r16 + r17] 2900xd5,0x30,0xf7,0x3c,0x08 291 292## MRMXrCC 293 294# ATT: sete %r16b 295# INTEL: sete r16b 2960xd5,0x90,0x94,0xc0 297 298## MRMXr 299 300# ATT: nopl %r16d 301# INTEL: nop r16d 3020xd5,0x90,0x1f,0xc0 303 304## MRM0r 305 306# ATT: incl %r16d 307# INTEL: inc r16d 3080xd5,0x10,0xff,0xc0 309 310## MRM1r 311 312# ATT: decl %r16d 313# INTEL: dec r16d 3140xd5,0x10,0xff,0xc8 315 316## MRM2r 317 318# ATT: notl %r16d 319# INTEL: not r16d 3200xd5,0x10,0xf7,0xd0 321 322## MRM3r 323 324# ATT: negl %r16d 325# INTEL: neg r16d 3260xd5,0x10,0xf7,0xd8 327 328## MRM4r 329 330# ATT: mull %r16d 331# INTEL: mul r16d 3320xd5,0x10,0xf7,0xe0 333 334## MRM5r 335 336# ATT: imull %r16d 337# INTEL: imul r16d 3380xd5,0x10,0xf7,0xe8 339 340## MRM6r 341 342# ATT: divl %r16d 343# INTEL: div r16d 3440xd5,0x10,0xf7,0xf0 345 346## MRM7r 347 348# ATT: idivl %r16d 349# INTEL: idiv r16d 3500xd5,0x10,0xf7,0xf8 351