================
@@ -13,19 +13,25 @@
     const UINT_TYPE sign_bit = (UINT_TYPE)1                                    
\
                                << (sizeof(INT_TYPE_SCALAR) * 8 - 1);           
\
     const UINT_TYPE sign_bit_mask = sign_bit - (UINT_TYPE)1;                   
\
-    INT_TYPE ix = CLC_AS_TYPE(INT_TYPE)(x);                                    
\
-    UINT_TYPE ax = CLC_AS_TYPE(UINT_TYPE)(ix) & sign_bit_mask;                 
\
-    INT_TYPE mx = CLC_AS_TYPE(INT_TYPE)(sign_bit) - ix;                        
\
-    mx = CLC_AS_TYPE(INT_TYPE)(ix) < (INT_TYPE)0 ? mx : ix;                    
\
-    INT_TYPE iy = CLC_AS_TYPE(INT_TYPE)(y);                                    
\
-    UINT_TYPE ay = CLC_AS_TYPE(UINT_TYPE)(iy) & sign_bit_mask;                 
\
-    INT_TYPE my = CLC_AS_TYPE(INT_TYPE)(sign_bit) - iy;                        
\
-    my = iy < (INT_TYPE)0 ? my : iy;                                           
\
+    UINT_TYPE ix = CLC_AS_TYPE(UINT_TYPE)(x);                                  
\
+    UINT_TYPE ax = ix & sign_bit_mask;                                         
\
+    UINT_TYPE mxu = sign_bit - ix;                                             
\
+    INT_TYPE mx = CLC_AS_TYPE(INT_TYPE)(mxu);                                  
\
+    mx = CLC_AS_TYPE(INT_TYPE)(ix) < (INT_TYPE)0 ? mx                          
\
+                                                 : CLC_AS_TYPE(INT_TYPE)(ix);  
\
+    UINT_TYPE iy = CLC_AS_TYPE(UINT_TYPE)(y);                                  
\
+    UINT_TYPE ay = iy & sign_bit_mask;                                         
\
+    UINT_TYPE myu = sign_bit - iy;                                             
\
+    INT_TYPE my = CLC_AS_TYPE(INT_TYPE)(myu);                                  
\
+    my = CLC_AS_TYPE(INT_TYPE)(iy) < (INT_TYPE)0 ? my                          
\
+                                                 : CLC_AS_TYPE(INT_TYPE)(iy);  
\
     INT_TYPE t = mx + (mx < my ? (INT_TYPE)1 : (INT_TYPE)-1);                  
\
-    INT_TYPE r = CLC_AS_TYPE(INT_TYPE)(sign_bit) - t;                          
\
-    r = t < (INT_TYPE)0 ? r : t;                                               
\
+    UINT_TYPE r = sign_bit - CLC_AS_TYPE(UINT_TYPE)(t);                        
\
+    r = (t < (INT_TYPE)0 || (t == (INT_TYPE)0 && mx < my))                     
\
+            ? r                                                                
\
+            : CLC_AS_TYPE(UINT_TYPE)(t);                                       
\
     r = __clc_isnan(x) ? ix : r;                                               
\
-    r = __clc_isnan(y) ? CLC_AS_TYPE(INT_TYPE)(iy) : r;                        
\
+    r = __clc_isnan(y) ? iy : r;                                               
\
     r = ((ax | ay) == (UINT_TYPE)0 || ix == iy) ? iy : r;                      
\
----------------
arsenm wrote:

```suggestion
    r = ((CLC_AS_TYPE(INT_TYPE)(ax) | CLC_AS_TYPE(INT_TYPE)(ay)) == 0 | ix == 
iy) ? iy : r;
```




https://github.com/llvm/llvm-project/pull/127469
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to