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