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