Skip to content

Commit c5f42c1

Browse files
committed
For copy from physical reg, check the dst reg type is i1.
1 parent ecfd957 commit c5f42c1

File tree

3 files changed

+2
-130
lines changed

3 files changed

+2
-130
lines changed

llvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ bool AMDGPUInstructionSelector::selectCOPY(MachineInstr &I) const {
139139
}
140140

141141
// Allow copy from physical register other than SCC to s1.
142-
if (SrcReg.isPhysical() && SrcReg != AMDGPU::SCC)
142+
if (SrcReg.isPhysical() && MRI->getType(DstReg) == LLT::scalar(1))
143143
return true;
144144

145145
if (!isVCC(SrcReg, *MRI)) {

llvm/test/CodeGen/AMDGPU/GlobalISel/inst-select-copy-sgpr-to-s1-wave32.mir

Lines changed: 1 addition & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1010 -run-pass=instruction-select -verify-machineinstrs -o - %s | FileCheck -check-prefix=WAVE32 %s
1+
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1010 -run-pass=instruction-select -o - %s | FileCheck -check-prefix=WAVE32 %s
22

33
---
44
name: copy_sgpr_to_s1_vcc
@@ -72,67 +72,3 @@ body: |
7272
%1:vgpr(s32) = G_SELECT %0:vgpr(s1), %2:vgpr, %3:vgpr
7373
S_ENDPGM 0, implicit %1:vgpr(s32)
7474
...
75-
76-
---
77-
name: copy_scc_to_s1_vcc
78-
legalized: true
79-
regBankSelected: true
80-
81-
body: |
82-
bb.0:
83-
; WAVE32-LABEL: name: copy_scc_to_s1_vcc
84-
; WAVE32: [[COPY:%[0-9]+]]:sreg_32_xm0_xexec = COPY $scc
85-
; WAVE32-NEXT: [[VMOV1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 1, implicit $exec
86-
; WAVE32-NEXT: [[VMOV2:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
87-
; WAVE32-NEXT: [[VCND:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, [[VMOV2]], 0, [[VMOV1]], [[COPY]], implicit $exec
88-
; WAVE32-NEXT: S_ENDPGM 0, implicit [[VCND]]
89-
;
90-
%0:vcc(s1) = COPY $scc
91-
%2:vgpr(s32) = G_CONSTANT i32 1
92-
%3:vgpr(s32) = G_CONSTANT i32 0
93-
%1:vgpr(s32) = G_SELECT %0:vcc(s1), %2:vgpr, %3:vgpr
94-
S_ENDPGM 0, implicit %1:vgpr(s32)
95-
...
96-
97-
---
98-
name: copy_scc_to_s1_sreg_32_xm0_xexec
99-
legalized: true
100-
regBankSelected: true
101-
102-
body: |
103-
bb.0:
104-
; WAVE32-LABEL: name: copy_scc_to_s1_sreg_32_xm0_xexec
105-
; WAVE32: [[COPY:%[0-9]+]]:sreg_32_xm0_xexec = COPY $scc
106-
; WAVE32-NEXT: [[VMOV1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 1, implicit $exec
107-
; WAVE32-NEXT: [[VMOV2:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
108-
; WAVE32-NEXT: [[VCND:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, [[VMOV2]], 0, [[VMOV1]], [[COPY]], implicit $exec
109-
; WAVE32-NEXT: S_ENDPGM 0, implicit [[VCND]]
110-
;
111-
%0:sreg_32_xm0_xexec(s1) = COPY $scc
112-
%2:vgpr(s32) = G_CONSTANT i32 1
113-
%3:vgpr(s32) = G_CONSTANT i32 0
114-
%1:vgpr(s32) = G_SELECT %0:sreg_32_xm0_xexec(s1), %2:vgpr, %3:vgpr
115-
S_ENDPGM 0, implicit %1:vgpr(s32)
116-
...
117-
118-
---
119-
name: copy_scc_to_s1_vgpr
120-
legalized: true
121-
regBankSelected: true
122-
123-
body: |
124-
bb.0:
125-
; WAVE32-LABEL: name: copy_scc_to_s1_vgpr
126-
; WAVE32: [[COPY:%[0-9]+]]:vgpr_32 = COPY $scc
127-
; WAVE32-NEXT: [[VMOV1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 1, implicit $exec
128-
; WAVE32-NEXT: [[VMOV2:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
129-
; WAVE32-NEXT: [[COPY2:%[0-9]+]]:sreg_32_xm0_xexec = COPY [[COPY]]
130-
; WAVE32-NEXT: [[VCND:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, [[VMOV2]], 0, [[VMOV1]], [[COPY2]], implicit $exec
131-
; WAVE32-NEXT: S_ENDPGM 0, implicit [[VCND]]
132-
;
133-
%0:vgpr(s1) = COPY $scc
134-
%2:vgpr(s32) = G_CONSTANT i32 1
135-
%3:vgpr(s32) = G_CONSTANT i32 0
136-
%1:vgpr(s32) = G_SELECT %0:vgpr(s1), %2:vgpr, %3:vgpr
137-
S_ENDPGM 0, implicit %1:vgpr(s32)
138-
...

llvm/test/CodeGen/AMDGPU/GlobalISel/inst-select-copy-sgpr-to-s1-wave64.mir

Lines changed: 0 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -72,67 +72,3 @@ body: |
7272
%1:vgpr(s32) = G_SELECT %0(s1), %2, %3
7373
S_ENDPGM 0, implicit %1(s32)
7474
...
75-
76-
---
77-
name: copy_scc_to_s1_vcc
78-
legalized: true
79-
regBankSelected: true
80-
81-
body: |
82-
bb.0:
83-
; WAVE64-LABEL: name: copy_scc_to_s1_vcc
84-
; WAVE64: [[COPY:%[0-9]+]]:sreg_64_xexec = COPY $scc
85-
; WAVE64-NEXT: [[VMOV1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 1, implicit $exec
86-
; WAVE64-NEXT: [[VMOV2:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
87-
; WAVE64-NEXT: [[VCND:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, [[VMOV2]], 0, [[VMOV1]], [[COPY]], implicit $exec
88-
; WAVE64-NEXT: S_ENDPGM 0, implicit [[VCND]]
89-
;
90-
%0:vcc(s1) = COPY $scc
91-
%2:vgpr(s32) = G_CONSTANT i32 1
92-
%3:vgpr(s32) = G_CONSTANT i32 0
93-
%1:vgpr(s32) = G_SELECT %0(s1), %2, %3
94-
S_ENDPGM 0, implicit %1(s32)
95-
...
96-
97-
---
98-
name: copy_scc_to_s1_sreg_64_xexec
99-
legalized: true
100-
regBankSelected: true
101-
102-
body: |
103-
bb.0:
104-
; WAVE64-LABEL: name: copy_scc_to_s1_sreg_64_xexec
105-
; WAVE64: [[COPY:%[0-9]+]]:sreg_64_xexec = COPY $scc
106-
; WAVE64-NEXT: [[VMOV1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 1, implicit $exec
107-
; WAVE64-NEXT: [[VMOV2:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
108-
; WAVE64-NEXT: [[VCND:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, [[VMOV2]], 0, [[VMOV1]], [[COPY]], implicit $exec
109-
; WAVE64-NEXT: S_ENDPGM 0, implicit [[VCND]]
110-
;
111-
%0:sreg_64_xexec(s1) = COPY $scc
112-
%2:vgpr(s32) = G_CONSTANT i32 1
113-
%3:vgpr(s32) = G_CONSTANT i32 0
114-
%1:vgpr(s32) = G_SELECT %0(s1), %2, %3
115-
S_ENDPGM 0, implicit %1(s32)
116-
...
117-
118-
---
119-
name: copy_scc_to_s1_vgpr
120-
legalized: true
121-
regBankSelected: true
122-
123-
body: |
124-
bb.0:
125-
; WAVE64-LABEL: name: copy_scc_to_s1_vgpr
126-
; WAVE64: [[COPY:%[0-9]+]]:vgpr_32 = COPY $scc
127-
; WAVE64-NEXT: [[VMOV1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 1, implicit $exec
128-
; WAVE64-NEXT: [[VMOV2:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
129-
; WAVE64-NEXT: [[COPY2:%[0-9]+]]:sreg_64_xexec = COPY [[COPY]]
130-
; WAVE64-NEXT: [[VCND:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, [[VMOV2]], 0, [[VMOV1]], [[COPY2]], implicit $exec
131-
; WAVE64-NEXT: S_ENDPGM 0, implicit [[VCND]]
132-
;
133-
%0:vgpr(s1) = COPY $scc
134-
%2:vgpr(s32) = G_CONSTANT i32 1
135-
%3:vgpr(s32) = G_CONSTANT i32 0
136-
%1:vgpr(s32) = G_SELECT %0(s1), %2, %3
137-
S_ENDPGM 0, implicit %1(s32)
138-
...

0 commit comments

Comments
 (0)