85 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: not llc --mtriple=loongarch64 -mattr=+d < %s 2>&1 | FileCheck %s3 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 range12entry:13 %0 = call i64 @llvm.loongarch.csrrd.d(i32 16384)14 ret i64 %015}16 17define i64 @csrrd_d_imm_out_of_lo_range() nounwind {18; CHECK: llvm.loongarch.csrrd.d: argument out of range19entry:20 %0 = call i64 @llvm.loongarch.csrrd.d(i32 -1)21 ret i64 %022}23 24define i64 @csrwr_d_imm_out_of_hi_range(i64 %a) nounwind {25; CHECK: llvm.loongarch.csrwr.d: argument out of range26entry:27 %0 = call i64 @llvm.loongarch.csrwr.d(i64 %a, i32 16384)28 ret i64 %029}30 31define i64 @csrwr_d_imm_out_of_lo_range(i64 %a) nounwind {32; CHECK: llvm.loongarch.csrwr.d: argument out of range33entry:34 %0 = call i64 @llvm.loongarch.csrwr.d(i64 %a, i32 -1)35 ret i64 %036}37 38define i64 @csrxchg_d_imm_out_of_hi_range(i64 %a, i64 %b) nounwind {39; CHECK: llvm.loongarch.csrxchg.d: argument out of range40entry:41 %0 = call i64 @llvm.loongarch.csrxchg.d(i64 %a, i64 %b, i32 16384)42 ret i64 %043}44 45define i64 @csrxchg_d_imm_out_of_lo_range(i64 %a, i64 %b) nounwind {46; CHECK: llvm.loongarch.csrxchg.d: argument out of range47entry:48 %0 = call i64 @llvm.loongarch.csrxchg.d(i64 %a, i64 %b, i32 -1)49 ret i64 %050}51 52define void @cacop_w(i32 %a) nounwind {53; CHECK: llvm.loongarch.cacop.w: requires loongarch3254 call void @llvm.loongarch.cacop.w(i32 1, i32 %a, i32 4)55 ret void56}57 58define void @cacop_arg0_out_of_hi_range(i64 %a) nounwind {59; CHECK: llvm.loongarch.cacop.d: argument out of range60entry:61 call void @llvm.loongarch.cacop.d(i64 32, i64 %a, i64 1024)62 ret void63}64 65define void @cacop_arg0_out_of_lo_range(i64 %a) nounwind {66; CHECK: llvm.loongarch.cacop.d: argument out of range67entry:68 call void @llvm.loongarch.cacop.d(i64 -1, i64 %a, i64 1024)69 ret void70}71 72define void @cacop_arg2_out_of_hi_range(i64 %a) nounwind {73; CHECK: llvm.loongarch.cacop.d: argument out of range74entry:75 call void @llvm.loongarch.cacop.d(i64 1, i64 %a, i64 4096)76 ret void77}78 79define void @cacop_arg2_out_of_lo_range(i64 %a) nounwind {80; CHECK: llvm.loongarch.cacop.d: argument out of range81entry:82 call void @llvm.loongarch.cacop.d(i64 1, i64 %a, i64 -4096)83 ret void84}85