Skip to content

Commit 90a99ab

Browse files
arsenmbcahoon
authored andcommitted
AMDGPU: Fix asserting when trying to print scc (llvm#101175)
This is printable using inline assembly. Also we should handle using scc directly as instruction operands. (cherry picked from commit d2b6a8e) Change-Id: I61dc2fd91563b66cdbabbe077acd79ba4be29680
1 parent ac25c42 commit 90a99ab

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUInstPrinter.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -372,8 +372,6 @@ void AMDGPUInstPrinter::printRegOperand(unsigned RegNo, raw_ostream &O,
372372
case AMDGPU::SP_REG:
373373
case AMDGPU::PRIVATE_RSRC_REG:
374374
llvm_unreachable("pseudo-register should not ever be emitted");
375-
case AMDGPU::SCC:
376-
llvm_unreachable("pseudo scc should not ever be emitted");
377375
default:
378376
break;
379377
}

llvm/test/CodeGen/AMDGPU/inline-asm.ll

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -314,3 +314,21 @@ exit:
314314
tail call void asm sideeffect "; use $0", "v"(i64 %v1)
315315
ret void
316316
}
317+
318+
; CHECK-LABEL: {{^}}scc_as_i32:
319+
; CHECK: ; def scc
320+
; CHECK: ; use scc
321+
define void @scc_as_i32() {
322+
%scc = call i32 asm sideeffect "; def $0", "={scc}"()
323+
call void asm sideeffect "; use $0 ", "{scc}"(i32 %scc)
324+
ret void
325+
}
326+
327+
; CHECK-LABEL: {{^}}scc_as_i1:
328+
; CHECK: ; def scc
329+
; CHECK: ; use scc
330+
define void @scc_as_i1() {
331+
%scc = call i1 asm sideeffect "; def $0", "={scc}"()
332+
call void asm sideeffect "; use $0 ", "{scc}"(i1 %scc)
333+
ret void
334+
}

0 commit comments

Comments
 (0)