1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 2<html> 3<!-- This file documents the GNU Assembler "as". 4 5Copyright (C) 1991-2021 Free Software Foundation, Inc. 6 7Permission is granted to copy, distribute and/or modify this document 8under the terms of the GNU Free Documentation License, Version 1.3 9or any later version published by the Free Software Foundation; 10with no Invariant Sections, with no Front-Cover Texts, and with no 11Back-Cover Texts. A copy of the license is included in the 12section entitled "GNU Free Documentation License". 13 --> 14<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> 15<head> 16<title>Using as: MIPS NaN Encodings</title> 17 18<meta name="description" content="Using as: MIPS NaN Encodings"> 19<meta name="keywords" content="Using as: MIPS NaN Encodings"> 20<meta name="resource-type" content="document"> 21<meta name="distribution" content="global"> 22<meta name="Generator" content="makeinfo"> 23<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 24<link href="index.html#Top" rel="start" title="Top"> 25<link href="AS-Index.html#AS-Index" rel="index" title="AS Index"> 26<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> 27<link href="MIPS_002dDependent.html#MIPS_002dDependent" rel="up" title="MIPS-Dependent"> 28<link href="MIPS-Option-Stack.html#MIPS-Option-Stack" rel="next" title="MIPS Option Stack"> 29<link href="MIPS-FP-ABI-Compatibility.html#MIPS-FP-ABI-Compatibility" rel="previous" title="MIPS FP ABI Compatibility"> 30<style type="text/css"> 31<!-- 32a.summary-letter {text-decoration: none} 33blockquote.smallquotation {font-size: smaller} 34div.display {margin-left: 3.2em} 35div.example {margin-left: 3.2em} 36div.indentedblock {margin-left: 3.2em} 37div.lisp {margin-left: 3.2em} 38div.smalldisplay {margin-left: 3.2em} 39div.smallexample {margin-left: 3.2em} 40div.smallindentedblock {margin-left: 3.2em; font-size: smaller} 41div.smalllisp {margin-left: 3.2em} 42kbd {font-style:oblique} 43pre.display {font-family: inherit} 44pre.format {font-family: inherit} 45pre.menu-comment {font-family: serif} 46pre.menu-preformatted {font-family: serif} 47pre.smalldisplay {font-family: inherit; font-size: smaller} 48pre.smallexample {font-size: smaller} 49pre.smallformat {font-family: inherit; font-size: smaller} 50pre.smalllisp {font-size: smaller} 51span.nocodebreak {white-space:nowrap} 52span.nolinebreak {white-space:nowrap} 53span.roman {font-family:serif; font-weight:normal} 54span.sansserif {font-family:sans-serif; font-weight:normal} 55ul.no-bullet {list-style: none} 56--> 57</style> 58 59 60</head> 61 62<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> 63<a name="MIPS-NaN-Encodings"></a> 64<div class="header"> 65<p> 66Next: <a href="MIPS-Option-Stack.html#MIPS-Option-Stack" accesskey="n" rel="next">MIPS Option Stack</a>, Previous: <a href="MIPS-FP-ABIs.html#MIPS-FP-ABIs" accesskey="p" rel="previous">MIPS FP ABIs</a>, Up: <a href="MIPS_002dDependent.html#MIPS_002dDependent" accesskey="u" rel="up">MIPS-Dependent</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="AS-Index.html#AS-Index" title="Index" rel="index">Index</a>]</p> 67</div> 68<hr> 69<a name="Directives-to-record-which-NaN-encoding-is-being-used"></a> 70<h4 class="subsection">9.27.10 Directives to record which NaN encoding is being used</h4> 71 72<a name="index-MIPS-IEEE-754-NaN-data-encoding-selection"></a> 73<a name="index-_002enan-directive_002c-MIPS"></a> 74<p>The IEEE 754 floating-point standard defines two types of not-a-number 75(NaN) data: “signalling” NaNs and “quiet” NaNs. The original version 76of the standard did not specify how these two types should be 77distinguished. Most implementations followed the i387 model, in which 78the first bit of the significand is set for quiet NaNs and clear for 79signalling NaNs. However, the original MIPS implementation assigned the 80opposite meaning to the bit, so that it was set for signalling NaNs and 81clear for quiet NaNs. 82</p> 83<p>The 2008 revision of the standard formally suggested the i387 choice 84and as from Sep 2012 the current release of the MIPS architecture 85therefore optionally supports that form. Code that uses one NaN encoding 86would usually be incompatible with code that uses the other NaN encoding, 87so MIPS ELF objects have a flag (<code>EF_MIPS_NAN2008</code>) to record which 88encoding is being used. 89</p> 90<p>Assembly files can use the <code>.nan</code> directive to select between the 91two encodings. ‘<samp>.nan 2008</samp>’ says that the assembly file uses the 92IEEE 754-2008 encoding while ‘<samp>.nan legacy</samp>’ says that the file uses 93the original MIPS encoding. If several <code>.nan</code> directives are given, 94the final setting is the one that is used. 95</p> 96<p>The command-line options <samp>-mnan=legacy</samp> and <samp>-mnan=2008</samp> 97can be used instead of ‘<samp>.nan legacy</samp>’ and ‘<samp>.nan 2008</samp>’ 98respectively. However, any <code>.nan</code> directive overrides the 99command-line setting. 100</p> 101<p>‘<samp>.nan legacy</samp>’ is the default if no <code>.nan</code> directive or 102<samp>-mnan</samp> option is given. 103</p> 104<p>Note that <small>GNU</small> <code>as</code> does not produce NaNs itself and 105therefore these directives do not affect code generation. They simply 106control the setting of the <code>EF_MIPS_NAN2008</code> flag. 107</p> 108<p>Traditional MIPS assemblers do not support these directives. 109</p> 110<hr> 111<div class="header"> 112<p> 113Next: <a href="MIPS-Option-Stack.html#MIPS-Option-Stack" accesskey="n" rel="next">MIPS Option Stack</a>, Previous: <a href="MIPS-FP-ABIs.html#MIPS-FP-ABIs" accesskey="p" rel="previous">MIPS FP ABIs</a>, Up: <a href="MIPS_002dDependent.html#MIPS_002dDependent" accesskey="u" rel="up">MIPS-Dependent</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="AS-Index.html#AS-Index" title="Index" rel="index">Index</a>]</p> 114</div> 115 116 117 118</body> 119</html> 120