228 lines · c
1// RUN: %clang_cc1 -ffreestanding -emit-llvm-only -triple x86_64-windows-coff -fdump-record-layouts %s | FileCheck %s --check-prefix=CHECK-MS2// RUN: %clang_cc1 -ffreestanding -emit-llvm-only -triple x86_64-apple-darwin -fdump-record-layouts %s | FileCheck %s --check-prefix=CHECK-NOTMS3#include <x86intrin.h>4 5#pragma pack(1)6 7struct s_m64 {8 int a;9 __m64 b;10};11typedef struct s_m64 m64;12 13#if defined(_WIN32)14static int a1[(sizeof(m64) == 16) - 1];15#else16static int a1[(sizeof(m64) == 12) - 1];17#endif18 19struct s_m128 {20 int a;21 __m128 b;22};23typedef struct s_m128 m128;24 25#if defined(_WIN32)26static int a1[(sizeof(m128) == 32) - 1];27#else28static int a1[(sizeof(m128) == 20) - 1];29#endif30 31struct s_m128i {32 int a;33 __m128i b;34};35typedef struct s_m128i m128i;36 37#if defined(_WIN32)38static int a1[(sizeof(m128i) == 32) - 1];39#else40static int a1[(sizeof(m128i) == 20) - 1];41#endif42 43struct s_m128d {44 int a;45 __m128d b;46};47typedef struct s_m128d m128d;48 49#if defined(_WIN32)50static int a1[(sizeof(m128d) == 32) - 1];51#else52static int a1[(sizeof(m128d) == 20) - 1];53#endif54 55struct s_m256 {56 int a;57 __m256 b;58};59typedef struct s_m256 m256;60 61#if defined(_WIN32)62static int a1[(sizeof(m256) == 64) - 1];63#else64static int a1[(sizeof(m256) == 36) - 1];65#endif66 67struct s_m256i {68 int a;69 __m256i b;70};71typedef struct s_m256i m256i;72 73#if defined(_WIN32)74static int a1[(sizeof(m256i) == 64) - 1];75#else76static int a1[(sizeof(m256i) == 36) - 1];77#endif78 79struct s_m256d {80 int a;81 __m256d b;82};83typedef struct s_m256d m256d;84 85#if defined(_WIN32)86static int a1[(sizeof(m256d) == 64) - 1];87#else88static int a1[(sizeof(m256d) == 36) - 1];89#endif90 91struct s_m512 {92 int a;93 __m512 b;94};95typedef struct s_m512 m512;96 97#if defined(_WIN32)98static int a1[(sizeof(m512) == 128) - 1];99#else100static int a1[(sizeof(m512) == 68) - 1];101#endif102 103struct s_m512i {104 int a;105 __m512i b;106};107typedef struct s_m512i m512i;108 109#if defined(_WIN32)110static int a1[(sizeof(m512i) == 128) - 1];111#else112static int a1[(sizeof(m512i) == 68) - 1];113#endif114 115struct s_m512d {116 int a;117 __m512d b;118};119typedef struct s_m512d m512d;120 121#if defined(_WIN32)122static int a1[(sizeof(m512d) == 128) - 1];123#else124static int a1[(sizeof(m512d) == 68) - 1];125#endif126 127// CHECK-MS: *** Dumping AST Record Layout128// CHECK-MS: 0 | struct s_m64129// CHECK-MS: 0 | int a130// CHECK-MS: 8 | __m64 b131// CHECK-MS: | [sizeof=16, align=8]132// CHECK-MS: *** Dumping AST Record Layout133// CHECK-MS: 0 | struct s_m128134// CHECK-MS: 0 | int a135// CHECK-MS: 16 | __m128 b136// CHECK-MS: | [sizeof=32, align=16]137// CHECK-MS: *** Dumping AST Record Layout138// CHECK-MS: 0 | struct s_m128i139// CHECK-MS: 0 | int a140// CHECK-MS: 16 | __m128i b141// CHECK-MS: | [sizeof=32, align=16]142// CHECK-MS: *** Dumping AST Record Layout143// CHECK-MS: 0 | struct s_m128d144// CHECK-MS: 0 | int a145// CHECK-MS: 16 | __m128d b146// CHECK-MS: | [sizeof=32, align=16]147// CHECK-MS: *** Dumping AST Record Layout148// CHECK-MS: 0 | struct s_m256149// CHECK-MS: 0 | int a150// CHECK-MS: 32 | __m256 b151// CHECK-MS: | [sizeof=64, align=32]152// CHECK-MS: *** Dumping AST Record Layout153// CHECK-MS: 0 | struct s_m256i154// CHECK-MS: 0 | int a155// CHECK-MS: 32 | __m256i b156// CHECK-MS: | [sizeof=64, align=32]157// CHECK-MS: *** Dumping AST Record Layout158// CHECK-MS: 0 | struct s_m256d159// CHECK-MS: 0 | int a160// CHECK-MS: 32 | __m256d b161// CHECK-MS: | [sizeof=64, align=32]162// CHECK-MS: *** Dumping AST Record Layout163// CHECK-MS: 0 | struct s_m512164// CHECK-MS: 0 | int a165// CHECK-MS: 64 | __m512 b166// CHECK-MS: | [sizeof=128, align=64]167// CHECK-MS: *** Dumping AST Record Layout168// CHECK-MS: 0 | struct s_m512i169// CHECK-MS: 0 | int a170// CHECK-MS: 64 | __m512i b171// CHECK-MS: | [sizeof=128, align=64]172// CHECK-MS: *** Dumping AST Record Layout173// CHECK-MS: 0 | struct s_m512d174// CHECK-MS: 0 | int a175// CHECK-MS: 64 | __m512d b176// CHECK-MS: | [sizeof=128, align=64]177 178// CHECK-NOTMS: *** Dumping AST Record Layout179// CHECK-NOTMS: 0 | struct s_m64180// CHECK-NOTMS: 0 | int a181// CHECK-NOTMS: 4 | __m64 b182// CHECK-NOTMS: | [sizeof=12, align=1]183// CHECK-NOTMS: *** Dumping AST Record Layout184// CHECK-NOTMS: 0 | struct s_m128185// CHECK-NOTMS: 0 | int a186// CHECK-NOTMS: 4 | __m128 b187// CHECK-NOTMS: | [sizeof=20, align=1]188// CHECK-NOTMS: *** Dumping AST Record Layout189// CHECK-NOTMS: 0 | struct s_m128i190// CHECK-NOTMS: 0 | int a191// CHECK-NOTMS: 4 | __m128i b192// CHECK-NOTMS: | [sizeof=20, align=1]193// CHECK-NOTMS: *** Dumping AST Record Layout194// CHECK-NOTMS: 0 | struct s_m128d195// CHECK-NOTMS: 0 | int a196// CHECK-NOTMS: 4 | __m128d b197// CHECK-NOTMS: | [sizeof=20, align=1]198// CHECK-NOTMS: *** Dumping AST Record Layout199// CHECK-NOTMS: 0 | struct s_m256200// CHECK-NOTMS: 0 | int a201// CHECK-NOTMS: 4 | __m256 b202// CHECK-NOTMS: | [sizeof=36, align=1]203// CHECK-NOTMS: *** Dumping AST Record Layout204// CHECK-NOTMS: 0 | struct s_m256i205// CHECK-NOTMS: 0 | int a206// CHECK-NOTMS: 4 | __m256i b207// CHECK-NOTMS: | [sizeof=36, align=1]208// CHECK-NOTMS: *** Dumping AST Record Layout209// CHECK-NOTMS: 0 | struct s_m256d210// CHECK-NOTMS: 0 | int a211// CHECK-NOTMS: 4 | __m256d b212// CHECK-NOTMS: | [sizeof=36, align=1]213// CHECK-NOTMS: *** Dumping AST Record Layout214// CHECK-NOTMS: 0 | struct s_m512215// CHECK-NOTMS: 0 | int a216// CHECK-NOTMS: 4 | __m512 b217// CHECK-NOTMS: | [sizeof=68, align=1]218// CHECK-NOTMS: *** Dumping AST Record Layout219// CHECK-NOTMS: 0 | struct s_m512i220// CHECK-NOTMS: 0 | int a221// CHECK-NOTMS: 4 | __m512i b222// CHECK-NOTMS: | [sizeof=68, align=1]223// CHECK-NOTMS: *** Dumping AST Record Layout224// CHECK-NOTMS: 0 | struct s_m512d225// CHECK-NOTMS: 0 | int a226// CHECK-NOTMS: 4 | __m512d b227// CHECK-NOTMS: | [sizeof=68, align=1]228