1*9880d681SAndroid Build Coastguard Worker// RUN: not llvm-mc -triple x86_64-unknown-unknown --show-encoding %s 2> %t.err | FileCheck --check-prefix=64 %s 2*9880d681SAndroid Build Coastguard Worker// RUN: FileCheck --check-prefix=ERR64 < %t.err %s 3*9880d681SAndroid Build Coastguard Worker// RUN: not llvm-mc -triple i386-unknown-unknown --show-encoding %s 2> %t.err | FileCheck --check-prefix=32 %s 4*9880d681SAndroid Build Coastguard Worker// RUN: FileCheck --check-prefix=ERR32 < %t.err %s 5*9880d681SAndroid Build Coastguard Worker// RUN: not llvm-mc -triple i386-unknown-unknown-code16 --show-encoding %s 2> %t.err | FileCheck --check-prefix=16 %s 6*9880d681SAndroid Build Coastguard Worker// RUN: FileCheck --check-prefix=ERR16 < %t.err %s 7*9880d681SAndroid Build Coastguard Worker 8*9880d681SAndroid Build Coastguard Workerlodsb 9*9880d681SAndroid Build Coastguard Worker// 64: lodsb (%rsi), %al # encoding: [0xac] 10*9880d681SAndroid Build Coastguard Worker// 32: lodsb (%esi), %al # encoding: [0xac] 11*9880d681SAndroid Build Coastguard Worker// 16: lodsb (%si), %al # encoding: [0xac] 12*9880d681SAndroid Build Coastguard Worker 13*9880d681SAndroid Build Coastguard Workerlodsb (%rsi), %al 14*9880d681SAndroid Build Coastguard Worker// 64: lodsb (%rsi), %al # encoding: [0xac] 15*9880d681SAndroid Build Coastguard Worker// ERR32: 64-bit 16*9880d681SAndroid Build Coastguard Worker// ERR16: 64-bit 17*9880d681SAndroid Build Coastguard Worker 18*9880d681SAndroid Build Coastguard Workerlodsb (%esi), %al 19*9880d681SAndroid Build Coastguard Worker// 64: lodsb (%esi), %al # encoding: [0x67,0xac] 20*9880d681SAndroid Build Coastguard Worker// 32: lodsb (%esi), %al # encoding: [0xac] 21*9880d681SAndroid Build Coastguard Worker// 16: lodsb (%esi), %al # encoding: [0x67,0xac] 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Workerlodsb (%si), %al 24*9880d681SAndroid Build Coastguard Worker// ERR64: invalid 16-bit base register 25*9880d681SAndroid Build Coastguard Worker// 32: lodsb (%si), %al # encoding: [0x67,0xac] 26*9880d681SAndroid Build Coastguard Worker// 16: lodsb (%si), %al # encoding: [0xac] 27*9880d681SAndroid Build Coastguard Worker 28*9880d681SAndroid Build Coastguard Workerlodsl %gs:(%esi) 29*9880d681SAndroid Build Coastguard Worker// 64: lodsl %gs:(%esi), %eax # encoding: [0x65,0x67,0xad] 30*9880d681SAndroid Build Coastguard Worker// 32: lodsl %gs:(%esi), %eax # encoding: [0x65,0xad] 31*9880d681SAndroid Build Coastguard Worker// 16: lodsl %gs:(%esi), %eax # encoding: [0x66,0x65,0x67,0xad] 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Workerlodsl (%edi), %eax 34*9880d681SAndroid Build Coastguard Worker// ERR64: invalid operand 35*9880d681SAndroid Build Coastguard Worker// ERR32: invalid operand 36*9880d681SAndroid Build Coastguard Worker// ERR16: invalid operand 37*9880d681SAndroid Build Coastguard Worker 38*9880d681SAndroid Build Coastguard Workerlodsl 44(%edi), %eax 39*9880d681SAndroid Build Coastguard Worker// ERR64: invalid operand 40*9880d681SAndroid Build Coastguard Worker// ERR32: invalid operand 41*9880d681SAndroid Build Coastguard Worker// ERR16: invalid operand 42*9880d681SAndroid Build Coastguard Worker 43*9880d681SAndroid Build Coastguard Workerlods (%esi), %ax 44*9880d681SAndroid Build Coastguard Worker// 64: lodsw (%esi), %ax # encoding: [0x66,0x67,0xad] 45*9880d681SAndroid Build Coastguard Worker// 32: lodsw (%esi), %ax # encoding: [0x66,0xad] 46*9880d681SAndroid Build Coastguard Worker// 16: lodsw (%esi), %ax # encoding: [0x67,0xad] 47*9880d681SAndroid Build Coastguard Worker 48*9880d681SAndroid Build Coastguard Workerstosw 49*9880d681SAndroid Build Coastguard Worker// 64: stosw %ax, %es:(%rdi) # encoding: [0x66,0xab] 50*9880d681SAndroid Build Coastguard Worker// 32: stosw %ax, %es:(%edi) # encoding: [0x66,0xab] 51*9880d681SAndroid Build Coastguard Worker// 16: stosw %ax, %es:(%di) # encoding: [0xab] 52*9880d681SAndroid Build Coastguard Worker 53*9880d681SAndroid Build Coastguard Workerstos %eax, (%edi) 54*9880d681SAndroid Build Coastguard Worker// 64: stosl %eax, %es:(%edi) # encoding: [0x67,0xab] 55*9880d681SAndroid Build Coastguard Worker// 32: stosl %eax, %es:(%edi) # encoding: [0xab] 56*9880d681SAndroid Build Coastguard Worker// 16: stosl %eax, %es:(%edi) # encoding: [0x66,0x67,0xab] 57*9880d681SAndroid Build Coastguard Worker 58*9880d681SAndroid Build Coastguard Workerstosb %al, %fs:(%edi) 59*9880d681SAndroid Build Coastguard Worker// ERR64: invalid operand for instruction 60*9880d681SAndroid Build Coastguard Worker// ERR32: invalid operand for instruction 61*9880d681SAndroid Build Coastguard Worker// ERR16: invalid operand for instruction 62*9880d681SAndroid Build Coastguard Worker 63*9880d681SAndroid Build Coastguard Workerstosb %al, %es:(%edi) 64*9880d681SAndroid Build Coastguard Worker// 64: stosb %al, %es:(%edi) # encoding: [0x67,0xaa] 65*9880d681SAndroid Build Coastguard Worker// 32: stosb %al, %es:(%edi) # encoding: [0xaa] 66*9880d681SAndroid Build Coastguard Worker// 16: stosb %al, %es:(%edi) # encoding: [0x67,0xaa] 67*9880d681SAndroid Build Coastguard Worker 68*9880d681SAndroid Build Coastguard Workerstosq 69*9880d681SAndroid Build Coastguard Worker// 64: stosq %rax, %es:(%rdi) # encoding: [0x48,0xab] 70*9880d681SAndroid Build Coastguard Worker// ERR32: 64-bit 71*9880d681SAndroid Build Coastguard Worker// ERR16: 64-bit 72*9880d681SAndroid Build Coastguard Worker 73*9880d681SAndroid Build Coastguard Workerstos %rax, (%edi) 74*9880d681SAndroid Build Coastguard Worker// 64: stosq %rax, %es:(%edi) # encoding: [0x48,0x67,0xab] 75*9880d681SAndroid Build Coastguard Worker// ERR32: only available in 64-bit mode 76*9880d681SAndroid Build Coastguard Worker// ERR16: only available in 64-bit mode 77*9880d681SAndroid Build Coastguard Worker 78*9880d681SAndroid Build Coastguard Workerscas %es:(%edi), %al 79*9880d681SAndroid Build Coastguard Worker// 64: scasb %es:(%edi), %al # encoding: [0x67,0xae] 80*9880d681SAndroid Build Coastguard Worker// 32: scasb %es:(%edi), %al # encoding: [0xae] 81*9880d681SAndroid Build Coastguard Worker// 16: scasb %es:(%edi), %al # encoding: [0x67,0xae] 82*9880d681SAndroid Build Coastguard Worker 83*9880d681SAndroid Build Coastguard Workerscasq %es:(%edi) 84*9880d681SAndroid Build Coastguard Worker// 64: scasq %es:(%edi), %rax # encoding: [0x48,0x67,0xaf] 85*9880d681SAndroid Build Coastguard Worker// ERR32: 64-bit 86*9880d681SAndroid Build Coastguard Worker// ERR16: 64-bit 87*9880d681SAndroid Build Coastguard Worker 88*9880d681SAndroid Build Coastguard Workerscasl %es:(%edi), %al 89*9880d681SAndroid Build Coastguard Worker// ERR64: invalid operand 90*9880d681SAndroid Build Coastguard Worker// ERR32: invalid operand 91*9880d681SAndroid Build Coastguard Worker// ERR16: invalid operand 92*9880d681SAndroid Build Coastguard Worker 93*9880d681SAndroid Build Coastguard Workerscas %es:(%di), %ax 94*9880d681SAndroid Build Coastguard Worker// ERR64: invalid 16-bit base register 95*9880d681SAndroid Build Coastguard Worker// 16: scasw %es:(%di), %ax # encoding: [0xaf] 96*9880d681SAndroid Build Coastguard Worker// 32: scasw %es:(%di), %ax # encoding: [0x66,0x67,0xaf] 97*9880d681SAndroid Build Coastguard Worker 98*9880d681SAndroid Build Coastguard Workercmpsb 99*9880d681SAndroid Build Coastguard Worker// 64: cmpsb %es:(%rdi), (%rsi) # encoding: [0xa6] 100*9880d681SAndroid Build Coastguard Worker// 32: cmpsb %es:(%edi), (%esi) # encoding: [0xa6] 101*9880d681SAndroid Build Coastguard Worker// 16: cmpsb %es:(%di), (%si) # encoding: [0xa6] 102*9880d681SAndroid Build Coastguard Worker 103*9880d681SAndroid Build Coastguard Workercmpsw (%edi), (%esi) 104*9880d681SAndroid Build Coastguard Worker// 64: cmpsw %es:(%edi), (%esi) # encoding: [0x66,0x67,0xa7] 105*9880d681SAndroid Build Coastguard Worker// 32: cmpsw %es:(%edi), (%esi) # encoding: [0x66,0xa7] 106*9880d681SAndroid Build Coastguard Worker// 16: cmpsw %es:(%edi), (%esi) # encoding: [0x67,0xa7] 107*9880d681SAndroid Build Coastguard Worker 108*9880d681SAndroid Build Coastguard Workercmpsb (%di), (%esi) 109*9880d681SAndroid Build Coastguard Worker// ERR64: invalid 16-bit base register 110*9880d681SAndroid Build Coastguard Worker// ERR32: mismatching source and destination 111*9880d681SAndroid Build Coastguard Worker// ERR16: mismatching source and destination 112*9880d681SAndroid Build Coastguard Worker 113*9880d681SAndroid Build Coastguard Workercmpsl %es:(%edi), %ss:(%esi) 114*9880d681SAndroid Build Coastguard Worker// 64: cmpsl %es:(%edi), %ss:(%esi) # encoding: [0x36,0x67,0xa7] 115*9880d681SAndroid Build Coastguard Worker// 32: cmpsl %es:(%edi), %ss:(%esi) # encoding: [0x36,0xa7] 116*9880d681SAndroid Build Coastguard Worker// 16: cmpsl %es:(%edi), %ss:(%esi) # encoding: [0x66,0x36,0x67,0xa7] 117*9880d681SAndroid Build Coastguard Worker 118*9880d681SAndroid Build Coastguard Workercmpsq (%rdi), (%rsi) 119*9880d681SAndroid Build Coastguard Worker// 64: cmpsq %es:(%rdi), (%rsi) # encoding: [0x48,0xa7] 120*9880d681SAndroid Build Coastguard Worker// ERR32: 64-bit 121*9880d681SAndroid Build Coastguard Worker// ERR16: 64-bit 122*9880d681SAndroid Build Coastguard Worker 123*9880d681SAndroid Build Coastguard Workermovsb (%esi), (%edi) 124*9880d681SAndroid Build Coastguard Worker// 64: movsb (%esi), %es:(%edi) # encoding: [0x67,0xa4] 125*9880d681SAndroid Build Coastguard Worker// 32: movsb (%esi), %es:(%edi) # encoding: [0xa4] 126*9880d681SAndroid Build Coastguard Worker// 16: movsb (%esi), %es:(%edi) # encoding: [0x67,0xa4] 127*9880d681SAndroid Build Coastguard Worker 128*9880d681SAndroid Build Coastguard Workermovsl %gs:(%esi), (%edi) 129*9880d681SAndroid Build Coastguard Worker// 64: movsl %gs:(%esi), %es:(%edi) # encoding: [0x65,0x67,0xa5] 130*9880d681SAndroid Build Coastguard Worker// 32: movsl %gs:(%esi), %es:(%edi) # encoding: [0x65,0xa5] 131*9880d681SAndroid Build Coastguard Worker// 16: movsl %gs:(%esi), %es:(%edi) # encoding: [0x66,0x65,0x67,0xa5] 132*9880d681SAndroid Build Coastguard Worker 133*9880d681SAndroid Build Coastguard Workeroutsb 134*9880d681SAndroid Build Coastguard Worker// 64: outsb (%rsi), %dx # encoding: [0x6e] 135*9880d681SAndroid Build Coastguard Worker// 32: outsb (%esi), %dx # encoding: [0x6e] 136*9880d681SAndroid Build Coastguard Worker// 16: outsb (%si), %dx # encoding: [0x6e] 137*9880d681SAndroid Build Coastguard Worker 138*9880d681SAndroid Build Coastguard Workeroutsw %fs:(%esi), %dx 139*9880d681SAndroid Build Coastguard Worker// 64: outsw %fs:(%esi), %dx # encoding: [0x66,0x64,0x67,0x6f] 140*9880d681SAndroid Build Coastguard Worker// 32: outsw %fs:(%esi), %dx # encoding: [0x66,0x64,0x6f] 141*9880d681SAndroid Build Coastguard Worker// 16: outsw %fs:(%esi), %dx # encoding: [0x64,0x67,0x6f] 142*9880d681SAndroid Build Coastguard Worker 143*9880d681SAndroid Build Coastguard Workerinsw %dx, (%edi) 144*9880d681SAndroid Build Coastguard Worker// 64: insw %dx, %es:(%edi) # encoding: [0x66,0x67,0x6d] 145*9880d681SAndroid Build Coastguard Worker// 32: insw %dx, %es:(%edi) # encoding: [0x66,0x6d] 146*9880d681SAndroid Build Coastguard Worker// 16: insw %dx, %es:(%edi) # encoding: [0x67,0x6d] 147*9880d681SAndroid Build Coastguard Worker 148*9880d681SAndroid Build Coastguard Workerinsw %dx, (%bx) 149*9880d681SAndroid Build Coastguard Worker// ERR64: invalid 16-bit base register 150*9880d681SAndroid Build Coastguard Worker// 32: insw %dx, %es:(%di) # encoding: [0x66,0x67,0x6d] 151*9880d681SAndroid Build Coastguard Worker// 16: insw %dx, %es:(%di) # encoding: [0x6d] 152*9880d681SAndroid Build Coastguard Worker 153*9880d681SAndroid Build Coastguard Workerinsw %dx, (%ebx) 154*9880d681SAndroid Build Coastguard Worker// 64: insw %dx, %es:(%edi) # encoding: [0x66,0x67,0x6d] 155*9880d681SAndroid Build Coastguard Worker// 32: insw %dx, %es:(%edi) # encoding: [0x66,0x6d] 156*9880d681SAndroid Build Coastguard Worker// 16: insw %dx, %es:(%edi) # encoding: [0x67,0x6d] 157*9880d681SAndroid Build Coastguard Worker 158*9880d681SAndroid Build Coastguard Workerinsw %dx, (%rbx) 159*9880d681SAndroid Build Coastguard Worker// 64: insw %dx, %es:(%rdi) # encoding: [0x66,0x6d] 160*9880d681SAndroid Build Coastguard Worker// ERR32: 64-bit 161*9880d681SAndroid Build Coastguard Worker// ERR16: 64-bit 162*9880d681SAndroid Build Coastguard Worker 163