1// RUN: llvm-mc -triple x86_64-unknown-unknown --show-encoding %s | FileCheck %s 2 3// rdar://8127102 4// CHECK: movq %gs:(%rdi), %rax 5// CHECK: encoding: [0x65,0x48,0x8b,0x07] 6movq %gs:(%rdi), %rax 7 8// CHECK: crc32b %bl, %eax 9// CHECK: encoding: [0xf2,0x0f,0x38,0xf0,0xc3] 10 crc32b %bl, %eax 11 12// CHECK: crc32b 4(%rbx), %eax 13// CHECK: encoding: [0xf2,0x0f,0x38,0xf0,0x43,0x04] 14 crc32b 4(%rbx), %eax 15 16// CHECK: crc32w %bx, %eax 17// CHECK: encoding: [0x66,0xf2,0x0f,0x38,0xf1,0xc3] 18 crc32w %bx, %eax 19 20// CHECK: crc32w 4(%rbx), %eax 21// CHECK: encoding: [0x66,0xf2,0x0f,0x38,0xf1,0x43,0x04] 22 crc32w 4(%rbx), %eax 23 24// CHECK: crc32l %ebx, %eax 25// CHECK: encoding: [0xf2,0x0f,0x38,0xf1,0xc3] 26 crc32l %ebx, %eax 27 28// CHECK: crc32l 4(%rbx), %eax 29// CHECK: encoding: [0xf2,0x0f,0x38,0xf1,0x43,0x04] 30 crc32l 4(%rbx), %eax 31 32// CHECK: crc32l 2125315823(%rbx,%rcx,8), %ecx 33// CHECK: encoding: [0xf2,0x0f,0x38,0xf1,0x8c,0xcb,0xef,0xbe,0xad,0x7e] 34 crc32l 0x7eadbeef(%rbx,%rcx,8),%ecx 35 36// CHECK: crc32l 69, %ecx 37// CHECK: encoding: [0xf2,0x0f,0x38,0xf1,0x0c,0x25,0x45,0x00,0x00,0x00] 38 crc32l 0x45,%ecx 39 40// CHECK: crc32l 32493, %ecx 41// CHECK: encoding: [0xf2,0x0f,0x38,0xf1,0x0c,0x25,0xed,0x7e,0x00,0x00] 42 crc32l 0x7eed,%ecx 43 44// CHECK: crc32l 3133065982, %ecx 45// CHECK: encoding: [0xf2,0x0f,0x38,0xf1,0x0c,0x25,0xfe,0xca,0xbe,0xba] 46 crc32l 0xbabecafe,%ecx 47 48// CHECK: crc32l %ecx, %ecx 49// CHECK: encoding: [0xf2,0x0f,0x38,0xf1,0xc9] 50 crc32l %ecx,%ecx 51 52// CHECK: crc32b %r11b, %eax 53// CHECK: encoding: [0xf2,0x41,0x0f,0x38,0xf0,0xc3] 54 crc32b %r11b, %eax 55 56// CHECK: crc32b 4(%rbx), %eax 57// CHECK: encoding: [0xf2,0x0f,0x38,0xf0,0x43,0x04] 58 crc32b 4(%rbx), %eax 59 60// CHECK: crc32b %dil, %rax 61// CHECK: encoding: [0xf2,0x48,0x0f,0x38,0xf0,0xc7] 62 crc32b %dil,%rax 63 64// CHECK: crc32b %r11b, %rax 65// CHECK: encoding: [0xf2,0x49,0x0f,0x38,0xf0,0xc3] 66 crc32b %r11b,%rax 67 68// CHECK: crc32b 4(%rbx), %rax 69// CHECK: encoding: [0xf2,0x48,0x0f,0x38,0xf0,0x43,0x04] 70 crc32b 4(%rbx), %rax 71 72// CHECK: crc32q %rbx, %rax 73// CHECK: encoding: [0xf2,0x48,0x0f,0x38,0xf1,0xc3] 74 crc32q %rbx, %rax 75 76// CHECK: crc32q 4(%rbx), %rax 77// CHECK: encoding: [0xf2,0x48,0x0f,0x38,0xf1,0x43,0x04] 78 crc32q 4(%rbx), %rax 79 80// CHECK: movq %r8, %mm1 81// CHECK: encoding: [0x49,0x0f,0x6e,0xc8] 82movd %r8, %mm1 83 84// CHECK: movd %r8d, %mm1 85// CHECK: encoding: [0x41,0x0f,0x6e,0xc8] 86movd %r8d, %mm1 87 88// CHECK: movq %rdx, %mm1 89// CHECK: encoding: [0x48,0x0f,0x6e,0xca] 90movd %rdx, %mm1 91 92// CHECK: movd %edx, %mm1 93// CHECK: encoding: [0x0f,0x6e,0xca] 94movd %edx, %mm1 95 96// CHECK: movq %mm1, %r8 97// CHECK: encoding: [0x49,0x0f,0x7e,0xc8] 98movd %mm1, %r8 99 100// CHECK: movd %mm1, %r8d 101// CHECK: encoding: [0x41,0x0f,0x7e,0xc8] 102movd %mm1, %r8d 103 104// CHECK: movq %mm1, %rdx 105// CHECK: encoding: [0x48,0x0f,0x7e,0xca] 106movd %mm1, %rdx 107 108// CHECK: movd %mm1, %edx 109// CHECK: encoding: [0x0f,0x7e,0xca] 110movd %mm1, %edx 111 112// CHECK: movd %mm1, (%rax) 113// CHECK: encoding: [0x0f,0x7e,0x08] 114movd %mm1, (%rax) 115 116// CHECK: movd (%rax), %mm1 117// CHECK: encoding: [0x0f,0x6e,0x08] 118movd (%rax), %mm1 119 120// CHECK: movq %r8, %mm1 121// CHECK: encoding: [0x49,0x0f,0x6e,0xc8] 122movq %r8, %mm1 123 124// CHECK: movq %rdx, %mm1 125// CHECK: encoding: [0x48,0x0f,0x6e,0xca] 126movq %rdx, %mm1 127 128// CHECK: movq %mm1, %r8 129// CHECK: encoding: [0x49,0x0f,0x7e,0xc8] 130movq %mm1, %r8 131 132// CHECK: movq %mm1, %rdx 133// CHECK: encoding: [0x48,0x0f,0x7e,0xca] 134movq %mm1, %rdx 135 136// rdar://7840289 137// CHECK: pshufb CPI1_0(%rip), %xmm1 138// CHECK: encoding: [0x66,0x0f,0x38,0x00,0x0d,A,A,A,A] 139// CHECK: fixup A - offset: 5, value: CPI1_0-4 140pshufb CPI1_0(%rip), %xmm1 141 142// CHECK: sha1rnds4 $1, %xmm1, %xmm2 143// CHECK: encoding: [0x0f,0x3a,0xcc,0xd1,0x01] 144sha1rnds4 $1, %xmm1, %xmm2 145 146// CHECK: sha1rnds4 $1, (%rax), %xmm2 147// CHECK: encoding: [0x0f,0x3a,0xcc,0x10,0x01] 148sha1rnds4 $1, (%rax), %xmm2 149 150// CHECK: sha1nexte %xmm1, %xmm2 151// CHECK: encoding: [0x0f,0x38,0xc8,0xd1] 152sha1nexte %xmm1, %xmm2 153 154// CHECK: sha1msg1 %xmm1, %xmm2 155// CHECK: encoding: [0x0f,0x38,0xc9,0xd1] 156sha1msg1 %xmm1, %xmm2 157 158// CHECK: sha1msg1 (%rax), %xmm2 159// CHECK: encoding: [0x0f,0x38,0xc9,0x10] 160sha1msg1 (%rax), %xmm2 161 162// CHECK: sha1msg2 %xmm1, %xmm2 163// CHECK: encoding: [0x0f,0x38,0xca,0xd1] 164sha1msg2 %xmm1, %xmm2 165 166// CHECK: sha1msg2 (%rax), %xmm2 167// CHECK: encoding: [0x0f,0x38,0xca,0x10] 168sha1msg2 (%rax), %xmm2 169 170// CHECK: sha256rnds2 %xmm0, (%rax), %xmm2 171// CHECK: encoding: [0x0f,0x38,0xcb,0x10] 172sha256rnds2 (%rax), %xmm2 173 174// CHECK: sha256rnds2 %xmm0, %xmm1, %xmm2 175// CHECK: encoding: [0x0f,0x38,0xcb,0xd1] 176sha256rnds2 %xmm1, %xmm2 177 178// CHECK: sha256rnds2 %xmm0, (%rax), %xmm2 179// CHECK: encoding: [0x0f,0x38,0xcb,0x10] 180sha256rnds2 %xmm0, (%rax), %xmm2 181 182// CHECK: sha256rnds2 %xmm0, %xmm1, %xmm2 183// CHECK: encoding: [0x0f,0x38,0xcb,0xd1] 184sha256rnds2 %xmm0, %xmm1, %xmm2 185 186// CHECK: sha256msg1 %xmm1, %xmm2 187// CHECK: encoding: [0x0f,0x38,0xcc,0xd1] 188sha256msg1 %xmm1, %xmm2 189 190// CHECK: sha256msg1 (%rax), %xmm2 191// CHECK: encoding: [0x0f,0x38,0xcc,0x10] 192sha256msg1 (%rax), %xmm2 193 194// CHECK: sha256msg2 %xmm1, %xmm2 195// CHECK: encoding: [0x0f,0x38,0xcd,0xd1] 196sha256msg2 %xmm1, %xmm2 197 198// CHECK: sha256msg2 (%rax), %xmm2 199// CHECK: encoding: [0x0f,0x38,0xcd,0x10] 200sha256msg2 (%rax), %xmm2 201 202// CHECK: movq 57005(,%riz), %rbx 203// CHECK: encoding: [0x48,0x8b,0x1c,0x25,0xad,0xde,0x00,0x00] 204 movq 57005(,%riz), %rbx 205 206// CHECK: movq 48879(,%riz), %rax 207// CHECK: encoding: [0x48,0x8b,0x04,0x25,0xef,0xbe,0x00,0x00] 208 movq 48879(,%riz), %rax 209 210// CHECK: movq -4(,%riz,8), %rax 211// CHECK: encoding: [0x48,0x8b,0x04,0xe5,0xfc,0xff,0xff,0xff] 212 movq -4(,%riz,8), %rax 213 214// CHECK: movq (%rcx,%riz), %rax 215// CHECK: encoding: [0x48,0x8b,0x04,0x21] 216 movq (%rcx,%riz), %rax 217 218// CHECK: movq (%rcx,%riz,8), %rax 219// CHECK: encoding: [0x48,0x8b,0x04,0xe1] 220 movq (%rcx,%riz,8), %rax 221 222// CHECK: fxsave64 (%rax) 223// CHECK: encoding: [0x48,0x0f,0xae,0x00] 224 fxsaveq (%rax) 225 226// CHECK: fxsave64 (%rax) 227// CHECK: encoding: [0x48,0x0f,0xae,0x00] 228 fxsave64 (%rax) 229 230// CHECK: fxrstor64 (%rax) 231// CHECK: encoding: [0x48,0x0f,0xae,0x08] 232 fxrstorq (%rax) 233 234// CHECK: fxrstor64 (%rax) 235// CHECK: encoding: [0x48,0x0f,0xae,0x08] 236 fxrstor64 (%rax) 237 238// CHECK: leave 239// CHECK: encoding: [0xc9] 240 leave 241 242// CHECK: leave 243// CHECK: encoding: [0xc9] 244 leaveq 245 246// CHECK: flds (%edi) 247// CHECK: encoding: [0x67,0xd9,0x07] 248 flds (%edi) 249 250// CHECK: filds (%edi) 251// CHECK: encoding: [0x67,0xdf,0x07] 252 filds (%edi) 253 254// CHECK: flds (%rdi) 255// CHECK: encoding: [0xd9,0x07] 256 flds (%rdi) 257 258// CHECK: filds (%rdi) 259// CHECK: encoding: [0xdf,0x07] 260 filds (%rdi) 261 262// CHECK: pmovmskb %xmm5, %ecx 263// CHECK: encoding: [0x66,0x0f,0xd7,0xcd] 264 pmovmskb %xmm5,%rcx 265 266// CHECK: pinsrw $3, %ecx, %xmm5 267// CHECK: encoding: [0x66,0x0f,0xc4,0xe9,0x03] 268 pinsrw $3, %ecx, %xmm5 269 270// CHECK: pinsrw $3, %ecx, %xmm5 271// CHECK: encoding: [0x66,0x0f,0xc4,0xe9,0x03] 272 pinsrw $3, %rcx, %xmm5 273 274//CHECK: movq 12(%rdi), %rsi 275//CHECK: encoding: [0x48,0x8b,0x77,0x0c] 276 movq 16+0-4(%rdi),%rsi 277 278//CHECK: movq 12(%rdi), %rsi 279//CHECK: encoding: [0x48,0x8b,0x77,0x0c] 280 movq (16+(0-4))(%rdi),%rsi 281 282//CHECK: movq 12(%rdi), %rsi 283//CHECK: encoding: [0x48,0x8b,0x77,0x0c] 284 movq (16+0)-1+1-2+2-3+3-4+4-5+5-6+6-(4)(%rdi),%rsi 285 286//CHECK: movq (,%eiz), %rax 287//CHECK: encoding: [0x67,0x48,0x8b,0x04,0x25,0x00,0x00,0x00,0x00] 288 movq (,%eiz), %rax 289