; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 6
; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck %s

; Check that nofpclass attributes on call returns are used in
; selectiondag.

define internal float @func_f32(ptr addrspace(1) %ptr) {
; CHECK-LABEL: func_f32:
; CHECK:       ; %bb.0:
; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; CHECK-NEXT:    global_load_dword v0, v[0:1], off glc
; CHECK-NEXT:    s_waitcnt vmcnt(0)
; CHECK-NEXT:    s_setpc_b64 s[30:31]
  %ld = load volatile float, ptr addrspace(1) %ptr
  ret float %ld
}

define float @call_nofpclass_funcs_f32(ptr addrspace(1) %ptr) {
; CHECK-LABEL: call_nofpclass_funcs_f32:
; CHECK:       ; %bb.0:
; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; CHECK-NEXT:    s_mov_b32 s18, s33
; CHECK-NEXT:    s_mov_b32 s33, s32
; CHECK-NEXT:    s_xor_saveexec_b64 s[16:17], -1
; CHECK-NEXT:    buffer_store_dword v4, off, s[0:3], s33 ; 4-byte Folded Spill
; CHECK-NEXT:    s_mov_b64 exec, s[16:17]
; CHECK-NEXT:    s_addk_i32 s32, 0x400
; CHECK-NEXT:    v_writelane_b32 v4, s30, 0
; CHECK-NEXT:    s_getpc_b64 s[16:17]
; CHECK-NEXT:    s_add_u32 s16, s16, func_f32@rel32@lo+4
; CHECK-NEXT:    s_addc_u32 s17, s17, func_f32@rel32@hi+12
; CHECK-NEXT:    v_writelane_b32 v4, s31, 1
; CHECK-NEXT:    v_mov_b32_e32 v2, v0
; CHECK-NEXT:    s_swappc_b64 s[30:31], s[16:17]
; CHECK-NEXT:    v_mov_b32_e32 v3, v0
; CHECK-NEXT:    v_mov_b32_e32 v0, v2
; CHECK-NEXT:    s_swappc_b64 s[30:31], s[16:17]
; CHECK-NEXT:    v_min_f32_e32 v0, v3, v0
; CHECK-NEXT:    v_readlane_b32 s31, v4, 1
; CHECK-NEXT:    v_readlane_b32 s30, v4, 0
; CHECK-NEXT:    s_mov_b32 s32, s33
; CHECK-NEXT:    s_xor_saveexec_b64 s[4:5], -1
; CHECK-NEXT:    buffer_load_dword v4, off, s[0:3], s33 ; 4-byte Folded Reload
; CHECK-NEXT:    s_mov_b64 exec, s[4:5]
; CHECK-NEXT:    s_mov_b32 s33, s18
; CHECK-NEXT:    s_waitcnt vmcnt(0)
; CHECK-NEXT:    s_setpc_b64 s[30:31]
  %call0 = call nofpclass(nan) float @func_f32(ptr addrspace(1) %ptr)
  %call1 = call nofpclass(nan) float @func_f32(ptr addrspace(1) %ptr)
  %min = call float @llvm.minnum.f32(float %call0, float %call1)
  ret float %min
}

define internal <2 x float> @func_v2f32(ptr addrspace(1) %ptr) {
; CHECK-LABEL: func_v2f32:
; CHECK:       ; %bb.0:
; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; CHECK-NEXT:    global_load_dwordx2 v[0:1], v[0:1], off glc
; CHECK-NEXT:    s_waitcnt vmcnt(0)
; CHECK-NEXT:    s_setpc_b64 s[30:31]
  %ld = load volatile <2 x float>, ptr addrspace(1) %ptr
  ret <2 x float> %ld
}

