@@ -55,9 +55,9 @@ let Predicates = [HasRCPC] in {
5555 // 16-bit loads
5656 def : Pat<(acquiring_load<atomic_load_azext_16> GPR64sp:$ptr), (LDAPRH GPR64sp:$ptr)>;
5757 // 32-bit loads
58- def : Pat<(acquiring_load<atomic_load_32 > GPR64sp:$ptr), (LDAPRW GPR64sp:$ptr)>;
58+ def : Pat<(acquiring_load<atomic_load_nonext_32 > GPR64sp:$ptr), (LDAPRW GPR64sp:$ptr)>;
5959 // 64-bit loads
60- def : Pat<(acquiring_load<atomic_load_64 > GPR64sp:$ptr), (LDAPRX GPR64sp:$ptr)>;
60+ def : Pat<(acquiring_load<atomic_load_nonext_64 > GPR64sp:$ptr), (LDAPRX GPR64sp:$ptr)>;
6161}
6262
6363// 8-bit loads
@@ -93,62 +93,66 @@ def : Pat<(relaxed_load<atomic_load_azext_16>
9393 (LDURHHi GPR64sp:$Rn, simm9:$offset)>;
9494
9595// 32-bit loads
96- def : Pat<(seq_cst_load<atomic_load_32> GPR64sp:$ptr), (LDARW GPR64sp:$ptr)>;
97- def : Pat<(acquiring_load<atomic_load_32> GPR64sp:$ptr), (LDARW GPR64sp:$ptr)>;
98- def : Pat<(relaxed_load<atomic_load_32> (ro_Windexed32 GPR64sp:$Rn, GPR32:$Rm,
99- ro_Wextend32:$extend)),
96+ def : Pat<(seq_cst_load<atomic_load_nonext_32> GPR64sp:$ptr),
97+ (LDARW GPR64sp:$ptr)>;
98+ def : Pat<(acquiring_load<atomic_load_nonext_32> GPR64sp:$ptr),
99+ (LDARW GPR64sp:$ptr)>;
100+ def : Pat<(relaxed_load<atomic_load_nonext_32>
101+ (ro_Windexed32 GPR64sp:$Rn, GPR32:$Rm, ro_Wextend32:$extend)),
100102 (LDRWroW GPR64sp:$Rn, GPR32:$Rm, ro_Wextend32:$extend)>;
101- def : Pat<(relaxed_load<atomic_load_32> (ro_Xindexed32 GPR64sp:$Rn, GPR64:$Rm,
102- ro_Xextend32:$extend)),
103+ def : Pat<(relaxed_load<atomic_load_nonext_32>
104+ (ro_Xindexed32 GPR64sp:$Rn, GPR64:$Rm, ro_Xextend32:$extend)),
103105 (LDRWroX GPR64sp:$Rn, GPR64:$Rm, ro_Xextend32:$extend)>;
104- def : Pat<(relaxed_load<atomic_load_32> (am_indexed32 GPR64sp:$Rn,
105- uimm12s4:$offset)),
106+ def : Pat<(relaxed_load<atomic_load_nonext_32>
107+ (am_indexed32 GPR64sp:$Rn, uimm12s4:$offset)),
106108 (LDRWui GPR64sp:$Rn, uimm12s4:$offset)>;
107- def : Pat<(relaxed_load<atomic_load_32 >
109+ def : Pat<(relaxed_load<atomic_load_nonext_32 >
108110 (am_unscaled32 GPR64sp:$Rn, simm9:$offset)),
109111 (LDURWi GPR64sp:$Rn, simm9:$offset)>;
110112
111113// 64-bit loads
112- def : Pat<(seq_cst_load<atomic_load_64> GPR64sp:$ptr), (LDARX GPR64sp:$ptr)>;
113- def : Pat<(acquiring_load<atomic_load_64> GPR64sp:$ptr), (LDARX GPR64sp:$ptr)>;
114- def : Pat<(relaxed_load<atomic_load_64> (ro_Windexed64 GPR64sp:$Rn, GPR32:$Rm,
115- ro_Wextend64:$extend)),
114+ def : Pat<(seq_cst_load<atomic_load_nonext_64> GPR64sp:$ptr),
115+ (LDARX GPR64sp:$ptr)>;
116+ def : Pat<(acquiring_load<atomic_load_nonext_64> GPR64sp:$ptr),
117+ (LDARX GPR64sp:$ptr)>;
118+ def : Pat<(relaxed_load<atomic_load_nonext_64>
119+ (ro_Windexed64 GPR64sp:$Rn, GPR32:$Rm, ro_Wextend64:$extend)),
116120 (LDRXroW GPR64sp:$Rn, GPR32:$Rm, ro_Wextend64:$extend)>;
117- def : Pat<(relaxed_load<atomic_load_64> (ro_Xindexed64 GPR64sp:$Rn, GPR64:$Rm,
118- ro_Xextend64:$extend)),
121+ def : Pat<(relaxed_load<atomic_load_nonext_64>
122+ (ro_Xindexed64 GPR64sp:$Rn, GPR64:$Rm, ro_Xextend64:$extend)),
119123 (LDRXroX GPR64sp:$Rn, GPR64:$Rm, ro_Xextend64:$extend)>;
120- def : Pat<(relaxed_load<atomic_load_64> (am_indexed64 GPR64sp:$Rn,
121- uimm12s8:$offset)),
124+ def : Pat<(relaxed_load<atomic_load_nonext_64>
125+ (am_indexed64 GPR64sp:$Rn, uimm12s8:$offset)),
122126 (LDRXui GPR64sp:$Rn, uimm12s8:$offset)>;
123- def : Pat<(relaxed_load<atomic_load_64 >
127+ def : Pat<(relaxed_load<atomic_load_nonext_64 >
124128 (am_unscaled64 GPR64sp:$Rn, simm9:$offset)),
125129 (LDURXi GPR64sp:$Rn, simm9:$offset)>;
126130
127131// FP 32-bit loads
128- def : Pat<(f32 (bitconvert (i32 (relaxed_load<atomic_load_32> (ro_Windexed32 GPR64sp:$Rn, GPR32:$Rm,
129- ro_Wextend32:$extend))))),
132+ def : Pat<(f32 (bitconvert (i32 (relaxed_load<atomic_load_nonext_32>
133+ (ro_Windexed32 GPR64sp:$Rn, GPR32:$Rm, ro_Wextend32:$extend))))),
130134 (LDRSroW GPR64sp:$Rn, GPR32:$Rm, ro_Wextend32:$extend)>;
131- def : Pat<(f32 (bitconvert (i32 (relaxed_load<atomic_load_32> (ro_Xindexed32 GPR64sp:$Rn, GPR64:$Rm,
132- ro_Xextend32:$extend))))),
135+ def : Pat<(f32 (bitconvert (i32 (relaxed_load<atomic_load_nonext_32>
136+ (ro_Xindexed32 GPR64sp:$Rn, GPR64:$Rm, ro_Xextend32:$extend))))),
133137 (LDRSroX GPR64sp:$Rn, GPR64:$Rm, ro_Xextend32:$extend)>;
134- def : Pat<(f32 (bitconvert (i32 (relaxed_load<atomic_load_32> (am_indexed32 GPR64sp:$Rn,
135- uimm12s8:$offset))))),
138+ def : Pat<(f32 (bitconvert (i32 (relaxed_load<atomic_load_nonext_32>
139+ (am_indexed32 GPR64sp:$Rn, uimm12s8:$offset))))),
136140 (LDRSui GPR64sp:$Rn, uimm12s8:$offset)>;
137- def : Pat<(f32 (bitconvert (i32 (relaxed_load<atomic_load_32 >
141+ def : Pat<(f32 (bitconvert (i32 (relaxed_load<atomic_load_nonext_32 >
138142 (am_unscaled32 GPR64sp:$Rn, simm9:$offset))))),
139143 (LDURSi GPR64sp:$Rn, simm9:$offset)>;
140144
141145// FP 64-bit loads
142- def : Pat<(f64 (bitconvert (i64 (relaxed_load<atomic_load_64> (ro_Windexed64 GPR64sp:$Rn, GPR32:$Rm,
143- ro_Wextend64:$extend))))),
146+ def : Pat<(f64 (bitconvert (i64 (relaxed_load<atomic_load_nonext_64>
147+ (ro_Windexed64 GPR64sp:$Rn, GPR32:$Rm, ro_Wextend64:$extend))))),
144148 (LDRDroW GPR64sp:$Rn, GPR32:$Rm, ro_Wextend64:$extend)>;
145- def : Pat<(f64 (bitconvert (i64 (relaxed_load<atomic_load_64> (ro_Xindexed64 GPR64sp:$Rn, GPR64:$Rm,
146- ro_Xextend64:$extend))))),
149+ def : Pat<(f64 (bitconvert (i64 (relaxed_load<atomic_load_nonext_64>
150+ (ro_Xindexed64 GPR64sp:$Rn, GPR64:$Rm, ro_Xextend64:$extend))))),
147151 (LDRDroX GPR64sp:$Rn, GPR64:$Rm, ro_Xextend64:$extend)>;
148- def : Pat<(f64 (bitconvert (i64 (relaxed_load<atomic_load_64> (am_indexed64 GPR64sp:$Rn,
149- uimm12s8:$offset))))),
152+ def : Pat<(f64 (bitconvert (i64 (relaxed_load<atomic_load_nonext_64>
153+ (am_indexed64 GPR64sp:$Rn, uimm12s8:$offset))))),
150154 (LDRDui GPR64sp:$Rn, uimm12s8:$offset)>;
151- def : Pat<(f64 (bitconvert (i64 (relaxed_load<atomic_load_64 >
155+ def : Pat<(f64 (bitconvert (i64 (relaxed_load<atomic_load_nonext_64 >
152156 (am_unscaled64 GPR64sp:$Rn, simm9:$offset))))),
153157 (LDURDi GPR64sp:$Rn, simm9:$offset)>;
154158
@@ -561,16 +565,16 @@ let Predicates = [HasLSFE] in {
561565let Predicates = [HasRCPC3, HasNEON] in {
562566 // LDAP1 loads
563567 def : Pat<(vector_insert (v2i64 VecListOne128:$Rd),
564- (i64 (acquiring_load<atomic_load_64 > GPR64sp:$Rn)), (i64 VectorIndexD:$idx)),
568+ (i64 (acquiring_load<atomic_load_nonext_64 > GPR64sp:$Rn)), (i64 VectorIndexD:$idx)),
565569 (LDAP1 VecListOne128:$Rd, VectorIndexD:$idx, GPR64sp:$Rn)>;
566570 def : Pat<(vector_insert (v2f64 VecListOne128:$Rd),
567- (f64 (bitconvert (i64 (acquiring_load<atomic_load_64 > GPR64sp:$Rn)))), (i64 VectorIndexD:$idx)),
571+ (f64 (bitconvert (i64 (acquiring_load<atomic_load_nonext_64 > GPR64sp:$Rn)))), (i64 VectorIndexD:$idx)),
568572 (LDAP1 VecListOne128:$Rd, VectorIndexD:$idx, GPR64sp:$Rn)>;
569573 def : Pat<(v1i64 (scalar_to_vector
570- (i64 (acquiring_load<atomic_load_64 > GPR64sp:$Rn)))),
574+ (i64 (acquiring_load<atomic_load_nonext_64 > GPR64sp:$Rn)))),
571575 (EXTRACT_SUBREG (LDAP1 (v2i64 (IMPLICIT_DEF)), (i64 0), GPR64sp:$Rn), dsub)>;
572576 def : Pat<(v1f64 (scalar_to_vector
573- (f64 (bitconvert (i64 (acquiring_load<atomic_load_64 > GPR64sp:$Rn)))))),
577+ (f64 (bitconvert (i64 (acquiring_load<atomic_load_nonext_64 > GPR64sp:$Rn)))))),
574578 (EXTRACT_SUBREG (LDAP1 (v2f64 (IMPLICIT_DEF)), (i64 0), GPR64sp:$Rn), dsub)>;
575579
576580 // STL1 stores
@@ -597,10 +601,10 @@ let Predicates = [HasRCPC_IMMO, UseLDAPUR] in {
597601 def : Pat<(acquiring_load<atomic_load_azext_16>
598602 (am_unscaled16 GPR64sp:$Rn, simm9:$offset)),
599603 (LDAPURHi GPR64sp:$Rn, simm9:$offset)>;
600- def : Pat<(acquiring_load<atomic_load_32 >
604+ def : Pat<(acquiring_load<atomic_load_nonext_32 >
601605 (am_unscaled32 GPR64sp:$Rn, simm9:$offset)),
602606 (LDAPURi GPR64sp:$Rn, simm9:$offset)>;
603- def : Pat<(acquiring_load<atomic_load_64 >
607+ def : Pat<(acquiring_load<atomic_load_nonext_64 >
604608 (am_unscaled64 GPR64sp:$Rn, simm9:$offset)),
605609 (LDAPURXi GPR64sp:$Rn, simm9:$offset)>;
606610}
0 commit comments