nyash-codex
99bdf93dfe
feat(joinir): Phase 47-A-LOWERING - P3 Normalized→MIR(direct)
Implement full Pattern3 (if-sum) Normalized→MIR(direct) support, completing
the P3 minimal implementation.
Key changes:
1. P3 Shape Detection (shape_guard.rs):
- Implemented is_pattern3_if_sum_minimal() with structure-based detection
- Detects P3 characteristics:
- Has Compare instruction (loop condition)
- Has Select instruction (conditional carrier update)
- Has tail call (Call with k_next: None)
- Reasonable param count (2-4 for i, sum carriers)
- Handles both JoinInst::Select and Compute(MirLikeInst::Select)
- Added unit test: test_detect_pattern3_if_sum_minimal_shape ✅
2. P3 Normalization Function (normalized.rs):
- Implemented normalize_pattern3_if_sum_minimal()
- Guards: Validates Structured JoinIR + P3 shape detection
- Phase 47-A minimal: Delegates to P2 normalization (works for simple cases)
- Updated normalized_dev_roundtrip_structured() integration
- Returns Result<NormalizedModule, String> for proper error handling
3. Bridge Integration (bridge.rs):
- Updated normalize_for_shape() to call P3 normalization
- No changes needed to direct.rs (already handles P3 instructions)
4. Integration Tests (normalized_joinir_min.rs):
- Added test_phase47a_pattern3_if_sum_minimal_normalization
- Tests Structured→Normalized transformation
- Verifies shape detection + normalization succeeds
- Validates function count and phase correctness
- Added test_phase47a_pattern3_if_sum_minimal_runner
- Basic smoke test for P3 fixture validity
- Verifies 3-function structure and entry point
Benefits:
- P3 now uses Normalized→MIR(direct) pipeline (same as P1/P2)
- Structure-based detection (no name-based heuristics)
- Minimal implementation (delegates to P2 for simplicity)
- Pure additive (no P1/P2 behavioral changes)
Tests: 938/938 PASS (lib), shape_guard P3 test PASS
- test_detect_pattern3_if_sum_minimal_shape ✅
- test_phase47a_pattern3_if_sum_minimal_normalization ✅
- test_phase47a_pattern3_if_sum_minimal_runner ✅
Next phase: Phase 47-B (proper P3-specific normalization, array_filter, multi-carrier)
Design note: This minimal implementation reuses P2 normalization for simplicity.
Proper P3-specific normalization (IfCond, ThenUpdates, ElseUpdates step sequence)
will be implemented in Phase 47-B when needed for more complex P3 patterns.
2025-12-12 05:53:23 +09:00
..
2025-11-20 08:41:37 +09:00
2025-12-04 04:13:15 +09:00
2025-11-06 15:41:52 +09:00
2025-11-25 10:19:02 +09:00
2025-09-22 07:54:25 +09:00
2025-09-15 22:14:42 +09:00
2025-09-19 02:07:38 +09:00
2025-11-06 15:41:52 +09:00
2025-12-10 00:01:53 +09:00
2025-11-06 15:41:52 +09:00
2025-11-06 15:41:52 +09:00
2025-11-01 09:05:02 +09:00
2025-08-23 16:33:32 +09:00
2025-09-16 23:49:36 +09:00
2025-09-16 23:49:36 +09:00
2025-12-09 03:40:25 +09:00
2025-09-16 23:49:36 +09:00
2025-11-20 03:56:12 +09:00
2025-09-16 23:49:36 +09:00
2025-11-21 06:25:17 +09:00
2025-09-16 23:49:36 +09:00
2025-12-11 13:13:08 +09:00
2025-09-16 23:49:36 +09:00
2025-12-02 12:36:28 +09:00
2025-12-08 23:43:26 +09:00
2025-12-12 05:53:23 +09:00
2025-09-16 16:28:25 +09:00
2025-12-11 17:16:10 +09:00
2025-12-11 13:13:08 +09:00
2025-12-11 17:16:10 +09:00
2025-09-25 01:09:48 +09:00
2025-09-16 23:49:36 +09:00
2025-09-16 23:49:36 +09:00
2025-09-16 23:49:36 +09:00