xref: /llvm-project/llvm/test/CodeGen/LoongArch/intrinsic-not-constant-error.ll (revision 9d4f7f44b64d87d1068859906f43b7ce03a7388b)
1; RUN: not llc --mtriple=loongarch32 -mattr=+d < %s 2>&1 | FileCheck %s
2; RUN: not llc --mtriple=loongarch64 -mattr=+d < %s 2>&1 | FileCheck %s
3
4declare void @llvm.loongarch.dbar(i32)
5declare void @llvm.loongarch.ibar(i32)
6declare void @llvm.loongarch.break(i32)
7declare void @llvm.loongarch.movgr2fcsr(i32, i32)
8declare i32 @llvm.loongarch.movfcsr2gr(i32)
9declare void @llvm.loongarch.syscall(i32)
10
11define void @dbar_not_constant(i32 %x) nounwind {
12; CHECK: immarg operand has non-immediate parameter
13entry:
14  call void @llvm.loongarch.dbar(i32 %x)
15  ret void
16}
17
18define void @ibar(i32 %x) nounwind {
19; CHECK: immarg operand has non-immediate parameter
20entry:
21  call void @llvm.loongarch.ibar(i32 %x)
22  ret void
23}
24
25define void @break(i32 %x) nounwind {
26; CHECK: immarg operand has non-immediate parameter
27entry:
28  call void @llvm.loongarch.break(i32 %x)
29  ret void
30}
31
32define void @movgr2fcsr(i32 %a) nounwind {
33; CHECK: immarg operand has non-immediate parameter
34entry:
35  call void @llvm.loongarch.movgr2fcsr(i32 %a, i32 %a)
36  ret void
37}
38
39define i32 @movfcsr2gr(i32 %a) nounwind {
40; CHECK: immarg operand has non-immediate parameter
41entry:
42  %res = call i32 @llvm.loongarch.movfcsr2gr(i32 %a)
43  ret i32 %res
44}
45
46define void @syscall(i32 %x) nounwind {
47; CHECK: immarg operand has non-immediate parameter
48entry:
49  call void @llvm.loongarch.syscall(i32 %x)
50  ret void
51}
52