|
78 | 78 | %i19 = phi float [ %i12, %bb11 ], [ 0.000000e+00, %bb15 ]
|
79 | 79 | ret void
|
80 | 80 | }
|
| 81 | + |
| 82 | +define float @test2(float %arg, float %arg1) { |
| 83 | + ; CHECK-LABEL: name: test2 |
| 84 | + ; CHECK: bb.0.bb: |
| 85 | + ; CHECK-NEXT: liveins: $vgpr0, $vgpr1 |
| 86 | + ; CHECK-NEXT: {{ $}} |
| 87 | + ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr1 |
| 88 | + ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0 |
| 89 | + ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 -1082130432, implicit $exec |
| 90 | + ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]]:sgpr_32 = S_MOV_B32 1120534528 |
| 91 | + ; CHECK-NEXT: [[V_FMAC_F32_e64_:%[0-9]+]]:vgpr_32 = nsz contract reassoc nofpexcept V_FMAC_F32_e64 0, [[COPY]], 0, killed [[S_MOV_B32_]], 0, [[V_MOV_B32_e32_]], 0, 0, implicit $mode, implicit $exec |
| 92 | + ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]]:sgpr_32 = S_MOV_B32 0 |
| 93 | + ; CHECK-NEXT: [[V_FMAC_F32_e64_1:%[0-9]+]]:vgpr_32 = nsz contract reassoc nofpexcept V_FMAC_F32_e64 0, [[COPY1]], 0, killed [[S_MOV_B32_1]], 0, [[V_FMAC_F32_e64_]], 0, 0, implicit $mode, implicit $exec |
| 94 | + ; CHECK-NEXT: [[V_ADD_F32_e64_:%[0-9]+]]:vgpr_32 = nsz contract reassoc nofpexcept V_ADD_F32_e64 0, [[V_FMAC_F32_e64_1]], 0, [[V_MOV_B32_e32_]], 0, 0, implicit $mode, implicit $exec |
| 95 | + ; CHECK-NEXT: [[V_RCP_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_RCP_F32_e64 0, [[V_FMAC_F32_e64_1]], 0, 0, implicit $mode, implicit $exec |
| 96 | + ; CHECK-NEXT: [[V_RCP_F32_e64_1:%[0-9]+]]:vgpr_32 = nofpexcept V_RCP_F32_e64 0, killed [[V_ADD_F32_e64_]], 0, 0, implicit $mode, implicit $exec |
| 97 | + ; CHECK-NEXT: [[V_MUL_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_MUL_F32_e64 0, [[V_RCP_F32_e64_1]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec |
| 98 | + ; CHECK-NEXT: [[V_MAX_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_MAX_F32_e64 0, killed [[V_MUL_F32_e64_]], 0, [[V_RCP_F32_e64_1]], 0, 0, implicit $mode, implicit $exec |
| 99 | + ; CHECK-NEXT: [[V_ADD_F32_e64_1:%[0-9]+]]:vgpr_32 = nofpexcept V_ADD_F32_e64 0, killed [[V_MAX_F32_e64_]], 0, killed [[V_RCP_F32_e64_]], 0, 0, implicit $mode, implicit $exec |
| 100 | + ; CHECK-NEXT: $vgpr0 = COPY [[V_ADD_F32_e64_1]] |
| 101 | + ; CHECK-NEXT: SI_RETURN implicit $vgpr0 |
| 102 | +bb: |
| 103 | + %i = fmul contract float %arg1, 1.000000e+02 |
| 104 | + %i2 = fmul contract float %arg, 0.000000e+00 |
| 105 | + %i3 = fadd reassoc nsz contract float %i, %arg1 |
| 106 | + %i4 = fadd nsz contract float %i3, %i2 |
| 107 | + %i5 = fsub reassoc nsz contract float 1.000000e+00, %i4 |
| 108 | + %i6 = fdiv afn float 1.000000e+00, %i5 |
| 109 | + %i7 = fneg float %arg |
| 110 | + %i9 = fmul float %i6, %i7 |
| 111 | + %i10 = fmul float %i6, -1.000000e+00 |
| 112 | + %i13 = call float @llvm.maxnum.f32(float %i9, float %i10) |
| 113 | + %ret = fadd float %i10, %i13 |
| 114 | + ret float %ret |
| 115 | +} |
| 116 | + |
| 117 | +declare float @llvm.maxnum.f32(float, float) |
0 commit comments