|
837 | 837 | (MOVDaddr [int32(off1)+off2] {sym} ptr)
|
838 | 838 |
|
839 | 839 | // fold address into load/store
|
840 |
| -(MOVBload [off1] {sym} (ADDconst [off2] ptr) mem) && is32Bit(int64(off1)+off2) |
841 |
| - && (ptr.Op != OpSB || !config.ctxt.Flag_shared) => |
| 840 | +(MOVBload [off1] {sym} (ADDconst [off2] ptr) mem) && is32Bit(int64(off1)+off2) => |
842 | 841 | (MOVBload [off1+int32(off2)] {sym} ptr mem)
|
843 |
| -(MOVBUload [off1] {sym} (ADDconst [off2] ptr) mem) && is32Bit(int64(off1)+off2) |
844 |
| - && (ptr.Op != OpSB || !config.ctxt.Flag_shared) => |
| 842 | +(MOVBUload [off1] {sym} (ADDconst [off2] ptr) mem) && is32Bit(int64(off1)+off2) => |
845 | 843 | (MOVBUload [off1+int32(off2)] {sym} ptr mem)
|
846 |
| -(MOVHload [off1] {sym} (ADDconst [off2] ptr) mem) && is32Bit(int64(off1)+off2) |
847 |
| - && (ptr.Op != OpSB || !config.ctxt.Flag_shared) => |
| 844 | +(MOVHload [off1] {sym} (ADDconst [off2] ptr) mem) && is32Bit(int64(off1)+off2) => |
848 | 845 | (MOVHload [off1+int32(off2)] {sym} ptr mem)
|
849 |
| -(MOVHUload [off1] {sym} (ADDconst [off2] ptr) mem) && is32Bit(int64(off1)+off2) |
850 |
| - && (ptr.Op != OpSB || !config.ctxt.Flag_shared) => |
| 846 | +(MOVHUload [off1] {sym} (ADDconst [off2] ptr) mem) && is32Bit(int64(off1)+off2) => |
851 | 847 | (MOVHUload [off1+int32(off2)] {sym} ptr mem)
|
852 |
| -(MOVWload [off1] {sym} (ADDconst [off2] ptr) mem) && is32Bit(int64(off1)+off2) |
853 |
| - && (ptr.Op != OpSB || !config.ctxt.Flag_shared) => |
| 848 | +(MOVWload [off1] {sym} (ADDconst [off2] ptr) mem) && is32Bit(int64(off1)+off2) => |
854 | 849 | (MOVWload [off1+int32(off2)] {sym} ptr mem)
|
855 |
| -(MOVWUload [off1] {sym} (ADDconst [off2] ptr) mem) && is32Bit(int64(off1)+off2) |
856 |
| - && (ptr.Op != OpSB || !config.ctxt.Flag_shared) => |
| 850 | +(MOVWUload [off1] {sym} (ADDconst [off2] ptr) mem) && is32Bit(int64(off1)+off2) => |
857 | 851 | (MOVWUload [off1+int32(off2)] {sym} ptr mem)
|
858 |
| -(MOVDload [off1] {sym} (ADDconst [off2] ptr) mem) && is32Bit(int64(off1)+off2) |
859 |
| - && (ptr.Op != OpSB || !config.ctxt.Flag_shared) => |
| 852 | +(MOVDload [off1] {sym} (ADDconst [off2] ptr) mem) && is32Bit(int64(off1)+off2) => |
860 | 853 | (MOVDload [off1+int32(off2)] {sym} ptr mem)
|
861 |
| -(LDP [off1] {sym} (ADDconst [off2] ptr) mem) && is32Bit(int64(off1)+off2) |
862 |
| - && (ptr.Op != OpSB || !config.ctxt.Flag_shared) => |
| 854 | +(LDP [off1] {sym} (ADDconst [off2] ptr) mem) && is32Bit(int64(off1)+off2) => |
863 | 855 | (LDP [off1+int32(off2)] {sym} ptr mem)
|
864 |
| -(FMOVSload [off1] {sym} (ADDconst [off2] ptr) mem) && is32Bit(int64(off1)+off2) |
865 |
| - && (ptr.Op != OpSB || !config.ctxt.Flag_shared) => |
| 856 | +(FMOVSload [off1] {sym} (ADDconst [off2] ptr) mem) && is32Bit(int64(off1)+off2) => |
866 | 857 | (FMOVSload [off1+int32(off2)] {sym} ptr mem)
|
867 |
| -(FMOVDload [off1] {sym} (ADDconst [off2] ptr) mem) && is32Bit(int64(off1)+off2) |
868 |
| - && (ptr.Op != OpSB || !config.ctxt.Flag_shared) => |
| 858 | +(FMOVDload [off1] {sym} (ADDconst [off2] ptr) mem) && is32Bit(int64(off1)+off2) => |
869 | 859 | (FMOVDload [off1+int32(off2)] {sym} ptr mem)
|
870 | 860 |
|
871 | 861 | // register indexed load
|
|
930 | 920 | (FMOVDloadidx8 ptr (MOVDconst [c]) mem) && is32Bit(c<<3) => (FMOVDload ptr [int32(c)<<3] mem)
|
931 | 921 | (FMOVSloadidx4 ptr (MOVDconst [c]) mem) && is32Bit(c<<2) => (FMOVSload ptr [int32(c)<<2] mem)
|
932 | 922 |
|
933 |
| -(MOVBstore [off1] {sym} (ADDconst [off2] ptr) val mem) && is32Bit(int64(off1)+off2) |
934 |
| - && (ptr.Op != OpSB || !config.ctxt.Flag_shared) => |
| 923 | +(MOVBstore [off1] {sym} (ADDconst [off2] ptr) val mem) && is32Bit(int64(off1)+off2) => |
935 | 924 | (MOVBstore [off1+int32(off2)] {sym} ptr val mem)
|
936 |
| -(MOVHstore [off1] {sym} (ADDconst [off2] ptr) val mem) && is32Bit(int64(off1)+off2) |
937 |
| - && (ptr.Op != OpSB || !config.ctxt.Flag_shared) => |
| 925 | +(MOVHstore [off1] {sym} (ADDconst [off2] ptr) val mem) && is32Bit(int64(off1)+off2) => |
938 | 926 | (MOVHstore [off1+int32(off2)] {sym} ptr val mem)
|
939 |
| -(MOVWstore [off1] {sym} (ADDconst [off2] ptr) val mem) && is32Bit(int64(off1)+off2) |
940 |
| - && (ptr.Op != OpSB || !config.ctxt.Flag_shared) => |
| 927 | +(MOVWstore [off1] {sym} (ADDconst [off2] ptr) val mem) && is32Bit(int64(off1)+off2) => |
941 | 928 | (MOVWstore [off1+int32(off2)] {sym} ptr val mem)
|
942 |
| -(MOVDstore [off1] {sym} (ADDconst [off2] ptr) val mem) && is32Bit(int64(off1)+off2) |
943 |
| - && (ptr.Op != OpSB || !config.ctxt.Flag_shared) => |
| 929 | +(MOVDstore [off1] {sym} (ADDconst [off2] ptr) val mem) && is32Bit(int64(off1)+off2) => |
944 | 930 | (MOVDstore [off1+int32(off2)] {sym} ptr val mem)
|
945 |
| -(STP [off1] {sym} (ADDconst [off2] ptr) val1 val2 mem) && is32Bit(int64(off1)+off2) |
946 |
| - && (ptr.Op != OpSB || !config.ctxt.Flag_shared) => |
| 931 | +(STP [off1] {sym} (ADDconst [off2] ptr) val1 val2 mem) && is32Bit(int64(off1)+off2) => |
947 | 932 | (STP [off1+int32(off2)] {sym} ptr val1 val2 mem)
|
948 |
| -(FMOVSstore [off1] {sym} (ADDconst [off2] ptr) val mem) && is32Bit(int64(off1)+off2) |
949 |
| - && (ptr.Op != OpSB || !config.ctxt.Flag_shared) => |
| 933 | +(FMOVSstore [off1] {sym} (ADDconst [off2] ptr) val mem) && is32Bit(int64(off1)+off2) => |
950 | 934 | (FMOVSstore [off1+int32(off2)] {sym} ptr val mem)
|
951 |
| -(FMOVDstore [off1] {sym} (ADDconst [off2] ptr) val mem) && is32Bit(int64(off1)+off2) |
952 |
| - && (ptr.Op != OpSB || !config.ctxt.Flag_shared) => |
| 935 | +(FMOVDstore [off1] {sym} (ADDconst [off2] ptr) val mem) && is32Bit(int64(off1)+off2) => |
953 | 936 | (FMOVDstore [off1+int32(off2)] {sym} ptr val mem)
|
954 |
| -(MOVBstorezero [off1] {sym} (ADDconst [off2] ptr) mem) && is32Bit(int64(off1)+off2) |
955 |
| - && (ptr.Op != OpSB || !config.ctxt.Flag_shared) => |
| 937 | +(MOVBstorezero [off1] {sym} (ADDconst [off2] ptr) mem) && is32Bit(int64(off1)+off2) => |
956 | 938 | (MOVBstorezero [off1+int32(off2)] {sym} ptr mem)
|
957 |
| -(MOVHstorezero [off1] {sym} (ADDconst [off2] ptr) mem) && is32Bit(int64(off1)+off2) |
958 |
| - && (ptr.Op != OpSB || !config.ctxt.Flag_shared) => |
| 939 | +(MOVHstorezero [off1] {sym} (ADDconst [off2] ptr) mem) && is32Bit(int64(off1)+off2) => |
959 | 940 | (MOVHstorezero [off1+int32(off2)] {sym} ptr mem)
|
960 |
| -(MOVWstorezero [off1] {sym} (ADDconst [off2] ptr) mem) && is32Bit(int64(off1)+off2) |
961 |
| - && (ptr.Op != OpSB || !config.ctxt.Flag_shared) => |
| 941 | +(MOVWstorezero [off1] {sym} (ADDconst [off2] ptr) mem) && is32Bit(int64(off1)+off2) => |
962 | 942 | (MOVWstorezero [off1+int32(off2)] {sym} ptr mem)
|
963 |
| -(MOVDstorezero [off1] {sym} (ADDconst [off2] ptr) mem) && is32Bit(int64(off1)+off2) |
964 |
| - && (ptr.Op != OpSB || !config.ctxt.Flag_shared) => |
| 943 | +(MOVDstorezero [off1] {sym} (ADDconst [off2] ptr) mem) && is32Bit(int64(off1)+off2) => |
965 | 944 | (MOVDstorezero [off1+int32(off2)] {sym} ptr mem)
|
966 |
| -(MOVQstorezero [off1] {sym} (ADDconst [off2] ptr) mem) && is32Bit(int64(off1)+off2) |
967 |
| - && (ptr.Op != OpSB || !config.ctxt.Flag_shared) => |
| 945 | +(MOVQstorezero [off1] {sym} (ADDconst [off2] ptr) mem) && is32Bit(int64(off1)+off2) => |
968 | 946 | (MOVQstorezero [off1+int32(off2)] {sym} ptr mem)
|
969 | 947 |
|
970 | 948 | // register indexed store
|
|
1013 | 991 | (FMOVSstoreidx4 ptr (MOVDconst [c]) val mem) && is32Bit(c<<2) => (FMOVSstore [int32(c)<<2] ptr val mem)
|
1014 | 992 |
|
1015 | 993 | (MOVBload [off1] {sym1} (MOVDaddr [off2] {sym2} ptr) mem)
|
1016 |
| - && canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2)) |
1017 |
| - && (ptr.Op != OpSB || !config.ctxt.Flag_shared) => |
| 994 | + && canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2)) => |
1018 | 995 | (MOVBload [off1+off2] {mergeSym(sym1,sym2)} ptr mem)
|
1019 | 996 | (MOVBUload [off1] {sym1} (MOVDaddr [off2] {sym2} ptr) mem)
|
1020 |
| - && canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2)) |
1021 |
| - && (ptr.Op != OpSB || !config.ctxt.Flag_shared) => |
| 997 | + && canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2)) => |
1022 | 998 | (MOVBUload [off1+off2] {mergeSym(sym1,sym2)} ptr mem)
|
1023 | 999 | (MOVHload [off1] {sym1} (MOVDaddr [off2] {sym2} ptr) mem)
|
1024 |
| - && canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2)) |
1025 |
| - && (ptr.Op != OpSB || !config.ctxt.Flag_shared) => |
| 1000 | + && canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2)) => |
1026 | 1001 | (MOVHload [off1+off2] {mergeSym(sym1,sym2)} ptr mem)
|
1027 | 1002 | (MOVHUload [off1] {sym1} (MOVDaddr [off2] {sym2} ptr) mem)
|
1028 |
| - && canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2)) |
1029 |
| - && (ptr.Op != OpSB || !config.ctxt.Flag_shared) => |
| 1003 | + && canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2)) => |
1030 | 1004 | (MOVHUload [off1+off2] {mergeSym(sym1,sym2)} ptr mem)
|
1031 | 1005 | (MOVWload [off1] {sym1} (MOVDaddr [off2] {sym2} ptr) mem)
|
1032 |
| - && canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2)) |
1033 |
| - && (ptr.Op != OpSB || !config.ctxt.Flag_shared) => |
| 1006 | + && canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2)) => |
1034 | 1007 | (MOVWload [off1+off2] {mergeSym(sym1,sym2)} ptr mem)
|
1035 | 1008 | (MOVWUload [off1] {sym1} (MOVDaddr [off2] {sym2} ptr) mem)
|
1036 |
| - && canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2)) |
1037 |
| - && (ptr.Op != OpSB || !config.ctxt.Flag_shared) => |
| 1009 | + && canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2)) => |
1038 | 1010 | (MOVWUload [off1+off2] {mergeSym(sym1,sym2)} ptr mem)
|
1039 | 1011 | (MOVDload [off1] {sym1} (MOVDaddr [off2] {sym2} ptr) mem)
|
1040 |
| - && canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2)) |
1041 |
| - && (ptr.Op != OpSB || !config.ctxt.Flag_shared) => |
| 1012 | + && canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2)) => |
1042 | 1013 | (MOVDload [off1+off2] {mergeSym(sym1,sym2)} ptr mem)
|
1043 | 1014 | (LDP [off1] {sym1} (MOVDaddr [off2] {sym2} ptr) mem)
|
1044 |
| - && canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2)) |
1045 |
| - && (ptr.Op != OpSB || !config.ctxt.Flag_shared) => |
| 1015 | + && canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2)) => |
1046 | 1016 | (LDP [off1+off2] {mergeSym(sym1,sym2)} ptr mem)
|
1047 | 1017 | (FMOVSload [off1] {sym1} (MOVDaddr [off2] {sym2} ptr) mem)
|
1048 |
| - && canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2)) |
1049 |
| - && (ptr.Op != OpSB || !config.ctxt.Flag_shared) => |
| 1018 | + && canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2)) => |
1050 | 1019 | (FMOVSload [off1+off2] {mergeSym(sym1,sym2)} ptr mem)
|
1051 | 1020 | (FMOVDload [off1] {sym1} (MOVDaddr [off2] {sym2} ptr) mem)
|
1052 |
| - && canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2)) |
1053 |
| - && (ptr.Op != OpSB || !config.ctxt.Flag_shared) => |
| 1021 | + && canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2)) => |
1054 | 1022 | (FMOVDload [off1+off2] {mergeSym(sym1,sym2)} ptr mem)
|
1055 | 1023 |
|
1056 | 1024 | (MOVBstore [off1] {sym1} (MOVDaddr [off2] {sym2} ptr) val mem)
|
1057 |
| - && canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2)) |
1058 |
| - && (ptr.Op != OpSB || !config.ctxt.Flag_shared) => |
| 1025 | + && canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2)) => |
1059 | 1026 | (MOVBstore [off1+off2] {mergeSym(sym1,sym2)} ptr val mem)
|
1060 | 1027 | (MOVHstore [off1] {sym1} (MOVDaddr [off2] {sym2} ptr) val mem)
|
1061 |
| - && canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2)) |
1062 |
| - && (ptr.Op != OpSB || !config.ctxt.Flag_shared) => |
| 1028 | + && canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2)) => |
1063 | 1029 | (MOVHstore [off1+off2] {mergeSym(sym1,sym2)} ptr val mem)
|
1064 | 1030 | (MOVWstore [off1] {sym1} (MOVDaddr [off2] {sym2} ptr) val mem)
|
1065 |
| - && canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2)) |
1066 |
| - && (ptr.Op != OpSB || !config.ctxt.Flag_shared) => |
| 1031 | + && canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2)) => |
1067 | 1032 | (MOVWstore [off1+off2] {mergeSym(sym1,sym2)} ptr val mem)
|
1068 | 1033 | (MOVDstore [off1] {sym1} (MOVDaddr [off2] {sym2} ptr) val mem)
|
1069 |
| - && canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2)) |
1070 |
| - && (ptr.Op != OpSB || !config.ctxt.Flag_shared) => |
| 1034 | + && canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2)) => |
1071 | 1035 | (MOVDstore [off1+off2] {mergeSym(sym1,sym2)} ptr val mem)
|
1072 | 1036 | (STP [off1] {sym1} (MOVDaddr [off2] {sym2} ptr) val1 val2 mem)
|
1073 |
| - && canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2)) |
1074 |
| - && (ptr.Op != OpSB || !config.ctxt.Flag_shared) => |
| 1037 | + && canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2)) => |
1075 | 1038 | (STP [off1+off2] {mergeSym(sym1,sym2)} ptr val1 val2 mem)
|
1076 | 1039 | (FMOVSstore [off1] {sym1} (MOVDaddr [off2] {sym2} ptr) val mem)
|
1077 |
| - && canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2)) |
1078 |
| - && (ptr.Op != OpSB || !config.ctxt.Flag_shared) => |
| 1040 | + && canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2)) => |
1079 | 1041 | (FMOVSstore [off1+off2] {mergeSym(sym1,sym2)} ptr val mem)
|
1080 | 1042 | (FMOVDstore [off1] {sym1} (MOVDaddr [off2] {sym2} ptr) val mem)
|
1081 |
| - && canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2)) |
1082 |
| - && (ptr.Op != OpSB || !config.ctxt.Flag_shared) => |
| 1043 | + && canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2)) => |
1083 | 1044 | (FMOVDstore [off1+off2] {mergeSym(sym1,sym2)} ptr val mem)
|
1084 | 1045 | (MOVBstorezero [off1] {sym1} (MOVDaddr [off2] {sym2} ptr) mem)
|
1085 |
| - && canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2)) |
1086 |
| - && (ptr.Op != OpSB || !config.ctxt.Flag_shared) => |
| 1046 | + && canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2)) => |
1087 | 1047 | (MOVBstorezero [off1+off2] {mergeSym(sym1,sym2)} ptr mem)
|
1088 | 1048 | (MOVHstorezero [off1] {sym1} (MOVDaddr [off2] {sym2} ptr) mem)
|
1089 |
| - && canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2)) |
1090 |
| - && (ptr.Op != OpSB || !config.ctxt.Flag_shared) => |
| 1049 | + && canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2)) => |
1091 | 1050 | (MOVHstorezero [off1+off2] {mergeSym(sym1,sym2)} ptr mem)
|
1092 | 1051 | (MOVWstorezero [off1] {sym1} (MOVDaddr [off2] {sym2} ptr) mem)
|
1093 |
| - && canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2)) |
1094 |
| - && (ptr.Op != OpSB || !config.ctxt.Flag_shared) => |
| 1052 | + && canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2)) => |
1095 | 1053 | (MOVWstorezero [off1+off2] {mergeSym(sym1,sym2)} ptr mem)
|
1096 | 1054 | (MOVDstorezero [off1] {sym1} (MOVDaddr [off2] {sym2} ptr) mem)
|
1097 |
| - && canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2)) |
1098 |
| - && (ptr.Op != OpSB || !config.ctxt.Flag_shared) => |
| 1055 | + && canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2)) => |
1099 | 1056 | (MOVDstorezero [off1+off2] {mergeSym(sym1,sym2)} ptr mem)
|
1100 | 1057 | (MOVQstorezero [off1] {sym1} (MOVDaddr [off2] {sym2} ptr) mem)
|
1101 |
| - && canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2)) |
1102 |
| - && (ptr.Op != OpSB || !config.ctxt.Flag_shared) => |
| 1058 | + && canMergeSym(sym1,sym2) && is32Bit(int64(off1)+int64(off2)) => |
1103 | 1059 | (MOVQstorezero [off1+off2] {mergeSym(sym1,sym2)} ptr mem)
|
1104 | 1060 |
|
1105 | 1061 | // store zero
|
|
0 commit comments