forked from OSchip/llvm-project
253 lines
5.6 KiB
ArmAsm
253 lines
5.6 KiB
ArmAsm
// RUN: llvm-mc -triple x86_64-unknown-unknown --show-encoding %s | FileCheck %s
|
|
|
|
movl foo(%rip), %eax
|
|
// CHECK: movl foo(%rip), %eax
|
|
// CHECK: encoding: [0x8b,0x05,A,A,A,A]
|
|
// CHECK: fixup A - offset: 2, value: foo-4, kind: reloc_riprel_4byte
|
|
|
|
movb $12, foo(%rip)
|
|
// CHECK: movb $12, foo(%rip)
|
|
// CHECK: encoding: [0xc6,0x05,A,A,A,A,0x0c]
|
|
// CHECK: fixup A - offset: 2, value: foo-5, kind: reloc_riprel_4byte
|
|
|
|
movw $12, foo(%rip)
|
|
// CHECK: movw $12, foo(%rip)
|
|
// CHECK: encoding: [0x66,0xc7,0x05,A,A,A,A,0x0c,0x00]
|
|
// CHECK: fixup A - offset: 3, value: foo-6, kind: reloc_riprel_4byte
|
|
|
|
movl $12, foo(%rip)
|
|
// CHECK: movl $12, foo(%rip)
|
|
// CHECK: encoding: [0xc7,0x05,A,A,A,A,0x0c,0x00,0x00,0x00]
|
|
// CHECK: fixup A - offset: 2, value: foo-8, kind: reloc_riprel_4byte
|
|
|
|
movq $12, foo(%rip)
|
|
// CHECK: movq $12, foo(%rip)
|
|
// CHECK: encoding: [0x48,0xc7,0x05,A,A,A,A,0x0c,0x00,0x00,0x00]
|
|
// CHECK: fixup A - offset: 3, value: foo-8, kind: reloc_riprel_4byte
|
|
|
|
// CHECK: addq $-424, %rax
|
|
// CHECK: encoding: [0x48,0x05,0x58,0xfe,0xff,0xff]
|
|
addq $-424, %rax
|
|
|
|
|
|
// CHECK: movq _foo@GOTPCREL(%rip), %rax
|
|
// CHECK: encoding: [0x48,0x8b,0x05,A,A,A,A]
|
|
// CHECK: fixup A - offset: 3, value: _foo@GOTPCREL-4, kind: reloc_riprel_4byte_movq_load
|
|
movq _foo@GOTPCREL(%rip), %rax
|
|
|
|
// CHECK: movq _foo@GOTPCREL(%rip), %r14
|
|
// CHECK: encoding: [0x4c,0x8b,0x35,A,A,A,A]
|
|
// CHECK: fixup A - offset: 3, value: _foo@GOTPCREL-4, kind: reloc_riprel_4byte_movq_load
|
|
movq _foo@GOTPCREL(%rip), %r14
|
|
|
|
|
|
// CHECK: movq (%r13,%rax,8), %r13
|
|
// CHECK: encoding: [0x4d,0x8b,0x6c,0xc5,0x00]
|
|
movq 0x00(%r13,%rax,8),%r13
|
|
|
|
// CHECK: testq %rax, %rbx
|
|
// CHECK: encoding: [0x48,0x85,0xd8]
|
|
testq %rax, %rbx
|
|
|
|
// CHECK: cmpq %rbx, %r14
|
|
// CHECK: encoding: [0x49,0x39,0xde]
|
|
cmpq %rbx, %r14
|
|
|
|
// rdar://7947167
|
|
|
|
movsq
|
|
// CHECK: movsq
|
|
// CHECK: encoding: [0x48,0xa5]
|
|
|
|
movsl
|
|
// CHECK: movsl
|
|
// CHECK: encoding: [0xa5]
|
|
|
|
stosq
|
|
// CHECK: stosq
|
|
// CHECK: encoding: [0x48,0xab]
|
|
stosl
|
|
// CHECK: stosl
|
|
// CHECK: encoding: [0xab]
|
|
|
|
|
|
// Not moffset forms of moves, they are x86-32 only! rdar://7947184
|
|
movb 0, %al // CHECK: movb 0, %al # encoding: [0x8a,0x04,0x25,0x00,0x00,0x00,0x00]
|
|
movw 0, %ax // CHECK: movw 0, %ax # encoding: [0x66,0x8b,0x04,0x25,0x00,0x00,0x00,0x00]
|
|
movl 0, %eax // CHECK: movl 0, %eax # encoding: [0x8b,0x04,0x25,0x00,0x00,0x00,0x00]
|
|
|
|
// CHECK: pushfq # encoding: [0x9c]
|
|
pushf
|
|
// CHECK: pushfq # encoding: [0x9c]
|
|
pushfq
|
|
// CHECK: popfq # encoding: [0x9d]
|
|
popf
|
|
// CHECK: popfq # encoding: [0x9d]
|
|
popfq
|
|
|
|
// CHECK: movabsq $-281474976710654, %rax
|
|
// CHECK: encoding: [0x48,0xb8,0x02,0x00,0x00,0x00,0x00,0x00,0xff,0xff]
|
|
movabsq $0xFFFF000000000002, %rax
|
|
|
|
// CHECK: movq $-281474976710654, %rax
|
|
// CHECK: encoding: [0x48,0xb8,0x02,0x00,0x00,0x00,0x00,0x00,0xff,0xff]
|
|
movq $0xFFFF000000000002, %rax
|
|
|
|
// CHECK: movq $-65536, %rax
|
|
// CHECK: encoding: [0x48,0xc7,0xc0,0x00,0x00,0xff,0xff]
|
|
movq $0xFFFFFFFFFFFF0000, %rax
|
|
|
|
// CHECK: movq $-256, %rax
|
|
// CHECK: encoding: [0x48,0xc7,0xc0,0x00,0xff,0xff,0xff]
|
|
movq $0xFFFFFFFFFFFFFF00, %rax
|
|
|
|
// CHECK: movq $10, %rax
|
|
// CHECK: encoding: [0x48,0xc7,0xc0,0x0a,0x00,0x00,0x00]
|
|
movq $10, %rax
|
|
|
|
// rdar://8014869
|
|
//
|
|
// CHECK: ret
|
|
// CHECK: encoding: [0xc3]
|
|
retq
|
|
|
|
// CHECK: sete %al
|
|
// CHECK: encoding: [0x0f,0x94,0xc0]
|
|
setz %al
|
|
|
|
// CHECK: setne %al
|
|
// CHECK: encoding: [0x0f,0x95,0xc0]
|
|
setnz %al
|
|
|
|
// CHECK: je 0
|
|
// CHECK: encoding: [0x74,A]
|
|
jz 0
|
|
|
|
// CHECK: jne
|
|
// CHECK: encoding: [0x75,A]
|
|
jnz 0
|
|
|
|
// rdar://8017515
|
|
btq $0x01,%rdx
|
|
// CHECK: btq $1, %rdx
|
|
// CHECK: encoding: [0x48,0x0f,0xba,0xe2,0x01]
|
|
|
|
//rdar://8017633
|
|
// CHECK: movzbl %al, %esi
|
|
// CHECK: encoding: [0x0f,0xb6,0xf0]
|
|
movzx %al, %esi
|
|
|
|
// CHECK: movzbq %al, %rsi
|
|
// CHECK: encoding: [0x48,0x0f,0xb6,0xf0]
|
|
movzx %al, %rsi
|
|
|
|
// CHECK: movzbq (%rsp), %rsi
|
|
// CHECK: encoding: [0x48,0x0f,0xb6,0x34,0x24]
|
|
movzx 0(%rsp), %rsi
|
|
|
|
|
|
// rdar://7873482
|
|
// CHECK: [0x65,0x8b,0x04,0x25,0x7c,0x00,0x00,0x00]
|
|
movl %gs:124, %eax
|
|
|
|
// CHECK: jmpq *8(%rax)
|
|
// CHECK: encoding: [0xff,0x60,0x08]
|
|
jmp *8(%rax)
|
|
|
|
// CHECK: btq $61, -216(%rbp)
|
|
// CHECK: encoding: [0x48,0x0f,0xba,0xa5,0x28,0xff,0xff,0xff,0x3d]
|
|
btq $61, -216(%rbp)
|
|
|
|
|
|
// rdar://8061602
|
|
L1:
|
|
jecxz L1
|
|
// CHECK: jecxz L1
|
|
// CHECK: encoding: [0x67,0xe3,A]
|
|
jrcxz L1
|
|
// CHECK: jrcxz L1
|
|
// CHECK: encoding: [0xe3,A]
|
|
|
|
// PR8061
|
|
xchgl 368(%rax),%ecx
|
|
// CHECK: xchgl %ecx, 368(%rax)
|
|
xchgl %ecx, 368(%rax)
|
|
// CHECK: xchgl %ecx, 368(%rax)
|
|
|
|
// rdar://8407548
|
|
xchg 0xdeadbeef(%rbx,%rcx,8),%bl
|
|
// CHECK: xchgb %bl, 3735928559(%rbx,%rcx,8)
|
|
|
|
|
|
|
|
// PR7254
|
|
lock incl 1(%rsp)
|
|
// CHECK: lock
|
|
// CHECK: incl 1(%rsp)
|
|
|
|
// rdar://8033482
|
|
rep movsl
|
|
// CHECK: rep
|
|
// CHECK: encoding: [0xf3]
|
|
// CHECK: movsl
|
|
// CHECK: encoding: [0xa5]
|
|
|
|
|
|
// rdar://8403974
|
|
iret
|
|
// CHECK: iretl
|
|
// CHECK: encoding: [0xcf]
|
|
iretw
|
|
// CHECK: iretw
|
|
// CHECK: encoding: [0x66,0xcf]
|
|
iretl
|
|
// CHECK: iretl
|
|
// CHECK: encoding: [0xcf]
|
|
iretq
|
|
// CHECK: iretq
|
|
// CHECK: encoding: [0x48,0xcf]
|
|
|
|
// rdar://8403907
|
|
sysret
|
|
// CHECK: sysretl
|
|
// CHECK: encoding: [0x0f,0x07]
|
|
sysretl
|
|
// CHECK: sysretl
|
|
// CHECK: encoding: [0x0f,0x07]
|
|
sysretq
|
|
// CHECK: sysretq
|
|
// CHECK: encoding: [0x48,0x0f,0x07]
|
|
|
|
// rdar://8407242
|
|
push %fs
|
|
// CHECK: pushq %fs
|
|
// CHECK: encoding: [0x0f,0xa0]
|
|
push %gs
|
|
// CHECK: pushq %gs
|
|
// CHECK: encoding: [0x0f,0xa8]
|
|
|
|
pushw %fs
|
|
// CHECK: pushw %fs
|
|
// CHECK: encoding: [0x66,0x0f,0xa0]
|
|
pushw %gs
|
|
// CHECK: pushw %gs
|
|
// CHECK: encoding: [0x66,0x0f,0xa8]
|
|
|
|
|
|
pop %fs
|
|
// CHECK: popq %fs
|
|
// CHECK: encoding: [0x0f,0xa1]
|
|
pop %gs
|
|
// CHECK: popq %gs
|
|
// CHECK: encoding: [0x0f,0xa9]
|
|
|
|
popw %fs
|
|
// CHECK: popw %fs
|
|
// CHECK: encoding: [0x66,0x0f,0xa1]
|
|
popw %gs
|
|
// CHECK: popw %gs
|
|
// CHECK: encoding: [0x66,0x0f,0xa9]
|
|
|
|
|
|
|