; 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