|
108 | 108 | //! predicated deterministic special-register reads |
109 | 109 | //! DIV_DISABLE_GLOBAL_LOADS default: false; set 1/true/yes/on to suppress |
110 | 110 | //! bounded read-only global loads from the input buffer |
| 111 | +//! DIV_DISABLE_GLOBAL_STORE_ROUNDTRIPS default: false; set 1/true/yes/on to suppress |
| 112 | +//! per-thread global-memory store/load roundtrips |
| 113 | +//! DIV_DISABLE_CONST_MEMORY default: false; set 1/true/yes/on to suppress |
| 114 | +//! bounded read-only constant-memory loads |
111 | 115 | //! DIV_DISABLE_LOCAL_MEMORY default: false; set 1/true/yes/on to suppress |
112 | 116 | //! local-memory store/load roundtrips |
113 | 117 | //! DIV_DISABLE_SHARED_MEMORY default: false; set 1/true/yes/on to suppress |
@@ -541,6 +545,10 @@ struct Args { |
541 | 545 | #[arg(long)] |
542 | 546 | disable_global_loads: bool, |
543 | 547 | #[arg(long)] |
| 548 | + disable_global_store_roundtrips: bool, |
| 549 | + #[arg(long)] |
| 550 | + disable_const_memory: bool, |
| 551 | + #[arg(long)] |
544 | 552 | disable_local_memory: bool, |
545 | 553 | #[arg(long)] |
546 | 554 | disable_shared_memory: bool, |
@@ -921,6 +929,11 @@ impl Args { |
921 | 929 | "DIV_DISABLE_PREDICATED_SPECIAL_REGS" |
922 | 930 | ); |
923 | 931 | set_bool!(self.disable_global_loads, "DIV_DISABLE_GLOBAL_LOADS"); |
| 932 | + set_bool!( |
| 933 | + self.disable_global_store_roundtrips, |
| 934 | + "DIV_DISABLE_GLOBAL_STORE_ROUNDTRIPS" |
| 935 | + ); |
| 936 | + set_bool!(self.disable_const_memory, "DIV_DISABLE_CONST_MEMORY"); |
924 | 937 | set_bool!(self.disable_local_memory, "DIV_DISABLE_LOCAL_MEMORY"); |
925 | 938 | set_bool!(self.disable_shared_memory, "DIV_DISABLE_SHARED_MEMORY"); |
926 | 939 | set_bool!(self.disable_f32_arith, "DIV_DISABLE_F32_ARITH"); |
@@ -1305,6 +1318,9 @@ impl Config { |
1305 | 1318 | let disable_predicated_special_regs = |
1306 | 1319 | env_bool("DIV_DISABLE_PREDICATED_SPECIAL_REGS")?.unwrap_or(false); |
1307 | 1320 | let disable_global_loads = env_bool("DIV_DISABLE_GLOBAL_LOADS")?.unwrap_or(false); |
| 1321 | + let disable_global_store_roundtrips = |
| 1322 | + env_bool("DIV_DISABLE_GLOBAL_STORE_ROUNDTRIPS")?.unwrap_or(false); |
| 1323 | + let disable_const_memory = env_bool("DIV_DISABLE_CONST_MEMORY")?.unwrap_or(false); |
1308 | 1324 | let disable_local_memory = env_bool("DIV_DISABLE_LOCAL_MEMORY")?.unwrap_or(false); |
1309 | 1325 | let disable_shared_memory = env_bool("DIV_DISABLE_SHARED_MEMORY")?.unwrap_or(false); |
1310 | 1326 | let disable_f32_arith = env_bool("DIV_DISABLE_F32_ARITH")?.unwrap_or(false); |
@@ -1527,6 +1543,10 @@ impl Config { |
1527 | 1543 | && !disable_special_regs |
1528 | 1544 | && !disable_predicated_unary, |
1529 | 1545 | emit_global_loads: !disable_global_loads, |
| 1546 | + emit_global_store_roundtrips: !disable_global_store_roundtrips |
| 1547 | + && !disable_mul_wide |
| 1548 | + && !disable_wide_int, |
| 1549 | + emit_const_memory: !disable_const_memory, |
1530 | 1550 | emit_local_memory: !disable_local_memory, |
1531 | 1551 | emit_shared_memory: !disable_shared_memory && !disable_mul_wide && !disable_wide_int, |
1532 | 1552 | emit_f32_arith: !disable_f32_arith && !disable_bitwise_binops, |
@@ -1888,7 +1908,7 @@ fn main() -> Result<()> { |
1888 | 1908 |
|
1889 | 1909 | let total_workers = cfg.gpus.len() * cfg.workers_per_gpu; |
1890 | 1910 | eprintln!( |
1891 | | - "fuzzx-diff: starting_seed=0x{:016x} out={} program_bytes={} max_iters={} control_flow={:?} blocks={}..{} insts_per_block={}..{} regs={} max_loop_iters={} max_immediate={} max_structured_depth={} emit_structured_loops={} emit_arbitrary_loops={} emit_lop3={} emit_predicated_lop3={} emit_minmax={} emit_selp={} emit_predicated_selp={} emit_sub={} emit_mul_lo={} emit_signed_lo_alu={} emit_sat_arith={} emit_packed_add={} emit_signed_packed_add={} emit_predicated_packed_add={} emit_packed_minmax={} emit_signed_packed_minmax={} emit_predicated_packed_minmax={} emit_scalar_16bit={} emit_signed_scalar_16bit={} emit_scalar_16bit_min={} emit_scalar_16bit_signed_unary={} emit_scalar_16bit_bitwise={} emit_scalar_16bit_shifts={} emit_scalar_16bit_compare={} emit_scalar_16bit_selp={} emit_predicated_scalar_16bit={} emit_mulhi={} emit_signed_mulhi={} emit_mad_hi={} emit_signed_mad_hi={} emit_bitwise_binops={} emit_or={} emit_xor={} emit_prmt={} emit_predicated_prmt={} emit_reg_prmt={} emit_predicated_reg_prmt={} emit_prmt_modes={} emit_not={} emit_clz={} emit_brev={} emit_cnot={} emit_popc={} emit_abs={} emit_special_regs={} emit_predicated_special_regs={} emit_global_loads={} emit_local_memory={} emit_shared_memory={} emit_f32_arith={} emit_f32_compare={} emit_f32_selp={} emit_signed_cmp={} emit_signed_divrem={} emit_reg_divrem={} emit_predicated_reg_divrem={} emit_predicated_divrem={} emit_funnel={} emit_reg_funnel={} emit_predicated_funnel={} emit_funnel_clamp={} emit_neg={} emit_shl={} emit_shr={} emit_signed_shr={} emit_reg_shifts={} emit_predicated_shifts={} emit_predicated_reg_shifts={} emit_bfind={} emit_signed_bfind={} emit_wide_bfind={} emit_signed_wide_bfind={} emit_predicated_bfind={} emit_predicated_wide_bfind={} emit_fns={} emit_reg_fns={} emit_predicated_fns={} emit_predicated_reg_fns={} emit_bfi={} emit_bfe={} emit_bmsk={} emit_bmsk_wrap={} emit_predicated_bitfield={} emit_reg_bitfield={} emit_predicated_reg_bitfield={} emit_wide_bfe={} emit_signed_wide_bfe={} emit_wide_bfi={} emit_predicated_wide_bitfield={} emit_reg_wide_bitfield={} emit_predicated_reg_wide_bitfield={} emit_mad24={} emit_mul24={} emit_predicated_24bit={} emit_subword_wide={} emit_signed_subword_wide={} emit_predicated_subword_wide={} emit_mul_wide={} emit_mad_wide={} emit_signed_mad_wide={} emit_predicated_mul_wide={} emit_predicated_mad_wide={} emit_wide_high_result={} emit_wide_int={} emit_wide_minmax={} emit_wide_mulhi={} emit_predicated_wide_int={} emit_wide_mad64={} emit_signed_wide_mad64={} emit_predicated_wide_mad64={} emit_wide_set={} emit_predicated_wide_set={} emit_wide_setp={} emit_wide_setp_bool={} emit_wide_selp={} emit_wide_unary={} emit_predicated_wide_unary={} emit_wide_shifts={} emit_wide_reg_shifts={} emit_predicated_wide_shifts={} emit_predicated_wide_reg_shifts={} emit_wide_divrem={} emit_signed_wide_divrem={} emit_reg_wide_divrem={} emit_predicated_reg_wide_divrem={} emit_predicated_wide_divrem={} emit_wide_addc={} emit_wide_subc={} emit_predicated_wide_carry={} emit_wide_carry_chain={} emit_predicated_wide_carry_chain={} emit_addc={} emit_subc={} emit_predicated_carry={} emit_carry_chain={} emit_predicated_carry_chain={} emit_i32_boundary_immediates={} emit_dp4a={} emit_dp2a={} emit_negated_predicates={} emit_predicated_alu={} emit_predicated_unary={} emit_cvt={} emit_predicated_cvt={} emit_narrow_cvt={} emit_signed_narrow_cvt={} emit_predicated_narrow_cvt={} emit_wide_cvt={} emit_signed_wide_cvt={} emit_predicated_wide_cvt={} emit_szext={} emit_signed_szext={} emit_predicated_szext={} emit_setp_bool={} emit_setp_dual={} emit_pred_logic={} emit_predicated_mad={} emit_predicated_mad_hi={} emit_mad_carry={} emit_signed_mad_carry={} emit_predicated_mad_carry={} emit_predicated_set={} emit_sad={} emit_slct={} emit_predicated_sad={} emit_predicated_slct={} emit_predicated_dp={} emit_predicated_video={} emit_set={} emit_s32_slct={} emit_video={} emit_vsub4={} gpus={:?} workers_per_gpu={} (total={})", |
| 1911 | + "fuzzx-diff: starting_seed=0x{:016x} out={} program_bytes={} max_iters={} control_flow={:?} blocks={}..{} insts_per_block={}..{} regs={} max_loop_iters={} max_immediate={} max_structured_depth={} emit_structured_loops={} emit_arbitrary_loops={} emit_lop3={} emit_predicated_lop3={} emit_minmax={} emit_selp={} emit_predicated_selp={} emit_sub={} emit_mul_lo={} emit_signed_lo_alu={} emit_sat_arith={} emit_packed_add={} emit_signed_packed_add={} emit_predicated_packed_add={} emit_packed_minmax={} emit_signed_packed_minmax={} emit_predicated_packed_minmax={} emit_scalar_16bit={} emit_signed_scalar_16bit={} emit_scalar_16bit_min={} emit_scalar_16bit_signed_unary={} emit_scalar_16bit_bitwise={} emit_scalar_16bit_shifts={} emit_scalar_16bit_compare={} emit_scalar_16bit_selp={} emit_predicated_scalar_16bit={} emit_mulhi={} emit_signed_mulhi={} emit_mad_hi={} emit_signed_mad_hi={} emit_bitwise_binops={} emit_or={} emit_xor={} emit_prmt={} emit_predicated_prmt={} emit_reg_prmt={} emit_predicated_reg_prmt={} emit_prmt_modes={} emit_not={} emit_clz={} emit_brev={} emit_cnot={} emit_popc={} emit_abs={} emit_special_regs={} emit_predicated_special_regs={} emit_global_loads={} emit_global_store_roundtrips={} emit_const_memory={} emit_local_memory={} emit_shared_memory={} emit_f32_arith={} emit_f32_compare={} emit_f32_selp={} emit_signed_cmp={} emit_signed_divrem={} emit_reg_divrem={} emit_predicated_reg_divrem={} emit_predicated_divrem={} emit_funnel={} emit_reg_funnel={} emit_predicated_funnel={} emit_funnel_clamp={} emit_neg={} emit_shl={} emit_shr={} emit_signed_shr={} emit_reg_shifts={} emit_predicated_shifts={} emit_predicated_reg_shifts={} emit_bfind={} emit_signed_bfind={} emit_wide_bfind={} emit_signed_wide_bfind={} emit_predicated_bfind={} emit_predicated_wide_bfind={} emit_fns={} emit_reg_fns={} emit_predicated_fns={} emit_predicated_reg_fns={} emit_bfi={} emit_bfe={} emit_bmsk={} emit_bmsk_wrap={} emit_predicated_bitfield={} emit_reg_bitfield={} emit_predicated_reg_bitfield={} emit_wide_bfe={} emit_signed_wide_bfe={} emit_wide_bfi={} emit_predicated_wide_bitfield={} emit_reg_wide_bitfield={} emit_predicated_reg_wide_bitfield={} emit_mad24={} emit_mul24={} emit_predicated_24bit={} emit_subword_wide={} emit_signed_subword_wide={} emit_predicated_subword_wide={} emit_mul_wide={} emit_mad_wide={} emit_signed_mad_wide={} emit_predicated_mul_wide={} emit_predicated_mad_wide={} emit_wide_high_result={} emit_wide_int={} emit_wide_minmax={} emit_wide_mulhi={} emit_predicated_wide_int={} emit_wide_mad64={} emit_signed_wide_mad64={} emit_predicated_wide_mad64={} emit_wide_set={} emit_predicated_wide_set={} emit_wide_setp={} emit_wide_setp_bool={} emit_wide_selp={} emit_wide_unary={} emit_predicated_wide_unary={} emit_wide_shifts={} emit_wide_reg_shifts={} emit_predicated_wide_shifts={} emit_predicated_wide_reg_shifts={} emit_wide_divrem={} emit_signed_wide_divrem={} emit_reg_wide_divrem={} emit_predicated_reg_wide_divrem={} emit_predicated_wide_divrem={} emit_wide_addc={} emit_wide_subc={} emit_predicated_wide_carry={} emit_wide_carry_chain={} emit_predicated_wide_carry_chain={} emit_addc={} emit_subc={} emit_predicated_carry={} emit_carry_chain={} emit_predicated_carry_chain={} emit_i32_boundary_immediates={} emit_dp4a={} emit_dp2a={} emit_negated_predicates={} emit_predicated_alu={} emit_predicated_unary={} emit_cvt={} emit_predicated_cvt={} emit_narrow_cvt={} emit_signed_narrow_cvt={} emit_predicated_narrow_cvt={} emit_wide_cvt={} emit_signed_wide_cvt={} emit_predicated_wide_cvt={} emit_szext={} emit_signed_szext={} emit_predicated_szext={} emit_setp_bool={} emit_setp_dual={} emit_pred_logic={} emit_predicated_mad={} emit_predicated_mad_hi={} emit_mad_carry={} emit_signed_mad_carry={} emit_predicated_mad_carry={} emit_predicated_set={} emit_sad={} emit_slct={} emit_predicated_sad={} emit_predicated_slct={} emit_predicated_dp={} emit_predicated_video={} emit_set={} emit_s32_slct={} emit_video={} emit_vsub4={} gpus={:?} workers_per_gpu={} (total={})", |
1892 | 1912 | cfg.starting_seed, |
1893 | 1913 | cfg.out_dir.display(), |
1894 | 1914 | cfg.program_bytes, |
@@ -1951,6 +1971,8 @@ fn main() -> Result<()> { |
1951 | 1971 | cfg.gen_config.emit_special_regs, |
1952 | 1972 | cfg.gen_config.emit_predicated_special_regs, |
1953 | 1973 | cfg.gen_config.emit_global_loads, |
| 1974 | + cfg.gen_config.emit_global_store_roundtrips, |
| 1975 | + cfg.gen_config.emit_const_memory, |
1954 | 1976 | cfg.gen_config.emit_local_memory, |
1955 | 1977 | cfg.gen_config.emit_shared_memory, |
1956 | 1978 | cfg.gen_config.emit_f32_arith, |
|
0 commit comments