brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.1 KiB · fc94865 Raw
52 lines · plain
1 2; RUN: llc < %s | FileCheck %s -check-prefix=NOIPRA3; RUN: llc -enable-ipra < %s | FileCheck %s4 5 6target triple = "x86_64-unknown-unknown"7define void @bar1() {8	ret void9}10define preserve_allcc void @foo()#0 {11; Due to preserve_allcc foo() will save some registers at start of foo()12; prefix NOIPRA will verify that.13; NOIPRA-LABEL: foo:14; NOIPRA: pushq	%r1015; NOIPRA-NEXT: pushq %r916; NOIPRA-NEXT: pushq %r817; NOIPRA: callq bar118; When IPRA is present above registers will not be saved and that is verified19; by prefix CHECK.20; CHECK: foo:21; CHECK-NOT: pushq %r1022; CHECK-NOT: pushq %r923; CHECK-NOT: pushq %r824; CHECK: callq bar125	call void @bar1()26	call void @bar2()27	ret void28}29define void @bar2() {30	ret void31}32 33define preserve_nonecc void @foo2()#0 {34; Due to preserve_nonecc foo2() will save above registers no matter IPRA is35; present or not.36; NOIPRA-LABEL: foo2:37; NOIPRA-NOT: pushq %r1038; NOIPRA-NOT: pushq %r939; NOIPRA-NOT: pushq %r840; NOIPRA: callq bar141; CHECK: foo2:42; CHECK-NOT: pushq %r1043; CHECK-NOT: pushq %r944; CHECK-NOT: pushq %r845; CHECK: callq bar146	call void @bar1()47	call void @bar2()48	ret void49}50 51attributes #0 = {nounwind}52