xref: /llvm-project/llvm/test/CodeGen/SPARC/reserved-arg-regs.ll (revision c2f9885a8aa3a820eefdacccf3fcc6b9d87e3284)
1*c2f9885aSKoakuma;; Test reserving argument registers.
2*c2f9885aSKoakuma; RUN: not llc < %s -mtriple=sparc-linux-gnu -mattr=+reserve-o0 2>&1 | FileCheck %s --check-prefixes=CHECK-RESERVED-O0
3*c2f9885aSKoakuma; RUN: not llc < %s -mtriple=sparc64-linux-gnu -mattr=+reserve-o0 2>&1 | FileCheck %s --check-prefixes=CHECK-RESERVED-O0
4*c2f9885aSKoakuma; RUN: not llc < %s -mtriple=sparc-linux-gnu -mattr=+reserve-i0 2>&1 | FileCheck %s --check-prefixes=CHECK-RESERVED-I0
5*c2f9885aSKoakuma; RUN: not llc < %s -mtriple=sparc64-linux-gnu -mattr=+reserve-i0 2>&1 | FileCheck %s --check-prefixes=CHECK-RESERVED-I0
6*c2f9885aSKoakuma
7*c2f9885aSKoakuma; CHECK-RESERVED-O0: error:
8*c2f9885aSKoakuma; CHECK-RESERVED-O0-SAME: SPARC doesn't support function calls if any of the argument registers is reserved.
9*c2f9885aSKoakuma; CHECK-RESERVED-I0: error:
10*c2f9885aSKoakuma; CHECK-RESERVED-I0-SAME: SPARC doesn't support function calls if any of the argument registers is reserved.
11*c2f9885aSKoakumadefine void @call_function() {
12*c2f9885aSKoakuma  call void @foo()
13*c2f9885aSKoakuma  ret void
14*c2f9885aSKoakuma}
15*c2f9885aSKoakumadeclare void @foo()
16*c2f9885aSKoakuma
17*c2f9885aSKoakuma; CHECK-RESERVED-O0: error:
18*c2f9885aSKoakuma; CHECK-RESERVED-O0-SAME: SPARC doesn't support function calls if any of the argument registers is reserved.
19*c2f9885aSKoakuma; CHECK-RESERVED-I0: error:
20*c2f9885aSKoakuma; CHECK-RESERVED-I0-SAME: SPARC doesn't support function calls if any of the argument registers is reserved.
21*c2f9885aSKoakumadefine void @call_function_with_arg(i8 %in) {
22*c2f9885aSKoakuma  call void @bar(i8 %in)
23*c2f9885aSKoakuma  ret void
24*c2f9885aSKoakuma}
25*c2f9885aSKoakumadeclare void @bar(i8)
26