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