[llvm] r351698 - AMDGPU/GlobalISel: Really legalize exts from i1

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Sun Jan 20 11:28:20 PST 2019


Author: arsenm
Date: Sun Jan 20 11:28:20 2019
New Revision: 351698

URL: http://llvm.org/viewvc/llvm-project?rev=351698&view=rev
Log:
AMDGPU/GlobalISel: Really legalize exts from i1

There is a combine that was hiding these tests
not actually testing what they should be, although
they were producing the expected end result.

Modified:
    llvm/trunk/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
    llvm/trunk/test/CodeGen/AMDGPU/GlobalISel/legalize-anyext.mir
    llvm/trunk/test/CodeGen/AMDGPU/GlobalISel/legalize-zext.mir

Modified: llvm/trunk/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp?rev=351698&r1=351697&r2=351698&view=diff
==============================================================================
--- llvm/trunk/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp (original)
+++ llvm/trunk/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp Sun Jan 20 11:28:20 2019
@@ -158,7 +158,8 @@ AMDGPULegalizerInfo::AMDGPULegalizerInfo
   setAction({G_FCMP, 1, S64}, Legal);
 
   getActionDefinitionsBuilder({G_SEXT, G_ZEXT, G_ANYEXT})
-    .legalFor({{S64, S32}, {S32, S16}, {S64, S16}});
+    .legalFor({{S64, S32}, {S32, S16}, {S64, S16},
+               {S32, S1}, {S64, S1}, {S16, S1}});
 
   setAction({G_FPTOSI, S32}, Legal);
   setAction({G_FPTOSI, 1, S32}, Legal);

Modified: llvm/trunk/test/CodeGen/AMDGPU/GlobalISel/legalize-anyext.mir
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AMDGPU/GlobalISel/legalize-anyext.mir?rev=351698&r1=351697&r2=351698&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/AMDGPU/GlobalISel/legalize-anyext.mir (original)
+++ llvm/trunk/test/CodeGen/AMDGPU/GlobalISel/legalize-anyext.mir Sun Jan 20 11:28:20 2019
@@ -49,17 +49,29 @@ body: |
 ...
 
 ---
-name: test_anyext_i1_to_s32
+name: test_anyext_s1_to_s32
 body: |
   bb.0.entry:
-    liveins: $vgpr0
 
-    ; CHECK-LABEL: name: test_anyext_i1_to_s32
-    ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
-    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)
-    ; CHECK: $vgpr0 = COPY [[COPY1]](s32)
-    %0:_(s32) = COPY $vgpr0
-    %1:_(s1) = G_TRUNC %0
-    %2:_(s32) = G_ANYEXT %1
-    $vgpr0 = COPY %2
+    ; CHECK-LABEL: name: test_anyext_s1_to_s32
+    ; CHECK: [[C:%[0-9]+]]:_(s1) = G_CONSTANT i1 false
+    ; CHECK: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[C]](s1)
+    ; CHECK: $vgpr0 = COPY [[ANYEXT]](s32)
+    %0:_(s1) = G_CONSTANT i1 0
+    %1:_(s32) = G_ANYEXT %0
+    $vgpr0 = COPY %1
+...
+
+---
+name: test_anyext_s1_to_s64
+body: |
+  bb.0.entry:
+
+    ; CHECK-LABEL: name: test_anyext_s1_to_s64
+    ; CHECK: [[C:%[0-9]+]]:_(s1) = G_CONSTANT i1 false
+    ; CHECK: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[C]](s1)
+    ; CHECK: $vgpr0_vgpr1 = COPY [[ANYEXT]](s64)
+    %0:_(s1) = G_CONSTANT i1 0
+    %1:_(s64) = G_ANYEXT %0
+    $vgpr0_vgpr1 = COPY %1
 ...

Modified: llvm/trunk/test/CodeGen/AMDGPU/GlobalISel/legalize-zext.mir
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AMDGPU/GlobalISel/legalize-zext.mir?rev=351698&r1=351697&r2=351698&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/AMDGPU/GlobalISel/legalize-zext.mir (original)
+++ llvm/trunk/test/CodeGen/AMDGPU/GlobalISel/legalize-zext.mir Sun Jan 20 11:28:20 2019
@@ -56,16 +56,26 @@ body: |
 name: test_zext_i1_to_s32
 body: |
   bb.0.entry:
-    liveins: $vgpr0
 
     ; CHECK-LABEL: name: test_zext_i1_to_s32
-    ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
-    ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
-    ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)
-    ; CHECK: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]
-    ; CHECK: $vgpr0 = COPY [[AND]](s32)
-    %0:_(s32) = COPY $vgpr0
-    %1:_(s1) = G_TRUNC %0
-    %2:_(s32) = G_ZEXT %1
-    $vgpr0 = COPY %2
+    ; CHECK: [[C:%[0-9]+]]:_(s1) = G_CONSTANT i1 false
+    ; CHECK: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[C]](s1)
+    ; CHECK: $vgpr0 = COPY [[ZEXT]](s32)
+    %0:_(s1) = G_CONSTANT i1 0
+    %1:_(s32) = G_ZEXT %0
+    $vgpr0 = COPY %1
+...
+
+---
+name: test_zext_i1_to_i64
+body: |
+  bb.0.entry:
+
+    ; CHECK-LABEL: name: test_zext_i1_to_i64
+    ; CHECK: [[C:%[0-9]+]]:_(s1) = G_CONSTANT i1 false
+    ; CHECK: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[C]](s1)
+    ; CHECK: $vgpr0_vgpr1 = COPY [[ZEXT]](s64)
+    %0:_(s1) = G_CONSTANT i1 0
+    %1:_(s64) = G_ZEXT %0
+    $vgpr0_vgpr1 = COPY %1
 ...




More information about the llvm-commits mailing list