define <2 x float> @call_nofpclass_funcs_v2f32(ptr addrspace(1) %ptr) {
; CHECK-LABEL: call_nofpclass_funcs_v2f32:
; CHECK:       ; %bb.0:
; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; CHECK-NEXT:    s_mov_b32 s18, s33
; CHECK-NEXT:    s_mov_b32 s33, s32
; CHECK-NEXT:    s_xor_saveexec_b64 s[16:17], -1
; CHECK-NEXT:    buffer_store_dword v6, off, s[0:3], s33 ; 4-byte Folded Spill
; CHECK-NEXT:    s_mov_b64 exec, s[16:17]
; CHECK-NEXT:    s_addk_i32 s32, 0x400
; CHECK-NEXT:    v_writelane_b32 v6, s30, 0
; CHECK-NEXT:    s_getpc_b64 s[16:17]
; CHECK-NEXT:    s_add_u32 s16, s16, func_v2f32@rel32@lo+4
; CHECK-NEXT:    s_addc_u32 s17, s17, func_v2f32@rel32@hi+12
; CHECK-NEXT:    v_writelane_b32 v6, s31, 1
; CHECK-NEXT:    v_mov_b32_e32 v2, v1
; CHECK-NEXT:    v_mov_b32_e32 v3, v0
; CHECK-NEXT:    s_swappc_b64 s[30:31], s[16:17]
; CHECK-NEXT:    v_mov_b32_e32 v4, v0
; CHECK-NEXT:    v_mov_b32_e32 v5, v1
; CHECK-NEXT:    v_mov_b32_e32 v0, v3
; CHECK-NEXT:    v_mov_b32_e32 v1, v2
; CHECK-NEXT:    s_swappc_b64 s[30:31], s[16:17]
; CHECK-NEXT:    v_min_f32_e32 v0, v4, v0
; CHECK-NEXT:    v_min_f32_e32 v1, v5, v1
; CHECK-NEXT:    v_readlane_b32 s31, v6, 1
; CHECK-NEXT:    v_readlane_b32 s30, v6, 0
; CHECK-NEXT:    s_mov_b32 s32, s33
; CHECK-NEXT:    s_xor_saveexec_b64 s[4:5], -1
; CHECK-NEXT:    buffer_load_dword v6, off, s[0:3], s33 ; 4-byte Folded Reload
; CHECK-NEXT:    s_mov_b64 exec, s[4:5]
; CHECK-NEXT:    s_mov_b32 s33, s18
; CHECK-NEXT:    s_waitcnt vmcnt(0)
; CHECK-NEXT:    s_setpc_b64 s[30:31]
  %call0 = call nofpclass(nan) <2 x float> @func_v2f32(ptr addrspace(1) %ptr)
  %call1 = call nofpclass(nan) <2 x float> @func_v2f32(ptr addrspace(1) %ptr)
  %min = call <2 x float> @llvm.minnum.v2f32(<2 x float> %call0, <2 x float> %call1)
  ret <2 x float> %min
}

define internal double @func_f64(ptr addrspace(1) %ptr) {
; CHECK-LABEL: func_f64:
; CHECK:       ; %bb.0:
; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; CHECK-NEXT:    global_load_dwordx2 v[0:1], v[0:1], off glc
; CHECK-NEXT:    s_waitcnt vmcnt(0)
; CHECK-NEXT:    s_setpc_b64 s[30:31]
  %ld = load volatile double, ptr addrspace(1) %ptr
  ret double %ld
}

define double @call_nofpclass_funcs_f64(ptr addrspace(1) %ptr) {
; CHECK-LABEL: call_nofpclass_funcs_f64:
; CHECK:       ; %bb.0:
; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; CHECK-NEXT:    s_mov_b32 s18, s33
; CHECK-NEXT:    s_mov_b32 s33, s32
; CHECK-NEXT:    s_xor_saveexec_b64 s[16:17], -1
; CHECK-NEXT:    buffer_store_dword v6, off, s[0:3], s33 ; 4-byte Folded Spill
; CHECK-NEXT:    s_mov_b64 exec, s[16:17]
; CHECK-NEXT:    s_addk_i32 s32, 0x400
; CHECK-NEXT:    v_writelane_b32 v6, s30, 0
; CHECK-NEXT:    s_getpc_b64 s[16:17]
; CHECK-NEXT:    s_add_u32 s16, s16, func_f64@rel32@lo+4
; CHECK-NEXT:    s_addc_u32 s17, s17, func_f64@rel32@hi+12
; CHECK-NEXT:    v_writelane_b32 v6, s31, 1
; CHECK-NEXT:    v_mov_b32_e32 v4, v1
; CHECK-NEXT:    v_mov_b32_e32 v5, v0
; CHECK-NEXT:    s_swappc_b64 s[30:31], s[16:17]
; CHECK-NEXT:    v_mov_b32_e32 v2, v0
; CHECK-NEXT:    v_mov_b32_e32 v3, v1
; CHECK-NEXT:    v_mov_b32_e32 v0, v5
; CHECK-NEXT:    v_mov_b32_e32 v1, v4
; CHECK-NEXT:    s_swappc_b64 s[30:31], s[16:17]
; CHECK-NEXT:    v_min_f64 v[0:1], v[2:3], v[0:1]
; CHECK-NEXT:    v_readlane_b32 s31, v6, 1
; CHECK-NEXT:    v_readlane_b32 s30, v6, 0
; CHECK-NEXT:    s_mov_b32 s32, s33
; CHECK-NEXT:    s_xor_saveexec_b64 s[4:5], -1
; CHECK-NEXT:    buffer_load_dword v6, off, s[0:3], s33 ; 4-byte Folded Reload
; CHECK-NEXT:    s_mov_b64 exec, s[4:5]
; CHECK-NEXT:    s_mov_b32 s33, s18
; CHECK-NEXT:    s_waitcnt vmcnt(0)
; CHECK-NEXT:    s_setpc_b64 s[30:31]
  %call0 = call nofpclass(nan) double @func_f64(ptr addrspace(1) %ptr)
  %call1 = call nofpclass(nan) double @func_f64(ptr addrspace(1) %ptr)
  %min = call double @llvm.minnum.f64(double %call0, double %call1)
  ret double %min
}

