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