Home | History | Annotate | Download | only in ARM
      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