; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx900 < %s | FileCheck -enable-var-scope -check-prefixes=GFX9,GFX9-SDAG %s
; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx900 < %s | FileCheck -enable-var-scope -check-prefixes=GFX9,GFX9-GISEL %s
; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1200 -mattr=+real-true16 < %s | FileCheck -enable-var-scope -check-prefixes=GFX12,GFX12-SDAG,GFX12-SDAG-TRUE16 %s
; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1200 -mattr=-real-true16 < %s | FileCheck -enable-var-scope -check-prefixes=GFX12,GFX12-SDAG,GFX12-SDAG-FAKE16 %s
; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx1200 -mattr=+real-true16 < %s | FileCheck -enable-var-scope -check-prefixes=GFX12,GFX12-GISEL,GFX12-GISEL-TRUE16 %s
; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx1200 -mattr=-real-true16 < %s | FileCheck -enable-var-scope -check-prefixes=GFX12,GFX12-GISEL,GFX12-GISEL-FAKE16 %s

define amdgpu_ps float @test_fminimum_f32_vv(float %a, float %b) {
; GFX9-LABEL: test_fminimum_f32_vv:
; GFX9:       ; %bb.0:
; GFX9-NEXT:    v_min_f32_e32 v2, v0, v1
; GFX9-NEXT:    v_mov_b32_e32 v3, 0x7fc00000
; GFX9-NEXT:    v_cmp_o_f32_e32 vcc, v0, v1
; GFX9-NEXT:    v_cndmask_b32_e32 v0, v3, v2, vcc
; GFX9-NEXT:    ; return to shader part epilog
;
; GFX12-LABEL: test_fminimum_f32_vv:
; GFX12:       ; %bb.0:
; GFX12-NEXT:    v_minimum_f32 v0, v0, v1
; GFX12-NEXT:    ; return to shader part epilog
  %val = call float @llvm.minimum.f32(float %a, float %b)
  ret float %val
}

define amdgpu_ps float @test_fminimum_f32_ss(float inreg %a, float inreg %b) {
; GFX9-LABEL: test_fminimum_f32_ss:
; GFX9:       ; %bb.0:
; GFX9-NEXT:    v_mov_b32_e32 v0, s1
; GFX9-NEXT:    v_min_f32_e32 v1, s0, v0
; GFX9-NEXT:    v_mov_b32_e32 v2, 0x7fc00000
; GFX9-NEXT:    v_cmp_o_f32_e32 vcc, s0, v0
; GFX9-NEXT:    v_cndmask_b32_e32 v0, v2, v1, vcc
; GFX9-NEXT:    ; return to shader part epilog
;
; GFX12-LABEL: test_fminimum_f32_ss:
; GFX12:       ; %bb.0:
; GFX12-NEXT:    s_minimum_f32 s0, s0, s1
; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_3)
; GFX12-NEXT:    v_mov_b32_e32 v0, s0
; GFX12-NEXT:    ; return to shader part epilog
  %val = call float @llvm.minimum.f32(float %a, float %b)
  ret float %val
}

define amdgpu_ps float @test_fminimum_f32_vs(float %a, float inreg %b) {
; GFX9-LABEL: test_fminimum_f32_vs:
; GFX9:       ; %bb.0:
; GFX9-NEXT:    v_min_f32_e32 v1, s0, v0
; GFX9-NEXT:    v_mov_b32_e32 v2, 0x7fc00000
; GFX9-NEXT:    v_cmp_o_f32_e32 vcc, s0, v0
; GFX9-NEXT:    v_cndmask_b32_e32 v0, v2, v1, vcc
; GFX9-NEXT:    ; return to shader part epilog
;
; GFX12-LABEL: test_fminimum_f32_vs:
; GFX12:       ; %bb.0:
; GFX12-NEXT:    v_minimum_f32 v0, v0, s0
; GFX12-NEXT:    ; return to shader part epilog
  %val = call float @llvm.minimum.f32(float %a, float %b)
  ret float %val
}

define amdgpu_ps float @test_fminimum_nnan_f32(float %a, float %b) {
; GFX9-LABEL: test_fminimum_nnan_f32:
; GFX9:       ; %bb.0:
; GFX9-NEXT:    v_min_f32_e32 v0, v0, v1
; GFX9-NEXT:    ; return to shader part epilog
;
; GFX12-LABEL: test_fminimum_nnan_f32:
; GFX12:       ; %bb.0:
; GFX12-NEXT:    v_minimum_f32 v0, v0, v1
; GFX12-NEXT:    ; return to shader part epilog
  %val = call nnan float @llvm.minimum.f32(float %a, float %b)
  ret float %val
}

define amdgpu_ps float @test_fminimum_nsz_f32(float %a, float %b) {
; GFX9-LABEL: test_fminimum_nsz_f32:
; GFX9:       ; %bb.0:
; GFX9-NEXT:    v_min_f32_e32 v2, v0, v1
; GFX9-NEXT:    v_mov_b32_e32 v3, 0x7fc00000
; GFX9-NEXT:    v_cmp_o_f32_e32 vcc, v0, v1
; GFX9-NEXT:    v_cndmask_b32_e32 v0, v3, v2, vcc
; GFX9-NEXT:    ; return to shader part epilog
;
; GFX12-LABEL: test_fminimum_nsz_f32:
; GFX12:       ; %bb.0:
; GFX12-NEXT:    v_minimum_f32 v0, v0, v1
; GFX12-NEXT:    ; return to shader part epilog
  %val = call nsz float @llvm.minimum.f32(float %a, float %b)
  ret float %val
}

define amdgpu_ps float @test_fminimum_signed_zero_f32() {
; GFX9-LABEL: test_fminimum_signed_zero_f32:
; GFX9:       ; %bb.0:
; GFX9-NEXT:    v_bfrev_b32_e32 v0, 1
; GFX9-NEXT:    ; return to shader part epilog
;
; GFX12-LABEL: test_fminimum_signed_zero_f32:
; GFX12:       ; %bb.0:
; GFX12-NEXT:    v_bfrev_b32_e32 v0, 1
; GFX12-NEXT:    ; return to shader part epilog
  %val = call float @llvm.minimum.f32(float -0.0, float 0.0)
  ret float %val
}

define amdgpu_ps <2 x float> @test_fminimum_v2f32(<2 x float> %a, <2 x float> %b) {
; GFX9-LABEL: test_fminimum_v2f32:
; GFX9:       ; %bb.0:
; GFX9-NEXT:    v_min_f32_e32 v4, v0, v2
; GFX9-NEXT:    v_mov_b32_e32 v5, 0x7fc00000
; GFX9-NEXT:    v_cmp_o_f32_e32 vcc, v0, v2
; GFX9-NEXT:    v_cndmask_b32_e32 v0, v5, v4, vcc
; GFX9-NEXT:    v_min_f32_e32 v2, v1, v3
; GFX9-NEXT:    v_cmp_o_f32_e32 vcc, v1, v3
; GFX9-NEXT:    v_cndmask_b32_e32 v1, v5, v2, vcc
; GFX9-NEXT:    ; return to shader part epilog
;
; GFX12-LABEL: test_fminimum_v2f32:
; GFX12:       ; %bb.0:
; GFX12-NEXT:    v_minimum_f32 v0, v0, v2
; GFX12-NEXT:    v_minimum_f32 v1, v1, v3
; GFX12-NEXT:    ; return to shader part epilog
  %val = call <2 x float> @llvm.minimum.v2f32(<2 x float> %a, <2 x float> %b)
  ret <2 x float> %val
}

define amdgpu_ps <2 x float> @test_fminimum_v2f32_ss(<2 x float> inreg %a, <2 x float> inreg %b) {
; GFX9-LABEL: test_fminimum_v2f32_ss:
; GFX9:       ; %bb.0:
; GFX9-NEXT:    v_mov_b32_e32 v0, s2
; GFX9-NEXT:    v_min_f32_e32 v1, s0, v0
; GFX9-NEXT:    v_mov_b32_e32 v2, 0x7fc00000
; GFX9-NEXT:    v_cmp_o_f32_e32 vcc, s0, v0
; GFX9-NEXT:    v_cndmask_b32_e32 v0, v2, v1, vcc
; GFX9-NEXT:    v_mov_b32_e32 v1, s3
; GFX9-NEXT:    v_min_f32_e32 v3, s1, v1
; GFX9-NEXT:    v_cmp_o_f32_e32 vcc, s1, v1
; GFX9-NEXT:    v_cndmask_b32_e32 v1, v2, v3, vcc
; GFX9-NEXT:    ; return to shader part epilog
;
; GFX12-LABEL: test_fminimum_v2f32_ss:
; GFX12:       ; %bb.0:
; GFX12-NEXT:    s_minimum_f32 s0, s0, s2
; GFX12-NEXT:    s_minimum_f32 s1, s1, s3
; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_3)
; GFX12-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
; GFX12-NEXT:    ; return to shader part epilog
  %val = call <2 x float> @llvm.minimum.v2f32(<2 x float> %a, <2 x float> %b)
  ret <2 x float> %val
}

