1; RUN: not llc --mtriple=loongarch64 --mattr=+lsx < %s 2>&1 | FileCheck %s 2 3declare i32 @llvm.loongarch.lsx.vpickve2gr.b(<16 x i8>, i32) 4 5define i32 @lsx_vpickve2gr_b_lo(<16 x i8> %va) nounwind { 6; CHECK: llvm.loongarch.lsx.vpickve2gr.b: argument out of range 7entry: 8 %res = call i32 @llvm.loongarch.lsx.vpickve2gr.b(<16 x i8> %va, i32 -1) 9 ret i32 %res 10} 11 12define i32 @lsx_vpickve2gr_b_hi(<16 x i8> %va) nounwind { 13; CHECK: llvm.loongarch.lsx.vpickve2gr.b: argument out of range 14entry: 15 %res = call i32 @llvm.loongarch.lsx.vpickve2gr.b(<16 x i8> %va, i32 16) 16 ret i32 %res 17} 18 19declare i32 @llvm.loongarch.lsx.vpickve2gr.h(<8 x i16>, i32) 20 21define i32 @lsx_vpickve2gr_h_lo(<8 x i16> %va) nounwind { 22; CHECK: llvm.loongarch.lsx.vpickve2gr.h: argument out of range 23entry: 24 %res = call i32 @llvm.loongarch.lsx.vpickve2gr.h(<8 x i16> %va, i32 -1) 25 ret i32 %res 26} 27 28define i32 @lsx_vpickve2gr_h_hi(<8 x i16> %va) nounwind { 29; CHECK: llvm.loongarch.lsx.vpickve2gr.h: argument out of range 30entry: 31 %res = call i32 @llvm.loongarch.lsx.vpickve2gr.h(<8 x i16> %va, i32 8) 32 ret i32 %res 33} 34 35declare i32 @llvm.loongarch.lsx.vpickve2gr.w(<4 x i32>, i32) 36 37define i32 @lsx_vpickve2gr_w_lo(<4 x i32> %va) nounwind { 38; CHECK: llvm.loongarch.lsx.vpickve2gr.w: argument out of range 39entry: 40 %res = call i32 @llvm.loongarch.lsx.vpickve2gr.w(<4 x i32> %va, i32 -1) 41 ret i32 %res 42} 43 44define i32 @lsx_vpickve2gr_w_hi(<4 x i32> %va) nounwind { 45; CHECK: llvm.loongarch.lsx.vpickve2gr.w: argument out of range 46entry: 47 %res = call i32 @llvm.loongarch.lsx.vpickve2gr.w(<4 x i32> %va, i32 4) 48 ret i32 %res 49} 50 51declare i64 @llvm.loongarch.lsx.vpickve2gr.d(<2 x i64>, i32) 52 53define i64 @lsx_vpickve2gr_d_lo(<2 x i64> %va) nounwind { 54; CHECK: llvm.loongarch.lsx.vpickve2gr.d: argument out of range 55entry: 56 %res = call i64 @llvm.loongarch.lsx.vpickve2gr.d(<2 x i64> %va, i32 -1) 57 ret i64 %res 58} 59 60define i64 @lsx_vpickve2gr_d_hi(<2 x i64> %va) nounwind { 61; CHECK: llvm.loongarch.lsx.vpickve2gr.d: argument out of range 62entry: 63 %res = call i64 @llvm.loongarch.lsx.vpickve2gr.d(<2 x i64> %va, i32 2) 64 ret i64 %res 65} 66 67declare i32 @llvm.loongarch.lsx.vpickve2gr.bu(<16 x i8>, i32) 68 69define i32 @lsx_vpickve2gr_bu_lo(<16 x i8> %va) nounwind { 70; CHECK: llvm.loongarch.lsx.vpickve2gr.bu: argument out of range 71entry: 72 %res = call i32 @llvm.loongarch.lsx.vpickve2gr.bu(<16 x i8> %va, i32 -1) 73 ret i32 %res 74} 75 76define i32 @lsx_vpickve2gr_bu_hi(<16 x i8> %va) nounwind { 77; CHECK: llvm.loongarch.lsx.vpickve2gr.bu: argument out of range 78entry: 79 %res = call i32 @llvm.loongarch.lsx.vpickve2gr.bu(<16 x i8> %va, i32 16) 80 ret i32 %res 81} 82 83declare i32 @llvm.loongarch.lsx.vpickve2gr.hu(<8 x i16>, i32) 84 85define i32 @lsx_vpickve2gr_hu_lo(<8 x i16> %va) nounwind { 86; CHECK: llvm.loongarch.lsx.vpickve2gr.hu: argument out of range 87entry: 88 %res = call i32 @llvm.loongarch.lsx.vpickve2gr.hu(<8 x i16> %va, i32 -1) 89 ret i32 %res 90} 91 92define i32 @lsx_vpickve2gr_hu_hi(<8 x i16> %va) nounwind { 93; CHECK: llvm.loongarch.lsx.vpickve2gr.hu: argument out of range 94entry: 95 %res = call i32 @llvm.loongarch.lsx.vpickve2gr.hu(<8 x i16> %va, i32 8) 96 ret i32 %res 97} 98 99declare i32 @llvm.loongarch.lsx.vpickve2gr.wu(<4 x i32>, i32) 100 101define i32 @lsx_vpickve2gr_wu_lo(<4 x i32> %va) nounwind { 102; CHECK: llvm.loongarch.lsx.vpickve2gr.wu: argument out of range 103entry: 104 %res = call i32 @llvm.loongarch.lsx.vpickve2gr.wu(<4 x i32> %va, i32 -1) 105 ret i32 %res 106} 107 108define i32 @lsx_vpickve2gr_wu_hi(<4 x i32> %va) nounwind { 109; CHECK: llvm.loongarch.lsx.vpickve2gr.wu: argument out of range 110entry: 111 %res = call i32 @llvm.loongarch.lsx.vpickve2gr.wu(<4 x i32> %va, i32 4) 112 ret i32 %res 113} 114 115declare i64 @llvm.loongarch.lsx.vpickve2gr.du(<2 x i64>, i32) 116 117define i64 @lsx_vpickve2gr_du_lo(<2 x i64> %va) nounwind { 118; CHECK: llvm.loongarch.lsx.vpickve2gr.du: argument out of range 119entry: 120 %res = call i64 @llvm.loongarch.lsx.vpickve2gr.du(<2 x i64> %va, i32 -1) 121 ret i64 %res 122} 123 124define i64 @lsx_vpickve2gr_du_hi(<2 x i64> %va) nounwind { 125; CHECK: llvm.loongarch.lsx.vpickve2gr.du: argument out of range 126entry: 127 %res = call i64 @llvm.loongarch.lsx.vpickve2gr.du(<2 x i64> %va, i32 2) 128 ret i64 %res 129} 130