xref: /aosp_15_r20/external/clang/test/CodeGen/ms-inline-asm-align.c (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // REQUIRES: x86-registered-target
2*67e74705SXin Li // RUN: %clang_cc1 %s -triple i386-apple-darwin10 -fasm-blocks -emit-llvm -o - | FileCheck %s --check-prefix=DARWIN
3*67e74705SXin Li // RUN: %clang_cc1 %s -triple i686-pc-win32 -fasm-blocks -emit-llvm -o - | FileCheck %s --check-prefix=WINDOWS
4*67e74705SXin Li 
5*67e74705SXin Li // On Windows, .align is in bytes, and on Darwin, .align is in log2 form. The
6*67e74705SXin Li // Intel inline assembly parser should rewrite to the appropriate form depending
7*67e74705SXin Li // on the platform.
8*67e74705SXin Li 
align_test()9*67e74705SXin Li void align_test() {
10*67e74705SXin Li   __asm align 8
11*67e74705SXin Li   __asm align 16;
12*67e74705SXin Li   __asm align 128;
13*67e74705SXin Li   __asm ALIGN 256;
14*67e74705SXin Li }
15*67e74705SXin Li 
16*67e74705SXin Li // DARWIN-LABEL: define void @align_test()
17*67e74705SXin Li // DARWIN: call void asm sideeffect inteldialect
18*67e74705SXin Li // DARWIN-SAME: .align 3
19*67e74705SXin Li // DARWIN-SAME: .align 4
20*67e74705SXin Li // DARWIN-SAME: .align 7
21*67e74705SXin Li // DARWIN-SAME: .align 8
22*67e74705SXin Li // DARWIN-SAME: "~{dirflag},~{fpsr},~{flags}"()
23*67e74705SXin Li 
24*67e74705SXin Li // WINDOWS-LABEL: define void @align_test()
25*67e74705SXin Li // WINDOWS: call void asm sideeffect inteldialect
26*67e74705SXin Li // WINDOWS-SAME: .align 8
27*67e74705SXin Li // WINDOWS-SAME: .align 16
28*67e74705SXin Li // WINDOWS-SAME: .align 128
29*67e74705SXin Li // WINDOWS-SAME: .align 256
30*67e74705SXin Li // WINDOWS-SAME: "~{dirflag},~{fpsr},~{flags}"()
31