Home | History | Annotate | Download | only in ia64
      1 print ".text\n\t.type _start,@", "function\n_start:\n\n";
      2 
      3 @sf = ( "", ".s0", ".s1", ".s2", ".s3" );
      4 
      5 # Arithmetic
      6 
      7 foreach $i ( "fma", "fma.s", "fma.d", "fpma",
      8 	     "fms", "fms.s", "fms.d", "fpms",
      9 	     "fnma", "fnma.s", "fnma.d", "fpnma" ) {
     10   foreach $s (@sf) {
     11     print "\t${i}${s} f4 = f5, f6, f7\n";
     12   }
     13   print "\n";
     14 }
     15 
     16 foreach $i ( "fmpy", "fmpy.s", "fmpy.d", "fpmpy",
     17 	     "fadd", "fadd.s", "fadd.d",
     18 	     "fsub", "fsub.s", "fsub.d",
     19 	     "fnmpy", "fnmpy.s", "fnmpy.d", "fpnmpy" ) {
     20   foreach $s (@sf) {
     21     print "\t${i}${s} f4 = f5, f6\n";
     22   }
     23   print "\n";
     24 }
     25 
     26 foreach $i ( "fnorm", "fnorm.s", "fnorm.d" ) { 
     27   foreach $s (@sf) {
     28     print "\t${i}${s} f4 = f5\n";
     29   }
     30   print "\n";
     31 }
     32 
     33 # Fixed Point Multiply Add
     34 
     35 foreach $s ( ".l", ".lu", ".h", ".hu" ) {
     36   print "\txma${s} f4 = f5, f6, f7\n";
     37 }
     38 print "\n";
     39 
     40 foreach $s ( ".l", ".lu", ".h", ".hu" ) {
     41   print "\txmpy${s} f4 = f5, f6\n";
     42 }
     43 print "\n";
     44 
     45 # Parallel Floating Point Select
     46 
     47 print "\tfselect f4 = f5, f6, f7\n\n";
     48 
     49 # Floating Point Compare
     50 
     51 @cmp = ( ".eq", ".lt", ".le", ".unord", ".gt", ".ge", ".neq", ".nlt", 
     52 	 ".nle", ".ngt", ".nge", ".ord" );
     53 
     54 @fctype = ( "", ".unc" );
     55 
     56 foreach $c (@cmp) {
     57   foreach $u (@fctype) {
     58     foreach $s (@sf) {
     59       print "\tfcmp${c}${u}${s} p3, p4 = f4, f5\n";
     60     }
     61   }
     62   print "\n";
     63 }
     64 
     65 # Floating Point Class
     66 
     67 foreach $u (@fctype) {
     68   foreach $c ( '@nat', '@qnan', '@snan', '@pos', '@neg', '@unorm',
     69 	       '@norm', '@inf', '0x1ff' ) {
     70     foreach $m ( ".m", ".nm" ) {
     71       print "\tfclass${m}${u} p3, p4 = f4, $c\n";
     72     }
     73   }
     74   print "\n";
     75 }
     76 
     77 # Approximation
     78 
     79 foreach $i ( "frcpa", "fprcpa" ) {
     80   foreach $s (@sf) {
     81     print "\t${i}${s} f4, p5 = f6, f7\n";
     82   }
     83   print "\n";
     84 }
     85 
     86 foreach $i ( "frsqrta", "fprsqrta" ) {
     87   foreach $s (@sf) {
     88     print "\t${i}${s} f4, p5 = f6\n";
     89   }
     90   print "\n";
     91 }
     92 
     93 # Min/Max
     94 
     95 foreach $i ( "fmin", "fmax", "famin", "famax",
     96 	     "fpmin", "fpmax", "fpamin", "fpamax" ) {
     97   foreach $s (@sf) {
     98     print "\t${i}${s} f4 = f5, f6\n";
     99   }
    100   print "\n";
    101 }
    102 
    103 # Parallel Compare
    104 
    105 foreach $c (@cmp) {
    106   foreach $s (@sf) {
    107     print "\tfpcmp${c}${s} f3 = f4, f5\n";
    108   }
    109   print "\n";
    110 }
    111 
    112 # Merge and Logical
    113 
    114 foreach $i ( "fmerge.s", "fmerge.ns", "fmerge.se", "fmix.lr", "fmix.r",
    115 	     "fmix.l", "fsxt.l", "fpack", "fswap", "fswap.nl", "fswap.nr",
    116 	     "fand", "fandcm", "for", "fxor", "fpmerge.s", "fpmerge.ns",
    117 	     "fpmerge.se" ) {
    118   print "\t$i f4 = f5, f6\n";
    119 }
    120 print "\n";
    121 
    122 foreach $i ( "fabs", "fneg", "fnegabs", "fpabs", "fpneg", "fpnegabs" ) {
    123   print "\t$i f4 = f5\n";
    124 }
    125 print "\n";
    126 
    127 # Convert Floating to Fixed
    128 
    129 foreach $b ( "fcvt", "fpcvt" ) {
    130   foreach $f ( ".fx", ".fxu" ) {
    131     foreach $t ( "", ".trunc" ) {
    132       foreach $s (@sf) {
    133 	print "\t${b}${f}${t}${s} f4 = f5\n";
    134       }
    135       print "\n";
    136     }
    137   }
    138 }
    139 
    140 # Convert Fixed to Floating
    141 
    142 foreach $e ( ".xf", ".xuf" ) {
    143   print "\tfcvt$e f4 = f5\n";
    144 }
    145 print "\n";
    146 
    147 # Set Controls
    148 
    149 foreach $s (@sf) {
    150   print "\tfsetc$s 0, 0\n";
    151   print "\tfsetc$s 0x3f, 0x3f\n";
    152 }
    153 print "\n";
    154 
    155 # Clear flags
    156 
    157 foreach $s (@sf) {
    158   print "\tfclrf$s\n";
    159 }
    160 print "\n";
    161 
    162 # Check flags
    163 
    164 foreach $s (@sf) {
    165   print "\tfchkf$s _start\n";
    166 }
    167 print "\n";
    168 
    169 # Misc
    170 
    171 print "\tbreak.f 0\n";
    172 print "\tnop.f 0;;\n";
    173 print "\n";
    174 
    175