aboutsummaryrefslogtreecommitdiff
path: root/llvm/test/Verifier/AMDGPU/intrinsic-amdgpu-init-exec-from-input.ll
blob: 11426041924e42b3db4c64c53b1f15ae7763b92f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
; RUN: not llvm-as -disable-output 2>&1 %s | FileCheck %s

declare void @llvm.amdgcn.init.exec.from.input(i32, i32 immarg)

; CHECK: only inreg arguments to the parent function are valid as inputs to this intrinsic
; CHECK-NEXT: call void @llvm.amdgcn.init.exec.from.input(i32 0, i32 0)
define void @init_exec_from_input_fail_constant() {
  call void @llvm.amdgcn.init.exec.from.input(i32 0, i32 0)
  ret void
}

; CHECK: only inreg arguments to the parent function are valid as inputs to this intrinsic
; CHECK-NEXT: call void @llvm.amdgcn.init.exec.from.input(i32 %b, i32 0)
define void @init_exec_from_input_fail_not_inreg(i32 inreg %a, i32 %b) {
  call void @llvm.amdgcn.init.exec.from.input(i32 %b, i32 0)
  ret void
}

; CHECK: only inreg arguments to the parent function are valid as inputs to this intrinsic
; CHECK-NEXT: call void @llvm.amdgcn.init.exec.from.input(i32 %c, i32 0)
define void @init_exec_from_input_fail_instruction(i32 inreg %a, i32 %b) {
  %c = add i32 %a, %b
  call void @llvm.amdgcn.init.exec.from.input(i32 %c, i32 0)
  ret void
}