1# RUN: llvm-mc -triple x86_64 -show-encoding %s | FileCheck %s 2# RUN: not llvm-mc -triple i386 -show-encoding %s 2>&1 | FileCheck %s --check-prefix=ERROR 3 4# ERROR-COUNT-56: error: 5# ERROR-NOT: error: 6## R bit 7 8# CHECK: leal (%rax), %r16d 9# CHECK: encoding: [0xd5,0x40,0x8d,0x00] 10 leal (%rax), %r16d 11 12# CHECK: leal (%rax), %r17d 13# CHECK: encoding: [0xd5,0x40,0x8d,0x08] 14 leal (%rax), %r17d 15 16# CHECK: leal (%rax), %r18d 17# CHECK: encoding: [0xd5,0x40,0x8d,0x10] 18 leal (%rax), %r18d 19 20# CHECK: leal (%rax), %r19d 21# CHECK: encoding: [0xd5,0x40,0x8d,0x18] 22 leal (%rax), %r19d 23 24# CHECK: leal (%rax), %r20d 25# CHECK: encoding: [0xd5,0x40,0x8d,0x20] 26 leal (%rax), %r20d 27 28# CHECK: leal (%rax), %r21d 29# CHECK: encoding: [0xd5,0x40,0x8d,0x28] 30 leal (%rax), %r21d 31 32# CHECK: leal (%rax), %r22d 33# CHECK: encoding: [0xd5,0x40,0x8d,0x30] 34 leal (%rax), %r22d 35 36# CHECK: leal (%rax), %r23d 37# CHECK: encoding: [0xd5,0x40,0x8d,0x38] 38 leal (%rax), %r23d 39 40# CHECK: leal (%rax), %r24d 41# CHECK: encoding: [0xd5,0x44,0x8d,0x00] 42 leal (%rax), %r24d 43 44# CHECK: leal (%rax), %r25d 45# CHECK: encoding: [0xd5,0x44,0x8d,0x08] 46 leal (%rax), %r25d 47 48# CHECK: leal (%rax), %r26d 49# CHECK: encoding: [0xd5,0x44,0x8d,0x10] 50 leal (%rax), %r26d 51 52# CHECK: leal (%rax), %r27d 53# CHECK: encoding: [0xd5,0x44,0x8d,0x18] 54 leal (%rax), %r27d 55 56# CHECK: leal (%rax), %r28d 57# CHECK: encoding: [0xd5,0x44,0x8d,0x20] 58 leal (%rax), %r28d 59 60# CHECK: leal (%rax), %r29d 61# CHECK: encoding: [0xd5,0x44,0x8d,0x28] 62 leal (%rax), %r29d 63 64# CHECK: leal (%rax), %r30d 65# CHECK: encoding: [0xd5,0x44,0x8d,0x30] 66 leal (%rax), %r30d 67 68# CHECK: leal (%rax), %r31d 69# CHECK: encoding: [0xd5,0x44,0x8d,0x38] 70 leal (%rax), %r31d 71 72## X bit 73 74# CHECK: leal (,%r16), %eax 75# CHECK: encoding: [0xd5,0x20,0x8d,0x04,0x05,0x00,0x00,0x00,0x00] 76 leal (,%r16), %eax 77 78# CHECK: leal (,%r17), %eax 79# CHECK: encoding: [0xd5,0x20,0x8d,0x04,0x0d,0x00,0x00,0x00,0x00] 80 leal (,%r17), %eax 81 82# CHECK: leal (,%r18), %eax 83# CHECK: encoding: [0xd5,0x20,0x8d,0x04,0x15,0x00,0x00,0x00,0x00] 84 leal (,%r18), %eax 85 86# CHECK: leal (,%r19), %eax 87# CHECK: encoding: [0xd5,0x20,0x8d,0x04,0x1d,0x00,0x00,0x00,0x00] 88 leal (,%r19), %eax 89 90# CHECK: leal (,%r20), %eax 91# CHECK: encoding: [0xd5,0x20,0x8d,0x04,0x25,0x00,0x00,0x00,0x00] 92 leal (,%r20), %eax 93 94# CHECK: leal (,%r21), %eax 95# CHECK: encoding: [0xd5,0x20,0x8d,0x04,0x2d,0x00,0x00,0x00,0x00] 96 leal (,%r21), %eax 97 98# CHECK: leal (,%r22), %eax 99# CHECK: encoding: [0xd5,0x20,0x8d,0x04,0x35,0x00,0x00,0x00,0x00] 100 leal (,%r22), %eax 101 102# CHECK: leal (,%r23), %eax 103# CHECK: encoding: [0xd5,0x20,0x8d,0x04,0x3d,0x00,0x00,0x00,0x00] 104 leal (,%r23), %eax 105 106# CHECK: leal (,%r24), %eax 107# CHECK: encoding: [0xd5,0x22,0x8d,0x04,0x05,0x00,0x00,0x00,0x00] 108 leal (,%r24), %eax 109 110# CHECK: leal (,%r25), %eax 111# CHECK: encoding: [0xd5,0x22,0x8d,0x04,0x0d,0x00,0x00,0x00,0x00] 112 leal (,%r25), %eax 113 114# CHECK: leal (,%r26), %eax 115# CHECK: encoding: [0xd5,0x22,0x8d,0x04,0x15,0x00,0x00,0x00,0x00] 116 leal (,%r26), %eax 117 118# CHECK: leal (,%r27), %eax 119# CHECK: encoding: [0xd5,0x22,0x8d,0x04,0x1d,0x00,0x00,0x00,0x00] 120 leal (,%r27), %eax 121 122# CHECK: leal (,%r28), %eax 123# CHECK: encoding: [0xd5,0x22,0x8d,0x04,0x25,0x00,0x00,0x00,0x00] 124 leal (,%r28), %eax 125 126# CHECK: leal (,%r29), %eax 127# CHECK: encoding: [0xd5,0x22,0x8d,0x04,0x2d,0x00,0x00,0x00,0x00] 128 leal (,%r29), %eax 129 130# CHECK: leal (,%r30), %eax 131# CHECK: encoding: [0xd5,0x22,0x8d,0x04,0x35,0x00,0x00,0x00,0x00] 132 leal (,%r30), %eax 133 134# CHECK: leal (,%r31), %eax 135# CHECK: encoding: [0xd5,0x22,0x8d,0x04,0x3d,0x00,0x00,0x00,0x00] 136 leal (,%r31), %eax 137 138## B bit 139 140# CHECK: leal (%r16), %eax 141# CHECK: encoding: [0xd5,0x10,0x8d,0x00] 142 leal (%r16), %eax 143 144# CHECK: leal (%r17), %eax 145# CHECK: encoding: [0xd5,0x10,0x8d,0x01] 146 leal (%r17), %eax 147 148# CHECK: leal (%r18), %eax 149# CHECK: encoding: [0xd5,0x10,0x8d,0x02] 150 leal (%r18), %eax 151 152# CHECK: leal (%r19), %eax 153# CHECK: encoding: [0xd5,0x10,0x8d,0x03] 154 leal (%r19), %eax 155 156# CHECK: leal (%r20), %eax 157# CHECK: encoding: [0xd5,0x10,0x8d,0x04,0x24] 158 leal (%r20), %eax 159 160# CHECK: leal (%r21), %eax 161# CHECK: encoding: [0xd5,0x10,0x8d,0x45,0x00] 162 leal (%r21), %eax 163 164# CHECK: leal (%r22), %eax 165# CHECK: encoding: [0xd5,0x10,0x8d,0x06] 166 leal (%r22), %eax 167 168# CHECK: leal (%r23), %eax 169# CHECK: encoding: [0xd5,0x10,0x8d,0x07] 170 leal (%r23), %eax 171 172# CHECK: leal (%r24), %eax 173# CHECK: encoding: [0xd5,0x11,0x8d,0x00] 174 leal (%r24), %eax 175 176# CHECK: leal (%r25), %eax 177# CHECK: encoding: [0xd5,0x11,0x8d,0x01] 178 leal (%r25), %eax 179 180# CHECK: leal (%r26), %eax 181# CHECK: encoding: [0xd5,0x11,0x8d,0x02] 182 leal (%r26), %eax 183 184# CHECK: leal (%r27), %eax 185# CHECK: encoding: [0xd5,0x11,0x8d,0x03] 186 leal (%r27), %eax 187 188# CHECK: leal (%r28), %eax 189# CHECK: encoding: [0xd5,0x11,0x8d,0x04,0x24] 190 leal (%r28), %eax 191 192# CHECK: leal (%r29), %eax 193# CHECK: encoding: [0xd5,0x11,0x8d,0x45,0x00] 194 leal (%r29), %eax 195 196# CHECK: leal (%r30), %eax 197# CHECK: encoding: [0xd5,0x11,0x8d,0x06] 198 leal (%r30), %eax 199 200# CHECK: leal (%r31), %eax 201# CHECK: encoding: [0xd5,0x11,0x8d,0x07] 202 leal (%r31), %eax 203 204## SIB 205 206# CHECK: leal 1(%r20), %eax 207# CHECK: encoding: [0xd5,0x10,0x8d,0x44,0x24,0x01] 208 leal 1(%r20), %eax 209 210# CHECK: leal 1(%r28), %eax 211# CHECK: encoding: [0xd5,0x11,0x8d,0x44,0x24,0x01] 212 leal 1(%r28), %eax 213 214# CHECK: leal 129(%r20), %eax 215# CHECK: encoding: [0xd5,0x10,0x8d,0x84,0x24,0x81,0x00,0x00,0x00] 216 leal 129(%r20), %eax 217 218# CHECK: leal 129(%r28), %eax 219# CHECK: encoding: [0xd5,0x11,0x8d,0x84,0x24,0x81,0x00,0x00,0x00] 220 leal 129(%r28), %eax 221 222## W bit 223 224# CHECK: leaq (%rax), %r16 225# CHECK: encoding: [0xd5,0x48,0x8d,0x00] 226 leaq (%rax), %r16 227 228# CHECK: leaq (%r16), %rax 229# CHECK: encoding: [0xd5,0x18,0x8d,0x00] 230 leaq (%r16), %rax 231 232# CHECK: leaq (,%r16), %rax 233# CHECK: encoding: [0xd5,0x28,0x8d,0x04,0x05,0x00,0x00,0x00,0x00] 234 leaq (,%r16), %rax 235 236## M bit 237 238# CHECK: imull %eax, %r16d 239# CHECK: encoding: [0xd5,0xc0,0xaf,0xc0] 240 imull %eax, %r16d 241