; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py ; RUN: llc --mtriple=loongarch64 --mattr=+lsx < %s | FileCheck %s declare <4 x i32> @llvm.loongarch.lsx.vfcmp.caf.s(<4 x float>, <4 x float>) define <4 x i32> @lsx_vfcmp_caf_s(<4 x float> %va, <4 x float> %vb) nounwind { ; CHECK-LABEL: lsx_vfcmp_caf_s: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: vfcmp.caf.s $vr0, $vr0, $vr1 ; CHECK-NEXT: ret entry: %res = call <4 x i32> @llvm.loongarch.lsx.vfcmp.caf.s(<4 x float> %va, <4 x float> %vb) ret <4 x i32> %res } declare <2 x i64> @llvm.loongarch.lsx.vfcmp.caf.d(<2 x double>, <2 x double>) define <2 x i64> @lsx_vfcmp_caf_d(<2 x double> %va, <2 x double> %vb) nounwind { ; CHECK-LABEL: lsx_vfcmp_caf_d: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: vfcmp.caf.d $vr0, $vr0, $vr1 ; CHECK-NEXT: ret entry: %res = call <2 x i64> @llvm.loongarch.lsx.vfcmp.caf.d(<2 x double> %va, <2 x double> %vb) ret <2 x i64> %res } declare <4 x i32> @llvm.loongarch.lsx.vfcmp.cun.s(<4 x float>, <4 x float>) define <4 x i32> @lsx_vfcmp_cun_s(<4 x float> %va, <4 x float> %vb) nounwind { ; CHECK-LABEL: lsx_vfcmp_cun_s: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: vfcmp.cun.s $vr0, $vr0, $vr1 ; CHECK-NEXT: ret entry: %res = call <4 x i32> @llvm.loongarch.lsx.vfcmp.cun.s(<4 x float> %va, <4 x float> %vb) ret <4 x i32> %res } declare <2 x i64> @llvm.loongarch.lsx.vfcmp.cun.d(<2 x double>, <2 x double>) define <2 x i64> @lsx_vfcmp_cun_d(<2 x double> %va, <2 x double> %vb) nounwind { ; CHECK-LABEL: lsx_vfcmp_cun_d: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: vfcmp.cun.d $vr0, $vr0, $vr1 ; CHECK-NEXT: ret entry: %res = call <2 x i64> @llvm.loongarch.lsx.vfcmp.cun.d(<2 x double> %va, <2 x double> %vb) ret <2 x i64> %res } declare <4 x i32> @llvm.loongarch.lsx.vfcmp.ceq.s(<4 x float>, <4 x float>) define <4 x i32> @lsx_vfcmp_ceq_s(<4 x float> %va, <4 x float> %vb) nounwind { ; CHECK-LABEL: lsx_vfcmp_ceq_s: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: vfcmp.ceq.s $vr0, $vr0, $vr1 ; CHECK-NEXT: ret entry: %res = call <4 x i32> @llvm.loongarch.lsx.vfcmp.ceq.s(<4 x float> %va, <4 x float> %vb) ret <4 x i32> %res } declare <2 x i64> @llvm.loongarch.lsx.vfcmp.ceq.d(<2 x double>, <2 x double>) define <2 x i64> @lsx_vfcmp_ceq_d(<2 x double> %va, <2 x double> %vb) nounwind { ; CHECK-LABEL: lsx_vfcmp_ceq_d: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: vfcmp.ceq.d $vr0, $vr0, $vr1 ; CHECK-NEXT: ret entry: %res = call <2 x i64> @llvm.loongarch.lsx.vfcmp.ceq.d(<2 x double> %va, <2 x double> %vb) ret <2 x i64> %res } declare <4 x i32> @llvm.loongarch.lsx.vfcmp.cueq.s(<4 x float>, <4 x float>) define <4 x i32> @lsx_vfcmp_cueq_s(<4 x float> %va, <4 x float> %vb) nounwind { ; CHECK-LABEL: lsx_vfcmp_cueq_s: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: vfcmp.cueq.s $vr0, $vr0, $vr1 ; CHECK-NEXT: ret entry: %res = call <4 x i32> @llvm.loongarch.lsx.vfcmp.cueq.s(<4 x float> %va, <4 x float> %vb) ret <4 x i32> %res } declare <2 x i64> @llvm.loongarch.lsx.vfcmp.cueq.d(<2 x double>, <2 x double>) define <2 x i64> @lsx_vfcmp_cueq_d(<2 x double> %va, <2 x double> %vb) nounwind { ; CHECK-LABEL: lsx_vfcmp_cueq_d: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: vfcmp.cueq.d $vr0, $vr0, $vr1 ; CHECK-NEXT: ret entry: %res = call <2 x i64> @llvm.loongarch.lsx.vfcmp.cueq.d(<2 x double> %va, <2 x double> %vb) ret <2 x i64> %res } declare <4 x i32> @llvm.loongarch.lsx.vfcmp.clt.s(<4 x float>, <4 x float>) define <4 x i32> @lsx_vfcmp_clt_s(<4 x float> %va, <4 x float> %vb) nounwind { ; CHECK-LABEL: lsx_vfcmp_clt_s: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: vfcmp.clt.s $vr0, $vr0, $vr1 ; CHECK-NEXT: ret entry: %res = call <4 x i32> @llvm.loongarch.lsx.vfcmp.clt.s(<4 x float> %va, <4 x float> %vb) ret <4 x i32> %res } declare <2 x i64> @llvm.loongarch.lsx.vfcmp.clt.d(<2 x double>, <2 x double>) define <2 x i64> @lsx_vfcmp_clt_d(<2 x double> %va, <2 x double> %vb) nounwind { ; CHECK-LABEL: lsx_vfcmp_clt_d: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: vfcmp.clt.d $vr0, $vr0, $vr1 ; CHECK-NEXT: ret entry: %res = call <2 x i64> @llvm.loongarch.lsx.vfcmp.clt.d(<2 x double> %va, <2 x double> %vb) ret <2 x i64> %res } declare <4 x i32> @llvm.loongarch.lsx.vfcmp.cult.s(<4 x float>, <4 x float>) define <4 x i32> @lsx_vfcmp_cult_s(<4 x float> %va, <4 x float> %vb) nounwind { ; CHECK-LABEL: lsx_vfcmp_cult_s: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: vfcmp.cult.s $vr0, $vr0, $vr1 ; CHECK-NEXT: ret entry: %res = call <4 x i32> @llvm.loongarch.lsx.vfcmp.cult.s(<4 x float> %va, <4 x float> %vb) ret <4 x i32> %res } declare <2 x i64> @llvm.loongarch.lsx.vfcmp.cult.d(<2 x double>, <2 x double>) define <2 x i64> @lsx_vfcmp_cult_d(<2 x double> %va, <2 x double> %vb) nounwind { ; CHECK-LABEL: lsx_vfcmp_cult_d: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: vfcmp.cult.d $vr0, $vr0, $vr1 ; CHECK-NEXT: ret entry: %res = call <2 x i64> @llvm.loongarch.lsx.vfcmp.cult.d(<2 x double> %va, <2 x double> %vb) ret <2 x i64> %res } declare <4 x i32> @llvm.loongarch.lsx.vfcmp.cle.s(<4 x float>, <4 x float>) define <4 x i32> @lsx_vfcmp_cle_s(<4 x float> %va, <4 x float> %vb) nounwind { ; CHECK-LABEL: lsx_vfcmp_cle_s: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: vfcmp.cle.s $vr0, $vr0, $vr1 ; CHECK-NEXT: ret entry: %res = call <4 x i32> @llvm.loongarch.lsx.vfcmp.cle.s(<4 x float> %va, <4 x float> %vb) ret <4 x i32> %res } declare <2 x i64> @llvm.loongarch.lsx.vfcmp.cle.d(<2 x double>, <2 x double>) define <2 x i64> @lsx_vfcmp_cle_d(<2 x double> %va, <2 x double> %vb) nounwind { ; CHECK-LABEL: lsx_vfcmp_cle_d: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: vfcmp.cle.d $vr0, $vr0, $vr1 ; CHECK-NEXT: ret entry: %res = call <2 x i64> @llvm.loongarch.lsx.vfcmp.cle.d(<2 x double> %va, <2 x double> %vb) ret <2 x i64> %res } declare <4 x i32> @llvm.loongarch.lsx.vfcmp.cule.s(<4 x float>, <4 x float>) define <4 x i32> @lsx_vfcmp_cule_s(<4 x float> %va, <4 x float> %vb) nounwind { ; CHECK-LABEL: lsx_vfcmp_cule_s: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: vfcmp.cule.s $vr0, $vr0, $vr1 ; CHECK-NEXT: ret entry: %res = call <4 x i32> @llvm.loongarch.lsx.vfcmp.cule.s(<4 x float> %va, <4 x float> %vb) ret <4 x i32> %res } declare <2 x i64> @llvm.loongarch.lsx.vfcmp.cule.d(<2 x double>, <2 x double>) define <2 x i64> @lsx_vfcmp_cule_d(<2 x double> %va, <2 x double> %vb) nounwind { ; CHECK-LABEL: lsx_vfcmp_cule_d: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: vfcmp.cule.d $vr0, $vr0, $vr1 ; CHECK-NEXT: ret entry: %res = call <2 x i64> @llvm.loongarch.lsx.vfcmp.cule.d(<2 x double> %va, <2 x double> %vb) ret <2 x i64> %res } declare <4 x i32> @llvm.loongarch.lsx.vfcmp.cne.s(<4 x float>, <4 x float>) define <4 x i32> @lsx_vfcmp_cne_s(<4 x float> %va, <4 x float> %vb) nounwind { ; CHECK-LABEL: lsx_vfcmp_cne_s: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: vfcmp.cne.s $vr0, $vr0, $vr1 ; CHECK-NEXT: ret entry: %res = call <4 x i32> @llvm.loongarch.lsx.vfcmp.cne.s(<4 x float> %va, <4 x float> %vb) ret <4 x i32> %res } declare <2 x i64> @llvm.loongarch.lsx.vfcmp.cne.d(<2 x double>, <2 x double>) define <2 x i64> @lsx_vfcmp_cne_d(<2 x double> %va, <2 x double> %vb) nounwind { ; CHECK-LABEL: lsx_vfcmp_cne_d: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: vfcmp.cne.d $vr0, $vr0, $vr1 ; CHECK-NEXT: ret entry: %res = call <2 x i64> @llvm.loongarch.lsx.vfcmp.cne.d(<2 x double> %va, <2 x double> %vb) ret <2 x i64> %res } declare <4 x i32> @llvm.loongarch.lsx.vfcmp.cor.s(<4 x float>, <4 x float>) define <4 x i32> @lsx_vfcmp_cor_s(<4 x float> %va, <4 x float> %vb) nounwind { ; CHECK-LABEL: lsx_vfcmp_cor_s: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: vfcmp.cor.s $vr0, $vr0, $vr1 ; CHECK-NEXT: ret entry: %res = call <4 x i32> @llvm.loongarch.lsx.vfcmp.cor.s(<4 x float> %va, <4 x float> %vb) ret <4 x i32> %res } declare <2 x i64> @llvm.loongarch.lsx.vfcmp.cor.d(<2 x double>, <2 x double>) define <2 x i64> @lsx_vfcmp_cor_d(<2 x double> %va, <2 x double> %vb) nounwind { ; CHECK-LABEL: lsx_vfcmp_cor_d: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: vfcmp.cor.d $vr0, $vr0, $vr1 ; CHECK-NEXT: ret entry: %res = call <2 x i64> @llvm.loongarch.lsx.vfcmp.cor.d(<2 x double> %va, <2 x double> %vb) ret <2 x i64> %res } declare <4 x i32> @llvm.loongarch.lsx.vfcmp.cune.s(<4 x float>, <4 x float>) define <4 x i32> @lsx_vfcmp_cune_s(<4 x float> %va, <4 x float> %vb) nounwind { ; CHECK-LABEL: lsx_vfcmp_cune_s: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: vfcmp.cune.s $vr0, $vr0, $vr1 ; CHECK-NEXT: ret entry: %res = call <4 x i32> @llvm.loongarch.lsx.vfcmp.cune.s(<4 x float> %va, <4 x float> %vb) ret <4 x i32> %res } declare <2 x i64> @llvm.loongarch.lsx.vfcmp.cune.d(<2 x double>, <2 x double>) define <2 x i64> @lsx_vfcmp_cune_d(<2 x double> %va, <2 x double> %vb) nounwind { ; CHECK-LABEL: lsx_vfcmp_cune_d: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: vfcmp.cune.d $vr0, $vr0, $vr1 ; CHECK-NEXT: ret entry: %res = call <2 x i64> @llvm.loongarch.lsx.vfcmp.cune.d(<2 x double> %va, <2 x double> %vb) ret <2 x i64> %res } declare <4 x i32> @llvm.loongarch.lsx.vfcmp.saf.s(<4 x float>, <4 x float>) define <4 x i32> @lsx_vfcmp_saf_s(<4 x float> %va, <4 x float> %vb) nounwind { ; CHECK-LABEL: lsx_vfcmp_saf_s: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: vfcmp.saf.s $vr0, $vr0, $vr1 ; CHECK-NEXT: ret entry: %res = call <4 x i32> @llvm.loongarch.lsx.vfcmp.saf.s(<4 x float> %va, <4 x float> %vb) ret <4 x i32> %res } declare <2 x i64> @llvm.loongarch.lsx.vfcmp.saf.d(<2 x double>, <2 x double>) define <2 x i64> @lsx_vfcmp_saf_d(<2 x double> %va, <2 x double> %vb) nounwind { ; CHECK-LABEL: lsx_vfcmp_saf_d: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: vfcmp.saf.d $vr0, $vr0, $vr1 ; CHECK-NEXT: ret entry: %res = call <2 x i64> @llvm.loongarch.lsx.vfcmp.saf.d(<2 x double> %va, <2 x double> %vb) ret <2 x i64> %res } declare <4 x i32> @llvm.loongarch.lsx.vfcmp.sun.s(<4 x float>, <4 x float>) define <4 x i32> @lsx_vfcmp_sun_s(<4 x float> %va, <4 x float> %vb) nounwind { ; CHECK-LABEL: lsx_vfcmp_sun_s: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: vfcmp.sun.s $vr0, $vr0, $vr1 ; CHECK-NEXT: ret entry: %res = call <4 x i32> @llvm.loongarch.lsx.vfcmp.sun.s(<4 x float> %va, <4 x float> %vb) ret <4 x i32> %res } declare <2 x i64> @llvm.loongarch.lsx.vfcmp.sun.d(<2 x double>, <2 x double>) define <2 x i64> @lsx_vfcmp_sun_d(<2 x double> %va, <2 x double> %vb) nounwind { ; CHECK-LABEL: lsx_vfcmp_sun_d: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: vfcmp.sun.d $vr0, $vr0, $vr1 ; CHECK-NEXT: ret entry: %res = call <2 x i64> @llvm.loongarch.lsx.vfcmp.sun.d(<2 x double> %va, <2 x double> %vb) ret <2 x i64> %res } declare <4 x i32> @llvm.loongarch.lsx.vfcmp.seq.s(<4 x float>, <4 x float>) define <4 x i32> @lsx_vfcmp_seq_s(<4 x float> %va, <4 x float> %vb) nounwind { ; CHECK-LABEL: lsx_vfcmp_seq_s: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: vfcmp.seq.s $vr0, $vr0, $vr1 ; CHECK-NEXT: ret entry: %res = call <4 x i32> @llvm.loongarch.lsx.vfcmp.seq.s(<4 x float> %va, <4 x float> %vb) ret <4 x i32> %res } declare <2 x i64> @llvm.loongarch.lsx.vfcmp.seq.d(<2 x double>, <2 x double>) define <2 x i64> @lsx_vfcmp_seq_d(<2 x double> %va, <2 x double> %vb) nounwind { ; CHECK-LABEL: lsx_vfcmp_seq_d: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: vfcmp.seq.d $vr0, $vr0, $vr1 ; CHECK-NEXT: ret entry: %res = call <2 x i64> @llvm.loongarch.lsx.vfcmp.seq.d(<2 x double> %va, <2 x double> %vb) ret <2 x i64> %res } declare <4 x i32> @llvm.loongarch.lsx.vfcmp.sueq.s(<4 x float>, <4 x float>) define <4 x i32> @lsx_vfcmp_sueq_s(<4 x float> %va, <4 x float> %vb) nounwind { ; CHECK-LABEL: lsx_vfcmp_sueq_s: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: vfcmp.sueq.s $vr0, $vr0, $vr1 ; CHECK-NEXT: ret entry: %res = call <4 x i32> @llvm.loongarch.lsx.vfcmp.sueq.s(<4 x float> %va, <4 x float> %vb) ret <4 x i32> %res } declare <2 x i64> @llvm.loongarch.lsx.vfcmp.sueq.d(<2 x double>, <2 x double>) define <2 x i64> @lsx_vfcmp_sueq_d(<2 x double> %va, <2 x double> %vb) nounwind { ; CHECK-LABEL: lsx_vfcmp_sueq_d: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: vfcmp.sueq.d $vr0, $vr0, $vr1 ; CHECK-NEXT: ret entry: %res = call <2 x i64> @llvm.loongarch.lsx.vfcmp.sueq.d(<2 x double> %va, <2 x double> %vb) ret <2 x i64> %res } declare <4 x i32> @llvm.loongarch.lsx.vfcmp.slt.s(<4 x float>, <4 x float>) define <4 x i32> @lsx_vfcmp_slt_s(<4 x float> %va, <4 x float> %vb) nounwind { ; CHECK-LABEL: lsx_vfcmp_slt_s: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: vfcmp.slt.s $vr0, $vr0, $vr1 ; CHECK-NEXT: ret entry: %res = call <4 x i32> @llvm.loongarch.lsx.vfcmp.slt.s(<4 x float> %va, <4 x float> %vb) ret <4 x i32> %res } declare <2 x i64> @llvm.loongarch.lsx.vfcmp.slt.d(<2 x double>, <2 x double>) define <2 x i64> @lsx_vfcmp_slt_d(<2 x double> %va, <2 x double> %vb) nounwind { ; CHECK-LABEL: lsx_vfcmp_slt_d: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: vfcmp.slt.d $vr0, $vr0, $vr1 ; CHECK-NEXT: ret entry: %res = call <2 x i64> @llvm.loongarch.lsx.vfcmp.slt.d(<2 x double> %va, <2 x double> %vb) ret <2 x i64> %res } declare <4 x i32> @llvm.loongarch.lsx.vfcmp.sult.s(<4 x float>, <4 x float>) define <4 x i32> @lsx_vfcmp_sult_s(<4 x float> %va, <4 x float> %vb) nounwind { ; CHECK-LABEL: lsx_vfcmp_sult_s: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: vfcmp.sult.s $vr0, $vr0, $vr1 ; CHECK-NEXT: ret entry: %res = call <4 x i32> @llvm.loongarch.lsx.vfcmp.sult.s(<4 x float> %va, <4 x float> %vb) ret <4 x i32> %res } declare <2 x i64> @llvm.loongarch.lsx.vfcmp.sult.d(<2 x double>, <2 x double>) define <2 x i64> @lsx_vfcmp_sult_d(<2 x double> %va, <2 x double> %vb) nounwind { ; CHECK-LABEL: lsx_vfcmp_sult_d: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: vfcmp.sult.d $vr0, $vr0, $vr1 ; CHECK-NEXT: ret entry: %res = call <2 x i64> @llvm.loongarch.lsx.vfcmp.sult.d(<2 x double> %va, <2 x double> %vb) ret <2 x i64> %res } declare <4 x i32> @llvm.loongarch.lsx.vfcmp.sle.s(<4 x float>, <4 x float>) define <4 x i32> @lsx_vfcmp_sle_s(<4 x float> %va, <4 x float> %vb) nounwind { ; CHECK-LABEL: lsx_vfcmp_sle_s: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: vfcmp.sle.s $vr0, $vr0, $vr1 ; CHECK-NEXT: ret entry: %res = call <4 x i32> @llvm.loongarch.lsx.vfcmp.sle.s(<4 x float> %va, <4 x float> %vb) ret <4 x i32> %res } declare <2 x i64> @llvm.loongarch.lsx.vfcmp.sle.d(<2 x double>, <2 x double>) define <2 x i64> @lsx_vfcmp_sle_d(<2 x double> %va, <2 x double> %vb) nounwind { ; CHECK-LABEL: lsx_vfcmp_sle_d: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: vfcmp.sle.d $vr0, $vr0, $vr1 ; CHECK-NEXT: ret entry: %res = call <2 x i64> @llvm.loongarch.lsx.vfcmp.sle.d(<2 x double> %va, <2 x double> %vb) ret <2 x i64> %res } declare <4 x i32> @llvm.loongarch.lsx.vfcmp.sule.s(<4 x float>, <4 x float>) define <4 x i32> @lsx_vfcmp_sule_s(<4 x float> %va, <4 x float> %vb) nounwind { ; CHECK-LABEL: lsx_vfcmp_sule_s: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: vfcmp.sule.s $vr0, $vr0, $vr1 ; CHECK-NEXT: ret entry: %res = call <4 x i32> @llvm.loongarch.lsx.vfcmp.sule.s(<4 x float> %va, <4 x float> %vb) ret <4 x i32> %res } declare <2 x i64> @llvm.loongarch.lsx.vfcmp.sule.d(<2 x double>, <2 x double>) define <2 x i64> @lsx_vfcmp_sule_d(<2 x double> %va, <2 x double> %vb) nounwind { ; CHECK-LABEL: lsx_vfcmp_sule_d: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: vfcmp.sule.d $vr0, $vr0, $vr1 ; CHECK-NEXT: ret entry: %res = call <2 x i64> @llvm.loongarch.lsx.vfcmp.sule.d(<2 x double> %va, <2 x double> %vb) ret <2 x i64> %res } declare <4 x i32> @llvm.loongarch.lsx.vfcmp.sne.s(<4 x float>, <4 x float>) define <4 x i32> @lsx_vfcmp_sne_s(<4 x float> %va, <4 x float> %vb) nounwind { ; CHECK-LABEL: lsx_vfcmp_sne_s: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: vfcmp.sne.s $vr0, $vr0, $vr1 ; CHECK-NEXT: ret entry: %res = call <4 x i32> @llvm.loongarch.lsx.vfcmp.sne.s(<4 x float> %va, <4 x float> %vb) ret <4 x i32> %res } declare <2 x i64> @llvm.loongarch.lsx.vfcmp.sne.d(<2 x double>, <2 x double>) define <2 x i64> @lsx_vfcmp_sne_d(<2 x double> %va, <2 x double> %vb) nounwind { ; CHECK-LABEL: lsx_vfcmp_sne_d: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: vfcmp.sne.d $vr0, $vr0, $vr1 ; CHECK-NEXT: ret entry: %res = call <2 x i64> @llvm.loongarch.lsx.vfcmp.sne.d(<2 x double> %va, <2 x double> %vb) ret <2 x i64> %res } declare <4 x i32> @llvm.loongarch.lsx.vfcmp.sor.s(<4 x float>, <4 x float>) define <4 x i32> @lsx_vfcmp_sor_s(<4 x float> %va, <4 x float> %vb) nounwind { ; CHECK-LABEL: lsx_vfcmp_sor_s: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: vfcmp.sor.s $vr0, $vr0, $vr1 ; CHECK-NEXT: ret entry: %res = call <4 x i32> @llvm.loongarch.lsx.vfcmp.sor.s(<4 x float> %va, <4 x float> %vb) ret <4 x i32> %res } declare <2 x i64> @llvm.loongarch.lsx.vfcmp.sor.d(<2 x double>, <2 x double>) define <2 x i64> @lsx_vfcmp_sor_d(<2 x double> %va, <2 x double> %vb) nounwind { ; CHECK-LABEL: lsx_vfcmp_sor_d: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: vfcmp.sor.d $vr0, $vr0, $vr1 ; CHECK-NEXT: ret entry: %res = call <2 x i64> @llvm.loongarch.lsx.vfcmp.sor.d(<2 x double> %va, <2 x double> %vb) ret <2 x i64> %res } declare <4 x i32> @llvm.loongarch.lsx.vfcmp.sune.s(<4 x float>, <4 x float>) define <4 x i32> @lsx_vfcmp_sune_s(<4 x float> %va, <4 x float> %vb) nounwind { ; CHECK-LABEL: lsx_vfcmp_sune_s: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: vfcmp.sune.s $vr0, $vr0, $vr1 ; CHECK-NEXT: ret entry: %res = call <4 x i32> @llvm.loongarch.lsx.vfcmp.sune.s(<4 x float> %va, <4 x float> %vb) ret <4 x i32> %res } declare <2 x i64> @llvm.loongarch.lsx.vfcmp.sune.d(<2 x double>, <2 x double>) define <2 x i64> @lsx_vfcmp_sune_d(<2 x double> %va, <2 x double> %vb) nounwind { ; CHECK-LABEL: lsx_vfcmp_sune_d: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: vfcmp.sune.d $vr0, $vr0, $vr1 ; CHECK-NEXT: ret entry: %res = call <2 x i64> @llvm.loongarch.lsx.vfcmp.sune.d(<2 x double> %va, <2 x double> %vb) ret <2 x i64> %res }