166760279SAlex Bradbury; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2 232597685SJianjian Guan; RUN: llc -mtriple=riscv32 -mattr=+zfbfmin -verify-machineinstrs \ 366760279SAlex Bradbury; RUN: -target-abi ilp32f < %s | FileCheck %s 432597685SJianjian Guan; RUN: llc -mtriple=riscv64 -mattr=+zfbfmin -verify-machineinstrs \ 566760279SAlex Bradbury; RUN: -target-abi lp64f < %s | FileCheck %s 666760279SAlex Bradbury 766760279SAlex Bradburydefine bfloat @select_icmp_eq(i32 signext %a, i32 signext %b, bfloat %c, bfloat %d) { 866760279SAlex Bradbury; CHECK-LABEL: select_icmp_eq: 966760279SAlex Bradbury; CHECK: # %bb.0: 1066760279SAlex Bradbury; CHECK-NEXT: beq a0, a1, .LBB0_2 1166760279SAlex Bradbury; CHECK-NEXT: # %bb.1: 12*1c874bbbSCraig Topper; CHECK-NEXT: fmv.s fa0, fa1 1366760279SAlex Bradbury; CHECK-NEXT: .LBB0_2: 1466760279SAlex Bradbury; CHECK-NEXT: ret 1566760279SAlex Bradbury %1 = icmp eq i32 %a, %b 1666760279SAlex Bradbury %2 = select i1 %1, bfloat %c, bfloat %d 1766760279SAlex Bradbury ret bfloat %2 1866760279SAlex Bradbury} 1966760279SAlex Bradbury 2066760279SAlex Bradburydefine bfloat @select_icmp_ne(i32 signext %a, i32 signext %b, bfloat %c, bfloat %d) { 2166760279SAlex Bradbury; CHECK-LABEL: select_icmp_ne: 2266760279SAlex Bradbury; CHECK: # %bb.0: 2366760279SAlex Bradbury; CHECK-NEXT: bne a0, a1, .LBB1_2 2466760279SAlex Bradbury; CHECK-NEXT: # %bb.1: 25*1c874bbbSCraig Topper; CHECK-NEXT: fmv.s fa0, fa1 2666760279SAlex Bradbury; CHECK-NEXT: .LBB1_2: 2766760279SAlex Bradbury; CHECK-NEXT: ret 2866760279SAlex Bradbury %1 = icmp ne i32 %a, %b 2966760279SAlex Bradbury %2 = select i1 %1, bfloat %c, bfloat %d 3066760279SAlex Bradbury ret bfloat %2 3166760279SAlex Bradbury} 3266760279SAlex Bradbury 3366760279SAlex Bradburydefine bfloat @select_icmp_ugt(i32 signext %a, i32 signext %b, bfloat %c, bfloat %d) { 3466760279SAlex Bradbury; CHECK-LABEL: select_icmp_ugt: 3566760279SAlex Bradbury; CHECK: # %bb.0: 3666760279SAlex Bradbury; CHECK-NEXT: bltu a1, a0, .LBB2_2 3766760279SAlex Bradbury; CHECK-NEXT: # %bb.1: 38*1c874bbbSCraig Topper; CHECK-NEXT: fmv.s fa0, fa1 3966760279SAlex Bradbury; CHECK-NEXT: .LBB2_2: 4066760279SAlex Bradbury; CHECK-NEXT: ret 4166760279SAlex Bradbury %1 = icmp ugt i32 %a, %b 4266760279SAlex Bradbury %2 = select i1 %1, bfloat %c, bfloat %d 4366760279SAlex Bradbury ret bfloat %2 4466760279SAlex Bradbury} 4566760279SAlex Bradbury 4666760279SAlex Bradburydefine bfloat @select_icmp_uge(i32 signext %a, i32 signext %b, bfloat %c, bfloat %d) { 4766760279SAlex Bradbury; CHECK-LABEL: select_icmp_uge: 4866760279SAlex Bradbury; CHECK: # %bb.0: 4966760279SAlex Bradbury; CHECK-NEXT: bgeu a0, a1, .LBB3_2 5066760279SAlex Bradbury; CHECK-NEXT: # %bb.1: 51*1c874bbbSCraig Topper; CHECK-NEXT: fmv.s fa0, fa1 5266760279SAlex Bradbury; CHECK-NEXT: .LBB3_2: 5366760279SAlex Bradbury; CHECK-NEXT: ret 5466760279SAlex Bradbury %1 = icmp uge i32 %a, %b 5566760279SAlex Bradbury %2 = select i1 %1, bfloat %c, bfloat %d 5666760279SAlex Bradbury ret bfloat %2 5766760279SAlex Bradbury} 5866760279SAlex Bradbury 5966760279SAlex Bradburydefine bfloat @select_icmp_ult(i32 signext %a, i32 signext %b, bfloat %c, bfloat %d) { 6066760279SAlex Bradbury; CHECK-LABEL: select_icmp_ult: 6166760279SAlex Bradbury; CHECK: # %bb.0: 6266760279SAlex Bradbury; CHECK-NEXT: bltu a0, a1, .LBB4_2 6366760279SAlex Bradbury; CHECK-NEXT: # %bb.1: 64*1c874bbbSCraig Topper; CHECK-NEXT: fmv.s fa0, fa1 6566760279SAlex Bradbury; CHECK-NEXT: .LBB4_2: 6666760279SAlex Bradbury; CHECK-NEXT: ret 6766760279SAlex Bradbury %1 = icmp ult i32 %a, %b 6866760279SAlex Bradbury %2 = select i1 %1, bfloat %c, bfloat %d 6966760279SAlex Bradbury ret bfloat %2 7066760279SAlex Bradbury} 7166760279SAlex Bradbury 7266760279SAlex Bradburydefine bfloat @select_icmp_ule(i32 signext %a, i32 signext %b, bfloat %c, bfloat %d) { 7366760279SAlex Bradbury; CHECK-LABEL: select_icmp_ule: 7466760279SAlex Bradbury; CHECK: # %bb.0: 7566760279SAlex Bradbury; CHECK-NEXT: bgeu a1, a0, .LBB5_2 7666760279SAlex Bradbury; CHECK-NEXT: # %bb.1: 77*1c874bbbSCraig Topper; CHECK-NEXT: fmv.s fa0, fa1 7866760279SAlex Bradbury; CHECK-NEXT: .LBB5_2: 7966760279SAlex Bradbury; CHECK-NEXT: ret 8066760279SAlex Bradbury %1 = icmp ule i32 %a, %b 8166760279SAlex Bradbury %2 = select i1 %1, bfloat %c, bfloat %d 8266760279SAlex Bradbury ret bfloat %2 8366760279SAlex Bradbury} 8466760279SAlex Bradbury 8566760279SAlex Bradburydefine bfloat @select_icmp_sgt(i32 signext %a, i32 signext %b, bfloat %c, bfloat %d) { 8666760279SAlex Bradbury; CHECK-LABEL: select_icmp_sgt: 8766760279SAlex Bradbury; CHECK: # %bb.0: 8866760279SAlex Bradbury; CHECK-NEXT: blt a1, a0, .LBB6_2 8966760279SAlex Bradbury; CHECK-NEXT: # %bb.1: 90*1c874bbbSCraig Topper; CHECK-NEXT: fmv.s fa0, fa1 9166760279SAlex Bradbury; CHECK-NEXT: .LBB6_2: 9266760279SAlex Bradbury; CHECK-NEXT: ret 9366760279SAlex Bradbury %1 = icmp sgt i32 %a, %b 9466760279SAlex Bradbury %2 = select i1 %1, bfloat %c, bfloat %d 9566760279SAlex Bradbury ret bfloat %2 9666760279SAlex Bradbury} 9766760279SAlex Bradbury 9866760279SAlex Bradburydefine bfloat @select_icmp_sge(i32 signext %a, i32 signext %b, bfloat %c, bfloat %d) { 9966760279SAlex Bradbury; CHECK-LABEL: select_icmp_sge: 10066760279SAlex Bradbury; CHECK: # %bb.0: 10166760279SAlex Bradbury; CHECK-NEXT: bge a0, a1, .LBB7_2 10266760279SAlex Bradbury; CHECK-NEXT: # %bb.1: 103*1c874bbbSCraig Topper; CHECK-NEXT: fmv.s fa0, fa1 10466760279SAlex Bradbury; CHECK-NEXT: .LBB7_2: 10566760279SAlex Bradbury; CHECK-NEXT: ret 10666760279SAlex Bradbury %1 = icmp sge i32 %a, %b 10766760279SAlex Bradbury %2 = select i1 %1, bfloat %c, bfloat %d 10866760279SAlex Bradbury ret bfloat %2 10966760279SAlex Bradbury} 11066760279SAlex Bradbury 11166760279SAlex Bradburydefine bfloat @select_icmp_slt(i32 signext %a, i32 signext %b, bfloat %c, bfloat %d) { 11266760279SAlex Bradbury; CHECK-LABEL: select_icmp_slt: 11366760279SAlex Bradbury; CHECK: # %bb.0: 11466760279SAlex Bradbury; CHECK-NEXT: blt a0, a1, .LBB8_2 11566760279SAlex Bradbury; CHECK-NEXT: # %bb.1: 116*1c874bbbSCraig Topper; CHECK-NEXT: fmv.s fa0, fa1 11766760279SAlex Bradbury; CHECK-NEXT: .LBB8_2: 11866760279SAlex Bradbury; CHECK-NEXT: ret 11966760279SAlex Bradbury %1 = icmp slt i32 %a, %b 12066760279SAlex Bradbury %2 = select i1 %1, bfloat %c, bfloat %d 12166760279SAlex Bradbury ret bfloat %2 12266760279SAlex Bradbury} 12366760279SAlex Bradbury 12466760279SAlex Bradburydefine bfloat @select_icmp_sle(i32 signext %a, i32 signext %b, bfloat %c, bfloat %d) { 12566760279SAlex Bradbury; CHECK-LABEL: select_icmp_sle: 12666760279SAlex Bradbury; CHECK: # %bb.0: 12766760279SAlex Bradbury; CHECK-NEXT: bge a1, a0, .LBB9_2 12866760279SAlex Bradbury; CHECK-NEXT: # %bb.1: 129*1c874bbbSCraig Topper; CHECK-NEXT: fmv.s fa0, fa1 13066760279SAlex Bradbury; CHECK-NEXT: .LBB9_2: 13166760279SAlex Bradbury; CHECK-NEXT: ret 13266760279SAlex Bradbury %1 = icmp sle i32 %a, %b 13366760279SAlex Bradbury %2 = select i1 %1, bfloat %c, bfloat %d 13466760279SAlex Bradbury ret bfloat %2 13566760279SAlex Bradbury} 13666760279SAlex Bradbury 13766760279SAlex Bradburydefine bfloat @select_icmp_slt_one(i32 signext %a) { 13866760279SAlex Bradbury; CHECK-LABEL: select_icmp_slt_one: 13966760279SAlex Bradbury; CHECK: # %bb.0: 14066760279SAlex Bradbury; CHECK-NEXT: slti a0, a0, 1 141a8c502a5SCraig Topper; CHECK-NEXT: fcvt.s.w fa5, a0 142a8c502a5SCraig Topper; CHECK-NEXT: fcvt.bf16.s fa0, fa5 14366760279SAlex Bradbury; CHECK-NEXT: ret 14466760279SAlex Bradbury %1 = icmp slt i32 %a, 1 14566760279SAlex Bradbury %2 = select i1 %1, bfloat 1.000000e+00, bfloat 0.000000e+00 14666760279SAlex Bradbury ret bfloat %2 14766760279SAlex Bradbury} 14866760279SAlex Bradbury 14966760279SAlex Bradburydefine bfloat @select_icmp_sgt_zero(i32 signext %a) { 15066760279SAlex Bradbury; CHECK-LABEL: select_icmp_sgt_zero: 15166760279SAlex Bradbury; CHECK: # %bb.0: 152a8c502a5SCraig Topper; CHECK-NEXT: slti a0, a0, 1 153a8c502a5SCraig Topper; CHECK-NEXT: fcvt.s.w fa5, a0 154a8c502a5SCraig Topper; CHECK-NEXT: fcvt.bf16.s fa0, fa5 15566760279SAlex Bradbury; CHECK-NEXT: ret 15666760279SAlex Bradbury %1 = icmp sgt i32 %a, 0 15766760279SAlex Bradbury %2 = select i1 %1, bfloat 0.000000e+00, bfloat 1.000000e+00 15866760279SAlex Bradbury ret bfloat %2 15966760279SAlex Bradbury} 160