1 ; RUN: llvm-ml -m64 -filetype=s %s /Fo - | FileCheck %s
24 ; BYTE 3 DUP (4), plus alignment padding
37 ; <BYTE 6, BYTE 7>, with no alignment padding (field size < alignment)
41 ; BYTE "abcde", plus alignment padding
42 ; CHECK-NEXT: .byte 97
43 ; CHECK-NEXT: .byte 98
44 ; CHECK-NEXT: .byte 99
45 ; CHECK-NEXT: .byte 100
46 ; CHECK-NEXT: .byte 101
49 t2 FOOBAR
<"gh",,<10,11>,<12>,'ijk'>
53 ; BYTE "gh", padded with " ", plus alignment padding
54 ; CHECK-NEXT: .byte 103
55 ; CHECK-NEXT: .byte 104
56 ; CHECK-NEXT: .byte 32
59 ; DWORD 5 (default-initialized when omitted)
63 ; CHECK-NEXT: .byte 10
64 ; CHECK-NEXT: .byte 11
66 ; <BYTE 12, BYTE 7>, with no alignment padding (field size < alignment)
67 ; CHECK-NEXT: .byte 12
70 ; BYTE "ijk", padded with " ", plus alignment padding
71 ; CHECK-NEXT: .byte 105
72 ; CHECK-NEXT: .byte 106
73 ; CHECK-NEXT: .byte 107
74 ; CHECK-NEXT: .byte 32
75 ; CHECK-NEXT: .byte 32
86 ; CHECK-NEXT: mov al, byte ptr [rip + t2+11]
87 ; CHECK-NEXT: mov al, byte ptr [rip + t2+11]
88 ; CHECK-NEXT: mov al, byte ptr [rip + t2+11]
95 ; CHECK-NEXT: mov al, byte ptr [rip + j+11]
96 ; CHECK-NEXT: mov al, byte ptr [rip + j+1]
99 mov al, [ebx].FOOBAR.f.h
100 mov al, [ebx.FOOBAR
].f.h
101 mov al, [ebx.FOOBAR.f.h
]
104 ; CHECK-NEXT: mov al, byte ptr [ebx + 11]
105 ; CHECK-NEXT: mov al, byte ptr [ebx + 11]
106 ; CHECK-NEXT: mov al, byte ptr [ebx + 11]
109 mov al, t2.FOOBAR.f.h
110 mov al, [t2
].FOOBAR.f.h
111 mov al, [t2.FOOBAR
].f.h
112 mov al, [t2.FOOBAR.f.h
]
115 ; CHECK-NEXT: mov al, byte ptr [rip + t2+11]
116 ; CHECK-NEXT: mov al, byte ptr [rip + t2+11]
117 ; CHECK-NEXT: mov al, byte ptr [rip + t2+11]
118 ; CHECK-NEXT: mov al, byte ptr [rip + t2+11]
121 mov al, [ebx].FOOBAR.e.b
122 mov al, [ebx.FOOBAR
].e.b
123 mov al, [ebx.FOOBAR.e
].b
124 mov al, [ebx.FOOBAR.e.b
]
127 ; CHECK-NEXT: mov al, byte ptr [ebx + 9]
128 ; CHECK-NEXT: mov al, byte ptr [ebx + 9]
129 ; CHECK-NEXT: mov al, byte ptr [ebx + 9]
130 ; CHECK-NEXT: mov al, byte ptr [ebx + 9]
133 mov al, t2.FOOBAR.e.b
134 mov al, [t2
].FOOBAR.e.b
135 mov al, [t2.FOOBAR
].e.b
136 mov al, [t2.FOOBAR.e
].b
137 mov al, [t2.FOOBAR.e.b
]
140 ; CHECK-NEXT: mov al, byte ptr [rip + t2+9]
141 ; CHECK-NEXT: mov al, byte ptr [rip + t2+9]
142 ; CHECK-NEXT: mov al, byte ptr [rip + t2+9]
143 ; CHECK-NEXT: mov al, byte ptr [rip + t2+9]
144 ; CHECK-NEXT: mov al, byte ptr [rip + t2+9]
161 mov eax, [ebx].QUUX.u
163 mov eax, [ebx].QUUX.w
166 mov al, [ebx].QUUX.after_struct
167 mov eax, [ebx].QUUX.z
170 ; CHECK-NEXT: mov eax, dword ptr [ebx]
171 ; CHECK-NEXT: mov ax, word ptr [ebx + 4]
172 ; CHECK-NEXT: mov eax, dword ptr [ebx + 4]
173 ; CHECK-NEXT: mov al, byte ptr [ebx + 4]
174 ; CHECK-NEXT: mov al, byte ptr [ebx + 5]
175 ; CHECK-NEXT: mov al, byte ptr [ebx + 4]
176 ; CHECK-NEXT: mov eax, dword ptr [ebx + 8]
183 ; CHECK-NEXT: mov eax, 10
184 ; CHECK-NEXT: mov eax, 11
187 mov ax, (FOOBAR
PTR [ebx]).f
188 mov ax, (FOOBAR
PTR t1
).f
191 ; CHECK-NEXT: mov ax, word ptr [ebx + 10]
192 ; CHECK-NEXT: mov ax, word ptr [rip + t1+10]