xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/sret-implicit.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
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(i32* sret %p) {
8  store i32 0, i32* %p
9  ret void
10}
11
12; X64-LABEL: sret_void
13; X64-DAG: movl $0, (%rdi)
14; X64-DAG: movq %rdi, %rax
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 $0, (%rdi)
28; X64-DAG: movq %rdi, %rax
29; X64: retq
30
31; X86-LABEL: sret_demoted
32; X86: movl 4(%esp), %eax
33; X86: movl $0, (%eax)
34; X86: retl
35