define float @call_nofpclass_intrinsic_f32(float %x, float %y, float %z) {
; CHECK-LABEL: call_nofpclass_intrinsic_f32:
; CHECK:       ; %bb.0:
; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; CHECK-NEXT:    v_sqrt_f32_e32 v0, v0
; CHECK-NEXT:    v_sqrt_f32_e32 v1, v1
; CHECK-NEXT:    v_cmp_lt_f32_e32 vcc, v0, v1
; CHECK-NEXT:    v_cndmask_b32_e32 v0, v1, v0, vcc
; CHECK-NEXT:    s_setpc_b64 s[30:31]
  %call0 = call nofpclass(nan) float @llvm.amdgcn.sqrt.f32(float %x)
  %call1 = call nofpclass(nan) float @llvm.amdgcn.sqrt.f32(float %y)
  %lt = fcmp olt float %call0, %call1
  %min = select nsz i1 %lt, float %call0, float %call1
  ret float %min
}

define <2 x half> @call_nofpclass_intrinsic_v2f16(float %x, float %y, float %z, float %w) {
; CHECK-LABEL: call_nofpclass_intrinsic_v2f16:
; CHECK:       ; %bb.0:
; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; CHECK-NEXT:    v_cvt_pkrtz_f16_f32 v0, v0, v1
; CHECK-NEXT:    v_cvt_pkrtz_f16_f32 v1, v2, v3
; CHECK-NEXT:    v_lshrrev_b32_e32 v2, 16, v1
; CHECK-NEXT:    v_lshrrev_b32_e32 v3, 16, v0
; CHECK-NEXT:    v_cmp_lt_f16_e32 vcc, v0, v1
; CHECK-NEXT:    v_cndmask_b32_e32 v0, v1, v0, vcc
; CHECK-NEXT:    v_cmp_lt_f16_e32 vcc, v3, v2
; CHECK-NEXT:    v_cndmask_b32_e32 v1, v2, v3, vcc
; CHECK-NEXT:    s_mov_b32 s4, 0x5040100
; CHECK-NEXT:    v_perm_b32 v0, v1, v0, s4
; CHECK-NEXT:    s_setpc_b64 s[30:31]
  %call0 = call nofpclass(nan) <2 x half> @llvm.amdgcn.cvt.pkrtz(float %x, float %y)
  %call1 = call nofpclass(nan) <2 x half> @llvm.amdgcn.cvt.pkrtz(float %z, float %w)
  %lt = fcmp olt <2 x half> %call0, %call1
  %min = select nsz <2 x i1> %lt, <2 x half> %call0, <2 x half> %call1
  ret <2 x half> %min
}

define nofpclass(nan inf) { double, double } @aggregate() {
; CHECK-LABEL: aggregate:
; CHECK:       ; %bb.0: ; %entry
; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; CHECK-NEXT:    s_mov_b32 s16, s33
; CHECK-NEXT:    s_mov_b32 s33, s32
; CHECK-NEXT:    s_or_saveexec_b64 s[18:19], -1
; CHECK-NEXT:    buffer_store_dword v40, off, s[0:3], s33 ; 4-byte Folded Spill
; CHECK-NEXT:    s_mov_b64 exec, s[18:19]
; CHECK-NEXT:    s_addk_i32 s32, 0x400
; CHECK-NEXT:    v_writelane_b32 v40, s16, 2
; CHECK-NEXT:    s_getpc_b64 s[16:17]
; CHECK-NEXT:    s_add_u32 s16, s16, aggregate@gotpcrel32@lo+4
; CHECK-NEXT:    s_addc_u32 s17, s17, aggregate@gotpcrel32@hi+12
; CHECK-NEXT:    s_load_dwordx2 s[16:17], s[16:17], 0x0
; CHECK-NEXT:    v_writelane_b32 v40, s30, 0
; CHECK-NEXT:    v_writelane_b32 v40, s31, 1
; CHECK-NEXT:    s_waitcnt lgkmcnt(0)
; CHECK-NEXT:    s_swappc_b64 s[30:31], s[16:17]
; CHECK-NEXT:    v_readlane_b32 s31, v40, 1
; CHECK-NEXT:    v_readlane_b32 s30, v40, 0
; CHECK-NEXT:    s_mov_b32 s32, s33
; CHECK-NEXT:    v_readlane_b32 s4, v40, 2
; CHECK-NEXT:    s_or_saveexec_b64 s[6:7], -1
; CHECK-NEXT:    buffer_load_dword v40, off, s[0:3], s33 ; 4-byte Folded Reload
; CHECK-NEXT:    s_mov_b64 exec, s[6:7]
; CHECK-NEXT:    s_mov_b32 s33, s4
; CHECK-NEXT:    s_waitcnt vmcnt(0)
; CHECK-NEXT:    s_setpc_b64 s[30:31]
entry:
  %call.i.i = call { double, double } @aggregate()
  ret { double, double } %call.i.i
}

