| ; RUN: llvm-ml -filetype=s %s /Fo - | FileCheck %s |
| |
| .data |
| |
| FOO STRUCT 2 |
| x BYTE ? |
| y WORD 5 DUP (?) |
| FOO ENDS |
| |
| .code |
| |
| t1: |
| ; CHECK-LABEL: t1: |
| |
| mov eax, sizeof BYTE |
| mov eax, (sizeof sBYTE) |
| mov eax, sizeof(Db) |
| mov eax, type BYTE |
| mov eax, (type sBYTE) |
| mov eax, type(Db) |
| ; CHECK: mov eax, 1 |
| ; CHECK: mov eax, 1 |
| ; CHECK: mov eax, 1 |
| ; CHECK: mov eax, 1 |
| ; CHECK: mov eax, 1 |
| ; CHECK: mov eax, 1 |
| |
| mov eax, sizeof(word) |
| mov eax, type(word) |
| ; CHECK: mov eax, 2 |
| ; CHECK: mov eax, 2 |
| mov eax, sizeof(dword) |
| mov eax, type(dword) |
| ; CHECK: mov eax, 4 |
| ; CHECK: mov eax, 4 |
| mov eax, sizeof(fword) |
| mov eax, type(fword) |
| ; CHECK: mov eax, 6 |
| ; CHECK: mov eax, 6 |
| mov eax, sizeof(qword) |
| mov eax, type(qword) |
| ; CHECK: mov eax, 8 |
| ; CHECK: mov eax, 8 |
| |
| mov eax, sizeof(real4) |
| mov eax, type(real4) |
| ; CHECK: mov eax, 4 |
| ; CHECK: mov eax, 4 |
| mov eax, sizeof(real8) |
| mov eax, type(real8) |
| ; CHECK: mov eax, 8 |
| ; CHECK: mov eax, 8 |
| |
| mov eax, sizeof(FOO) |
| mov eax, type(FOO) |
| ; CHECK: mov eax, 12 |
| ; CHECK: mov eax, 12 |
| |
| |
| t2_full BYTE "ab" |
| t2_short DB ? |
| t2_signed SBYTE 3 DUP (?) |
| |
| t2: |
| ; CHECK-LABEL: t2: |
| |
| mov eax, sizeof(t2_full) |
| mov eax, lengthof(t2_full) |
| mov eax, type(t2_full) |
| ; CHECK: mov eax, 2 |
| ; CHECK: mov eax, 2 |
| ; CHECK: mov eax, 1 |
| |
| mov eax, sizeof(t2_short) |
| mov eax, lengthof(t2_short) |
| mov eax, type(t2_short) |
| ; CHECK: mov eax, 1 |
| ; CHECK: mov eax, 1 |
| ; CHECK: mov eax, 1 |
| |
| mov eax, sizeof(t2_signed) |
| mov eax, lengthof(t2_signed) |
| mov eax, type(t2_signed) |
| ; CHECK: mov eax, 3 |
| ; CHECK: mov eax, 3 |
| ; CHECK: mov eax, 1 |
| |
| |
| t3_full WORD 2 DUP (?) |
| t3_short DW ? |
| t3_signed SWORD 3 DUP (?) |
| |
| t3: |
| ; CHECK-LABEL: t3: |
| |
| mov eax, sizeof(t3_full) |
| mov eax, lengthof(t3_full) |
| mov eax, type(t3_full) |
| ; CHECK: mov eax, 4 |
| ; CHECK: mov eax, 2 |
| ; CHECK: mov eax, 2 |
| |
| mov eax, sizeof(t3_short) |
| mov eax, lengthof(t3_short) |
| mov eax, type(t3_short) |
| ; CHECK: mov eax, 2 |
| ; CHECK: mov eax, 1 |
| ; CHECK: mov eax, 2 |
| |
| mov eax, sizeof(t3_signed) |
| mov eax, lengthof(t3_signed) |
| mov eax, type(t3_signed) |
| ; CHECK: mov eax, 6 |
| ; CHECK: mov eax, 3 |
| ; CHECK: mov eax, 2 |
| |
| |
| t4_full DWORD 2 DUP (?) |
| t4_short DD ? |
| t4_signed SDWORD 3 DUP (?) |
| |
| t4: |
| ; CHECK-LABEL: t4: |
| |
| mov eax, sizeof(t4_full) |
| mov eax, lengthof(t4_full) |
| mov eax, type(t4_full) |
| ; CHECK: mov eax, 8 |
| ; CHECK: mov eax, 2 |
| ; CHECK: mov eax, 4 |
| |
| mov eax, sizeof(t4_short) |
| mov eax, lengthof(t4_short) |
| mov eax, type(t4_short) |
| ; CHECK: mov eax, 4 |
| ; CHECK: mov eax, 1 |
| ; CHECK: mov eax, 4 |
| |
| mov eax, sizeof(t4_signed) |
| mov eax, lengthof(t4_signed) |
| mov eax, type(t4_signed) |
| ; CHECK: mov eax, 12 |
| ; CHECK: mov eax, 3 |
| ; CHECK: mov eax, 4 |
| |
| |
| t5_full FWORD 2 DUP (?) |
| t5_short DF ? |
| |
| t5: |
| ; CHECK-LABEL: t5: |
| |
| mov eax, sizeof(t5_full) |
| mov eax, lengthof(t5_full) |
| mov eax, type(t5_full) |
| ; CHECK: mov eax, 12 |
| ; CHECK: mov eax, 2 |
| ; CHECK: mov eax, 6 |
| |
| mov eax, sizeof(t5_short) |
| mov eax, lengthof(t5_short) |
| mov eax, type(t5_short) |
| ; CHECK: mov eax, 6 |
| ; CHECK: mov eax, 1 |
| ; CHECK: mov eax, 6 |
| |
| |
| t6_full QWORD 2 DUP (?) |
| t6_short DQ ? |
| t6_signed SQWORD 3 DUP (?) |
| |
| t6: |
| ; CHECK-LABEL: t6: |
| |
| mov eax, sizeof(t6_full) |
| mov eax, lengthof(t6_full) |
| mov eax, type(t6_full) |
| ; CHECK: mov eax, 16 |
| ; CHECK: mov eax, 2 |
| ; CHECK: mov eax, 8 |
| |
| mov eax, sizeof(t6_short) |
| mov eax, lengthof(t6_short) |
| mov eax, type(t6_short) |
| ; CHECK: mov eax, 8 |
| ; CHECK: mov eax, 1 |
| ; CHECK: mov eax, 8 |
| |
| mov eax, sizeof(t6_signed) |
| mov eax, lengthof(t6_signed) |
| mov eax, type(t6_signed) |
| ; CHECK: mov eax, 24 |
| ; CHECK: mov eax, 3 |
| ; CHECK: mov eax, 8 |
| |
| |
| t7_single REAL4 2 DUP (?) |
| t7_double REAL8 ? |
| t7_extended REAL10 3 DUP (?) |
| |
| t7: |
| ; CHECK-LABEL: t7: |
| |
| mov eax, sizeof(t7_single) |
| mov eax, lengthof(t7_single) |
| mov eax, type(t7_single) |
| ; CHECK: mov eax, 8 |
| ; CHECK: mov eax, 2 |
| ; CHECK: mov eax, 4 |
| |
| mov eax, sizeof(t7_double) |
| mov eax, lengthof(t7_double) |
| mov eax, type(t7_double) |
| ; CHECK: mov eax, 8 |
| ; CHECK: mov eax, 1 |
| ; CHECK: mov eax, 8 |
| |
| mov eax, sizeof(t7_extended) |
| mov eax, lengthof(t7_extended) |
| mov eax, type(t7_extended) |
| ; CHECK: mov eax, 30 |
| ; CHECK: mov eax, 3 |
| ; CHECK: mov eax, 10 |
| |
| |
| t8_var FOO <>, <> |
| |
| t8: |
| ; CHECK-LABEL: t8: |
| |
| mov eax, sizeof(t8_var) |
| mov eax, lengthof(t8_var) |
| mov eax, type(t8_var) |
| ; CHECK: mov eax, 24 |
| ; CHECK: mov eax, 2 |
| ; CHECK: mov eax, 12 |
| |
| mov eax, sizeof(t8_var.y) |
| mov eax, lengthof(t8_var.y) |
| mov eax, type(t8_var.y) |
| ; CHECK: mov eax, 10 |
| ; CHECK: mov eax, 5 |
| ; CHECK: mov eax, 2 |
| |
| END |