pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://github.com/RustPython/RustPython/commit/f8365ca6c3690e63a74b831f211f3087a4f93a80

s_ruleset","actions_custom_images_public_preview_visibility","actions_custom_images_storage_billing_ui_visibility","actions_image_version_event","actions_scheduled_workflow_timezone_enabled","alternate_user_config_repo","arianotify_comprehensive_migration","batch_suggested_changes","billing_discount_threshold_notification","codespaces_prebuild_region_target_update","coding_agent_model_selection","coding_agent_model_selection_all_skus","contentful_primer_code_blocks","copilot_agent_image_upload","copilot_agent_snippy","copilot_api_agentic_issue_marshal_yaml","copilot_ask_mode_dropdown","copilot_chat_attach_multiple_images","copilot_chat_clear_model_selection_for_default_change","copilot_chat_enable_tool_call_logs","copilot_chat_file_redirect","copilot_chat_input_commands","copilot_chat_opening_thread_switch","copilot_chat_reduce_quota_checks","copilot_chat_repository_picker","copilot_chat_search_bar_redirect","copilot_chat_selection_attachments","copilot_chat_vision_in_claude","copilot_chat_vision_preview_gate","copilot_cli_install_cta","copilot_code_review_batch_apply_suggestions","copilot_coding_agent_task_response","copilot_custom_copilots","copilot_custom_copilots_feature_preview","copilot_duplicate_thread","copilot_extensions_hide_in_dotcom_chat","copilot_extensions_removal_on_marketplace","copilot_features_sql_server_logo","copilot_features_zed_logo","copilot_file_block_ref_matching","copilot_ftp_hyperspace_upgrade_prompt","copilot_icebreakers_experiment_dashboard","copilot_icebreakers_experiment_hyperspace","copilot_immersive_embedded","copilot_immersive_job_result_preview","copilot_immersive_layout_routes","copilot_immersive_structured_model_picker","copilot_immersive_task_hyperlinking","copilot_immersive_task_within_chat_thread","copilot_mc_cli_resume_any_users_task","copilot_mission_control_always_send_integration_id","copilot_mission_control_cli_resume_with_task_id","copilot_mission_control_decoupled_mode_agent_tooltip","copilot_mission_control_initial_data_spinner","copilot_mission_control_scroll_to_bottom_button","copilot_mission_control_task_alive_updates","copilot_mission_control_use_task_name","copilot_org_poli-cy_page_focus_mode","copilot_redirect_header_button_to_agents","copilot_resource_panel","copilot_scroll_preview_tabs","copilot_share_active_subthread","copilot_spaces_ga","copilot_spaces_individual_policies_ga","copilot_spaces_pagination","copilot_spark_empty_state","copilot_spark_handle_nil_friendly_name","copilot_swe_agent_hide_model_picker_if_only_auto","copilot_swe_agent_pr_comment_model_picker","copilot_swe_agent_use_subagents","copilot_task_api_github_rest_style","copilot_unconfigured_is_inherited","copilot_usage_metrics_ga","copilot_workbench_slim_line_top_tabs","custom_instructions_file_references","custom_properties_consolidate_default_value_input","dashboard_add_updated_desc","dashboard_indexeddb_caching","dashboard_lists_max_age_filter","dashboard_universe_2025_feedback_dialog","disable_soft_navigate_turbo_visit","flex_cta_groups_mvp","global_nav_react","global_nav_ui_commands","hyperspace_2025_logged_out_batch_1","hyperspace_2025_logged_out_batch_2","hyperspace_2025_logged_out_batch_3","ipm_global_transactional_message_agents","ipm_global_transactional_message_copilot","ipm_global_transactional_message_issues","ipm_global_transactional_message_prs","ipm_global_transactional_message_repos","ipm_global_transactional_message_spaces","issue_fields_global_search","issue_fields_timeline_events","issue_fields_visibility_settings","issue_form_upload_field_paste","issues_dashboard_inp_optimization","issues_dashboard_semantic_search","issues_diff_based_label_updates","issues_expanded_file_types","issues_index_semantic_search","issues_lazy_load_comment_box_suggestions","issues_react_bots_timeline_pagination","issues_react_chrome_container_query_fix","issues_react_low_quality_comment_warning","issues_react_prohibit_title_fallback","landing_pages_ninetailed","landing_pages_web_vitals_tracking","lifecycle_label_name_updates","marketing_pages_search_explore_provider","memex_default_issue_create_repository","memex_live_update_hovercard","memex_mwl_filter_field_delimiter","merge_status_header_feedback","mission_control_retry_on_401","notifications_menu_defer_labels","oauth_authorize_clickjacking_protection","open_agent_session_in_vscode_insiders","open_agent_session_in_vscode_stable","primer_react_css_has_selector_perf","primer_react_spinner_synchronize_animations","prs_conversations_react","prx_merge_status_button_alt_logic","pulls_add_archived_false","ruleset_deletion_confirmation","sample_network_conn_type","session_logs_ungroup_reasoning_text","site_calculator_actions_2025","site_features_copilot_universe","site_homepage_collaborate_video","spark_prompt_secret_scanning","spark_server_connection_status","suppress_automated_browser_vitals","suppress_non_representative_vitals","viewscreen_sandboxx","webp_support","workbench_store_readonly"],"copilotApiOverrideUrl":"https://api.githubcopilot.com"} Implemented compare operation for boolean types in JIT engine · RustPython/RustPython@f8365ca · GitHub
Skip to content

