[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