@@ -94,8 +94,8 @@ AArch64LegalizerInfo::AArch64LegalizerInfo(const AArch64Subtarget &ST)
9494 getActionDefinitionsBuilder (
9595 {G_IMPLICIT_DEF, G_FREEZE, G_CONSTANT_FOLD_BARRIER})
9696 .legalFor ({p0, s8, s16, s32, s64})
97- .legalFor ({v16s8, v8s16, v4s32, v2s64, v2p0, v8s8, v4s16 , v2s32, v4s8 ,
98- v2s16, v2s8 })
97+ .legalFor ({v2s8, v4s8, v8s8, v16s8, v2s16, v4s16, v8s16 , v2s32, v4s32 ,
98+ v2s64, v2p0 })
9999 .widenScalarToNextPow2 (0 )
100100 .clampScalar (0 , s8, s64)
101101 .moreElementsToNextPow2 (0 )
@@ -130,7 +130,7 @@ AArch64LegalizerInfo::AArch64LegalizerInfo(const AArch64Subtarget &ST)
130130 .moreElementsToNextPow2 (0 );
131131
132132 getActionDefinitionsBuilder ({G_ADD, G_SUB, G_AND, G_OR, G_XOR})
133- .legalFor ({s32, s64, v2s32, v2s64, v4s32, v4s16, v8s16, v16s8, v8s8 })
133+ .legalFor ({s32, s64, v8s8, v16s8, v4s16, v8s16, v2s32, v4s32, v2s64 })
134134 .legalFor (HasSVE, {nxv16s8, nxv8s16, nxv4s32, nxv2s64})
135135 .widenScalarToNextPow2 (0 )
136136 .clampScalar (0 , s32, s64)
@@ -157,7 +157,7 @@ AArch64LegalizerInfo::AArch64LegalizerInfo(const AArch64Subtarget &ST)
157157 .moreElementsToNextPow2 (0 );
158158
159159 getActionDefinitionsBuilder (G_MUL)
160- .legalFor ({s32, s64, v2s32, v2s64, v4s32, v4s16, v8s16, v16s8, v8s8 })
160+ .legalFor ({s32, s64, v8s8, v16s8, v4s16, v8s16, v2s32, v4s32, v2s64 })
161161 .widenScalarToNextPow2 (0 )
162162 .clampScalar (0 , s32, s64)
163163 .clampMaxNumElements (0 , s8, 16 )
@@ -227,7 +227,7 @@ AArch64LegalizerInfo::AArch64LegalizerInfo(const AArch64Subtarget &ST)
227227 .scalarize (0 );
228228
229229 getActionDefinitionsBuilder ({G_SREM, G_UREM, G_SDIVREM, G_UDIVREM})
230- .lowerFor ({s8, s16, s32, s64, v2s64 , v4s32, v2s32 })
230+ .lowerFor ({s8, s16, s32, s64, v2s32 , v4s32, v2s64 })
231231 .libcallFor ({s128})
232232 .widenScalarOrEltToNextPow2 (0 )
233233 .minScalarOrElt (0 , s32)
@@ -241,7 +241,7 @@ AArch64LegalizerInfo::AArch64LegalizerInfo(const AArch64Subtarget &ST)
241241 .lower ();
242242
243243 getActionDefinitionsBuilder ({G_SMULH, G_UMULH})
244- .legalFor ({s64, v8s16, v16s8 , v4s32})
244+ .legalFor ({s64, v16s8, v8s16 , v4s32})
245245 .lower ();
246246
247247 getActionDefinitionsBuilder ({G_SMIN, G_SMAX, G_UMIN, G_UMAX})
@@ -627,7 +627,7 @@ AArch64LegalizerInfo::AArch64LegalizerInfo(const AArch64Subtarget &ST)
627627 };
628628 getActionDefinitionsBuilder ({G_ZEXT, G_SEXT, G_ANYEXT})
629629 .legalIf (ExtLegalFunc)
630- .legalFor ({{v2s64, v2s32 }, {v4s32, v4s16}, {v8s16, v8s8 }})
630+ .legalFor ({{v8s16, v8s8 }, {v4s32, v4s16}, {v2s64, v2s32 }})
631631 .clampScalar (0 , s64, s64) // Just for s128, others are handled above.
632632 .moreElementsToNextPow2 (0 )
633633 .clampMaxNumElements (1 , s8, 8 )
@@ -645,7 +645,7 @@ AArch64LegalizerInfo::AArch64LegalizerInfo(const AArch64Subtarget &ST)
645645 .clampMinNumElements (1 , s16, 4 );
646646
647647 getActionDefinitionsBuilder (G_TRUNC)
648- .legalFor ({{v2s32, v2s64 }, {v4s16, v4s32}, {v8s8, v8s16 }})
648+ .legalFor ({{v8s8, v8s16 }, {v4s16, v4s32}, {v2s32, v2s64 }})
649649 .moreElementsToNextPow2 (0 )
650650 .clampMaxNumElements (0 , s8, 8 )
651651 .clampMaxNumElements (0 , s16, 4 )
@@ -696,9 +696,9 @@ AArch64LegalizerInfo::AArch64LegalizerInfo(const AArch64Subtarget &ST)
696696 {s64, s32},
697697 {s32, s64},
698698 {s64, s64},
699- {v2s64, v2s64 },
699+ {v2s32, v2s32 },
700700 {v4s32, v4s32},
701- {v2s32, v2s32 }})
701+ {v2s64, v2s64 }})
702702 .legalFor (HasFP16,
703703 {{s32, s16}, {s64, s16}, {v4s16, v4s16}, {v8s16, v8s16}})
704704 .scalarizeIf (scalarOrEltWiderThan (0 , 64 ), 0 )
@@ -739,9 +739,9 @@ AArch64LegalizerInfo::AArch64LegalizerInfo(const AArch64Subtarget &ST)
739739 {s64, s32},
740740 {s32, s64},
741741 {s64, s64},
742- {v2s64, v2s64 },
742+ {v2s32, v2s32 },
743743 {v4s32, v4s32},
744- {v2s32, v2s32 }})
744+ {v2s64, v2s64 }})
745745 .legalFor (HasFP16,
746746 {{s32, s16}, {s64, s16}, {v4s16, v4s16}, {v8s16, v8s16}})
747747 // Handle types larger than i64 by scalarizing/lowering.
@@ -783,9 +783,9 @@ AArch64LegalizerInfo::AArch64LegalizerInfo(const AArch64Subtarget &ST)
783783 {s64, s32},
784784 {s32, s64},
785785 {s64, s64},
786- {v2s64, v2s64 },
786+ {v2s32, v2s32 },
787787 {v4s32, v4s32},
788- {v2s32, v2s32 }})
788+ {v2s64, v2s64 }})
789789 .legalFor (HasFP16,
790790 {{s16, s32}, {s16, s64}, {v4s16, v4s16}, {v8s16, v8s16}})
791791 .scalarizeIf (scalarOrEltWiderThan (1 , 64 ), 1 )
@@ -964,9 +964,9 @@ AArch64LegalizerInfo::AArch64LegalizerInfo(const AArch64Subtarget &ST)
964964 .minScalar (2 , s64)
965965 .customIf ([=](const LegalityQuery &Query) {
966966 const LLT &VecTy = Query.Types [1 ];
967- return VecTy == v2s16 || VecTy == v4s16 || VecTy == v8s16 ||
968- VecTy == v4s32 || VecTy == v2s64 || VecTy == v2s32 ||
969- VecTy == v8s8 || VecTy == v16s8 || VecTy == v2p0;
967+ return VecTy == v8s8 || VecTy == v16s8 || VecTy == v2s16 ||
968+ VecTy == v4s16 || VecTy == v8s16 || VecTy == v2s32 ||
969+ VecTy == v4s32 || VecTy == v2s64 || VecTy == v2p0;
970970 })
971971 .minScalarOrEltIf (
972972 [=](const LegalityQuery &Query) {
@@ -1004,7 +1004,7 @@ AArch64LegalizerInfo::AArch64LegalizerInfo(const AArch64Subtarget &ST)
10041004
10051005 getActionDefinitionsBuilder (G_INSERT_VECTOR_ELT)
10061006 .legalIf (
1007- typeInSet (0 , {v16s8, v8s8, v8s16 , v4s16, v4s32 , v2s32, v2s64, v2p0}))
1007+ typeInSet (0 , {v8s8, v16s8 , v4s16, v8s16 , v2s32, v4s32 , v2s64, v2p0}))
10081008 .legalFor (HasSVE, {{nxv16s8, s32, s64},
10091009 {nxv8s16, s32, s64},
10101010 {nxv4s32, s32, s64},
@@ -1024,8 +1024,8 @@ AArch64LegalizerInfo::AArch64LegalizerInfo(const AArch64Subtarget &ST)
10241024 {v8s16, s16},
10251025 {v2s32, s32},
10261026 {v4s32, s32},
1027- {v2p0, p0 },
1028- {v2s64, s64 }})
1027+ {v2s64, s64 },
1028+ {v2p0, p0 }})
10291029 .clampNumElements (0 , v4s32, v4s32)
10301030 .clampNumElements (0 , v2s64, v2s64)
10311031 .minScalarOrElt (0 , s8)
@@ -1070,7 +1070,7 @@ AArch64LegalizerInfo::AArch64LegalizerInfo(const AArch64Subtarget &ST)
10701070 if (DstTy != SrcTy)
10711071 return false ;
10721072 return llvm::is_contained (
1073- {v2s64, v2s32, v4s32, v4s16, v16s8, v8s8, v8s16 }, DstTy);
1073+ {v8s8, v16s8, v4s16, v8s16, v2s32, v4s32, v2s64 }, DstTy);
10741074 })
10751075 // G_SHUFFLE_VECTOR can have scalar sources (from 1 x s vectors) or scalar
10761076 // destinations, we just want those lowered into G_BUILD_VECTOR or
@@ -1106,7 +1106,7 @@ AArch64LegalizerInfo::AArch64LegalizerInfo(const AArch64Subtarget &ST)
11061106 });
11071107
11081108 getActionDefinitionsBuilder (G_CONCAT_VECTORS)
1109- .legalFor ({{v4s32, v2s32 }, {v8s16, v4s16}, {v16s8, v8s8 }})
1109+ .legalFor ({{v16s8, v8s8 }, {v8s16, v4s16}, {v4s32, v2s32 }})
11101110 .bitcastIf (
11111111 [=](const LegalityQuery &Query) {
11121112 return Query.Types [0 ].getSizeInBits () <= 128 &&
@@ -1205,12 +1205,12 @@ AArch64LegalizerInfo::AArch64LegalizerInfo(const AArch64Subtarget &ST)
12051205 .lower ();
12061206
12071207 getActionDefinitionsBuilder (G_VECREDUCE_ADD)
1208- .legalFor ({{s8, v16s8},
1209- {s8, v8s8},
1210- {s16, v8s16},
1208+ .legalFor ({{s8, v8s8},
1209+ {s8, v16s8},
12111210 {s16, v4s16},
1212- {s32, v4s32 },
1211+ {s16, v8s16 },
12131212 {s32, v2s32},
1213+ {s32, v4s32},
12141214 {s64, v2s64}})
12151215 .moreElementsToNextPow2 (1 )
12161216 .clampMaxNumElements (1 , s64, 2 )
@@ -1222,7 +1222,7 @@ AArch64LegalizerInfo::AArch64LegalizerInfo(const AArch64Subtarget &ST)
12221222
12231223 getActionDefinitionsBuilder ({G_VECREDUCE_FMIN, G_VECREDUCE_FMAX,
12241224 G_VECREDUCE_FMINIMUM, G_VECREDUCE_FMAXIMUM})
1225- .legalFor ({{s32, v4s32 }, {s32, v2s32 }, {s64, v2s64}})
1225+ .legalFor ({{s32, v2s32 }, {s32, v4s32 }, {s64, v2s64}})
12261226 .legalFor (HasFP16, {{s16, v4s16}, {s16, v8s16}})
12271227 .minScalarOrElt (0 , MinFPScalar)
12281228 .clampMaxNumElements (1 , s64, 2 )
@@ -1305,19 +1305,19 @@ AArch64LegalizerInfo::AArch64LegalizerInfo(const AArch64Subtarget &ST)
13051305 .legalFor ({{v8s8, v8s8}, {v16s8, v16s8}})
13061306 .customFor (!HasCSSC, {{s32, s32}, {s64, s64}})
13071307 .customFor ({{s128, s128},
1308- {v2s64, v2s64},
13091308 {v2s32, v2s32},
13101309 {v4s32, v4s32},
13111310 {v4s16, v4s16},
1312- {v8s16, v8s16}})
1311+ {v8s16, v8s16},
1312+ {v2s64, v2s64}})
13131313 .clampScalar (0 , s32, s128)
13141314 .widenScalarToNextPow2 (0 )
13151315 .minScalarEltSameAsIf (always, 1 , 0 )
13161316 .maxScalarEltSameAsIf (always, 1 , 0 );
13171317
13181318 getActionDefinitionsBuilder ({G_UADDSAT, G_SADDSAT, G_USUBSAT, G_SSUBSAT})
1319- .legalFor ({v2s64, v2s32, v4s32, v4s16, v8s16, v8s8, v16s8 })
1320- .legalFor (HasSVE, {nxv2s64, nxv4s32, nxv8s16, nxv16s8 })
1319+ .legalFor ({v8s8, v16s8, v4s16, v8s16, v2s32, v4s32, v2s64 })
1320+ .legalFor (HasSVE, {nxv16s8, nxv8s16, nxv4s32, nxv2s64 })
13211321 .clampNumElements (0 , v8s8, v16s8)
13221322 .clampNumElements (0 , v4s16, v8s16)
13231323 .clampNumElements (0 , v2s32, v4s32)
0 commit comments