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-64: error: 5# ERROR-NOT: error: 6# CHECK: {evex} imulw $123, %dx, %dx 7# CHECK: encoding: [0x62,0xf4,0x7d,0x08,0x6b,0xd2,0x7b] 8 {evex} imulw $123, %dx, %dx 9# CHECK: {nf} imulw $123, %dx, %dx 10# CHECK: encoding: [0x62,0xf4,0x7d,0x0c,0x6b,0xd2,0x7b] 11 {nf} imulw $123, %dx, %dx 12# CHECK: {evex} imull $123, %ecx, %ecx 13# CHECK: encoding: [0x62,0xf4,0x7c,0x08,0x6b,0xc9,0x7b] 14 {evex} imull $123, %ecx, %ecx 15# CHECK: {nf} imull $123, %ecx, %ecx 16# CHECK: encoding: [0x62,0xf4,0x7c,0x0c,0x6b,0xc9,0x7b] 17 {nf} imull $123, %ecx, %ecx 18# CHECK: {evex} imulq $123, %r9, %r9 19# CHECK: encoding: [0x62,0x54,0xfc,0x08,0x6b,0xc9,0x7b] 20 {evex} imulq $123, %r9, %r9 21# CHECK: {nf} imulq $123, %r9, %r9 22# CHECK: encoding: [0x62,0x54,0xfc,0x0c,0x6b,0xc9,0x7b] 23 {nf} imulq $123, %r9, %r9 24# CHECK: {evex} imulw $123, 291(%r8,%rax,4), %dx 25# CHECK: encoding: [0x62,0xd4,0x7d,0x08,0x6b,0x94,0x80,0x23,0x01,0x00,0x00,0x7b] 26 {evex} imulw $123, 291(%r8,%rax,4), %dx 27# CHECK: {nf} imulw $123, 291(%r8,%rax,4), %dx 28# CHECK: encoding: [0x62,0xd4,0x7d,0x0c,0x6b,0x94,0x80,0x23,0x01,0x00,0x00,0x7b] 29 {nf} imulw $123, 291(%r8,%rax,4), %dx 30# CHECK: {evex} imull $123, 291(%r8,%rax,4), %ecx 31# CHECK: encoding: [0x62,0xd4,0x7c,0x08,0x6b,0x8c,0x80,0x23,0x01,0x00,0x00,0x7b] 32 {evex} imull $123, 291(%r8,%rax,4), %ecx 33# CHECK: {nf} imull $123, 291(%r8,%rax,4), %ecx 34# CHECK: encoding: [0x62,0xd4,0x7c,0x0c,0x6b,0x8c,0x80,0x23,0x01,0x00,0x00,0x7b] 35 {nf} imull $123, 291(%r8,%rax,4), %ecx 36# CHECK: {evex} imulq $123, 291(%r8,%rax,4), %r9 37# CHECK: encoding: [0x62,0x54,0xfc,0x08,0x6b,0x8c,0x80,0x23,0x01,0x00,0x00,0x7b] 38 {evex} imulq $123, 291(%r8,%rax,4), %r9 39# CHECK: {nf} imulq $123, 291(%r8,%rax,4), %r9 40# CHECK: encoding: [0x62,0x54,0xfc,0x0c,0x6b,0x8c,0x80,0x23,0x01,0x00,0x00,0x7b] 41 {nf} imulq $123, 291(%r8,%rax,4), %r9 42# CHECK: {evex} imulw $1234, %dx, %dx 43# CHECK: encoding: [0x62,0xf4,0x7d,0x08,0x69,0xd2,0xd2,0x04] 44 {evex} imulw $1234, %dx, %dx 45# CHECK: {nf} imulw $1234, %dx, %dx 46# CHECK: encoding: [0x62,0xf4,0x7d,0x0c,0x69,0xd2,0xd2,0x04] 47 {nf} imulw $1234, %dx, %dx 48# CHECK: {evex} imulw $1234, 291(%r8,%rax,4), %dx 49# CHECK: encoding: [0x62,0xd4,0x7d,0x08,0x69,0x94,0x80,0x23,0x01,0x00,0x00,0xd2,0x04] 50 {evex} imulw $1234, 291(%r8,%rax,4), %dx 51# CHECK: {nf} imulw $1234, 291(%r8,%rax,4), %dx 52# CHECK: encoding: [0x62,0xd4,0x7d,0x0c,0x69,0x94,0x80,0x23,0x01,0x00,0x00,0xd2,0x04] 53 {nf} imulw $1234, 291(%r8,%rax,4), %dx 54# CHECK: {evex} imull $123456, %ecx, %ecx 55# CHECK: encoding: [0x62,0xf4,0x7c,0x08,0x69,0xc9,0x40,0xe2,0x01,0x00] 56 {evex} imull $123456, %ecx, %ecx 57# CHECK: {nf} imull $123456, %ecx, %ecx 58# CHECK: encoding: [0x62,0xf4,0x7c,0x0c,0x69,0xc9,0x40,0xe2,0x01,0x00] 59 {nf} imull $123456, %ecx, %ecx 60# CHECK: {evex} imulq $123456, %r9, %r9 61# CHECK: encoding: [0x62,0x54,0xfc,0x08,0x69,0xc9,0x40,0xe2,0x01,0x00] 62 {evex} imulq $123456, %r9, %r9 63# CHECK: {nf} imulq $123456, %r9, %r9 64# CHECK: encoding: [0x62,0x54,0xfc,0x0c,0x69,0xc9,0x40,0xe2,0x01,0x00] 65 {nf} imulq $123456, %r9, %r9 66# CHECK: {evex} imull $123456, 291(%r8,%rax,4), %ecx 67# CHECK: encoding: [0x62,0xd4,0x7c,0x08,0x69,0x8c,0x80,0x23,0x01,0x00,0x00,0x40,0xe2,0x01,0x00] 68 {evex} imull $123456, 291(%r8,%rax,4), %ecx 69# CHECK: {nf} imull $123456, 291(%r8,%rax,4), %ecx 70# CHECK: encoding: [0x62,0xd4,0x7c,0x0c,0x69,0x8c,0x80,0x23,0x01,0x00,0x00,0x40,0xe2,0x01,0x00] 71 {nf} imull $123456, 291(%r8,%rax,4), %ecx 72# CHECK: {evex} imulq $123456, 291(%r8,%rax,4), %r9 73# CHECK: encoding: [0x62,0x54,0xfc,0x08,0x69,0x8c,0x80,0x23,0x01,0x00,0x00,0x40,0xe2,0x01,0x00] 74 {evex} imulq $123456, 291(%r8,%rax,4), %r9 75# CHECK: {nf} imulq $123456, 291(%r8,%rax,4), %r9 76# CHECK: encoding: [0x62,0x54,0xfc,0x0c,0x69,0x8c,0x80,0x23,0x01,0x00,0x00,0x40,0xe2,0x01,0x00] 77 {nf} imulq $123456, 291(%r8,%rax,4), %r9 78# CHECK: {evex} imulb %bl 79# CHECK: encoding: [0x62,0xf4,0x7c,0x08,0xf6,0xeb] 80 {evex} imulb %bl 81# CHECK: {nf} imulb %bl 82# CHECK: encoding: [0x62,0xf4,0x7c,0x0c,0xf6,0xeb] 83 {nf} imulb %bl 84# CHECK: {evex} imulw %dx 85# CHECK: encoding: [0x62,0xf4,0x7d,0x08,0xf7,0xea] 86 {evex} imulw %dx 87# CHECK: {nf} imulw %dx 88# CHECK: encoding: [0x62,0xf4,0x7d,0x0c,0xf7,0xea] 89 {nf} imulw %dx 90# CHECK: {evex} imulw %dx, %dx 91# CHECK: encoding: [0x62,0xf4,0x7d,0x08,0xaf,0xd2] 92 {evex} imulw %dx, %dx 93# CHECK: {nf} imulw %dx, %dx 94# CHECK: encoding: [0x62,0xf4,0x7d,0x0c,0xaf,0xd2] 95 {nf} imulw %dx, %dx 96# CHECK: imulw %dx, %dx, %dx 97# CHECK: encoding: [0x62,0xf4,0x6d,0x18,0xaf,0xd2] 98 imulw %dx, %dx, %dx 99# CHECK: {nf} imulw %dx, %dx, %dx 100# CHECK: encoding: [0x62,0xf4,0x6d,0x1c,0xaf,0xd2] 101 {nf} imulw %dx, %dx, %dx 102# CHECK: {evex} imull %ecx 103# CHECK: encoding: [0x62,0xf4,0x7c,0x08,0xf7,0xe9] 104 {evex} imull %ecx 105# CHECK: {nf} imull %ecx 106# CHECK: encoding: [0x62,0xf4,0x7c,0x0c,0xf7,0xe9] 107 {nf} imull %ecx 108# CHECK: {evex} imull %ecx, %ecx 109# CHECK: encoding: [0x62,0xf4,0x7c,0x08,0xaf,0xc9] 110 {evex} imull %ecx, %ecx 111# CHECK: {nf} imull %ecx, %ecx 112# CHECK: encoding: [0x62,0xf4,0x7c,0x0c,0xaf,0xc9] 113 {nf} imull %ecx, %ecx 114# CHECK: imull %ecx, %ecx, %ecx 115# CHECK: encoding: [0x62,0xf4,0x74,0x18,0xaf,0xc9] 116 imull %ecx, %ecx, %ecx 117# CHECK: {nf} imull %ecx, %ecx, %ecx 118# CHECK: encoding: [0x62,0xf4,0x74,0x1c,0xaf,0xc9] 119 {nf} imull %ecx, %ecx, %ecx 120# CHECK: {evex} imulq %r9 121# CHECK: encoding: [0x62,0xd4,0xfc,0x08,0xf7,0xe9] 122 {evex} imulq %r9 123# CHECK: {nf} imulq %r9 124# CHECK: encoding: [0x62,0xd4,0xfc,0x0c,0xf7,0xe9] 125 {nf} imulq %r9 126# CHECK: {evex} imulq %r9, %r9 127# CHECK: encoding: [0x62,0x54,0xfc,0x08,0xaf,0xc9] 128 {evex} imulq %r9, %r9 129# CHECK: {nf} imulq %r9, %r9 130# CHECK: encoding: [0x62,0x54,0xfc,0x0c,0xaf,0xc9] 131 {nf} imulq %r9, %r9 132# CHECK: imulq %r9, %r9, %r9 133# CHECK: encoding: [0x62,0x54,0xb4,0x18,0xaf,0xc9] 134 imulq %r9, %r9, %r9 135# CHECK: {nf} imulq %r9, %r9, %r9 136# CHECK: encoding: [0x62,0x54,0xb4,0x1c,0xaf,0xc9] 137 {nf} imulq %r9, %r9, %r9 138# CHECK: {evex} imulb 291(%r8,%rax,4) 139# CHECK: encoding: [0x62,0xd4,0x7c,0x08,0xf6,0xac,0x80,0x23,0x01,0x00,0x00] 140 {evex} imulb 291(%r8,%rax,4) 141# CHECK: {nf} imulb 291(%r8,%rax,4) 142# CHECK: encoding: [0x62,0xd4,0x7c,0x0c,0xf6,0xac,0x80,0x23,0x01,0x00,0x00] 143 {nf} imulb 291(%r8,%rax,4) 144# CHECK: {evex} imulw 291(%r8,%rax,4) 145# CHECK: encoding: [0x62,0xd4,0x7d,0x08,0xf7,0xac,0x80,0x23,0x01,0x00,0x00] 146 {evex} imulw 291(%r8,%rax,4) 147# CHECK: {nf} imulw 291(%r8,%rax,4) 148# CHECK: encoding: [0x62,0xd4,0x7d,0x0c,0xf7,0xac,0x80,0x23,0x01,0x00,0x00] 149 {nf} imulw 291(%r8,%rax,4) 150# CHECK: {evex} imulw 291(%r8,%rax,4), %dx 151# CHECK: encoding: [0x62,0xd4,0x7d,0x08,0xaf,0x94,0x80,0x23,0x01,0x00,0x00] 152 {evex} imulw 291(%r8,%rax,4), %dx 153# CHECK: {nf} imulw 291(%r8,%rax,4), %dx 154# CHECK: encoding: [0x62,0xd4,0x7d,0x0c,0xaf,0x94,0x80,0x23,0x01,0x00,0x00] 155 {nf} imulw 291(%r8,%rax,4), %dx 156# CHECK: imulw 291(%r8,%rax,4), %dx, %dx 157# CHECK: encoding: [0x62,0xd4,0x6d,0x18,0xaf,0x94,0x80,0x23,0x01,0x00,0x00] 158 imulw 291(%r8,%rax,4), %dx, %dx 159# CHECK: {nf} imulw 291(%r8,%rax,4), %dx, %dx 160# CHECK: encoding: [0x62,0xd4,0x6d,0x1c,0xaf,0x94,0x80,0x23,0x01,0x00,0x00] 161 {nf} imulw 291(%r8,%rax,4), %dx, %dx 162# CHECK: {evex} imull 291(%r8,%rax,4) 163# CHECK: encoding: [0x62,0xd4,0x7c,0x08,0xf7,0xac,0x80,0x23,0x01,0x00,0x00] 164 {evex} imull 291(%r8,%rax,4) 165# CHECK: {nf} imull 291(%r8,%rax,4) 166# CHECK: encoding: [0x62,0xd4,0x7c,0x0c,0xf7,0xac,0x80,0x23,0x01,0x00,0x00] 167 {nf} imull 291(%r8,%rax,4) 168# CHECK: {evex} imull 291(%r8,%rax,4), %ecx 169# CHECK: encoding: [0x62,0xd4,0x7c,0x08,0xaf,0x8c,0x80,0x23,0x01,0x00,0x00] 170 {evex} imull 291(%r8,%rax,4), %ecx 171# CHECK: {nf} imull 291(%r8,%rax,4), %ecx 172# CHECK: encoding: [0x62,0xd4,0x7c,0x0c,0xaf,0x8c,0x80,0x23,0x01,0x00,0x00] 173 {nf} imull 291(%r8,%rax,4), %ecx 174# CHECK: imull 291(%r8,%rax,4), %ecx, %ecx 175# CHECK: encoding: [0x62,0xd4,0x74,0x18,0xaf,0x8c,0x80,0x23,0x01,0x00,0x00] 176 imull 291(%r8,%rax,4), %ecx, %ecx 177# CHECK: {nf} imull 291(%r8,%rax,4), %ecx, %ecx 178# CHECK: encoding: [0x62,0xd4,0x74,0x1c,0xaf,0x8c,0x80,0x23,0x01,0x00,0x00] 179 {nf} imull 291(%r8,%rax,4), %ecx, %ecx 180# CHECK: {evex} imulq 291(%r8,%rax,4) 181# CHECK: encoding: [0x62,0xd4,0xfc,0x08,0xf7,0xac,0x80,0x23,0x01,0x00,0x00] 182 {evex} imulq 291(%r8,%rax,4) 183# CHECK: {nf} imulq 291(%r8,%rax,4) 184# CHECK: encoding: [0x62,0xd4,0xfc,0x0c,0xf7,0xac,0x80,0x23,0x01,0x00,0x00] 185 {nf} imulq 291(%r8,%rax,4) 186# CHECK: {evex} imulq 291(%r8,%rax,4), %r9 187# CHECK: encoding: [0x62,0x54,0xfc,0x08,0xaf,0x8c,0x80,0x23,0x01,0x00,0x00] 188 {evex} imulq 291(%r8,%rax,4), %r9 189# CHECK: {nf} imulq 291(%r8,%rax,4), %r9 190# CHECK: encoding: [0x62,0x54,0xfc,0x0c,0xaf,0x8c,0x80,0x23,0x01,0x00,0x00] 191 {nf} imulq 291(%r8,%rax,4), %r9 192# CHECK: imulq 291(%r8,%rax,4), %r9, %r9 193# CHECK: encoding: [0x62,0x54,0xb4,0x18,0xaf,0x8c,0x80,0x23,0x01,0x00,0x00] 194 imulq 291(%r8,%rax,4), %r9, %r9 195# CHECK: {nf} imulq 291(%r8,%rax,4), %r9, %r9 196# CHECK: encoding: [0x62,0x54,0xb4,0x1c,0xaf,0x8c,0x80,0x23,0x01,0x00,0x00] 197 {nf} imulq 291(%r8,%rax,4), %r9, %r9 198