AMDGPU/GlobalISel: Define instruction mapping for G_IMPLICIT_DEF

Patch by Tom Stellard

llvm-svn: 326470
This commit is contained in:
Matt Arsenault 2018-03-01 19:16:52 +00:00
parent cc6238158a
commit 06cbb27a79
3 changed files with 35 additions and 6 deletions

View File

@ -54,6 +54,9 @@ AMDGPULegalizerInfo::AMDGPULegalizerInfo() {
setAction({G_FCONSTANT, S32}, Legal);
setAction({G_FCONSTANT, S64}, Legal);
setAction({G_IMPLICIT_DEF, S32}, Legal);
setAction({G_IMPLICIT_DEF, S64}, Legal);
setAction({G_FADD, S32}, Legal);
setAction({G_FCMP, S1}, Legal);

View File

@ -174,6 +174,11 @@ AMDGPURegisterBankInfo::getInstrMapping(const MachineInstr &MI) const {
default:
IsComplete = false;
break;
case AMDGPU::G_IMPLICIT_DEF: {
unsigned Size = MRI.getType(MI.getOperand(0).getReg()).getSizeInBits();
OpdsMapping[0] = AMDGPU::getValueMapping(AMDGPU::SGPRRegBankID, Size);
break;
}
case AMDGPU::G_FCONSTANT:
case AMDGPU::G_CONSTANT: {
unsigned Size = MRI.getType(MI.getOperand(0).getReg()).getSizeInBits();

View File

@ -1,31 +1,52 @@
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -O0 -march amdgcn -mcpu=fiji -run-pass=regbankselect -global-isel %s -o - | FileCheck %s
# Check the default mappings for various instructions.
---
# CHECK-LABEL: name: test_fconstant_f32_1
name: test_fconstant_f32_1
legalized: true
body: |
bb.0:
; CHECK: %0:sgpr(s32) = G_FCONSTANT float 1.0
; CHECK-LABEL: name: test_fconstant_f32_1
; CHECK: [[C:%[0-9]+]]:sgpr(s32) = G_FCONSTANT float 1.000000e+00
%0:_(s32) = G_FCONSTANT float 1.0
...
---
# CHECK-LABEL: name: test_fconstant_f64_1
name: test_fconstant_f64_1
legalized: true
body: |
bb.0:
; CHECK: %0:sgpr(s64) = G_FCONSTANT double 1.0
; CHECK-LABEL: name: test_fconstant_f64_1
; CHECK: [[C:%[0-9]+]]:sgpr(s64) = G_FCONSTANT double 1.000000e+00
%0:_(s64) = G_FCONSTANT double 1.0
...
---
# CHECK-LABEL: name: test_fconstant_f16_1
name: test_fconstant_f16_1
legalized: true
body: |
bb.0:
; CHECK: %0:sgpr(s32) = G_FCONSTANT half 0xH3C00
; CHECK-LABEL: name: test_fconstant_f16_1
; CHECK: [[C:%[0-9]+]]:sgpr(s32) = G_FCONSTANT half 0xH3C00
%0:_(s32) = G_FCONSTANT half 1.0
...
---
name: test_implicit_def_s32
legalized: true
body: |
bb.0:
; CHECK-LABEL: name: test_implicit_def_s32
; CHECK: [[DEF:%[0-9]+]]:sgpr(s32) = G_IMPLICIT_DEF
%0:_(s32) = G_IMPLICIT_DEF
...
---
name: test_implicit_def_s64
legalized: true
body: |
bb.0:
; CHECK-LABEL: name: test_implicit_def_s64
; CHECK: [[DEF:%[0-9]+]]:sgpr(s64) = G_IMPLICIT_DEF
%0:_(s64) = G_IMPLICIT_DEF
...