1; RUN: llvm-ml -filetype=s %s /Fo - | FileCheck %s 2 3.data 4 5align_test: 6ALIGN 16 7; CHECK-LABEL: align_test: 8; CHECK-NEXT: .p2align 4 9 10org_test: 11ORG 256 12; CHECK-LABEL: org_test: 13; CHECK-NEXT: .org 256, 0 14 15align_struct STRUCT 16 BYTE ? 17 18 ALIGN 4 19 x BYTE ? 20 x_succ BYTE ? 21 BYTE ? 22 23 ALIGN 2 24 y BYTE ? 25 y_succ BYTE ? 26 27 ALIGN 1 28 z BYTE ? 29 30 EVEN 31 q BYTE ? 32align_struct ENDS 33 34struct_align_data ALIGN_STRUCT <101, 102, 103, 104, 105, 106, 107, 108> 35; CHECK-LABEL: struct_align_data: 36; CHECK-NEXT: .byte 101 37; CHECK-NEXT: .zero 3 38; CHECK-NEXT: .byte 102 39; CHECK-NEXT: .byte 103 40; CHECK-NEXT: .byte 104 41; CHECK-NEXT: .zero 1 42; CHECK-NEXT: .byte 105 43; CHECK-NEXT: .byte 106 44; CHECK-NEXT: .byte 107 45; CHECK-NEXT: .zero 1 46; CHECK-NEXT: .byte 108 47 48org_struct STRUCT 49 x BYTE ? 50 x_succ BYTE ? 51 ORG 15 52 y BYTE ? 53 y_succ BYTE ? 54 ORG 2 55 z BYTE ? 56 z_succ BYTE ? 57org_struct ENDS 58 59.code 60 61struct_align_test PROC 62 63x_align_test: 64 MOV eax, align_struct.x 65 MOV eax, align_struct.x_succ 66; CHECK-LABEL: x_align_test: 67; CHECK-NEXT: mov eax, 4 68; CHECK-NEXT: mov eax, 5 69 70y_align_test: 71 MOV eax, align_struct.y 72 MOV eax, align_struct.y_succ 73; CHECK-LABEL: y_align_test: 74; CHECK-NEXT: mov eax, 8 75; CHECK-NEXT: mov eax, 9 76 77z_align_test: 78 MOV eax, align_struct.z 79; CHECK-LABEL: z_align_test: 80; CHECK-NEXT: mov eax, 10 81 82q_even_test: 83 MOV eax, align_struct.q 84; CHECK-LABEL: q_even_test: 85; CHECK-NEXT: mov eax, 12 86 87size_align_test: 88 MOV eax, SIZEOF(align_struct) 89; CHECK-LABEL: size_align_test: 90; CHECK-NEXT: mov eax, 13 91 92 ret 93struct_align_test ENDP 94 95struct_org_test PROC 96; CHECK-LABEL: struct_org_test: 97 98field_positions: 99 MOV eax, org_struct.x 100 MOV eax, org_struct.x_succ 101 MOV eax, org_struct.y 102 MOV eax, org_struct.y_succ 103 MOV eax, org_struct.z 104 MOV eax, org_struct.z_succ 105; CHECK-LABEL: field_positions: 106; CHECK-NEXT: mov eax, 0 107; CHECK-NEXT: mov eax, 1 108; CHECK-NEXT: mov eax, 15 109; CHECK-NEXT: mov eax, 16 110; CHECK-NEXT: mov eax, 2 111; CHECK-NEXT: mov eax, 3 112 113 ret 114struct_org_test ENDP 115 116end 117