[llvm] r352975 - AMDGPU/GlobalISel: Legalize constant for pointer types
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Sat Feb 2 15:33:49 PST 2019
Author: arsenm
Date: Sat Feb 2 15:33:49 2019
New Revision: 352975
URL: http://llvm.org/viewvc/llvm-project?rev=352975&view=rev
Log:
AMDGPU/GlobalISel: Legalize constant for pointer types
Modified:
llvm/trunk/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
llvm/trunk/test/CodeGen/AMDGPU/GlobalISel/legalize-constant.mir
Modified: llvm/trunk/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp?rev=352975&r1=352974&r2=352975&view=diff
==============================================================================
--- llvm/trunk/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp (original)
+++ llvm/trunk/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp Sat Feb 2 15:33:49 2019
@@ -134,11 +134,12 @@ AMDGPULegalizerInfo::AMDGPULegalizerInfo
// FIXME: i1 operands to intrinsics should always be legal, but other i1
// values may not be legal. We need to figure out how to distinguish
// between these two scenarios.
- // FIXME: Pointer types
getActionDefinitionsBuilder(G_CONSTANT)
- .legalFor({S1, S32, S64})
+ .legalFor({S1, S32, S64, GlobalPtr,
+ LocalPtr, ConstantPtr, PrivatePtr, FlatPtr })
.clampScalar(0, S32, S64)
- .widenScalarToNextPow2(0);
+ .widenScalarToNextPow2(0)
+ .legalIf(isPointer(0));
setAction({G_FRAME_INDEX, PrivatePtr}, Legal);
Modified: llvm/trunk/test/CodeGen/AMDGPU/GlobalISel/legalize-constant.mir
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AMDGPU/GlobalISel/legalize-constant.mir?rev=352975&r1=352974&r2=352975&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/AMDGPU/GlobalISel/legalize-constant.mir (original)
+++ llvm/trunk/test/CodeGen/AMDGPU/GlobalISel/legalize-constant.mir Sat Feb 2 15:33:49 2019
@@ -92,3 +92,87 @@ body: |
%0:_(s128) = G_CONSTANT i128 5
$vgpr0_vgpr1_vgpr2_vgpr3 = COPY %0
...
+
+---
+name: test_constant_p0
+body: |
+ bb.0:
+
+ ; CHECK-LABEL: name: test_constant_p0
+ ; CHECK: [[C:%[0-9]+]]:_(p0) = G_CONSTANT i64 0
+ ; CHECK: $vgpr0_vgpr1 = COPY [[C]](p0)
+ %0:_(p0) = G_CONSTANT i64 0
+ $vgpr0_vgpr1 = COPY %0
+...
+
+---
+name: test_constant_p1
+body: |
+ bb.0:
+
+ ; CHECK-LABEL: name: test_constant_p1
+ ; CHECK: [[C:%[0-9]+]]:_(p1) = G_CONSTANT i64 0
+ ; CHECK: $vgpr0_vgpr1 = COPY [[C]](p1)
+ %0:_(p1) = G_CONSTANT i64 0
+ $vgpr0_vgpr1 = COPY %0
+...
+
+---
+name: test_constant_p2
+body: |
+ bb.0:
+
+ ; CHECK-LABEL: name: test_constant_p2
+ ; CHECK: [[C:%[0-9]+]]:_(p2) = G_CONSTANT i32 0
+ ; CHECK: $vgpr0 = COPY [[C]](p2)
+ %0:_(p2) = G_CONSTANT i32 0
+ $vgpr0 = COPY %0
+...
+
+---
+name: test_constant_p3
+body: |
+ bb.0:
+
+ ; CHECK-LABEL: name: test_constant_p3
+ ; CHECK: [[C:%[0-9]+]]:_(p2) = G_CONSTANT i32 0
+ ; CHECK: $vgpr0 = COPY [[C]](p2)
+ %0:_(p2) = G_CONSTANT i32 0
+ $vgpr0 = COPY %0
+...
+
+---
+name: test_constant_p4
+body: |
+ bb.0:
+
+ ; CHECK-LABEL: name: test_constant_p4
+ ; CHECK: [[C:%[0-9]+]]:_(p4) = G_CONSTANT i64 0
+ ; CHECK: $vgpr0_vgpr1 = COPY [[C]](p4)
+ %0:_(p4) = G_CONSTANT i64 0
+ $vgpr0_vgpr1 = COPY %0
+...
+
+---
+name: test_constant_p5
+body: |
+ bb.0:
+
+ ; CHECK-LABEL: name: test_constant_p5
+ ; CHECK: [[C:%[0-9]+]]:_(p5) = G_CONSTANT i32 0
+ ; CHECK: $vgpr0 = COPY [[C]](p5)
+ %0:_(p5) = G_CONSTANT i32 0
+ $vgpr0 = COPY %0
+...
+
+---
+name: test_constant_p999
+body: |
+ bb.0:
+
+ ; CHECK-LABEL: name: test_constant_p999
+ ; CHECK: [[C:%[0-9]+]]:_(p999) = G_CONSTANT i64 0
+ ; CHECK: $vgpr0_vgpr1 = COPY [[C]](p999)
+ %0:_(p999) = G_CONSTANT i64 0
+ $vgpr0_vgpr1 = COPY %0
+...
More information about the llvm-commits
mailing list