| ; 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 |