68 lines
1.1 KiB
NASM
68 lines
1.1 KiB
NASM
|
# RUN: llvm-ml -m64 -filetype=s %s /Fo - | FileCheck %s
|
||
|
|
||
|
.data
|
||
|
|
||
|
FOO STRUCT
|
||
|
a BYTE ?
|
||
|
b BYTE ?
|
||
|
c BYTE ?
|
||
|
d BYTE ?
|
||
|
FOO ENDS
|
||
|
|
||
|
BAR STRUCT
|
||
|
e WORD ?
|
||
|
f WORD ?
|
||
|
BAR ENDS
|
||
|
|
||
|
var FOO <>
|
||
|
|
||
|
.code
|
||
|
|
||
|
t1:
|
||
|
mov al, var.a
|
||
|
mov al, var. b
|
||
|
mov al, var .c
|
||
|
mov al, var . d
|
||
|
|
||
|
; CHECK-LABEL: t1:
|
||
|
; CHECK: mov al, byte ptr [rip + var]
|
||
|
; CHECK: mov al, byte ptr [rip + var+1]
|
||
|
; CHECK: mov al, byte ptr [rip + var+2]
|
||
|
; CHECK: mov al, byte ptr [rip + var+3]
|
||
|
|
||
|
t2:
|
||
|
mov eax, FOO.a
|
||
|
mov ax, FOO. b
|
||
|
mov al, FOO .c
|
||
|
mov eax, FOO . d
|
||
|
|
||
|
; CHECK-LABEL: t2:
|
||
|
; CHECK: mov eax, 0
|
||
|
; CHECK: mov ax, 1
|
||
|
; CHECK: mov al, 2
|
||
|
; CHECK: mov eax, 3
|
||
|
|
||
|
t3:
|
||
|
mov al, BYTE PTR var[FOO.c]
|
||
|
|
||
|
; CHECK-LABEL: t3:
|
||
|
; CHECK: mov al, byte ptr [rip + var+2]
|
||
|
|
||
|
t4:
|
||
|
mov ax, var.BAR.f
|
||
|
mov ax, var .BAR.f
|
||
|
mov ax, var. BAR.f
|
||
|
mov ax, var.BAR .f
|
||
|
mov ax, var.BAR. f
|
||
|
mov ax, var . BAR . f
|
||
|
|
||
|
; CHECK-LABEL: t4:
|
||
|
; CHECK: mov ax, word ptr [rip + var+2]
|
||
|
; CHECK: mov ax, word ptr [rip + var+2]
|
||
|
; CHECK: mov ax, word ptr [rip + var+2]
|
||
|
; CHECK: mov ax, word ptr [rip + var+2]
|
||
|
; CHECK: mov ax, word ptr [rip + var+2]
|
||
|
; CHECK: mov ax, word ptr [rip + var+2]
|
||
|
|
||
|
END
|