[New Optimization Proposal] Propagate conditional result to branch / switch arms
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 25/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Cần làm rõ
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- cpp, wasm
- Lĩnh vực
- compilers, performance
Hướng nghiên cứu
Bắt đầu bằng cách xem xét các đường dẫn tối ưu hóa hiện có của Binaryen cho các nhánh branch và switch, bao gồm cả việc xử lý br_table. So sánh hành vi của chúng với các ví dụ về kết quả điều kiện trong issue và xác định các phép biến đổi dự kiến. Công việc được xem là hoàn tất khi propagation được đề xuất đã được triển khai nhất quán cho các trường hợp if/else và br_table được minh họa, cùng với các kiểm thử chứng minh kết quả đã tối ưu hóa.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Example:
if (x == 5) {
return x + 1;
} else {
return x - 1;
}
if (y == true) { // maxBits(y) <= 1
return y | x; // maxBits(x) <= 1
} else {
return y ^ x;
}
if (z < 5) {
return z >= 5;
}
could be optimize to:
if (x == 5) {
return 6; // 5 + 1
} else {
return x - 1;
}
if (y == true) {
return true; // we know y == true, so true | bool(x) -> true
} else {
return x; // here y always `false` so `false ^ x` -> x
}
if (z < 5) {
return false;
}
and same for br tables.
WDYT?
- Ngôn ngữ chính
- WebAssembly
- Star
- 8.6k
- Fork
- 885
- Merge trung bình
- 2 ngày 4 giờ
- Pull request đã merge (30 ngày)
- 77
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của WebAssembly/binaryen
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 88/100
WebAssembly/binaryen#9135 · 1 bình luận ·
-
Độ khó 2/5 Nửa ngày Mức phù hợp với người mới 76/100
WebAssembly/binaryen#9018 · 3 bình luận ·
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
WebAssembly/binaryen#9133 ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 52/100
WebAssembly/binaryen#9123 ·
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
WebAssembly/binaryen#9122 ·
Tất cả issue của WebAssembly/binaryen
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
objectionary/eo#8923 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
-
Coarray integration tests carry no LABELS, so run_tests.py silently skips them under every backend Đang mởcoarray
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
-
internal.h中,漏掉了1个定义。 Đang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 95/100