|  | ; RUN: llvm-ml -filetype=s %s /Fo - | FileCheck %s | 
|  |  | 
|  | .data | 
|  |  | 
|  | align_test: | 
|  | ALIGN 16 | 
|  | ; CHECK-LABEL: align_test: | 
|  | ; CHECK-NEXT: .p2align 4 | 
|  |  | 
|  | org_test: | 
|  | ORG 256 | 
|  | ; CHECK-LABEL: org_test: | 
|  | ; CHECK-NEXT: .org 256, 0 | 
|  |  | 
|  | align_struct STRUCT | 
|  | BYTE ? | 
|  |  | 
|  | ALIGN 4 | 
|  | x BYTE ? | 
|  | x_succ BYTE ? | 
|  | BYTE ? | 
|  |  | 
|  | ALIGN 2 | 
|  | y BYTE ? | 
|  | y_succ BYTE ? | 
|  |  | 
|  | ALIGN 1 | 
|  | z BYTE ? | 
|  |  | 
|  | EVEN | 
|  | q BYTE ? | 
|  | align_struct ENDS | 
|  |  | 
|  | struct_align_data ALIGN_STRUCT <101, 102, 103, 104, 105, 106, 107, 108> | 
|  | ; CHECK-LABEL: struct_align_data: | 
|  | ; CHECK-NEXT: .byte 101 | 
|  | ; CHECK-NEXT: .zero 3 | 
|  | ; CHECK-NEXT: .byte 102 | 
|  | ; CHECK-NEXT: .byte 103 | 
|  | ; CHECK-NEXT: .byte 104 | 
|  | ; CHECK-NEXT: .zero 1 | 
|  | ; CHECK-NEXT: .byte 105 | 
|  | ; CHECK-NEXT: .byte 106 | 
|  | ; CHECK-NEXT: .byte 107 | 
|  | ; CHECK-NEXT: .zero 1 | 
|  | ; CHECK-NEXT: .byte 108 | 
|  |  | 
|  | org_struct STRUCT | 
|  | x BYTE ? | 
|  | x_succ BYTE ? | 
|  | ORG 15 | 
|  | y BYTE ? | 
|  | y_succ BYTE ? | 
|  | ORG 2 | 
|  | z BYTE ? | 
|  | z_succ BYTE ? | 
|  | org_struct ENDS | 
|  |  | 
|  | .code | 
|  |  | 
|  | struct_align_test PROC | 
|  |  | 
|  | x_align_test: | 
|  | MOV eax, align_struct.x | 
|  | MOV eax, align_struct.x_succ | 
|  | ; CHECK-LABEL: x_align_test: | 
|  | ; CHECK-NEXT: mov eax, 4 | 
|  | ; CHECK-NEXT: mov eax, 5 | 
|  |  | 
|  | y_align_test: | 
|  | MOV eax, align_struct.y | 
|  | MOV eax, align_struct.y_succ | 
|  | ; CHECK-LABEL: y_align_test: | 
|  | ; CHECK-NEXT: mov eax, 8 | 
|  | ; CHECK-NEXT: mov eax, 9 | 
|  |  | 
|  | z_align_test: | 
|  | MOV eax, align_struct.z | 
|  | ; CHECK-LABEL: z_align_test: | 
|  | ; CHECK-NEXT: mov eax, 10 | 
|  |  | 
|  | q_even_test: | 
|  | MOV eax, align_struct.q | 
|  | ; CHECK-LABEL: q_even_test: | 
|  | ; CHECK-NEXT: mov eax, 12 | 
|  |  | 
|  | size_align_test: | 
|  | MOV eax, SIZEOF(align_struct) | 
|  | ; CHECK-LABEL: size_align_test: | 
|  | ; CHECK-NEXT: mov eax, 13 | 
|  |  | 
|  | ret | 
|  | struct_align_test ENDP | 
|  |  | 
|  | struct_org_test PROC | 
|  | ; CHECK-LABEL: struct_org_test: | 
|  |  | 
|  | field_positions: | 
|  | MOV eax, org_struct.x | 
|  | MOV eax, org_struct.x_succ | 
|  | MOV eax, org_struct.y | 
|  | MOV eax, org_struct.y_succ | 
|  | MOV eax, org_struct.z | 
|  | MOV eax, org_struct.z_succ | 
|  | ; CHECK-LABEL: field_positions: | 
|  | ; CHECK-NEXT: mov eax, 0 | 
|  | ; CHECK-NEXT: mov eax, 1 | 
|  | ; CHECK-NEXT: mov eax, 15 | 
|  | ; CHECK-NEXT: mov eax, 16 | 
|  | ; CHECK-NEXT: mov eax, 2 | 
|  | ; CHECK-NEXT: mov eax, 3 | 
|  |  | 
|  | ret | 
|  | struct_org_test ENDP | 
|  |  | 
|  | end |