define amdgpu_ps <3 x float> @test_fminimum_v3f32(<3 x float> %a, <3 x float> %b) {
; GFX9-LABEL: test_fminimum_v3f32:
; GFX9:       ; %bb.0:
; GFX9-NEXT:    v_min_f32_e32 v6, v0, v3
; GFX9-NEXT:    v_mov_b32_e32 v7, 0x7fc00000
; GFX9-NEXT:    v_cmp_o_f32_e32 vcc, v0, v3
; GFX9-NEXT:    v_cndmask_b32_e32 v0, v7, v6, vcc
; GFX9-NEXT:    v_min_f32_e32 v3, v1, v4
; GFX9-NEXT:    v_cmp_o_f32_e32 vcc, v1, v4
; GFX9-NEXT:    v_cndmask_b32_e32 v1, v7, v3, vcc
; GFX9-NEXT:    v_min_f32_e32 v3, v2, v5
; GFX9-NEXT:    v_cmp_o_f32_e32 vcc, v2, v5
; GFX9-NEXT:    v_cndmask_b32_e32 v2, v7, v3, vcc
; GFX9-NEXT:    ; return to shader part epilog
;
; GFX12-LABEL: test_fminimum_v3f32:
; GFX12:       ; %bb.0:
; GFX12-NEXT:    v_minimum_f32 v0, v0, v3
; GFX12-NEXT:    v_minimum_f32 v1, v1, v4
; GFX12-NEXT:    v_minimum_f32 v2, v2, v5
; GFX12-NEXT:    ; return to shader part epilog
  %val = call <3 x float> @llvm.minimum.v3f32(<3 x float> %a, <3 x float> %b)
  ret <3 x float> %val
}

define amdgpu_ps <4 x float> @test_fminimum_v4f32(<4 x float> %a, <4 x float> %b) {
; GFX9-LABEL: test_fminimum_v4f32:
; GFX9:       ; %bb.0:
; GFX9-NEXT:    v_min_f32_e32 v8, v0, v4
; GFX9-NEXT:    v_mov_b32_e32 v9, 0x7fc00000
; GFX9-NEXT:    v_cmp_o_f32_e32 vcc, v0, v4
; GFX9-NEXT:    v_cndmask_b32_e32 v0, v9, v8, vcc
; GFX9-NEXT:    v_min_f32_e32 v4, v1, v5
; GFX9-NEXT:    v_cmp_o_f32_e32 vcc, v1, v5
; GFX9-NEXT:    v_cndmask_b32_e32 v1, v9, v4, vcc
; GFX9-NEXT:    v_min_f32_e32 v4, v2, v6
; GFX9-NEXT:    v_cmp_o_f32_e32 vcc, v2, v6
; GFX9-NEXT:    v_cndmask_b32_e32 v2, v9, v4, vcc
; GFX9-NEXT:    v_min_f32_e32 v4, v3, v7
; GFX9-NEXT:    v_cmp_o_f32_e32 vcc, v3, v7
; GFX9-NEXT:    v_cndmask_b32_e32 v3, v9, v4, vcc
; GFX9-NEXT:    ; return to shader part epilog
;
; GFX12-LABEL: test_fminimum_v4f32:
; GFX12:       ; %bb.0:
; GFX12-NEXT:    v_minimum_f32 v0, v0, v4
; GFX12-NEXT:    v_minimum_f32 v1, v1, v5
; GFX12-NEXT:    v_minimum_f32 v2, v2, v6
; GFX12-NEXT:    v_minimum_f32 v3, v3, v7
; GFX12-NEXT:    ; return to shader part epilog
  %val = call <4 x float> @llvm.minimum.v4f32(<4 x float> %a, <4 x float> %b)
  ret <4 x float> %val
}

define amdgpu_ps <16 x float> @test_fminimum_v16f32(<16 x float> %a, <16 x float> %b) {
; GFX9-LABEL: test_fminimum_v16f32:
; GFX9:       ; %bb.0:
; GFX9-NEXT:    v_min_f32_e32 v32, v1, v17
; GFX9-NEXT:    v_mov_b32_e32 v33, 0x7fc00000
; GFX9-NEXT:    v_cmp_o_f32_e32 vcc, v1, v17
; GFX9-NEXT:    v_min_f32_e32 v1, v0, v16
; GFX9-NEXT:    v_cmp_o_f32_e64 s[12:13], v0, v16
; GFX9-NEXT:    v_min_f32_e32 v17, v2, v18
; GFX9-NEXT:    v_cmp_o_f32_e64 s[0:1], v2, v18
; GFX9-NEXT:    v_min_f32_e32 v18, v3, v19
; GFX9-NEXT:    v_cmp_o_f32_e64 s[2:3], v3, v19
; GFX9-NEXT:    v_min_f32_e32 v19, v4, v20
; GFX9-NEXT:    v_cmp_o_f32_e64 s[4:5], v4, v20
; GFX9-NEXT:    v_min_f32_e32 v20, v5, v21
; GFX9-NEXT:    v_cmp_o_f32_e64 s[6:7], v5, v21
; GFX9-NEXT:    v_min_f32_e32 v21, v6, v22
; GFX9-NEXT:    v_cmp_o_f32_e64 s[8:9], v6, v22
; GFX9-NEXT:    v_min_f32_e32 v22, v7, v23
; GFX9-NEXT:    v_cmp_o_f32_e64 s[10:11], v7, v23
; GFX9-NEXT:    v_min_f32_e32 v23, v8, v24
; GFX9-NEXT:    v_cndmask_b32_e64 v0, v33, v1, s[12:13]
; GFX9-NEXT:    v_cndmask_b32_e32 v1, v33, v32, vcc
; GFX9-NEXT:    v_cmp_o_f32_e32 vcc, v8, v24
; GFX9-NEXT:    v_min_f32_e32 v34, v9, v25
; GFX9-NEXT:    v_cndmask_b32_e32 v8, v33, v23, vcc
; GFX9-NEXT:    v_cmp_o_f32_e32 vcc, v9, v25
; GFX9-NEXT:    v_min_f32_e32 v35, v10, v26
; GFX9-NEXT:    v_cndmask_b32_e32 v9, v33, v34, vcc
; GFX9-NEXT:    v_cmp_o_f32_e32 vcc, v10, v26
; GFX9-NEXT:    v_min_f32_e32 v36, v11, v27
; GFX9-NEXT:    v_cndmask_b32_e32 v10, v33, v35, vcc
; GFX9-NEXT:    v_cmp_o_f32_e32 vcc, v11, v27
; GFX9-NEXT:    v_min_f32_e32 v37, v12, v28
; GFX9-NEXT:    v_cndmask_b32_e32 v11, v33, v36, vcc
; GFX9-NEXT:    v_cmp_o_f32_e32 vcc, v12, v28
; GFX9-NEXT:    v_min_f32_e32 v16, v13, v29
; GFX9-NEXT:    v_cndmask_b32_e32 v12, v33, v37, vcc
; GFX9-NEXT:    v_cmp_o_f32_e32 vcc, v13, v29
; GFX9-NEXT:    v_cndmask_b32_e32 v13, v33, v16, vcc
; GFX9-NEXT:    v_min_f32_e32 v16, v14, v30
; GFX9-NEXT:    v_cmp_o_f32_e32 vcc, v14, v30
; GFX9-NEXT:    v_cndmask_b32_e32 v14, v33, v16, vcc
; GFX9-NEXT:    v_min_f32_e32 v16, v15, v31
; GFX9-NEXT:    v_cmp_o_f32_e32 vcc, v15, v31
; GFX9-NEXT:    v_cndmask_b32_e64 v2, v33, v17, s[0:1]
; GFX9-NEXT:    v_cndmask_b32_e64 v3, v33, v18, s[2:3]
; GFX9-NEXT:    v_cndmask_b32_e64 v4, v33, v19, s[4:5]
; GFX9-NEXT:    v_cndmask_b32_e64 v5, v33, v20, s[6:7]
; GFX9-NEXT:    v_cndmask_b32_e64 v6, v33, v21, s[8:9]
; GFX9-NEXT:    v_cndmask_b32_e64 v7, v33, v22, s[10:11]
; GFX9-NEXT:    v_cndmask_b32_e32 v15, v33, v16, vcc
; GFX9-NEXT:    ; return to shader part epilog
;
; GFX12-LABEL: test_fminimum_v16f32:
; GFX12:       ; %bb.0:
; GFX12-NEXT:    v_minimum_f32 v0, v0, v16
; GFX12-NEXT:    v_minimum_f32 v1, v1, v17
; GFX12-NEXT:    v_minimum_f32 v2, v2, v18
; GFX12-NEXT:    v_minimum_f32 v3, v3, v19
; GFX12-NEXT:    v_minimum_f32 v4, v4, v20
; GFX12-NEXT:    v_minimum_f32 v5, v5, v21
; GFX12-NEXT:    v_minimum_f32 v6, v6, v22
; GFX12-NEXT:    v_minimum_f32 v7, v7, v23
; GFX12-NEXT:    v_minimum_f32 v8, v8, v24
; GFX12-NEXT:    v_minimum_f32 v9, v9, v25
; GFX12-NEXT:    v_minimum_f32 v10, v10, v26
; GFX12-NEXT:    v_minimum_f32 v11, v11, v27
; GFX12-NEXT:    v_minimum_f32 v12, v12, v28
; GFX12-NEXT:    v_minimum_f32 v13, v13, v29
; GFX12-NEXT:    v_minimum_f32 v14, v14, v30
; GFX12-NEXT:    v_minimum_f32 v15, v15, v31
; GFX12-NEXT:    ; return to shader part epilog
  %val = call <16 x float> @llvm.minimum.v16f32(<16 x float> %a, <16 x float> %b)
  ret <16 x float> %val
}

