@@ -89,8 +89,10 @@ X86LegalizerInfo::X86LegalizerInfo(const X86Subtarget &STI,
8989 // 32/64-bits needs support for s64/s128 to handle cases:
9090 // s64 = EXTEND (G_IMPLICIT_DEF s32) -> s64 = G_IMPLICIT_DEF
9191 // s128 = EXTEND (G_IMPLICIT_DEF s32/s64) -> s128 = G_IMPLICIT_DEF
92- getActionDefinitionsBuilder (G_IMPLICIT_DEF)
92+ getActionDefinitionsBuilder (
93+ {G_IMPLICIT_DEF, G_PHI, G_FREEZE, G_CONSTANT_FOLD_BARRIER})
9394 .legalFor ({p0, s1, s8, s16, s32, s64})
95+ .legalFor (UseX87, {s80})
9496 .legalFor (Is64Bit, {s128})
9597 .legalFor (HasSSE2, {v16s8, v8s16, v4s32, v2s64})
9698 .legalFor (HasAVX, {v32s8, v16s16, v8s32, v4s64})
@@ -103,7 +105,7 @@ X86LegalizerInfo::X86LegalizerInfo(const X86Subtarget &STI,
103105 .clampMinNumElements (0 , s32, 4 )
104106 .clampMinNumElements (0 , s64, 2 )
105107 .clampMaxNumElements (0 , s8, HasAVX512 ? 64 : (HasAVX ? 32 : 16 ))
106- .clampMaxNumElements (0 , s16, HasAVX512 ? 32 : (HasAVX ? 16 : 8 ))
108+ .clampMaxNumElements (0 , s16, HasAVX512 ? 32 : (HasAVX ? 16 : 8 ))
107109 .clampMaxNumElements (0 , s32, HasAVX512 ? 16 : (HasAVX ? 8 : 4 ))
108110 .clampMaxNumElements (0 , s64, HasAVX512 ? 8 : (HasAVX ? 4 : 2 ))
109111 .clampMaxNumElements (0 , p0,
@@ -303,26 +305,6 @@ X86LegalizerInfo::X86LegalizerInfo(const X86Subtarget &STI,
303305 .clampScalar (1 , s16, sMaxScalar )
304306 .scalarSameSizeAs (0 , 1 );
305307
306- // control flow
307- getActionDefinitionsBuilder (G_PHI)
308- .legalFor ({s8, s16, s32, p0})
309- .legalFor (UseX87, {s80})
310- .legalFor (Is64Bit, {s64})
311- .legalFor (HasSSE1, {v16s8, v8s16, v4s32, v2s64})
312- .legalFor (HasAVX, {v32s8, v16s16, v8s32, v4s64})
313- .legalFor (HasAVX512, {v64s8, v32s16, v16s32, v8s64})
314- .clampMinNumElements (0 , s8, 16 )
315- .clampMinNumElements (0 , s16, 8 )
316- .clampMinNumElements (0 , s32, 4 )
317- .clampMinNumElements (0 , s64, 2 )
318- .clampMaxNumElements (0 , s8, HasAVX512 ? 64 : (HasAVX ? 32 : 16 ))
319- .clampMaxNumElements (0 , s16, HasAVX512 ? 32 : (HasAVX ? 16 : 8 ))
320- .clampMaxNumElements (0 , s32, HasAVX512 ? 16 : (HasAVX ? 8 : 4 ))
321- .clampMaxNumElements (0 , s64, HasAVX512 ? 8 : (HasAVX ? 4 : 2 ))
322- .widenScalarToNextPow2 (0 , /* Min=*/ 32 )
323- .clampScalar (0 , s8, sMaxScalar )
324- .scalarize (0 );
325-
326308 getActionDefinitionsBuilder (G_BRCOND).legalFor ({s1});
327309
328310 // pointer handling
@@ -606,11 +588,6 @@ X86LegalizerInfo::X86LegalizerInfo(const X86Subtarget &STI,
606588 .minScalar (0 , LLT::scalar (32 ))
607589 .libcall ();
608590
609- getActionDefinitionsBuilder ({G_FREEZE, G_CONSTANT_FOLD_BARRIER})
610- .legalFor ({s8, s16, s32, s64, p0})
611- .widenScalarToNextPow2 (0 , /* Min=*/ 8 )
612- .clampScalar (0 , s8, sMaxScalar );
613-
614591 getLegacyLegalizerInfo ().computeTables ();
615592 verify (*STI.getInstrInfo ());
616593}
0 commit comments