[llvm] c0a41c3 - [AArch64][GlobalISel] Improve legalization for odd-sized G_ICMP/G_CONSTANT

Jessica Paquette via llvm-commits llvm-commits at lists.llvm.org
Wed Jul 28 15:31:56 PDT 2021


Author: Jessica Paquette
Date: 2021-07-28T15:31:33-07:00
New Revision: c0a41c3d3b53b0d64286947cf11751ff6889be30

URL: https://github.com/llvm/llvm-project/commit/c0a41c3d3b53b0d64286947cf11751ff6889be30
DIFF: https://github.com/llvm/llvm-project/commit/c0a41c3d3b53b0d64286947cf11751ff6889be30.diff

LOG: [AArch64][GlobalISel] Improve legalization for odd-sized G_ICMP/G_CONSTANT

We were handing types like s88 like

1) clamp to the range
2) widen to the next power of 2

This isn't desirable because it causes an odd breakdown for types like s88.
If we widen to the next power of 2 (s128) first, then we get a clean breakdown
when we clamp back to s64.

Differential Revision: https://reviews.llvm.org/D106998

Added: 
    

Modified: 
    llvm/lib/Target/AArch64/GISel/AArch64LegalizerInfo.cpp
    llvm/test/CodeGen/AArch64/GlobalISel/legalize-cmp.mir
    llvm/test/CodeGen/AArch64/GlobalISel/legalize-constant.mir

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/AArch64/GISel/AArch64LegalizerInfo.cpp b/llvm/lib/Target/AArch64/GISel/AArch64LegalizerInfo.cpp
index 08e4a119127c9..81f3702b82996 100644
--- a/llvm/lib/Target/AArch64/GISel/AArch64LegalizerInfo.cpp
+++ b/llvm/lib/Target/AArch64/GISel/AArch64LegalizerInfo.cpp
@@ -360,8 +360,8 @@ AArch64LegalizerInfo::AArch64LegalizerInfo(const AArch64Subtarget &ST)
   // Constants
   getActionDefinitionsBuilder(G_CONSTANT)
       .legalFor({p0, s8, s16, s32, s64})
-      .clampScalar(0, s8, s64)
-      .widenScalarToNextPow2(0);
+      .widenScalarToNextPow2(0)
+      .clampScalar(0, s8, s64);
   getActionDefinitionsBuilder(G_FCONSTANT)
       .legalIf([=](const LegalityQuery &Query) {
         const auto &Ty = Query.Types[0];
@@ -383,6 +383,7 @@ AArch64LegalizerInfo::AArch64LegalizerInfo(const AArch64Subtarget &ST)
                  {v8s16, v8s16},
                  {v8s8, v8s8},
                  {v16s8, v16s8}})
