139707c1aSCraig Topper; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 239707c1aSCraig Topper; RUN: llc -mtriple=riscv32 -mattr=+zfh -verify-machineinstrs \ 339707c1aSCraig Topper; RUN: -target-abi ilp32f < %s | FileCheck %s 439707c1aSCraig Topper; RUN: llc -mtriple=riscv64 -mattr=+zfh -verify-machineinstrs \ 539707c1aSCraig Topper; RUN: -target-abi lp64f < %s | FileCheck %s 6773b0aaaSQihan Cai; RUN: llc -mtriple=riscv32 -mattr=+zhinx -verify-machineinstrs \ 7773b0aaaSQihan Cai; RUN: -target-abi ilp32 < %s | FileCheck -check-prefix=CHECKIZHINX %s 8773b0aaaSQihan Cai; RUN: llc -mtriple=riscv64 -mattr=+zhinx -verify-machineinstrs \ 9773b0aaaSQihan Cai; RUN: -target-abi lp64 < %s | FileCheck -check-prefix=CHECKIZHINX %s 107b50c183SMonk Chiang; RUN: llc -mtriple=riscv32 -mattr=+zfhmin -verify-machineinstrs < %s \ 11*1c874bbbSCraig Topper; RUN: -target-abi=ilp32f | FileCheck -check-prefixes=CHECKIZFHMIN %s 127b50c183SMonk Chiang; RUN: llc -mtriple=riscv64 -mattr=+zfhmin -verify-machineinstrs < %s \ 13*1c874bbbSCraig Topper; RUN: -target-abi=lp64f | FileCheck -check-prefixes=CHECKIZFHMIN %s 14773b0aaaSQihan Cai; RUN: llc -mtriple=riscv32 -mattr=+zhinxmin -verify-machineinstrs < %s \ 15*1c874bbbSCraig Topper; RUN: -target-abi=ilp32 | FileCheck -check-prefixes=CHECKIZHINXMIN %s 16773b0aaaSQihan Cai; RUN: llc -mtriple=riscv64 -mattr=+zhinxmin -verify-machineinstrs < %s \ 17*1c874bbbSCraig Topper; RUN: -target-abi=lp64 | FileCheck -check-prefixes=CHECKIZHINXMIN %s 1839707c1aSCraig Topper 1939707c1aSCraig Topperdefine half @select_icmp_eq(i32 signext %a, i32 signext %b, half %c, half %d) { 2039707c1aSCraig Topper; CHECK-LABEL: select_icmp_eq: 2139707c1aSCraig Topper; CHECK: # %bb.0: 2239707c1aSCraig Topper; CHECK-NEXT: beq a0, a1, .LBB0_2 2339707c1aSCraig Topper; CHECK-NEXT: # %bb.1: 2439707c1aSCraig Topper; CHECK-NEXT: fmv.h fa0, fa1 2539707c1aSCraig Topper; CHECK-NEXT: .LBB0_2: 2639707c1aSCraig Topper; CHECK-NEXT: ret 277b50c183SMonk Chiang; 28773b0aaaSQihan Cai; CHECKIZHINX-LABEL: select_icmp_eq: 29773b0aaaSQihan Cai; CHECKIZHINX: # %bb.0: 30773b0aaaSQihan Cai; CHECKIZHINX-NEXT: beq a0, a1, .LBB0_2 31773b0aaaSQihan Cai; CHECKIZHINX-NEXT: # %bb.1: 32773b0aaaSQihan Cai; CHECKIZHINX-NEXT: mv a2, a3 33773b0aaaSQihan Cai; CHECKIZHINX-NEXT: .LBB0_2: 34773b0aaaSQihan Cai; CHECKIZHINX-NEXT: mv a0, a2 35773b0aaaSQihan Cai; CHECKIZHINX-NEXT: ret 36773b0aaaSQihan Cai; 377b50c183SMonk Chiang; CHECKIZFHMIN-LABEL: select_icmp_eq: 387b50c183SMonk Chiang; CHECKIZFHMIN: # %bb.0: 397b50c183SMonk Chiang; CHECKIZFHMIN-NEXT: beq a0, a1, .LBB0_2 407b50c183SMonk Chiang; CHECKIZFHMIN-NEXT: # %bb.1: 41*1c874bbbSCraig Topper; CHECKIZFHMIN-NEXT: fmv.s fa0, fa1 427b50c183SMonk Chiang; CHECKIZFHMIN-NEXT: .LBB0_2: 437b50c183SMonk Chiang; CHECKIZFHMIN-NEXT: ret 44773b0aaaSQihan Cai; 45773b0aaaSQihan Cai; CHECKIZHINXMIN-LABEL: select_icmp_eq: 46773b0aaaSQihan Cai; CHECKIZHINXMIN: # %bb.0: 47773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT: beq a0, a1, .LBB0_2 48773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT: # %bb.1: 49*1c874bbbSCraig Topper; CHECKIZHINXMIN-NEXT: mv a2, a3 50773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT: .LBB0_2: 51*1c874bbbSCraig Topper; CHECKIZHINXMIN-NEXT: mv a0, a2 52773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT: ret 5339707c1aSCraig Topper %1 = icmp eq i32 %a, %b 5439707c1aSCraig Topper %2 = select i1 %1, half %c, half %d 5539707c1aSCraig Topper ret half %2 5639707c1aSCraig Topper} 5739707c1aSCraig Topper 5839707c1aSCraig Topperdefine half @select_icmp_ne(i32 signext %a, i32 signext %b, half %c, half %d) { 5939707c1aSCraig Topper; CHECK-LABEL: select_icmp_ne: 6039707c1aSCraig Topper; CHECK: # %bb.0: 6139707c1aSCraig Topper; CHECK-NEXT: bne a0, a1, .LBB1_2 6239707c1aSCraig Topper; CHECK-NEXT: # %bb.1: 6339707c1aSCraig Topper; CHECK-NEXT: fmv.h fa0, fa1 6439707c1aSCraig Topper; CHECK-NEXT: .LBB1_2: 6539707c1aSCraig Topper; CHECK-NEXT: ret 667b50c183SMonk Chiang; 67773b0aaaSQihan Cai; CHECKIZHINX-LABEL: select_icmp_ne: 68773b0aaaSQihan Cai; CHECKIZHINX: # %bb.0: 69773b0aaaSQihan Cai; CHECKIZHINX-NEXT: bne a0, a1, .LBB1_2 70773b0aaaSQihan Cai; CHECKIZHINX-NEXT: # %bb.1: 71773b0aaaSQihan Cai; CHECKIZHINX-NEXT: mv a2, a3 72773b0aaaSQihan Cai; CHECKIZHINX-NEXT: .LBB1_2: 73773b0aaaSQihan Cai; CHECKIZHINX-NEXT: mv a0, a2 74773b0aaaSQihan Cai; CHECKIZHINX-NEXT: ret 75773b0aaaSQihan Cai; 767b50c183SMonk Chiang; CHECKIZFHMIN-LABEL: select_icmp_ne: 777b50c183SMonk Chiang; CHECKIZFHMIN: # %bb.0: 787b50c183SMonk Chiang; CHECKIZFHMIN-NEXT: bne a0, a1, .LBB1_2 797b50c183SMonk Chiang; CHECKIZFHMIN-NEXT: # %bb.1: 80*1c874bbbSCraig Topper; CHECKIZFHMIN-NEXT: fmv.s fa0, fa1 817b50c183SMonk Chiang; CHECKIZFHMIN-NEXT: .LBB1_2: 827b50c183SMonk Chiang; CHECKIZFHMIN-NEXT: ret 83773b0aaaSQihan Cai; 84773b0aaaSQihan Cai; CHECKIZHINXMIN-LABEL: select_icmp_ne: 85773b0aaaSQihan Cai; CHECKIZHINXMIN: # %bb.0: 86773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT: bne a0, a1, .LBB1_2 87773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT: # %bb.1: 88*1c874bbbSCraig Topper; CHECKIZHINXMIN-NEXT: mv a2, a3 89773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT: .LBB1_2: 90*1c874bbbSCraig Topper; CHECKIZHINXMIN-NEXT: mv a0, a2 91773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT: ret 9239707c1aSCraig Topper %1 = icmp ne i32 %a, %b 9339707c1aSCraig Topper %2 = select i1 %1, half %c, half %d 9439707c1aSCraig Topper ret half %2 9539707c1aSCraig Topper} 9639707c1aSCraig Topper 9739707c1aSCraig Topperdefine half @select_icmp_ugt(i32 signext %a, i32 signext %b, half %c, half %d) { 9839707c1aSCraig Topper; CHECK-LABEL: select_icmp_ugt: 9939707c1aSCraig Topper; CHECK: # %bb.0: 10039707c1aSCraig Topper; CHECK-NEXT: bltu a1, a0, .LBB2_2 10139707c1aSCraig Topper; CHECK-NEXT: # %bb.1: 10239707c1aSCraig Topper; CHECK-NEXT: fmv.h fa0, fa1 10339707c1aSCraig Topper; CHECK-NEXT: .LBB2_2: 10439707c1aSCraig Topper; CHECK-NEXT: ret 1057b50c183SMonk Chiang; 106773b0aaaSQihan Cai; CHECKIZHINX-LABEL: select_icmp_ugt: 107773b0aaaSQihan Cai; CHECKIZHINX: # %bb.0: 108773b0aaaSQihan Cai; CHECKIZHINX-NEXT: bltu a1, a0, .LBB2_2 109773b0aaaSQihan Cai; CHECKIZHINX-NEXT: # %bb.1: 110773b0aaaSQihan Cai; CHECKIZHINX-NEXT: mv a2, a3 111773b0aaaSQihan Cai; CHECKIZHINX-NEXT: .LBB2_2: 112773b0aaaSQihan Cai; CHECKIZHINX-NEXT: mv a0, a2 113773b0aaaSQihan Cai; CHECKIZHINX-NEXT: ret 114773b0aaaSQihan Cai; 1157b50c183SMonk Chiang; CHECKIZFHMIN-LABEL: select_icmp_ugt: 1167b50c183SMonk Chiang; CHECKIZFHMIN: # %bb.0: 1177b50c183SMonk Chiang; CHECKIZFHMIN-NEXT: bltu a1, a0, .LBB2_2 1187b50c183SMonk Chiang; CHECKIZFHMIN-NEXT: # %bb.1: 119*1c874bbbSCraig Topper; CHECKIZFHMIN-NEXT: fmv.s fa0, fa1 1207b50c183SMonk Chiang; CHECKIZFHMIN-NEXT: .LBB2_2: 1217b50c183SMonk Chiang; CHECKIZFHMIN-NEXT: ret 122773b0aaaSQihan Cai; 123773b0aaaSQihan Cai; CHECKIZHINXMIN-LABEL: select_icmp_ugt: 124773b0aaaSQihan Cai; CHECKIZHINXMIN: # %bb.0: 125773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT: bltu a1, a0, .LBB2_2 126773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT: # %bb.1: 127*1c874bbbSCraig Topper; CHECKIZHINXMIN-NEXT: mv a2, a3 128773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT: .LBB2_2: 129*1c874bbbSCraig Topper; CHECKIZHINXMIN-NEXT: mv a0, a2 130773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT: ret 13139707c1aSCraig Topper %1 = icmp ugt i32 %a, %b 13239707c1aSCraig Topper %2 = select i1 %1, half %c, half %d 13339707c1aSCraig Topper ret half %2 13439707c1aSCraig Topper} 13539707c1aSCraig Topper 13639707c1aSCraig Topperdefine half @select_icmp_uge(i32 signext %a, i32 signext %b, half %c, half %d) { 13739707c1aSCraig Topper; CHECK-LABEL: select_icmp_uge: 13839707c1aSCraig Topper; CHECK: # %bb.0: 13939707c1aSCraig Topper; CHECK-NEXT: bgeu a0, a1, .LBB3_2 14039707c1aSCraig Topper; CHECK-NEXT: # %bb.1: 14139707c1aSCraig Topper; CHECK-NEXT: fmv.h fa0, fa1 14239707c1aSCraig Topper; CHECK-NEXT: .LBB3_2: 14339707c1aSCraig Topper; CHECK-NEXT: ret 1447b50c183SMonk Chiang; 145773b0aaaSQihan Cai; CHECKIZHINX-LABEL: select_icmp_uge: 146773b0aaaSQihan Cai; CHECKIZHINX: # %bb.0: 147773b0aaaSQihan Cai; CHECKIZHINX-NEXT: bgeu a0, a1, .LBB3_2 148773b0aaaSQihan Cai; CHECKIZHINX-NEXT: # %bb.1: 149773b0aaaSQihan Cai; CHECKIZHINX-NEXT: mv a2, a3 150773b0aaaSQihan Cai; CHECKIZHINX-NEXT: .LBB3_2: 151773b0aaaSQihan Cai; CHECKIZHINX-NEXT: mv a0, a2 152773b0aaaSQihan Cai; CHECKIZHINX-NEXT: ret 153773b0aaaSQihan Cai; 1547b50c183SMonk Chiang; CHECKIZFHMIN-LABEL: select_icmp_uge: 1557b50c183SMonk Chiang; CHECKIZFHMIN: # %bb.0: 1567b50c183SMonk Chiang; CHECKIZFHMIN-NEXT: bgeu a0, a1, .LBB3_2 1577b50c183SMonk Chiang; CHECKIZFHMIN-NEXT: # %bb.1: 158*1c874bbbSCraig Topper; CHECKIZFHMIN-NEXT: fmv.s fa0, fa1 1597b50c183SMonk Chiang; CHECKIZFHMIN-NEXT: .LBB3_2: 1607b50c183SMonk Chiang; CHECKIZFHMIN-NEXT: ret 161773b0aaaSQihan Cai; 162773b0aaaSQihan Cai; CHECKIZHINXMIN-LABEL: select_icmp_uge: 163773b0aaaSQihan Cai; CHECKIZHINXMIN: # %bb.0: 164773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT: bgeu a0, a1, .LBB3_2 165773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT: # %bb.1: 166*1c874bbbSCraig Topper; CHECKIZHINXMIN-NEXT: mv a2, a3 167773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT: .LBB3_2: 168*1c874bbbSCraig Topper; CHECKIZHINXMIN-NEXT: mv a0, a2 169773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT: ret 17039707c1aSCraig Topper %1 = icmp uge i32 %a, %b 17139707c1aSCraig Topper %2 = select i1 %1, half %c, half %d 17239707c1aSCraig Topper ret half %2 17339707c1aSCraig Topper} 17439707c1aSCraig Topper 17539707c1aSCraig Topperdefine half @select_icmp_ult(i32 signext %a, i32 signext %b, half %c, half %d) { 17639707c1aSCraig Topper; CHECK-LABEL: select_icmp_ult: 17739707c1aSCraig Topper; CHECK: # %bb.0: 17839707c1aSCraig Topper; CHECK-NEXT: bltu a0, a1, .LBB4_2 17939707c1aSCraig Topper; CHECK-NEXT: # %bb.1: 18039707c1aSCraig Topper; CHECK-NEXT: fmv.h fa0, fa1 18139707c1aSCraig Topper; CHECK-NEXT: .LBB4_2: 18239707c1aSCraig Topper; CHECK-NEXT: ret 1837b50c183SMonk Chiang; 184773b0aaaSQihan Cai; CHECKIZHINX-LABEL: select_icmp_ult: 185773b0aaaSQihan Cai; CHECKIZHINX: # %bb.0: 186773b0aaaSQihan Cai; CHECKIZHINX-NEXT: bltu a0, a1, .LBB4_2 187773b0aaaSQihan Cai; CHECKIZHINX-NEXT: # %bb.1: 188773b0aaaSQihan Cai; CHECKIZHINX-NEXT: mv a2, a3 189773b0aaaSQihan Cai; CHECKIZHINX-NEXT: .LBB4_2: 190773b0aaaSQihan Cai; CHECKIZHINX-NEXT: mv a0, a2 191773b0aaaSQihan Cai; CHECKIZHINX-NEXT: ret 192773b0aaaSQihan Cai; 1937b50c183SMonk Chiang; CHECKIZFHMIN-LABEL: select_icmp_ult: 1947b50c183SMonk Chiang; CHECKIZFHMIN: # %bb.0: 1957b50c183SMonk Chiang; CHECKIZFHMIN-NEXT: bltu a0, a1, .LBB4_2 1967b50c183SMonk Chiang; CHECKIZFHMIN-NEXT: # %bb.1: 197*1c874bbbSCraig Topper; CHECKIZFHMIN-NEXT: fmv.s fa0, fa1 1987b50c183SMonk Chiang; CHECKIZFHMIN-NEXT: .LBB4_2: 1997b50c183SMonk Chiang; CHECKIZFHMIN-NEXT: ret 200773b0aaaSQihan Cai; 201773b0aaaSQihan Cai; CHECKIZHINXMIN-LABEL: select_icmp_ult: 202773b0aaaSQihan Cai; CHECKIZHINXMIN: # %bb.0: 203773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT: bltu a0, a1, .LBB4_2 204773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT: # %bb.1: 205*1c874bbbSCraig Topper; CHECKIZHINXMIN-NEXT: mv a2, a3 206773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT: .LBB4_2: 207*1c874bbbSCraig Topper; CHECKIZHINXMIN-NEXT: mv a0, a2 208773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT: ret 20939707c1aSCraig Topper %1 = icmp ult i32 %a, %b 21039707c1aSCraig Topper %2 = select i1 %1, half %c, half %d 21139707c1aSCraig Topper ret half %2 21239707c1aSCraig Topper} 21339707c1aSCraig Topper 21439707c1aSCraig Topperdefine half @select_icmp_ule(i32 signext %a, i32 signext %b, half %c, half %d) { 21539707c1aSCraig Topper; CHECK-LABEL: select_icmp_ule: 21639707c1aSCraig Topper; CHECK: # %bb.0: 21739707c1aSCraig Topper; CHECK-NEXT: bgeu a1, a0, .LBB5_2 21839707c1aSCraig Topper; CHECK-NEXT: # %bb.1: 21939707c1aSCraig Topper; CHECK-NEXT: fmv.h fa0, fa1 22039707c1aSCraig Topper; CHECK-NEXT: .LBB5_2: 22139707c1aSCraig Topper; CHECK-NEXT: ret 2227b50c183SMonk Chiang; 223773b0aaaSQihan Cai; CHECKIZHINX-LABEL: select_icmp_ule: 224773b0aaaSQihan Cai; CHECKIZHINX: # %bb.0: 225773b0aaaSQihan Cai; CHECKIZHINX-NEXT: bgeu a1, a0, .LBB5_2 226773b0aaaSQihan Cai; CHECKIZHINX-NEXT: # %bb.1: 227773b0aaaSQihan Cai; CHECKIZHINX-NEXT: mv a2, a3 228773b0aaaSQihan Cai; CHECKIZHINX-NEXT: .LBB5_2: 229773b0aaaSQihan Cai; CHECKIZHINX-NEXT: mv a0, a2 230773b0aaaSQihan Cai; CHECKIZHINX-NEXT: ret 231773b0aaaSQihan Cai; 2327b50c183SMonk Chiang; CHECKIZFHMIN-LABEL: select_icmp_ule: 2337b50c183SMonk Chiang; CHECKIZFHMIN: # %bb.0: 2347b50c183SMonk Chiang; CHECKIZFHMIN-NEXT: bgeu a1, a0, .LBB5_2 2357b50c183SMonk Chiang; CHECKIZFHMIN-NEXT: # %bb.1: 236*1c874bbbSCraig Topper; CHECKIZFHMIN-NEXT: fmv.s fa0, fa1 2377b50c183SMonk Chiang; CHECKIZFHMIN-NEXT: .LBB5_2: 2387b50c183SMonk Chiang; CHECKIZFHMIN-NEXT: ret 239773b0aaaSQihan Cai; 240773b0aaaSQihan Cai; CHECKIZHINXMIN-LABEL: select_icmp_ule: 241773b0aaaSQihan Cai; CHECKIZHINXMIN: # %bb.0: 242773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT: bgeu a1, a0, .LBB5_2 243773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT: # %bb.1: 244*1c874bbbSCraig Topper; CHECKIZHINXMIN-NEXT: mv a2, a3 245773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT: .LBB5_2: 246*1c874bbbSCraig Topper; CHECKIZHINXMIN-NEXT: mv a0, a2 247773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT: ret 24839707c1aSCraig Topper %1 = icmp ule i32 %a, %b 24939707c1aSCraig Topper %2 = select i1 %1, half %c, half %d 25039707c1aSCraig Topper ret half %2 25139707c1aSCraig Topper} 25239707c1aSCraig Topper 25339707c1aSCraig Topperdefine half @select_icmp_sgt(i32 signext %a, i32 signext %b, half %c, half %d) { 25439707c1aSCraig Topper; CHECK-LABEL: select_icmp_sgt: 25539707c1aSCraig Topper; CHECK: # %bb.0: 25639707c1aSCraig Topper; CHECK-NEXT: blt a1, a0, .LBB6_2 25739707c1aSCraig Topper; CHECK-NEXT: # %bb.1: 25839707c1aSCraig Topper; CHECK-NEXT: fmv.h fa0, fa1 25939707c1aSCraig Topper; CHECK-NEXT: .LBB6_2: 26039707c1aSCraig Topper; CHECK-NEXT: ret 2617b50c183SMonk Chiang; 262773b0aaaSQihan Cai; CHECKIZHINX-LABEL: select_icmp_sgt: 263773b0aaaSQihan Cai; CHECKIZHINX: # %bb.0: 264773b0aaaSQihan Cai; CHECKIZHINX-NEXT: blt a1, a0, .LBB6_2 265773b0aaaSQihan Cai; CHECKIZHINX-NEXT: # %bb.1: 266773b0aaaSQihan Cai; CHECKIZHINX-NEXT: mv a2, a3 267773b0aaaSQihan Cai; CHECKIZHINX-NEXT: .LBB6_2: 268773b0aaaSQihan Cai; CHECKIZHINX-NEXT: mv a0, a2 269773b0aaaSQihan Cai; CHECKIZHINX-NEXT: ret 270773b0aaaSQihan Cai; 2717b50c183SMonk Chiang; CHECKIZFHMIN-LABEL: select_icmp_sgt: 2727b50c183SMonk Chiang; CHECKIZFHMIN: # %bb.0: 2737b50c183SMonk Chiang; CHECKIZFHMIN-NEXT: blt a1, a0, .LBB6_2 2747b50c183SMonk Chiang; CHECKIZFHMIN-NEXT: # %bb.1: 275*1c874bbbSCraig Topper; CHECKIZFHMIN-NEXT: fmv.s fa0, fa1 2767b50c183SMonk Chiang; CHECKIZFHMIN-NEXT: .LBB6_2: 2777b50c183SMonk Chiang; CHECKIZFHMIN-NEXT: ret 278773b0aaaSQihan Cai; 279773b0aaaSQihan Cai; CHECKIZHINXMIN-LABEL: select_icmp_sgt: 280773b0aaaSQihan Cai; CHECKIZHINXMIN: # %bb.0: 281773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT: blt a1, a0, .LBB6_2 282773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT: # %bb.1: 283*1c874bbbSCraig Topper; CHECKIZHINXMIN-NEXT: mv a2, a3 284773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT: .LBB6_2: 285*1c874bbbSCraig Topper; CHECKIZHINXMIN-NEXT: mv a0, a2 286773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT: ret 28739707c1aSCraig Topper %1 = icmp sgt i32 %a, %b 28839707c1aSCraig Topper %2 = select i1 %1, half %c, half %d 28939707c1aSCraig Topper ret half %2 29039707c1aSCraig Topper} 29139707c1aSCraig Topper 29239707c1aSCraig Topperdefine half @select_icmp_sge(i32 signext %a, i32 signext %b, half %c, half %d) { 29339707c1aSCraig Topper; CHECK-LABEL: select_icmp_sge: 29439707c1aSCraig Topper; CHECK: # %bb.0: 29539707c1aSCraig Topper; CHECK-NEXT: bge a0, a1, .LBB7_2 29639707c1aSCraig Topper; CHECK-NEXT: # %bb.1: 29739707c1aSCraig Topper; CHECK-NEXT: fmv.h fa0, fa1 29839707c1aSCraig Topper; CHECK-NEXT: .LBB7_2: 29939707c1aSCraig Topper; CHECK-NEXT: ret 3007b50c183SMonk Chiang; 301773b0aaaSQihan Cai; CHECKIZHINX-LABEL: select_icmp_sge: 302773b0aaaSQihan Cai; CHECKIZHINX: # %bb.0: 303773b0aaaSQihan Cai; CHECKIZHINX-NEXT: bge a0, a1, .LBB7_2 304773b0aaaSQihan Cai; CHECKIZHINX-NEXT: # %bb.1: 305773b0aaaSQihan Cai; CHECKIZHINX-NEXT: mv a2, a3 306773b0aaaSQihan Cai; CHECKIZHINX-NEXT: .LBB7_2: 307773b0aaaSQihan Cai; CHECKIZHINX-NEXT: mv a0, a2 308773b0aaaSQihan Cai; CHECKIZHINX-NEXT: ret 309773b0aaaSQihan Cai; 3107b50c183SMonk Chiang; CHECKIZFHMIN-LABEL: select_icmp_sge: 3117b50c183SMonk Chiang; CHECKIZFHMIN: # %bb.0: 3127b50c183SMonk Chiang; CHECKIZFHMIN-NEXT: bge a0, a1, .LBB7_2 3137b50c183SMonk Chiang; CHECKIZFHMIN-NEXT: # %bb.1: 314*1c874bbbSCraig Topper; CHECKIZFHMIN-NEXT: fmv.s fa0, fa1 3157b50c183SMonk Chiang; CHECKIZFHMIN-NEXT: .LBB7_2: 3167b50c183SMonk Chiang; CHECKIZFHMIN-NEXT: ret 317773b0aaaSQihan Cai; 318773b0aaaSQihan Cai; CHECKIZHINXMIN-LABEL: select_icmp_sge: 319773b0aaaSQihan Cai; CHECKIZHINXMIN: # %bb.0: 320773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT: bge a0, a1, .LBB7_2 321773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT: # %bb.1: 322*1c874bbbSCraig Topper; CHECKIZHINXMIN-NEXT: mv a2, a3 323773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT: .LBB7_2: 324*1c874bbbSCraig Topper; CHECKIZHINXMIN-NEXT: mv a0, a2 325773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT: ret 32639707c1aSCraig Topper %1 = icmp sge i32 %a, %b 32739707c1aSCraig Topper %2 = select i1 %1, half %c, half %d 32839707c1aSCraig Topper ret half %2 32939707c1aSCraig Topper} 33039707c1aSCraig Topper 33139707c1aSCraig Topperdefine half @select_icmp_slt(i32 signext %a, i32 signext %b, half %c, half %d) { 33239707c1aSCraig Topper; CHECK-LABEL: select_icmp_slt: 33339707c1aSCraig Topper; CHECK: # %bb.0: 33439707c1aSCraig Topper; CHECK-NEXT: blt a0, a1, .LBB8_2 33539707c1aSCraig Topper; CHECK-NEXT: # %bb.1: 33639707c1aSCraig Topper; CHECK-NEXT: fmv.h fa0, fa1 33739707c1aSCraig Topper; CHECK-NEXT: .LBB8_2: 33839707c1aSCraig Topper; CHECK-NEXT: ret 3397b50c183SMonk Chiang; 340773b0aaaSQihan Cai; CHECKIZHINX-LABEL: select_icmp_slt: 341773b0aaaSQihan Cai; CHECKIZHINX: # %bb.0: 342773b0aaaSQihan Cai; CHECKIZHINX-NEXT: blt a0, a1, .LBB8_2 343773b0aaaSQihan Cai; CHECKIZHINX-NEXT: # %bb.1: 344773b0aaaSQihan Cai; CHECKIZHINX-NEXT: mv a2, a3 345773b0aaaSQihan Cai; CHECKIZHINX-NEXT: .LBB8_2: 346773b0aaaSQihan Cai; CHECKIZHINX-NEXT: mv a0, a2 347773b0aaaSQihan Cai; CHECKIZHINX-NEXT: ret 348773b0aaaSQihan Cai; 3497b50c183SMonk Chiang; CHECKIZFHMIN-LABEL: select_icmp_slt: 3507b50c183SMonk Chiang; CHECKIZFHMIN: # %bb.0: 3517b50c183SMonk Chiang; CHECKIZFHMIN-NEXT: blt a0, a1, .LBB8_2 3527b50c183SMonk Chiang; CHECKIZFHMIN-NEXT: # %bb.1: 353*1c874bbbSCraig Topper; CHECKIZFHMIN-NEXT: fmv.s fa0, fa1 3547b50c183SMonk Chiang; CHECKIZFHMIN-NEXT: .LBB8_2: 3557b50c183SMonk Chiang; CHECKIZFHMIN-NEXT: ret 356773b0aaaSQihan Cai; 357773b0aaaSQihan Cai; CHECKIZHINXMIN-LABEL: select_icmp_slt: 358773b0aaaSQihan Cai; CHECKIZHINXMIN: # %bb.0: 359773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT: blt a0, a1, .LBB8_2 360773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT: # %bb.1: 361*1c874bbbSCraig Topper; CHECKIZHINXMIN-NEXT: mv a2, a3 362773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT: .LBB8_2: 363*1c874bbbSCraig Topper; CHECKIZHINXMIN-NEXT: mv a0, a2 364773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT: ret 36539707c1aSCraig Topper %1 = icmp slt i32 %a, %b 36639707c1aSCraig Topper %2 = select i1 %1, half %c, half %d 36739707c1aSCraig Topper ret half %2 36839707c1aSCraig Topper} 36939707c1aSCraig Topper 37039707c1aSCraig Topperdefine half @select_icmp_sle(i32 signext %a, i32 signext %b, half %c, half %d) { 37139707c1aSCraig Topper; CHECK-LABEL: select_icmp_sle: 37239707c1aSCraig Topper; CHECK: # %bb.0: 37339707c1aSCraig Topper; CHECK-NEXT: bge a1, a0, .LBB9_2 37439707c1aSCraig Topper; CHECK-NEXT: # %bb.1: 37539707c1aSCraig Topper; CHECK-NEXT: fmv.h fa0, fa1 37639707c1aSCraig Topper; CHECK-NEXT: .LBB9_2: 37739707c1aSCraig Topper; CHECK-NEXT: ret 3787b50c183SMonk Chiang; 379773b0aaaSQihan Cai; CHECKIZHINX-LABEL: select_icmp_sle: 380773b0aaaSQihan Cai; CHECKIZHINX: # %bb.0: 381773b0aaaSQihan Cai; CHECKIZHINX-NEXT: bge a1, a0, .LBB9_2 382773b0aaaSQihan Cai; CHECKIZHINX-NEXT: # %bb.1: 383773b0aaaSQihan Cai; CHECKIZHINX-NEXT: mv a2, a3 384773b0aaaSQihan Cai; CHECKIZHINX-NEXT: .LBB9_2: 385773b0aaaSQihan Cai; CHECKIZHINX-NEXT: mv a0, a2 386773b0aaaSQihan Cai; CHECKIZHINX-NEXT: ret 387773b0aaaSQihan Cai; 3887b50c183SMonk Chiang; CHECKIZFHMIN-LABEL: select_icmp_sle: 3897b50c183SMonk Chiang; CHECKIZFHMIN: # %bb.0: 3907b50c183SMonk Chiang; CHECKIZFHMIN-NEXT: bge a1, a0, .LBB9_2 3917b50c183SMonk Chiang; CHECKIZFHMIN-NEXT: # %bb.1: 392*1c874bbbSCraig Topper; CHECKIZFHMIN-NEXT: fmv.s fa0, fa1 3937b50c183SMonk Chiang; CHECKIZFHMIN-NEXT: .LBB9_2: 3947b50c183SMonk Chiang; CHECKIZFHMIN-NEXT: ret 395773b0aaaSQihan Cai; 396773b0aaaSQihan Cai; CHECKIZHINXMIN-LABEL: select_icmp_sle: 397773b0aaaSQihan Cai; CHECKIZHINXMIN: # %bb.0: 398773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT: bge a1, a0, .LBB9_2 399773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT: # %bb.1: 400*1c874bbbSCraig Topper; CHECKIZHINXMIN-NEXT: mv a2, a3 401773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT: .LBB9_2: 402*1c874bbbSCraig Topper; CHECKIZHINXMIN-NEXT: mv a0, a2 403773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT: ret 40439707c1aSCraig Topper %1 = icmp sle i32 %a, %b 40539707c1aSCraig Topper %2 = select i1 %1, half %c, half %d 40639707c1aSCraig Topper ret half %2 40739707c1aSCraig Topper} 408548fa1d3SLiaoChunyu 409548fa1d3SLiaoChunyudefine half @select_icmp_slt_one(i32 signext %a) { 410548fa1d3SLiaoChunyu; CHECK-LABEL: select_icmp_slt_one: 411548fa1d3SLiaoChunyu; CHECK: # %bb.0: 412548fa1d3SLiaoChunyu; CHECK-NEXT: slti a0, a0, 1 413548fa1d3SLiaoChunyu; CHECK-NEXT: fcvt.h.w fa0, a0 414548fa1d3SLiaoChunyu; CHECK-NEXT: ret 415548fa1d3SLiaoChunyu; 416548fa1d3SLiaoChunyu; CHECKIZHINX-LABEL: select_icmp_slt_one: 417548fa1d3SLiaoChunyu; CHECKIZHINX: # %bb.0: 418548fa1d3SLiaoChunyu; CHECKIZHINX-NEXT: slti a0, a0, 1 419548fa1d3SLiaoChunyu; CHECKIZHINX-NEXT: fcvt.h.w a0, a0 420548fa1d3SLiaoChunyu; CHECKIZHINX-NEXT: ret 421548fa1d3SLiaoChunyu; 422548fa1d3SLiaoChunyu; CHECKIZFHMIN-LABEL: select_icmp_slt_one: 423548fa1d3SLiaoChunyu; CHECKIZFHMIN: # %bb.0: 424548fa1d3SLiaoChunyu; CHECKIZFHMIN-NEXT: slti a0, a0, 1 425548fa1d3SLiaoChunyu; CHECKIZFHMIN-NEXT: fcvt.s.w fa5, a0 426548fa1d3SLiaoChunyu; CHECKIZFHMIN-NEXT: fcvt.h.s fa0, fa5 427548fa1d3SLiaoChunyu; CHECKIZFHMIN-NEXT: ret 428548fa1d3SLiaoChunyu; 429548fa1d3SLiaoChunyu; CHECKIZHINXMIN-LABEL: select_icmp_slt_one: 430548fa1d3SLiaoChunyu; CHECKIZHINXMIN: # %bb.0: 431548fa1d3SLiaoChunyu; CHECKIZHINXMIN-NEXT: slti a0, a0, 1 432548fa1d3SLiaoChunyu; CHECKIZHINXMIN-NEXT: fcvt.s.w a0, a0 433548fa1d3SLiaoChunyu; CHECKIZHINXMIN-NEXT: fcvt.h.s a0, a0 434548fa1d3SLiaoChunyu; CHECKIZHINXMIN-NEXT: ret 435548fa1d3SLiaoChunyu %1 = icmp slt i32 %a, 1 436548fa1d3SLiaoChunyu %2 = select i1 %1, half 1.000000e+00, half 0.000000e+00 437548fa1d3SLiaoChunyu ret half %2 438548fa1d3SLiaoChunyu} 439548fa1d3SLiaoChunyu 440548fa1d3SLiaoChunyudefine half @select_icmp_sgt_zero(i32 signext %a) { 441548fa1d3SLiaoChunyu; CHECK-LABEL: select_icmp_sgt_zero: 442548fa1d3SLiaoChunyu; CHECK: # %bb.0: 44312fee611SLiaoChunyu; CHECK-NEXT: slti a0, a0, 1 444548fa1d3SLiaoChunyu; CHECK-NEXT: fcvt.h.w fa0, a0 445548fa1d3SLiaoChunyu; CHECK-NEXT: ret 446548fa1d3SLiaoChunyu; 447548fa1d3SLiaoChunyu; CHECKIZHINX-LABEL: select_icmp_sgt_zero: 448548fa1d3SLiaoChunyu; CHECKIZHINX: # %bb.0: 44912fee611SLiaoChunyu; CHECKIZHINX-NEXT: slti a0, a0, 1 450548fa1d3SLiaoChunyu; CHECKIZHINX-NEXT: fcvt.h.w a0, a0 451548fa1d3SLiaoChunyu; CHECKIZHINX-NEXT: ret 452548fa1d3SLiaoChunyu; 453548fa1d3SLiaoChunyu; CHECKIZFHMIN-LABEL: select_icmp_sgt_zero: 454548fa1d3SLiaoChunyu; CHECKIZFHMIN: # %bb.0: 45512fee611SLiaoChunyu; CHECKIZFHMIN-NEXT: slti a0, a0, 1 456548fa1d3SLiaoChunyu; CHECKIZFHMIN-NEXT: fcvt.s.w fa5, a0 457548fa1d3SLiaoChunyu; CHECKIZFHMIN-NEXT: fcvt.h.s fa0, fa5 458548fa1d3SLiaoChunyu; CHECKIZFHMIN-NEXT: ret 459548fa1d3SLiaoChunyu; 460548fa1d3SLiaoChunyu; CHECKIZHINXMIN-LABEL: select_icmp_sgt_zero: 461548fa1d3SLiaoChunyu; CHECKIZHINXMIN: # %bb.0: 46212fee611SLiaoChunyu; CHECKIZHINXMIN-NEXT: slti a0, a0, 1 463548fa1d3SLiaoChunyu; CHECKIZHINXMIN-NEXT: fcvt.s.w a0, a0 464548fa1d3SLiaoChunyu; CHECKIZHINXMIN-NEXT: fcvt.h.s a0, a0 465548fa1d3SLiaoChunyu; CHECKIZHINXMIN-NEXT: ret 466548fa1d3SLiaoChunyu %1 = icmp sgt i32 %a, 0 467548fa1d3SLiaoChunyu %2 = select i1 %1, half 0.000000e+00, half 1.000000e+00 468548fa1d3SLiaoChunyu ret half %2 469548fa1d3SLiaoChunyu} 470