rkavanap commented on a change in pull request #11053:
URL: https://github.com/apache/arrow/pull/11053#discussion_r749315960



##########
File path: cpp/src/gandiva/precompiled/arithmetic_ops.cc
##########
@@ -104,6 +104,69 @@ NUMERIC_DATE_TYPES(BINARY_RELATIONAL, 
greater_than_or_equal_to, >=)
 
 #undef BINARY_RELATIONAL
 
+// Returns the greatest or least value from a list of values
+#define COMPARE_TWO_VALUES(NAME, TYPE, OP)                            \
+  FORCE_INLINE                                                        \
+  gdv_##TYPE NAME##_##TYPE##_##TYPE(gdv_##TYPE in1, gdv_##TYPE in2) { \
+    return (in1 OP in2 ? in1 : in2);                                  \
+  }
+
+#define COMPARE_THREE_VALUES(NAME, TYPE, OP)                                 \
+  FORCE_INLINE                                                               \
+  gdv_##TYPE NAME##_##TYPE##_##TYPE##_##TYPE(gdv_##TYPE in1, gdv_##TYPE in2, \
+                                             gdv_##TYPE in3) {               \
+    gdv_##TYPE compared = (in1 OP in2 ? in1 : in2);                          \
+    return (compared OP in3 ? compared : in3);                               \
+  }
+
+#define COMPARE_FOUR_VALUES(NAME, TYPE, OP)                                    
         \
+  FORCE_INLINE                                                                 
         \
+  gdv_##TYPE NAME##_##TYPE##_##TYPE##_##TYPE##_##TYPE(gdv_##TYPE in1, 
gdv_##TYPE in2,   \
+                                                      gdv_##TYPE in3, 
gdv_##TYPE in4) { \
+    gdv_##TYPE compared = (in1 OP in2 ? in1 : in2);                            
         \
+    compared = (compared OP in3 ? compared : in3);                             
         \
+    return (compared OP in4 ? compared : in4);                                 
         \
+  }
+
+#define COMPARE_FIVE_VALUES(NAME, TYPE, OP)                                    
         \
+  FORCE_INLINE                                                                 
         \
+  gdv_##TYPE NAME##_##TYPE##_##TYPE##_##TYPE##_##TYPE##_##TYPE(                
         \
+      gdv_##TYPE in1, gdv_##TYPE in2, gdv_##TYPE in3, gdv_##TYPE in4, 
gdv_##TYPE in5) { \
+    gdv_##TYPE compared = (in1 OP in2 ? in1 : in2);                            
         \
+    compared = (compared OP in3 ? compared : in3);                             
         \
+    compared = (compared OP in4 ? compared : in4);                             
         \
+    return (compared OP in5 ? compared : in5);                                 
         \
+  }
+
+#define COMPARE_SIX_VALUES(NAME, TYPE, OP)                                     
       \
+  FORCE_INLINE                                                                 
       \
+  gdv_##TYPE NAME##_##TYPE##_##TYPE##_##TYPE##_##TYPE##_##TYPE##_##TYPE(       
       \
+      gdv_##TYPE in1, gdv_##TYPE in2, gdv_##TYPE in3, gdv_##TYPE in4, 
gdv_##TYPE in5, \
+      gdv_##TYPE in6) {                                                        
       \
+    gdv_##TYPE compared = (in1 OP in2 ? in1 : in2);                            
       \

Review comment:
       ok




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to