define amdgpu_ps half @test_fminimum_f16_vv(half %a, half %b) {
; GFX9-LABEL: test_fminimum_f16_vv:
; GFX9:       ; %bb.0:
; GFX9-NEXT:    v_min_f16_e32 v2, v0, v1
; GFX9-NEXT:    v_mov_b32_e32 v3, 0x7e00
; GFX9-NEXT:    v_cmp_o_f16_e32 vcc, v0, v1
; GFX9-NEXT:    v_cndmask_b32_e32 v0, v3, v2, vcc
; GFX9-NEXT:    ; return to shader part epilog
;
; GFX12-SDAG-TRUE16-LABEL: test_fminimum_f16_vv:
; GFX12-SDAG-TRUE16:       ; %bb.0:
; GFX12-SDAG-TRUE16-NEXT:    v_minimum_f16 v0.l, v0.l, v1.l
; GFX12-SDAG-TRUE16-NEXT:    ; return to shader part epilog
;
; GFX12-SDAG-FAKE16-LABEL: test_fminimum_f16_vv:
; GFX12-SDAG-FAKE16:       ; %bb.0:
; GFX12-SDAG-FAKE16-NEXT:    v_minimum_f16 v0, v0, v1
; GFX12-SDAG-FAKE16-NEXT:    ; return to shader part epilog
;
; GFX12-GISEL-TRUE16-LABEL: test_fminimum_f16_vv:
; GFX12-GISEL-TRUE16:       ; %bb.0:
; GFX12-GISEL-TRUE16-NEXT:    v_minimum_f16 v0.l, v0.l, v1.l
; GFX12-GISEL-TRUE16-NEXT:    ; return to shader part epilog
;
; GFX12-GISEL-FAKE16-LABEL: test_fminimum_f16_vv:
; GFX12-GISEL-FAKE16:       ; %bb.0:
; GFX12-GISEL-FAKE16-NEXT:    v_minimum_f16 v0, v0, v1
; GFX12-GISEL-FAKE16-NEXT:    ; return to shader part epilog
  %val = call half @llvm.minimum.f16(half %a, half %b)
  ret half %val
}

define amdgpu_ps half @test_fminimum_f16_ss(half inreg %a, half inreg %b) {
; GFX9-LABEL: test_fminimum_f16_ss:
; GFX9:       ; %bb.0:
; GFX9-NEXT:    v_mov_b32_e32 v0, s1
; GFX9-NEXT:    v_min_f16_e32 v1, s0, v0
; GFX9-NEXT:    v_mov_b32_e32 v2, 0x7e00
; GFX9-NEXT:    v_cmp_o_f16_e32 vcc, s0, v0
; GFX9-NEXT:    v_cndmask_b32_e32 v0, v2, v1, vcc
; GFX9-NEXT:    ; return to shader part epilog
;
; GFX12-LABEL: test_fminimum_f16_ss:
; GFX12:       ; %bb.0:
; GFX12-NEXT:    s_minimum_f16 s0, s0, s1
; GFX12-NEXT:    s_delay_alu instid0(SALU_CYCLE_3)
; GFX12-NEXT:    v_mov_b32_e32 v0, s0
; GFX12-NEXT:    ; return to shader part epilog
  %val = call half @llvm.minimum.f16(half %a, half %b)
  ret half %val
}

define amdgpu_ps <2 x half> @test_fminimum_v2f16_vv(<2 x half> %a, <2 x half> %b) {
; GFX9-SDAG-LABEL: test_fminimum_v2f16_vv:
; GFX9-SDAG:       ; %bb.0:
; GFX9-SDAG-NEXT:    v_pk_min_f16 v2, v0, v1
; GFX9-SDAG-NEXT:    v_mov_b32_e32 v3, 0x7e00
; GFX9-SDAG-NEXT:    v_cmp_o_f16_e32 vcc, v0, v1
; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v4, v3, v2, vcc
; GFX9-SDAG-NEXT:    v_cmp_o_f16_sdwa vcc, v0, v1 src0_sel:WORD_1 src1_sel:WORD_1
; GFX9-SDAG-NEXT:    v_cndmask_b32_sdwa v0, v3, v2, vcc dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
; GFX9-SDAG-NEXT:    s_mov_b32 s0, 0x5040100
; GFX9-SDAG-NEXT:    v_perm_b32 v0, v0, v4, s0
; GFX9-SDAG-NEXT:    ; return to shader part epilog
;
; GFX9-GISEL-LABEL: test_fminimum_v2f16_vv:
; GFX9-GISEL:       ; %bb.0:
; GFX9-GISEL-NEXT:    v_pk_min_f16 v2, v0, v1
; GFX9-GISEL-NEXT:    v_mov_b32_e32 v3, 0x7e00
; GFX9-GISEL-NEXT:    v_cmp_o_f16_e64 s[0:1], v0, v1
; GFX9-GISEL-NEXT:    v_cmp_o_f16_sdwa vcc, v0, v1 src0_sel:WORD_1 src1_sel:WORD_1
; GFX9-GISEL-NEXT:    v_cndmask_b32_e64 v0, v3, v2, s[0:1]
; GFX9-GISEL-NEXT:    v_cndmask_b32_sdwa v1, v3, v2, vcc dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
; GFX9-GISEL-NEXT:    v_and_b32_e32 v0, 0xffff, v0
; GFX9-GISEL-NEXT:    v_lshl_or_b32 v0, v1, 16, v0
; GFX9-GISEL-NEXT:    ; return to shader part epilog
;
; GFX12-LABEL: test_fminimum_v2f16_vv:
; GFX12:       ; %bb.0:
; GFX12-NEXT:    v_pk_minimum_f16 v0, v0, v1
; GFX12-NEXT:    ; return to shader part epilog
  %val = call <2 x half> @llvm.minimum.v2f16(<2 x half> %a, <2 x half> %b)
  ret <2 x half> %val
}

define amdgpu_ps <2 x half> @test_fminimum_v2f16_ss(<2 x half> inreg %a, <2 x half> inreg %b) {
; GFX9-SDAG-LABEL: test_fminimum_v2f16_ss:
; GFX9-SDAG:       ; %bb.0:
; GFX9-SDAG-NEXT:    v_mov_b32_e32 v0, s1
; GFX9-SDAG-NEXT:    v_mov_b32_e32 v1, s1
; GFX9-SDAG-NEXT:    s_lshr_b32 s1, s1, 16
; GFX9-SDAG-NEXT:    v_pk_min_f16 v1, s0, v1
; GFX9-SDAG-NEXT:    v_mov_b32_e32 v2, 0x7e00
; GFX9-SDAG-NEXT:    v_cmp_o_f16_e32 vcc, s0, v0
; GFX9-SDAG-NEXT:    s_lshr_b32 s0, s0, 16
; GFX9-SDAG-NEXT:    v_mov_b32_e32 v3, s1
; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v0, v2, v1, vcc
; GFX9-SDAG-NEXT:    v_cmp_o_f16_e32 vcc, s0, v3
; GFX9-SDAG-NEXT:    v_cndmask_b32_sdwa v1, v2, v1, vcc dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
; GFX9-SDAG-NEXT:    v_and_b32_e32 v0, 0xffff, v0
; GFX9-SDAG-NEXT:    v_lshl_or_b32 v0, v1, 16, v0
; GFX9-SDAG-NEXT:    ; return to shader part epilog
;
; GFX9-GISEL-LABEL: test_fminimum_v2f16_ss:
; GFX9-GISEL:       ; %bb.0:
; GFX9-GISEL-NEXT:    v_mov_b32_e32 v0, s1
; GFX9-GISEL-NEXT:    s_lshr_b32 s1, s1, 16
; GFX9-GISEL-NEXT:    s_lshr_b32 s2, s0, 16
; GFX9-GISEL-NEXT:    v_mov_b32_e32 v2, s1
; GFX9-GISEL-NEXT:    v_pk_min_f16 v1, s0, v0
; GFX9-GISEL-NEXT:    v_cmp_o_f16_e32 vcc, s2, v2
; GFX9-GISEL-NEXT:    v_mov_b32_e32 v2, 0x7e00
; GFX9-GISEL-NEXT:    v_cmp_o_f16_e64 s[0:1], s0, v0
; GFX9-GISEL-NEXT:    v_cndmask_b32_e64 v0, v2, v1, s[0:1]
; GFX9-GISEL-NEXT:    v_cndmask_b32_sdwa v1, v2, v1, vcc dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
; GFX9-GISEL-NEXT:    v_and_b32_e32 v0, 0xffff, v0
; GFX9-GISEL-NEXT:    v_lshl_or_b32 v0, v1, 16, v0
; GFX9-GISEL-NEXT:    ; return to shader part epilog
;
; GFX12-LABEL: test_fminimum_v2f16_ss:
; GFX12:       ; %bb.0:
; GFX12-NEXT:    v_pk_minimum_f16 v0, s0, s1
; GFX12-NEXT:    ; return to shader part epilog
  %val = call <2 x half> @llvm.minimum.v2f16(<2 x half> %a, <2 x half> %b)
  ret <2 x half> %val
}

