|
8745 | 8745 | (i32.const 0)
|
8746 | 8746 | )
|
8747 | 8747 | )
|
8748 |
| - ;; CHECK: (func $andZero (param $0 i32) (result i32) |
| 8748 | + ;; CHECK: (func $andZero (param $0 i32) (param $1 i64) (result i32) |
8749 | 8749 | ;; CHECK-NEXT: (drop
|
8750 | 8750 | ;; CHECK-NEXT: (i32.const 0)
|
8751 | 8751 | ;; CHECK-NEXT: )
|
8752 | 8752 | ;; CHECK-NEXT: (drop
|
| 8753 | + ;; CHECK-NEXT: (i64.const 0) |
| 8754 | + ;; CHECK-NEXT: ) |
| 8755 | + ;; CHECK-NEXT: (drop |
8753 | 8756 | ;; CHECK-NEXT: (block (result i32)
|
8754 | 8757 | ;; CHECK-NEXT: (drop
|
8755 |
| - ;; CHECK-NEXT: (call $andZero |
8756 |
| - ;; CHECK-NEXT: (i32.const 1234) |
| 8758 | + ;; CHECK-NEXT: (local.tee $0 |
| 8759 | + ;; CHECK-NEXT: (i32.const 1) |
8757 | 8760 | ;; CHECK-NEXT: )
|
8758 | 8761 | ;; CHECK-NEXT: )
|
8759 | 8762 | ;; CHECK-NEXT: (i32.const 0)
|
8760 | 8763 | ;; CHECK-NEXT: )
|
8761 | 8764 | ;; CHECK-NEXT: )
|
| 8765 | + ;; CHECK-NEXT: (drop |
| 8766 | + ;; CHECK-NEXT: (block (result i64) |
| 8767 | + ;; CHECK-NEXT: (drop |
| 8768 | + ;; CHECK-NEXT: (local.tee $1 |
| 8769 | + ;; CHECK-NEXT: (i64.const 1) |
| 8770 | + ;; CHECK-NEXT: ) |
| 8771 | + ;; CHECK-NEXT: ) |
| 8772 | + ;; CHECK-NEXT: (i64.const 0) |
| 8773 | + ;; CHECK-NEXT: ) |
| 8774 | + ;; CHECK-NEXT: ) |
| 8775 | + ;; CHECK-NEXT: (drop |
| 8776 | + ;; CHECK-NEXT: (block (result i32) |
| 8777 | + ;; CHECK-NEXT: (drop |
| 8778 | + ;; CHECK-NEXT: (local.tee $0 |
| 8779 | + ;; CHECK-NEXT: (i32.const 1) |
| 8780 | + ;; CHECK-NEXT: ) |
| 8781 | + ;; CHECK-NEXT: ) |
| 8782 | + ;; CHECK-NEXT: (drop |
| 8783 | + ;; CHECK-NEXT: (block (result i32) |
| 8784 | + ;; CHECK-NEXT: (local.set $0 |
| 8785 | + ;; CHECK-NEXT: (i32.const 1) |
| 8786 | + ;; CHECK-NEXT: ) |
| 8787 | + ;; CHECK-NEXT: (i32.const 0) |
| 8788 | + ;; CHECK-NEXT: ) |
| 8789 | + ;; CHECK-NEXT: ) |
| 8790 | + ;; CHECK-NEXT: (i32.const 0) |
| 8791 | + ;; CHECK-NEXT: ) |
| 8792 | + ;; CHECK-NEXT: ) |
| 8793 | + ;; CHECK-NEXT: (drop |
| 8794 | + ;; CHECK-NEXT: (block (result i64) |
| 8795 | + ;; CHECK-NEXT: (drop |
| 8796 | + ;; CHECK-NEXT: (local.tee $1 |
| 8797 | + ;; CHECK-NEXT: (i64.const 1) |
| 8798 | + ;; CHECK-NEXT: ) |
| 8799 | + ;; CHECK-NEXT: ) |
| 8800 | + ;; CHECK-NEXT: (drop |
| 8801 | + ;; CHECK-NEXT: (block (result i64) |
| 8802 | + ;; CHECK-NEXT: (local.set $1 |
| 8803 | + ;; CHECK-NEXT: (i64.const 1) |
| 8804 | + ;; CHECK-NEXT: ) |
| 8805 | + ;; CHECK-NEXT: (i64.const 0) |
| 8806 | + ;; CHECK-NEXT: ) |
| 8807 | + ;; CHECK-NEXT: ) |
| 8808 | + ;; CHECK-NEXT: (i64.const 0) |
| 8809 | + ;; CHECK-NEXT: ) |
| 8810 | + ;; CHECK-NEXT: ) |
8762 | 8811 | ;; CHECK-NEXT: (unreachable)
|
8763 | 8812 | ;; CHECK-NEXT: )
|
8764 |
| - (func $andZero (param $0 i32) (result i32) |
| 8813 | + (func $andZero (param $0 i32) (param $1 i64) (result i32) |
8765 | 8814 | (drop
|
8766 | 8815 | (i32.and
|
8767 | 8816 | (local.get $0)
|
8768 | 8817 | (i32.const 0)
|
8769 | 8818 | )
|
8770 | 8819 | )
|
| 8820 | + (drop |
| 8821 | + (i64.and |
| 8822 | + (local.get $1) |
| 8823 | + (i64.const 0) |
| 8824 | + ) |
| 8825 | + ) |
| 8826 | + ;; side effects. we must keep the tee, but |
| 8827 | + ;; can drop it. |
8771 | 8828 | (drop
|
8772 | 8829 | (i32.and
|
8773 |
| - (call $andZero (i32.const 1234)) ;; side effects, we must keep this, but |
8774 |
| - ;; can drop it. |
| 8830 | + (local.tee $0 |
| 8831 | + (i32.const 1) |
| 8832 | + ) |
8775 | 8833 | (i32.const 0)
|
8776 | 8834 | )
|
8777 | 8835 | )
|
| 8836 | + (drop |
| 8837 | + (i64.and |
| 8838 | + (local.tee $1 |
| 8839 | + (i64.const 1) |
| 8840 | + ) |
| 8841 | + (i64.const 0) |
| 8842 | + ) |
| 8843 | + ) |
| 8844 | + ;; We can optimize out the |and| even if the 0 is at the end of a block. |
| 8845 | + (drop |
| 8846 | + (i32.and |
| 8847 | + (local.tee $0 |
| 8848 | + (i32.const 1) |
| 8849 | + ) |
| 8850 | + (block (result i32) |
| 8851 | + (local.set $0 |
| 8852 | + (i32.const 1) |
| 8853 | + ) |
| 8854 | + (i32.const 0) |
| 8855 | + ) |
| 8856 | + ) |
| 8857 | + ) |
| 8858 | + (drop |
| 8859 | + (i64.and |
| 8860 | + (local.tee $1 |
| 8861 | + (i64.const 1) |
| 8862 | + ) |
| 8863 | + (block (result i64) |
| 8864 | + (local.set $1 |
| 8865 | + (i64.const 1) |
| 8866 | + ) |
| 8867 | + (i64.const 0) |
| 8868 | + ) |
| 8869 | + ) |
| 8870 | + ) |
8778 | 8871 | (unreachable)
|
8779 | 8872 | )
|
8780 | 8873 | ;; CHECK: (func $abstract-additions (param $x32 i32) (param $x64 i64) (param $y32 f32) (param $y64 f64)
|
|
0 commit comments