Home | History | Annotate | Download | only in Mips
      1 ; RUN: llc  -march=mipsel -mattr=mips16 -relocation-model=pic -O3 < %s | FileCheck %s -check-prefix=1
      2 ; RUN: llc  -march=mipsel -mattr=mips16 -relocation-model=pic -O3 < %s | FileCheck %s -check-prefix=2
      3 
      4 
      5 @x = common global float 0.000000e+00, align 4
      6 @xd = common global double 0.000000e+00, align 8
      7 @y = common global float 0.000000e+00, align 4
      8 @yd = common global double 0.000000e+00, align 8
      9 @xy = common global { float, float } zeroinitializer, align 4
     10 @xyd = common global { double, double } zeroinitializer, align 8
     11 
     12 define void @foo() nounwind {
     13 entry:
     14   %0 = load float, float* @x, align 4
     15   call void @v_sf(float %0)
     16   %1 = load double, double* @xd, align 8
     17   call void @v_df(double %1)
     18   %2 = load float, float* @x, align 4
     19   %3 = load float, float* @y, align 4
     20   call void @v_sf_sf(float %2, float %3)
     21   %4 = load double, double* @xd, align 8
     22   %5 = load float, float* @x, align 4
     23   call void @v_df_sf(double %4, float %5)
     24   %6 = load double, double* @xd, align 8
     25   %7 = load double, double* @yd, align 8
     26   call void @v_df_df(double %6, double %7)
     27   %call = call float @sf_v()
     28   %8 = load float, float* @x, align 4
     29   %call1 = call float @sf_sf(float %8)
     30   %9 = load double, double* @xd, align 8
     31   %call2 = call float @sf_df(double %9)
     32   %10 = load float, float* @x, align 4
     33   %11 = load float, float* @y, align 4
     34   %call3 = call float @sf_sf_sf(float %10, float %11)
     35   %12 = load double, double* @xd, align 8
     36   %13 = load float, float* @x, align 4
     37   %call4 = call float @sf_df_sf(double %12, float %13)
     38   %14 = load double, double* @xd, align 8
     39   %15 = load double, double* @yd, align 8
     40   %call5 = call float @sf_df_df(double %14, double %15)
     41   %call6 = call double @df_v()
     42   %16 = load float, float* @x, align 4
     43   %call7 = call double @df_sf(float %16)
     44   %17 = load double, double* @xd, align 8
     45   %call8 = call double @df_df(double %17)
     46   %18 = load float, float* @x, align 4
     47   %19 = load float, float* @y, align 4
     48   %call9 = call double @df_sf_sf(float %18, float %19)
     49   %20 = load double, double* @xd, align 8
     50   %21 = load float, float* @x, align 4
     51   %call10 = call double @df_df_sf(double %20, float %21)
     52   %22 = load double, double* @xd, align 8
     53   %23 = load double, double* @yd, align 8
     54   %call11 = call double @df_df_df(double %22, double %23)
     55   %call12 = call { float, float } @sc_v()
     56   %24 = extractvalue { float, float } %call12, 0
     57   %25 = extractvalue { float, float } %call12, 1
     58   %26 = load float, float* @x, align 4
     59   %call13 = call { float, float } @sc_sf(float %26)
     60   %27 = extractvalue { float, float } %call13, 0
     61   %28 = extractvalue { float, float } %call13, 1
     62   %29 = load double, double* @xd, align 8
     63   %call14 = call { float, float } @sc_df(double %29)
     64   %30 = extractvalue { float, float } %call14, 0
     65   %31 = extractvalue { float, float } %call14, 1
     66   %32 = load float, float* @x, align 4
     67   %33 = load float, float* @y, align 4
     68   %call15 = call { float, float } @sc_sf_sf(float %32, float %33)
     69   %34 = extractvalue { float, float } %call15, 0
     70   %35 = extractvalue { float, float } %call15, 1
     71   %36 = load double, double* @xd, align 8
     72   %37 = load float, float* @x, align 4
     73   %call16 = call { float, float } @sc_df_sf(double %36, float %37)
     74   %38 = extractvalue { float, float } %call16, 0
     75   %39 = extractvalue { float, float } %call16, 1
     76   %40 = load double, double* @xd, align 8
     77   %41 = load double, double* @yd, align 8
     78   %call17 = call { float, float } @sc_df_df(double %40, double %41)
     79   %42 = extractvalue { float, float } %call17, 0
     80   %43 = extractvalue { float, float } %call17, 1
     81   %call18 = call { double, double } @dc_v()
     82   %44 = extractvalue { double, double } %call18, 0
     83   %45 = extractvalue { double, double } %call18, 1
     84   %46 = load float, float* @x, align 4
     85   %call19 = call { double, double } @dc_sf(float %46)
     86   %47 = extractvalue { double, double } %call19, 0
     87   %48 = extractvalue { double, double } %call19, 1
     88   %49 = load double, double* @xd, align 8
     89   %call20 = call { double, double } @dc_df(double %49)
     90   %50 = extractvalue { double, double } %call20, 0
     91   %51 = extractvalue { double, double } %call20, 1
     92   %52 = load float, float* @x, align 4
     93   %53 = load float, float* @y, align 4
     94   %call21 = call { double, double } @dc_sf_sf(float %52, float %53)
     95   %54 = extractvalue { double, double } %call21, 0
     96   %55 = extractvalue { double, double } %call21, 1
     97   %56 = load double, double* @xd, align 8
     98   %57 = load float, float* @x, align 4
     99   %call22 = call { double, double } @dc_df_sf(double %56, float %57)
    100   %58 = extractvalue { double, double } %call22, 0
    101   %59 = extractvalue { double, double } %call22, 1
    102   %60 = load double, double* @xd, align 8
    103   %61 = load double, double* @yd, align 8
    104   %call23 = call { double, double } @dc_df_df(double %60, double %61)
    105   %62 = extractvalue { double, double } %call23, 0
    106   %63 = extractvalue { double, double } %call23, 1
    107   ret void
    108 }
    109 
    110 declare void @v_sf(float)
    111 
    112 declare void @v_df(double)
    113 
    114 declare void @v_sf_sf(float, float)
    115 
    116 declare void @v_df_sf(double, float)
    117 
    118 declare void @v_df_df(double, double)
    119 
    120 declare float @sf_v()
    121 
    122 declare float @sf_sf(float)
    123 
    124 declare float @sf_df(double)
    125 
    126 declare float @sf_sf_sf(float, float)
    127 
    128 declare float @sf_df_sf(double, float)
    129 
    130 declare float @sf_df_df(double, double)
    131 
    132 declare double @df_v()
    133 
    134 declare double @df_sf(float)
    135 
    136 declare double @df_df(double)
    137 
    138 declare double @df_sf_sf(float, float)
    139 
    140 declare double @df_df_sf(double, float)
    141 
    142 declare double @df_df_df(double, double)
    143 
    144 declare { float, float } @sc_v()
    145 
    146 declare { float, float } @sc_sf(float)
    147 
    148 declare { float, float } @sc_df(double)
    149 
    150 declare { float, float } @sc_sf_sf(float, float)
    151 
    152 declare { float, float } @sc_df_sf(double, float)
    153 
    154 declare { float, float } @sc_df_df(double, double)
    155 
    156 declare { double, double } @dc_v()
    157 
    158 declare { double, double } @dc_sf(float)
    159 
    160 declare { double, double } @dc_df(double)
    161 
    162 declare { double, double } @dc_sf_sf(float, float)
    163 
    164 declare { double, double } @dc_df_sf(double, float)
    165 
    166 declare { double, double } @dc_df_df(double, double)
    167 
    168 ; 1:	lw	${{[0-9]+}}, %got(__mips16_call_stub_1)(${{[0-9]+}})
    169 ; 2:	lw	${{[0-9]+}}, %call16(v_sf)(${{[0-9]+}})
    170 
    171 ; 1:	lw	${{[0-9]+}}, %got(__mips16_call_stub_2)(${{[0-9]+}})
    172 ; 2:	lw	${{[0-9]+}}, %call16(v_df)(${{[0-9]+}})
    173 
    174 ; 1:	lw	${{[0-9]+}}, %got(__mips16_call_stub_5)(${{[0-9]+}})
    175 ; 2:	lw	${{[0-9]+}}, %call16(v_sf_sf)(${{[0-9]+}})
    176 
    177 ; 1:	lw	${{[0-9]+}}, %got(__mips16_call_stub_6)(${{[0-9]+}})
    178 ; 2:	lw	${{[0-9]+}}, %call16(v_df_sf)(${{[0-9]+}})
    179 
    180 ; 1:	lw	${{[0-9]+}}, %got(__mips16_call_stub_10)(${{[0-9]+}})
    181 ; 2:	lw	${{[0-9]+}}, %call16(v_df_df)(${{[0-9]+}})
    182 
    183 ; 1:	lw	${{[0-9]+}}, %got(__mips16_call_stub_sf_0)(${{[0-9]+}})
    184 ; 2:	lw	${{[0-9]+}}, %call16(sf_v)(${{[0-9]+}})
    185 
    186 ; 1:	lw	${{[0-9]+}}, %got(__mips16_call_stub_sf_1)(${{[0-9]+}})
    187 ; 2:	lw	${{[0-9]+}}, %call16(sf_sf)(${{[0-9]+}})
    188 
    189 ; 1:	lw	${{[0-9]+}}, %got(__mips16_call_stub_sf_2)(${{[0-9]+}})
    190 ; 2:	lw	${{[0-9]+}}, %call16(sf_df)(${{[0-9]+}})
    191 
    192 ; 1:	lw	${{[0-9]+}}, %got(__mips16_call_stub_sf_5)(${{[0-9]+}})
    193 ; 2:	lw	${{[0-9]+}}, %call16(sf_sf_sf)(${{[0-9]+}})
    194 
    195 ; 1:	lw	${{[0-9]+}}, %got(__mips16_call_stub_sf_6)(${{[0-9]+}})
    196 ; 2:	lw	${{[0-9]+}}, %call16(sf_df_sf)(${{[0-9]+}})
    197 
    198 ; 1:	lw	${{[0-9]+}}, %got(__mips16_call_stub_sf_10)(${{[0-9]+}})
    199 ; 2:	lw	${{[0-9]+}}, %call16(sf_df_df)(${{[0-9]+}})
    200 
    201 ; 1:	lw	${{[0-9]+}}, %got(__mips16_call_stub_df_0)(${{[0-9]+}})
    202 ; 2:	lw	${{[0-9]+}}, %call16(df_v)(${{[0-9]+}})
    203 
    204 ; 1:	lw	${{[0-9]+}}, %got(__mips16_call_stub_df_1)(${{[0-9]+}})
    205 ; 2:	lw	${{[0-9]+}}, %call16(df_sf)(${{[0-9]+}})
    206 
    207 ; 1:	lw	${{[0-9]+}}, %got(__mips16_call_stub_df_2)(${{[0-9]+}})
    208 ; 2:	lw	${{[0-9]+}}, %call16(df_df)(${{[0-9]+}})
    209 
    210 ; 1:	lw	${{[0-9]+}}, %got(__mips16_call_stub_df_5)(${{[0-9]+}})
    211 ; 2:	lw	${{[0-9]+}}, %call16(df_sf_sf)(${{[0-9]+}})
    212 
    213 ; 1:	lw	${{[0-9]+}}, %got(__mips16_call_stub_df_6)(${{[0-9]+}})
    214 ; 2:	lw	${{[0-9]+}}, %call16(df_df_sf)(${{[0-9]+}})
    215 
    216 ; 1:	lw	${{[0-9]+}}, %got(__mips16_call_stub_df_10)(${{[0-9]+}})
    217 ; 2:	lw	${{[0-9]+}}, %call16(df_df_df)(${{[0-9]+}})
    218 
    219 ; 1:	lw	${{[0-9]+}}, %got(__mips16_call_stub_sc_0)(${{[0-9]+}})
    220 ; 2:	lw	${{[0-9]+}}, %call16(sc_v)(${{[0-9]+}})
    221 
    222 ; 1:	lw	${{[0-9]+}}, %got(__mips16_call_stub_sc_1)(${{[0-9]+}})
    223 ; 2:	lw	${{[0-9]+}}, %call16(sc_sf)(${{[0-9]+}})
    224 
    225 ; 1:	lw	${{[0-9]+}}, %got(__mips16_call_stub_sc_2)(${{[0-9]+}})
    226 ; 2:	lw	${{[0-9]+}}, %call16(sc_df)(${{[0-9]+}})
    227 
    228 ; 1:	lw	${{[0-9]+}}, %got(__mips16_call_stub_sc_5)(${{[0-9]+}})
    229 ; 2:	lw	${{[0-9]+}}, %call16(sc_sf_sf)(${{[0-9]+}})
    230 
    231 ; 1:	lw	${{[0-9]+}}, %got(__mips16_call_stub_sc_6)(${{[0-9]+}})
    232 ; 2:	lw	${{[0-9]+}}, %call16(sc_df_sf)(${{[0-9]+}})
    233 
    234 ; 1:	lw	${{[0-9]+}}, %got(__mips16_call_stub_sc_10)(${{[0-9]+}})
    235 ; 2:	lw	${{[0-9]+}}, %call16(sc_df_df)(${{[0-9]+}})
    236 
    237 ; 1:	lw	${{[0-9]+}}, %got(__mips16_call_stub_dc_0)(${{[0-9]+}})
    238 ; 2:	lw	${{[0-9]+}}, %call16(dc_v)(${{[0-9]+}})
    239 
    240 ; 1:	lw	${{[0-9]+}}, %got(__mips16_call_stub_dc_1)(${{[0-9]+}})
    241 ; 2:	lw	${{[0-9]+}}, %call16(dc_sf)(${{[0-9]+}})
    242 
    243 ; 1:	lw	${{[0-9]+}}, %got(__mips16_call_stub_dc_2)(${{[0-9]+}})
    244 ; 2:	lw	${{[0-9]+}}, %call16(dc_df)(${{[0-9]+}})
    245 
    246 ; 1:	lw	${{[0-9]+}}, %got(__mips16_call_stub_dc_5)(${{[0-9]+}})
    247 ; 2:	lw	${{[0-9]+}}, %call16(dc_sf_sf)(${{[0-9]+}})
    248 
    249 ; 1:	lw	${{[0-9]+}}, %got(__mips16_call_stub_dc_6)(${{[0-9]+}})
    250 ; 2:	lw	${{[0-9]+}}, %call16(dc_df_sf)(${{[0-9]+}})
    251 
    252 ; 1:	lw	${{[0-9]+}}, %got(__mips16_call_stub_dc_10)(${{[0-9]+}})
    253 ; 2:	lw	${{[0-9]+}}, %call16(dc_df_df)(${{[0-9]+}})
    254 
    255 
    256 
    257