define amdgpu_ps <3 x half> @test_fminimum_v3f16_vv(<3 x half> %a, <3 x half> %b) {
; GFX9-SDAG-LABEL: test_fminimum_v3f16_vv:
; GFX9-SDAG:       ; %bb.0:
; GFX9-SDAG-NEXT:    v_pk_min_f16 v4, v1, v3
; GFX9-SDAG-NEXT:    v_mov_b32_e32 v5, 0x7e00
; GFX9-SDAG-NEXT:    v_cmp_o_f16_e32 vcc, v1, v3
; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v1, v5, v4, vcc
; GFX9-SDAG-NEXT:    v_pk_min_f16 v3, v0, v2
; GFX9-SDAG-NEXT:    v_cmp_o_f16_e32 vcc, v0, v2
; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v4, v5, v3, vcc
; GFX9-SDAG-NEXT:    v_cmp_o_f16_sdwa vcc, v0, v2 src0_sel:WORD_1 src1_sel:WORD_1
; GFX9-SDAG-NEXT:    v_cndmask_b32_sdwa v0, v5, v3, vcc dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
; GFX9-SDAG-NEXT:    s_mov_b32 s0, 0x5040100
; GFX9-SDAG-NEXT:    v_perm_b32 v0, v0, v4, s0
; GFX9-SDAG-NEXT:    ; return to shader part epilog
;
; GFX9-GISEL-LABEL: test_fminimum_v3f16_vv:
; GFX9-GISEL:       ; %bb.0:
; GFX9-GISEL-NEXT:    v_pk_min_f16 v4, v0, v2
; GFX9-GISEL-NEXT:    v_mov_b32_e32 v5, 0x7e00
; GFX9-GISEL-NEXT:    v_cmp_o_f16_e64 s[0:1], v0, v2
; GFX9-GISEL-NEXT:    v_cmp_o_f16_sdwa vcc, v0, v2 src0_sel:WORD_1 src1_sel:WORD_1
; GFX9-GISEL-NEXT:    v_cndmask_b32_e64 v0, v5, v4, s[0:1]
; GFX9-GISEL-NEXT:    v_cndmask_b32_sdwa v2, v5, v4, vcc dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
; GFX9-GISEL-NEXT:    v_pk_min_f16 v4, v1, v3
; GFX9-GISEL-NEXT:    v_cmp_o_f16_e32 vcc, v1, v3
; GFX9-GISEL-NEXT:    v_and_b32_e32 v0, 0xffff, v0
; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v1, v5, v4, vcc
; GFX9-GISEL-NEXT:    v_lshl_or_b32 v0, v2, 16, v0
; GFX9-GISEL-NEXT:    ; return to shader part epilog
;
; GFX12-SDAG-LABEL: test_fminimum_v3f16_vv:
; GFX12-SDAG:       ; %bb.0:
; GFX12-SDAG-NEXT:    v_pk_minimum_f16 v0, v0, v2
; GFX12-SDAG-NEXT:    v_pk_minimum_f16 v1, v1, v3
; GFX12-SDAG-NEXT:    ; return to shader part epilog
;
; GFX12-GISEL-TRUE16-LABEL: test_fminimum_v3f16_vv:
; GFX12-GISEL-TRUE16:       ; %bb.0:
; GFX12-GISEL-TRUE16-NEXT:    v_pk_minimum_f16 v0, v0, v2
; GFX12-GISEL-TRUE16-NEXT:    v_minimum_f16 v1.l, v1.l, v3.l
; GFX12-GISEL-TRUE16-NEXT:    ; return to shader part epilog
;
; GFX12-GISEL-FAKE16-LABEL: test_fminimum_v3f16_vv:
; GFX12-GISEL-FAKE16:       ; %bb.0:
; GFX12-GISEL-FAKE16-NEXT:    v_pk_minimum_f16 v0, v0, v2
; GFX12-GISEL-FAKE16-NEXT:    v_minimum_f16 v1, v1, v3
; GFX12-GISEL-FAKE16-NEXT:    ; return to shader part epilog
  %val = call <3 x half> @llvm.minimum.v3f16(<3 x half> %a, <3 x half> %b)
  ret <3 x half> %val
}

define amdgpu_ps <3 x half> @test_fminimum_v3f16_ss(<3 x half> inreg %a, <3 x half> inreg %b) {
; GFX9-SDAG-LABEL: test_fminimum_v3f16_ss:
; GFX9-SDAG:       ; %bb.0:
; GFX9-SDAG-NEXT:    v_mov_b32_e32 v0, s3
; GFX9-SDAG-NEXT:    v_mov_b32_e32 v1, s3
; GFX9-SDAG-NEXT:    v_pk_min_f16 v1, s1, v1
; GFX9-SDAG-NEXT:    v_mov_b32_e32 v2, 0x7e00
; GFX9-SDAG-NEXT:    v_cmp_o_f16_e32 vcc, s1, v0
; GFX9-SDAG-NEXT:    v_mov_b32_e32 v0, s2
; GFX9-SDAG-NEXT:    v_mov_b32_e32 v3, s2
; GFX9-SDAG-NEXT:    s_lshr_b32 s1, s2, 16
; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v1, v2, v1, vcc
; GFX9-SDAG-NEXT:    v_pk_min_f16 v3, s0, v3
; GFX9-SDAG-NEXT:    v_cmp_o_f16_e32 vcc, s0, v0
; GFX9-SDAG-NEXT:    s_lshr_b32 s0, s0, 16
; GFX9-SDAG-NEXT:    v_mov_b32_e32 v4, s1
; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v0, v2, v3, vcc
; GFX9-SDAG-NEXT:    v_cmp_o_f16_e32 vcc, s0, v4
; GFX9-SDAG-NEXT:    v_cndmask_b32_sdwa v2, v2, v3, vcc dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
; GFX9-SDAG-NEXT:    v_and_b32_e32 v0, 0xffff, v0
; GFX9-SDAG-NEXT:    v_lshl_or_b32 v0, v2, 16, v0
; GFX9-SDAG-NEXT:    ; return to shader part epilog
;
; GFX9-GISEL-LABEL: test_fminimum_v3f16_ss:
; GFX9-GISEL:       ; %bb.0:
; GFX9-GISEL-NEXT:    s_lshr_b32 s5, s2, 16
; GFX9-GISEL-NEXT:    v_mov_b32_e32 v0, s2
; GFX9-GISEL-NEXT:    s_lshr_b32 s4, s0, 16
; GFX9-GISEL-NEXT:    v_pk_min_f16 v1, s0, v0
; GFX9-GISEL-NEXT:    v_mov_b32_e32 v2, s5
; GFX9-GISEL-NEXT:    v_mov_b32_e32 v4, 0x7e00
; GFX9-GISEL-NEXT:    v_cmp_o_f16_e32 vcc, s0, v0
; GFX9-GISEL-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v0, v4, v1, vcc
; GFX9-GISEL-NEXT:    v_cmp_o_f16_e32 vcc, s4, v2
; GFX9-GISEL-NEXT:    v_mov_b32_e32 v1, s3
; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v2, v4, v3, vcc
; GFX9-GISEL-NEXT:    v_pk_min_f16 v3, s1, v1
; GFX9-GISEL-NEXT:    v_cmp_o_f16_e32 vcc, s1, v1
; GFX9-GISEL-NEXT:    v_and_b32_e32 v0, 0xffff, v0
; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v1, v4, v3, vcc
; GFX9-GISEL-NEXT:    v_lshl_or_b32 v0, v2, 16, v0
; GFX9-GISEL-NEXT:    ; return to shader part epilog
;
; GFX12-SDAG-LABEL: test_fminimum_v3f16_ss:
; GFX12-SDAG:       ; %bb.0:
; GFX12-SDAG-NEXT:    v_pk_minimum_f16 v0, s0, s2
; GFX12-SDAG-NEXT:    v_pk_minimum_f16 v1, s1, s3
; GFX12-SDAG-NEXT:    ; return to shader part epilog
;
; GFX12-GISEL-LABEL: test_fminimum_v3f16_ss:
; GFX12-GISEL:       ; %bb.0:
; GFX12-GISEL-NEXT:    v_pk_minimum_f16 v0, s0, s2
; GFX12-GISEL-NEXT:    s_minimum_f16 s0, s1, s3
; GFX12-GISEL-NEXT:    s_wait_alu depctr_sa_sdst(0)
; GFX12-GISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_2)
; GFX12-GISEL-NEXT:    v_mov_b32_e32 v1, s0
; GFX12-GISEL-NEXT:    ; return to shader part epilog
  %val = call <3 x half> @llvm.minimum.v3f16(<3 x half> %a, <3 x half> %b)
  ret <3 x half> %val
}