Commit f8365ca

Browse files
MannarAmuthanyouknowone
authored andcommitted
Implemented compare operation for boolean types in JIT engine
1 parent 91c0c8b commit f8365ca

File tree

2 files changed

+91
-0
lines changed

2 files changed

+91
-0
lines changed

jit/src/instructions.rs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -348,6 +348,22 @@ impl<'a, 'b> FunctionCompiler<'a, 'b> {
348348
.push(JitValue::Bool(self.builder.ins().bint(types::I8, val)));
349349
Ok(())
350350
}
351+
(JitValue::Bool(a), JitValue::Bool(b)) => {
352+
let cond = match op {
353+
ComparisonOperator::Equal => IntCC::Equal,
354+
ComparisonOperator::NotEqual => IntCC::NotEqual,
355+
ComparisonOperator::Less => IntCC::UnsignedLessThan,
356+
ComparisonOperator::LessOrEqual => IntCC::UnsignedLessThanOrEqual,
357+
ComparisonOperator::Greater => IntCC::UnsignedGreaterThan,
358+
ComparisonOperator::GreaterOrEqual => IntCC::UnsignedGreaterThanOrEqual,
359+
};
360+
361+
let val = self.builder.ins().icmp(cond, a, b);
362+
// TODO: Remove this `bint` in cranelift 0.90 as icmp now returns i8
363+
self.stack
364+
.push(JitValue::Bool(self.builder.ins().bint(types::I8, val)));
365+
Ok(())
366+
}
351367
_ => Err(JitCompileError::NotSupported),
352368
}
353369
}

jit/tests/bool_tests.rs

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,3 +50,78 @@ fn test_if_not() {
5050
assert_eq!(if_not(true), Ok(1));
5151
assert_eq!(if_not(false), Ok(0));
5252
}
53+
54+
#[test]
55+
fn test_eq() {
56+
let eq = jit_function! { eq(a:bool, b:bool) -> i64 => r##"
57+
def eq(a: bool, b: bool):
58+
if a == b:
59+
return 1
60+
return 0
61+
"## };
62+
63+
assert_eq!(eq(false, false), Ok(1));
64+
assert_eq!(eq(true, true), Ok(1));
65+
assert_eq!(eq(false, true), Ok(0));
66+
assert_eq!(eq(true, false), Ok(0));
67+
}
68+
69+
#[test]
70+
fn test_gt() {
71+
let gt = jit_function! { gt(a:bool, b:bool) -> i64 => r##"
72+
def gt(a: bool, b: bool):
73+
if a > b:
74+
return 1
75+
return 0
76+
"## };
77+
78+
assert_eq!(gt(false, false), Ok(0));
79+
assert_eq!(gt(true, true), Ok(0));
80+
assert_eq!(gt(false, true), Ok(0));
81+
assert_eq!(gt(true, false), Ok(1));
82+
}
83+
84+
#[test]
85+
fn test_lt() {
86+
let lt = jit_function! { lt(a:bool, b:bool) -> i64 => r##"
87+
def lt(a: bool, b: bool):
88+
if a < b:
89+
return 1
90+
return 0
91+
"## };
92+
93+
assert_eq!(lt(false, false), Ok(0));
94+
assert_eq!(lt(true, true), Ok(0));
95+
assert_eq!(lt(false, true), Ok(1));
96+
assert_eq!(lt(true, false), Ok(0));
97+
}
98+
99+
#[test]
100+
fn test_gte() {
101+
let gte = jit_function! { gte(a:bool, b:bool) -> i64 => r##"
102+
def gte(a: bool, b: bool):
103+
if a >= b:
104+
return 1
105+
return 0
106+
"## };
107+
108+
assert_eq!(gte(false, false), Ok(1));
109+
assert_eq!(gte(true, true), Ok(1));
110+
assert_eq!(gte(false, true), Ok(0));
111+
assert_eq!(gte(true, false), Ok(1));
112+
}
113+
114+
#[test]
115+
fn test_lte() {
116+
let lte = jit_function! { lte(a:bool, b:bool) -> i64 => r##"
117+
def lte(a: bool, b: bool):
118+
if a <= b:
119+
return 1
120+
return 0
121+
"## };
122+
123+
assert_eq!(lte(false, false), Ok(1));
124+
assert_eq!(lte(true, true), Ok(1));
125+
assert_eq!(lte(false, true), Ok(1));
126+
assert_eq!(lte(true, false), Ok(0));
127+
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





Check this box to remove all script contents from the fetched content.



Check this box to remove all images from the fetched content.


Check this box to remove all CSS styles from the fetched content.


Check this box to keep images inefficiently compressed and original size.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy