xref: /llvm-project/llvm/test/CodeGen/AArch64/arm64-zero-cycle-regmov.ll (revision fc1852ff1cbdcdb69d82b97a9143a8069668efe0)
1; RUN: llc < %s -mtriple=arm64-apple-ios -mattr=-zcm   | FileCheck %s -check-prefixes=CHECK,NOT
2; RUN: llc < %s -mtriple=arm64-apple-ios -mattr=+zcm   | FileCheck %s -check-prefixes=CHECK,YES
3; RUN: llc < %s -mtriple=arm64-apple-ios -mcpu=cyclone | FileCheck %s -check-prefixes=CHECK,YES
4
5; rdar://12254953
6define i32 @t(i32 %a, i32 %b, i32 %c, i32 %d) nounwind ssp {
7entry:
8; CHECK-LABEL: t:
9; NOT: mov [[REG2:w[0-9]+]], w3
10; NOT: mov [[REG1:w[0-9]+]], w2
11; YES: mov [[REG2:x[0-9]+]], x3
12; YES: mov [[REG1:x[0-9]+]], x2
13; CHECK: bl _foo
14; NOT: mov w0, [[REG1]]
15; NOT: mov w1, [[REG2]]
16; YES: mov x0, [[REG1]]
17; YES: mov x1, [[REG2]]
18  %call = call i32 @foo(i32 %c, i32 %d) nounwind
19  %call1 = call i32 @foo(i32 %c, i32 %d) nounwind
20  unreachable
21}
22
23declare i32 @foo(i32, i32)
24