define amdgpu_ps <4 x half> @test_fminimum_v4f16(<4 x half> %a, <4 x half> %b) {
; GFX9-SDAG-LABEL: test_fminimum_v4f16:
; GFX9-SDAG:       ; %bb.0:
; GFX9-SDAG-NEXT:    v_pk_min_f16 v4, v1, v3
; GFX9-SDAG-NEXT:    v_mov_b32_e32 v5, 0x7e00
; GFX9-SDAG-NEXT:    v_cmp_o_f16_e32 vcc, v1, v3
; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v6, v5, v4, vcc
; GFX9-SDAG-NEXT:    v_cmp_o_f16_sdwa vcc, v1, v3 src0_sel:WORD_1 src1_sel:WORD_1
; GFX9-SDAG-NEXT:    v_cndmask_b32_sdwa v1, v5, v4, vcc dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
; GFX9-SDAG-NEXT:    v_pk_min_f16 v3, v0, v2
; GFX9-SDAG-NEXT:    v_cmp_o_f16_e32 vcc, v0, v2
; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v4, v5, v3, vcc
; GFX9-SDAG-NEXT:    v_cmp_o_f16_sdwa vcc, v0, v2 src0_sel:WORD_1 src1_sel:WORD_1
; GFX9-SDAG-NEXT:    v_cndmask_b32_sdwa v0, v5, v3, vcc dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
; GFX9-SDAG-NEXT:    s_mov_b32 s0, 0x5040100
; GFX9-SDAG-NEXT:    v_perm_b32 v0, v0, v4, s0
; GFX9-SDAG-NEXT:    v_perm_b32 v1, v1, v6, s0
; GFX9-SDAG-NEXT:    ; return to shader part epilog
;
; GFX9-GISEL-LABEL: test_fminimum_v4f16:
; GFX9-GISEL:       ; %bb.0:
; GFX9-GISEL-NEXT:    v_pk_min_f16 v4, v0, v2
; GFX9-GISEL-NEXT:    v_mov_b32_e32 v6, 0x7e00
; GFX9-GISEL-NEXT:    v_cmp_o_f16_e32 vcc, v0, v2
; GFX9-GISEL-NEXT:    v_lshrrev_b32_e32 v5, 16, v4
; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v4, v6, v4, vcc
; GFX9-GISEL-NEXT:    v_cmp_o_f16_sdwa vcc, v0, v2 src0_sel:WORD_1 src1_sel:WORD_1
; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v0, v6, v5, vcc
; GFX9-GISEL-NEXT:    v_and_b32_e32 v2, 0xffff, v4
; GFX9-GISEL-NEXT:    v_lshl_or_b32 v0, v0, 16, v2
; GFX9-GISEL-NEXT:    v_pk_min_f16 v2, v1, v3
; GFX9-GISEL-NEXT:    v_cmp_o_f16_e64 s[0:1], v1, v3
; GFX9-GISEL-NEXT:    v_cmp_o_f16_sdwa vcc, v1, v3 src0_sel:WORD_1 src1_sel:WORD_1
; GFX9-GISEL-NEXT:    v_cndmask_b32_e64 v1, v6, v2, s[0:1]
; GFX9-GISEL-NEXT:    v_cndmask_b32_sdwa v2, v6, v2, vcc dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
; GFX9-GISEL-NEXT:    v_and_b32_e32 v1, 0xffff, v1
; GFX9-GISEL-NEXT:    v_lshl_or_b32 v1, v2, 16, v1
; GFX9-GISEL-NEXT:    ; return to shader part epilog
;
; GFX12-LABEL: test_fminimum_v4f16:
; GFX12:       ; %bb.0:
; GFX12-NEXT:    v_pk_minimum_f16 v0, v0, v2
; GFX12-NEXT:    v_pk_minimum_f16 v1, v1, v3
; GFX12-NEXT:    ; return to shader part epilog
  %val = call <4 x half> @llvm.minimum.v4f16(<4 x half> %a, <4 x half> %b)
  ret <4 x half> %val
}

define amdgpu_ps <4 x half> @test_fminimum_v4f16_ss(<4 x half> inreg %a, <4 x half> inreg %b) {
; GFX9-SDAG-LABEL: test_fminimum_v4f16_ss:
; GFX9-SDAG:       ; %bb.0:
; GFX9-SDAG-NEXT:    v_mov_b32_e32 v0, s3
; GFX9-SDAG-NEXT:    v_mov_b32_e32 v1, s3
; GFX9-SDAG-NEXT:    s_lshr_b32 s3, s3, 16
; GFX9-SDAG-NEXT:    v_pk_min_f16 v1, s1, v1
; GFX9-SDAG-NEXT:    v_mov_b32_e32 v2, 0x7e00
; GFX9-SDAG-NEXT:    v_cmp_o_f16_e32 vcc, s1, v0
; GFX9-SDAG-NEXT:    s_lshr_b32 s1, s1, 16
; GFX9-SDAG-NEXT:    v_mov_b32_e32 v0, s3
; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v3, v2, v1, vcc
; GFX9-SDAG-NEXT:    v_lshrrev_b32_e32 v1, 16, v1
; GFX9-SDAG-NEXT:    v_cmp_o_f16_e32 vcc, s1, v0
; GFX9-SDAG-NEXT:    v_mov_b32_e32 v0, s2
; GFX9-SDAG-NEXT:    v_mov_b32_e32 v4, s2
; GFX9-SDAG-NEXT:    s_lshr_b32 s1, s2, 16
; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v1, v2, v1, vcc
; GFX9-SDAG-NEXT:    v_pk_min_f16 v4, s0, v4
; GFX9-SDAG-NEXT:    v_cmp_o_f16_e32 vcc, s0, v0
; GFX9-SDAG-NEXT:    s_lshr_b32 s0, s0, 16
; GFX9-SDAG-NEXT:    v_mov_b32_e32 v5, s1
; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v0, v2, v4, vcc
; GFX9-SDAG-NEXT:    v_cmp_o_f16_e32 vcc, s0, v5
; GFX9-SDAG-NEXT:    v_cndmask_b32_sdwa v2, v2, v4, vcc dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
; GFX9-SDAG-NEXT:    v_and_b32_e32 v0, 0xffff, v0
; GFX9-SDAG-NEXT:    v_lshl_or_b32 v0, v2, 16, v0
; GFX9-SDAG-NEXT:    v_and_b32_e32 v2, 0xffff, v3
; GFX9-SDAG-NEXT:    v_lshl_or_b32 v1, v1, 16, v2
; GFX9-SDAG-NEXT:    ; return to shader part epilog
;
; GFX9-GISEL-LABEL: test_fminimum_v4f16_ss:
; GFX9-GISEL:       ; %bb.0:
; GFX9-GISEL-NEXT:    v_mov_b32_e32 v0, s2
; GFX9-GISEL-NEXT:    s_lshr_b32 s2, s2, 16
; GFX9-GISEL-NEXT:    v_pk_min_f16 v1, s0, v0
; GFX9-GISEL-NEXT:    s_lshr_b32 s4, s0, 16
; GFX9-GISEL-NEXT:    v_mov_b32_e32 v2, s2
; GFX9-GISEL-NEXT:    v_mov_b32_e32 v4, 0x7e00
; GFX9-GISEL-NEXT:    v_cmp_o_f16_e32 vcc, s0, v0
; GFX9-GISEL-NEXT:    v_lshrrev_b32_e32 v3, 16, v1
; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v0, v4, v1, vcc
; GFX9-GISEL-NEXT:    v_cmp_o_f16_e32 vcc, s4, v2
; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v1, v4, v3, vcc
; GFX9-GISEL-NEXT:    v_and_b32_e32 v0, 0xffff, v0
; GFX9-GISEL-NEXT:    s_lshr_b32 s2, s3, 16
; GFX9-GISEL-NEXT:    v_lshl_or_b32 v0, v1, 16, v0
; GFX9-GISEL-NEXT:    v_mov_b32_e32 v1, s3
; GFX9-GISEL-NEXT:    s_lshr_b32 s0, s1, 16
; GFX9-GISEL-NEXT:    v_mov_b32_e32 v3, s2
; GFX9-GISEL-NEXT:    v_pk_min_f16 v2, s1, v1
; GFX9-GISEL-NEXT:    v_cmp_o_f16_e32 vcc, s0, v3
; GFX9-GISEL-NEXT:    v_cmp_o_f16_e64 s[0:1], s1, v1
; GFX9-GISEL-NEXT:    v_cndmask_b32_e64 v1, v4, v2, s[0:1]
; GFX9-GISEL-NEXT:    v_cndmask_b32_sdwa v2, v4, v2, vcc dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:WORD_1
; GFX9-GISEL-NEXT:    v_and_b32_e32 v1, 0xffff, v1
; GFX9-GISEL-NEXT:    v_lshl_or_b32 v1, v2, 16, v1
; GFX9-GISEL-NEXT:    ; return to shader part epilog
;
; GFX12-LABEL: test_fminimum_v4f16_ss:
; GFX12:       ; %bb.0:
; GFX12-NEXT:    v_pk_minimum_f16 v0, s0, s2
; GFX12-NEXT:    v_pk_minimum_f16 v1, s1, s3
; GFX12-NEXT:    ; return to shader part epilog
  %val = call <4 x half> @llvm.minimum.v4f16(<4 x half> %a, <4 x half> %b)
  ret <4 x half> %val
}

define amdgpu_ps <2 x float> @test_fminimum_f64_vv(double %a, double %b) {
; GFX9-SDAG-LABEL: test_fminimum_f64_vv:
; GFX9-SDAG:       ; %bb.0:
; GFX9-SDAG-NEXT:    v_min_f64 v[4:5], v[0:1], v[2:3]
; GFX9-SDAG-NEXT:    v_cmp_u_f64_e32 vcc, v[0:1], v[2:3]
; GFX9-SDAG-NEXT:    v_mov_b32_e32 v1, 0x7ff80000
; GFX9-SDAG-NEXT:    v_cndmask_b32_e64 v0, v4, 0, vcc
; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v1, v5, v1, vcc
; GFX9-SDAG-NEXT:    ; return to shader part epilog
;
; GFX9-GISEL-LABEL: test_fminimum_f64_vv:
; GFX9-GISEL:       ; %bb.0:
; GFX9-GISEL-NEXT:    v_min_f64 v[4:5], v[0:1], v[2:3]
; GFX9-GISEL-NEXT:    v_cmp_o_f64_e32 vcc, v[0:1], v[2:3]
; GFX9-GISEL-NEXT:    v_mov_b32_e32 v1, 0x7ff80000
; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v0, 0, v4, vcc
; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v1, v1, v5, vcc
; GFX9-GISEL-NEXT:    ; return to shader part epilog
;
; GFX12-LABEL: test_fminimum_f64_vv:
; GFX12:       ; %bb.0:
; GFX12-NEXT:    v_minimum_f64 v[0:1], v[0:1], v[2:3]
; GFX12-NEXT:    ; return to shader part epilog
  %val = call double @llvm.minimum.f64(double %a, double %b)
  %ret = bitcast double %val to <2 x float>
  ret <2 x float> %ret
}

define amdgpu_ps <2 x float> @test_fminimum_f64_ss(double inreg %a, double inreg %b) {
; GFX9-SDAG-LABEL: test_fminimum_f64_ss:
; GFX9-SDAG:       ; %bb.0:
; GFX9-SDAG-NEXT:    v_mov_b32_e32 v0, s2
; GFX9-SDAG-NEXT:    v_mov_b32_e32 v1, s3
; GFX9-SDAG-NEXT:    v_min_f64 v[2:3], s[0:1], v[0:1]
; GFX9-SDAG-NEXT:    v_cmp_u_f64_e32 vcc, s[0:1], v[0:1]
; GFX9-SDAG-NEXT:    v_mov_b32_e32 v1, 0x7ff80000
; GFX9-SDAG-NEXT:    v_cndmask_b32_e64 v0, v2, 0, vcc
; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v1, v3, v1, vcc
; GFX9-SDAG-NEXT:    ; return to shader part epilog
;
; GFX9-GISEL-LABEL: test_fminimum_f64_ss:
; GFX9-GISEL:       ; %bb.0:
; GFX9-GISEL-NEXT:    v_mov_b32_e32 v0, s2
; GFX9-GISEL-NEXT:    v_mov_b32_e32 v1, s3
; GFX9-GISEL-NEXT:    v_min_f64 v[2:3], s[0:1], v[0:1]
; GFX9-GISEL-NEXT:    v_cmp_o_f64_e32 vcc, s[0:1], v[0:1]
; GFX9-GISEL-NEXT:    v_mov_b32_e32 v1, 0x7ff80000
; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v0, 0, v2, vcc
; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v1, v1, v3, vcc
; GFX9-GISEL-NEXT:    ; return to shader part epilog
;
; GFX12-LABEL: test_fminimum_f64_ss:
; GFX12:       ; %bb.0:
; GFX12-NEXT:    v_minimum_f64 v[0:1], s[0:1], s[2:3]
; GFX12-NEXT:    ; return to shader part epilog
  %val = call double @llvm.minimum.f64(double %a, double %b)
  %ret = bitcast double %val to <2 x float>
  ret <2 x float> %ret
}

define amdgpu_ps <4 x float> @test_fminimum_v2f64_ss(<2 x double> inreg %a, <2 x double> inreg %b) {
; GFX9-SDAG-LABEL: test_fminimum_v2f64_ss:
; GFX9-SDAG:       ; %bb.0:
; GFX9-SDAG-NEXT:    v_mov_b32_e32 v0, s4
; GFX9-SDAG-NEXT:    v_mov_b32_e32 v1, s5
; GFX9-SDAG-NEXT:    v_min_f64 v[2:3], s[0:1], v[0:1]
; GFX9-SDAG-NEXT:    v_cmp_u_f64_e32 vcc, s[0:1], v[0:1]
; GFX9-SDAG-NEXT:    v_mov_b32_e32 v0, s6
; GFX9-SDAG-NEXT:    v_mov_b32_e32 v1, s7
; GFX9-SDAG-NEXT:    v_min_f64 v[4:5], s[2:3], v[0:1]
; GFX9-SDAG-NEXT:    v_cmp_u_f64_e64 s[0:1], s[2:3], v[0:1]
; GFX9-SDAG-NEXT:    v_mov_b32_e32 v6, 0x7ff80000
; GFX9-SDAG-NEXT:    v_cndmask_b32_e64 v0, v2, 0, vcc
; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v1, v3, v6, vcc
; GFX9-SDAG-NEXT:    v_cndmask_b32_e64 v2, v4, 0, s[0:1]
; GFX9-SDAG-NEXT:    v_cndmask_b32_e64 v3, v5, v6, s[0:1]
; GFX9-SDAG-NEXT:    ; return to shader part epilog
;
; GFX9-GISEL-LABEL: test_fminimum_v2f64_ss:
; GFX9-GISEL:       ; %bb.0:
; GFX9-GISEL-NEXT:    v_mov_b32_e32 v0, s4
; GFX9-GISEL-NEXT:    v_mov_b32_e32 v1, s5
; GFX9-GISEL-NEXT:    v_min_f64 v[2:3], s[0:1], v[0:1]
; GFX9-GISEL-NEXT:    v_cmp_o_f64_e32 vcc, s[0:1], v[0:1]
; GFX9-GISEL-NEXT:    v_mov_b32_e32 v0, s6
; GFX9-GISEL-NEXT:    v_mov_b32_e32 v1, s7
; GFX9-GISEL-NEXT:    v_min_f64 v[4:5], s[2:3], v[0:1]
; GFX9-GISEL-NEXT:    v_cmp_o_f64_e64 s[0:1], s[2:3], v[0:1]
; GFX9-GISEL-NEXT:    v_mov_b32_e32 v6, 0x7ff80000
; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v0, 0, v2, vcc
; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v1, v6, v3, vcc
; GFX9-GISEL-NEXT:    v_cndmask_b32_e64 v2, 0, v4, s[0:1]
; GFX9-GISEL-NEXT:    v_cndmask_b32_e64 v3, v6, v5, s[0:1]
; GFX9-GISEL-NEXT:    ; return to shader part epilog
;
; GFX12-LABEL: test_fminimum_v2f64_ss:
; GFX12:       ; %bb.0:
; GFX12-NEXT:    v_minimum_f64 v[0:1], s[0:1], s[4:5]
; GFX12-NEXT:    v_minimum_f64 v[2:3], s[2:3], s[6:7]
; GFX12-NEXT:    ; return to shader part epilog
  %val = call <2 x double> @llvm.minimum.v2f64(<2 x double> %a, <2 x double> %b)
  %ret = bitcast <2 x double> %val to <4 x float>
  ret <4 x float> %ret
}

define amdgpu_ps <8 x float> @test_fminimum_v4f64(<4 x double> %a, <4 x double> %b) {
; GFX9-SDAG-LABEL: test_fminimum_v4f64:
; GFX9-SDAG:       ; %bb.0:
; GFX9-SDAG-NEXT:    v_min_f64 v[16:17], v[0:1], v[8:9]
; GFX9-SDAG-NEXT:    v_cmp_u_f64_e32 vcc, v[0:1], v[8:9]
; GFX9-SDAG-NEXT:    v_min_f64 v[8:9], v[2:3], v[10:11]
; GFX9-SDAG-NEXT:    v_cmp_u_f64_e64 s[0:1], v[2:3], v[10:11]
; GFX9-SDAG-NEXT:    v_min_f64 v[10:11], v[4:5], v[12:13]
; GFX9-SDAG-NEXT:    v_cmp_u_f64_e64 s[2:3], v[4:5], v[12:13]
; GFX9-SDAG-NEXT:    v_min_f64 v[12:13], v[6:7], v[14:15]
; GFX9-SDAG-NEXT:    v_cmp_u_f64_e64 s[4:5], v[6:7], v[14:15]
; GFX9-SDAG-NEXT:    v_mov_b32_e32 v7, 0x7ff80000
; GFX9-SDAG-NEXT:    v_cndmask_b32_e64 v0, v16, 0, vcc
; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v1, v17, v7, vcc
; GFX9-SDAG-NEXT:    v_cndmask_b32_e64 v2, v8, 0, s[0:1]
; GFX9-SDAG-NEXT:    v_cndmask_b32_e64 v3, v9, v7, s[0:1]
; GFX9-SDAG-NEXT:    v_cndmask_b32_e64 v4, v10, 0, s[2:3]
; GFX9-SDAG-NEXT:    v_cndmask_b32_e64 v5, v11, v7, s[2:3]
; GFX9-SDAG-NEXT:    v_cndmask_b32_e64 v6, v12, 0, s[4:5]
; GFX9-SDAG-NEXT:    v_cndmask_b32_e64 v7, v13, v7, s[4:5]
; GFX9-SDAG-NEXT:    ; return to shader part epilog
;
; GFX9-GISEL-LABEL: test_fminimum_v4f64:
; GFX9-GISEL:       ; %bb.0:
; GFX9-GISEL-NEXT:    v_min_f64 v[16:17], v[0:1], v[8:9]
; GFX9-GISEL-NEXT:    v_cmp_o_f64_e32 vcc, v[0:1], v[8:9]
; GFX9-GISEL-NEXT:    v_min_f64 v[8:9], v[2:3], v[10:11]
; GFX9-GISEL-NEXT:    v_cmp_o_f64_e64 s[0:1], v[2:3], v[10:11]
; GFX9-GISEL-NEXT:    v_min_f64 v[10:11], v[4:5], v[12:13]
; GFX9-GISEL-NEXT:    v_cmp_o_f64_e64 s[2:3], v[4:5], v[12:13]
; GFX9-GISEL-NEXT:    v_min_f64 v[12:13], v[6:7], v[14:15]
; GFX9-GISEL-NEXT:    v_cmp_o_f64_e64 s[4:5], v[6:7], v[14:15]
; GFX9-GISEL-NEXT:    v_mov_b32_e32 v18, 0x7ff80000
; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v0, 0, v16, vcc
; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v1, v18, v17, vcc
; GFX9-GISEL-NEXT:    v_cndmask_b32_e64 v2, 0, v8, s[0:1]
; GFX9-GISEL-NEXT:    v_cndmask_b32_e64 v3, v18, v9, s[0:1]
; GFX9-GISEL-NEXT:    v_cndmask_b32_e64 v4, 0, v10, s[2:3]
; GFX9-GISEL-NEXT:    v_cndmask_b32_e64 v5, v18, v11, s[2:3]
; GFX9-GISEL-NEXT:    v_cndmask_b32_e64 v6, 0, v12, s[4:5]
; GFX9-GISEL-NEXT:    v_cndmask_b32_e64 v7, v18, v13, s[4:5]
; GFX9-GISEL-NEXT:    ; return to shader part epilog
;
; GFX12-LABEL: test_fminimum_v4f64:
; GFX12:       ; %bb.0:
; GFX12-NEXT:    v_minimum_f64 v[0:1], v[0:1], v[8:9]
; GFX12-NEXT:    v_minimum_f64 v[2:3], v[2:3], v[10:11]
; GFX12-NEXT:    v_minimum_f64 v[4:5], v[4:5], v[12:13]
; GFX12-NEXT:    v_minimum_f64 v[6:7], v[6:7], v[14:15]
; GFX12-NEXT:    ; return to shader part epilog
  %val = call <4 x double> @llvm.minimum.v4f64(<4 x double> %a, <4 x double> %b)
  %ret = bitcast <4 x double> %val to <8 x float>
  ret <8 x float> %ret
}

