Home | History | Annotate | Download | only in Mips
      1 ; RUN: llc -mtriple=mipsel-linux-gnu -march=mipsel -mcpu=mips16 -relocation-model=static < %s | FileCheck %s -check-prefix=stel
      2 
      3 @x = common global float 0.000000e+00, align 4
      4 @y = common global float 0.000000e+00, align 4
      5 @xd = common global double 0.000000e+00, align 8
      6 @yd = common global double 0.000000e+00, align 8
      7 @xy = common global { float, float } zeroinitializer, align 4
      8 @xyd = common global { double, double } zeroinitializer, align 8
      9 @ret_sf = common global float 0.000000e+00, align 4
     10 @ret_df = common global double 0.000000e+00, align 8
     11 @ret_sc = common global { float, float } zeroinitializer, align 4
     12 @ret_dc = common global { double, double } zeroinitializer, align 8
     13 @lx = common global float 0.000000e+00, align 4
     14 @ly = common global float 0.000000e+00, align 4
     15 @lxd = common global double 0.000000e+00, align 8
     16 @lyd = common global double 0.000000e+00, align 8
     17 @lxy = common global { float, float } zeroinitializer, align 4
     18 @lxyd = common global { double, double } zeroinitializer, align 8
     19 @lret_sf = common global float 0.000000e+00, align 4
     20 @lret_df = common global double 0.000000e+00, align 8
     21 @lret_sc = common global { float, float } zeroinitializer, align 4
     22 @lret_dc = common global { double, double } zeroinitializer, align 8
     23 @.str = private unnamed_addr constant [10 x i8] c"%f %f %i\0A\00", align 1
     24 @.str1 = private unnamed_addr constant [16 x i8] c"%f=%f %f=%f %i\0A\00", align 1
     25 @.str2 = private unnamed_addr constant [22 x i8] c"%f=%f %f=%f %f=%f %i\0A\00", align 1
     26 @.str3 = private unnamed_addr constant [18 x i8] c"%f+%fi=%f+%fi %i\0A\00", align 1
     27 @.str4 = private unnamed_addr constant [24 x i8] c"%f+%fi=%f+%fi %f=%f %i\0A\00", align 1
     28 
     29 ; Function Attrs: nounwind
     30 define void @clear() #0 {
     31 entry:
     32   store float 1.000000e+00, float* @x, align 4
     33   store float 1.000000e+00, float* @y, align 4
     34   store double 1.000000e+00, double* @xd, align 8
     35   store double 1.000000e+00, double* @yd, align 8
     36   store float 1.000000e+00, float* getelementptr inbounds ({ float, float }, { float, float }* @xy, i32 0, i32 0)
     37   store float 0.000000e+00, float* getelementptr inbounds ({ float, float }, { float, float }* @xy, i32 0, i32 1)
     38   store double 1.000000e+00, double* getelementptr inbounds ({ double, double }, { double, double }* @xyd, i32 0, i32 0)
     39   store double 0.000000e+00, double* getelementptr inbounds ({ double, double }, { double, double }* @xyd, i32 0, i32 1)
     40   store float 1.000000e+00, float* @ret_sf, align 4
     41   store double 1.000000e+00, double* @ret_df, align 8
     42   store float 1.000000e+00, float* getelementptr inbounds ({ float, float }, { float, float }* @ret_sc, i32 0, i32 0)
     43   store float 0.000000e+00, float* getelementptr inbounds ({ float, float }, { float, float }* @ret_sc, i32 0, i32 1)
     44   store double 1.000000e+00, double* getelementptr inbounds ({ double, double }, { double, double }* @ret_dc, i32 0, i32 0)
     45   store double 0.000000e+00, double* getelementptr inbounds ({ double, double }, { double, double }* @ret_dc, i32 0, i32 1)
     46   store float 0.000000e+00, float* @lx, align 4
     47   store float 0.000000e+00, float* @ly, align 4
     48   store double 0.000000e+00, double* @lxd, align 8
     49   store double 0.000000e+00, double* @lyd, align 8
     50   store float 0.000000e+00, float* getelementptr inbounds ({ float, float }, { float, float }* @lxy, i32 0, i32 0)
     51   store float 0.000000e+00, float* getelementptr inbounds ({ float, float }, { float, float }* @lxy, i32 0, i32 1)
     52   store double 0.000000e+00, double* getelementptr inbounds ({ double, double }, { double, double }* @lxyd, i32 0, i32 0)
     53   store double 0.000000e+00, double* getelementptr inbounds ({ double, double }, { double, double }* @lxyd, i32 0, i32 1)
     54   store float 0.000000e+00, float* @lret_sf, align 4
     55   store double 0.000000e+00, double* @lret_df, align 8
     56   store float 0.000000e+00, float* getelementptr inbounds ({ float, float }, { float, float }* @lret_sc, i32 0, i32 0)
     57   store float 0.000000e+00, float* getelementptr inbounds ({ float, float }, { float, float }* @lret_sc, i32 0, i32 1)
     58   store double 0.000000e+00, double* getelementptr inbounds ({ double, double }, { double, double }* @lret_dc, i32 0, i32 0)
     59   store double 0.000000e+00, double* getelementptr inbounds ({ double, double }, { double, double }* @lret_dc, i32 0, i32 1)
     60   ret void
     61 }
     62 
     63 ; Function Attrs: nounwind
     64 define i32 @main() #0 {
     65 entry:
     66   %retval = alloca i32, align 4
     67   store i32 0, i32* %retval
     68   call void @clear()
     69   store float 1.500000e+00, float* @lx, align 4
     70   %0 = load float, float* @lx, align 4
     71   call void @v_sf(float %0)
     72   %1 = load float, float* @x, align 4
     73   %conv = fpext float %1 to double
     74   %2 = load float, float* @lx, align 4
     75   %conv1 = fpext float %2 to double
     76   %3 = load float, float* @x, align 4
     77   %4 = load float, float* @lx, align 4
     78   %cmp = fcmp oeq float %3, %4
     79   %conv2 = zext i1 %cmp to i32
     80   %call = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str, i32 0, i32 0), double %conv, double %conv1, i32 %conv2)
     81   call void @clear()
     82   store double 0x41678C29C0000000, double* @lxd, align 8
     83   %5 = load double, double* @lxd, align 8
     84   call void @v_df(double %5)
     85   %6 = load double, double* @xd, align 8
     86   %7 = load double, double* @lxd, align 8
     87   %8 = load double, double* @xd, align 8
     88   %9 = load double, double* @lxd, align 8
     89   %cmp3 = fcmp oeq double %8, %9
     90   %conv4 = zext i1 %cmp3 to i32
     91   %call5 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str, i32 0, i32 0), double %6, double %7, i32 %conv4)
     92   call void @clear()
     93   store float 9.000000e+00, float* @lx, align 4
     94   store float 1.000000e+01, float* @ly, align 4
     95   %10 = load float, float* @lx, align 4
     96   %11 = load float, float* @ly, align 4
     97   call void @v_sf_sf(float %10, float %11)
     98   %12 = load float, float* @x, align 4
     99   %conv6 = fpext float %12 to double
    100   %13 = load float, float* @lx, align 4
    101   %conv7 = fpext float %13 to double
    102   %14 = load float, float* @y, align 4
    103   %conv8 = fpext float %14 to double
    104   %15 = load float, float* @ly, align 4
    105   %conv9 = fpext float %15 to double
    106   %16 = load float, float* @x, align 4
    107   %17 = load float, float* @lx, align 4
    108   %cmp10 = fcmp oeq float %16, %17
    109   br i1 %cmp10, label %land.rhs, label %land.end
    110 
    111 land.rhs:                                         ; preds = %entry
    112   %18 = load float, float* @y, align 4
    113   %19 = load float, float* @ly, align 4
    114   %cmp12 = fcmp oeq float %18, %19
    115   br label %land.end
    116 
    117 land.end:                                         ; preds = %land.rhs, %entry
    118   %20 = phi i1 [ false, %entry ], [ %cmp12, %land.rhs ]
    119   %land.ext = zext i1 %20 to i32
    120   %call14 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str1, i32 0, i32 0), double %conv6, double %conv7, double %conv8, double %conv9, i32 %land.ext)
    121   call void @clear()
    122   store float 0x3FFE666660000000, float* @lx, align 4
    123   store double 0x4007E613249FF279, double* @lyd, align 8
    124   %21 = load float, float* @lx, align 4
    125   %22 = load double, double* @lyd, align 8
    126   call void @v_sf_df(float %21, double %22)
    127   %23 = load float, float* @x, align 4
    128   %conv15 = fpext float %23 to double
    129   %24 = load float, float* @lx, align 4
    130   %conv16 = fpext float %24 to double
    131   %25 = load double, double* @yd, align 8
    132   %26 = load double, double* @lyd, align 8
    133   %27 = load float, float* @x, align 4
    134   %28 = load float, float* @lx, align 4
    135   %cmp17 = fcmp oeq float %27, %28
    136   %conv18 = zext i1 %cmp17 to i32
    137   %29 = load double, double* @yd, align 8
    138   %30 = load double, double* @lyd, align 8
    139   %cmp19 = fcmp oeq double %29, %30
    140   %conv20 = zext i1 %cmp19 to i32
    141   %and = and i32 %conv18, %conv20
    142   %call21 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str1, i32 0, i32 0), double %conv15, double %conv16, double %25, double %26, i32 %and)
    143   call void @clear()
    144   store double 0x4194E54F94000000, double* @lxd, align 8
    145   store float 7.600000e+01, float* @ly, align 4
    146   %31 = load double, double* @lxd, align 8
    147   %32 = load float, float* @ly, align 4
    148   call void @v_df_sf(double %31, float %32)
    149   %33 = load double, double* @xd, align 8
    150   %34 = load double, double* @lxd, align 8
    151   %35 = load float, float* @y, align 4
    152   %conv22 = fpext float %35 to double
    153   %36 = load float, float* @ly, align 4
    154   %conv23 = fpext float %36 to double
    155   %37 = load double, double* @xd, align 8
    156   %38 = load double, double* @lxd, align 8
    157   %cmp24 = fcmp oeq double %37, %38
    158   %conv25 = zext i1 %cmp24 to i32
    159   %39 = load float, float* @y, align 4
    160   %40 = load float, float* @ly, align 4
    161   %cmp26 = fcmp oeq float %39, %40
    162   %conv27 = zext i1 %cmp26 to i32
    163   %and28 = and i32 %conv25, %conv27
    164   %call29 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str1, i32 0, i32 0), double %33, double %34, double %conv22, double %conv23, i32 %and28)
    165   call void @clear()
    166   store double 7.365198e+07, double* @lxd, align 8
    167   store double 0x416536CD80000000, double* @lyd, align 8
    168   %41 = load double, double* @lxd, align 8
    169   %42 = load double, double* @lyd, align 8
    170   call void @v_df_df(double %41, double %42)
    171   %43 = load double, double* @xd, align 8
    172   %44 = load double, double* @lxd, align 8
    173   %45 = load double, double* @yd, align 8
    174   %46 = load double, double* @lyd, align 8
    175   %47 = load double, double* @xd, align 8
    176   %48 = load double, double* @lxd, align 8
    177   %cmp30 = fcmp oeq double %47, %48
    178   %conv31 = zext i1 %cmp30 to i32
    179   %49 = load double, double* @yd, align 8
    180   %50 = load double, double* @lyd, align 8
    181   %cmp32 = fcmp oeq double %49, %50
    182   %conv33 = zext i1 %cmp32 to i32
    183   %and34 = and i32 %conv31, %conv33
    184   %call35 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str1, i32 0, i32 0), double %43, double %44, double %45, double %46, i32 %and34)
    185   call void @clear()
    186   store float 0x4016666660000000, float* @ret_sf, align 4
    187   %call36 = call float @sf_v()
    188   store float %call36, float* @lret_sf, align 4
    189   %51 = load float, float* @ret_sf, align 4
    190   %conv37 = fpext float %51 to double
    191   %52 = load float, float* @lret_sf, align 4
    192   %conv38 = fpext float %52 to double
    193   %53 = load float, float* @ret_sf, align 4
    194   %54 = load float, float* @lret_sf, align 4
    195   %cmp39 = fcmp oeq float %53, %54
    196   %conv40 = zext i1 %cmp39 to i32
    197   %call41 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str, i32 0, i32 0), double %conv37, double %conv38, i32 %conv40)
    198   call void @clear()
    199   store float 4.587300e+06, float* @ret_sf, align 4
    200   store float 3.420000e+02, float* @lx, align 4
    201   %55 = load float, float* @lx, align 4
    202   %call42 = call float @sf_sf(float %55)
    203   store float %call42, float* @lret_sf, align 4
    204   %56 = load float, float* @ret_sf, align 4
    205   %conv43 = fpext float %56 to double
    206   %57 = load float, float* @lret_sf, align 4
    207   %conv44 = fpext float %57 to double
    208   %58 = load float, float* @x, align 4
    209   %conv45 = fpext float %58 to double
    210   %59 = load float, float* @lx, align 4
    211   %conv46 = fpext float %59 to double
    212   %60 = load float, float* @ret_sf, align 4
    213   %61 = load float, float* @lret_sf, align 4
    214   %cmp47 = fcmp oeq float %60, %61
    215   %conv48 = zext i1 %cmp47 to i32
    216   %62 = load float, float* @x, align 4
    217   %63 = load float, float* @lx, align 4
    218   %cmp49 = fcmp oeq float %62, %63
    219   %conv50 = zext i1 %cmp49 to i32
    220   %and51 = and i32 %conv48, %conv50
    221   %call52 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str1, i32 0, i32 0), double %conv43, double %conv44, double %conv45, double %conv46, i32 %and51)
    222   call void @clear()
    223   store float 4.445910e+06, float* @ret_sf, align 4
    224   store double 0x419A7DB294000000, double* @lxd, align 8
    225   %64 = load double, double* @lxd, align 8
    226   %call53 = call float @sf_df(double %64)
    227   store float %call53, float* @lret_sf, align 4
    228   %65 = load float, float* @ret_sf, align 4
    229   %conv54 = fpext float %65 to double
    230   %66 = load float, float* @lret_sf, align 4
    231   %conv55 = fpext float %66 to double
    232   %67 = load double, double* @xd, align 8
    233   %68 = load double, double* @lxd, align 8
    234   %69 = load float, float* @ret_sf, align 4
    235   %70 = load float, float* @lret_sf, align 4
    236   %cmp56 = fcmp oeq float %69, %70
    237   %conv57 = zext i1 %cmp56 to i32
    238   %71 = load double, double* @xd, align 8
    239   %72 = load double, double* @lxd, align 8
    240   %cmp58 = fcmp oeq double %71, %72
    241   %conv59 = zext i1 %cmp58 to i32
    242   %and60 = and i32 %conv57, %conv59
    243   %call61 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str1, i32 0, i32 0), double %conv54, double %conv55, double %67, double %68, i32 %and60)
    244   call void @clear()
    245   store float 0x3FFF4BC6A0000000, float* @ret_sf, align 4
    246   store float 4.445500e+03, float* @lx, align 4
    247   store float 0x4068ACCCC0000000, float* @ly, align 4
    248   %73 = load float, float* @lx, align 4
    249   %74 = load float, float* @ly, align 4
    250   %call62 = call float @sf_sf_sf(float %73, float %74)
    251   store float %call62, float* @lret_sf, align 4
    252   %75 = load float, float* @ret_sf, align 4
    253   %conv63 = fpext float %75 to double
    254   %76 = load float, float* @lret_sf, align 4
    255   %conv64 = fpext float %76 to double
    256   %77 = load float, float* @x, align 4
    257   %conv65 = fpext float %77 to double
    258   %78 = load float, float* @lx, align 4
    259   %conv66 = fpext float %78 to double
    260   %79 = load float, float* @y, align 4
    261   %conv67 = fpext float %79 to double
    262   %80 = load float, float* @ly, align 4
    263   %conv68 = fpext float %80 to double
    264   %81 = load float, float* @ret_sf, align 4
    265   %82 = load float, float* @lret_sf, align 4
    266   %cmp69 = fcmp oeq float %81, %82
    267   br i1 %cmp69, label %land.lhs.true, label %land.end76
    268 
    269 land.lhs.true:                                    ; preds = %land.end
    270   %83 = load float, float* @x, align 4
    271   %84 = load float, float* @lx, align 4
    272   %cmp71 = fcmp oeq float %83, %84
    273   br i1 %cmp71, label %land.rhs73, label %land.end76
    274 
    275 land.rhs73:                                       ; preds = %land.lhs.true
    276   %85 = load float, float* @y, align 4
    277   %86 = load float, float* @ly, align 4
    278   %cmp74 = fcmp oeq float %85, %86
    279   br label %land.end76
    280 
    281 land.end76:                                       ; preds = %land.rhs73, %land.lhs.true, %land.end
    282   %87 = phi i1 [ false, %land.lhs.true ], [ false, %land.end ], [ %cmp74, %land.rhs73 ]
    283   %land.ext77 = zext i1 %87 to i32
    284   %call78 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str2, i32 0, i32 0), double %conv63, double %conv64, double %conv65, double %conv66, double %conv67, double %conv68, i32 %land.ext77)
    285   call void @clear()
    286   store float 9.991300e+04, float* @ret_sf, align 4
    287   store float 1.114500e+04, float* @lx, align 4
    288   store double 9.994445e+07, double* @lyd, align 8
    289   %88 = load float, float* @lx, align 4
    290   %89 = load double, double* @lyd, align 8
    291   %call79 = call float @sf_sf_df(float %88, double %89)
    292   store float %call79, float* @lret_sf, align 4
    293   %90 = load float, float* @ret_sf, align 4
    294   %conv80 = fpext float %90 to double
    295   %91 = load float, float* @lret_sf, align 4
    296   %conv81 = fpext float %91 to double
    297   %92 = load float, float* @x, align 4
    298   %conv82 = fpext float %92 to double
    299   %93 = load float, float* @lx, align 4
    300   %conv83 = fpext float %93 to double
    301   %94 = load double, double* @yd, align 8
    302   %95 = load double, double* @lyd, align 8
    303   %96 = load float, float* @ret_sf, align 4
    304   %97 = load float, float* @lret_sf, align 4
    305   %cmp84 = fcmp oeq float %96, %97
    306   br i1 %cmp84, label %land.lhs.true86, label %land.end92
    307 
    308 land.lhs.true86:                                  ; preds = %land.end76
    309   %98 = load float, float* @x, align 4
    310   %99 = load float, float* @lx, align 4
    311   %cmp87 = fcmp oeq float %98, %99
    312   br i1 %cmp87, label %land.rhs89, label %land.end92
    313 
    314 land.rhs89:                                       ; preds = %land.lhs.true86
    315   %100 = load double, double* @yd, align 8
    316   %101 = load double, double* @lyd, align 8
    317   %cmp90 = fcmp oeq double %100, %101
    318   br label %land.end92
    319 
    320 land.end92:                                       ; preds = %land.rhs89, %land.lhs.true86, %land.end76
    321   %102 = phi i1 [ false, %land.lhs.true86 ], [ false, %land.end76 ], [ %cmp90, %land.rhs89 ]
    322   %land.ext93 = zext i1 %102 to i32
    323   %call94 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str2, i32 0, i32 0), double %conv80, double %conv81, double %conv82, double %conv83, double %94, double %95, i32 %land.ext93)
    324   call void @clear()
    325   store float 0x417CCC7A00000000, float* @ret_sf, align 4
    326   store double 0x4172034530000000, double* @lxd, align 8
    327   store float 4.456200e+04, float* @ly, align 4
    328   %103 = load double, double* @lxd, align 8
    329   %104 = load float, float* @ly, align 4
    330   %call95 = call float @sf_df_sf(double %103, float %104)
    331   store float %call95, float* @lret_sf, align 4
    332   %105 = load float, float* @ret_sf, align 4
    333   %conv96 = fpext float %105 to double
    334   %106 = load float, float* @lret_sf, align 4
    335   %conv97 = fpext float %106 to double
    336   %107 = load double, double* @xd, align 8
    337   %108 = load double, double* @lxd, align 8
    338   %109 = load float, float* @y, align 4
    339   %conv98 = fpext float %109 to double
    340   %110 = load float, float* @ly, align 4
    341   %conv99 = fpext float %110 to double
    342   %111 = load float, float* @ret_sf, align 4
    343   %112 = load float, float* @lret_sf, align 4
    344   %cmp100 = fcmp oeq float %111, %112
    345   br i1 %cmp100, label %land.lhs.true102, label %land.end108
    346 
    347 land.lhs.true102:                                 ; preds = %land.end92
    348   %113 = load double, double* @xd, align 8
    349   %114 = load double, double* @lxd, align 8
    350   %cmp103 = fcmp oeq double %113, %114
    351   br i1 %cmp103, label %land.rhs105, label %land.end108
    352 
    353 land.rhs105:                                      ; preds = %land.lhs.true102
    354   %115 = load float, float* @y, align 4
    355   %116 = load float, float* @ly, align 4
    356   %cmp106 = fcmp oeq float %115, %116
    357   br label %land.end108
    358 
    359 land.end108:                                      ; preds = %land.rhs105, %land.lhs.true102, %land.end92
    360   %117 = phi i1 [ false, %land.lhs.true102 ], [ false, %land.end92 ], [ %cmp106, %land.rhs105 ]
    361   %land.ext109 = zext i1 %117 to i32
    362   %call110 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str2, i32 0, i32 0), double %conv96, double %conv97, double %107, double %108, double %conv98, double %conv99, i32 %land.ext109)
    363   call void @clear()
    364   store float 3.987721e+06, float* @ret_sf, align 4
    365   store double 0x3FF1F49F6DDDC2D8, double* @lxd, align 8
    366   store double 0x409129F306A2B170, double* @lyd, align 8
    367   %118 = load double, double* @lxd, align 8
    368   %119 = load double, double* @lyd, align 8
    369   %call111 = call float @sf_df_df(double %118, double %119)
    370   store float %call111, float* @lret_sf, align 4
    371   %120 = load float, float* @ret_sf, align 4
    372   %conv112 = fpext float %120 to double
    373   %121 = load float, float* @lret_sf, align 4
    374   %conv113 = fpext float %121 to double
    375   %122 = load double, double* @xd, align 8
    376   %123 = load double, double* @lxd, align 8
    377   %124 = load double, double* @yd, align 8
    378   %125 = load double, double* @lyd, align 8
    379   %126 = load float, float* @ret_sf, align 4
    380   %127 = load float, float* @lret_sf, align 4
    381   %cmp114 = fcmp oeq float %126, %127
    382   br i1 %cmp114, label %land.lhs.true116, label %land.end122
    383 
    384 land.lhs.true116:                                 ; preds = %land.end108
    385   %128 = load double, double* @xd, align 8
    386   %129 = load double, double* @lxd, align 8
    387   %cmp117 = fcmp oeq double %128, %129
    388   br i1 %cmp117, label %land.rhs119, label %land.end122
    389 
    390 land.rhs119:                                      ; preds = %land.lhs.true116
    391   %130 = load double, double* @yd, align 8
    392   %131 = load double, double* @lyd, align 8
    393   %cmp120 = fcmp oeq double %130, %131
    394   br label %land.end122
    395 
    396 land.end122:                                      ; preds = %land.rhs119, %land.lhs.true116, %land.end108
    397   %132 = phi i1 [ false, %land.lhs.true116 ], [ false, %land.end108 ], [ %cmp120, %land.rhs119 ]
    398   %land.ext123 = zext i1 %132 to i32
    399   %call124 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str2, i32 0, i32 0), double %conv112, double %conv113, double %122, double %123, double %124, double %125, i32 %land.ext123)
    400   call void @clear()
    401   store double 1.561234e+01, double* @ret_df, align 8
    402   %call125 = call double @df_v()
    403   store double %call125, double* @lret_df, align 8
    404   %133 = load double, double* @ret_df, align 8
    405   %134 = load double, double* @lret_df, align 8
    406   %135 = load double, double* @ret_df, align 8
    407   %136 = load double, double* @lret_df, align 8
    408   %cmp126 = fcmp oeq double %135, %136
    409   %conv127 = zext i1 %cmp126 to i32
    410   %call128 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str, i32 0, i32 0), double %133, double %134, i32 %conv127)
    411   call void @clear()
    412   store double 1.345873e+01, double* @ret_df, align 8
    413   store float 3.434520e+05, float* @lx, align 4
    414   %137 = load float, float* @lx, align 4
    415   %call129 = call double @df_sf(float %137)
    416   store double %call129, double* @lret_df, align 8
    417   %138 = load double, double* @ret_df, align 8
    418   %139 = load double, double* @lret_df, align 8
    419   %140 = load float, float* @x, align 4
    420   %conv130 = fpext float %140 to double
    421   %141 = load float, float* @lx, align 4
    422   %conv131 = fpext float %141 to double
    423   %142 = load double, double* @ret_df, align 8
    424   %143 = load double, double* @lret_df, align 8
    425   %cmp132 = fcmp oeq double %142, %143
    426   %conv133 = zext i1 %cmp132 to i32
    427   %144 = load float, float* @x, align 4
    428   %145 = load float, float* @lx, align 4
    429   %cmp134 = fcmp oeq float %144, %145
    430   %conv135 = zext i1 %cmp134 to i32
    431   %and136 = and i32 %conv133, %conv135
    432   %call137 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str1, i32 0, i32 0), double %138, double %139, double %conv130, double %conv131, i32 %and136)
    433   call void @clear()
    434   store double 0x4084F3AB7AA25D8D, double* @ret_df, align 8
    435   store double 0x4114F671D2F1A9FC, double* @lxd, align 8
    436   %146 = load double, double* @lxd, align 8
    437   %call138 = call double @df_df(double %146)
    438   store double %call138, double* @lret_df, align 8
    439   %147 = load double, double* @ret_df, align 8
    440   %148 = load double, double* @lret_df, align 8
    441   %149 = load double, double* @xd, align 8
    442   %150 = load double, double* @lxd, align 8
    443   %151 = load double, double* @ret_df, align 8
    444   %152 = load double, double* @lret_df, align 8
    445   %cmp139 = fcmp oeq double %151, %152
    446   %conv140 = zext i1 %cmp139 to i32
    447   %153 = load double, double* @xd, align 8
    448   %154 = load double, double* @lxd, align 8
    449   %cmp141 = fcmp oeq double %153, %154
    450   %conv142 = zext i1 %cmp141 to i32
    451   %and143 = and i32 %conv140, %conv142
    452   %call144 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str1, i32 0, i32 0), double %147, double %148, double %149, double %150, i32 %and143)
    453   call void @clear()
    454   store double 6.781956e+03, double* @ret_df, align 8
    455   store float 4.445500e+03, float* @lx, align 4
    456   store float 0x4068ACCCC0000000, float* @ly, align 4
    457   %155 = load float, float* @lx, align 4
    458   %156 = load float, float* @ly, align 4
    459   %call145 = call double @df_sf_sf(float %155, float %156)
    460   store double %call145, double* @lret_df, align 8
    461   %157 = load double, double* @ret_df, align 8
    462   %158 = load double, double* @lret_df, align 8
    463   %159 = load float, float* @x, align 4
    464   %conv146 = fpext float %159 to double
    465   %160 = load float, float* @lx, align 4
    466   %conv147 = fpext float %160 to double
    467   %161 = load float, float* @y, align 4
    468   %conv148 = fpext float %161 to double
    469   %162 = load float, float* @ly, align 4
    470   %conv149 = fpext float %162 to double
    471   %163 = load double, double* @ret_df, align 8
    472   %164 = load double, double* @lret_df, align 8
    473   %cmp150 = fcmp oeq double %163, %164
    474   br i1 %cmp150, label %land.lhs.true152, label %land.end158
    475 
    476 land.lhs.true152:                                 ; preds = %land.end122
    477   %165 = load float, float* @x, align 4
    478   %166 = load float, float* @lx, align 4
    479   %cmp153 = fcmp oeq float %165, %166
    480   br i1 %cmp153, label %land.rhs155, label %land.end158
    481 
    482 land.rhs155:                                      ; preds = %land.lhs.true152
    483   %167 = load float, float* @y, align 4
    484   %168 = load float, float* @ly, align 4
    485   %cmp156 = fcmp oeq float %167, %168
    486   br label %land.end158
    487 
    488 land.end158:                                      ; preds = %land.rhs155, %land.lhs.true152, %land.end122
    489   %169 = phi i1 [ false, %land.lhs.true152 ], [ false, %land.end122 ], [ %cmp156, %land.rhs155 ]
    490   %land.ext159 = zext i1 %169 to i32
    491   %call160 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str2, i32 0, i32 0), double %157, double %158, double %conv146, double %conv147, double %conv148, double %conv149, i32 %land.ext159)
    492   call void @clear()
    493   store double 1.889130e+05, double* @ret_df, align 8
    494   store float 9.111450e+05, float* @lx, align 4
    495   store double 0x4185320A58000000, double* @lyd, align 8
    496   %170 = load float, float* @lx, align 4
    497   %171 = load double, double* @lyd, align 8
    498   %call161 = call double @df_sf_df(float %170, double %171)
    499   store double %call161, double* @lret_df, align 8
    500   %172 = load double, double* @ret_df, align 8
    501   %173 = load double, double* @lret_df, align 8
    502   %174 = load float, float* @x, align 4
    503   %conv162 = fpext float %174 to double
    504   %175 = load float, float* @lx, align 4
    505   %conv163 = fpext float %175 to double
    506   %176 = load double, double* @yd, align 8
    507   %177 = load double, double* @lyd, align 8
    508   %178 = load double, double* @ret_df, align 8
    509   %179 = load double, double* @lret_df, align 8
    510   %cmp164 = fcmp oeq double %178, %179
    511   br i1 %cmp164, label %land.lhs.true166, label %land.end172
    512 
    513 land.lhs.true166:                                 ; preds = %land.end158
    514   %180 = load float, float* @x, align 4
    515   %181 = load float, float* @lx, align 4
    516   %cmp167 = fcmp oeq float %180, %181
    517   br i1 %cmp167, label %land.rhs169, label %land.end172
    518 
    519 land.rhs169:                                      ; preds = %land.lhs.true166
    520   %182 = load double, double* @yd, align 8
    521   %183 = load double, double* @lyd, align 8
    522   %cmp170 = fcmp oeq double %182, %183
    523   br label %land.end172
    524 
    525 land.end172:                                      ; preds = %land.rhs169, %land.lhs.true166, %land.end158
    526   %184 = phi i1 [ false, %land.lhs.true166 ], [ false, %land.end158 ], [ %cmp170, %land.rhs169 ]
    527   %land.ext173 = zext i1 %184 to i32
    528   %call174 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str2, i32 0, i32 0), double %172, double %173, double %conv162, double %conv163, double %176, double %177, i32 %land.ext173)
    529   call void @clear()
    530   store double 0x418B2DB900000000, double* @ret_df, align 8
    531   store double 0x41B1EF2ED3000000, double* @lxd, align 8
    532   store float 1.244562e+06, float* @ly, align 4
    533   %185 = load double, double* @lxd, align 8
    534   %186 = load float, float* @ly, align 4
    535   %call175 = call double @df_df_sf(double %185, float %186)
    536   store double %call175, double* @lret_df, align 8
    537   %187 = load double, double* @ret_df, align 8
    538   %188 = load double, double* @lret_df, align 8
    539   %189 = load double, double* @xd, align 8
    540   %190 = load double, double* @lxd, align 8
    541   %191 = load float, float* @y, align 4
    542   %conv176 = fpext float %191 to double
    543   %192 = load float, float* @ly, align 4
    544   %conv177 = fpext float %192 to double
    545   %193 = load double, double* @ret_df, align 8
    546   %194 = load double, double* @lret_df, align 8
    547   %cmp178 = fcmp oeq double %193, %194
    548   br i1 %cmp178, label %land.lhs.true180, label %land.end186
    549 
    550 land.lhs.true180:                                 ; preds = %land.end172
    551   %195 = load double, double* @xd, align 8
    552   %196 = load double, double* @lxd, align 8
    553   %cmp181 = fcmp oeq double %195, %196
    554   br i1 %cmp181, label %land.rhs183, label %land.end186
    555 
    556 land.rhs183:                                      ; preds = %land.lhs.true180
    557   %197 = load float, float* @y, align 4
    558   %198 = load float, float* @ly, align 4
    559   %cmp184 = fcmp oeq float %197, %198
    560   br label %land.end186
    561 
    562 land.end186:                                      ; preds = %land.rhs183, %land.lhs.true180, %land.end172
    563   %199 = phi i1 [ false, %land.lhs.true180 ], [ false, %land.end172 ], [ %cmp184, %land.rhs183 ]
    564   %land.ext187 = zext i1 %199 to i32
    565   %call188 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str2, i32 0, i32 0), double %187, double %188, double %189, double %190, double %conv176, double %conv177, i32 %land.ext187)
    566   call void @clear()
    567   store double 3.987721e+06, double* @ret_df, align 8
    568   store double 5.223560e+00, double* @lxd, align 8
    569   store double 0x40B7D37CC1A8AC5C, double* @lyd, align 8
    570   %200 = load double, double* @lxd, align 8
    571   %201 = load double, double* @lyd, align 8
    572   %call189 = call double @df_df_df(double %200, double %201)
    573   store double %call189, double* @lret_df, align 8
    574   %202 = load double, double* @ret_df, align 8
    575   %203 = load double, double* @lret_df, align 8
    576   %204 = load double, double* @xd, align 8
    577   %205 = load double, double* @lxd, align 8
    578   %206 = load double, double* @yd, align 8
    579   %207 = load double, double* @lyd, align 8
    580   %208 = load double, double* @ret_df, align 8
    581   %209 = load double, double* @lret_df, align 8
    582   %cmp190 = fcmp oeq double %208, %209
    583   br i1 %cmp190, label %land.lhs.true192, label %land.end198
    584 
    585 land.lhs.true192:                                 ; preds = %land.end186
    586   %210 = load double, double* @xd, align 8
    587   %211 = load double, double* @lxd, align 8
    588   %cmp193 = fcmp oeq double %210, %211
    589   br i1 %cmp193, label %land.rhs195, label %land.end198
    590 
    591 land.rhs195:                                      ; preds = %land.lhs.true192
    592   %212 = load double, double* @yd, align 8
    593   %213 = load double, double* @lyd, align 8
    594   %cmp196 = fcmp oeq double %212, %213
    595   br label %land.end198
    596 
    597 land.end198:                                      ; preds = %land.rhs195, %land.lhs.true192, %land.end186
    598   %214 = phi i1 [ false, %land.lhs.true192 ], [ false, %land.end186 ], [ %cmp196, %land.rhs195 ]
    599   %land.ext199 = zext i1 %214 to i32
    600   %call200 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str2, i32 0, i32 0), double %202, double %203, double %204, double %205, double %206, double %207, i32 %land.ext199)
    601   call void @clear()
    602   store float 4.500000e+00, float* getelementptr inbounds ({ float, float }, { float, float }* @ret_sc, i32 0, i32 0)
    603   store float 7.000000e+00, float* getelementptr inbounds ({ float, float }, { float, float }* @ret_sc, i32 0, i32 1)
    604   %call201 = call { float, float } @sc_v()
    605   %215 = extractvalue { float, float } %call201, 0
    606   %216 = extractvalue { float, float } %call201, 1
    607   store float %215, float* getelementptr inbounds ({ float, float }, { float, float }* @lret_sc, i32 0, i32 0)
    608   store float %216, float* getelementptr inbounds ({ float, float }, { float, float }* @lret_sc, i32 0, i32 1)
    609   %ret_sc.real = load float, float* getelementptr inbounds ({ float, float }, { float, float }* @ret_sc, i32 0, i32 0)
    610   %ret_sc.imag = load float, float* getelementptr inbounds ({ float, float }, { float, float }* @ret_sc, i32 0, i32 1)
    611   %conv202 = fpext float %ret_sc.real to double
    612   %conv203 = fpext float %ret_sc.imag to double
    613   %ret_sc.real204 = load float, float* getelementptr inbounds ({ float, float }, { float, float }* @ret_sc, i32 0, i32 0)
    614   %ret_sc.imag205 = load float, float* getelementptr inbounds ({ float, float }, { float, float }* @ret_sc, i32 0, i32 1)
    615   %conv206 = fpext float %ret_sc.real204 to double
    616   %conv207 = fpext float %ret_sc.imag205 to double
    617   %lret_sc.real = load float, float* getelementptr inbounds ({ float, float }, { float, float }* @lret_sc, i32 0, i32 0)
    618   %lret_sc.imag = load float, float* getelementptr inbounds ({ float, float }, { float, float }* @lret_sc, i32 0, i32 1)
    619   %conv208 = fpext float %lret_sc.real to double
    620   %conv209 = fpext float %lret_sc.imag to double
    621   %lret_sc.real210 = load float, float* getelementptr inbounds ({ float, float }, { float, float }* @lret_sc, i32 0, i32 0)
    622   %lret_sc.imag211 = load float, float* getelementptr inbounds ({ float, float }, { float, float }* @lret_sc, i32 0, i32 1)
    623   %conv212 = fpext float %lret_sc.real210 to double
    624   %conv213 = fpext float %lret_sc.imag211 to double
    625   %ret_sc.real214 = load float, float* getelementptr inbounds ({ float, float }, { float, float }* @ret_sc, i32 0, i32 0)
    626   %ret_sc.imag215 = load float, float* getelementptr inbounds ({ float, float }, { float, float }* @ret_sc, i32 0, i32 1)
    627   %lret_sc.real216 = load float, float* getelementptr inbounds ({ float, float }, { float, float }* @lret_sc, i32 0, i32 0)
    628   %lret_sc.imag217 = load float, float* getelementptr inbounds ({ float, float }, { float, float }* @lret_sc, i32 0, i32 1)
    629   %cmp.r = fcmp oeq float %ret_sc.real214, %lret_sc.real216
    630   %cmp.i = fcmp oeq float %ret_sc.imag215, %lret_sc.imag217
    631   %and.ri = and i1 %cmp.r, %cmp.i
    632   %conv218 = zext i1 %and.ri to i32
    633   %call219 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str3, i32 0, i32 0), double %conv202, double %conv207, double %conv208, double %conv213, i32 %conv218)
    634   call void @clear()
    635   store float 0x3FF7A99300000000, float* @lx, align 4
    636   store float 4.500000e+00, float* getelementptr inbounds ({ float, float }, { float, float }* @ret_sc, i32 0, i32 0)
    637   store float 7.000000e+00, float* getelementptr inbounds ({ float, float }, { float, float }* @ret_sc, i32 0, i32 1)
    638   %217 = load float, float* @lx, align 4
    639   %call220 = call { float, float } @sc_sf(float %217)
    640   %218 = extractvalue { float, float } %call220, 0
    641   %219 = extractvalue { float, float } %call220, 1
    642   store float %218, float* getelementptr inbounds ({ float, float }, { float, float }* @lret_sc, i32 0, i32 0)
    643   store float %219, float* getelementptr inbounds ({ float, float }, { float, float }* @lret_sc, i32 0, i32 1)
    644   %ret_sc.real221 = load float, float* getelementptr inbounds ({ float, float }, { float, float }* @ret_sc, i32 0, i32 0)
    645   %ret_sc.imag222 = load float, float* getelementptr inbounds ({ float, float }, { float, float }* @ret_sc, i32 0, i32 1)
    646   %conv223 = fpext float %ret_sc.real221 to double
    647   %conv224 = fpext float %ret_sc.imag222 to double
    648   %ret_sc.real225 = load float, float* getelementptr inbounds ({ float, float }, { float, float }* @ret_sc, i32 0, i32 0)
    649   %ret_sc.imag226 = load float, float* getelementptr inbounds ({ float, float }, { float, float }* @ret_sc, i32 0, i32 1)
    650   %conv227 = fpext float %ret_sc.real225 to double
    651   %conv228 = fpext float %ret_sc.imag226 to double
    652   %lret_sc.real229 = load float, float* getelementptr inbounds ({ float, float }, { float, float }* @lret_sc, i32 0, i32 0)
    653   %lret_sc.imag230 = load float, float* getelementptr inbounds ({ float, float }, { float, float }* @lret_sc, i32 0, i32 1)
    654   %conv231 = fpext float %lret_sc.real229 to double
    655   %conv232 = fpext float %lret_sc.imag230 to double
    656   %lret_sc.real233 = load float, float* getelementptr inbounds ({ float, float }, { float, float }* @lret_sc, i32 0, i32 0)
    657   %lret_sc.imag234 = load float, float* getelementptr inbounds ({ float, float }, { float, float }* @lret_sc, i32 0, i32 1)
    658   %conv235 = fpext float %lret_sc.real233 to double
    659   %conv236 = fpext float %lret_sc.imag234 to double
    660   %220 = load float, float* @x, align 4
    661   %conv237 = fpext float %220 to double
    662   %221 = load float, float* @lx, align 4
    663   %conv238 = fpext float %221 to double
    664   %ret_sc.real239 = load float, float* getelementptr inbounds ({ float, float }, { float, float }* @ret_sc, i32 0, i32 0)
    665   %ret_sc.imag240 = load float, float* getelementptr inbounds ({ float, float }, { float, float }* @ret_sc, i32 0, i32 1)
    666   %lret_sc.real241 = load float, float* getelementptr inbounds ({ float, float }, { float, float }* @lret_sc, i32 0, i32 0)
    667   %lret_sc.imag242 = load float, float* getelementptr inbounds ({ float, float }, { float, float }* @lret_sc, i32 0, i32 1)
    668   %cmp.r243 = fcmp oeq float %ret_sc.real239, %lret_sc.real241
    669   %cmp.i244 = fcmp oeq float %ret_sc.imag240, %lret_sc.imag242
    670   %and.ri245 = and i1 %cmp.r243, %cmp.i244
    671   br i1 %and.ri245, label %land.rhs247, label %land.end250
    672 
    673 land.rhs247:                                      ; preds = %land.end198
    674   %222 = load float, float* @x, align 4
    675   %223 = load float, float* @lx, align 4
    676   %cmp248 = fcmp oeq float %222, %223
    677   br label %land.end250
    678 
    679 land.end250:                                      ; preds = %land.rhs247, %land.end198
    680   %224 = phi i1 [ false, %land.end198 ], [ %cmp248, %land.rhs247 ]
    681   %land.ext251 = zext i1 %224 to i32
    682   %call252 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str4, i32 0, i32 0), double %conv223, double %conv228, double %conv231, double %conv236, double %conv237, double %conv238, i32 %land.ext251)
    683   call void @clear()
    684   store double 1.234500e+03, double* getelementptr inbounds ({ double, double }, { double, double }* @ret_dc, i32 0, i32 0)
    685   store double 7.677000e+03, double* getelementptr inbounds ({ double, double }, { double, double }* @ret_dc, i32 0, i32 1)
    686   %call253 = call { double, double } @dc_v()
    687   %225 = extractvalue { double, double } %call253, 0
    688   %226 = extractvalue { double, double } %call253, 1
    689   store double %225, double* getelementptr inbounds ({ double, double }, { double, double }* @lret_dc, i32 0, i32 0)
    690   store double %226, double* getelementptr inbounds ({ double, double }, { double, double }* @lret_dc, i32 0, i32 1)
    691   %ret_dc.real = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @ret_dc, i32 0, i32 0)
    692   %ret_dc.imag = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @ret_dc, i32 0, i32 1)
    693   %ret_dc.real254 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @ret_dc, i32 0, i32 0)
    694   %ret_dc.imag255 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @ret_dc, i32 0, i32 1)
    695   %lret_dc.real = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @lret_dc, i32 0, i32 0)
    696   %lret_dc.imag = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @lret_dc, i32 0, i32 1)
    697   %lret_dc.real256 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @lret_dc, i32 0, i32 0)
    698   %lret_dc.imag257 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @lret_dc, i32 0, i32 1)
    699   %ret_dc.real258 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @ret_dc, i32 0, i32 0)
    700   %ret_dc.imag259 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @ret_dc, i32 0, i32 1)
    701   %lret_dc.real260 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @lret_dc, i32 0, i32 0)
    702   %lret_dc.imag261 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @lret_dc, i32 0, i32 1)
    703   %cmp.r262 = fcmp oeq double %ret_dc.real258, %lret_dc.real260
    704   %cmp.i263 = fcmp oeq double %ret_dc.imag259, %lret_dc.imag261
    705   %and.ri264 = and i1 %cmp.r262, %cmp.i263
    706   %conv265 = zext i1 %and.ri264 to i32
    707   %call266 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str3, i32 0, i32 0), double %ret_dc.real, double %ret_dc.imag255, double %lret_dc.real, double %lret_dc.imag257, i32 %conv265)
    708   call void @clear()
    709   store double 0x40AAF6F532617C1C, double* @lxd, align 8
    710   store double 4.444500e+03, double* getelementptr inbounds ({ double, double }, { double, double }* @ret_dc, i32 0, i32 0)
    711   store double 7.888000e+03, double* getelementptr inbounds ({ double, double }, { double, double }* @ret_dc, i32 0, i32 1)
    712   %227 = load float, float* @lx, align 4
    713   %call267 = call { double, double } @dc_sf(float %227)
    714   %228 = extractvalue { double, double } %call267, 0
    715   %229 = extractvalue { double, double } %call267, 1
    716   store double %228, double* getelementptr inbounds ({ double, double }, { double, double }* @lret_dc, i32 0, i32 0)
    717   store double %229, double* getelementptr inbounds ({ double, double }, { double, double }* @lret_dc, i32 0, i32 1)
    718   %ret_dc.real268 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @ret_dc, i32 0, i32 0)
    719   %ret_dc.imag269 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @ret_dc, i32 0, i32 1)
    720   %ret_dc.real270 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @ret_dc, i32 0, i32 0)
    721   %ret_dc.imag271 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @ret_dc, i32 0, i32 1)
    722   %lret_dc.real272 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @lret_dc, i32 0, i32 0)
    723   %lret_dc.imag273 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @lret_dc, i32 0, i32 1)
    724   %lret_dc.real274 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @lret_dc, i32 0, i32 0)
    725   %lret_dc.imag275 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @lret_dc, i32 0, i32 1)
    726   %230 = load float, float* @x, align 4
    727   %conv276 = fpext float %230 to double
    728   %231 = load float, float* @lx, align 4
    729   %conv277 = fpext float %231 to double
    730   %ret_dc.real278 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @ret_dc, i32 0, i32 0)
    731   %ret_dc.imag279 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @ret_dc, i32 0, i32 1)
    732   %lret_dc.real280 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @lret_dc, i32 0, i32 0)
    733   %lret_dc.imag281 = load double, double* getelementptr inbounds ({ double, double }, { double, double }* @lret_dc, i32 0, i32 1)
    734   %cmp.r282 = fcmp oeq double %ret_dc.real278, %lret_dc.real280
    735   %cmp.i283 = fcmp oeq double %ret_dc.imag279, %lret_dc.imag281
    736   %and.ri284 = and i1 %cmp.r282, %cmp.i283
    737   br i1 %and.ri284, label %land.rhs286, label %land.end289
    738 
    739 land.rhs286:                                      ; preds = %land.end250
    740   %232 = load float, float* @x, align 4
    741   %233 = load float, float* @lx, align 4
    742   %cmp287 = fcmp oeq float %232, %233
    743   br label %land.end289
    744 
    745 land.end289:                                      ; preds = %land.rhs286, %land.end250
    746   %234 = phi i1 [ false, %land.end250 ], [ %cmp287, %land.rhs286 ]
    747   %land.ext290 = zext i1 %234 to i32
    748   %call291 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str4, i32 0, i32 0), double %ret_dc.real268, double %ret_dc.imag271, double %lret_dc.real272, double %lret_dc.imag275, double %conv276, double %conv277, i32 %land.ext290)
    749   %235 = load i32, i32* %retval
    750   ret i32 %235
    751 }
    752 
    753 declare void @v_sf(float) #1
    754 ; stel: .section	.mips16.call.fp.v_sf,"ax",@progbits
    755 ; stel:	.ent	__call_stub_fp_v_sf
    756 ; stel:	mtc1 $4,$f12
    757 ; stel:	lui  $25,%hi(v_sf)
    758 ; stel:	addiu  $25,$25,%lo(v_sf)
    759 ; stel:	jr $25
    760 ; stel:	.end	__call_stub_fp_v_sf
    761 
    762 declare i32 @printf(i8*, ...) #1
    763 
    764 declare void @v_df(double) #1
    765 ; stel: .section	.mips16.call.fp.v_df,"ax",@progbits
    766 ; stel:	.ent	__call_stub_fp_v_df
    767 ; stel: #APP
    768 ; setl: .set reorder
    769 ; stel:	mtc1 $4,$f12
    770 ; stel:	mtc1 $5,$f13
    771 ; stel:	lui  $25,%hi(v_df)
    772 ; stel:	addiu  $25,$25,%lo(v_df)
    773 ; stel:	jr $25
    774 ; stel:	.end	__call_stub_fp_v_df
    775 
    776 declare void @v_sf_sf(float, float) #1
    777 ; stel: .section	.mips16.call.fp.v_sf_sf,"ax",@progbits
    778 ; stel:	.ent	__call_stub_fp_v_sf_sf
    779 ; stel:	mtc1 $4,$f12
    780 ; stel:	mtc1 $5,$f14
    781 ; stel:	lui  $25,%hi(v_sf_sf)
    782 ; stel:	addiu  $25,$25,%lo(v_sf_sf)
    783 ; stel:	jr $25
    784 ; stel:	.end	__call_stub_fp_v_sf_sf
    785 
    786 declare void @v_sf_df(float, double) #1
    787 ; stel: .section	.mips16.call.fp.v_sf_df,"ax",@progbits
    788 ; stel:	.ent	__call_stub_fp_v_sf_df
    789 ; stel:	mtc1 $4,$f12
    790 ; stel:	mtc1 $6,$f14
    791 ; stel:	mtc1 $7,$f15
    792 ; stel:	lui  $25,%hi(v_sf_df)
    793 ; stel:	addiu  $25,$25,%lo(v_sf_df)
    794 ; stel:	jr $25
    795 ; stel:	.end	__call_stub_fp_v_sf_df
    796 
    797 declare void @v_df_sf(double, float) #1
    798 ; stel: .section	.mips16.call.fp.v_df_sf,"ax",@progbits
    799 ; stel:	.ent	__call_stub_fp_v_df_sf
    800 ; stel:	mtc1 $4,$f12
    801 ; stel:	mtc1 $5,$f13
    802 ; stel:	mtc1 $6,$f14
    803 ; stel:	lui  $25,%hi(v_df_sf)
    804 ; stel:	addiu  $25,$25,%lo(v_df_sf)
    805 ; stel:	jr $25
    806 ; stel:	.end	__call_stub_fp_v_df_sf
    807 
    808 declare void @v_df_df(double, double) #1
    809 ; stel: .section	.mips16.call.fp.v_df_df,"ax",@progbits
    810 ; stel:	.ent	__call_stub_fp_v_df_df
    811 ; stel:	mtc1 $4,$f12
    812 ; stel:	mtc1 $5,$f13
    813 ; stel:	mtc1 $6,$f14
    814 ; stel:	mtc1 $7,$f15
    815 ; stel:	lui  $25,%hi(v_df_df)
    816 ; stel:	addiu  $25,$25,%lo(v_df_df)
    817 ; stel:	jr $25
    818 ; stel:	.end	__call_stub_fp_v_df_df
    819 
    820 declare float @sf_v() #1
    821 ; stel: .section	.mips16.call.fp.sf_v,"ax",@progbits
    822 ; stel:	.ent	__call_stub_fp_sf_v
    823 ; stel: move $18, $31
    824 ; stel: jal sf_v
    825 ; stel:	mfc1 $2,$f0
    826 ; stel:	jr $18
    827 ; stel:	.end	__call_stub_fp_sf_v
    828 
    829 declare float @sf_sf(float) #1
    830 ; stel: .section	.mips16.call.fp.sf_sf,"ax",@progbits
    831 ; stel:	.ent	__call_stub_fp_sf_sf
    832 ; stel: mtc1 $4,$f12
    833 ; stel: move $18, $31
    834 ; stel: jal sf_sf
    835 ; stel:	mfc1 $2,$f0
    836 ; stel:	jr $18
    837 ; stel:	.end	__call_stub_fp_sf_sf
    838 
    839 declare float @sf_df(double) #1
    840 ; stel: .section	.mips16.call.fp.sf_df,"ax",@progbits
    841 ; stel:	.ent	__call_stub_fp_sf_df
    842 ; stel: mtc1 $4,$f12
    843 ; stel: mtc1 $5,$f13
    844 ; stel: move $18, $31
    845 ; stel: jal sf_df
    846 ; stel:	mfc1 $2,$f0
    847 ; stel:	jr $18
    848 ; stel:	.end	__call_stub_fp_sf_df
    849 
    850 declare float @sf_sf_sf(float, float) #1
    851 ; stel: .section	.mips16.call.fp.sf_sf_sf,"ax",@progbits
    852 ; stel:	.ent	__call_stub_fp_sf_sf_sf
    853 ; stel: mtc1 $4,$f12
    854 ; stel: mtc1 $5,$f14
    855 ; stel: move $18, $31
    856 ; stel: jal sf_sf_sf
    857 ; stel:	mfc1 $2,$f0
    858 ; stel:	jr $18
    859 ; stel:	.end	__call_stub_fp_sf_sf_sf
    860 
    861 declare float @sf_sf_df(float, double) #1
    862 ; stel: .section	.mips16.call.fp.sf_sf_df,"ax",@progbits
    863 ; stel:	.ent	__call_stub_fp_sf_sf_df
    864 ; stel: mtc1 $4,$f12
    865 ; stel: mtc1 $6,$f14
    866 ; stel: mtc1 $7,$f15
    867 ; stel: move $18, $31
    868 ; stel: jal sf_sf_df
    869 ; stel:	mfc1 $2,$f0
    870 ; stel:	jr $18
    871 ; stel:	.end	__call_stub_fp_sf_sf_df
    872 
    873 declare float @sf_df_sf(double, float) #1
    874 ; stel: .section	.mips16.call.fp.sf_df_sf,"ax",@progbits
    875 ; stel:	.ent	__call_stub_fp_sf_df_sf
    876 ; stel: mtc1 $4,$f12
    877 ; stel: mtc1 $5,$f13
    878 ; stel: mtc1 $6,$f14
    879 ; stel: move $18, $31
    880 ; stel: jal sf_df_sf
    881 ; stel:	mfc1 $2,$f0
    882 ; stel:	jr $18
    883 ; stel:	.end	__call_stub_fp_sf_df_sf
    884 
    885 declare float @sf_df_df(double, double) #1
    886 ; stel: .section	.mips16.call.fp.sf_df_df,"ax",@progbits
    887 ; stel:	.ent	__call_stub_fp_sf_df_df
    888 ; stel: mtc1 $4,$f12
    889 ; stel: mtc1 $5,$f13
    890 ; stel: mtc1 $6,$f14
    891 ; stel: mtc1 $7,$f15
    892 ; stel: move $18, $31
    893 ; stel: jal sf_df_df
    894 ; stel:	mfc1 $2,$f0
    895 ; stel:	jr $18
    896 ; stel:	.end	__call_stub_fp_sf_df_df
    897 
    898 declare double @df_v() #1
    899 ; stel: .section	.mips16.call.fp.df_v,"ax",@progbits
    900 ; stel:	.ent	__call_stub_fp_df_v
    901 ; stel: move $18, $31
    902 ; stel: jal df_v
    903 ; stel:	mfc1 $2,$f0
    904 ; stel:	mfc1 $3,$f1
    905 ; stel:	jr $18
    906 ; stel:	.end	__call_stub_fp_df_v
    907 
    908 declare double @df_sf(float) #1
    909 ; stel: .section	.mips16.call.fp.df_sf,"ax",@progbits
    910 ; stel:	.ent	__call_stub_fp_df_sf
    911 ; stel: mtc1 $4,$f12
    912 ; stel: move $18, $31
    913 ; stel: jal df_sf
    914 ; stel:	mfc1 $2,$f0
    915 ; stel:	mfc1 $3,$f1
    916 ; stel:	jr $18
    917 ; stel:	.end	__call_stub_fp_df_sf
    918 
    919 declare double @df_df(double) #1
    920 ; stel: .section	.mips16.call.fp.df_df,"ax",@progbits
    921 ; stel:	.ent	__call_stub_fp_df_df
    922 ; stel: mtc1 $4,$f12
    923 ; stel: mtc1 $5,$f13
    924 ; stel: move $18, $31
    925 ; stel: jal df_df
    926 ; stel:	mfc1 $2,$f0
    927 ; stel:	mfc1 $3,$f1
    928 ; stel:	jr $18
    929 ; stel:	.end	__call_stub_fp_df_df
    930 
    931 declare double @df_sf_sf(float, float) #1
    932 ; stel: .section	.mips16.call.fp.df_sf_sf,"ax",@progbits
    933 ; stel:	.ent	__call_stub_fp_df_sf_sf
    934 ; stel: mtc1 $4,$f12
    935 ; stel: mtc1 $5,$f14
    936 ; stel: move $18, $31
    937 ; stel: jal df_sf_sf
    938 ; stel:	mfc1 $2,$f0
    939 ; stel:	mfc1 $3,$f1
    940 ; stel:	jr $18
    941 ; stel:	.end	__call_stub_fp_df_sf_sf
    942 
    943 declare double @df_sf_df(float, double) #1
    944 ; stel: .section	.mips16.call.fp.df_sf_df,"ax",@progbits
    945 ; stel:	.ent	__call_stub_fp_df_sf_df
    946 ; stel: mtc1 $4,$f12
    947 ; stel: mtc1 $6,$f14
    948 ; stel: mtc1 $7,$f15
    949 ; stel: move $18, $31
    950 ; stel: jal df_sf_df
    951 ; stel:	mfc1 $2,$f0
    952 ; stel:	mfc1 $3,$f1
    953 ; stel:	jr $18
    954 ; stel:	.end	__call_stub_fp_df_sf_df
    955 
    956 declare double @df_df_sf(double, float) #1
    957 ; stel: .section	.mips16.call.fp.df_df_sf,"ax",@progbits
    958 ; stel:	.ent	__call_stub_fp_df_df_sf
    959 ; stel: mtc1 $4,$f12
    960 ; stel: mtc1 $5,$f13
    961 ; stel: mtc1 $6,$f14
    962 ; stel: move $18, $31
    963 ; stel: jal df_df_sf
    964 ; stel:	mfc1 $2,$f0
    965 ; stel:	mfc1 $3,$f1
    966 ; stel:	jr $18
    967 ; stel:	.end	__call_stub_fp_df_df_sf
    968 
    969 declare double @df_df_df(double, double) #1
    970 ; stel: .section	.mips16.call.fp.df_df_df,"ax",@progbits
    971 ; stel:	.ent	__call_stub_fp_df_df_df
    972 ; stel: mtc1 $4,$f12
    973 ; stel: mtc1 $5,$f13
    974 ; stel: mtc1 $6,$f14
    975 ; stel: mtc1 $7,$f15
    976 ; stel: move $18, $31
    977 ; stel: jal df_df_df
    978 ; stel:	mfc1 $2,$f0
    979 ; stel:	mfc1 $3,$f1
    980 ; stel:	jr $18
    981 ; stel:	.end	__call_stub_fp_df_df_df
    982 
    983 declare { float, float } @sc_v() #1
    984 ; stel: .section	.mips16.call.fp.sc_v,"ax",@progbits
    985 ; stel:	.ent	__call_stub_fp_sc_v
    986 ; stel: move $18, $31
    987 ; stel: jal sc_v
    988 ; stel:	mfc1 $2,$f0
    989 ; stel:	mfc1 $3,$f2
    990 ; stel:	jr $18
    991 ; stel:	.end	__call_stub_fp_sc_v
    992 
    993 declare { float, float } @sc_sf(float) #1
    994 ; stel: .section	.mips16.call.fp.sc_sf,"ax",@progbits
    995 ; stel:	.ent	__call_stub_fp_sc_sf
    996 ; stel: mtc1 $4,$f12
    997 ; stel: move $18, $31
    998 ; stel: jal sc_sf
    999 ; stel:	mfc1 $2,$f0
   1000 ; stel:	mfc1 $3,$f2
   1001 ; stel:	jr $18
   1002 ; stel:	.end	__call_stub_fp_sc_sf
   1003 
   1004 declare { double, double } @dc_v() #1
   1005 ; stel: .section	.mips16.call.fp.dc_v,"ax",@progbits
   1006 ; stel:	.ent	__call_stub_fp_dc_v
   1007 ; stel: move $18, $31
   1008 ; stel: jal dc_v
   1009 ; stel:	mfc1 $4,$f2
   1010 ; stel:	mfc1 $5,$f3
   1011 ; stel:	mfc1 $2,$f0
   1012 ; stel:	mfc1 $3,$f1
   1013 ; stel:	jr $18
   1014 ; stel:	.end	__call_stub_fp_dc_v
   1015 
   1016 declare { double, double } @dc_sf(float) #1
   1017 ; stel: .section	.mips16.call.fp.dc_sf,"ax",@progbits
   1018 ; stel:	.ent	__call_stub_fp_dc_sf
   1019 ; stel: mtc1 $4,$f12
   1020 ; stel: move $18, $31
   1021 ; stel: jal dc_sf
   1022 ; stel:	mfc1 $4,$f2
   1023 ; stel:	mfc1 $5,$f3
   1024 ; stel:	mfc1 $2,$f0
   1025 ; stel:	mfc1 $3,$f1
   1026 ; stel:	jr $18
   1027 ; stel:	.end	__call_stub_fp_dc_sf
   1028 
   1029 attributes #0 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "unsafe-fp-math"="false" "use-soft-float"="false" }
   1030 attributes #1 = { "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "unsafe-fp-math"="false" "use-soft-float"="false" }
   1031