1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 03:02:36 +01:00
llvm-mirror/test/MC/X86/address-size.s
Craig Topper 4e2f16caa6 [X86] Don't accept (%si,%bp) 16-bit address expressions.
The second register is the index register and should only be %si or %di if used with a base register. And in that case the base register should be %bp or %bx.

This makes us compatible with gas.

We do still need to support both orders with Intel syntax which uses [bp+si] and [si+bp]

llvm-svn: 335384
2018-06-22 20:20:38 +00:00

30 lines
834 B
ArmAsm

// RUN: llvm-mc -triple x86_64-unknown-unknown --show-encoding %s | FileCheck %s
.code64
movb $0x0, (%esi)
// CHECK: encoding: [0x67,0xc6,0x06,0x00]
movb $0x0, (%rsi)
// CHECK: encoding: [0xc6,0x06,0x00]
.code32
movb $0x0, (%si)
// CHECK: encoding: [0x67,0xc6,0x04,0x00]
movb $0x0, (%esi)
// CHECK: encoding: [0xc6,0x06,0x00]
movw $0x1234, (%si)
// CHECK: encoding: [0x67,0x66,0xc7,0x04,0x34,0x12]
movl $0x12345678, (%bx,%si,1)
// CHECK: encoding: [0x67,0xc7,0x00,0x78,0x56,0x34,0x12]
movw $0x1234, 0x5678(%bp)
// CHECK: encoding: [0x67,0x66,0xc7,0x86,0x78,0x56,0x34,0x12]
.code16
movb $0x0, (%si)
// CHECK: encoding: [0xc6,0x04,0x00]
movb $0x0, (%esi)
// CHECK: encoding: [0x67,0xc6,0x06,0x00]
movb $0x5a, (%bp,%di,1)
// CHECK: encoding: [0xc6,0x03,0x5a]
movb $0x5a, (%bp,%si,1)
// CHECK: encoding: [0xc6,0x02,0x5a]