define amdgpu_ps <8 x float> @test_fminimum_v4f64_ss(<4 x double> inreg %a, <4 x double> inreg %b) {
; GFX9-SDAG-LABEL: test_fminimum_v4f64_ss:
; GFX9-SDAG:       ; %bb.0:
; GFX9-SDAG-NEXT:    v_mov_b32_e32 v0, s8
; GFX9-SDAG-NEXT:    v_mov_b32_e32 v1, s9
; GFX9-SDAG-NEXT:    v_min_f64 v[2:3], s[0:1], v[0:1]
; GFX9-SDAG-NEXT:    v_cmp_u_f64_e32 vcc, s[0:1], v[0:1]
; GFX9-SDAG-NEXT:    v_mov_b32_e32 v10, 0x7ff80000
; GFX9-SDAG-NEXT:    v_cndmask_b32_e64 v0, v2, 0, vcc
; GFX9-SDAG-NEXT:    v_mov_b32_e32 v1, s10
; GFX9-SDAG-NEXT:    v_mov_b32_e32 v2, s11
; GFX9-SDAG-NEXT:    v_min_f64 v[4:5], s[2:3], v[1:2]
; GFX9-SDAG-NEXT:    v_cmp_u_f64_e64 s[0:1], s[2:3], v[1:2]
; GFX9-SDAG-NEXT:    v_mov_b32_e32 v1, s12
; GFX9-SDAG-NEXT:    v_mov_b32_e32 v2, s13
; GFX9-SDAG-NEXT:    v_min_f64 v[6:7], s[4:5], v[1:2]
; GFX9-SDAG-NEXT:    v_cmp_u_f64_e64 s[2:3], s[4:5], v[1:2]
; GFX9-SDAG-NEXT:    v_mov_b32_e32 v1, s14
; GFX9-SDAG-NEXT:    v_mov_b32_e32 v2, s15
; GFX9-SDAG-NEXT:    v_min_f64 v[8:9], s[6:7], v[1:2]
; GFX9-SDAG-NEXT:    v_cmp_u_f64_e64 s[4:5], s[6:7], v[1:2]
; GFX9-SDAG-NEXT:    v_cndmask_b32_e32 v1, v3, v10, vcc
; GFX9-SDAG-NEXT:    v_cndmask_b32_e64 v2, v4, 0, s[0:1]
; GFX9-SDAG-NEXT:    v_cndmask_b32_e64 v3, v5, v10, s[0:1]
; GFX9-SDAG-NEXT:    v_cndmask_b32_e64 v4, v6, 0, s[2:3]
; GFX9-SDAG-NEXT:    v_cndmask_b32_e64 v5, v7, v10, s[2:3]
; GFX9-SDAG-NEXT:    v_cndmask_b32_e64 v6, v8, 0, s[4:5]
; GFX9-SDAG-NEXT:    v_cndmask_b32_e64 v7, v9, v10, s[4:5]
; GFX9-SDAG-NEXT:    ; return to shader part epilog
;
; GFX9-GISEL-LABEL: test_fminimum_v4f64_ss:
; GFX9-GISEL:       ; %bb.0:
; GFX9-GISEL-NEXT:    v_mov_b32_e32 v0, s8
; GFX9-GISEL-NEXT:    v_mov_b32_e32 v1, s9
; GFX9-GISEL-NEXT:    v_min_f64 v[2:3], s[0:1], v[0:1]
; GFX9-GISEL-NEXT:    v_cmp_o_f64_e32 vcc, s[0:1], v[0:1]
; GFX9-GISEL-NEXT:    v_mov_b32_e32 v0, s10
; GFX9-GISEL-NEXT:    v_mov_b32_e32 v1, s11
; GFX9-GISEL-NEXT:    v_min_f64 v[4:5], s[2:3], v[0:1]
; GFX9-GISEL-NEXT:    v_cmp_o_f64_e64 s[0:1], s[2:3], v[0:1]
; GFX9-GISEL-NEXT:    v_mov_b32_e32 v0, s12
; GFX9-GISEL-NEXT:    v_mov_b32_e32 v1, s13
; GFX9-GISEL-NEXT:    v_min_f64 v[6:7], s[4:5], v[0:1]
; GFX9-GISEL-NEXT:    v_cmp_o_f64_e64 s[2:3], s[4:5], v[0:1]
; GFX9-GISEL-NEXT:    v_mov_b32_e32 v0, s14
; GFX9-GISEL-NEXT:    v_mov_b32_e32 v1, s15
; GFX9-GISEL-NEXT:    v_min_f64 v[8:9], s[6:7], v[0:1]
; GFX9-GISEL-NEXT:    v_cmp_o_f64_e64 s[4:5], s[6:7], v[0:1]
; GFX9-GISEL-NEXT:    v_mov_b32_e32 v10, 0x7ff80000
; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v0, 0, v2, vcc
; GFX9-GISEL-NEXT:    v_cndmask_b32_e32 v1, v10, v3, vcc
; GFX9-GISEL-NEXT:    v_cndmask_b32_e64 v2, 0, v4, s[0:1]
; GFX9-GISEL-NEXT:    v_cndmask_b32_e64 v3, v10, v5, s[0:1]
; GFX9-GISEL-NEXT:    v_cndmask_b32_e64 v4, 0, v6, s[2:3]
; GFX9-GISEL-NEXT:    v_cndmask_b32_e64 v5, v10, v7, s[2:3]
; GFX9-GISEL-NEXT:    v_cndmask_b32_e64 v6, 0, v8, s[4:5]
; GFX9-GISEL-NEXT:    v_cndmask_b32_e64 v7, v10, v9, s[4:5]
; GFX9-GISEL-NEXT:    ; return to shader part epilog
;
; GFX12-LABEL: test_fminimum_v4f64_ss:
; GFX12:       ; %bb.0:
; GFX12-NEXT:    v_minimum_f64 v[0:1], s[0:1], s[8:9]
; GFX12-NEXT:    v_minimum_f64 v[2:3], s[2:3], s[10:11]
; GFX12-NEXT:    v_minimum_f64 v[4:5], s[4:5], s[12:13]
; GFX12-NEXT:    v_minimum_f64 v[6:7], s[6:7], s[14:15]
; GFX12-NEXT:    ; return to shader part epilog
  %val = call <4 x double> @llvm.minimum.v4f64(<4 x double> %a, <4 x double> %b)
  %ret = bitcast <4 x double> %val to <8 x float>
  ret <8 x float> %ret
}

define amdgpu_kernel void @fminimumi_f32_move_to_valu(ptr addrspace(1) %out, ptr addrspace(1) %aptr, ptr addrspace(1) %bptr) {
; GFX9-LABEL: fminimumi_f32_move_to_valu:
; GFX9:       ; %bb.0:
; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24
; GFX9-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x34
; GFX9-NEXT:    v_mov_b32_e32 v0, 0
; GFX9-NEXT:    v_mov_b32_e32 v3, 0x7fc00000
; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
; GFX9-NEXT:    global_load_dword v1, v0, s[2:3] glc
; GFX9-NEXT:    s_waitcnt vmcnt(0)
; GFX9-NEXT:    global_load_dword v2, v0, s[6:7] glc
; GFX9-NEXT:    s_waitcnt vmcnt(0)
; GFX9-NEXT:    v_min_f32_e32 v4, v1, v2
; GFX9-NEXT:    v_cmp_o_f32_e32 vcc, v1, v2
; GFX9-NEXT:    v_cndmask_b32_e32 v1, v3, v4, vcc
; GFX9-NEXT:    global_store_dword v0, v1, s[0:1]
; GFX9-NEXT:    s_endpgm
;
; GFX12-LABEL: fminimumi_f32_move_to_valu:
; GFX12:       ; %bb.0:
; GFX12-NEXT:    s_clause 0x1
; GFX12-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24
; GFX12-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34
; GFX12-NEXT:    v_mov_b32_e32 v0, 0
; GFX12-NEXT:    s_wait_kmcnt 0x0
; GFX12-NEXT:    global_load_b32 v1, v0, s[2:3] scope:SCOPE_SYS
; GFX12-NEXT:    s_wait_loadcnt 0x0
; GFX12-NEXT:    global_load_b32 v2, v0, s[4:5] scope:SCOPE_SYS
; GFX12-NEXT:    s_wait_loadcnt 0x0
; GFX12-NEXT:    v_minimum_f32 v1, v1, v2
; GFX12-NEXT:    global_store_b32 v0, v1, s[0:1]
; GFX12-NEXT:    s_endpgm
  %a = load volatile float, ptr addrspace(1) %aptr, align 4
  %b = load volatile float, ptr addrspace(1) %bptr, align 4
  %v = call float @llvm.minimum.f32(float %a, float %b)
  store float %v, ptr addrspace(1) %out, align 4
  ret void
}