+      .widenScalarOrEltToNextPow2(1)
       .clampScalar(1, s32, s64)
       .clampScalar(0, s32, s32)
       .minScalarEltSameAsIf(
@@ -399,7 +400,6 @@ AArch64LegalizerInfo::AArch64LegalizerInfo(const AArch64Subtarget &ST)
       .minScalarOrEltIf(
           [=](const LegalityQuery &Query) { return Query.Types[1] == v2p0; }, 0,
           s64)
-      .widenScalarOrEltToNextPow2(1)
       .clampNumElements(0, v2s32, v4s32);
 
   // Extensions

diff  --git a/llvm/test/CodeGen/AArch64/GlobalISel/legalize-cmp.mir b/llvm/test/CodeGen/AArch64/GlobalISel/legalize-cmp.mir
index 8a9bf798b5785..783838856dd55 100644
--- a/llvm/test/CodeGen/AArch64/GlobalISel/legalize-cmp.mir
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/legalize-cmp.mir
@@ -120,25 +120,19 @@ body:             |
   ; CHECK:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
   ; CHECK:   [[DEF:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF
   ; CHECK:   [[UV:%[0-9]+]]:_(s8), [[UV1:%[0-9]+]]:_(s8), [[UV2:%[0-9]+]]:_(s8), [[UV3:%[0-9]+]]:_(s8), [[UV4:%[0-9]+]]:_(s8), [[UV5:%[0-9]+]]:_(s8), [[UV6:%[0-9]+]]:_(s8), [[UV7:%[0-9]+]]:_(s8) = G_UNMERGE_VALUES [[DEF]](s64)
-  ; CHECK:   [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[UV]](s8), [[UV1]](s8), [[UV2]](s8), [[UV3]](s8), [[UV4]](s8), [[UV5]](s8), [[UV6]](s8), [[UV7]](s8)
   ; CHECK:   [[UV8:%[0-9]+]]:_(s8), [[UV9:%[0-9]+]]:_(s8), [[UV10:%[0-9]+]]:_(s8), [[UV11:%[0-9]+]]:_(s8), [[UV12:%[0-9]+]]:_(s8), [[UV13:%[0-9]+]]:_(s8), [[UV14:%[0-9]+]]:_(s8), [[UV15:%[0-9]+]]:_(s8) = G_UNMERGE_VALUES [[DEF]](s64)
-  ; CHECK:   [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[UV8]](s8), [[UV9]](s8), [[UV10]](s8), [[UV11]](s8), [[UV12]](s8), [[UV13]](s8), [[UV14]](s8), [[UV15]](s8)
-  ; CHECK:   [[COPY:%[0-9]+]]:_(s64) = COPY [[MV]](s64)
-  ; CHECK:   [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[DEF]](s64)
-  ; CHECK:   [[COPY1:%[0-9]+]]:_(s64) = COPY [[MV1]](s64)
-  ; CHECK:   [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[DEF]](s64)
-  ; CHECK:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
-  ; CHECK:   [[XOR:%[0-9]+]]:_(s64) = G_XOR [[COPY]], [[COPY1]]
-  ; CHECK:   [[COPY2:%[0-9]+]]:_(s32) = COPY [[TRUNC]](s32)
-  ; CHECK:   [[COPY3:%[0-9]+]]:_(s32) = COPY [[TRUNC1]](s32)
-  ; CHECK:   [[XOR1:%[0-9]+]]:_(s32) = G_XOR [[COPY2]], [[COPY3]]
-  ; CHECK:   [[UV16:%[0-9]+]]:_(s8), [[UV17:%[0-9]+]]:_(s8), [[UV18:%[0-9]+]]:_(s8), [[UV19:%[0-9]+]]:_(s8) = G_UNMERGE_VALUES [[XOR1]](s32)
-  ; CHECK:   [[C1:%[0-9]+]]:_(s8) = G_CONSTANT i8 0
-  ; CHECK:   [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[UV16]](s8), [[UV17]](s8), [[UV18]](s8), [[C1]](s8), [[C1]](s8), [[C1]](s8), [[C1]](s8), [[C1]](s8)
-  ; CHECK:   [[OR:%[0-9]+]]:_(s64) = G_OR [[XOR]], [[MV2]]
-  ; CHECK:   [[OR1:%[0-9]+]]:_(s64) = G_OR [[OR]], [[C]]
-  ; CHECK:   [[OR2:%[0-9]+]]:_(s64) = G_OR [[OR1]], [[C]]
-  ; CHECK:   [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(eq), [[OR2]](s64), [[C]]
+  ; CHECK:   [[UV16:%[0-9]+]]:_(s8), [[UV17:%[0-9]+]]:_(s8), [[UV18:%[0-9]+]]:_(s8), [[UV19:%[0-9]+]]:_(s8), [[UV20:%[0-9]+]]:_(s8), [[UV21:%[0-9]+]]:_(s8), [[UV22:%[0-9]+]]:_(s8), [[UV23:%[0-9]+]]:_(s8) = G_UNMERGE_VALUES [[DEF]](s64)
+  ; CHECK:   [[C:%[0-9]+]]:_(s8) = G_CONSTANT i8 0
+  ; CHECK:   [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[UV]](s8), [[UV1]](s8), [[UV2]](s8), [[UV3]](s8), [[UV4]](s8), [[UV5]](s8), [[UV6]](s8), [[UV7]](s8)
+  ; CHECK:   [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[UV16]](s8), [[UV17]](s8), [[UV18]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8)
+  ; CHECK:   [[UV24:%[0-9]+]]:_(s8), [[UV25:%[0-9]+]]:_(s8), [[UV26:%[0-9]+]]:_(s8), [[UV27:%[0-9]+]]:_(s8), [[UV28:%[0-9]+]]:_(s8), [[UV29:%[0-9]+]]:_(s8), [[UV30:%[0-9]+]]:_(s8), [[UV31:%[0-9]+]]:_(s8) = G_UNMERGE_VALUES [[DEF]](s64)
+  ; CHECK:   [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[UV8]](s8), [[UV9]](s8), [[UV10]](s8), [[UV11]](s8), [[UV12]](s8), [[UV13]](s8), [[UV14]](s8), [[UV15]](s8)
+  ; CHECK:   [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[UV24]](s8), [[UV25]](s8), [[UV26]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8)
+  ; CHECK:   [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
+  ; CHECK:   [[XOR:%[0-9]+]]:_(s64) = G_XOR [[MV]], [[MV2]]
+  ; CHECK:   [[XOR1:%[0-9]+]]:_(s64) = G_XOR [[MV1]], [[MV3]]
+  ; CHECK:   [[OR:%[0-9]+]]:_(s64) = G_OR [[XOR]], [[XOR1]]
+  ; CHECK:   [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(eq), [[OR]](s64), [[C1]]
   ; CHECK:   %cmp:_(s1) = G_TRUNC [[ICMP]](s32)
   ; CHECK:   G_BRCOND %cmp(s1), %bb.1
   ; CHECK:   G_BR %bb.2
@@ -167,25 +161,19 @@ body:             |
   ; CHECK:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
   ; CHECK:   [[DEF:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF
   ; CHECK:   [[UV:%[0-9]+]]:_(s8), [[UV1:%[0-9]+]]:_(s8), [[UV2:%[0-9]+]]:_(s8), [[UV3:%[0-9]+]]:_(s8), [[UV4:%[0-9]+]]:_(s8), [[UV5:%[0-9]+]]:_(s8), [[UV6:%[0-9]+]]:_(s8), [[UV7:%[0-9]+]]:_(s8) = G_UNMERGE_VALUES [[DEF]](s64)
-  ; CHECK:   [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[UV]](s8), [[UV1]](s8), [[UV2]](s8), [[UV3]](s8), [[UV4]](s8), [[UV5]](s8), [[UV6]](s8), [[UV7]](s8)
   ; CHECK:   [[UV8:%[0-9]+]]:_(s8), [[UV9:%[0-9]+]]:_(s8), [[UV10:%[0-9]+]]:_(s8), [[UV11:%[0-9]+]]:_(s8), [[UV12:%[0-9]+]]:_(s8), [[UV13:%[0-9]+]]:_(s8), [[UV14:%[0-9]+]]:_(s8), [[UV15:%[0-9]+]]:_(s8) = G_UNMERGE_VALUES [[DEF]](s64)
-  ; CHECK:   [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[UV8]](s8), [[UV9]](s8), [[UV10]](s8), [[UV11]](s8), [[UV12]](s8), [[UV13]](s8), [[UV14]](s8), [[UV15]](s8)
-  ; CHECK:   [[COPY:%[0-9]+]]:_(s64) = COPY [[MV]](s64)
-  ; CHECK:   [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[DEF]](s64)
-  ; CHECK:   [[COPY1:%[0-9]+]]:_(s64) = COPY [[MV1]](s64)
-  ; CHECK:   [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[DEF]](s64)
-  ; CHECK:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
-  ; CHECK:   [[XOR:%[0-9]+]]:_(s64) = G_XOR [[COPY]], [[COPY1]]
-  ; CHECK:   [[COPY2:%[0-9]+]]:_(s32) = COPY [[TRUNC]](s32)
-  ; CHECK:   [[COPY3:%[0-9]+]]:_(s32) = COPY [[TRUNC1]](s32)
-  ; CHECK:   [[XOR1:%[0-9]+]]:_(s32) = G_XOR [[COPY2]], [[COPY3]]
-  ; CHECK:   [[UV16:%[0-9]+]]:_(s8), [[UV17:%[0-9]+]]:_(s8), [[UV18:%[0-9]+]]:_(s8), [[UV19:%[0-9]+]]:_(s8) = G_UNMERGE_VALUES [[XOR1]](s32)
-  ; CHECK:   [[C1:%[0-9]+]]:_(s8) = G_CONSTANT i8 0
-  ; CHECK:   [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[UV16]](s8), [[UV17]](s8), [[UV18]](s8), [[C1]](s8), [[C1]](s8), [[C1]](s8), [[C1]](s8), [[C1]](s8)
-  ; CHECK:   [[OR:%[0-9]+]]:_(s64) = G_OR [[XOR]], [[MV2]]
-  ; CHECK:   [[OR1:%[0-9]+]]:_(s64) = G_OR [[OR]], [[C]]
-  ; CHECK:   [[OR2:%[0-9]+]]:_(s64) = G_OR [[OR1]], [[C]]
-  ; CHECK:   [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ne), [[OR2]](s64), [[C]]
+  ; CHECK:   [[UV16:%[0-9]+]]:_(s8), [[UV17:%[0-9]+]]:_(s8), [[UV18:%[0-9]+]]:_(s8), [[UV19:%[0-9]+]]:_(s8), [[UV20:%[0-9]+]]:_(s8), [[UV21:%[0-9]+]]:_(s8), [[UV22:%[0-9]+]]:_(s8), [[UV23:%[0-9]+]]:_(s8) = G_UNMERGE_VALUES [[DEF]](s64)
+  ; CHECK:   [[C:%[0-9]+]]:_(s8) = G_CONSTANT i8 0
+  ; CHECK:   [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[UV]](s8), [[UV1]](s8), [[UV2]](s8), [[UV3]](s8), [[UV4]](s8), [[UV5]](s8), [[UV6]](s8), [[UV7]](s8)
+  ; CHECK:   [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[UV16]](s8), [[UV17]](s8), [[UV18]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8)
+  ; CHECK:   [[UV24:%[0-9]+]]:_(s8), [[UV25:%[0-9]+]]:_(s8), [[UV26:%[0-9]+]]:_(s8), [[UV27:%[0-9]+]]:_(s8), [[UV28:%[0-9]+]]:_(s8), [[UV29:%[0-9]+]]:_(s8), [[UV30:%[0-9]+]]:_(s8), [[UV31:%[0-9]+]]:_(s8) = G_UNMERGE_VALUES [[DEF]](s64)
+  ; CHECK:   [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[UV8]](s8), [[UV9]](s8), [[UV10]](s8), [[UV11]](s8), [[UV12]](s8), [[UV13]](s8), [[UV14]](s8), [[UV15]](s8)
+  ; CHECK:   [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[UV24]](s8), [[UV25]](s8), [[UV26]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8), [[C]](s8)
+  ; CHECK:   [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
+  ; CHECK:   [[XOR:%[0-9]+]]:_(s64) = G_XOR [[MV]], [[MV2]]
+  ; CHECK:   [[XOR1:%[0-9]+]]:_(s64) = G_XOR [[MV1]], [[MV3]]
+  ; CHECK:   [[OR:%[0-9]+]]:_(s64) = G_OR [[XOR]], [[XOR1]]
+  ; CHECK:   [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ne), [[OR]](s64), [[C1]]
   ; CHECK:   %cmp:_(s1) = G_TRUNC [[ICMP]](s32)
   ; CHECK:   G_BRCOND %cmp(s1), %bb.1
   ; CHECK:   G_BR %bb.2
@@ -214,20 +202,19 @@ body:             |
   ; CHECK:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
   ; CHECK:   [[DEF:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF
   ; CHECK:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[DEF]](s64)
-  ; CHECK:   [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[UV]](s32), [[UV1]](s32)
   ; CHECK:   [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[DEF]](s64)
-  ; CHECK:   [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[UV2]](s32), [[UV3]](s32)
-  ; CHECK:   [[COPY:%[0-9]+]]:_(s64) = COPY [[MV]](s64)
-  ; CHECK:   [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[DEF]](s64), 0
-  ; CHECK:   [[COPY1:%[0-9]+]]:_(s64) = COPY [[MV1]](s64)
-  ; CHECK:   [[EXTRACT1:%[0-9]+]]:_(s32) = G_EXTRACT [[DEF]](s64), 0
-  ; CHECK:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
-  ; CHECK:   [[XOR:%[0-9]+]]:_(s64) = G_XOR [[COPY]], [[COPY1]]
-  ; CHECK:   [[XOR1:%[0-9]+]]:_(s32) = G_XOR [[EXTRACT]], [[EXTRACT1]]
-  ; CHECK:   [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
-  ; CHECK:   [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[XOR1]](s32), [[C1]](s32)
-  ; CHECK:   [[OR:%[0-9]+]]:_(s64) = G_OR [[XOR]], [[MV2]]
-  ; CHECK:   [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(eq), [[OR]](s64), [[C]]
+  ; CHECK:   [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[DEF]](s64)
+  ; CHECK:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
+  ; CHECK:   [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[UV]](s32), [[UV1]](s32)
+  ; CHECK:   [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[UV4]](s32), [[C]](s32)
+  ; CHECK:   [[UV6:%[0-9]+]]:_(s32), [[UV7:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[DEF]](s64)
+  ; CHECK:   [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[UV2]](s32), [[UV3]](s32)
+  ; CHECK:   [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[UV6]](s32), [[C]](s32)
+  ; CHECK:   [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
+  ; CHECK:   [[XOR:%[0-9]+]]:_(s64) = G_XOR [[MV]], [[MV2]]
+  ; CHECK:   [[XOR1:%[0-9]+]]:_(s64) = G_XOR [[MV1]], [[MV3]]
+  ; CHECK:   [[OR:%[0-9]+]]:_(s64) = G_OR [[XOR]], [[XOR1]]
+  ; CHECK:   [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(eq), [[OR]](s64), [[C1]]
   ; CHECK:   %cmp:_(s1) = G_TRUNC [[ICMP]](s32)
   ; CHECK:   G_BRCOND %cmp(s1), %bb.1
   ; CHECK:   G_BR %bb.2

diff  --git a/llvm/test/CodeGen/AArch64/GlobalISel/legalize-constant.mir b/llvm/test/CodeGen/AArch64/GlobalISel/legalize-constant.mir
index a907564d4b8a7..aec4260c71068 100644
--- a/llvm/test/CodeGen/AArch64/GlobalISel/legalize-constant.mir
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/legalize-constant.mir
@@ -66,56 +66,7 @@ body: |
   bb.0:
     liveins: $x0
     ; CHECK-LABEL: name: s792
-    ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
-    ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
-    ; CHECK: [[UV:%[0-9]+]]:_(s8), [[UV1:%[0-9]+]]:_(s8), [[UV2:%[0-9]+]]:_(s8), [[UV3:%[0-9]+]]:_(s8), [[UV4:%[0-9]+]]:_(s8), [[UV5:%[0-9]+]]:_(s8), [[UV6:%[0-9]+]]:_(s8), [[UV7:%[0-9]+]]:_(s8) = G_UNMERGE_VALUES [[C]](s64)
-    ; CHECK: [[UV8:%[0-9]+]]:_(s8), [[UV9:%[0-9]+]]:_(s8), [[UV10:%[0-9]+]]:_(s8), [[UV11:%[0-9]+]]:_(s8), [[UV12:%[0-9]+]]:_(s8), [[UV13:%[0-9]+]]:_(s8), [[UV14:%[0-9]+]]:_(s8), [[UV15:%[0-9]+]]:_(s8) = G_UNMERGE_VALUES [[C]](s64)
-    ; CHECK: [[UV16:%[0-9]+]]:_(s8), [[UV17:%[0-9]+]]:_(s8), [[UV18:%[0-9]+]]:_(s8), [[UV19:%[0-9]+]]:_(s8), [[UV20:%[0-9]+]]:_(s8), [[UV21:%[0-9]+]]:_(s8), [[UV22:%[0-9]+]]:_(s8), [[UV23:%[0-9]+]]:_(s8) = G_UNMERGE_VALUES [[C]](s64)
-    ; CHECK: [[UV24:%[0-9]+]]:_(s8), [[UV25:%[0-9]+]]:_(s8), [[UV26:%[0-9]+]]:_(s8), [[UV27:%[0-9]+]]:_(s8), [[UV28:%[0-9]+]]:_(s8), [[UV29:%[0-9]+]]:_(s8), [[UV30:%[0-9]+]]:_(s8), [[UV31:%[0-9]+]]:_(s8) = G_UNMERGE_VALUES [[C]](s64)
-    ; CHECK: [[UV32:%[0-9]+]]:_(s8), [[UV33:%[0-9]+]]:_(s8), [[UV34:%[0-9]+]]:_(s8), [[UV35:%[0-9]+]]:_(s8), [[UV36:%[0-9]+]]:_(s8), [[UV37:%[0-9]+]]:_(s8), [[UV38:%[0-9]+]]:_(s8), [[UV39:%[0-9]+]]:_(s8) = G_UNMERGE_VALUES [[C]](s64)
-    ; CHECK: [[UV40:%[0-9]+]]:_(s8), [[UV41:%[0-9]+]]:_(s8), [[UV42:%[0-9]+]]:_(s8), [[UV43:%[0-9]+]]:_(s8), [[UV44:%[0-9]+]]:_(s8), [[UV45:%[0-9]+]]:_(s8), [[UV46:%[0-9]+]]:_(s8), [[UV47:%[0-9]+]]:_(s8) = G_UNMERGE_VALUES [[C]](s64)
-    ; CHECK: [[UV48:%[0-9]+]]:_(s8), [[UV49:%[0-9]+]]:_(s8), [[UV50:%[0-9]+]]:_(s8), [[UV51:%[0-9]+]]:_(s8), [[UV52:%[0-9]+]]:_(s8), [[UV53:%[0-9]+]]:_(s8), [[UV54:%[0-9]+]]:_(s8), [[UV55:%[0-9]+]]:_(s8) = G_UNMERGE_VALUES [[C]](s64)
-    ; CHECK: [[UV56:%[0-9]+]]:_(s8), [[UV57:%[0-9]+]]:_(s8), [[UV58:%[0-9]+]]:_(s8), [[UV59:%[0-9]+]]:_(s8), [[UV60:%[0-9]+]]:_(s8), [[UV61:%[0-9]+]]:_(s8), [[UV62:%[0-9]+]]:_(s8), [[UV63:%[0-9]+]]:_(s8) = G_UNMERGE_VALUES [[C]](s64)
-    ; CHECK: [[UV64:%[0-9]+]]:_(s8), [[UV65:%[0-9]+]]:_(s8), [[UV66:%[0-9]+]]:_(s8), [[UV67:%[0-9]+]]:_(s8), [[UV68:%[0-9]+]]:_(s8), [[UV69:%[0-9]+]]:_(s8), [[UV70:%[0-9]+]]:_(s8), [[UV71:%[0-9]+]]:_(s8) = G_UNMERGE_VALUES [[C]](s64)
-    ; CHECK: [[UV72:%[0-9]+]]:_(s8), [[UV73:%[0-9]+]]:_(s8), [[UV74:%[0-9]+]]:_(s8), [[UV75:%[0-9]+]]:_(s8), [[UV76:%[0-9]+]]:_(s8), [[UV77:%[0-9]+]]:_(s8), [[UV78:%[0-9]+]]:_(s8), [[UV79:%[0-9]+]]:_(s8) = G_UNMERGE_VALUES [[C]](s64)
-    ; CHECK: [[UV80:%[0-9]+]]:_(s8), [[UV81:%[0-9]+]]:_(s8), [[UV82:%[0-9]+]]:_(s8), [[UV83:%[0-9]+]]:_(s8), [[UV84:%[0-9]+]]:_(s8), [[UV85:%[0-9]+]]:_(s8), [[UV86:%[0-9]+]]:_(s8), [[UV87:%[0-9]+]]:_(s8) = G_UNMERGE_VALUES [[C]](s64)
-    ; CHECK: [[UV88:%[0-9]+]]:_(s8), [[UV89:%[0-9]+]]:_(s8), [[UV90:%[0-9]+]]:_(s8), [[UV91:%[0-9]+]]:_(s8), [[UV92:%[0-9]+]]:_(s8), [[UV93:%[0-9]+]]:_(s8), [[UV94:%[0-9]+]]:_(s8), [[UV95:%[0-9]+]]:_(s8) = G_UNMERGE_VALUES [[C]](s64)
-    ; CHECK: [[UV96:%[0-9]+]]:_(s8), [[UV97:%[0-9]+]]:_(s8), [[UV98:%[0-9]+]]:_(s8), [[UV99:%[0-9]+]]:_(s8) = G_UNMERGE_VALUES [[C1]](s32)
-    ; CHECK: [[MV:%[0-9]+]]:_(s24) = G_MERGE_VALUES [[UV]](s8), [[UV1]](s8), [[UV2]](s8)
-    ; CHECK: [[MV1:%[0-9]+]]:_(s24) = G_MERGE_VALUES [[UV3]](s8), [[UV4]](s8), [[UV5]](s8)
-    ; CHECK: [[MV2:%[0-9]+]]:_(s24) = G_MERGE_VALUES [[UV6]](s8), [[UV7]](s8), [[UV8]](s8)
-    ; CHECK: [[MV3:%[0-9]+]]:_(s24) = G_MERGE_VALUES [[UV9]](s8), [[UV10]](s8), [[UV11]](s8)
-    ; CHECK: [[MV4:%[0-9]+]]:_(s24) = G_MERGE_VALUES [[UV12]](s8), [[UV13]](s8), [[UV14]](s8)
-    ; CHECK: [[MV5:%[0-9]+]]:_(s24) = G_MERGE_VALUES [[UV15]](s8), [[UV16]](s8), [[UV17]](s8)
-    ; CHECK: [[MV6:%[0-9]+]]:_(s24) = G_MERGE_VALUES [[UV18]](s8), [[UV19]](s8), [[UV20]](s8)
-    ; CHECK: [[MV7:%[0-9]+]]:_(s24) = G_MERGE_VALUES [[UV21]](s8), [[UV22]](s8), [[UV23]](s8)
-    ; CHECK: [[MV8:%[0-9]+]]:_(s24) = G_MERGE_VALUES [[UV24]](s8), [[UV25]](s8), [[UV26]](s8)
-    ; CHECK: [[MV9:%[0-9]+]]:_(s24) = G_MERGE_VALUES [[UV27]](s8), [[UV28]](s8), [[UV29]](s8)
-    ; CHECK: [[MV10:%[0-9]+]]:_(s24) = G_MERGE_VALUES [[UV30]](s8), [[UV31]](s8), [[UV32]](s8)
-    ; CHECK: [[MV11:%[0-9]+]]:_(s24) = G_MERGE_VALUES [[UV33]](s8), [[UV34]](s8), [[UV35]](s8)
-    ; CHECK: [[MV12:%[0-9]+]]:_(s24) = G_MERGE_VALUES [[UV36]](s8), [[UV37]](s8), [[UV38]](s8)
-    ; CHECK: [[MV13:%[0-9]+]]:_(s24) = G_MERGE_VALUES [[UV39]](s8), [[UV40]](s8), [[UV41]](s8)
-    ; CHECK: [[MV14:%[0-9]+]]:_(s24) = G_MERGE_VALUES [[UV42]](s8), [[UV43]](s8), [[UV44]](s8)
-    ; CHECK: [[MV15:%[0-9]+]]:_(s24) = G_MERGE_VALUES [[UV45]](s8), [[UV46]](s8), [[UV47]](s8)
-    ; CHECK: [[MV16:%[0-9]+]]:_(s24) = G_MERGE_VALUES [[UV48]](s8), [[UV49]](s8), [[UV50]](s8)
-    ; CHECK: [[MV17:%[0-9]+]]:_(s24) = G_MERGE_VALUES [[UV51]](s8), [[UV52]](s8), [[UV53]](s8)
-    ; CHECK: [[MV18:%[0-9]+]]:_(s24) = G_MERGE_VALUES [[UV54]](s8), [[UV55]](s8), [[UV56]](s8)
-    ; CHECK: [[MV19:%[0-9]+]]:_(s24) = G_MERGE_VALUES [[UV57]](s8), [[UV58]](s8), [[UV59]](s8)
-    ; CHECK: [[MV20:%[0-9]+]]:_(s24) = G_MERGE_VALUES [[UV60]](s8), [[UV61]](s8), [[UV62]](s8)
-    ; CHECK: [[MV21:%[0-9]+]]:_(s24) = G_MERGE_VALUES [[UV63]](s8), [[UV64]](s8), [[UV65]](s8)
-    ; CHECK: [[MV22:%[0-9]+]]:_(s24) = G_MERGE_VALUES [[UV66]](s8), [[UV67]](s8), [[UV68]](s8)
-    ; CHECK: [[MV23:%[0-9]+]]:_(s24) = G_MERGE_VALUES [[UV69]](s8), [[UV70]](s8), [[UV71]](s8)
-    ; CHECK: [[MV24:%[0-9]+]]:_(s24) = G_MERGE_VALUES [[UV72]](s8), [[UV73]](s8), [[UV74]](s8)
-    ; CHECK: [[MV25:%[0-9]+]]:_(s24) = G_MERGE_VALUES [[UV75]](s8), [[UV76]](s8), [[UV77]](s8)
-    ; CHECK: [[MV26:%[0-9]+]]:_(s24) = G_MERGE_VALUES [[UV78]](s8), [[UV79]](s8), [[UV80]](s8)
-    ; CHECK: [[MV27:%[0-9]+]]:_(s24) = G_MERGE_VALUES [[UV81]](s8), [[UV82]](s8), [[UV83]](s8)
-    ; CHECK: [[MV28:%[0-9]+]]:_(s24) = G_MERGE_VALUES [[UV84]](s8), [[UV85]](s8), [[UV86]](s8)
-    ; CHECK: [[MV29:%[0-9]+]]:_(s24) = G_MERGE_VALUES [[UV87]](s8), [[UV88]](s8), [[UV89]](s8)
-    ; CHECK: [[MV30:%[0-9]+]]:_(s24) = G_MERGE_VALUES [[UV90]](s8), [[UV91]](s8), [[UV92]](s8)
-    ; CHECK: [[MV31:%[0-9]+]]:_(s24) = G_MERGE_VALUES [[UV93]](s8), [[UV94]](s8), [[UV95]](s8)
-    ; CHECK: [[MV32:%[0-9]+]]:_(s24) = G_MERGE_VALUES [[UV96]](s8), [[UV97]](s8), [[UV98]](s8)
-    ; CHECK: %cst:_(s792) = G_MERGE_VALUES [[MV]](s24), [[MV1]](s24), [[MV2]](s24), [[MV3]](s24), [[MV4]](s24), [[MV5]](s24), [[MV6]](s24), [[MV7]](s24), [[MV8]](s24), [[MV9]](s24), [[MV10]](s24), [[MV11]](s24), [[MV12]](s24), [[MV13]](s24), [[MV14]](s24), [[MV15]](s24), [[MV16]](s24), [[MV17]](s24), [[MV18]](s24), [[MV19]](s24), [[MV20]](s24), [[MV21]](s24), [[MV22]](s24), [[MV23]](s24), [[MV24]](s24), [[MV25]](s24), [[MV26]](s24), [[MV27]](s24), [[MV28]](s24), [[MV29]](s24), [[MV30]](s24), [[MV31]](s24), [[MV32]](s24)
-    ; CHECK: %trunc:_(s32) = G_TRUNC %cst(s792)
+    ; CHECK: %trunc:_(s32) = G_CONSTANT i32 0
     ; CHECK: $w0 = COPY %trunc(s32)
     ; CHECK: RET_ReallyLR implicit $w0
     %cst:_(s792) = G_CONSTANT i792 0


        


More information about the llvm-commits mailing list