xref: /aosp_15_r20/external/llvm/test/CodeGen/Thumb/copy_thumb.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=armv4-none--eabi < %s | FileCheck %s --check-prefix=CHECK-LOLOMOV
2*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=armv4t-none--eabi < %s | FileCheck %s --check-prefix=CHECK-LOLOMOV
3*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=armv5-none--eabi < %s | FileCheck %s --check-prefix=CHECK-LOLOMOV
4*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=armv6-none--eabi < %s | FileCheck %s --check-prefix=CHECK-LOLOMOV
5*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=armv7-none--eabi < %s | FileCheck %s --check-prefix=CHECK-LOLOMOV
6*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=thumbv6-none--eabi < %s | FileCheck %s --check-prefix=CHECK-LOLOMOV
7*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=thumbv7-none--eabi < %s | FileCheck %s --check-prefix=CHECK-LOLOMOV
8*9880d681SAndroid Build Coastguard Worker; CHECK-LOLOMOV-LABEL:  foo
9*9880d681SAndroid Build Coastguard Worker; CHECK-LOLOMOV:        mov [[TMP:r[0-7]]], [[SRC1:r[01]]]
10*9880d681SAndroid Build Coastguard Worker; CHECK-LOLOMOV-NEXT:   mov [[SRC1]], [[SRC2:r[01]]]
11*9880d681SAndroid Build Coastguard Worker; CHECK-LOLOMOV-NEXT:   mov [[SRC2]], [[TMP]]
12*9880d681SAndroid Build Coastguard Worker; CHECK-LOLOMOV-LABEL:  bar
13*9880d681SAndroid Build Coastguard Worker; CHECK-LOLOMOV-LABEL:  fnend
14*9880d681SAndroid Build Coastguard Worker;
15*9880d681SAndroid Build Coastguard Worker; 'MOV lo, lo' in Thumb mode produces undefined results on pre-v6 hardware
16*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=thumbv4t-none--eabi < %s | FileCheck %s --check-prefix=CHECK-NOLOLOMOV
17*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=thumbv5-none--eabi < %s | FileCheck %s --check-prefix=CHECK-NOLOLOMOV
18*9880d681SAndroid Build Coastguard Worker; CHECK-NOLOLOMOV-LABEL: foo
19*9880d681SAndroid Build Coastguard Worker; CHECK-NOLOLOMOV-NOT:   mov [[TMP:r[0-7]]], [[SRC1:r[01]]]
20*9880d681SAndroid Build Coastguard Worker; CHECK-NOLOLOMOV:       push  {[[SRC1:r[01]]]}
21*9880d681SAndroid Build Coastguard Worker; CHECK-NOLOLOMOV-NEXT:  pop {[[TMP:r[0-7]]]}
22*9880d681SAndroid Build Coastguard Worker; CHECK-NOLOLOMOV-NOT:   mov [[TMP:r[0-7]]], [[SRC1:r[01]]]
23*9880d681SAndroid Build Coastguard Worker; CHECK-NOLOLOMOV:       push  {[[SRC2:r[01]]]}
24*9880d681SAndroid Build Coastguard Worker; CHECK-NOLOLOMOV-NEXT:  pop {[[SRC1]]}
25*9880d681SAndroid Build Coastguard Worker; CHECK-NOLOLOMOV-NOT:   mov [[TMP:r[0-7]]], [[SRC1:r[01]]]
26*9880d681SAndroid Build Coastguard Worker; CHECK-NOLOLOMOV:       push  {[[TMP]]}
27*9880d681SAndroid Build Coastguard Worker; CHECK-NOLOLOMOV-NEXT:  pop {[[SRC2]]}
28*9880d681SAndroid Build Coastguard Worker; CHECK-NOLOLOMOV-LABEL: bar
29*9880d681SAndroid Build Coastguard Worker; CHECK-NOLOLOMOV-LABEL: fnend
30*9880d681SAndroid Build Coastguard Worker
31*9880d681SAndroid Build Coastguard Workerdeclare void @bar(i32, i32)
32*9880d681SAndroid Build Coastguard Worker
33*9880d681SAndroid Build Coastguard Workerdefine void @foo(i32 %a, i32 %b) {
34*9880d681SAndroid Build Coastguard Workerentry:
35*9880d681SAndroid Build Coastguard Worker  call void @bar(i32 %b, i32 %a);
36*9880d681SAndroid Build Coastguard Worker  ret void
37*9880d681SAndroid Build Coastguard Worker}
38*9880d681SAndroid Build Coastguard Worker
39