declare hidden nofpclass(nan inf) { float, float } @aggregate_f32()

define { float, float } @aggregate_use(float %z) {
; CHECK-LABEL: aggregate_use:
; CHECK:       ; %bb.0:
; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; CHECK-NEXT:    s_mov_b32 s16, s33
; CHECK-NEXT:    s_mov_b32 s33, s32
; CHECK-NEXT:    s_or_saveexec_b64 s[18:19], -1
; CHECK-NEXT:    buffer_store_dword v41, off, s[0:3], s33 offset:4 ; 4-byte Folded Spill
; CHECK-NEXT:    s_mov_b64 exec, s[18:19]
; CHECK-NEXT:    v_writelane_b32 v41, s16, 2
; CHECK-NEXT:    s_addk_i32 s32, 0x400
; CHECK-NEXT:    v_writelane_b32 v41, s30, 0
; CHECK-NEXT:    s_getpc_b64 s[16:17]
; CHECK-NEXT:    s_add_u32 s16, s16, aggregate_f32@rel32@lo+4
; CHECK-NEXT:    s_addc_u32 s17, s17, aggregate_f32@rel32@hi+12
; CHECK-NEXT:    buffer_store_dword v40, off, s[0:3], s33 ; 4-byte Folded Spill
; CHECK-NEXT:    v_writelane_b32 v41, s31, 1
; CHECK-NEXT:    v_mov_b32_e32 v40, v0
; CHECK-NEXT:    s_swappc_b64 s[30:31], s[16:17]
; CHECK-NEXT:    v_max_f32_e32 v2, v40, v40
; CHECK-NEXT:    buffer_load_dword v40, off, s[0:3], s33 ; 4-byte Folded Reload
; CHECK-NEXT:    v_min_f32_e32 v0, v0, v2
; CHECK-NEXT:    v_min_f32_e32 v1, v1, v2
; CHECK-NEXT:    v_readlane_b32 s31, v41, 1
; CHECK-NEXT:    v_readlane_b32 s30, v41, 0
; CHECK-NEXT:    s_mov_b32 s32, s33
; CHECK-NEXT:    v_readlane_b32 s4, v41, 2
; CHECK-NEXT:    s_or_saveexec_b64 s[6:7], -1
; CHECK-NEXT:    buffer_load_dword v41, off, s[0:3], s33 offset:4 ; 4-byte Folded Reload
; CHECK-NEXT:    s_mov_b64 exec, s[6:7]
; CHECK-NEXT:    s_mov_b32 s33, s4
; CHECK-NEXT:    s_waitcnt vmcnt(0)
; CHECK-NEXT:    s_setpc_b64 s[30:31]
   %call = call nofpclass(nan inf) { float, float } @aggregate_f32()
   %i = extractvalue { float, float } %call, 0
   %i1 = extractvalue { float, float } %call, 1
   %min0 = call float @llvm.minnum.f32(float %i, float %z)
   %min1 = call float @llvm.minnum.f32(float %i1, float %z)
   %insert.0 = insertvalue { float, float } poison, float %min0, 0
   %insert.1 = insertvalue { float, float } %insert.0, float %min1, 1
   ret { float, float } %insert.1
}

