[clang][modules] Don't prevent translation of FW_Private includes when explicitly...
[llvm-project.git] / llvm / test / CodeGen / LoongArch / intrinsic-error.ll
bloba839ab149c3338e43078ddbe405405d3c7abad72
1 ; RUN: not llc --mtriple=loongarch32 < %s 2>&1 | FileCheck %s
2 ; RUN: not llc --mtriple=loongarch64 < %s 2>&1 | FileCheck %s
4 declare void @llvm.loongarch.dbar(i32)
5 declare void @llvm.loongarch.ibar(i32)
6 declare void @llvm.loongarch.break(i32)
7 declare void @llvm.loongarch.movgr2fcsr(i32, i32)
8 declare i32 @llvm.loongarch.movfcsr2gr(i32)
9 declare void @llvm.loongarch.syscall(i32)
10 declare i32 @llvm.loongarch.csrrd.w(i32 immarg)
11 declare i32 @llvm.loongarch.csrwr.w(i32, i32 immarg)
12 declare i32 @llvm.loongarch.csrxchg.w(i32, i32, i32 immarg)
14 define void @dbar_imm_out_of_hi_range() #0 {
15 ; CHECK: llvm.loongarch.dbar: argument out of range.
16 entry:
17   call void @llvm.loongarch.dbar(i32 32769)
18   ret void
21 define void @dbar_imm_out_of_lo_range() #0 {
22 ; CHECK: llvm.loongarch.dbar: argument out of range.
23 entry:
24   call void @llvm.loongarch.dbar(i32 -1)
25   ret void
28 define void @ibar_imm_out_of_hi_range() #0 {
29 ; CHECK: llvm.loongarch.ibar: argument out of range.
30 entry:
31   call void @llvm.loongarch.ibar(i32 32769)
32   ret void
35 define void @ibar_imm_out_of_lo_range() #0 {
36 ; CHECK: llvm.loongarch.ibar: argument out of range.
37 entry:
38   call void @llvm.loongarch.ibar(i32 -1)
39   ret void
42 define void @break_imm_out_of_hi_range() #0 {
43 ; CHECK: llvm.loongarch.break: argument out of range.
44 entry:
45   call void @llvm.loongarch.break(i32 32769)
46   ret void
49 define void @break_imm_out_of_lo_range() #0 {
50 ; CHECK: llvm.loongarch.break: argument out of range.
51 entry:
52   call void @llvm.loongarch.break(i32 -1)
53   ret void
56 define void @movgr2fcsr(i32 %a) nounwind {
57 ; CHECK: llvm.loongarch.movgr2fcsr: requires basic 'f' target feature.
58 entry:
59   call void @llvm.loongarch.movgr2fcsr(i32 1, i32 %a)
60   ret void
63 define void @movgr2fcsr_imm_out_of_hi_range(i32 %a) #0 {
64 ; CHECK: llvm.loongarch.movgr2fcsr: argument out of range.
65 entry:
66   call void @llvm.loongarch.movgr2fcsr(i32 32, i32 %a)
67   ret void
70 define void @movgr2fcsr_imm_out_of_lo_range(i32 %a) #0 {
71 ; CHECK: llvm.loongarch.movgr2fcsr: argument out of range.
72 entry:
73   call void @llvm.loongarch.movgr2fcsr(i32 -1, i32 %a)
74   ret void
77 define i32 @movfcsr2gr() nounwind {
78 ; CHECK: llvm.loongarch.movfcsr2gr: requires basic 'f' target feature.
79 entry:
80   %res = call i32 @llvm.loongarch.movfcsr2gr(i32 1)
81   ret i32 %res
84 define i32 @movfcsr2gr_imm_out_of_hi_range() #0 {
85 ; CHECK: llvm.loongarch.movfcsr2gr: argument out of range.
86 entry:
87   %res = call i32 @llvm.loongarch.movfcsr2gr(i32 32)
88   ret i32 %res
91 define i32 @movfcsr2gr_imm_out_of_lo_range() #0 {
92 ; CHECK: llvm.loongarch.movfcsr2gr: argument out of range.
93 entry:
94   %res = call i32 @llvm.loongarch.movfcsr2gr(i32 -1)
95   ret i32 %res
98 define void @syscall_imm_out_of_hi_range() #0 {
99 ; CHECK: llvm.loongarch.syscall: argument out of range.
100 entry:
101   call void @llvm.loongarch.syscall(i32 32769)
102   ret void
105 define void @syscall_imm_out_of_lo_range() #0 {
106 ; CHECK: llvm.loongarch.syscall: argument out of range.
107 entry:
108   call void @llvm.loongarch.syscall(i32 -1)
109   ret void
112 define i32 @csrrd_w_imm_out_of_hi_range() #0 {
113 ; CHECK: llvm.loongarch.csrrd.w: argument out of range.
114 entry:
115   %0 = call i32 @llvm.loongarch.csrrd.w(i32 16384)
116   ret i32 %0
119 define i32 @csrrd_w_imm_out_of_lo_range() #0 {
120 ; CHECK: llvm.loongarch.csrrd.w: argument out of range.
121 entry:
122   %0 = call i32 @llvm.loongarch.csrrd.w(i32 -1)
123   ret i32 %0
126 define i32 @csrwr_w_imm_out_of_hi_range(i32 %a) #0 {
127 ; CHECK: llvm.loongarch.csrwr.w: argument out of range.
128 entry:
129   %0 = call i32 @llvm.loongarch.csrwr.w(i32 %a, i32 16384)
130   ret i32 %0
133 define i32 @csrwr_w_imm_out_of_lo_range(i32 %a) #0 {
134 ; CHECK: llvm.loongarch.csrwr.w: argument out of range.
135 entry:
136   %0 = call i32 @llvm.loongarch.csrwr.w(i32 %a, i32 -1)
137   ret i32 %0
140 define i32 @csrxchg_w_imm_out_of_hi_range(i32 %a, i32 %b) #0 {
141 ; CHECK: llvm.loongarch.csrxchg.w: argument out of range.
142 entry:
143   %0 = call i32 @llvm.loongarch.csrxchg.w(i32 %a, i32 %b, i32 16384)
144   ret i32 %0
147 define i32 @csrxchg_w_imm_out_of_lo_range(i32 %a, i32 %b) #0 {
148 ; CHECK: llvm.loongarch.csrxchg.w: argument out of range.
149 entry:
150   %0 = call i32 @llvm.loongarch.csrxchg.w(i32 %a, i32 %b, i32 -1)
151   ret i32 %0
154 attributes #0 = { nounwind "target-features"="+f" }