1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=armv8 -mcpu=cyclone < %s | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-NOTSWIFT 2*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=armv8 -mcpu=swift < %s | FileCheck %s 3*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=armv8 -mcpu=cortex-a57 < %s | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-NOTSWIFT 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Workerdeclare arm_aapcs_vfpcc void @take_vec64(<2 x i32>) 6*9880d681SAndroid Build Coastguard Worker 7*9880d681SAndroid Build Coastguard Workerdefine void @test_vec64() { 8*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vec64: 9*9880d681SAndroid Build Coastguard Worker 10*9880d681SAndroid Build Coastguard Worker call arm_aapcs_vfpcc void @take_vec64(<2 x i32> <i32 0, i32 0>) 11*9880d681SAndroid Build Coastguard Worker call arm_aapcs_vfpcc void @take_vec64(<2 x i32> <i32 0, i32 0>) 12*9880d681SAndroid Build Coastguard Worker; CHECK-NOTSWIFT-NOT: vmov.f64 d0, 13*9880d681SAndroid Build Coastguard Worker; CHECK: vmov.i32 d0, #0 14*9880d681SAndroid Build Coastguard Worker; CHECK: bl 15*9880d681SAndroid Build Coastguard Worker; CHECK: vmov.i32 d0, #0 16*9880d681SAndroid Build Coastguard Worker; CHECK: bl 17*9880d681SAndroid Build Coastguard Worker 18*9880d681SAndroid Build Coastguard Worker ret void 19*9880d681SAndroid Build Coastguard Worker} 20*9880d681SAndroid Build Coastguard Worker 21*9880d681SAndroid Build Coastguard Workerdeclare arm_aapcs_vfpcc void @take_vec128(<8 x i16>) 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Workerdefine void @test_vec128() { 24*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_vec128: 25*9880d681SAndroid Build Coastguard Worker 26*9880d681SAndroid Build Coastguard Worker call arm_aapcs_vfpcc void @take_vec128(<8 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>) 27*9880d681SAndroid Build Coastguard Worker call arm_aapcs_vfpcc void @take_vec128(<8 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>) 28*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: vmov.f64 [[ZEROREG:d[0-9]+]], 29*9880d681SAndroid Build Coastguard Worker; CHECK: vmov.i32 q0, #0 30*9880d681SAndroid Build Coastguard Worker; CHECK: bl 31*9880d681SAndroid Build Coastguard Worker; CHECK: vmov.i32 q0, #0 32*9880d681SAndroid Build Coastguard Worker; CHECK: bl 33*9880d681SAndroid Build Coastguard Worker 34*9880d681SAndroid Build Coastguard Worker ret void 35*9880d681SAndroid Build Coastguard Worker} 36*9880d681SAndroid Build Coastguard Worker 37*9880d681SAndroid Build Coastguard Workerdeclare void @take_i32(i32) 38*9880d681SAndroid Build Coastguard Worker 39*9880d681SAndroid Build Coastguard Workerdefine void @test_i32() { 40*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_i32: 41*9880d681SAndroid Build Coastguard Worker 42*9880d681SAndroid Build Coastguard Worker call arm_aapcs_vfpcc void @take_i32(i32 0) 43*9880d681SAndroid Build Coastguard Worker call arm_aapcs_vfpcc void @take_i32(i32 0) 44*9880d681SAndroid Build Coastguard Worker; CHECK-NOTSWIFT-NOT: vmov.f64 [[ZEROREG:d[0-9]+]], 45*9880d681SAndroid Build Coastguard Worker; CHECK: mov r0, #0 46*9880d681SAndroid Build Coastguard Worker; CHECK: bl 47*9880d681SAndroid Build Coastguard Worker; CHECK: mov r0, #0 48*9880d681SAndroid Build Coastguard Worker; CHECK: bl 49*9880d681SAndroid Build Coastguard Worker 50*9880d681SAndroid Build Coastguard Worker; It doesn't particularly matter what Swift does here, there isn't carefully 51*9880d681SAndroid Build Coastguard Worker; crafted behaviour that we might break in Cyclone. 52*9880d681SAndroid Build Coastguard Worker 53*9880d681SAndroid Build Coastguard Worker ret void 54*9880d681SAndroid Build Coastguard Worker} 55