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