xref: /llvm-project/llvm/test/CodeGen/X86/sret-implicit.ll (revision a21abc782a8e1cb718a10c471a3b634f3102fc1c)
1; RUN: llc -mtriple=x86_64-apple-darwin8 < %s | FileCheck %s --check-prefix=X64
2; RUN: llc -mtriple=x86_64-pc-linux < %s | FileCheck %s --check-prefix=X64
3; RUN: llc -mtriple=i686-pc-linux < %s | FileCheck %s --check-prefix=X86
4; RUN: llc -mtriple=x86_64-apple-darwin8 -terminal-rule < %s | FileCheck %s --check-prefix=X64
5; RUN: llc -mtriple=x86_64-pc-linux -terminal-rule < %s | FileCheck %s --check-prefix=X64
6
7define void @sret_void(ptr sret(i32) %p) {
8  store i32 0, ptr %p
9  ret void
10}
11
12; X64-LABEL: sret_void
13; X64-DAG: movq %rdi, %rax
14; X64-DAG: movl $0, (%rdi)
15; X64: retq
16
17; X86-LABEL: sret_void
18; X86: movl 4(%esp), %eax
19; X86: movl $0, (%eax)
20; X86: retl
21
22define i256 @sret_demoted() {
23  ret i256 0
24}
25
26; X64-LABEL: sret_demoted
27; X64-DAG: movq %rdi, %rax
28; X64-DAG: xorps %xmm0, %xmm0
29; X64-DAG: movaps %xmm0, (%rdi)
30; X64: retq
31
32; X86-LABEL: sret_demoted
33; X86: movl 4(%esp), %eax
34; X86: movl $0, (%eax)
35; X86: retl
36