brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.8 KiB · ba8bd75 Raw
195 lines · plain
1; RUN: llvm-ml64 -filetype=s %s /Fo - | FileCheck %s2 3.data4BAZ STRUCT5  a BYTE 16  b BYTE 27BAZ ENDS8 9FOOBAR struct 210  c BYTE 3 DUP (4)11  d DWORD 512  e BAZ <>13  STRUCT f14    g BYTE 615    h BYTE 716  ends17  h BYTE "abcde"18foobar ENDS19 20t1 foobar <>21 22; CHECK: t1:23;24; BYTE 3 DUP (4), plus alignment padding25; CHECK-NEXT: .byte 426; CHECK-NEXT: .byte 427; CHECK-NEXT: .byte 428; CHECK-NEXT: .zero 129;30; DWORD 531; CHECK-NEXT: .long 532;33; BAZ <>34; CHECK-NEXT: .byte 135; CHECK-NEXT: .byte 236;37; <BYTE 6, BYTE 7>, with no alignment padding (field size < alignment)38; CHECK-NEXT: .byte 639; CHECK-NEXT: .byte 740;41; BYTE "abcde", plus alignment padding42; CHECK-NEXT: .byte 9743; CHECK-NEXT: .byte 9844; CHECK-NEXT: .byte 9945; CHECK-NEXT: .byte 10046; CHECK-NEXT: .byte 10147; CHECK-NEXT: .zero 148 49t2 FOOBAR <"gh",,<10,11>,<12>,'ijk'>50 51; CHECK: t2:52;53; BYTE "gh", padded with " ", plus alignment padding54; CHECK-NEXT: .byte 10355; CHECK-NEXT: .byte 10456; CHECK-NEXT: .byte 3257; CHECK-NEXT: .zero 158;59; DWORD 5 (default-initialized when omitted)60; CHECK-NEXT: .long 561;62; BAZ <10, 11>63; CHECK-NEXT: .byte 1064; CHECK-NEXT: .byte 1165;66; <BYTE 12, BYTE 7>, with no alignment padding (field size < alignment)67; CHECK-NEXT: .byte 1268; CHECK-NEXT: .byte 769;70; BYTE "ijk", padded with " ", plus alignment padding71; CHECK-NEXT: .byte 10572; CHECK-NEXT: .byte 10673; CHECK-NEXT: .byte 10774; CHECK-NEXT: .byte 3275; CHECK-NEXT: .byte 3276; CHECK-NEXT: .zero 177 78.code79 80t3:81mov al, t2.f.h82mov al, [t2].f.h83mov al, [t2.f.h]84 85; CHECK: t3:86; CHECK-NEXT: mov al, byte ptr [rip + t2+11]87; CHECK-NEXT: mov al, byte ptr [rip + t2+11]88; CHECK-NEXT: mov al, byte ptr [rip + t2+11]89 90t4:91mov al, j.FOOBAR.f.h92mov al, j.baz.b93 94; CHECK: t4:95; CHECK-NEXT: mov al, byte ptr [rip + j+11]96; CHECK-NEXT: mov al, byte ptr [rip + j+1]97 98t5:99mov al, [ebx].FOOBAR.f.h100mov al, [ebx.FOOBAR].f.h101mov al, [ebx.FOOBAR.f.h]102 103; CHECK: t5:104; CHECK-NEXT: mov al, byte ptr [ebx + 11]105; CHECK-NEXT: mov al, byte ptr [ebx + 11]106; CHECK-NEXT: mov al, byte ptr [ebx + 11]107 108t6:109mov al, t2.FOOBAR.f.h110mov al, [t2].FOOBAR.f.h111mov al, [t2.FOOBAR].f.h112mov al, [t2.FOOBAR.f.h]113 114; CHECK: t6:115; CHECK-NEXT: mov al, byte ptr [rip + t2+11]116; CHECK-NEXT: mov al, byte ptr [rip + t2+11]117; CHECK-NEXT: mov al, byte ptr [rip + t2+11]118; CHECK-NEXT: mov al, byte ptr [rip + t2+11]119 120t7:121mov al, [ebx].FOOBAR.e.b122mov al, [ebx.FOOBAR].e.b123mov al, [ebx.FOOBAR.e].b124mov al, [ebx.FOOBAR.e.b]125 126; CHECK: t7:127; CHECK-NEXT: mov al, byte ptr [ebx + 9]128; CHECK-NEXT: mov al, byte ptr [ebx + 9]129; CHECK-NEXT: mov al, byte ptr [ebx + 9]130; CHECK-NEXT: mov al, byte ptr [ebx + 9]131 132t8:133mov al, t2.FOOBAR.e.b134mov al, [t2].FOOBAR.e.b135mov al, [t2.FOOBAR].e.b136mov al, [t2.FOOBAR.e].b137mov al, [t2.FOOBAR.e.b]138 139; CHECK: t8:140; CHECK-NEXT: mov al, byte ptr [rip + t2+9]141; CHECK-NEXT: mov al, byte ptr [rip + t2+9]142; CHECK-NEXT: mov al, byte ptr [rip + t2+9]143; CHECK-NEXT: mov al, byte ptr [rip + t2+9]144; CHECK-NEXT: mov al, byte ptr [rip + t2+9]145 146QUUX STRUCT147  u DWORD ?148  UNION149    v WORD ?150    w DWORD ?151    STRUCT152      x BYTE ?153      y BYTE ?154    ENDS155    after_struct BYTE ?156  ENDS157  z DWORD ?158QUUX ENDS159 160t9:161mov eax, [ebx].QUUX.u162mov ax, [ebx].QUUX.v163mov eax, [ebx].QUUX.w164mov al, [ebx].QUUX.x165mov al, [ebx].QUUX.y166mov al, [ebx].QUUX.after_struct167mov eax, [ebx].QUUX.z168 169; CHECK: t9:170; CHECK-NEXT: mov eax, dword ptr [ebx]171; CHECK-NEXT: mov ax, word ptr [ebx + 4]172; CHECK-NEXT: mov eax, dword ptr [ebx + 4]173; CHECK-NEXT: mov al, byte ptr [ebx + 4]174; CHECK-NEXT: mov al, byte ptr [ebx + 5]175; CHECK-NEXT: mov al, byte ptr [ebx + 4]176; CHECK-NEXT: mov eax, dword ptr [ebx + 8]177 178t10:179mov eax, FOOBAR.f180mov eax, FOOBAR.f.h181 182; CHECK: t10:183; CHECK-NEXT: mov eax, 10184; CHECK-NEXT: mov eax, 11185 186t11:187mov ax, (FOOBAR PTR [ebx]).f188mov ax, (FOOBAR PTR t1).f189 190; CHECK: t11:191; CHECK-NEXT: mov ax, word ptr [ebx + 10]192; CHECK-NEXT: mov ax, word ptr [rip + t1+10]193 194END195