1# RUN: llvm-mc -triple x86_64 -show-encoding -x86-asm-syntax=intel -output-asm-variant=1 %s | FileCheck %s 2 3## AddRegFrm 4 5# CHECK: mov r16d, 1 6# CHECK: encoding: [0xd5,0x10,0xb8,0x01,0x00,0x00,0x00] 7 mov r16d, 1 8 9## MRMSrcReg 10 11# CHECK: movsxd rax, r16d 12# CHECK: encoding: [0xd5,0x18,0x63,0xc0] 13 movsxd rax, r16d 14 15# CHECK: movsxd r16, eax 16# CHECK: encoding: [0xd5,0x48,0x63,0xc0] 17 movsxd r16, eax 18 19# CHECK: movsxd r17, r16d 20# CHECK: encoding: [0xd5,0x58,0x63,0xc8] 21 movsxd r17, r16d 22 23# CHECK: popcnt r17d, r16d 24# CHECK: encoding: [0xf3,0xd5,0xd0,0xb8,0xc8] 25 popcnt r17d, r16d 26 27## MRMSrcRegCC 28 29# CHECK: cmovl eax, r16d 30# CHECK: encoding: [0xd5,0x90,0x4c,0xc0] 31 cmovl eax, r16d 32 33# CHECK: cmovl r16d, eax 34# CHECK: encoding: [0xd5,0xc0,0x4c,0xc0] 35 cmovl r16d, eax 36 37# CHECK: cmovl r17d, r16d 38# CHECK: encoding: [0xd5,0xd0,0x4c,0xc8] 39 cmovl r17d, r16d 40 41## MRMSrcMem 42 43# CHECK: imul ebx, dword ptr [r16 + rax] 44# CHECK: encoding: [0xd5,0x90,0xaf,0x1c,0x00] 45 imul ebx, dword ptr [r16 + rax] 46 47# CHECK: imul ebx, dword ptr [rax + r16] 48# CHECK: encoding: [0xd5,0xa0,0xaf,0x1c,0x00] 49 imul ebx, dword ptr [rax + r16] 50 51# CHECK: imul r16d, dword ptr [rax + rbx] 52# CHECK: encoding: [0xd5,0xc0,0xaf,0x04,0x18] 53 imul r16d, dword ptr [rax + rbx] 54 55# CHECK: imul eax, dword ptr [r16 + r17] 56# CHECK: encoding: [0xd5,0xb0,0xaf,0x04,0x08] 57 imul eax, dword ptr [r16 + r17] 58 59# CHECK: imul r17d, dword ptr [rax + r16] 60# CHECK: encoding: [0xd5,0xe0,0xaf,0x0c,0x00] 61 imul r17d, dword ptr [rax + r16] 62 63# CHECK: imul r17d, dword ptr [r16 + rax] 64# CHECK: encoding: [0xd5,0xd0,0xaf,0x0c,0x00] 65 imul r17d, dword ptr [r16 + rax] 66 67# CHECK: imul r18d, dword ptr [r16 + r17] 68# CHECK: encoding: [0xd5,0xf0,0xaf,0x14,0x08] 69 imul r18d, dword ptr [r16 + r17] 70 71## MRMSrcMemCC 72 73# CHECK: cmovl ebx, dword ptr [r16 + rax] 74# CHECK: encoding: [0xd5,0x90,0x4c,0x1c,0x00] 75 cmovl ebx, dword ptr [r16 + rax] 76 77# CHECK: cmovl ebx, dword ptr [rax + r16] 78# CHECK: encoding: [0xd5,0xa0,0x4c,0x1c,0x00] 79 cmovl ebx, dword ptr [rax + r16] 80 81# CHECK: cmovl r16d, dword ptr [rax + rbx] 82# CHECK: encoding: [0xd5,0xc0,0x4c,0x04,0x18] 83 cmovl r16d, dword ptr [rax + rbx] 84 85# CHECK: cmovl eax, dword ptr [r16 + r17] 86# CHECK: encoding: [0xd5,0xb0,0x4c,0x04,0x08] 87 cmovl eax, dword ptr [r16 + r17] 88 89# CHECK: cmovl r17d, dword ptr [rax + r16] 90# CHECK: encoding: [0xd5,0xe0,0x4c,0x0c,0x00] 91 cmovl r17d, dword ptr [rax + r16] 92 93# CHECK: cmovl r17d, dword ptr [r16 + rax] 94# CHECK: encoding: [0xd5,0xd0,0x4c,0x0c,0x00] 95 cmovl r17d, dword ptr [r16 + rax] 96 97# CHECK: cmovl r18d, dword ptr [r16 + r17] 98# CHECK: encoding: [0xd5,0xf0,0x4c,0x14,0x08] 99 cmovl r18d, dword ptr [r16 + r17] 100 101## MRMDestReg 102 103# CHECK: mov r16d, eax 104# CHECK: encoding: [0xd5,0x10,0x89,0xc0] 105 mov r16d, eax 106 107# CHECK: mov eax, r16d 108# CHECK: encoding: [0xd5,0x40,0x89,0xc0] 109 mov eax, r16d 110 111# CHECK: mov r17d, r16d 112# CHECK: encoding: [0xd5,0x50,0x89,0xc1] 113 mov r17d, r16d 114 115## MRMDestMem 116 117# CHECK: mov dword ptr [r16 + rax], ebx 118# CHECK: encoding: [0xd5,0x10,0x89,0x1c,0x00] 119 mov dword ptr [r16 + rax], ebx 120 121# CHECK: mov dword ptr [rax + r16], ebx 122# CHECK: encoding: [0xd5,0x20,0x89,0x1c,0x00] 123 mov dword ptr [rax + r16], ebx 124 125# CHECK: mov dword ptr [rax + rbx], r16d 126# CHECK: encoding: [0xd5,0x40,0x89,0x04,0x18] 127 mov dword ptr [rax + rbx], r16d 128 129# CHECK: mov dword ptr [r16 + r17], eax 130# CHECK: encoding: [0xd5,0x30,0x89,0x04,0x08] 131 mov dword ptr [r16 + r17], eax 132 133# CHECK: mov dword ptr [rax + r16], r17d 134# CHECK: encoding: [0xd5,0x60,0x89,0x0c,0x00] 135 mov dword ptr [rax + r16], r17d 136 137# CHECK: mov dword ptr [r16 + rax], r17d 138# CHECK: encoding: [0xd5,0x50,0x89,0x0c,0x00] 139 mov dword ptr [r16 + rax], r17d 140 141# CHECK: mov dword ptr [r16 + r17], r18d 142# CHECK: encoding: [0xd5,0x70,0x89,0x14,0x08] 143 mov dword ptr [r16 + r17], r18d 144 145# CHECK: mov byte ptr [r16 + r14], bpl 146# CHECK: encoding: [0xd5,0x12,0x88,0x2c,0x30] 147 mov byte ptr [r16 + r14], bpl 148 149## MRMXmCC 150 151# CHECK: sete byte ptr [rax + r16] 152# CHECK: encoding: [0xd5,0xa0,0x94,0x04,0x00] 153 sete byte ptr [rax + r16] 154 155# CHECK: sete byte ptr [r16 + rax] 156# CHECK: encoding: [0xd5,0x90,0x94,0x04,0x00] 157 sete byte ptr [r16 + rax] 158 159# CHECK: sete byte ptr [r16 + r17] 160# CHECK: encoding: [0xd5,0xb0,0x94,0x04,0x08] 161 sete byte ptr [r16 + r17] 162 163## MRMXm 164 165# CHECK: nop dword ptr [rax + r16] 166# CHECK: encoding: [0xd5,0xa0,0x1f,0x04,0x00] 167 nop dword ptr [rax + r16] 168 169# CHECK: nop dword ptr [r16 + rax] 170# CHECK: encoding: [0xd5,0x90,0x1f,0x04,0x00] 171 nop dword ptr [r16 + rax] 172 173# CHECK: nop dword ptr [r16 + r17] 174# CHECK: encoding: [0xd5,0xb0,0x1f,0x04,0x08] 175 nop dword ptr [r16 + r17] 176 177## MRM0m 178 179# CHECK: inc dword ptr [rax + r16] 180# CHECK: encoding: [0xd5,0x20,0xff,0x04,0x00] 181 inc dword ptr [rax + r16] 182 183# CHECK: inc dword ptr [r16 + rax] 184# CHECK: encoding: [0xd5,0x10,0xff,0x04,0x00] 185 inc dword ptr [r16 + rax] 186 187# CHECK: inc dword ptr [r16 + r17] 188# CHECK: encoding: [0xd5,0x30,0xff,0x04,0x08] 189 inc dword ptr [r16 + r17] 190 191## MRM1m 192 193# CHECK: dec dword ptr [rax + r16] 194# CHECK: encoding: [0xd5,0x20,0xff,0x0c,0x00] 195 dec dword ptr [rax + r16] 196 197# CHECK: dec dword ptr [r16 + rax] 198# CHECK: encoding: [0xd5,0x10,0xff,0x0c,0x00] 199 dec dword ptr [r16 + rax] 200 201# CHECK: dec dword ptr [r16 + r17] 202# CHECK: encoding: [0xd5,0x30,0xff,0x0c,0x08] 203 dec dword ptr [r16 + r17] 204 205## MRM2m 206 207# CHECK: not dword ptr [rax + r16] 208# CHECK: encoding: [0xd5,0x20,0xf7,0x14,0x00] 209 not dword ptr [rax + r16] 210 211# CHECK: not dword ptr [r16 + rax] 212# CHECK: encoding: [0xd5,0x10,0xf7,0x14,0x00] 213 not dword ptr [r16 + rax] 214 215# CHECK: not dword ptr [r16 + r17] 216# CHECK: encoding: [0xd5,0x30,0xf7,0x14,0x08] 217 not dword ptr [r16 + r17] 218 219## MRM3m 220 221# CHECK: neg dword ptr [rax + r16] 222# CHECK: encoding: [0xd5,0x20,0xf7,0x1c,0x00] 223 neg dword ptr [rax + r16] 224 225# CHECK: neg dword ptr [r16 + rax] 226# CHECK: encoding: [0xd5,0x10,0xf7,0x1c,0x00] 227 neg dword ptr [r16 + rax] 228 229# CHECK: neg dword ptr [r16 + r17] 230# CHECK: encoding: [0xd5,0x30,0xf7,0x1c,0x08] 231 neg dword ptr [r16 + r17] 232 233## MRM4m 234 235# CHECK: mul dword ptr [rax + r16] 236# CHECK: encoding: [0xd5,0x20,0xf7,0x24,0x00] 237 mul dword ptr [rax + r16] 238 239# CHECK: mul dword ptr [r16 + rax] 240# CHECK: encoding: [0xd5,0x10,0xf7,0x24,0x00] 241 mul dword ptr [r16 + rax] 242 243# CHECK: mul dword ptr [r16 + r17] 244# CHECK: encoding: [0xd5,0x30,0xf7,0x24,0x08] 245 mul dword ptr [r16 + r17] 246 247## MRM5m 248 249# CHECK: imul dword ptr [rax + r16] 250# CHECK: encoding: [0xd5,0x20,0xf7,0x2c,0x00] 251 imul dword ptr [rax + r16] 252 253# CHECK: imul dword ptr [r16 + rax] 254# CHECK: encoding: [0xd5,0x10,0xf7,0x2c,0x00] 255 imul dword ptr [r16 + rax] 256 257# CHECK: imul dword ptr [r16 + r17] 258# CHECK: encoding: [0xd5,0x30,0xf7,0x2c,0x08] 259 imul dword ptr [r16 + r17] 260 261## MRM6m 262 263# CHECK: div dword ptr [rax + r16] 264# CHECK: encoding: [0xd5,0x20,0xf7,0x34,0x00] 265 div dword ptr [rax + r16] 266 267# CHECK: div dword ptr [r16 + rax] 268# CHECK: encoding: [0xd5,0x10,0xf7,0x34,0x00] 269 div dword ptr [r16 + rax] 270 271# CHECK: div dword ptr [r16 + r17] 272# CHECK: encoding: [0xd5,0x30,0xf7,0x34,0x08] 273 div dword ptr [r16 + r17] 274 275## MRM7m 276 277# CHECK: idiv dword ptr [rax + r16] 278# CHECK: encoding: [0xd5,0x20,0xf7,0x3c,0x00] 279 idiv dword ptr [rax + r16] 280 281# CHECK: idiv dword ptr [r16 + rax] 282# CHECK: encoding: [0xd5,0x10,0xf7,0x3c,0x00] 283 idiv dword ptr [r16 + rax] 284 285# CHECK: idiv dword ptr [r16 + r17] 286# CHECK: encoding: [0xd5,0x30,0xf7,0x3c,0x08] 287 idiv dword ptr [r16 + r17] 288 289## MRMXrCC 290 291# CHECK: sete r16b 292# CHECK: encoding: [0xd5,0x90,0x94,0xc0] 293 sete r16b 294 295## MRMXr 296 297# CHECK: nop r16d 298# CHECK: encoding: [0xd5,0x90,0x1f,0xc0] 299 nop r16d 300 301## MRM0r 302 303# CHECK: inc r16d 304# CHECK: encoding: [0xd5,0x10,0xff,0xc0] 305 inc r16d 306 307## MRM1r 308 309# CHECK: dec r16d 310# CHECK: encoding: [0xd5,0x10,0xff,0xc8] 311 dec r16d 312 313## MRM2r 314 315# CHECK: not r16d 316# CHECK: encoding: [0xd5,0x10,0xf7,0xd0] 317 not r16d 318 319## MRM3r 320 321# CHECK: neg r16d 322# CHECK: encoding: [0xd5,0x10,0xf7,0xd8] 323 neg r16d 324 325## MRM4r 326 327# CHECK: mul r16d 328# CHECK: encoding: [0xd5,0x10,0xf7,0xe0] 329 mul r16d 330 331## MRM5r 332 333# CHECK: imul r16d 334# CHECK: encoding: [0xd5,0x10,0xf7,0xe8] 335 imul r16d 336 337## MRM6r 338 339# CHECK: div r16d 340# CHECK: encoding: [0xd5,0x10,0xf7,0xf0] 341 div r16d 342 343## MRM7r 344 345# CHECK: idiv r16d 346# CHECK: encoding: [0xd5,0x10,0xf7,0xf8] 347 idiv r16d 348