Home | History | Annotate | Download | only in reader_tests
      1 ; Test handling of constants in function blocks.
      2 
      3 ; RUN: %p2i -i %s --insts | FileCheck %s
      4 ; RUN:   %p2i -i %s --args -notranslate -timing | \
      5 ; RUN:   FileCheck --check-prefix=NOIR %s
      6 
      7 define internal void @TestIntegers() {
      8 entry:
      9 ; CHECK: entry:
     10 
     11   ; Test various sized integers
     12   %v0 = or i1 true, false
     13 ; CHECK-NEXT:   %v0 = or i1 true, false
     14 
     15   %v1 = add i8 0, 0
     16 ; CHECK-NEXT:   %v1 = add i8 0, 0
     17 
     18   %v2 = add i8 5, 0
     19 ; CHECK-NEXT:   %v2 = add i8 5, 0
     20 
     21   %v3 = add i8 -5, 0
     22 ; CHECK-NEXT:   %v3 = add i8 -5, 0
     23 
     24   %v4 = and i16 10, 0
     25 ; CHECK-NEXT:   %v4 = and i16 10, 0
     26 
     27   %v5 = add i16 -10, 0
     28 ; CHECK-NEXT:   %v5 = add i16 -10, 0
     29 
     30   %v6 = add i32 20, 0
     31 ; CHECK-NEXT:   %v6 = add i32 20, 0
     32 
     33   %v7 = add i32 -20, 0
     34 ; CHECK-NEXT:   %v7 = add i32 -20, 0
     35 
     36   %v8 = add i64 30, 0
     37 ; CHECK-NEXT:   %v8 = add i64 30, 0
     38 
     39   %v9 = add i64 -30, 0
     40 ; CHECK-NEXT:   %v9 = add i64 -30, 0
     41 
     42   ; Test undefined integer values.
     43   %v10 = xor i1 undef, false
     44 ; CHECK-NEXT:   %v10 = xor i1 undef, false
     45 
     46   %v11 = add i8 undef, 0
     47 ; CHECK-NEXT:   %v11 = add i8 undef, 0
     48 
     49   %v12 = add i16 undef, 0
     50 ; CHECK-NEXT:   %v12 = add i16 undef, 0
     51 
     52   %v13 = add i32 undef, 0
     53 ; CHECK-NEXT:   %v13 = add i32 undef, 0
     54 
     55   %v14 = add i64 undef, 0
     56 ; CHECK-NEXT:   %v14 = add i64 undef, 0
     57 
     58   ret void
     59 ; CHECK-NEXT:   ret void
     60 
     61 }
     62 
     63 define internal void @TestFloats() {
     64 entry:
     65 ; CHECK: entry:
     66 
     67   ; Test float and double constants
     68   %v0 = fadd float 1.0, 0.0
     69 ; CHECK-NEXT:   %v0 = fadd float 1.000000e+00, 0.000000e+00
     70 
     71   %v1 = fadd double 1.0, 0.0
     72 ; CHECK-NEXT:   %v1 = fadd double 1.000000e+00, 0.000000e+00
     73 
     74   %v2 = fsub float 7.000000e+00, 8.000000e+00
     75 ; CHECK-NEXT:   %v2 = fsub float 7.000000e+00, 8.000000e+00
     76 
     77   %v3 = fsub double 5.000000e+00, 6.000000e+00
     78 ; CHECK-NEXT:   %v3 = fsub double 5.000000e+00, 6.000000e+00
     79 
     80   ; Test undefined float and double.
     81   %v4 = fadd float undef, 0.0
     82 ; CHECK-NEXT:   %v4 = fadd float undef, 0.000000e+00
     83 
     84   %v5 = fsub double undef, 6.000000e+00
     85 ; CHECK-NEXT:   %v5 = fsub double undef, 6.000000e+00
     86 
     87   ; Test special floating point constants. Note: LLVM assembly appears
     88   ; to use 64-bit integer constants for both float and double.
     89 
     90   ; Generated from NAN in <math.h>
     91   %v6 = fadd float 0x7FF8000000000000, 0.0
     92 ; CHECK-NEXT:   %v6 = fadd float nan, 0.000000e+00
     93 
     94   ; Generated from -NAN in <math.h>
     95   %v7 = fadd float 0xFFF8000000000000, 0.0
     96 ; CHECK-NEXT:   %v7 = fadd float -nan, 0.000000e+00
     97 
     98   ; Generated from INFINITY in <math.h>
     99   %v8 = fadd float 0x7FF0000000000000, 0.0
    100 ; CHECK-NEXT:   %v8 = fadd float inf, 0.000000e+00
    101 
    102   ; Generated from -INFINITY in <math.h>
    103   %v9 = fadd float 0xFFF0000000000000, 0.0
    104 ; CHECK-NEXT:   %v9 = fadd float -inf, 0.000000e+00
    105 
    106   ; Generated from FLT_MIN in <float.h>
    107   %v10 = fadd float 0x381000000000000000, 0.0
    108 ; CHECK-NEXT:   %v10 = fadd float 0.000000e+00, 0.000000e+00
    109 
    110   ; Generated from -FLT_MIN in <float.h>
    111   %v11 = fadd float 0xb81000000000000000, 0.0
    112 ; CHECK-NEXT:   %v11 = fadd float 0.000000e+00, 0.000000e+00
    113 
    114   ; Generated from FLT_MAX in <float.h>
    115   %v12 = fadd float 340282346638528859811704183484516925440.000000, 0.0
    116 ; CHECK-NEXT:   %v12 = fadd float 3.402823e+38, 0.000000e+00
    117 
    118   ; Generated from -FLT_MAX in <float.h>
    119   %v13 = fadd float -340282346638528859811704183484516925440.000000, 0.0
    120 ; CHECK-NEXT:   %v13 = fadd float -3.402823e+38, 0.000000e+00
    121 
    122   ; Generated from NAN in <math.h>
    123   %v14 = fadd double 0x7FF8000000000000, 0.0
    124 ; CHECK-NEXT:   %v14 = fadd double nan, 0.000000e+00
    125 
    126   ; Generated from -NAN in <math.h>
    127   %v15 = fadd double 0xFFF8000000000000, 0.0
    128 ; CHECK-NEXT:   %v15 = fadd double -nan, 0.000000e+00
    129 
    130   ; Generated from INFINITY in <math.h>
    131   %v16 = fadd double 0x7FF0000000000000, 0.0
    132 ; CHECK-NEXT:   %v16 = fadd double inf, 0.000000e+00
    133 
    134   ; Generated from -INFINITY in <math.h>
    135   %v17 = fadd double 0xFFF0000000000000, 0.0
    136 ; CHECK-NEXT:   %v17 = fadd double -inf, 0.000000e+00
    137 
    138   ; Generated from DBL_MIN in <float.h>
    139   %v18 = fadd double 0x0010000000000000, 0.0
    140 ; CHECK-NEXT:   %v18 = fadd double 2.225074e-308, 0.000000e+00
    141 
    142   ; Generated from -DBL_MIN in <float.h>
    143   %v19 = fadd double 0x8010000000000000, 0.0
    144 ; CHECK-NEXT:   %v19 = fadd double -2.225074e-308, 0.000000e+00
    145 
    146   ; Generated from DBL_MAX in <float.h>
    147   %v20 = fadd double 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000, 0.0
    148 ; CHECK-NEXT:   %v20 = fadd double 1.797693e+308, 0.000000e+00
    149 
    150   ; Generated from -DBL_MAX in <float.h>
    151   %v21 = fadd double -179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000, 0.0
    152 ; CHECK-NEXT:   %v21 = fadd double -1.797693e+308, 0.000000e+00
    153 
    154   ret void
    155 ; CHECK-NEXT:   ret void
    156 }
    157 
    158 ; NOIR: Total across all functions
    159