1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios | FileCheck %s --check-prefix=ARM 2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=armv7-linux-gnueabi | FileCheck %s --check-prefix=ARM 3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios | FileCheck %s --check-prefix=THUMB 4*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios -mattr=+long-calls | FileCheck %s --check-prefix=ARM-LONG --check-prefix=ARM-LONG-MACHO 5*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=armv7-linux-gnueabi -mattr=+long-calls | FileCheck %s --check-prefix=ARM-LONG --check-prefix=ARM-LONG-ELF 6*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios -mattr=+long-calls | FileCheck %s --check-prefix=THUMB-LONG 7*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios -mattr=-vfp2 | FileCheck %s --check-prefix=ARM-NOVFP 8*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=armv7-linux-gnueabi -mattr=-vfp2 | FileCheck %s --check-prefix=ARM-NOVFP 9*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios -mattr=-vfp2 | FileCheck %s --check-prefix=THUMB-NOVFP 10*9880d681SAndroid Build Coastguard Worker 11*9880d681SAndroid Build Coastguard Worker; Note that some of these tests assume that relocations are either 12*9880d681SAndroid Build Coastguard Worker; movw/movt or constant pool loads. Different platforms will select 13*9880d681SAndroid Build Coastguard Worker; different approaches. 14*9880d681SAndroid Build Coastguard Worker 15*9880d681SAndroid Build Coastguard Workerdefine i32 @t0(i1 zeroext %a) nounwind { 16*9880d681SAndroid Build Coastguard Worker %1 = zext i1 %a to i32 17*9880d681SAndroid Build Coastguard Worker ret i32 %1 18*9880d681SAndroid Build Coastguard Worker} 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Workerdefine i32 @t1(i8 signext %a) nounwind { 21*9880d681SAndroid Build Coastguard Worker %1 = sext i8 %a to i32 22*9880d681SAndroid Build Coastguard Worker ret i32 %1 23*9880d681SAndroid Build Coastguard Worker} 24*9880d681SAndroid Build Coastguard Worker 25*9880d681SAndroid Build Coastguard Workerdefine i32 @t2(i8 zeroext %a) nounwind { 26*9880d681SAndroid Build Coastguard Worker %1 = zext i8 %a to i32 27*9880d681SAndroid Build Coastguard Worker ret i32 %1 28*9880d681SAndroid Build Coastguard Worker} 29*9880d681SAndroid Build Coastguard Worker 30*9880d681SAndroid Build Coastguard Workerdefine i32 @t3(i16 signext %a) nounwind { 31*9880d681SAndroid Build Coastguard Worker %1 = sext i16 %a to i32 32*9880d681SAndroid Build Coastguard Worker ret i32 %1 33*9880d681SAndroid Build Coastguard Worker} 34*9880d681SAndroid Build Coastguard Worker 35*9880d681SAndroid Build Coastguard Workerdefine i32 @t4(i16 zeroext %a) nounwind { 36*9880d681SAndroid Build Coastguard Worker %1 = zext i16 %a to i32 37*9880d681SAndroid Build Coastguard Worker ret i32 %1 38*9880d681SAndroid Build Coastguard Worker} 39*9880d681SAndroid Build Coastguard Worker 40*9880d681SAndroid Build Coastguard Workerdefine void @foo(i8 %a, i16 %b) nounwind { 41*9880d681SAndroid Build Coastguard Worker; ARM: foo 42*9880d681SAndroid Build Coastguard Worker; THUMB: foo 43*9880d681SAndroid Build Coastguard Worker;; Materialize i1 1 44*9880d681SAndroid Build Coastguard Worker; ARM: movw r2, #1 45*9880d681SAndroid Build Coastguard Worker;; zero-ext 46*9880d681SAndroid Build Coastguard Worker; ARM: and r2, r2, #1 47*9880d681SAndroid Build Coastguard Worker; THUMB: and r2, r2, #1 48*9880d681SAndroid Build Coastguard Worker %1 = call i32 @t0(i1 zeroext 1) 49*9880d681SAndroid Build Coastguard Worker; ARM: sxtb r2, r1 50*9880d681SAndroid Build Coastguard Worker; ARM: mov r0, r2 51*9880d681SAndroid Build Coastguard Worker; THUMB: sxtb r2, r1 52*9880d681SAndroid Build Coastguard Worker; THUMB: mov r0, r2 53*9880d681SAndroid Build Coastguard Worker %2 = call i32 @t1(i8 signext %a) 54*9880d681SAndroid Build Coastguard Worker; ARM: and r2, r1, #255 55*9880d681SAndroid Build Coastguard Worker; ARM: mov r0, r2 56*9880d681SAndroid Build Coastguard Worker; THUMB: and r2, r1, #255 57*9880d681SAndroid Build Coastguard Worker; THUMB: mov r0, r2 58*9880d681SAndroid Build Coastguard Worker %3 = call i32 @t2(i8 zeroext %a) 59*9880d681SAndroid Build Coastguard Worker; ARM: sxth r2, r1 60*9880d681SAndroid Build Coastguard Worker; ARM: mov r0, r2 61*9880d681SAndroid Build Coastguard Worker; THUMB: sxth r2, r1 62*9880d681SAndroid Build Coastguard Worker; THUMB: mov r0, r2 63*9880d681SAndroid Build Coastguard Worker %4 = call i32 @t3(i16 signext %b) 64*9880d681SAndroid Build Coastguard Worker; ARM: uxth r2, r1 65*9880d681SAndroid Build Coastguard Worker; ARM: mov r0, r2 66*9880d681SAndroid Build Coastguard Worker; THUMB: uxth r2, r1 67*9880d681SAndroid Build Coastguard Worker; THUMB: mov r0, r2 68*9880d681SAndroid Build Coastguard Worker %5 = call i32 @t4(i16 zeroext %b) 69*9880d681SAndroid Build Coastguard Worker 70*9880d681SAndroid Build Coastguard Worker;; A few test to check materialization 71*9880d681SAndroid Build Coastguard Worker;; Note: i1 1 was materialized with t1 call 72*9880d681SAndroid Build Coastguard Worker; ARM: movw r1, #255 73*9880d681SAndroid Build Coastguard Worker%6 = call i32 @t2(i8 zeroext 255) 74*9880d681SAndroid Build Coastguard Worker; ARM: movw r1, #65535 75*9880d681SAndroid Build Coastguard Worker; THUMB: movw r1, #65535 76*9880d681SAndroid Build Coastguard Worker%7 = call i32 @t4(i16 zeroext 65535) 77*9880d681SAndroid Build Coastguard Worker ret void 78*9880d681SAndroid Build Coastguard Worker} 79*9880d681SAndroid Build Coastguard Worker 80*9880d681SAndroid Build Coastguard Workerdefine void @foo2() nounwind { 81*9880d681SAndroid Build Coastguard Worker %1 = call signext i16 @t5() 82*9880d681SAndroid Build Coastguard Worker %2 = call zeroext i16 @t6() 83*9880d681SAndroid Build Coastguard Worker %3 = call signext i8 @t7() 84*9880d681SAndroid Build Coastguard Worker %4 = call zeroext i8 @t8() 85*9880d681SAndroid Build Coastguard Worker %5 = call zeroext i1 @t9() 86*9880d681SAndroid Build Coastguard Worker ret void 87*9880d681SAndroid Build Coastguard Worker} 88*9880d681SAndroid Build Coastguard Worker 89*9880d681SAndroid Build Coastguard Workerdeclare signext i16 @t5(); 90*9880d681SAndroid Build Coastguard Workerdeclare zeroext i16 @t6(); 91*9880d681SAndroid Build Coastguard Workerdeclare signext i8 @t7(); 92*9880d681SAndroid Build Coastguard Workerdeclare zeroext i8 @t8(); 93*9880d681SAndroid Build Coastguard Workerdeclare zeroext i1 @t9(); 94*9880d681SAndroid Build Coastguard Worker 95*9880d681SAndroid Build Coastguard Workerdefine i32 @t10() { 96*9880d681SAndroid Build Coastguard Workerentry: 97*9880d681SAndroid Build Coastguard Worker; ARM: @t10 98*9880d681SAndroid Build Coastguard Worker; ARM: movw [[R0:l?r[0-9]*]], #0 99*9880d681SAndroid Build Coastguard Worker; ARM: movw [[R1:l?r[0-9]*]], #248 100*9880d681SAndroid Build Coastguard Worker; ARM: movw [[R2:l?r[0-9]*]], #187 101*9880d681SAndroid Build Coastguard Worker; ARM: movw [[R3:l?r[0-9]*]], #28 102*9880d681SAndroid Build Coastguard Worker; ARM: movw [[R4:l?r[0-9]*]], #40 103*9880d681SAndroid Build Coastguard Worker; ARM: movw [[R5:l?r[0-9]*]], #186 104*9880d681SAndroid Build Coastguard Worker; ARM: and [[R0]], [[R0]], #255 105*9880d681SAndroid Build Coastguard Worker; ARM: and [[R1]], [[R1]], #255 106*9880d681SAndroid Build Coastguard Worker; ARM: and [[R2]], [[R2]], #255 107*9880d681SAndroid Build Coastguard Worker; ARM: and [[R3]], [[R3]], #255 108*9880d681SAndroid Build Coastguard Worker; ARM: and [[R4]], [[R4]], #255 109*9880d681SAndroid Build Coastguard Worker; ARM: str [[R4]], [sp] 110*9880d681SAndroid Build Coastguard Worker; ARM: and [[R4]], [[R5]], #255 111*9880d681SAndroid Build Coastguard Worker; ARM: str [[R4]], [sp, #4] 112*9880d681SAndroid Build Coastguard Worker; ARM: bl {{_?}}bar 113*9880d681SAndroid Build Coastguard Worker; ARM-LONG: @t10 114*9880d681SAndroid Build Coastguard Worker 115*9880d681SAndroid Build Coastguard Worker; ARM-LONG-MACHO: {{(movw)|(ldr)}} [[R:l?r[0-9]*]], {{(:lower16:L_bar\$non_lazy_ptr)|(.LCPI)}} 116*9880d681SAndroid Build Coastguard Worker; ARM-LONG-MACHO: {{(movt [[R]], :upper16:L_bar\$non_lazy_ptr)?}} 117*9880d681SAndroid Build Coastguard Worker; ARM-LONG-MACHO: ldr [[R]], {{\[}}[[R]]{{\]}} 118*9880d681SAndroid Build Coastguard Worker 119*9880d681SAndroid Build Coastguard Worker; ARM-LONG-ELF: movw [[R:l?r[0-9]*]], :lower16:bar 120*9880d681SAndroid Build Coastguard Worker; ARM-LONG-ELF: {{(movt [[R]], :upper16:L_bar\$non_lazy_ptr)?}} 121*9880d681SAndroid Build Coastguard Worker 122*9880d681SAndroid Build Coastguard Worker; ARM-LONG: blx [[R]] 123*9880d681SAndroid Build Coastguard Worker; THUMB: @t10 124*9880d681SAndroid Build Coastguard Worker; THUMB: movs [[R0:l?r[0-9]*]], #0 125*9880d681SAndroid Build Coastguard Worker; THUMB: movs [[R1:l?r[0-9]*]], #248 126*9880d681SAndroid Build Coastguard Worker; THUMB: movs [[R2:l?r[0-9]*]], #187 127*9880d681SAndroid Build Coastguard Worker; THUMB: movs [[R3:l?r[0-9]*]], #28 128*9880d681SAndroid Build Coastguard Worker; THUMB: movw [[R4:l?r[0-9]*]], #40 129*9880d681SAndroid Build Coastguard Worker; THUMB: movw [[R5:l?r[0-9]*]], #186 130*9880d681SAndroid Build Coastguard Worker; THUMB: and [[R0]], [[R0]], #255 131*9880d681SAndroid Build Coastguard Worker; THUMB: and [[R1]], [[R1]], #255 132*9880d681SAndroid Build Coastguard Worker; THUMB: and [[R2]], [[R2]], #255 133*9880d681SAndroid Build Coastguard Worker; THUMB: and [[R3]], [[R3]], #255 134*9880d681SAndroid Build Coastguard Worker; THUMB: and [[R4]], [[R4]], #255 135*9880d681SAndroid Build Coastguard Worker; THUMB: str.w [[R4]], [sp] 136*9880d681SAndroid Build Coastguard Worker; THUMB: and [[R4]], [[R5]], #255 137*9880d681SAndroid Build Coastguard Worker; THUMB: str.w [[R4]], [sp, #4] 138*9880d681SAndroid Build Coastguard Worker; THUMB: bl {{_?}}bar 139*9880d681SAndroid Build Coastguard Worker; THUMB-LONG: @t10 140*9880d681SAndroid Build Coastguard Worker; THUMB-LONG: {{(movw)|(ldr.n)}} [[R:l?r[0-9]*]], {{(:lower16:L_bar\$non_lazy_ptr)|(.LCPI)}} 141*9880d681SAndroid Build Coastguard Worker; THUMB-LONG: {{(movt [[R]], :upper16:L_bar\$non_lazy_ptr)?}} 142*9880d681SAndroid Build Coastguard Worker; THUMB-LONG: ldr{{(.w)?}} [[R]], {{\[}}[[R]]{{\]}} 143*9880d681SAndroid Build Coastguard Worker; THUMB-LONG: blx [[R]] 144*9880d681SAndroid Build Coastguard Worker %call = call i32 @bar(i8 zeroext 0, i8 zeroext -8, i8 zeroext -69, i8 zeroext 28, i8 zeroext 40, i8 zeroext -70) 145*9880d681SAndroid Build Coastguard Worker ret i32 0 146*9880d681SAndroid Build Coastguard Worker} 147*9880d681SAndroid Build Coastguard Worker 148*9880d681SAndroid Build Coastguard Workerdeclare i32 @bar(i8 zeroext, i8 zeroext, i8 zeroext, i8 zeroext, i8 zeroext, i8 zeroext) 149*9880d681SAndroid Build Coastguard Worker 150*9880d681SAndroid Build Coastguard Workerdefine i32 @bar0(i32 %i) nounwind { 151*9880d681SAndroid Build Coastguard Worker ret i32 0 152*9880d681SAndroid Build Coastguard Worker} 153*9880d681SAndroid Build Coastguard Worker 154*9880d681SAndroid Build Coastguard Workerdefine void @foo3() uwtable { 155*9880d681SAndroid Build Coastguard Worker; ARM: movw r0, #0 156*9880d681SAndroid Build Coastguard Worker; ARM: {{(movw r1, :lower16:_?bar0)|(ldr r1, .LCPI)}} 157*9880d681SAndroid Build Coastguard Worker; ARM: {{(movt r1, :upper16:_?bar0)|(ldr r1, \[r1\])}} 158*9880d681SAndroid Build Coastguard Worker; ARM: blx r1 159*9880d681SAndroid Build Coastguard Worker; THUMB: movs r0, #0 160*9880d681SAndroid Build Coastguard Worker; THUMB: {{(movw r1, :lower16:_?bar0)|(ldr.n r1, .LCPI)}} 161*9880d681SAndroid Build Coastguard Worker; THUMB: {{(movt r1, :upper16:_?bar0)|(ldr r1, \[r1\])}} 162*9880d681SAndroid Build Coastguard Worker; THUMB: blx r1 163*9880d681SAndroid Build Coastguard Worker %fptr = alloca i32 (i32)*, align 8 164*9880d681SAndroid Build Coastguard Worker store i32 (i32)* @bar0, i32 (i32)** %fptr, align 8 165*9880d681SAndroid Build Coastguard Worker %1 = load i32 (i32)*, i32 (i32)** %fptr, align 8 166*9880d681SAndroid Build Coastguard Worker %call = call i32 %1(i32 0) 167*9880d681SAndroid Build Coastguard Worker ret void 168*9880d681SAndroid Build Coastguard Worker} 169*9880d681SAndroid Build Coastguard Worker 170*9880d681SAndroid Build Coastguard Workerdefine i32 @LibCall(i32 %a, i32 %b) { 171*9880d681SAndroid Build Coastguard Workerentry: 172*9880d681SAndroid Build Coastguard Worker; ARM: LibCall 173*9880d681SAndroid Build Coastguard Worker; ARM: bl {{___udivsi3|__aeabi_uidiv}} 174*9880d681SAndroid Build Coastguard Worker; ARM-LONG: LibCall 175*9880d681SAndroid Build Coastguard Worker 176*9880d681SAndroid Build Coastguard Worker; ARM-LONG-MACHO: {{(movw r2, :lower16:L___udivsi3\$non_lazy_ptr)|(ldr r2, .LCPI)}} 177*9880d681SAndroid Build Coastguard Worker; ARM-LONG-MACHO: {{(movt r2, :upper16:L___udivsi3\$non_lazy_ptr)?}} 178*9880d681SAndroid Build Coastguard Worker; ARM-LONG-MACHO: ldr r2, [r2] 179*9880d681SAndroid Build Coastguard Worker 180*9880d681SAndroid Build Coastguard Worker; ARM-LONG-ELF: movw r2, :lower16:__aeabi_uidiv 181*9880d681SAndroid Build Coastguard Worker; ARM-LONG-ELF: movt r2, :upper16:__aeabi_uidiv 182*9880d681SAndroid Build Coastguard Worker 183*9880d681SAndroid Build Coastguard Worker; ARM-LONG: blx r2 184*9880d681SAndroid Build Coastguard Worker; THUMB: LibCall 185*9880d681SAndroid Build Coastguard Worker; THUMB: bl {{___udivsi3|__aeabi_uidiv}} 186*9880d681SAndroid Build Coastguard Worker; THUMB-LONG: LibCall 187*9880d681SAndroid Build Coastguard Worker; THUMB-LONG: {{(movw r2, :lower16:L___udivsi3\$non_lazy_ptr)|(ldr.n r2, .LCPI)}} 188*9880d681SAndroid Build Coastguard Worker; THUMB-LONG: {{(movt r2, :upper16:L___udivsi3\$non_lazy_ptr)?}} 189*9880d681SAndroid Build Coastguard Worker; THUMB-LONG: ldr r2, [r2] 190*9880d681SAndroid Build Coastguard Worker; THUMB-LONG: blx r2 191*9880d681SAndroid Build Coastguard Worker %tmp1 = udiv i32 %a, %b ; <i32> [#uses=1] 192*9880d681SAndroid Build Coastguard Worker ret i32 %tmp1 193*9880d681SAndroid Build Coastguard Worker} 194*9880d681SAndroid Build Coastguard Worker 195*9880d681SAndroid Build Coastguard Worker; Test fastcc 196*9880d681SAndroid Build Coastguard Worker 197*9880d681SAndroid Build Coastguard Workerdefine fastcc void @fast_callee(float %i) ssp { 198*9880d681SAndroid Build Coastguard Workerentry: 199*9880d681SAndroid Build Coastguard Worker; ARM: fast_callee 200*9880d681SAndroid Build Coastguard Worker; ARM: vmov r0, s0 201*9880d681SAndroid Build Coastguard Worker; THUMB: fast_callee 202*9880d681SAndroid Build Coastguard Worker; THUMB: vmov r0, s0 203*9880d681SAndroid Build Coastguard Worker; ARM-NOVFP: fast_callee 204*9880d681SAndroid Build Coastguard Worker; ARM-NOVFP-NOT: s0 205*9880d681SAndroid Build Coastguard Worker; THUMB-NOVFP: fast_callee 206*9880d681SAndroid Build Coastguard Worker; THUMB-NOVFP-NOT: s0 207*9880d681SAndroid Build Coastguard Worker call void @print(float %i) 208*9880d681SAndroid Build Coastguard Worker ret void 209*9880d681SAndroid Build Coastguard Worker} 210*9880d681SAndroid Build Coastguard Worker 211*9880d681SAndroid Build Coastguard Workerdefine void @fast_caller() ssp { 212*9880d681SAndroid Build Coastguard Workerentry: 213*9880d681SAndroid Build Coastguard Worker; ARM: fast_caller 214*9880d681SAndroid Build Coastguard Worker; ARM: vldr s0, 215*9880d681SAndroid Build Coastguard Worker; THUMB: fast_caller 216*9880d681SAndroid Build Coastguard Worker; THUMB: vldr s0, 217*9880d681SAndroid Build Coastguard Worker; ARM-NOVFP: fast_caller 218*9880d681SAndroid Build Coastguard Worker; ARM-NOVFP: movw r0, #13107 219*9880d681SAndroid Build Coastguard Worker; ARM-NOVFP: movt r0, #16611 220*9880d681SAndroid Build Coastguard Worker; THUMB-NOVFP: fast_caller 221*9880d681SAndroid Build Coastguard Worker; THUMB-NOVFP: movw r0, #13107 222*9880d681SAndroid Build Coastguard Worker; THUMB-NOVFP: movt r0, #16611 223*9880d681SAndroid Build Coastguard Worker call fastcc void @fast_callee(float 0x401C666660000000) 224*9880d681SAndroid Build Coastguard Worker ret void 225*9880d681SAndroid Build Coastguard Worker} 226*9880d681SAndroid Build Coastguard Worker 227*9880d681SAndroid Build Coastguard Workerdefine void @no_fast_callee(float %i) ssp { 228*9880d681SAndroid Build Coastguard Workerentry: 229*9880d681SAndroid Build Coastguard Worker; ARM: no_fast_callee 230*9880d681SAndroid Build Coastguard Worker; ARM: vmov s0, r0 231*9880d681SAndroid Build Coastguard Worker; THUMB: no_fast_callee 232*9880d681SAndroid Build Coastguard Worker; THUMB: vmov s0, r0 233*9880d681SAndroid Build Coastguard Worker; ARM-NOVFP: no_fast_callee 234*9880d681SAndroid Build Coastguard Worker; ARM-NOVFP-NOT: s0 235*9880d681SAndroid Build Coastguard Worker; THUMB-NOVFP: no_fast_callee 236*9880d681SAndroid Build Coastguard Worker; THUMB-NOVFP-NOT: s0 237*9880d681SAndroid Build Coastguard Worker call void @print(float %i) 238*9880d681SAndroid Build Coastguard Worker ret void 239*9880d681SAndroid Build Coastguard Worker} 240*9880d681SAndroid Build Coastguard Worker 241*9880d681SAndroid Build Coastguard Workerdefine void @no_fast_caller() ssp { 242*9880d681SAndroid Build Coastguard Workerentry: 243*9880d681SAndroid Build Coastguard Worker; ARM: no_fast_caller 244*9880d681SAndroid Build Coastguard Worker; ARM: vmov r0, s0 245*9880d681SAndroid Build Coastguard Worker; THUMB: no_fast_caller 246*9880d681SAndroid Build Coastguard Worker; THUMB: vmov r0, s0 247*9880d681SAndroid Build Coastguard Worker; ARM-NOVFP: no_fast_caller 248*9880d681SAndroid Build Coastguard Worker; ARM-NOVFP: movw r0, #13107 249*9880d681SAndroid Build Coastguard Worker; ARM-NOVFP: movt r0, #16611 250*9880d681SAndroid Build Coastguard Worker; THUMB-NOVFP: no_fast_caller 251*9880d681SAndroid Build Coastguard Worker; THUMB-NOVFP: movw r0, #13107 252*9880d681SAndroid Build Coastguard Worker; THUMB-NOVFP: movt r0, #16611 253*9880d681SAndroid Build Coastguard Worker call void @no_fast_callee(float 0x401C666660000000) 254*9880d681SAndroid Build Coastguard Worker ret void 255*9880d681SAndroid Build Coastguard Worker} 256*9880d681SAndroid Build Coastguard Worker 257*9880d681SAndroid Build Coastguard Workerdeclare void @bar2(i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, i32 %a6) 258*9880d681SAndroid Build Coastguard Worker 259*9880d681SAndroid Build Coastguard Workerdefine void @call_undef_args() { 260*9880d681SAndroid Build Coastguard Worker; ARM-LABEL: call_undef_args 261*9880d681SAndroid Build Coastguard Worker; ARM: movw r0, #1 262*9880d681SAndroid Build Coastguard Worker; ARM-NEXT: movw r1, #2 263*9880d681SAndroid Build Coastguard Worker; ARM-NEXT: movw r2, #3 264*9880d681SAndroid Build Coastguard Worker; ARM-NEXT: movw r3, #4 265*9880d681SAndroid Build Coastguard Worker; ARM-NOT: str {{r[0-9]+}}, [sp] 266*9880d681SAndroid Build Coastguard Worker; ARM: movw [[REG:l?r[0-9]*]], #6 267*9880d681SAndroid Build Coastguard Worker; ARM-NEXT: str [[REG]], [sp, #4] 268*9880d681SAndroid Build Coastguard Worker call void @bar2(i32 1, i32 2, i32 3, i32 4, i32 undef, i32 6) 269*9880d681SAndroid Build Coastguard Worker ret void 270*9880d681SAndroid Build Coastguard Worker} 271*9880d681SAndroid Build Coastguard Worker 272*9880d681SAndroid Build Coastguard Workerdeclare void @print(float) 273