1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -float-abi=hard -debug-only arm-isel 2>&1 | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -float-abi=soft -debug-only arm-isel 2>&1 | FileCheck %s --check-prefix=SOFT 3*9880d681SAndroid Build Coastguard Worker; REQUIRES: asserts 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Workertarget datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64" 6*9880d681SAndroid Build Coastguard Workertarget triple = "armv7-none--eabi" 7*9880d681SAndroid Build Coastguard Worker 8*9880d681SAndroid Build Coastguard Worker; SOFT-NOT: isHA 9*9880d681SAndroid Build Coastguard Worker 10*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 1 { float } 11*9880d681SAndroid Build Coastguard Workerdefine void @f0b({ float } %a) { 12*9880d681SAndroid Build Coastguard Worker ret void 13*9880d681SAndroid Build Coastguard Worker} 14*9880d681SAndroid Build Coastguard Worker 15*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 1 { float, float } 16*9880d681SAndroid Build Coastguard Workerdefine void @f1({ float, float } %a) { 17*9880d681SAndroid Build Coastguard Worker ret void 18*9880d681SAndroid Build Coastguard Worker} 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 1 { float, float, float } 21*9880d681SAndroid Build Coastguard Workerdefine void @f1b({ float, float, float } %a) { 22*9880d681SAndroid Build Coastguard Worker ret void 23*9880d681SAndroid Build Coastguard Worker} 24*9880d681SAndroid Build Coastguard Worker 25*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 1 { float, float, float, float } 26*9880d681SAndroid Build Coastguard Workerdefine void @f1c({ float, float, float, float } %a) { 27*9880d681SAndroid Build Coastguard Worker ret void 28*9880d681SAndroid Build Coastguard Worker} 29*9880d681SAndroid Build Coastguard Worker 30*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 0 { float, float, float, float, float } 31*9880d681SAndroid Build Coastguard Workerdefine void @f2({ float, float, float, float, float } %a) { 32*9880d681SAndroid Build Coastguard Worker ret void 33*9880d681SAndroid Build Coastguard Worker} 34*9880d681SAndroid Build Coastguard Worker 35*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 1 { double } 36*9880d681SAndroid Build Coastguard Workerdefine void @f3({ double } %a) { 37*9880d681SAndroid Build Coastguard Worker ret void 38*9880d681SAndroid Build Coastguard Worker} 39*9880d681SAndroid Build Coastguard Worker 40*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 1 { double, double, double, double } 41*9880d681SAndroid Build Coastguard Workerdefine void @f4({ double, double, double, double } %a) { 42*9880d681SAndroid Build Coastguard Worker ret void 43*9880d681SAndroid Build Coastguard Worker} 44*9880d681SAndroid Build Coastguard Worker 45*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 0 { double, double, double, double, double } 46*9880d681SAndroid Build Coastguard Workerdefine void @f5({ double, double, double, double, double } %a) { 47*9880d681SAndroid Build Coastguard Worker ret void 48*9880d681SAndroid Build Coastguard Worker} 49*9880d681SAndroid Build Coastguard Worker 50*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 0 { i32, i32 } 51*9880d681SAndroid Build Coastguard Workerdefine void @f5b({ i32, i32 } %a) { 52*9880d681SAndroid Build Coastguard Worker ret void 53*9880d681SAndroid Build Coastguard Worker} 54*9880d681SAndroid Build Coastguard Worker 55*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 1 { [1 x float] } 56*9880d681SAndroid Build Coastguard Workerdefine void @f6({ [1 x float] } %a) { 57*9880d681SAndroid Build Coastguard Worker ret void 58*9880d681SAndroid Build Coastguard Worker} 59*9880d681SAndroid Build Coastguard Worker 60*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 1 { [4 x float] } 61*9880d681SAndroid Build Coastguard Workerdefine void @f7({ [4 x float] } %a) { 62*9880d681SAndroid Build Coastguard Worker ret void 63*9880d681SAndroid Build Coastguard Worker} 64*9880d681SAndroid Build Coastguard Worker 65*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 0 { [5 x float] } 66*9880d681SAndroid Build Coastguard Workerdefine void @f8({ [5 x float] } %a) { 67*9880d681SAndroid Build Coastguard Worker ret void 68*9880d681SAndroid Build Coastguard Worker} 69*9880d681SAndroid Build Coastguard Worker 70*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 1 [1 x float] 71*9880d681SAndroid Build Coastguard Workerdefine void @f6b([1 x float] %a) { 72*9880d681SAndroid Build Coastguard Worker ret void 73*9880d681SAndroid Build Coastguard Worker} 74*9880d681SAndroid Build Coastguard Worker 75*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 1 [4 x float] 76*9880d681SAndroid Build Coastguard Workerdefine void @f7b([4 x float] %a) { 77*9880d681SAndroid Build Coastguard Worker ret void 78*9880d681SAndroid Build Coastguard Worker} 79*9880d681SAndroid Build Coastguard Worker 80*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 0 [5 x float] 81*9880d681SAndroid Build Coastguard Workerdefine void @f8b([5 x float] %a) { 82*9880d681SAndroid Build Coastguard Worker ret void 83*9880d681SAndroid Build Coastguard Worker} 84*9880d681SAndroid Build Coastguard Worker 85*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 1 { [2 x float], [2 x float] } 86*9880d681SAndroid Build Coastguard Workerdefine void @f9({ [2 x float], [2 x float] } %a) { 87*9880d681SAndroid Build Coastguard Worker ret void 88*9880d681SAndroid Build Coastguard Worker} 89*9880d681SAndroid Build Coastguard Worker 90*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 1 { [1 x float], [3 x float] } 91*9880d681SAndroid Build Coastguard Workerdefine void @f9b({ [1 x float], [3 x float] } %a) { 92*9880d681SAndroid Build Coastguard Worker ret void 93*9880d681SAndroid Build Coastguard Worker} 94*9880d681SAndroid Build Coastguard Worker 95*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 0 { [3 x float], [3 x float] } 96*9880d681SAndroid Build Coastguard Workerdefine void @f10({ [3 x float], [3 x float] } %a) { 97*9880d681SAndroid Build Coastguard Worker ret void 98*9880d681SAndroid Build Coastguard Worker} 99*9880d681SAndroid Build Coastguard Worker 100*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 1 { <2 x float> } 101*9880d681SAndroid Build Coastguard Workerdefine void @f11({ <2 x float> } %a) { 102*9880d681SAndroid Build Coastguard Worker ret void 103*9880d681SAndroid Build Coastguard Worker} 104*9880d681SAndroid Build Coastguard Worker 105*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 0 { <3 x float> } 106*9880d681SAndroid Build Coastguard Workerdefine void @f12({ <3 x float> } %a) { 107*9880d681SAndroid Build Coastguard Worker ret void 108*9880d681SAndroid Build Coastguard Worker} 109*9880d681SAndroid Build Coastguard Worker 110*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 1 { <4 x float> } 111*9880d681SAndroid Build Coastguard Workerdefine void @f13({ <4 x float> } %a) { 112*9880d681SAndroid Build Coastguard Worker ret void 113*9880d681SAndroid Build Coastguard Worker} 114*9880d681SAndroid Build Coastguard Worker 115*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 1 { <2 x float>, <2 x float> } 116*9880d681SAndroid Build Coastguard Workerdefine void @f15({ <2 x float>, <2 x float> } %a) { 117*9880d681SAndroid Build Coastguard Worker ret void 118*9880d681SAndroid Build Coastguard Worker} 119*9880d681SAndroid Build Coastguard Worker 120*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 0 { <2 x float>, float } 121*9880d681SAndroid Build Coastguard Workerdefine void @f15b({ <2 x float>, float } %a) { 122*9880d681SAndroid Build Coastguard Worker ret void 123*9880d681SAndroid Build Coastguard Worker} 124*9880d681SAndroid Build Coastguard Worker 125*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 0 { <2 x float>, [2 x float] } 126*9880d681SAndroid Build Coastguard Workerdefine void @f15c({ <2 x float>, [2 x float] } %a) { 127*9880d681SAndroid Build Coastguard Worker ret void 128*9880d681SAndroid Build Coastguard Worker} 129*9880d681SAndroid Build Coastguard Worker 130*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 0 { <2 x float>, <4 x float> } 131*9880d681SAndroid Build Coastguard Workerdefine void @f16({ <2 x float>, <4 x float> } %a) { 132*9880d681SAndroid Build Coastguard Worker ret void 133*9880d681SAndroid Build Coastguard Worker} 134*9880d681SAndroid Build Coastguard Worker 135*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 1 { <2 x double> } 136*9880d681SAndroid Build Coastguard Workerdefine void @f17({ <2 x double> } %a) { 137*9880d681SAndroid Build Coastguard Worker ret void 138*9880d681SAndroid Build Coastguard Worker} 139*9880d681SAndroid Build Coastguard Worker 140*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 1 { <2 x i32> } 141*9880d681SAndroid Build Coastguard Workerdefine void @f18({ <2 x i32> } %a) { 142*9880d681SAndroid Build Coastguard Worker ret void 143*9880d681SAndroid Build Coastguard Worker} 144*9880d681SAndroid Build Coastguard Worker 145*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 1 { <2 x i64>, <4 x i32> } 146*9880d681SAndroid Build Coastguard Workerdefine void @f19({ <2 x i64>, <4 x i32> } %a) { 147*9880d681SAndroid Build Coastguard Worker ret void 148*9880d681SAndroid Build Coastguard Worker} 149*9880d681SAndroid Build Coastguard Worker 150*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 1 { [4 x <4 x float>] } 151*9880d681SAndroid Build Coastguard Workerdefine void @f20({ [4 x <4 x float>] } %a) { 152*9880d681SAndroid Build Coastguard Worker ret void 153*9880d681SAndroid Build Coastguard Worker} 154*9880d681SAndroid Build Coastguard Worker 155*9880d681SAndroid Build Coastguard Worker; CHECK: isHA: 0 { [5 x <4 x float>] } 156*9880d681SAndroid Build Coastguard Workerdefine void @f21({ [5 x <4 x float>] } %a) { 157*9880d681SAndroid Build Coastguard Worker ret void 158*9880d681SAndroid Build Coastguard Worker} 159*9880d681SAndroid Build Coastguard Worker 160*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: isHA 161*9880d681SAndroid Build Coastguard Workerdefine void @f22({ float } %a, ...) { 162*9880d681SAndroid Build Coastguard Worker ret void 163*9880d681SAndroid Build Coastguard Worker} 164*9880d681SAndroid Build Coastguard Worker 165