define amdgpu_kernel void @fminimum_f16_move_to_valu(ptr addrspace(1) %out, ptr addrspace(1) %aptr, ptr addrspace(1) %bptr) {
; GFX9-LABEL: fminimum_f16_move_to_valu:
; GFX9:       ; %bb.0:
; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24
; GFX9-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x34
; GFX9-NEXT:    v_mov_b32_e32 v0, 0
; GFX9-NEXT:    v_mov_b32_e32 v3, 0x7e00
; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
; GFX9-NEXT:    global_load_ushort v1, v0, s[2:3] glc
; GFX9-NEXT:    s_waitcnt vmcnt(0)
; GFX9-NEXT:    global_load_ushort v2, v0, s[6:7] glc
; GFX9-NEXT:    s_waitcnt vmcnt(0)
; GFX9-NEXT:    v_min_f16_e32 v4, v1, v2
; GFX9-NEXT:    v_cmp_o_f16_e32 vcc, v1, v2
; GFX9-NEXT:    v_cndmask_b32_e32 v1, v3, v4, vcc
; GFX9-NEXT:    global_store_short v0, v1, s[0:1]
; GFX9-NEXT:    s_endpgm
;
; GFX12-SDAG-TRUE16-LABEL: fminimum_f16_move_to_valu:
; GFX12-SDAG-TRUE16:       ; %bb.0:
; GFX12-SDAG-TRUE16-NEXT:    s_clause 0x1
; GFX12-SDAG-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24
; GFX12-SDAG-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34
; GFX12-SDAG-TRUE16-NEXT:    v_mov_b32_e32 v1, 0
; GFX12-SDAG-TRUE16-NEXT:    s_wait_kmcnt 0x0
; GFX12-SDAG-TRUE16-NEXT:    global_load_d16_b16 v0, v1, s[2:3] scope:SCOPE_SYS
; GFX12-SDAG-TRUE16-NEXT:    s_wait_loadcnt 0x0
; GFX12-SDAG-TRUE16-NEXT:    global_load_d16_hi_b16 v0, v1, s[4:5] scope:SCOPE_SYS
; GFX12-SDAG-TRUE16-NEXT:    s_wait_loadcnt 0x0
; GFX12-SDAG-TRUE16-NEXT:    v_minimum_f16 v0.l, v0.l, v0.h
; GFX12-SDAG-TRUE16-NEXT:    global_store_b16 v1, v0, s[0:1]
; GFX12-SDAG-TRUE16-NEXT:    s_endpgm
;
; GFX12-SDAG-FAKE16-LABEL: fminimum_f16_move_to_valu:
; GFX12-SDAG-FAKE16:       ; %bb.0:
; GFX12-SDAG-FAKE16-NEXT:    s_clause 0x1
; GFX12-SDAG-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24
; GFX12-SDAG-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34
; GFX12-SDAG-FAKE16-NEXT:    v_mov_b32_e32 v0, 0
; GFX12-SDAG-FAKE16-NEXT:    s_wait_kmcnt 0x0
; GFX12-SDAG-FAKE16-NEXT:    global_load_u16 v1, v0, s[2:3] scope:SCOPE_SYS
; GFX12-SDAG-FAKE16-NEXT:    s_wait_loadcnt 0x0
; GFX12-SDAG-FAKE16-NEXT:    global_load_u16 v2, v0, s[4:5] scope:SCOPE_SYS
; GFX12-SDAG-FAKE16-NEXT:    s_wait_loadcnt 0x0
; GFX12-SDAG-FAKE16-NEXT:    v_minimum_f16 v1, v1, v2
; GFX12-SDAG-FAKE16-NEXT:    global_store_b16 v0, v1, s[0:1]
; GFX12-SDAG-FAKE16-NEXT:    s_endpgm
;
; GFX12-GISEL-TRUE16-LABEL: fminimum_f16_move_to_valu:
; GFX12-GISEL-TRUE16:       ; %bb.0:
; GFX12-GISEL-TRUE16-NEXT:    s_clause 0x1
; GFX12-GISEL-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24
; GFX12-GISEL-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34
; GFX12-GISEL-TRUE16-NEXT:    v_mov_b32_e32 v1, 0
; GFX12-GISEL-TRUE16-NEXT:    s_wait_kmcnt 0x0
; GFX12-GISEL-TRUE16-NEXT:    global_load_d16_b16 v0, v1, s[2:3] scope:SCOPE_SYS
; GFX12-GISEL-TRUE16-NEXT:    s_wait_loadcnt 0x0
; GFX12-GISEL-TRUE16-NEXT:    global_load_d16_hi_b16 v0, v1, s[4:5] scope:SCOPE_SYS
; GFX12-GISEL-TRUE16-NEXT:    s_wait_loadcnt 0x0
; GFX12-GISEL-TRUE16-NEXT:    v_minimum_f16 v0.l, v0.l, v0.h
; GFX12-GISEL-TRUE16-NEXT:    global_store_b16 v1, v0, s[0:1]
; GFX12-GISEL-TRUE16-NEXT:    s_endpgm
;
; GFX12-GISEL-FAKE16-LABEL: fminimum_f16_move_to_valu:
; GFX12-GISEL-FAKE16:       ; %bb.0:
; GFX12-GISEL-FAKE16-NEXT:    s_clause 0x1
; GFX12-GISEL-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24
; GFX12-GISEL-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34
; GFX12-GISEL-FAKE16-NEXT:    v_mov_b32_e32 v0, 0
; GFX12-GISEL-FAKE16-NEXT:    s_wait_kmcnt 0x0
; GFX12-GISEL-FAKE16-NEXT:    global_load_u16 v1, v0, s[2:3] scope:SCOPE_SYS
; GFX12-GISEL-FAKE16-NEXT:    s_wait_loadcnt 0x0
; GFX12-GISEL-FAKE16-NEXT:    global_load_u16 v2, v0, s[4:5] scope:SCOPE_SYS
; GFX12-GISEL-FAKE16-NEXT:    s_wait_loadcnt 0x0
; GFX12-GISEL-FAKE16-NEXT:    v_minimum_f16 v1, v1, v2
; GFX12-GISEL-FAKE16-NEXT:    global_store_b16 v0, v1, s[0:1]
; GFX12-GISEL-FAKE16-NEXT:    s_endpgm
  %a = load volatile half, ptr addrspace(1) %aptr, align 4
  %b = load volatile half, ptr addrspace(1) %bptr, align 4
  %v = call half @llvm.minimum.f16(half %a, half %b)
  store half %v, ptr addrspace(1) %out, align 4
  ret void
}

define amdgpu_ps float @test_fminimum_f32_ieee_on(float %a, float %b) #0 {
; GFX9-LABEL: test_fminimum_f32_ieee_on:
; GFX9:       ; %bb.0:
; GFX9-NEXT:    v_min_f32_e32 v2, v0, v1
; GFX9-NEXT:    v_mov_b32_e32 v3, 0x7fc00000
; GFX9-NEXT:    v_cmp_o_f32_e32 vcc, v0, v1
; GFX9-NEXT:    v_cndmask_b32_e32 v0, v3, v2, vcc
; GFX9-NEXT:    ; return to shader part epilog
;
; GFX12-LABEL: test_fminimum_f32_ieee_on:
; GFX12:       ; %bb.0:
; GFX12-NEXT:    v_minimum_f32 v0, v0, v1
; GFX12-NEXT:    ; return to shader part epilog
  %val = call float @llvm.minimum.f32(float %a, float %b)
  ret float %val
}

define amdgpu_ps float @test_fminimum_f32_ieee_off(float %a, float %b) #1 {
; GFX9-LABEL: test_fminimum_f32_ieee_off:
; GFX9:       ; %bb.0:
; GFX9-NEXT:    v_min_f32_e32 v2, v0, v1
; GFX9-NEXT:    v_mov_b32_e32 v3, 0x7fc00000
; GFX9-NEXT:    v_cmp_o_f32_e32 vcc, v0, v1
; GFX9-NEXT:    v_cndmask_b32_e32 v0, v3, v2, vcc
; GFX9-NEXT:    ; return to shader part epilog
;
; GFX12-LABEL: test_fminimum_f32_ieee_off:
; GFX12:       ; %bb.0:
; GFX12-NEXT:    v_minimum_f32 v0, v0, v1
; GFX12-NEXT:    ; return to shader part epilog
  %val = call float @llvm.minimum.f32(float %a, float %b)
  ret float %val
}

declare float @llvm.minimum.f32(float, float)
declare <2 x float> @llvm.minimum.v2f32(<2 x float>, <2 x float>)
declare <3 x float> @llvm.minimum.v3f32(<3 x float>, <3 x float>)
declare <4 x float> @llvm.minimum.v4f32(<4 x float>, <4 x float>)
declare <16 x float> @llvm.minimum.v16f32(<16 x float>, <16 x float>)
declare half @llvm.minimum.f16(half, half)
declare <2 x half> @llvm.minimum.v2f16(<2 x half>, <2 x half>)
declare <3 x half> @llvm.minimum.v3f16(<3 x half>, <3 x half>)
declare <4 x half> @llvm.minimum.v4f16(<4 x half>, <4 x half>)
declare double @llvm.minimum.f64(double, double)
declare <2 x double> @llvm.minimum.v2f64(<2 x double>, <2 x double>)
declare <4 x double> @llvm.minimum.v4f64(<4 x double>, <4 x double>)

attributes #0 = { nounwind "amdgpu-ieee"="true" }
attributes #1 = { nounwind "amdgpu-ieee"="false" }