define internal <5 x double> @func_v5f64(ptr addrspace(1) %ptr) {
; CHECK-LABEL: func_v5f64:
; CHECK:       ; %bb.0:
; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; CHECK-NEXT:    v_mov_b32_e32 v11, v1
; CHECK-NEXT:    v_mov_b32_e32 v10, v0
; CHECK-NEXT:    global_load_dwordx4 v[0:3], v[10:11], off glc
; CHECK-NEXT:    s_waitcnt vmcnt(0)
; CHECK-NEXT:    global_load_dwordx4 v[4:7], v[10:11], off offset:16 glc
; CHECK-NEXT:    s_waitcnt vmcnt(0)
; CHECK-NEXT:    global_load_dwordx2 v[8:9], v[10:11], off offset:32 glc
; CHECK-NEXT:    s_waitcnt vmcnt(0)
; CHECK-NEXT:    s_setpc_b64 s[30:31]
  %ld = load volatile <5 x double>, ptr addrspace(1) %ptr
  ret <5 x double> %ld
}

define <5 x double> @call_nofpclass_funcs_v5f64_non_mvt_vector(ptr addrspace(1) %ptr) {
; CHECK-LABEL: call_nofpclass_funcs_v5f64_non_mvt_vector:
; CHECK:       ; %bb.0:
; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; CHECK-NEXT:    s_mov_b32 s18, s33
; CHECK-NEXT:    s_mov_b32 s33, s32
; CHECK-NEXT:    s_xor_saveexec_b64 s[16:17], -1
; CHECK-NEXT:    buffer_store_dword v24, off, s[0:3], s33 ; 4-byte Folded Spill
; CHECK-NEXT:    s_mov_b64 exec, s[16:17]
; CHECK-NEXT:    s_addk_i32 s32, 0x400
; CHECK-NEXT:    v_writelane_b32 v24, s30, 0
; CHECK-NEXT:    s_getpc_b64 s[16:17]
; CHECK-NEXT:    s_add_u32 s16, s16, func_v5f64@rel32@lo+4
; CHECK-NEXT:    s_addc_u32 s17, s17, func_v5f64@rel32@hi+12
; CHECK-NEXT:    v_writelane_b32 v24, s31, 1
; CHECK-NEXT:    v_mov_b32_e32 v22, v1
; CHECK-NEXT:    v_mov_b32_e32 v23, v0
; CHECK-NEXT:    s_swappc_b64 s[30:31], s[16:17]
; CHECK-NEXT:    v_mov_b32_e32 v12, v0
; CHECK-NEXT:    v_mov_b32_e32 v13, v1
; CHECK-NEXT:    v_mov_b32_e32 v0, v23
; CHECK-NEXT:    v_mov_b32_e32 v1, v22
; CHECK-NEXT:    v_mov_b32_e32 v14, v2
; CHECK-NEXT:    v_mov_b32_e32 v15, v3
; CHECK-NEXT:    v_mov_b32_e32 v16, v4
; CHECK-NEXT:    v_mov_b32_e32 v17, v5
; CHECK-NEXT:    v_mov_b32_e32 v18, v6
; CHECK-NEXT:    v_mov_b32_e32 v19, v7
; CHECK-NEXT:    v_mov_b32_e32 v20, v8
; CHECK-NEXT:    v_mov_b32_e32 v21, v9
; CHECK-NEXT:    s_swappc_b64 s[30:31], s[16:17]
; CHECK-NEXT:    v_min_f64 v[0:1], v[12:13], v[0:1]
; CHECK-NEXT:    v_min_f64 v[2:3], v[14:15], v[2:3]
; CHECK-NEXT:    v_min_f64 v[4:5], v[16:17], v[4:5]
; CHECK-NEXT:    v_min_f64 v[6:7], v[18:19], v[6:7]
; CHECK-NEXT:    v_min_f64 v[8:9], v[20:21], v[8:9]
; CHECK-NEXT:    v_readlane_b32 s31, v24, 1
; CHECK-NEXT:    v_readlane_b32 s30, v24, 0
; CHECK-NEXT:    s_mov_b32 s32, s33
; CHECK-NEXT:    s_xor_saveexec_b64 s[4:5], -1
; CHECK-NEXT:    buffer_load_dword v24, off, s[0:3], s33 ; 4-byte Folded Reload
; CHECK-NEXT:    s_mov_b64 exec, s[4:5]
; CHECK-NEXT:    s_mov_b32 s33, s18
; CHECK-NEXT:    s_waitcnt vmcnt(0)
; CHECK-NEXT:    s_setpc_b64 s[30:31]
  %call0 = call nofpclass(nan) <5 x double> @func_v5f64(ptr addrspace(1) %ptr)
  %call1 = call nofpclass(nan) <5 x double> @func_v5f64(ptr addrspace(1) %ptr)
  %min = call <5 x double> @llvm.minnum.v5f64(<5 x double> %call0, <5 x double> %call1)
  ret <5 x double> %min
}
