104 lines · plain
1# RUN: llvm-mc -triple x86_64-pc-win32 %s | FileCheck %s2 3# Round trip via intel syntax printing and back.4# RUN: llvm-mc -triple x86_64-pc-win32 %s -output-asm-variant=1 | \5# RUN: llvm-mc -triple x86_64-pc-win32 -x86-asm-syntax=intel | FileCheck %s6 7 .text8 .globl func9 .def func; .scl 2; .type 32; .endef10 .seh_proc func11# CHECK: .seh_proc func12func:13 .seh_pushframe @code14# CHECK: .seh_pushframe @code15 subq $24, %rsp16 .seh_stackalloc 2417# CHECK: .seh_stackalloc 2418 movq %rsi, 16(%rsp)19 .seh_savereg %rsi, 1620# CHECK: .seh_savereg %rsi, 1621 .seh_savereg 6, 1622# CHECK: .seh_savereg %rsi, 1623 movups %xmm8, (%rsp)24 .seh_savexmm %xmm8, 025# CHECK: .seh_savexmm %xmm8, 026 .seh_savexmm 8, 027# CHECK: .seh_savexmm %xmm8, 028 pushq %rbx29 .seh_pushreg %rbx30# CHECK: .seh_pushreg %rbx31 .seh_pushreg 332# CHECK: .seh_pushreg %rbx33 mov %rsp, %rbx34 .seh_setframe 3, 035# CHECK: .seh_setframe %rbx, 036 .seh_endprologue37# CHECK: .seh_endprologue38 .seh_handler __C_specific_handler, @except39# CHECK: .seh_handler __C_specific_handler, @except40 .seh_handlerdata41# CHECK-NOT: .section{{.*}}.xdata42# CHECK: .seh_handlerdata43 .long 044 .text45 .seh_startchained46 .seh_endprologue47 .seh_endchained48# CHECK: .text49# CHECK: .seh_startchained50# CHECK: .seh_endprologue51# CHECK: .seh_endchained52 .seh_startepilogue53# CHECK: .seh_startepilogue54 lea (%rbx), %rsp55 pop %rbx56 addq $24, %rsp57 .seh_endepilogue58# CHECK: .seh_endepilogue59 ret60 .seh_endproc61# CHECK: .seh_endproc62 63# Re-run more or less the same test, but with intel syntax. Previously LLVM64# required percent prefixing in the .seh_* directives that take registers.65 66 .intel_syntax noprefix67 .text68 .globl func_intel69 .def func_intel; .scl 2; .type 32; .endef70 .seh_proc func_intel71# CHECK: .seh_proc func_intel72func_intel:73 sub RSP, 2474 .seh_stackalloc 2475# CHECK: .seh_stackalloc 2476 mov [16+RSP], RSI77 .seh_savereg rsi, 1678# CHECK: .seh_savereg %rsi, 1679 .seh_savereg 6, 1680# CHECK: .seh_savereg %rsi, 1681 movups [RSP], XMM882 .seh_savexmm XMM8, 083# CHECK: .seh_savexmm %xmm8, 084 .seh_savexmm 8, 085# CHECK: .seh_savexmm %xmm8, 086 push rbx87 .seh_pushreg rbx88# CHECK: .seh_pushreg %rbx89 .seh_pushreg 390# CHECK: .seh_pushreg %rbx91 mov rbx, rsp92 .seh_setframe rbx, 093# CHECK: .seh_setframe %rbx, 094 .seh_endprologue95# CHECK: .seh_endprologue96 .seh_handler __C_specific_handler, @except97# CHECK: .seh_handler __C_specific_handler, @except98 .seh_handlerdata99# CHECK-NOT: .section{{.*}}.xdata100# CHECK: .seh_handlerdata101 .long 0102 .text103 .seh_endproc104