+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* value_gte.c :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: agilliar <agilliar@student.42mulhouse.fr> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2026/06/08 13:56:19 by agilliar #+# #+# */
+/* Updated: 2026/06/08 13:59:01 by agilliar ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+#include "builtin_register.h"
+#include "value.h"
+#include "defer.h"
+
+t_value builtin_igte_impl(t_value self, t_value arg)
+{
+ t_value res;
+
+ (void) self;
+ errdefer(value_drop, &arg);
+ res = value_new_builtin(BUILTIN_IGTE1);
+ res.val.v_int = *value_int(&arg);
+ return (res);
+}
+
+t_value builtin_igte1_impl(t_value self, t_value arg)
+{
+ errdefer(value_drop, &arg);
+ return (value_new_uint(self.val.v_int >= *value_int(&arg)));
+}
+
+t_value builtin_ugte_impl(t_value self, t_value arg)
+{
+ t_value res;
+
+ (void) self;
+ errdefer(value_drop, &arg);
+ res = value_new_builtin(BUILTIN_UGTE1);
+ res.val.v_uint = *value_uint(&arg);
+ return (res);
+}
+
+t_value builtin_ugte1_impl(t_value self, t_value arg)
+{
+ errdefer(value_drop, &arg);
+ return (value_new_uint(self.val.v_uint >= *value_uint(&arg)));
+}
+
+__attribute__((constructor))
+void builtin_gte_register(void)
+{
+ builtin_register(BUILTIN_IGTE, &builtin_igte_impl, "igte");
+ builtin_register(BUILTIN_IGTE1, &builtin_igte1_impl, "igte1");
+ builtin_register(BUILTIN_UGTE, &builtin_ugte_impl, "ugte");
+ builtin_register(BUILTIN_UGTE1, &builtin_ugte1_impl, "ugte1");
+}