@@ -314,3 +314,33 @@ define half @fma_neg_addend_multiplicand(half %x) nounwind {
314314 %a = call half @llvm.fma.f32 (half %x , half -0 .5 , half -0 .25 )
315315 ret half %a
316316}
317+
318+ define half @select_loadfpimm (half %x ) nounwind {
319+ ; CHECK-LABEL: select_loadfpimm:
320+ ; CHECK: # %bb.0: # %entry
321+ ; CHECK-NEXT: fmv.h.x fa5, zero
322+ ; CHECK-NEXT: fle.h a0, fa5, fa0
323+ ; CHECK-NEXT: fli.h fa0, 0.5
324+ ; CHECK-NEXT: bnez a0, .LBB16_2
325+ ; CHECK-NEXT: # %bb.1:
326+ ; CHECK-NEXT: fneg.h fa0, fa0
327+ ; CHECK-NEXT: .LBB16_2: # %entry
328+ ; CHECK-NEXT: ret
329+ ;
330+ ; ZFHMIN-LABEL: select_loadfpimm:
331+ ; ZFHMIN: # %bb.0: # %entry
332+ ; ZFHMIN-NEXT: fcvt.s.h fa5, fa0
333+ ; ZFHMIN-NEXT: fmv.w.x fa4, zero
334+ ; ZFHMIN-NEXT: fle.s a0, fa4, fa5
335+ ; ZFHMIN-NEXT: xori a0, a0, 1
336+ ; ZFHMIN-NEXT: slli a0, a0, 1
337+ ; ZFHMIN-NEXT: lui a1, %hi(.LCPI16_0)
338+ ; ZFHMIN-NEXT: addi a1, a1, %lo(.LCPI16_0)
339+ ; ZFHMIN-NEXT: add a0, a1, a0
340+ ; ZFHMIN-NEXT: flh fa0, 0(a0)
341+ ; ZFHMIN-NEXT: ret
342+ entry:
343+ %cmp = fcmp ult half %x , 0 .000000e+00
344+ %sel = select i1 %cmp , half -5.000000e-01 , half 5.000000e-01
345+ ret half %sel
346+ }
0 commit comments