xref: /llvm-project/llvm/test/CodeGen/LoongArch/intrinsic-la64-error.ll (revision 9d4f7f44b64d87d1068859906f43b7ce03a7388b)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: not llc --mtriple=loongarch64 -mattr=+d < %s 2>&1 | FileCheck %s
3
4declare void @llvm.loongarch.cacop.w(i32, i32, i32)
5declare void @llvm.loongarch.cacop.d(i64, i64, i64)
6declare i64 @llvm.loongarch.csrrd.d(i32 immarg)
7declare i64 @llvm.loongarch.csrwr.d(i64, i32 immarg)
8declare i64 @llvm.loongarch.csrxchg.d(i64, i64, i32 immarg)
9
10define i64 @csrrd_d_imm_out_of_hi_range() nounwind {
11; CHECK: llvm.loongarch.csrrd.d: argument out of range
12entry:
13  %0 = call i64 @llvm.loongarch.csrrd.d(i32 16384)
14  ret i64 %0
15}
16
17define i64 @csrrd_d_imm_out_of_lo_range() nounwind {
18; CHECK: llvm.loongarch.csrrd.d: argument out of range
19entry:
20  %0 = call i64 @llvm.loongarch.csrrd.d(i32 -1)
21  ret i64 %0
22}
23
24define i64 @csrwr_d_imm_out_of_hi_range(i64 %a) nounwind {
25; CHECK: llvm.loongarch.csrwr.d: argument out of range
26entry:
27  %0 = call i64 @llvm.loongarch.csrwr.d(i64 %a, i32 16384)
28  ret i64 %0
29}
30
31define i64 @csrwr_d_imm_out_of_lo_range(i64 %a) nounwind {
32; CHECK: llvm.loongarch.csrwr.d: argument out of range
33entry:
34  %0 = call i64 @llvm.loongarch.csrwr.d(i64 %a, i32 -1)
35  ret i64 %0
36}
37
38define i64 @csrxchg_d_imm_out_of_hi_range(i64 %a, i64 %b) nounwind {
39; CHECK: llvm.loongarch.csrxchg.d: argument out of range
40entry:
41  %0 = call i64 @llvm.loongarch.csrxchg.d(i64 %a, i64 %b, i32 16384)
42  ret i64 %0
43}
44
45define i64 @csrxchg_d_imm_out_of_lo_range(i64 %a, i64 %b) nounwind {
46; CHECK: llvm.loongarch.csrxchg.d: argument out of range
47entry:
48  %0 = call i64 @llvm.loongarch.csrxchg.d(i64 %a, i64 %b, i32 -1)
49  ret i64 %0
50}
51
52define void @cacop_w(i32 %a) nounwind {
53; CHECK: llvm.loongarch.cacop.w: requires loongarch32
54  call void @llvm.loongarch.cacop.w(i32 1, i32 %a, i32 4)
55  ret void
56}
57
58define void @cacop_arg0_out_of_hi_range(i64 %a) nounwind {
59; CHECK: llvm.loongarch.cacop.d: argument out of range
60entry:
61  call void @llvm.loongarch.cacop.d(i64 32, i64 %a, i64 1024)
62  ret void
63}
64
65define void @cacop_arg0_out_of_lo_range(i64 %a) nounwind {
66; CHECK: llvm.loongarch.cacop.d: argument out of range
67entry:
68  call void @llvm.loongarch.cacop.d(i64 -1, i64 %a, i64 1024)
69  ret void
70}
71
72define void @cacop_arg2_out_of_hi_range(i64 %a) nounwind {
73; CHECK: llvm.loongarch.cacop.d: argument out of range
74entry:
75  call void @llvm.loongarch.cacop.d(i64 1, i64 %a, i64 4096)
76  ret void
77}
78
79define void @cacop_arg2_out_of_lo_range(i64 %a) nounwind {
80; CHECK: llvm.loongarch.cacop.d: argument out of range
81entry:
82  call void @llvm.loongarch.cacop.d(i64 1, i64 %a, i64 -4096)
83  ret void
84}
85