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