1*f3aa4416Schenli; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2*f3aa4416Schenli; RUN: llc --mtriple=loongarch64 --mattr=+lsx < %s | FileCheck %s 3*f3aa4416Schenli 4*f3aa4416Schenlideclare <16 x i8> @llvm.loongarch.lsx.vmod.b(<16 x i8>, <16 x i8>) 5*f3aa4416Schenli 6*f3aa4416Schenlidefine <16 x i8> @lsx_vmod_b(<16 x i8> %va, <16 x i8> %vb) nounwind { 7*f3aa4416Schenli; CHECK-LABEL: lsx_vmod_b: 8*f3aa4416Schenli; CHECK: # %bb.0: # %entry 9*f3aa4416Schenli; CHECK-NEXT: vmod.b $vr0, $vr0, $vr1 10*f3aa4416Schenli; CHECK-NEXT: ret 11*f3aa4416Schenlientry: 12*f3aa4416Schenli %res = call <16 x i8> @llvm.loongarch.lsx.vmod.b(<16 x i8> %va, <16 x i8> %vb) 13*f3aa4416Schenli ret <16 x i8> %res 14*f3aa4416Schenli} 15*f3aa4416Schenli 16*f3aa4416Schenlideclare <8 x i16> @llvm.loongarch.lsx.vmod.h(<8 x i16>, <8 x i16>) 17*f3aa4416Schenli 18*f3aa4416Schenlidefine <8 x i16> @lsx_vmod_h(<8 x i16> %va, <8 x i16> %vb) nounwind { 19*f3aa4416Schenli; CHECK-LABEL: lsx_vmod_h: 20*f3aa4416Schenli; CHECK: # %bb.0: # %entry 21*f3aa4416Schenli; CHECK-NEXT: vmod.h $vr0, $vr0, $vr1 22*f3aa4416Schenli; CHECK-NEXT: ret 23*f3aa4416Schenlientry: 24*f3aa4416Schenli %res = call <8 x i16> @llvm.loongarch.lsx.vmod.h(<8 x i16> %va, <8 x i16> %vb) 25*f3aa4416Schenli ret <8 x i16> %res 26*f3aa4416Schenli} 27*f3aa4416Schenli 28*f3aa4416Schenlideclare <4 x i32> @llvm.loongarch.lsx.vmod.w(<4 x i32>, <4 x i32>) 29*f3aa4416Schenli 30*f3aa4416Schenlidefine <4 x i32> @lsx_vmod_w(<4 x i32> %va, <4 x i32> %vb) nounwind { 31*f3aa4416Schenli; CHECK-LABEL: lsx_vmod_w: 32*f3aa4416Schenli; CHECK: # %bb.0: # %entry 33*f3aa4416Schenli; CHECK-NEXT: vmod.w $vr0, $vr0, $vr1 34*f3aa4416Schenli; CHECK-NEXT: ret 35*f3aa4416Schenlientry: 36*f3aa4416Schenli %res = call <4 x i32> @llvm.loongarch.lsx.vmod.w(<4 x i32> %va, <4 x i32> %vb) 37*f3aa4416Schenli ret <4 x i32> %res 38*f3aa4416Schenli} 39*f3aa4416Schenli 40*f3aa4416Schenlideclare <2 x i64> @llvm.loongarch.lsx.vmod.d(<2 x i64>, <2 x i64>) 41*f3aa4416Schenli 42*f3aa4416Schenlidefine <2 x i64> @lsx_vmod_d(<2 x i64> %va, <2 x i64> %vb) nounwind { 43*f3aa4416Schenli; CHECK-LABEL: lsx_vmod_d: 44*f3aa4416Schenli; CHECK: # %bb.0: # %entry 45*f3aa4416Schenli; CHECK-NEXT: vmod.d $vr0, $vr0, $vr1 46*f3aa4416Schenli; CHECK-NEXT: ret 47*f3aa4416Schenlientry: 48*f3aa4416Schenli %res = call <2 x i64> @llvm.loongarch.lsx.vmod.d(<2 x i64> %va, <2 x i64> %vb) 49*f3aa4416Schenli ret <2 x i64> %res 50*f3aa4416Schenli} 51*f3aa4416Schenli 52*f3aa4416Schenlideclare <16 x i8> @llvm.loongarch.lsx.vmod.bu(<16 x i8>, <16 x i8>) 53*f3aa4416Schenli 54*f3aa4416Schenlidefine <16 x i8> @lsx_vmod_bu(<16 x i8> %va, <16 x i8> %vb) nounwind { 55*f3aa4416Schenli; CHECK-LABEL: lsx_vmod_bu: 56*f3aa4416Schenli; CHECK: # %bb.0: # %entry 57*f3aa4416Schenli; CHECK-NEXT: vmod.bu $vr0, $vr0, $vr1 58*f3aa4416Schenli; CHECK-NEXT: ret 59*f3aa4416Schenlientry: 60*f3aa4416Schenli %res = call <16 x i8> @llvm.loongarch.lsx.vmod.bu(<16 x i8> %va, <16 x i8> %vb) 61*f3aa4416Schenli ret <16 x i8> %res 62*f3aa4416Schenli} 63*f3aa4416Schenli 64*f3aa4416Schenlideclare <8 x i16> @llvm.loongarch.lsx.vmod.hu(<8 x i16>, <8 x i16>) 65*f3aa4416Schenli 66*f3aa4416Schenlidefine <8 x i16> @lsx_vmod_hu(<8 x i16> %va, <8 x i16> %vb) nounwind { 67*f3aa4416Schenli; CHECK-LABEL: lsx_vmod_hu: 68*f3aa4416Schenli; CHECK: # %bb.0: # %entry 69*f3aa4416Schenli; CHECK-NEXT: vmod.hu $vr0, $vr0, $vr1 70*f3aa4416Schenli; CHECK-NEXT: ret 71*f3aa4416Schenlientry: 72*f3aa4416Schenli %res = call <8 x i16> @llvm.loongarch.lsx.vmod.hu(<8 x i16> %va, <8 x i16> %vb) 73*f3aa4416Schenli ret <8 x i16> %res 74*f3aa4416Schenli} 75*f3aa4416Schenli 76*f3aa4416Schenlideclare <4 x i32> @llvm.loongarch.lsx.vmod.wu(<4 x i32>, <4 x i32>) 77*f3aa4416Schenli 78*f3aa4416Schenlidefine <4 x i32> @lsx_vmod_wu(<4 x i32> %va, <4 x i32> %vb) nounwind { 79*f3aa4416Schenli; CHECK-LABEL: lsx_vmod_wu: 80*f3aa4416Schenli; CHECK: # %bb.0: # %entry 81*f3aa4416Schenli; CHECK-NEXT: vmod.wu $vr0, $vr0, $vr1 82*f3aa4416Schenli; CHECK-NEXT: ret 83*f3aa4416Schenlientry: 84*f3aa4416Schenli %res = call <4 x i32> @llvm.loongarch.lsx.vmod.wu(<4 x i32> %va, <4 x i32> %vb) 85*f3aa4416Schenli ret <4 x i32> %res 86*f3aa4416Schenli} 87*f3aa4416Schenli 88*f3aa4416Schenlideclare <2 x i64> @llvm.loongarch.lsx.vmod.du(<2 x i64>, <2 x i64>) 89*f3aa4416Schenli 90*f3aa4416Schenlidefine <2 x i64> @lsx_vmod_du(<2 x i64> %va, <2 x i64> %vb) nounwind { 91*f3aa4416Schenli; CHECK-LABEL: lsx_vmod_du: 92*f3aa4416Schenli; CHECK: # %bb.0: # %entry 93*f3aa4416Schenli; CHECK-NEXT: vmod.du $vr0, $vr0, $vr1 94*f3aa4416Schenli; CHECK-NEXT: ret 95*f3aa4416Schenlientry: 96*f3aa4416Schenli %res = call <2 x i64> @llvm.loongarch.lsx.vmod.du(<2 x i64> %va, <2 x i64> %vb) 97*f3aa4416Schenli ret <2 x i64> %res 98*f3aa4416Schenli} 99