2024-06-06 20:28:06 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< html  xmlns = "http://www.w3.org/1999/xhtml"  lang = "en-US" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< head > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< meta  http-equiv = "Content-Type"  content = "text/xhtml;charset=UTF-8" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< meta  http-equiv = "X-UA-Compatible"  content = "IE=11" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< meta  name = "generator"  content = "Doxygen 1.10.0" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< meta  name = "viewport"  content = "width=device-width, initial-scale=1" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< title > MLX: mlx/backend/metal/kernels/bf16.h Source File< / title > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< link  href = "tabs.css"  rel = "stylesheet"  type = "text/css" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< script  type = "text/javascript"  src = "jquery.js" > < / script > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< script  type = "text/javascript"  src = "dynsections.js" > < / script > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< script  type = "text/javascript"  src = "clipboard.js" > < / script > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< script  type = "text/javascript"  src = "cookie.js" > < / script > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< link  href = "search/search.css"  rel = "stylesheet"  type = "text/css" / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< script  type = "text/javascript"  src = "search/searchdata.js" > < / script > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< script  type = "text/javascript"  src = "search/search.js" > < / script > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< link  href = "doxygen.css"  rel = "stylesheet"  type = "text/css"  / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / head > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< body > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  id = "top" > <!--  do not remove this div, it is closed by doxygen!  --> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  id = "titlearea" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< table  cellspacing = "0"  cellpadding = "0" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 < tbody > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 < tr  id = "projectrow" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  < td  id = "projectalign" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   < div  id = "projectname" > MLX
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  < / td > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 < / tr > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 < / tbody > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / table > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								<!--  end header part  --> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								<!--  Generated by Doxygen 1.10.0  --> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< script  type = "text/javascript" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699& dn=expat.txt MIT */
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								var searchBox = new SearchBox("searchBox", "search/",'.html');
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/* @license-end */
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / script > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< script  type = "text/javascript"  src = "menudata.js" > < / script > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< script  type = "text/javascript"  src = "menu.js" > < / script > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< script  type = "text/javascript" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699& dn=expat.txt MIT */
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								$(function() {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  initMenu('',true,false,'search.php','Search');
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  $(function() { init_search(); });
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								});
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/* @license-end */
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / script > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  id = "main-nav" > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< script  type = "text/javascript" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699& dn=expat.txt MIT */
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								$(function() { codefold.init(0); });
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/* @license-end */
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / script > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								<!--  window showing the filter options  --> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  id = "MSearchSelectWindow" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     onmouseover="return searchBox.OnSearchSelectShow()"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     onmouseout="return searchBox.OnSearchSelectHide()"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     onkeydown="return searchBox.OnSearchSelectKey(event)">
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								<!--  iframe showing the search results (closed by default)  --> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  id = "MSearchResultsWindow" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  id = "MSearchResults" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "SRPage" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  id = "SRIndex" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  id = "SRResults" > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "SRStatus"  id = "Loading" > Loading...< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "SRStatus"  id = "Searching" > Searching...< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "SRStatus"  id = "NoMatches" > No Matches< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  id = "nav-path"  class = "navpath" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  < ul > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< li  class = "navelem" > < a  class = "el"  href = "dir_938ab0ecf10b8b860ff766c820f665fd.html" > mlx< / a > < / li > < li  class = "navelem" > < a  class = "el"  href = "dir_1d446c9bd3c99228254c9484e0bc5c06.html" > backend< / a > < / li > < li  class = "navelem" > < a  class = "el"  href = "dir_d0c977ea65824390717cdb7efc36c157.html" > metal< / a > < / li > < li  class = "navelem" > < a  class = "el"  href = "dir_70a37effa88bcbd6b791977fa1e64356.html" > kernels< / a > < / li >   < / ul > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / div > <!--  top  --> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "header" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  < div  class = "headertitle" > < div  class = "title" > bf16.h< / div > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / div > <!-- header --> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "contents" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< a  href = "backend_2metal_2kernels_2bf16_8h.html" > Go to the documentation of this file.< / a > < div  class = "fragment" > < div  class = "line" > < a  id = "l00001"  name = "l00001" > < / a > < span  class = "lineno" >     1< / span > < span  class = "comment" > // Copyright © 2023 Apple Inc.< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00002"  name = "l00002" > < / a > < span  class = "lineno" >     2< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00003"  name = "l00003" > < / a > < span  class = "lineno" >     3< / span > < span  class = "preprocessor" > #pragma once< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00004"  name = "l00004" > < / a > < span  class = "lineno" >     4< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00005"  name = "l00005" > < / a > < span  class = "lineno" >     5< / span > < span  class = "preprocessor" > #include < metal_stdlib> < / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00006"  name = "l00006" > < / a > < span  class = "lineno" >     6< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00007"  name = "l00007" > < / a > < span  class = "lineno" >     7< / span > < span  class = "keyword" > using namespace < / span > < a  class = "code hl_namespace"  href = "namespacemetal.html" > metal< / a > ;< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00008"  name = "l00008" > < / a > < span  class = "lineno" >     8< / span >  < / div > 
							 
						 
					
						
							
								
									
										
										
										
											2024-07-11 15:32:08 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00009"  name = "l00009" > < / a > < span  class = "lineno" >     9< / span > < span  class = "preprocessor" > #if (MLX_METAL_VERSION > = 310) || (__METAL_VERSION__ > = 310)< / span > < / div > 
							 
						 
					
						
							
								
									
										
										
										
											2024-06-06 20:28:06 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00010"  name = "l00010" > < / a > < span  class = "lineno" >    10< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00011"  name = "l00011" > < / a > < span  class = "lineno" >    11< / span > < span  class = "keyword" > typedef< / span >  bfloat < a  class = "code hl_typedef"  href = "backend_2metal_2kernels_2bf16_8h.html#a7782de82393104dd4ad754ce3b316e82" > bfloat16_t< / a > ;< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00012"  name = "l00012" > < / a > < span  class = "lineno" >    12< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00013"  name = "l00013" > < / a > < span  class = "lineno" >    13< / span > < span  class = "preprocessor" > #else< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00014"  name = "l00014" > < / a > < span  class = "lineno" >    14< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00016"  name = "l00016" > < / a > < span  class = "lineno" >    16< / span > < span  class = "comment" > // Helpers< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00018"  name = "l00018" > < / a > < span  class = "lineno" >    18< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "foldopen"  id = "foldopen00019"  data-start = "{"  data-end = "}" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00019"  name = "l00019" > < / a > < span  class = "lineno" > < a  class = "line"  href = "backend_2metal_2kernels_2bf16_8h.html#a31ce5e8e860295fa236e0d4b0befeae1" >    19< / a > < / span > < span  class = "keyword" > constexpr< / span >  METAL_FUNC uint16_t < a  class = "code hl_function"  href = "backend_2metal_2kernels_2bf16_8h.html#a31ce5e8e860295fa236e0d4b0befeae1" > float_to_bfloat_bits< / a > (< span  class = "keywordtype" > float< / span >  x) {< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00020"  name = "l00020" > < / a > < span  class = "lineno" >    20< / span >   < span  class = "comment" > // Check for nan< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00021"  name = "l00021" > < / a > < span  class = "lineno" >    21< / span >   < span  class = "keywordflow" > if< / span >  ((as_type< uint32_t> (x) &  ~_fp_encoding_traits< float> ::sign_mask) > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00022"  name = "l00022" > < / a > < span  class = "lineno" >    22< / span >       _fp_encoding_traits< float> ::inf_mask) {< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00023"  name = "l00023" > < / a > < span  class = "lineno" >    23< / span >     < span  class = "keywordflow" > return< / span >  uint16_t(as_type< uint32_t> (0x7FC0));< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00024"  name = "l00024" > < / a > < span  class = "lineno" >    24< / span >   }< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00025"  name = "l00025" > < / a > < span  class = "lineno" >    25< / span >   < span  class = "comment" > // Take bits< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00026"  name = "l00026" > < / a > < span  class = "lineno" >    26< / span >   uint32_t float_bits = as_type< uint32_t> (x);< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00027"  name = "l00027" > < / a > < span  class = "lineno" >    27< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00028"  name = "l00028" > < / a > < span  class = "lineno" >    28< / span >   < span  class = "comment" > // Round to nearest even< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00029"  name = "l00029" > < / a > < span  class = "lineno" >    29< / span >   float_bits += ((float_bits > >  16) &  1) + as_type< uint32_t> (0x7FFF);< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00030"  name = "l00030" > < / a > < span  class = "lineno" >    30< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00031"  name = "l00031" > < / a > < span  class = "lineno" >    31< / span >   < span  class = "comment" > // Take upper 16 bits< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00032"  name = "l00032" > < / a > < span  class = "lineno" >    32< / span >   < span  class = "keywordflow" > return< / span >  float_bits > >  16;< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00033"  name = "l00033" > < / a > < span  class = "lineno" >    33< / span > }< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00034"  name = "l00034" > < / a > < span  class = "lineno" >    34< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "foldopen"  id = "foldopen00035"  data-start = "{"  data-end = "}" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00035"  name = "l00035" > < / a > < span  class = "lineno" > < a  class = "line"  href = "backend_2metal_2kernels_2bf16_8h.html#a3b33ae338dc4f223d0f3c748de07bad1" >    35< / a > < / span > < span  class = "keyword" > constexpr< / span >  METAL_FUNC < span  class = "keywordtype" > float< / span >  < a  class = "code hl_function"  href = "backend_2metal_2kernels_2bf16_8h.html#a3b33ae338dc4f223d0f3c748de07bad1" > bfloat_bits_to_float< / a > (uint16_t x) {< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00036"  name = "l00036" > < / a > < span  class = "lineno" >    36< / span >   < span  class = "comment" > // Upper 16 bits are the data and lower 16 bits are 0s< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00037"  name = "l00037" > < / a > < span  class = "lineno" >    37< / span >   < span  class = "keywordflow" > return< / span >  as_type< float> ((uint32_t)x < <  16);< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00038"  name = "l00038" > < / a > < span  class = "lineno" >    38< / span > }< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00039"  name = "l00039" > < / a > < span  class = "lineno" >    39< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00040"  name = "l00040" > < / a > < span  class = "lineno" >    40< / span > < span  class = "keyword" > struct < / span > < a  class = "code hl_struct"  href = "struct___m_l_x___b_float16.html" > _MLX_BFloat16< / a > ;< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00041"  name = "l00041" > < / a > < span  class = "lineno" >    41< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00042"  name = "l00042" > < / a > < span  class = "lineno" >    42< / span > < span  class = "keyword" > template< / span >  < < span  class = "keyword" > typename< / span >  T> < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00043"  name = "l00043" > < / a > < span  class = "lineno" > < a  class = "line"  href = "backend_2metal_2kernels_2bf16_8h.html#aae77817d261452b2f001f4d947a3e04e" >    43< / a > < / span > < span  class = "keyword" > static< / span >  < span  class = "keyword" > constexpr< / span >  constant < span  class = "keywordtype" > bool< / span >  < a  class = "code hl_variable"  href = "backend_2metal_2kernels_2bf16_8h.html#aae77817d261452b2f001f4d947a3e04e" > can_convert_to_bfloat< / a >  =< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00044"  name = "l00044" > < / a > < span  class = "lineno" >    44< / span >     !is_same_v< T, _MLX_BFloat16>  & &  is_convertible_v< T, float> ;< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00045"  name = "l00045" > < / a > < span  class = "lineno" >    45< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00046"  name = "l00046" > < / a > < span  class = "lineno" >    46< / span > < span  class = "keyword" > template< / span >  < < span  class = "keyword" > typename< / span >  T> < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00047"  name = "l00047" > < / a > < span  class = "lineno" > < a  class = "line"  href = "backend_2metal_2kernels_2bf16_8h.html#a7e5992f7fcd8f2cdadcc1d7f6aefbb5a" >    47< / a > < / span > < span  class = "keyword" > static< / span >  < span  class = "keyword" > constexpr< / span >  constant < span  class = "keywordtype" > bool< / span >  < a  class = "code hl_variable"  href = "backend_2metal_2kernels_2bf16_8h.html#a7e5992f7fcd8f2cdadcc1d7f6aefbb5a" > can_convert_from_bfloat< / a >  =< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00048"  name = "l00048" > < / a > < span  class = "lineno" >    48< / span >     !is_same_v< T, _MLX_BFloat16>  & &  is_convertible_v< float, T> ;< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00049"  name = "l00049" > < / a > < span  class = "lineno" >    49< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00051"  name = "l00051" > < / a > < span  class = "lineno" >    51< / span > < span  class = "comment" > // Bfloat struct< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00053"  name = "l00053" > < / a > < span  class = "lineno" >    53< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "foldopen"  id = "foldopen00054"  data-start = "{"  data-end = "};" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00054"  name = "l00054" > < / a > < span  class = "lineno" > < a  class = "line"  href = "struct___m_l_x___b_float16.html" >    54< / a > < / span > < span  class = "keyword" > struct < / span > < a  class = "code hl_struct"  href = "struct___m_l_x___b_float16.html" > _MLX_BFloat16< / a >  {< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00056"  name = "l00056" > < / a > < span  class = "lineno" >    56< / span >   < span  class = "comment" > // Constructors< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00057"  name = "l00057" > < / a > < span  class = "lineno" > < a  class = "line"  href = "struct___m_l_x___b_float16.html#a4113263b63e3757ea8334cc4f0f5c3c8" >    57< / a > < / span >   uint16_t < a  class = "code hl_variable"  href = "struct___m_l_x___b_float16.html#a4113263b63e3757ea8334cc4f0f5c3c8" > bits_< / a > ;< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00058"  name = "l00058" > < / a > < span  class = "lineno" > < a  class = "line"  href = "struct___m_l_x___b_float16.html#ab1af7700f5d1e4ab567da6a34fa84668" >    58< / a > < / span >   < a  class = "code hl_function"  href = "struct___m_l_x___b_float16.html#ab1af7700f5d1e4ab567da6a34fa84668" > _MLX_BFloat16< / a > () thread = default;< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00059"  name = "l00059" > < / a > < span  class = "lineno" > < a  class = "line"  href = "struct___m_l_x___b_float16.html#ae5c51644c3bd7cda6b796cb63c60c0b4" >    59< / a > < / span >   < a  class = "code hl_struct"  href = "struct___m_l_x___b_float16.html" > _MLX_BFloat16< / a > () threadgroup = default;< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00060"  name = "l00060" > < / a > < span  class = "lineno" > < a  class = "line"  href = "struct___m_l_x___b_float16.html#a21998a3c852d0e0f52681f8b453172bf" >    60< / a > < / span >   < a  class = "code hl_struct"  href = "struct___m_l_x___b_float16.html" > _MLX_BFloat16< / a > () device = default;< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00061"  name = "l00061" > < / a > < span  class = "lineno" > < a  class = "line"  href = "struct___m_l_x___b_float16.html#a64d8fc2e2463d7fa19cd3d5dd1ffdae8" >    61< / a > < / span >   < a  class = "code hl_struct"  href = "struct___m_l_x___b_float16.html" > _MLX_BFloat16< / a > () constant = default;< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00062"  name = "l00062" > < / a > < span  class = "lineno" >    62< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00063"  name = "l00063" > < / a > < span  class = "lineno" > < a  class = "line"  href = "struct___m_l_x___b_float16_1_1bits__to__bfloat__struct.html" >    63< / a > < / span >   struct < a  class = "code hl_struct"  href = "struct___m_l_x___b_float16_1_1bits__to__bfloat__struct.html" > bits_to_bfloat_struct< / a >  {};< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "foldopen"  id = "foldopen00064"  data-start = "{"  data-end = "}" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00064"  name = "l00064" > < / a > < span  class = "lineno" > < a  class = "line"  href = "struct___m_l_x___b_float16.html#a91ccb774773b65f8d4c1aea3f1c6e1ca" >    64< / a > < / span >   < span  class = "keyword" > static< / span >  < span  class = "keyword" > constexpr< / span >  METAL_FUNC < a  class = "code hl_struct"  href = "struct___m_l_x___b_float16_1_1bits__to__bfloat__struct.html" > bits_to_bfloat_struct< / a >  < a  class = "code hl_function"  href = "struct___m_l_x___b_float16.html#a91ccb774773b65f8d4c1aea3f1c6e1ca" > bits_to_bfloat< / a > () {< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00065"  name = "l00065" > < / a > < span  class = "lineno" >    65< / span >     < span  class = "keywordflow" > return< / span >  < a  class = "code hl_struct"  href = "struct___m_l_x___b_float16_1_1bits__to__bfloat__struct.html" > bits_to_bfloat_struct< / a > ();< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00066"  name = "l00066" > < / a > < span  class = "lineno" >    66< / span >   }< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "foldopen"  id = "foldopen00067"  data-start = "{"  data-end = "}" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00067"  name = "l00067" > < / a > < span  class = "lineno" > < a  class = "line"  href = "struct___m_l_x___b_float16.html#a50d825f05a162d0ac133ad8b6f3c3112" >    67< / a > < / span >   < span  class = "keyword" > constexpr< / span >  METAL_FUNC < a  class = "code hl_function"  href = "struct___m_l_x___b_float16.html#a50d825f05a162d0ac133ad8b6f3c3112" > _MLX_BFloat16< / a > (uint16_t bits, < a  class = "code hl_struct"  href = "struct___m_l_x___b_float16_1_1bits__to__bfloat__struct.html" > bits_to_bfloat_struct< / a > )< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00068"  name = "l00068" > < / a > < span  class = "lineno" >    68< / span >       : < a  class = "code hl_variable"  href = "struct___m_l_x___b_float16.html#a4113263b63e3757ea8334cc4f0f5c3c8" > bits_< / a > (bits) {}< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00069"  name = "l00069" > < / a > < span  class = "lineno" >    69< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00071"  name = "l00071" > < / a > < span  class = "lineno" >    71< / span >   < span  class = "comment" > // Conversions to bfloat< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00072"  name = "l00072" > < / a > < span  class = "lineno" >    72< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00073"  name = "l00073" > < / a > < span  class = "lineno" >    73< / span >   < span  class = "keyword" > template< / span >  < < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00074"  name = "l00074" > < / a > < span  class = "lineno" >    74< / span >       < span  class = "keyword" > typename< / span >  T,< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00075"  name = "l00075" > < / a > < span  class = "lineno" >    75< / span >       < span  class = "keyword" > typename< / span >  = < span  class = "keyword" > typename< / span >  enable_if< can_convert_to_bfloat< T> > ::type> < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "foldopen"  id = "foldopen00076"  data-start = "{"  data-end = "}" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00076"  name = "l00076" > < / a > < span  class = "lineno" > < a  class = "line"  href = "struct___m_l_x___b_float16.html#a24c5736f234e09a0c82b00c7e44cc547" >    76< / a > < / span >   < span  class = "keyword" > constexpr< / span >  METAL_FUNC < a  class = "code hl_function"  href = "struct___m_l_x___b_float16.html#a24c5736f234e09a0c82b00c7e44cc547" > _MLX_BFloat16< / a > (T x) thread< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00077"  name = "l00077" > < / a > < span  class = "lineno" >    77< / span >       : < a  class = "code hl_variable"  href = "struct___m_l_x___b_float16.html#a4113263b63e3757ea8334cc4f0f5c3c8" > bits_< / a > (< a  class = "code hl_function"  href = "backend_2metal_2kernels_2bf16_8h.html#a31ce5e8e860295fa236e0d4b0befeae1" > float_to_bfloat_bits< / a > (< span  class = "keyword" > static_cast< < / span > < span  class = "keywordtype" > float< / span > < span  class = "keyword" > > < / span > (x))) {}< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00078"  name = "l00078" > < / a > < span  class = "lineno" >    78< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00079"  name = "l00079" > < / a > < span  class = "lineno" >    79< / span >   < span  class = "keyword" > template< / span >  < < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00080"  name = "l00080" > < / a > < span  class = "lineno" >    80< / span >       < span  class = "keyword" > typename< / span >  T,< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00081"  name = "l00081" > < / a > < span  class = "lineno" >    81< / span >       < span  class = "keyword" > typename< / span >  = < span  class = "keyword" > typename< / span >  enable_if< can_convert_to_bfloat< T> > ::type> < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "foldopen"  id = "foldopen00082"  data-start = "{"  data-end = "}" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00082"  name = "l00082" > < / a > < span  class = "lineno" > < a  class = "line"  href = "struct___m_l_x___b_float16.html#adeb880f31121c6dc40ce47765c6c7455" >    82< / a > < / span >   < span  class = "keyword" > constexpr< / span >  METAL_FUNC < a  class = "code hl_function"  href = "struct___m_l_x___b_float16.html#adeb880f31121c6dc40ce47765c6c7455" > _MLX_BFloat16< / a > (T x) threadgroup< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00083"  name = "l00083" > < / a > < span  class = "lineno" >    83< / span >       : < a  class = "code hl_variable"  href = "struct___m_l_x___b_float16.html#a4113263b63e3757ea8334cc4f0f5c3c8" > bits_< / a > (< a  class = "code hl_function"  href = "backend_2metal_2kernels_2bf16_8h.html#a31ce5e8e860295fa236e0d4b0befeae1" > float_to_bfloat_bits< / a > (< span  class = "keyword" > static_cast< < / span > < span  class = "keywordtype" > float< / span > < span  class = "keyword" > > < / span > (x))) {}< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00084"  name = "l00084" > < / a > < span  class = "lineno" >    84< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00085"  name = "l00085" > < / a > < span  class = "lineno" >    85< / span >   < span  class = "keyword" > template< / span >  < < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00086"  name = "l00086" > < / a > < span  class = "lineno" >    86< / span >       < span  class = "keyword" > typename< / span >  T,< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00087"  name = "l00087" > < / a > < span  class = "lineno" >    87< / span >       < span  class = "keyword" > typename< / span >  = < span  class = "keyword" > typename< / span >  enable_if< can_convert_to_bfloat< T> > ::type> < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "foldopen"  id = "foldopen00088"  data-start = "{"  data-end = "}" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00088"  name = "l00088" > < / a > < span  class = "lineno" > < a  class = "line"  href = "struct___m_l_x___b_float16.html#ad2701d003e8fad168c89abc3907c6e53" >    88< / a > < / span >   < span  class = "keyword" > constexpr< / span >  METAL_FUNC < a  class = "code hl_function"  href = "struct___m_l_x___b_float16.html#ad2701d003e8fad168c89abc3907c6e53" > _MLX_BFloat16< / a > (T x) device< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00089"  name = "l00089" > < / a > < span  class = "lineno" >    89< / span >       : < a  class = "code hl_variable"  href = "struct___m_l_x___b_float16.html#a4113263b63e3757ea8334cc4f0f5c3c8" > bits_< / a > (< a  class = "code hl_function"  href = "backend_2metal_2kernels_2bf16_8h.html#a31ce5e8e860295fa236e0d4b0befeae1" > float_to_bfloat_bits< / a > (< span  class = "keyword" > static_cast< < / span > < span  class = "keywordtype" > float< / span > < span  class = "keyword" > > < / span > (x))) {}< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00090"  name = "l00090" > < / a > < span  class = "lineno" >    90< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00091"  name = "l00091" > < / a > < span  class = "lineno" >    91< / span >   < span  class = "keyword" > template< / span >  < < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00092"  name = "l00092" > < / a > < span  class = "lineno" >    92< / span >       < span  class = "keyword" > typename< / span >  T,< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00093"  name = "l00093" > < / a > < span  class = "lineno" >    93< / span >       < span  class = "keyword" > typename< / span >  = < span  class = "keyword" > typename< / span >  enable_if< can_convert_to_bfloat< T> > ::type> < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "foldopen"  id = "foldopen00094"  data-start = "{"  data-end = "}" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00094"  name = "l00094" > < / a > < span  class = "lineno" > < a  class = "line"  href = "struct___m_l_x___b_float16.html#aec7fa716fd621ce1843338027bcb0118" >    94< / a > < / span >   < span  class = "keyword" > constexpr< / span >  METAL_FUNC < a  class = "code hl_function"  href = "struct___m_l_x___b_float16.html#aec7fa716fd621ce1843338027bcb0118" > _MLX_BFloat16< / a > (T x) constant< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00095"  name = "l00095" > < / a > < span  class = "lineno" >    95< / span >       : < a  class = "code hl_variable"  href = "struct___m_l_x___b_float16.html#a4113263b63e3757ea8334cc4f0f5c3c8" > bits_< / a > (< a  class = "code hl_function"  href = "backend_2metal_2kernels_2bf16_8h.html#a31ce5e8e860295fa236e0d4b0befeae1" > float_to_bfloat_bits< / a > (< span  class = "keyword" > static_cast< < / span > < span  class = "keywordtype" > float< / span > < span  class = "keyword" > > < / span > (x))) {}< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00096"  name = "l00096" > < / a > < span  class = "lineno" >    96< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00098"  name = "l00098" > < / a > < span  class = "lineno" >    98< / span >   < span  class = "comment" > // Conversions from bfloat< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00099"  name = "l00099" > < / a > < span  class = "lineno" >    99< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00100"  name = "l00100" > < / a > < span  class = "lineno" >   100< / span >   < span  class = "keyword" > template< / span >  < < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00101"  name = "l00101" > < / a > < span  class = "lineno" >   101< / span >       < span  class = "keyword" > typename< / span >  T,< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00102"  name = "l00102" > < / a > < span  class = "lineno" >   102< / span >       < span  class = "keyword" > typename< / span >  = < span  class = "keyword" > typename< / span >  enable_if< can_convert_from_bfloat< T> > ::type> < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "foldopen"  id = "foldopen00103"  data-start = "{"  data-end = "}" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00103"  name = "l00103" > < / a > < span  class = "lineno" > < a  class = "line"  href = "struct___m_l_x___b_float16.html#aa7dfefdf0d15e102d2b8258c9ab01836" >   103< / a > < / span >   < span  class = "keyword" > constexpr< / span >  METAL_FUNC < span  class = "keyword" > operator< / span >  T() const thread {< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00104"  name = "l00104" > < / a > < span  class = "lineno" >   104< / span >     < span  class = "keywordflow" > return< / span >  < span  class = "keyword" > static_cast< < / span > T< span  class = "keyword" > > < / span > (< a  class = "code hl_function"  href = "backend_2metal_2kernels_2bf16_8h.html#a3b33ae338dc4f223d0f3c748de07bad1" > bfloat_bits_to_float< / a > (< a  class = "code hl_variable"  href = "struct___m_l_x___b_float16.html#a4113263b63e3757ea8334cc4f0f5c3c8" > bits_< / a > ));< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00105"  name = "l00105" > < / a > < span  class = "lineno" >   105< / span >   }< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00106"  name = "l00106" > < / a > < span  class = "lineno" >   106< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00107"  name = "l00107" > < / a > < span  class = "lineno" >   107< / span >   < span  class = "keyword" > template< / span >  < < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00108"  name = "l00108" > < / a > < span  class = "lineno" >   108< / span >       < span  class = "keyword" > typename< / span >  T,< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00109"  name = "l00109" > < / a > < span  class = "lineno" >   109< / span >       < span  class = "keyword" > typename< / span >  = < span  class = "keyword" > typename< / span >  enable_if< can_convert_from_bfloat< T> > ::type> < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "foldopen"  id = "foldopen00110"  data-start = "{"  data-end = "}" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00110"  name = "l00110" > < / a > < span  class = "lineno" > < a  class = "line"  href = "struct___m_l_x___b_float16.html#a2546a8afa77e14ed5b3c5da79a281260" >   110< / a > < / span >   < span  class = "keyword" > constexpr< / span >  METAL_FUNC < span  class = "keyword" > operator< / span >  T() const threadgroup {< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00111"  name = "l00111" > < / a > < span  class = "lineno" >   111< / span >     < span  class = "keywordflow" > return< / span >  < span  class = "keyword" > static_cast< < / span > T< span  class = "keyword" > > < / span > (< a  class = "code hl_function"  href = "backend_2metal_2kernels_2bf16_8h.html#a3b33ae338dc4f223d0f3c748de07bad1" > bfloat_bits_to_float< / a > (< a  class = "code hl_variable"  href = "struct___m_l_x___b_float16.html#a4113263b63e3757ea8334cc4f0f5c3c8" > bits_< / a > ));< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00112"  name = "l00112" > < / a > < span  class = "lineno" >   112< / span >   }< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00113"  name = "l00113" > < / a > < span  class = "lineno" >   113< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00114"  name = "l00114" > < / a > < span  class = "lineno" >   114< / span >   < span  class = "keyword" > template< / span >  < < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00115"  name = "l00115" > < / a > < span  class = "lineno" >   115< / span >       < span  class = "keyword" > typename< / span >  T,< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00116"  name = "l00116" > < / a > < span  class = "lineno" >   116< / span >       < span  class = "keyword" > typename< / span >  = < span  class = "keyword" > typename< / span >  enable_if< can_convert_from_bfloat< T> > ::type> < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "foldopen"  id = "foldopen00117"  data-start = "{"  data-end = "}" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00117"  name = "l00117" > < / a > < span  class = "lineno" > < a  class = "line"  href = "struct___m_l_x___b_float16.html#a1d523f87740fcb852db6ab57896c245a" >   117< / a > < / span >   < span  class = "keyword" > constexpr< / span >  METAL_FUNC < span  class = "keyword" > operator< / span >  T() const device {< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00118"  name = "l00118" > < / a > < span  class = "lineno" >   118< / span >     < span  class = "keywordflow" > return< / span >  < span  class = "keyword" > static_cast< < / span > T< span  class = "keyword" > > < / span > (< a  class = "code hl_function"  href = "backend_2metal_2kernels_2bf16_8h.html#a3b33ae338dc4f223d0f3c748de07bad1" > bfloat_bits_to_float< / a > (< a  class = "code hl_variable"  href = "struct___m_l_x___b_float16.html#a4113263b63e3757ea8334cc4f0f5c3c8" > bits_< / a > ));< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00119"  name = "l00119" > < / a > < span  class = "lineno" >   119< / span >   }< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00120"  name = "l00120" > < / a > < span  class = "lineno" >   120< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00121"  name = "l00121" > < / a > < span  class = "lineno" >   121< / span >   < span  class = "keyword" > template< / span >  < < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00122"  name = "l00122" > < / a > < span  class = "lineno" >   122< / span >       < span  class = "keyword" > typename< / span >  T,< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00123"  name = "l00123" > < / a > < span  class = "lineno" >   123< / span >       < span  class = "keyword" > typename< / span >  = < span  class = "keyword" > typename< / span >  enable_if< can_convert_from_bfloat< T> > ::type> < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "foldopen"  id = "foldopen00124"  data-start = "{"  data-end = "}" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00124"  name = "l00124" > < / a > < span  class = "lineno" > < a  class = "line"  href = "struct___m_l_x___b_float16.html#a95acd29283024d7093a0bc58c9468a0a" >   124< / a > < / span >   < span  class = "keyword" > constexpr< / span >  METAL_FUNC < span  class = "keyword" > operator< / span >  T() const constant {< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00125"  name = "l00125" > < / a > < span  class = "lineno" >   125< / span >     < span  class = "keywordflow" > return< / span >  < span  class = "keyword" > static_cast< < / span > T< span  class = "keyword" > > < / span > (< a  class = "code hl_function"  href = "backend_2metal_2kernels_2bf16_8h.html#a3b33ae338dc4f223d0f3c748de07bad1" > bfloat_bits_to_float< / a > (< a  class = "code hl_variable"  href = "struct___m_l_x___b_float16.html#a4113263b63e3757ea8334cc4f0f5c3c8" > bits_< / a > ));< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00126"  name = "l00126" > < / a > < span  class = "lineno" >   126< / span >   }< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00127"  name = "l00127" > < / a > < span  class = "lineno" >   127< / span > };< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00128"  name = "l00128" > < / a > < span  class = "lineno" >   128< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00130"  name = "l00130" > < / a > < span  class = "lineno" >   130< / span > < span  class = "comment" > // Bfloat operators< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00132"  name = "l00132" > < / a > < span  class = "lineno" >   132< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00134"  name = "l00134" > < / a > < span  class = "lineno" >   134< / span > < span  class = "comment" > // Unary ops< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "foldopen"  id = "foldopen00135"  data-start = "{"  data-end = "}" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00135"  name = "l00135" > < / a > < span  class = "lineno" > < a  class = "line"  href = "backend_2metal_2kernels_2bf16_8h.html#a6aedc8d6d0980134ac69b96f22d9a855" >   135< / a > < / span > < span  class = "keyword" > constexpr< / span >  METAL_FUNC < a  class = "code hl_struct"  href = "struct___m_l_x___b_float16.html" > _MLX_BFloat16< / a >  < a  class = "code hl_function"  href = "backend_2metal_2kernels_2bf16_8h.html#a6aedc8d6d0980134ac69b96f22d9a855" > operator-< / a > (< a  class = "code hl_struct"  href = "struct___m_l_x___b_float16.html" > _MLX_BFloat16< / a >  x) {< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00136"  name = "l00136" > < / a > < span  class = "lineno" >   136< / span >   < span  class = "keywordflow" > return< / span >  -< span  class = "keyword" > static_cast< < / span > < span  class = "keywordtype" > float< / span > < span  class = "keyword" > > < / span > (x);< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00137"  name = "l00137" > < / a > < span  class = "lineno" >   137< / span > }< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00138"  name = "l00138" > < / a > < span  class = "lineno" >   138< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00140"  name = "l00140" > < / a > < span  class = "lineno" >   140< / span > < span  class = "comment" > // Binary operators< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "foldopen"  id = "foldopen00141"  data-start = ""  data-end = "" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00141"  name = "l00141" > < / a > < span  class = "lineno" > < a  class = "line"  href = "backend_2metal_2kernels_2bf16_8h.html#a78c92beda4436da9a2e520fa98c59f70" >   141< / a > < / span > < span  class = "preprocessor" > #define bfloat_binop_base(__op__, __operator__, otype, atype, btype, ctype) \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00142"  name = "l00142" > < / a > < span  class = "lineno" >   142< / span > < span  class = "preprocessor" >   constexpr METAL_FUNC otype __operator__(atype lhs, btype rhs) {           \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00143"  name = "l00143" > < / a > < span  class = "lineno" >   143< / span > < span  class = "preprocessor" >     return static_cast< ctype> (lhs) __op__ static_cast< ctype> (rhs);          \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00144"  name = "l00144" > < / a > < span  class = "lineno" >   144< / span > < span  class = "preprocessor" >   }< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00145"  name = "l00145" > < / a > < span  class = "lineno" >   145< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "foldopen"  id = "foldopen00146"  data-start = ""  data-end = "" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00146"  name = "l00146" > < / a > < span  class = "lineno" > < a  class = "line"  href = "backend_2metal_2kernels_2bf16_8h.html#ac7ff36230dab17e8f17b7a7c80888594" >   146< / a > < / span > < span  class = "preprocessor" > #define bfloat_binop_helper(__op__, __operator__, otype, itype, ctype)    \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00147"  name = "l00147" > < / a > < span  class = "lineno" >   147< / span > < span  class = "preprocessor" >   constexpr METAL_FUNC otype __operator__(_MLX_BFloat16 lhs, itype rhs) { \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00148"  name = "l00148" > < / a > < span  class = "lineno" >   148< / span > < span  class = "preprocessor" >     return static_cast< ctype> (lhs) __op__ static_cast< ctype> (rhs);        \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00149"  name = "l00149" > < / a > < span  class = "lineno" >   149< / span > < span  class = "preprocessor" >   }                                                                       \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00150"  name = "l00150" > < / a > < span  class = "lineno" >   150< / span > < span  class = "preprocessor" >   constexpr METAL_FUNC otype __operator__(itype lhs, _MLX_BFloat16 rhs) { \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00151"  name = "l00151" > < / a > < span  class = "lineno" >   151< / span > < span  class = "preprocessor" >     return static_cast< ctype> (lhs) __op__ static_cast< ctype> (rhs);        \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00152"  name = "l00152" > < / a > < span  class = "lineno" >   152< / span > < span  class = "preprocessor" >   }< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00153"  name = "l00153" > < / a > < span  class = "lineno" >   153< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00155"  name = "l00155" > < / a > < span  class = "lineno" >   155< / span > < span  class = "comment" > // Arithmetic Operators< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "foldopen"  id = "foldopen00156"  data-start = ""  data-end = "" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00156"  name = "l00156" > < / a > < span  class = "lineno" > < a  class = "line"  href = "backend_2metal_2kernels_2bf16_8h.html#a7694892a131c0e31e5153c088cccb707" >   156< / a > < / span > < span  class = "preprocessor" > #define bfloat_binop(_op_, _operator_)                                       \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00157"  name = "l00157" > < / a > < span  class = "lineno" >   157< / span > < span  class = "preprocessor" >   bfloat_binop_base(                                                         \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00158"  name = "l00158" > < / a > < span  class = "lineno" >   158< / span > < span  class = "preprocessor" >       _op_, _operator_, _MLX_BFloat16, _MLX_BFloat16, _MLX_BFloat16, float); \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00159"  name = "l00159" > < / a > < span  class = "lineno" >   159< / span > < span  class = "preprocessor" >   bfloat_binop_helper(_op_, _operator_, float, float, float);                \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00160"  name = "l00160" > < / a > < span  class = "lineno" >   160< / span > < span  class = "preprocessor" >   bfloat_binop_helper(_op_, _operator_, float, half, float);                 \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00161"  name = "l00161" > < / a > < span  class = "lineno" >   161< / span > < span  class = "preprocessor" >   bfloat_binop_helper(_op_, _operator_, _MLX_BFloat16, int32_t, float);      \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00162"  name = "l00162" > < / a > < span  class = "lineno" >   162< / span > < span  class = "preprocessor" >   bfloat_binop_helper(_op_, _operator_, _MLX_BFloat16, uint32_t, float);     \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00163"  name = "l00163" > < / a > < span  class = "lineno" >   163< / span > < span  class = "preprocessor" >   bfloat_binop_helper(_op_, _operator_, _MLX_BFloat16, int64_t, float);      \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00164"  name = "l00164" > < / a > < span  class = "lineno" >   164< / span > < span  class = "preprocessor" >   bfloat_binop_helper(_op_, _operator_, _MLX_BFloat16, uint64_t, float);< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00165"  name = "l00165" > < / a > < span  class = "lineno" >   165< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00166"  name = "l00166" > < / a > < span  class = "lineno" > < a  class = "line"  href = "backend_2metal_2kernels_2bf16_8h.html#a09c1a797eb7f43742578680899932f50" >   166< / a > < / span > < a  class = "code hl_define"  href = "backend_2metal_2kernels_2bf16_8h.html#a7694892a131c0e31e5153c088cccb707" > bfloat_binop< / a > (+, < span  class = "keyword" > operator< / span > +);< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00167"  name = "l00167" > < / a > < span  class = "lineno" > < a  class = "line"  href = "backend_2metal_2kernels_2bf16_8h.html#a333f67614dbf8027439a7e124052cb85" >   167< / a > < / span > < a  class = "code hl_define"  href = "backend_2metal_2kernels_2bf16_8h.html#a7694892a131c0e31e5153c088cccb707" > bfloat_binop< / a > (-, < span  class = "keyword" > operator< / span > -);< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00168"  name = "l00168" > < / a > < span  class = "lineno" > < a  class = "line"  href = "backend_2metal_2kernels_2bf16_8h.html#a8f06316063fc91747533105f256b55b5" >   168< / a > < / span > < a  class = "code hl_define"  href = "backend_2metal_2kernels_2bf16_8h.html#a7694892a131c0e31e5153c088cccb707" > bfloat_binop< / a > (*, < span  class = "keyword" > operator< / span > *);< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00169"  name = "l00169" > < / a > < span  class = "lineno" > < a  class = "line"  href = "backend_2metal_2kernels_2bf16_8h.html#a9f16a44e1c9836ca57edc1d7b93b5d7c" >   169< / a > < / span > < a  class = "code hl_define"  href = "backend_2metal_2kernels_2bf16_8h.html#a7694892a131c0e31e5153c088cccb707" > bfloat_binop< / a > (/, < span  class = "keyword" > operator< / span > /);< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00170"  name = "l00170" > < / a > < span  class = "lineno" >   170< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00172"  name = "l00172" > < / a > < span  class = "lineno" >   172< / span > < span  class = "comment" > // Comparison ops< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "foldopen"  id = "foldopen00173"  data-start = ""  data-end = "" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00173"  name = "l00173" > < / a > < span  class = "lineno" > < a  class = "line"  href = "backend_2metal_2kernels_2bf16_8h.html#a330a0883503cb640f1cf628a7ca50239" >   173< / a > < / span > < span  class = "preprocessor" > #define bfloat_compop(__op__, __operator__)                             \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00174"  name = "l00174" > < / a > < span  class = "lineno" >   174< / span > < span  class = "preprocessor" >   bfloat_binop_base(                                                    \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00175"  name = "l00175" > < / a > < span  class = "lineno" >   175< / span > < span  class = "preprocessor" >       __op__, __operator__, bool, _MLX_BFloat16, _MLX_BFloat16, float); \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00176"  name = "l00176" > < / a > < span  class = "lineno" >   176< / span > < span  class = "preprocessor" >   bfloat_binop_helper(__op__, __operator__, bool, float, float);        \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00177"  name = "l00177" > < / a > < span  class = "lineno" >   177< / span > < span  class = "preprocessor" >   bfloat_binop_helper(__op__, __operator__, bool, half, float);         \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00178"  name = "l00178" > < / a > < span  class = "lineno" >   178< / span > < span  class = "preprocessor" >   bfloat_binop_helper(__op__, __operator__, bool, int32_t, float);      \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00179"  name = "l00179" > < / a > < span  class = "lineno" >   179< / span > < span  class = "preprocessor" >   bfloat_binop_helper(__op__, __operator__, bool, uint32_t, float);     \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00180"  name = "l00180" > < / a > < span  class = "lineno" >   180< / span > < span  class = "preprocessor" >   bfloat_binop_helper(__op__, __operator__, bool, int64_t, float);      \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00181"  name = "l00181" > < / a > < span  class = "lineno" >   181< / span > < span  class = "preprocessor" >   bfloat_binop_helper(__op__, __operator__, bool, uint64_t, float);< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00182"  name = "l00182" > < / a > < span  class = "lineno" >   182< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00183"  name = "l00183" > < / a > < span  class = "lineno" > < a  class = "line"  href = "backend_2metal_2kernels_2bf16_8h.html#ae394c0a10e47d1d047854a888402eb57" >   183< / a > < / span > < a  class = "code hl_define"  href = "backend_2metal_2kernels_2bf16_8h.html#a330a0883503cb640f1cf628a7ca50239" > bfloat_compop< / a > (> , < span  class = "keyword" > operator< / span > > );< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00184"  name = "l00184" > < / a > < span  class = "lineno" > < a  class = "line"  href = "backend_2metal_2kernels_2bf16_8h.html#a9ef6a57b7185e9ca49e255fec1a44e25" >   184< / a > < / span > < a  class = "code hl_define"  href = "backend_2metal_2kernels_2bf16_8h.html#a330a0883503cb640f1cf628a7ca50239" > bfloat_compop< / a > (< , < span  class = "keyword" > operator< / span > < );< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00185"  name = "l00185" > < / a > < span  class = "lineno" > < a  class = "line"  href = "backend_2metal_2kernels_2bf16_8h.html#a430dd11fbf4c6f39bc1506ab43b2341f" >   185< / a > < / span > < a  class = "code hl_define"  href = "backend_2metal_2kernels_2bf16_8h.html#a330a0883503cb640f1cf628a7ca50239" > bfloat_compop< / a > (> =, < span  class = "keyword" > operator< / span > > =);< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00186"  name = "l00186" > < / a > < span  class = "lineno" > < a  class = "line"  href = "backend_2metal_2kernels_2bf16_8h.html#af469c58cffeab488c681f4b33f02cd05" >   186< / a > < / span > < a  class = "code hl_define"  href = "backend_2metal_2kernels_2bf16_8h.html#a330a0883503cb640f1cf628a7ca50239" > bfloat_compop< / a > (< =, < span  class = "keyword" > operator< / span > < =);< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00187"  name = "l00187" > < / a > < span  class = "lineno" > < a  class = "line"  href = "backend_2metal_2kernels_2bf16_8h.html#a49a13b06a325ed3cca4004b6a0cde065" >   187< / a > < / span > < a  class = "code hl_define"  href = "backend_2metal_2kernels_2bf16_8h.html#a330a0883503cb640f1cf628a7ca50239" > bfloat_compop< / a > (==, < span  class = "keyword" > operator< / span > ==);< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00188"  name = "l00188" > < / a > < span  class = "lineno" > < a  class = "line"  href = "backend_2metal_2kernels_2bf16_8h.html#afc6e4fc5589bbf30f978f34868dd4e55" >   188< / a > < / span > < a  class = "code hl_define"  href = "backend_2metal_2kernels_2bf16_8h.html#a330a0883503cb640f1cf628a7ca50239" > bfloat_compop< / a > (!=, < span  class = "keyword" > operator< / span > !=);< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00189"  name = "l00189" > < / a > < span  class = "lineno" >   189< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00190"  name = "l00190" > < / a > < span  class = "lineno" >   190< / span > < span  class = "preprocessor" > #undef bfloat_compop< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00191"  name = "l00191" > < / a > < span  class = "lineno" >   191< / span > < span  class = "preprocessor" > #undef bfloat_binop_base< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00192"  name = "l00192" > < / a > < span  class = "lineno" >   192< / span > < span  class = "preprocessor" > #undef bfloat_binop_helper< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00193"  name = "l00193" > < / a > < span  class = "lineno" >   193< / span > < span  class = "preprocessor" > #undef bfloat_binop< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00194"  name = "l00194" > < / a > < span  class = "lineno" >   194< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00196"  name = "l00196" > < / a > < span  class = "lineno" >   196< / span > < span  class = "comment" > // Inplace Operators< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "foldopen"  id = "foldopen00197"  data-start = ""  data-end = "" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00197"  name = "l00197" > < / a > < span  class = "lineno" > < a  class = "line"  href = "backend_2metal_2kernels_2bf16_8h.html#a2846fd11b5e19b435e9f7ef0998c9b1d" >   197< / a > < / span > < span  class = "preprocessor" > #define bfloat_inplace_op_helper(__op__, __operator__, itype, addr_space) \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00198"  name = "l00198" > < / a > < span  class = "lineno" >   198< / span > < span  class = "preprocessor" >   constexpr METAL_FUNC addr_space _MLX_BFloat16&  __operator__(            \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00199"  name = "l00199" > < / a > < span  class = "lineno" >   199< / span > < span  class = "preprocessor" >       addr_space _MLX_BFloat16&  lhs, itype rhs) {                         \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00200"  name = "l00200" > < / a > < span  class = "lineno" >   200< / span > < span  class = "preprocessor" >     lhs = static_cast< float> (lhs) __op__ static_cast< float> (rhs);         \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00201"  name = "l00201" > < / a > < span  class = "lineno" >   201< / span > < span  class = "preprocessor" >     return lhs;                                                           \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00202"  name = "l00202" > < / a > < span  class = "lineno" >   202< / span > < span  class = "preprocessor" >   }                                                                       \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00203"  name = "l00203" > < / a > < span  class = "lineno" >   203< / span > < span  class = "preprocessor" >   constexpr METAL_FUNC addr_space itype&  __operator__(                    \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00204"  name = "l00204" > < / a > < span  class = "lineno" >   204< / span > < span  class = "preprocessor" >       addr_space itype&  lhs, _MLX_BFloat16 rhs) {                         \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00205"  name = "l00205" > < / a > < span  class = "lineno" >   205< / span > < span  class = "preprocessor" >     lhs = static_cast< float> (lhs) __op__ static_cast< float> (rhs);         \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00206"  name = "l00206" > < / a > < span  class = "lineno" >   206< / span > < span  class = "preprocessor" >     return lhs;                                                           \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00207"  name = "l00207" > < / a > < span  class = "lineno" >   207< / span > < span  class = "preprocessor" >   }< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00208"  name = "l00208" > < / a > < span  class = "lineno" >   208< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "foldopen"  id = "foldopen00209"  data-start = ""  data-end = "" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00209"  name = "l00209" > < / a > < span  class = "lineno" > < a  class = "line"  href = "backend_2metal_2kernels_2bf16_8h.html#af30a2cbd2c3415516203b83bd21872f8" >   209< / a > < / span > < span  class = "preprocessor" > #define bfloat_inplace_op_addr_space_helper(__op__, __operator__, itype) \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00210"  name = "l00210" > < / a > < span  class = "lineno" >   210< / span > < span  class = "preprocessor" >   bfloat_inplace_op_helper(__op__, __operator__, itype, device);         \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00211"  name = "l00211" > < / a > < span  class = "lineno" >   211< / span > < span  class = "preprocessor" >   bfloat_inplace_op_helper(__op__, __operator__, itype, thread);         \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00212"  name = "l00212" > < / a > < span  class = "lineno" >   212< / span > < span  class = "preprocessor" >   bfloat_inplace_op_helper(__op__, __operator__, itype, threadgroup);< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00213"  name = "l00213" > < / a > < span  class = "lineno" >   213< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "foldopen"  id = "foldopen00214"  data-start = ""  data-end = "" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00214"  name = "l00214" > < / a > < span  class = "lineno" > < a  class = "line"  href = "backend_2metal_2kernels_2bf16_8h.html#a4ac82467fbc674e990090f482b9c1e5c" >   214< / a > < / span > < span  class = "preprocessor" > #define bfloat_inplace_op(itype)                             \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00215"  name = "l00215" > < / a > < span  class = "lineno" >   215< / span > < span  class = "preprocessor" >   bfloat_inplace_op_addr_space_helper(+, operator+=, itype); \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00216"  name = "l00216" > < / a > < span  class = "lineno" >   216< / span > < span  class = "preprocessor" >   bfloat_inplace_op_addr_space_helper(-, operator-=, itype); \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00217"  name = "l00217" > < / a > < span  class = "lineno" >   217< / span > < span  class = "preprocessor" >   bfloat_inplace_op_addr_space_helper(*, operator*=, itype); \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00218"  name = "l00218" > < / a > < span  class = "lineno" >   218< / span > < span  class = "preprocessor" >   bfloat_inplace_op_addr_space_helper(/, operator/=, itype);< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00219"  name = "l00219" > < / a > < span  class = "lineno" >   219< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00220"  name = "l00220" > < / a > < span  class = "lineno" > < a  class = "line"  href = "backend_2metal_2kernels_2bf16_8h.html#a7232b0a0e193b3c6172d6fc2578bf419" >   220< / a > < / span > < a  class = "code hl_define"  href = "backend_2metal_2kernels_2bf16_8h.html#a4ac82467fbc674e990090f482b9c1e5c" > bfloat_inplace_op< / a > (< span  class = "keywordtype" > float< / span > );< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00221"  name = "l00221" > < / a > < span  class = "lineno" > < a  class = "line"  href = "backend_2metal_2kernels_2bf16_8h.html#ab706af260b61f735b28464877d02137c" >   221< / a > < / span > < a  class = "code hl_define"  href = "backend_2metal_2kernels_2bf16_8h.html#a4ac82467fbc674e990090f482b9c1e5c" > bfloat_inplace_op< / a > (half);< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00222"  name = "l00222" > < / a > < span  class = "lineno" > < a  class = "line"  href = "backend_2metal_2kernels_2bf16_8h.html#a81f65b04a87a25c7eb1a751d1be9fa55" >   222< / a > < / span > < a  class = "code hl_define"  href = "backend_2metal_2kernels_2bf16_8h.html#a4ac82467fbc674e990090f482b9c1e5c" > bfloat_inplace_op< / a > (int16_t);< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00223"  name = "l00223" > < / a > < span  class = "lineno" > < a  class = "line"  href = "backend_2metal_2kernels_2bf16_8h.html#ae97ab6c3ddcc2754b24f86319a5398be" >   223< / a > < / span > < a  class = "code hl_define"  href = "backend_2metal_2kernels_2bf16_8h.html#a4ac82467fbc674e990090f482b9c1e5c" > bfloat_inplace_op< / a > (int32_t);< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00224"  name = "l00224" > < / a > < span  class = "lineno" > < a  class = "line"  href = "backend_2metal_2kernels_2bf16_8h.html#a917354f77eac26189da8a2f610a00074" >   224< / a > < / span > < a  class = "code hl_define"  href = "backend_2metal_2kernels_2bf16_8h.html#a4ac82467fbc674e990090f482b9c1e5c" > bfloat_inplace_op< / a > (int64_t);< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00225"  name = "l00225" > < / a > < span  class = "lineno" > < a  class = "line"  href = "backend_2metal_2kernels_2bf16_8h.html#a99aa4cc110d1c7aa3b4c8c5cbf9235b7" >   225< / a > < / span > < a  class = "code hl_define"  href = "backend_2metal_2kernels_2bf16_8h.html#a4ac82467fbc674e990090f482b9c1e5c" > bfloat_inplace_op< / a > (uint16_t);< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00226"  name = "l00226" > < / a > < span  class = "lineno" > < a  class = "line"  href = "backend_2metal_2kernels_2bf16_8h.html#aeff4c28986f98c23de1df17043edb0f5" >   226< / a > < / span > < a  class = "code hl_define"  href = "backend_2metal_2kernels_2bf16_8h.html#a4ac82467fbc674e990090f482b9c1e5c" > bfloat_inplace_op< / a > (uint32_t);< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00227"  name = "l00227" > < / a > < span  class = "lineno" > < a  class = "line"  href = "backend_2metal_2kernels_2bf16_8h.html#a1a2a683ff40490226eb1371fb905023d" >   227< / a > < / span > < a  class = "code hl_define"  href = "backend_2metal_2kernels_2bf16_8h.html#a4ac82467fbc674e990090f482b9c1e5c" > bfloat_inplace_op< / a > (uint64_t);< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00228"  name = "l00228" > < / a > < span  class = "lineno" >   228< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00229"  name = "l00229" > < / a > < span  class = "lineno" >   229< / span > < span  class = "preprocessor" > #undef bfloat_inplace_op_helper< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00230"  name = "l00230" > < / a > < span  class = "lineno" >   230< / span > < span  class = "preprocessor" > #undef bfloat_inplace_op_addr_space_helper< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00231"  name = "l00231" > < / a > < span  class = "lineno" >   231< / span > < span  class = "preprocessor" > #undef bfloat_inplace_op< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00232"  name = "l00232" > < / a > < span  class = "lineno" >   232< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00233"  name = "l00233" > < / a > < span  class = "lineno" >   233< / span > < span  class = "preprocessor" > #define bfloat_inplace_op_helper(__op__, __operator__, addr_space) \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00234"  name = "l00234" > < / a > < span  class = "lineno" >   234< / span > < span  class = "preprocessor" >   constexpr METAL_FUNC addr_space _MLX_BFloat16&  __operator__(     \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00235"  name = "l00235" > < / a > < span  class = "lineno" >   235< / span > < span  class = "preprocessor" >       addr_space _MLX_BFloat16&  lhs, _MLX_BFloat16 rhs) {          \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00236"  name = "l00236" > < / a > < span  class = "lineno" >   236< / span > < span  class = "preprocessor" >     lhs = static_cast< float> (lhs) __op__ static_cast< float> (rhs);  \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00237"  name = "l00237" > < / a > < span  class = "lineno" >   237< / span > < span  class = "preprocessor" >     return lhs;                                                    \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00238"  name = "l00238" > < / a > < span  class = "lineno" >   238< / span > < span  class = "preprocessor" >   }< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00239"  name = "l00239" > < / a > < span  class = "lineno" >   239< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00240"  name = "l00240" > < / a > < span  class = "lineno" >   240< / span > < span  class = "preprocessor" > #define bfloat_inplace_op_addr_space_helper(__op__, __operator__) \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00241"  name = "l00241" > < / a > < span  class = "lineno" >   241< / span > < span  class = "preprocessor" >   bfloat_inplace_op_helper(__op__, __operator__, device);         \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00242"  name = "l00242" > < / a > < span  class = "lineno" >   242< / span > < span  class = "preprocessor" >   bfloat_inplace_op_helper(__op__, __operator__, thread);         \< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00243"  name = "l00243" > < / a > < span  class = "lineno" >   243< / span > < span  class = "preprocessor" >   bfloat_inplace_op_helper(__op__, __operator__, threadgroup);< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00244"  name = "l00244" > < / a > < span  class = "lineno" >   244< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00245"  name = "l00245" > < / a > < span  class = "lineno" > < a  class = "line"  href = "backend_2metal_2kernels_2bf16_8h.html#a24ca436ab299a710263d65302532dd3b" >   245< / a > < / span > < a  class = "code hl_define"  href = "backend_2metal_2kernels_2bf16_8h.html#af30a2cbd2c3415516203b83bd21872f8" > bfloat_inplace_op_addr_space_helper< / a > (+, < span  class = "keyword" > operator< / span > +=);< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00246"  name = "l00246" > < / a > < span  class = "lineno" > < a  class = "line"  href = "backend_2metal_2kernels_2bf16_8h.html#a0d3fb52437c677c5d0f1a3642384b15c" >   246< / a > < / span > < a  class = "code hl_define"  href = "backend_2metal_2kernels_2bf16_8h.html#af30a2cbd2c3415516203b83bd21872f8" > bfloat_inplace_op_addr_space_helper< / a > (-, < span  class = "keyword" > operator< / span > -=);< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00247"  name = "l00247" > < / a > < span  class = "lineno" > < a  class = "line"  href = "backend_2metal_2kernels_2bf16_8h.html#a13aa79165ec87710e977f33fe0361e91" >   247< / a > < / span > < a  class = "code hl_define"  href = "backend_2metal_2kernels_2bf16_8h.html#af30a2cbd2c3415516203b83bd21872f8" > bfloat_inplace_op_addr_space_helper< / a > (*, < span  class = "keyword" > operator< / span > *=);< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00248"  name = "l00248" > < / a > < span  class = "lineno" > < a  class = "line"  href = "backend_2metal_2kernels_2bf16_8h.html#af1a12a1efb618a57da6dd41ae18cb53c" >   248< / a > < / span > < a  class = "code hl_define"  href = "backend_2metal_2kernels_2bf16_8h.html#af30a2cbd2c3415516203b83bd21872f8" > bfloat_inplace_op_addr_space_helper< / a > (/, < span  class = "keyword" > operator< / span > /=);< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00249"  name = "l00249" > < / a > < span  class = "lineno" >   249< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00250"  name = "l00250" > < / a > < span  class = "lineno" >   250< / span > < span  class = "preprocessor" > #undef bfloat_inplace_op_helper< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00251"  name = "l00251" > < / a > < span  class = "lineno" >   251< / span > < span  class = "preprocessor" > #undef bfloat_inplace_op_addr_space_helper< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00252"  name = "l00252" > < / a > < span  class = "lineno" >   252< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00254"  name = "l00254" > < / a > < span  class = "lineno" >   254< / span > < span  class = "comment" > // Bfloat typedef< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00256"  name = "l00256" > < / a > < span  class = "lineno" >   256< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00257"  name = "l00257" > < / a > < span  class = "lineno" > < a  class = "line"  href = "backend_2metal_2kernels_2bf16_8h.html#a7782de82393104dd4ad754ce3b316e82" >   257< / a > < / span > < span  class = "keyword" > typedef< / span >  < span  class = "keyword" > struct < / span > < a  class = "code hl_struct"  href = "struct___m_l_x___b_float16.html" > _MLX_BFloat16< / a >  < a  class = "code hl_struct"  href = "struct___m_l_x___b_float16.html" > bfloat16_t< / a > ;< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00258"  name = "l00258" > < / a > < span  class = "lineno" >   258< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00260"  name = "l00260" > < / a > < span  class = "lineno" >   260< / span > < span  class = "comment" > // Bfloat numeric limits< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00262"  name = "l00262" > < / a > < span  class = "lineno" >   262< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00263"  name = "l00263" > < / a > < span  class = "lineno" >   263< / span > < span  class = "preprocessor" > #pragma METAL internals : enable< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00264"  name = "l00264" > < / a > < span  class = "lineno" >   264< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "foldopen"  id = "foldopen00265"  data-start = "{"  data-end = "}" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00265"  name = "l00265" > < / a > < span  class = "lineno" > < a  class = "line"  href = "namespacemetal.html" >   265< / a > < / span > < span  class = "keyword" > namespace < / span > < a  class = "code hl_namespace"  href = "namespacemetal.html" > metal< / a >  {< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00266"  name = "l00266" > < / a > < span  class = "lineno" >   266< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00267"  name = "l00267" > < / a > < span  class = "lineno" >   267< / span > < span  class = "keyword" > template< / span >  < > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "foldopen"  id = "foldopen00268"  data-start = "{"  data-end = "};" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00268"  name = "l00268" > < / a > < span  class = "lineno" > < a  class = "line"  href = "structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html" >   268< / a > < / span > < span  class = "keyword" > struct < / span > _numeric_limits_impl< < a  class = "code hl_struct"  href = "struct___m_l_x___b_float16.html" > bfloat16_t< / a > >  : _fp_numeric_limits_impl_base {< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00269"  name = "l00269" > < / a > < span  class = "lineno" > < a  class = "line"  href = "structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#af6a681edff230c8d734a1feefb8d1879" >   269< / a > < / span >   < span  class = "keyword" > static< / span >  < span  class = "keyword" > constexpr< / span >  constant < span  class = "keywordtype" > int< / span >  digits = 8;< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00270"  name = "l00270" > < / a > < span  class = "lineno" > < a  class = "line"  href = "structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#a0f48dd0c8a2d2dfa825067fb212b2e6b" >   270< / a > < / span >   < span  class = "keyword" > static< / span >  < span  class = "keyword" > constexpr< / span >  constant < span  class = "keywordtype" > int< / span >  digits10 = 2;< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00271"  name = "l00271" > < / a > < span  class = "lineno" > < a  class = "line"  href = "structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#a8d3905e6f158379a0c52682266e8d0e2" >   271< / a > < / span >   < span  class = "keyword" > static< / span >  < span  class = "keyword" > constexpr< / span >  constant < span  class = "keywordtype" > int< / span >  max_digits10 = 4;< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00272"  name = "l00272" > < / a > < span  class = "lineno" > < a  class = "line"  href = "structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#aaefa8c2cadd11ac7e22f7b2c5edbd1cd" >   272< / a > < / span >   < span  class = "keyword" > static< / span >  < span  class = "keyword" > constexpr< / span >  constant < span  class = "keywordtype" > int< / span >  radix = 2;< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00273"  name = "l00273" > < / a > < span  class = "lineno" > < a  class = "line"  href = "structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#a13829f8c7a7c0efdc8946eff5d3c9470" >   273< / a > < / span >   < span  class = "keyword" > static< / span >  < span  class = "keyword" > constexpr< / span >  constant < span  class = "keywordtype" > int< / span >  min_exponent = -125;< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00274"  name = "l00274" > < / a > < span  class = "lineno" > < a  class = "line"  href = "structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#aeaed172780720e06b8731cef3177e277" >   274< / a > < / span >   < span  class = "keyword" > static< / span >  < span  class = "keyword" > constexpr< / span >  constant < span  class = "keywordtype" > int< / span >  min_exponent10 = -37;< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00275"  name = "l00275" > < / a > < span  class = "lineno" > < a  class = "line"  href = "structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#a61bb136f819fa392c50bdf3c38f3aad2" >   275< / a > < / span >   < span  class = "keyword" > static< / span >  < span  class = "keyword" > constexpr< / span >  constant < span  class = "keywordtype" > int< / span >  max_exponent = 128;< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00276"  name = "l00276" > < / a > < span  class = "lineno" > < a  class = "line"  href = "structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#a76bfb2deb0e0afc011f77bf5a6d0ed94" >   276< / a > < / span >   < span  class = "keyword" > static< / span >  < span  class = "keyword" > constexpr< / span >  constant < span  class = "keywordtype" > int< / span >  max_exponent10 = 38;< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00277"  name = "l00277" > < / a > < span  class = "lineno" >   277< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "foldopen"  id = "foldopen00278"  data-start = "{"  data-end = "}" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00278"  name = "l00278" > < / a > < span  class = "lineno" > < a  class = "line"  href = "structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#adaed80031f5ca0ff69d30ec4c5d0c98f" >   278< / a > < / span >   < span  class = "keyword" > static< / span >  < span  class = "keyword" > constexpr< / span >  < a  class = "code hl_struct"  href = "struct___m_l_x___b_float16.html" > bfloat16_t< / a >  < a  class = "code hl_function"  href = "structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#adaed80031f5ca0ff69d30ec4c5d0c98f" > min< / a > () {< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00279"  name = "l00279" > < / a > < span  class = "lineno" >   279< / span >     < span  class = "keywordflow" > return< / span >  < a  class = "code hl_struct"  href = "struct___m_l_x___b_float16.html" > _MLX_BFloat16< / a > (0x0080, < a  class = "code hl_function"  href = "struct___m_l_x___b_float16.html#a91ccb774773b65f8d4c1aea3f1c6e1ca" > _MLX_BFloat16::bits_to_bfloat< / a > ());< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00280"  name = "l00280" > < / a > < span  class = "lineno" >   280< / span >   }< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "foldopen"  id = "foldopen00281"  data-start = "{"  data-end = "}" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00281"  name = "l00281" > < / a > < span  class = "lineno" > < a  class = "line"  href = "structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#ae81c58b8223e504965183c99d19a2116" >   281< / a > < / span >   < span  class = "keyword" > static< / span >  < span  class = "keyword" > constexpr< / span >  < a  class = "code hl_struct"  href = "struct___m_l_x___b_float16.html" > bfloat16_t< / a >  < a  class = "code hl_function"  href = "structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#ae81c58b8223e504965183c99d19a2116" > lowest< / a > () {< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00282"  name = "l00282" > < / a > < span  class = "lineno" >   282< / span >     < span  class = "keywordflow" > return< / span >  < a  class = "code hl_struct"  href = "struct___m_l_x___b_float16.html" > _MLX_BFloat16< / a > (0xFF7F, < a  class = "code hl_function"  href = "struct___m_l_x___b_float16.html#a91ccb774773b65f8d4c1aea3f1c6e1ca" > _MLX_BFloat16::bits_to_bfloat< / a > ());< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00283"  name = "l00283" > < / a > < span  class = "lineno" >   283< / span >   }< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "foldopen"  id = "foldopen00284"  data-start = "{"  data-end = "}" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00284"  name = "l00284" > < / a > < span  class = "lineno" > < a  class = "line"  href = "structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#a92320d40a58218e40cc414986ac95c50" >   284< / a > < / span >   < span  class = "keyword" > static< / span >  < span  class = "keyword" > constexpr< / span >  < a  class = "code hl_struct"  href = "struct___m_l_x___b_float16.html" > bfloat16_t< / a >  < a  class = "code hl_function"  href = "structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#a92320d40a58218e40cc414986ac95c50" > max< / a > () {< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00285"  name = "l00285" > < / a > < span  class = "lineno" >   285< / span >     < span  class = "keywordflow" > return< / span >  < a  class = "code hl_struct"  href = "struct___m_l_x___b_float16.html" > _MLX_BFloat16< / a > (0x7F7F, < a  class = "code hl_function"  href = "struct___m_l_x___b_float16.html#a91ccb774773b65f8d4c1aea3f1c6e1ca" > _MLX_BFloat16::bits_to_bfloat< / a > ());< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00286"  name = "l00286" > < / a > < span  class = "lineno" >   286< / span >   }< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "foldopen"  id = "foldopen00287"  data-start = "{"  data-end = "}" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00287"  name = "l00287" > < / a > < span  class = "lineno" > < a  class = "line"  href = "structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#a96c4197e3076f0aa9065370b8ece49ca" >   287< / a > < / span >   < span  class = "keyword" > static< / span >  < span  class = "keyword" > constexpr< / span >  < a  class = "code hl_struct"  href = "struct___m_l_x___b_float16.html" > bfloat16_t< / a >  < a  class = "code hl_function"  href = "structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#a96c4197e3076f0aa9065370b8ece49ca" > epsilon< / a > () {< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00288"  name = "l00288" > < / a > < span  class = "lineno" >   288< / span >     < span  class = "keywordflow" > return< / span >  < a  class = "code hl_struct"  href = "struct___m_l_x___b_float16.html" > _MLX_BFloat16< / a > (0x3C00, < a  class = "code hl_function"  href = "struct___m_l_x___b_float16.html#a91ccb774773b65f8d4c1aea3f1c6e1ca" > _MLX_BFloat16::bits_to_bfloat< / a > ());< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00289"  name = "l00289" > < / a > < span  class = "lineno" >   289< / span >   }< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "foldopen"  id = "foldopen00290"  data-start = "{"  data-end = "}" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00290"  name = "l00290" > < / a > < span  class = "lineno" > < a  class = "line"  href = "structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#afa223448fa4f04c1113a85345dd720c3" >   290< / a > < / span >   < span  class = "keyword" > static< / span >  < span  class = "keyword" > constexpr< / span >  < a  class = "code hl_struct"  href = "struct___m_l_x___b_float16.html" > bfloat16_t< / a >  < a  class = "code hl_function"  href = "structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#afa223448fa4f04c1113a85345dd720c3" > round_error< / a > () {< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00291"  name = "l00291" > < / a > < span  class = "lineno" >   291< / span >     < span  class = "keywordflow" > return< / span >  < a  class = "code hl_struct"  href = "struct___m_l_x___b_float16.html" > _MLX_BFloat16< / a > (0x3F00, < a  class = "code hl_function"  href = "struct___m_l_x___b_float16.html#a91ccb774773b65f8d4c1aea3f1c6e1ca" > _MLX_BFloat16::bits_to_bfloat< / a > ());< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00292"  name = "l00292" > < / a > < span  class = "lineno" >   292< / span >   }< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "foldopen"  id = "foldopen00293"  data-start = "{"  data-end = "}" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00293"  name = "l00293" > < / a > < span  class = "lineno" > < a  class = "line"  href = "structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#a61eb741e7af49046beb863abf023b206" >   293< / a > < / span >   < span  class = "keyword" > static< / span >  < span  class = "keyword" > constexpr< / span >  < a  class = "code hl_struct"  href = "struct___m_l_x___b_float16.html" > bfloat16_t< / a >  < a  class = "code hl_function"  href = "structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#a61eb741e7af49046beb863abf023b206" > infinity< / a > () {< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00294"  name = "l00294" > < / a > < span  class = "lineno" >   294< / span >     < span  class = "keywordflow" > return< / span >  < a  class = "code hl_struct"  href = "struct___m_l_x___b_float16.html" > _MLX_BFloat16< / a > (0x7F80, < a  class = "code hl_function"  href = "struct___m_l_x___b_float16.html#a91ccb774773b65f8d4c1aea3f1c6e1ca" > _MLX_BFloat16::bits_to_bfloat< / a > ());< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00295"  name = "l00295" > < / a > < span  class = "lineno" >   295< / span >   }< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "foldopen"  id = "foldopen00296"  data-start = "{"  data-end = "}" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00296"  name = "l00296" > < / a > < span  class = "lineno" > < a  class = "line"  href = "structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#aebeb07c01984be246bc2d1b8f8e4ac7b" >   296< / a > < / span >   < span  class = "keyword" > static< / span >  < span  class = "keyword" > constexpr< / span >  < a  class = "code hl_struct"  href = "struct___m_l_x___b_float16.html" > bfloat16_t< / a >  < a  class = "code hl_function"  href = "structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#aebeb07c01984be246bc2d1b8f8e4ac7b" > quiet_NaN< / a > () {< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00297"  name = "l00297" > < / a > < span  class = "lineno" >   297< / span >     < span  class = "keywordflow" > return< / span >  < a  class = "code hl_struct"  href = "struct___m_l_x___b_float16.html" > _MLX_BFloat16< / a > (0x7FC0, < a  class = "code hl_function"  href = "struct___m_l_x___b_float16.html#a91ccb774773b65f8d4c1aea3f1c6e1ca" > _MLX_BFloat16::bits_to_bfloat< / a > ());< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00298"  name = "l00298" > < / a > < span  class = "lineno" >   298< / span >   }< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "foldopen"  id = "foldopen00299"  data-start = "{"  data-end = "}" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00299"  name = "l00299" > < / a > < span  class = "lineno" > < a  class = "line"  href = "structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#ad1f76a43c7d51a3765174aa6e0dd9f80" >   299< / a > < / span >   < span  class = "keyword" > static< / span >  < span  class = "keyword" > constexpr< / span >  < a  class = "code hl_struct"  href = "struct___m_l_x___b_float16.html" > bfloat16_t< / a >  < a  class = "code hl_function"  href = "structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#ad1f76a43c7d51a3765174aa6e0dd9f80" > signaling_NaN< / a > () {< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00300"  name = "l00300" > < / a > < span  class = "lineno" >   300< / span >     < span  class = "keywordflow" > return< / span >  < a  class = "code hl_struct"  href = "struct___m_l_x___b_float16.html" > _MLX_BFloat16< / a > (0x7F80, < a  class = "code hl_function"  href = "struct___m_l_x___b_float16.html#a91ccb774773b65f8d4c1aea3f1c6e1ca" > _MLX_BFloat16::bits_to_bfloat< / a > ());< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00301"  name = "l00301" > < / a > < span  class = "lineno" >   301< / span >   }< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "foldopen"  id = "foldopen00302"  data-start = "{"  data-end = "}" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00302"  name = "l00302" > < / a > < span  class = "lineno" > < a  class = "line"  href = "structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#a6a9dbcba4dd79cad50876dda506b9eed" >   302< / a > < / span >   < span  class = "keyword" > static< / span >  < span  class = "keyword" > constexpr< / span >  < a  class = "code hl_struct"  href = "struct___m_l_x___b_float16.html" > bfloat16_t< / a >  < a  class = "code hl_function"  href = "structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#a6a9dbcba4dd79cad50876dda506b9eed" > denorm_min< / a > () {< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00303"  name = "l00303" > < / a > < span  class = "lineno" >   303< / span >     < span  class = "keywordflow" > return< / span >  < a  class = "code hl_struct"  href = "struct___m_l_x___b_float16.html" > _MLX_BFloat16< / a > (0x0001, < a  class = "code hl_function"  href = "struct___m_l_x___b_float16.html#a91ccb774773b65f8d4c1aea3f1c6e1ca" > _MLX_BFloat16::bits_to_bfloat< / a > ());< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00304"  name = "l00304" > < / a > < span  class = "lineno" >   304< / span >   }< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00305"  name = "l00305" > < / a > < span  class = "lineno" >   305< / span > };< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00306"  name = "l00306" > < / a > < span  class = "lineno" >   306< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "foldopen"  id = "foldopen00307"  data-start = "{"  data-end = "}" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00307"  name = "l00307" > < / a > < span  class = "lineno" > < a  class = "line"  href = "namespacemetal.html#a83320ba983d90dd1fa5847b6940dc0bb" >   307< / a > < / span > METAL_FUNC < span  class = "keywordtype" > bool< / span >  < a  class = "code hl_function"  href = "namespacemetal.html#a83320ba983d90dd1fa5847b6940dc0bb" > isnan< / a > (< a  class = "code hl_struct"  href = "struct___m_l_x___b_float16.html" > _MLX_BFloat16< / a >  x) {< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00308"  name = "l00308" > < / a > < span  class = "lineno" >   308< / span >   < span  class = "keywordflow" > return< / span >  x != x;< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00309"  name = "l00309" > < / a > < span  class = "lineno" >   309< / span > }< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00310"  name = "l00310" > < / a > < span  class = "lineno" >   310< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00311"  name = "l00311" > < / a > < span  class = "lineno" >   311< / span > } < span  class = "comment" > // namespace metal< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00312"  name = "l00312" > < / a > < span  class = "lineno" >   312< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00313"  name = "l00313" > < / a > < span  class = "lineno" >   313< / span > < span  class = "preprocessor" > #pragma METAL internals : disable< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00314"  name = "l00314" > < / a > < span  class = "lineno" >   314< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00315"  name = "l00315" > < / a > < span  class = "lineno" >   315< / span > < span  class = "preprocessor" > #endif< / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00316"  name = "l00316" > < / a > < span  class = "lineno" >   316< / span >  < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "line" > < a  id = "l00317"  name = "l00317" > < / a > < span  class = "lineno" >   317< / span > < span  class = "preprocessor" > #include " < a  class = "code"  href = "bf16__math_8h.html" > mlx/backend/metal/kernels/bf16_math.h< / a > " < / span > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "ttc"  id = "abackend_2metal_2kernels_2bf16_8h_html_a31ce5e8e860295fa236e0d4b0befeae1" > < div  class = "ttname" > < a  href = "backend_2metal_2kernels_2bf16_8h.html#a31ce5e8e860295fa236e0d4b0befeae1" > float_to_bfloat_bits< / a > < / div > < div  class = "ttdeci" > constexpr METAL_FUNC uint16_t float_to_bfloat_bits(float x)< / div > < div  class = "ttdef" > < b > Definition< / b >  bf16.h:19< / div > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "ttc"  id = "abackend_2metal_2kernels_2bf16_8h_html_a330a0883503cb640f1cf628a7ca50239" > < div  class = "ttname" > < a  href = "backend_2metal_2kernels_2bf16_8h.html#a330a0883503cb640f1cf628a7ca50239" > bfloat_compop< / a > < / div > < div  class = "ttdeci" > #define bfloat_compop(__op__, __operator__)< / div > < div  class = "ttdef" > < b > Definition< / b >  bf16.h:173< / div > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "ttc"  id = "abackend_2metal_2kernels_2bf16_8h_html_a3b33ae338dc4f223d0f3c748de07bad1" > < div  class = "ttname" > < a  href = "backend_2metal_2kernels_2bf16_8h.html#a3b33ae338dc4f223d0f3c748de07bad1" > bfloat_bits_to_float< / a > < / div > < div  class = "ttdeci" > constexpr METAL_FUNC float bfloat_bits_to_float(uint16_t x)< / div > < div  class = "ttdef" > < b > Definition< / b >  bf16.h:35< / div > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "ttc"  id = "abackend_2metal_2kernels_2bf16_8h_html_a4ac82467fbc674e990090f482b9c1e5c" > < div  class = "ttname" > < a  href = "backend_2metal_2kernels_2bf16_8h.html#a4ac82467fbc674e990090f482b9c1e5c" > bfloat_inplace_op< / a > < / div > < div  class = "ttdeci" > #define bfloat_inplace_op(itype)< / div > < div  class = "ttdef" > < b > Definition< / b >  bf16.h:214< / div > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "ttc"  id = "abackend_2metal_2kernels_2bf16_8h_html_a6aedc8d6d0980134ac69b96f22d9a855" > < div  class = "ttname" > < a  href = "backend_2metal_2kernels_2bf16_8h.html#a6aedc8d6d0980134ac69b96f22d9a855" > operator-< / a > < / div > < div  class = "ttdeci" > constexpr METAL_FUNC _MLX_BFloat16 operator-(_MLX_BFloat16 x)< / div > < div  class = "ttdef" > < b > Definition< / b >  bf16.h:135< / div > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "ttc"  id = "abackend_2metal_2kernels_2bf16_8h_html_a7694892a131c0e31e5153c088cccb707" > < div  class = "ttname" > < a  href = "backend_2metal_2kernels_2bf16_8h.html#a7694892a131c0e31e5153c088cccb707" > bfloat_binop< / a > < / div > < div  class = "ttdeci" > #define bfloat_binop(_op_, _operator_)< / div > < div  class = "ttdef" > < b > Definition< / b >  bf16.h:156< / div > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "ttc"  id = "abackend_2metal_2kernels_2bf16_8h_html_a7782de82393104dd4ad754ce3b316e82" > < div  class = "ttname" > < a  href = "backend_2metal_2kernels_2bf16_8h.html#a7782de82393104dd4ad754ce3b316e82" > bfloat16_t< / a > < / div > < div  class = "ttdeci" > struct _MLX_BFloat16 bfloat16_t< / div > < div  class = "ttdef" > < b > Definition< / b >  bf16.h:257< / div > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "ttc"  id = "abackend_2metal_2kernels_2bf16_8h_html_a7e5992f7fcd8f2cdadcc1d7f6aefbb5a" > < div  class = "ttname" > < a  href = "backend_2metal_2kernels_2bf16_8h.html#a7e5992f7fcd8f2cdadcc1d7f6aefbb5a" > can_convert_from_bfloat< / a > < / div > < div  class = "ttdeci" > static constexpr constant bool can_convert_from_bfloat< / div > < div  class = "ttdef" > < b > Definition< / b >  bf16.h:47< / div > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "ttc"  id = "abackend_2metal_2kernels_2bf16_8h_html_aae77817d261452b2f001f4d947a3e04e" > < div  class = "ttname" > < a  href = "backend_2metal_2kernels_2bf16_8h.html#aae77817d261452b2f001f4d947a3e04e" > can_convert_to_bfloat< / a > < / div > < div  class = "ttdeci" > static constexpr constant bool can_convert_to_bfloat< / div > < div  class = "ttdef" > < b > Definition< / b >  bf16.h:43< / div > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "ttc"  id = "abackend_2metal_2kernels_2bf16_8h_html_af30a2cbd2c3415516203b83bd21872f8" > < div  class = "ttname" > < a  href = "backend_2metal_2kernels_2bf16_8h.html#af30a2cbd2c3415516203b83bd21872f8" > bfloat_inplace_op_addr_space_helper< / a > < / div > < div  class = "ttdeci" > #define bfloat_inplace_op_addr_space_helper(__op__, __operator__, itype)< / div > < div  class = "ttdef" > < b > Definition< / b >  bf16.h:209< / div > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "ttc"  id = "abf16__math_8h_html" > < div  class = "ttname" > < a  href = "bf16__math_8h.html" > bf16_math.h< / a > < / div > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "ttc"  id = "anamespacemetal_html" > < div  class = "ttname" > < a  href = "namespacemetal.html" > metal< / a > < / div > < div  class = "ttdef" > < b > Definition< / b >  bf16.h:265< / div > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "ttc"  id = "anamespacemetal_html_a83320ba983d90dd1fa5847b6940dc0bb" > < div  class = "ttname" > < a  href = "namespacemetal.html#a83320ba983d90dd1fa5847b6940dc0bb" > metal::isnan< / a > < / div > < div  class = "ttdeci" > METAL_FUNC bool isnan(_MLX_BFloat16 x)< / div > < div  class = "ttdef" > < b > Definition< / b >  bf16.h:307< / div > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "ttc"  id = "astruct___m_l_x___b_float16_1_1bits__to__bfloat__struct_html" > < div  class = "ttname" > < a  href = "struct___m_l_x___b_float16_1_1bits__to__bfloat__struct.html" > _MLX_BFloat16::bits_to_bfloat_struct< / a > < / div > < div  class = "ttdef" > < b > Definition< / b >  bf16.h:63< / div > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "ttc"  id = "astruct___m_l_x___b_float16_html" > < div  class = "ttname" > < a  href = "struct___m_l_x___b_float16.html" > _MLX_BFloat16< / a > < / div > < div  class = "ttdef" > < b > Definition< / b >  bf16.h:54< / div > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "ttc"  id = "astruct___m_l_x___b_float16_html_a24c5736f234e09a0c82b00c7e44cc547" > < div  class = "ttname" > < a  href = "struct___m_l_x___b_float16.html#a24c5736f234e09a0c82b00c7e44cc547" > _MLX_BFloat16::_MLX_BFloat16< / a > < / div > < div  class = "ttdeci" > constexpr METAL_FUNC _MLX_BFloat16(T x) thread< / div > < div  class = "ttdef" > < b > Definition< / b >  bf16.h:76< / div > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "ttc"  id = "astruct___m_l_x___b_float16_html_a4113263b63e3757ea8334cc4f0f5c3c8" > < div  class = "ttname" > < a  href = "struct___m_l_x___b_float16.html#a4113263b63e3757ea8334cc4f0f5c3c8" > _MLX_BFloat16::bits_< / a > < / div > < div  class = "ttdeci" > uint16_t bits_< / div > < div  class = "ttdef" > < b > Definition< / b >  bf16.h:57< / div > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "ttc"  id = "astruct___m_l_x___b_float16_html_a50d825f05a162d0ac133ad8b6f3c3112" > < div  class = "ttname" > < a  href = "struct___m_l_x___b_float16.html#a50d825f05a162d0ac133ad8b6f3c3112" > _MLX_BFloat16::_MLX_BFloat16< / a > < / div > < div  class = "ttdeci" > constexpr METAL_FUNC _MLX_BFloat16(uint16_t bits, bits_to_bfloat_struct)< / div > < div  class = "ttdef" > < b > Definition< / b >  bf16.h:67< / div > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "ttc"  id = "astruct___m_l_x___b_float16_html_a91ccb774773b65f8d4c1aea3f1c6e1ca" > < div  class = "ttname" > < a  href = "struct___m_l_x___b_float16.html#a91ccb774773b65f8d4c1aea3f1c6e1ca" > _MLX_BFloat16::bits_to_bfloat< / a > < / div > < div  class = "ttdeci" > static constexpr METAL_FUNC bits_to_bfloat_struct bits_to_bfloat()< / div > < div  class = "ttdef" > < b > Definition< / b >  bf16.h:64< / div > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "ttc"  id = "astruct___m_l_x___b_float16_html_ab1af7700f5d1e4ab567da6a34fa84668" > < div  class = "ttname" > < a  href = "struct___m_l_x___b_float16.html#ab1af7700f5d1e4ab567da6a34fa84668" > _MLX_BFloat16::_MLX_BFloat16< / a > < / div > < div  class = "ttdeci" > _MLX_BFloat16() thread=default< / div > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "ttc"  id = "astruct___m_l_x___b_float16_html_ad2701d003e8fad168c89abc3907c6e53" > < div  class = "ttname" > < a  href = "struct___m_l_x___b_float16.html#ad2701d003e8fad168c89abc3907c6e53" > _MLX_BFloat16::_MLX_BFloat16< / a > < / div > < div  class = "ttdeci" > constexpr METAL_FUNC _MLX_BFloat16(T x) device< / div > < div  class = "ttdef" > < b > Definition< / b >  bf16.h:88< / div > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "ttc"  id = "astruct___m_l_x___b_float16_html_adeb880f31121c6dc40ce47765c6c7455" > < div  class = "ttname" > < a  href = "struct___m_l_x___b_float16.html#adeb880f31121c6dc40ce47765c6c7455" > _MLX_BFloat16::_MLX_BFloat16< / a > < / div > < div  class = "ttdeci" > constexpr METAL_FUNC _MLX_BFloat16(T x) threadgroup< / div > < div  class = "ttdef" > < b > Definition< / b >  bf16.h:82< / div > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "ttc"  id = "astruct___m_l_x___b_float16_html_aec7fa716fd621ce1843338027bcb0118" > < div  class = "ttname" > < a  href = "struct___m_l_x___b_float16.html#aec7fa716fd621ce1843338027bcb0118" > _MLX_BFloat16::_MLX_BFloat16< / a > < / div > < div  class = "ttdeci" > constexpr METAL_FUNC _MLX_BFloat16(T x) const ant< / div > < div  class = "ttdef" > < b > Definition< / b >  bf16.h:94< / div > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "ttc"  id = "astructmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4_html_a61eb741e7af49046beb863abf023b206" > < div  class = "ttname" > < a  href = "structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#a61eb741e7af49046beb863abf023b206" > metal::_numeric_limits_impl<  bfloat16_t > ::infinity< / a > < / div > < div  class = "ttdeci" > static constexpr bfloat16_t infinity()< / div > < div  class = "ttdef" > < b > Definition< / b >  bf16.h:293< / div > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "ttc"  id = "astructmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4_html_a6a9dbcba4dd79cad50876dda506b9eed" > < div  class = "ttname" > < a  href = "structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#a6a9dbcba4dd79cad50876dda506b9eed" > metal::_numeric_limits_impl<  bfloat16_t > ::denorm_min< / a > < / div > < div  class = "ttdeci" > static constexpr bfloat16_t denorm_min()< / div > < div  class = "ttdef" > < b > Definition< / b >  bf16.h:302< / div > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "ttc"  id = "astructmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4_html_a92320d40a58218e40cc414986ac95c50" > < div  class = "ttname" > < a  href = "structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#a92320d40a58218e40cc414986ac95c50" > metal::_numeric_limits_impl<  bfloat16_t > ::max< / a > < / div > < div  class = "ttdeci" > static constexpr bfloat16_t max()< / div > < div  class = "ttdef" > < b > Definition< / b >  bf16.h:284< / div > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "ttc"  id = "astructmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4_html_a96c4197e3076f0aa9065370b8ece49ca" > < div  class = "ttname" > < a  href = "structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#a96c4197e3076f0aa9065370b8ece49ca" > metal::_numeric_limits_impl<  bfloat16_t > ::epsilon< / a > < / div > < div  class = "ttdeci" > static constexpr bfloat16_t epsilon()< / div > < div  class = "ttdef" > < b > Definition< / b >  bf16.h:287< / div > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "ttc"  id = "astructmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4_html_ad1f76a43c7d51a3765174aa6e0dd9f80" > < div  class = "ttname" > < a  href = "structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#ad1f76a43c7d51a3765174aa6e0dd9f80" > metal::_numeric_limits_impl<  bfloat16_t > ::signaling_NaN< / a > < / div > < div  class = "ttdeci" > static constexpr bfloat16_t signaling_NaN()< / div > < div  class = "ttdef" > < b > Definition< / b >  bf16.h:299< / div > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "ttc"  id = "astructmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4_html_adaed80031f5ca0ff69d30ec4c5d0c98f" > < div  class = "ttname" > < a  href = "structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#adaed80031f5ca0ff69d30ec4c5d0c98f" > metal::_numeric_limits_impl<  bfloat16_t > ::min< / a > < / div > < div  class = "ttdeci" > static constexpr bfloat16_t min()< / div > < div  class = "ttdef" > < b > Definition< / b >  bf16.h:278< / div > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "ttc"  id = "astructmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4_html_ae81c58b8223e504965183c99d19a2116" > < div  class = "ttname" > < a  href = "structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#ae81c58b8223e504965183c99d19a2116" > metal::_numeric_limits_impl<  bfloat16_t > ::lowest< / a > < / div > < div  class = "ttdeci" > static constexpr bfloat16_t lowest()< / div > < div  class = "ttdef" > < b > Definition< / b >  bf16.h:281< / div > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "ttc"  id = "astructmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4_html_aebeb07c01984be246bc2d1b8f8e4ac7b" > < div  class = "ttname" > < a  href = "structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#aebeb07c01984be246bc2d1b8f8e4ac7b" > metal::_numeric_limits_impl<  bfloat16_t > ::quiet_NaN< / a > < / div > < div  class = "ttdeci" > static constexpr bfloat16_t quiet_NaN()< / div > < div  class = "ttdef" > < b > Definition< / b >  bf16.h:296< / div > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< div  class = "ttc"  id = "astructmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4_html_afa223448fa4f04c1113a85345dd720c3" > < div  class = "ttname" > < a  href = "structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#afa223448fa4f04c1113a85345dd720c3" > metal::_numeric_limits_impl<  bfloat16_t > ::round_error< / a > < / div > < div  class = "ttdeci" > static constexpr bfloat16_t round_error()< / div > < div  class = "ttdef" > < b > Definition< / b >  bf16.h:290< / div > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / div > <!--  fragment  --> < / div > <!--  contents  --> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								<!--  start footer part  --> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< hr  class = "footer" / > < address  class = "footer" > < small > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Generated by  < a  href = "https://www.doxygen.org/index.html" > < img  class = "footer"  src = "doxygen.svg"  width = "104"  height = "31"  alt = "doxygen" / > < / a >  1.10.0
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / small > < / address > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / body > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								< / html >