Skip to content

Commit b5fc94f

Browse files
committed
AMDGPU/GlobalISel: Fix RegBankSelect for G_BUILD_VECTOR
llvm-svn: 364767
1 parent 89fc8bc commit b5fc94f

File tree

2 files changed

+71
-1
lines changed

2 files changed

+71
-1
lines changed

llvm/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1293,7 +1293,8 @@ AMDGPURegisterBankInfo::getInstrMapping(const MachineInstr &MI) const {
12931293
OpdsMapping[2] = nullptr;
12941294
break;
12951295
}
1296-
case AMDGPU::G_MERGE_VALUES: {
1296+
case AMDGPU::G_MERGE_VALUES:
1297+
case AMDGPU::G_BUILD_VECTOR: {
12971298
unsigned Bank = isSALUMapping(MI) ?
12981299
AMDGPU::SGPRRegBankID : AMDGPU::VGPRRegBankID;
12991300
unsigned DstSize = MRI.getType(MI.getOperand(0).getReg()).getSizeInBits();
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2+
# RUN: llc -march=amdgcn -mcpu=fiji -run-pass=regbankselect -regbankselect-fast -verify-machineinstrs -o - %s | FileCheck %s
3+
# RUN: llc -march=amdgcn -mcpu=fiji -run-pass=regbankselect -regbankselect-greedy -verify-machineinstrs -o - %s | FileCheck %s
4+
5+
---
6+
name: build_vector_v2s32_ss
7+
legalized: true
8+
9+
body: |
10+
bb.0:
11+
liveins: $sgpr0, $sgpr1
12+
; CHECK-LABEL: name: build_vector_v2s32_ss
13+
; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
14+
; CHECK: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
15+
; CHECK: [[BUILD_VECTOR:%[0-9]+]]:sgpr(<2 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32)
16+
%0:_(s32) = COPY $sgpr0
17+
%1:_(s32) = COPY $sgpr1
18+
%2:_(<2 x s32>) = G_BUILD_VECTOR %0, %1
19+
...
20+
21+
---
22+
name: build_vector_v2s32_sv
23+
legalized: true
24+
25+
body: |
26+
bb.0:
27+
liveins: $sgpr0, $vgpr0
28+
; CHECK-LABEL: name: build_vector_v2s32_sv
29+
; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
30+
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
31+
; CHECK: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
32+
; CHECK: [[BUILD_VECTOR:%[0-9]+]]:vgpr(<2 x s32>) = G_BUILD_VECTOR [[COPY2]](s32), [[COPY1]](s32)
33+
%0:_(s32) = COPY $sgpr0
34+
%1:_(s32) = COPY $vgpr0
35+
%2:_(<2 x s32>) = G_BUILD_VECTOR %0, %1
36+
...
37+
38+
---
39+
name: build_vector_v2s32_vs
40+
legalized: true
41+
42+
body: |
43+
bb.0:
44+
liveins: $vgpr0, $sgpr0
45+
; CHECK-LABEL: name: build_vector_v2s32_vs
46+
; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
47+
; CHECK: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
48+
; CHECK: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
49+
; CHECK: [[BUILD_VECTOR:%[0-9]+]]:vgpr(<2 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY2]](s32)
50+
%0:_(s32) = COPY $vgpr0
51+
%1:_(s32) = COPY $sgpr0
52+
%2:_(<2 x s32>) = G_BUILD_VECTOR %0, %1
53+
...
54+
55+
---
56+
name: build_vector_v2s32_vv
57+
legalized: true
58+
59+
body: |
60+
bb.0:
61+
liveins: $vgpr0, $vgpr1
62+
; CHECK-LABEL: name: build_vector_v2s32_vv
63+
; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
64+
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
65+
; CHECK: [[BUILD_VECTOR:%[0-9]+]]:vgpr(<2 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32)
66+
%0:_(s32) = COPY $vgpr0
67+
%1:_(s32) = COPY $vgpr1
68+
%2:_(<2 x s32>) = G_BUILD_VECTOR %0, %1
69+
...

0 commit comments

Comments
 (0)