brintos

brintos / llvm-project-archived public Read only

0
0
Text · 18.6 KiB · b239c46 Raw
469 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 62; RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=tahiti < %s | FileCheck -check-prefix=GCN %s3 4define amdgpu_kernel void @kernel_ieee_mode_default() #0 {5; GCN-LABEL: kernel_ieee_mode_default:6; GCN:         .amd_kernel_code_t7; GCN-NEXT:     amd_code_version_major = 18; GCN-NEXT:     amd_code_version_minor = 29; GCN-NEXT:     amd_machine_kind = 110; GCN-NEXT:     amd_machine_version_major = 611; GCN-NEXT:     amd_machine_version_minor = 012; GCN-NEXT:     amd_machine_version_stepping = 013; GCN-NEXT:     kernel_code_entry_byte_offset = 25614; GCN-NEXT:     kernel_code_prefetch_byte_size = 015; GCN-NEXT:     granulated_workitem_vgpr_count = 016; GCN-NEXT:     granulated_wavefront_sgpr_count = 017; GCN-NEXT:     priority = 018; GCN-NEXT:     float_mode = 24019; GCN-NEXT:     priv = 020; GCN-NEXT:     enable_dx10_clamp = 121; GCN-NEXT:     debug_mode = 022; GCN-NEXT:     enable_ieee_mode = 123; GCN-NEXT:     enable_wgp_mode = 024; GCN-NEXT:     enable_mem_ordered = 025; GCN-NEXT:     enable_fwd_progress = 026; GCN-NEXT:     enable_sgpr_private_segment_wave_byte_offset = 027; GCN-NEXT:     user_sgpr_count = 1228; GCN-NEXT:     enable_trap_handler = 029; GCN-NEXT:     enable_sgpr_workgroup_id_x = 130; GCN-NEXT:     enable_sgpr_workgroup_id_y = 131; GCN-NEXT:     enable_sgpr_workgroup_id_z = 132; GCN-NEXT:     enable_sgpr_workgroup_info = 033; GCN-NEXT:     enable_vgpr_workitem_id = 234; GCN-NEXT:     enable_exception_msb = 035; GCN-NEXT:     granulated_lds_size = 036; GCN-NEXT:     enable_exception = 037; GCN-NEXT:     enable_sgpr_private_segment_buffer = 138; GCN-NEXT:     enable_sgpr_dispatch_ptr = 139; GCN-NEXT:     enable_sgpr_queue_ptr = 140; GCN-NEXT:     enable_sgpr_kernarg_segment_ptr = 141; GCN-NEXT:     enable_sgpr_dispatch_id = 142; GCN-NEXT:     enable_sgpr_flat_scratch_init = 043; GCN-NEXT:     enable_sgpr_private_segment_size = 044; GCN-NEXT:     enable_sgpr_grid_workgroup_count_x = 045; GCN-NEXT:     enable_sgpr_grid_workgroup_count_y = 046; GCN-NEXT:     enable_sgpr_grid_workgroup_count_z = 047; GCN-NEXT:     enable_wavefront_size32 = 048; GCN-NEXT:     enable_ordered_append_gds = 049; GCN-NEXT:     private_element_size = 150; GCN-NEXT:     is_ptr64 = 151; GCN-NEXT:     is_dynamic_callstack = 052; GCN-NEXT:     is_debug_enabled = 053; GCN-NEXT:     is_xnack_enabled = 054; GCN-NEXT:     workitem_private_segment_byte_size = 055; GCN-NEXT:     workgroup_group_segment_byte_size = 056; GCN-NEXT:     gds_segment_byte_size = 057; GCN-NEXT:     kernarg_segment_byte_size = 1658; GCN-NEXT:     workgroup_fbarrier_count = 059; GCN-NEXT:     wavefront_sgpr_count = 460; GCN-NEXT:     workitem_vgpr_count = 261; GCN-NEXT:     reserved_vgpr_first = 062; GCN-NEXT:     reserved_vgpr_count = 063; GCN-NEXT:     reserved_sgpr_first = 064; GCN-NEXT:     reserved_sgpr_count = 065; GCN-NEXT:     debug_wavefront_private_segment_offset_sgpr = 066; GCN-NEXT:     debug_private_segment_buffer_sgpr = 067; GCN-NEXT:     kernarg_segment_alignment = 468; GCN-NEXT:     group_segment_alignment = 469; GCN-NEXT:     private_segment_alignment = 470; GCN-NEXT:     wavefront_size = 671; GCN-NEXT:     call_convention = -172; GCN-NEXT:     runtime_loader_kernel_symbol = 073; GCN-NEXT:    .end_amd_kernel_code_t74; GCN-NEXT:  ; %bb.0:75; GCN-NEXT:    s_mov_b32 s3, 0xf00076; GCN-NEXT:    s_mov_b32 s2, -177; GCN-NEXT:    buffer_load_dword v0, off, s[0:3], 0 glc78; GCN-NEXT:    s_waitcnt vmcnt(0)79; GCN-NEXT:    buffer_load_dword v1, off, s[0:3], 0 glc80; GCN-NEXT:    s_waitcnt vmcnt(0)81; GCN-NEXT:    v_mul_f32_e32 v0, 1.0, v082; GCN-NEXT:    v_mul_f32_e32 v1, 1.0, v183; GCN-NEXT:    v_min_f32_e32 v0, v0, v184; GCN-NEXT:    buffer_store_dword v0, off, s[0:3], 085; GCN-NEXT:    s_waitcnt vmcnt(0)86; GCN-NEXT:    s_endpgm87  %val0 = load volatile float, ptr addrspace(1) poison88  %val1 = load volatile float, ptr addrspace(1) poison89  %min = call float @llvm.minnum.f32(float %val0, float %val1)90  store volatile float %min, ptr addrspace(1) poison91  ret void92}93 94define amdgpu_kernel void @kernel_ieee_mode_on() #1 {95; GCN-LABEL: kernel_ieee_mode_on:96; GCN:         .amd_kernel_code_t97; GCN-NEXT:     amd_code_version_major = 198; GCN-NEXT:     amd_code_version_minor = 299; GCN-NEXT:     amd_machine_kind = 1100; GCN-NEXT:     amd_machine_version_major = 6101; GCN-NEXT:     amd_machine_version_minor = 0102; GCN-NEXT:     amd_machine_version_stepping = 0103; GCN-NEXT:     kernel_code_entry_byte_offset = 256104; GCN-NEXT:     kernel_code_prefetch_byte_size = 0105; GCN-NEXT:     granulated_workitem_vgpr_count = 0106; GCN-NEXT:     granulated_wavefront_sgpr_count = 0107; GCN-NEXT:     priority = 0108; GCN-NEXT:     float_mode = 240109; GCN-NEXT:     priv = 0110; GCN-NEXT:     enable_dx10_clamp = 1111; GCN-NEXT:     debug_mode = 0112; GCN-NEXT:     enable_ieee_mode = 1113; GCN-NEXT:     enable_wgp_mode = 0114; GCN-NEXT:     enable_mem_ordered = 0115; GCN-NEXT:     enable_fwd_progress = 0116; GCN-NEXT:     enable_sgpr_private_segment_wave_byte_offset = 0117; GCN-NEXT:     user_sgpr_count = 12118; GCN-NEXT:     enable_trap_handler = 0119; GCN-NEXT:     enable_sgpr_workgroup_id_x = 1120; GCN-NEXT:     enable_sgpr_workgroup_id_y = 1121; GCN-NEXT:     enable_sgpr_workgroup_id_z = 1122; GCN-NEXT:     enable_sgpr_workgroup_info = 0123; GCN-NEXT:     enable_vgpr_workitem_id = 2124; GCN-NEXT:     enable_exception_msb = 0125; GCN-NEXT:     granulated_lds_size = 0126; GCN-NEXT:     enable_exception = 0127; GCN-NEXT:     enable_sgpr_private_segment_buffer = 1128; GCN-NEXT:     enable_sgpr_dispatch_ptr = 1129; GCN-NEXT:     enable_sgpr_queue_ptr = 1130; GCN-NEXT:     enable_sgpr_kernarg_segment_ptr = 1131; GCN-NEXT:     enable_sgpr_dispatch_id = 1132; GCN-NEXT:     enable_sgpr_flat_scratch_init = 0133; GCN-NEXT:     enable_sgpr_private_segment_size = 0134; GCN-NEXT:     enable_sgpr_grid_workgroup_count_x = 0135; GCN-NEXT:     enable_sgpr_grid_workgroup_count_y = 0136; GCN-NEXT:     enable_sgpr_grid_workgroup_count_z = 0137; GCN-NEXT:     enable_wavefront_size32 = 0138; GCN-NEXT:     enable_ordered_append_gds = 0139; GCN-NEXT:     private_element_size = 1140; GCN-NEXT:     is_ptr64 = 1141; GCN-NEXT:     is_dynamic_callstack = 0142; GCN-NEXT:     is_debug_enabled = 0143; GCN-NEXT:     is_xnack_enabled = 0144; GCN-NEXT:     workitem_private_segment_byte_size = 0145; GCN-NEXT:     workgroup_group_segment_byte_size = 0146; GCN-NEXT:     gds_segment_byte_size = 0147; GCN-NEXT:     kernarg_segment_byte_size = 16148; GCN-NEXT:     workgroup_fbarrier_count = 0149; GCN-NEXT:     wavefront_sgpr_count = 4150; GCN-NEXT:     workitem_vgpr_count = 2151; GCN-NEXT:     reserved_vgpr_first = 0152; GCN-NEXT:     reserved_vgpr_count = 0153; GCN-NEXT:     reserved_sgpr_first = 0154; GCN-NEXT:     reserved_sgpr_count = 0155; GCN-NEXT:     debug_wavefront_private_segment_offset_sgpr = 0156; GCN-NEXT:     debug_private_segment_buffer_sgpr = 0157; GCN-NEXT:     kernarg_segment_alignment = 4158; GCN-NEXT:     group_segment_alignment = 4159; GCN-NEXT:     private_segment_alignment = 4160; GCN-NEXT:     wavefront_size = 6161; GCN-NEXT:     call_convention = -1162; GCN-NEXT:     runtime_loader_kernel_symbol = 0163; GCN-NEXT:    .end_amd_kernel_code_t164; GCN-NEXT:  ; %bb.0:165; GCN-NEXT:    s_mov_b32 s3, 0xf000166; GCN-NEXT:    s_mov_b32 s2, -1167; GCN-NEXT:    buffer_load_dword v0, off, s[0:3], 0 glc168; GCN-NEXT:    s_waitcnt vmcnt(0)169; GCN-NEXT:    buffer_load_dword v1, off, s[0:3], 0 glc170; GCN-NEXT:    s_waitcnt vmcnt(0)171; GCN-NEXT:    v_mul_f32_e32 v0, 1.0, v0172; GCN-NEXT:    v_mul_f32_e32 v1, 1.0, v1173; GCN-NEXT:    v_min_f32_e32 v0, v0, v1174; GCN-NEXT:    buffer_store_dword v0, off, s[0:3], 0175; GCN-NEXT:    s_waitcnt vmcnt(0)176; GCN-NEXT:    s_endpgm177  %val0 = load volatile float, ptr addrspace(1) poison178  %val1 = load volatile float, ptr addrspace(1) poison179  %min = call float @llvm.minnum.f32(float %val0, float %val1)180  store volatile float %min, ptr addrspace(1) poison181  ret void182}183 184define amdgpu_kernel void @kernel_ieee_mode_off() #2 {185; GCN-LABEL: kernel_ieee_mode_off:186; GCN:         .amd_kernel_code_t187; GCN-NEXT:     amd_code_version_major = 1188; GCN-NEXT:     amd_code_version_minor = 2189; GCN-NEXT:     amd_machine_kind = 1190; GCN-NEXT:     amd_machine_version_major = 6191; GCN-NEXT:     amd_machine_version_minor = 0192; GCN-NEXT:     amd_machine_version_stepping = 0193; GCN-NEXT:     kernel_code_entry_byte_offset = 256194; GCN-NEXT:     kernel_code_prefetch_byte_size = 0195; GCN-NEXT:     granulated_workitem_vgpr_count = 0196; GCN-NEXT:     granulated_wavefront_sgpr_count = 0197; GCN-NEXT:     priority = 0198; GCN-NEXT:     float_mode = 240199; GCN-NEXT:     priv = 0200; GCN-NEXT:     enable_dx10_clamp = 1201; GCN-NEXT:     debug_mode = 0202; GCN-NEXT:     enable_ieee_mode = 0203; GCN-NEXT:     enable_wgp_mode = 0204; GCN-NEXT:     enable_mem_ordered = 0205; GCN-NEXT:     enable_fwd_progress = 0206; GCN-NEXT:     enable_sgpr_private_segment_wave_byte_offset = 0207; GCN-NEXT:     user_sgpr_count = 12208; GCN-NEXT:     enable_trap_handler = 0209; GCN-NEXT:     enable_sgpr_workgroup_id_x = 1210; GCN-NEXT:     enable_sgpr_workgroup_id_y = 1211; GCN-NEXT:     enable_sgpr_workgroup_id_z = 1212; GCN-NEXT:     enable_sgpr_workgroup_info = 0213; GCN-NEXT:     enable_vgpr_workitem_id = 2214; GCN-NEXT:     enable_exception_msb = 0215; GCN-NEXT:     granulated_lds_size = 0216; GCN-NEXT:     enable_exception = 0217; GCN-NEXT:     enable_sgpr_private_segment_buffer = 1218; GCN-NEXT:     enable_sgpr_dispatch_ptr = 1219; GCN-NEXT:     enable_sgpr_queue_ptr = 1220; GCN-NEXT:     enable_sgpr_kernarg_segment_ptr = 1221; GCN-NEXT:     enable_sgpr_dispatch_id = 1222; GCN-NEXT:     enable_sgpr_flat_scratch_init = 0223; GCN-NEXT:     enable_sgpr_private_segment_size = 0224; GCN-NEXT:     enable_sgpr_grid_workgroup_count_x = 0225; GCN-NEXT:     enable_sgpr_grid_workgroup_count_y = 0226; GCN-NEXT:     enable_sgpr_grid_workgroup_count_z = 0227; GCN-NEXT:     enable_wavefront_size32 = 0228; GCN-NEXT:     enable_ordered_append_gds = 0229; GCN-NEXT:     private_element_size = 1230; GCN-NEXT:     is_ptr64 = 1231; GCN-NEXT:     is_dynamic_callstack = 0232; GCN-NEXT:     is_debug_enabled = 0233; GCN-NEXT:     is_xnack_enabled = 0234; GCN-NEXT:     workitem_private_segment_byte_size = 0235; GCN-NEXT:     workgroup_group_segment_byte_size = 0236; GCN-NEXT:     gds_segment_byte_size = 0237; GCN-NEXT:     kernarg_segment_byte_size = 16238; GCN-NEXT:     workgroup_fbarrier_count = 0239; GCN-NEXT:     wavefront_sgpr_count = 4240; GCN-NEXT:     workitem_vgpr_count = 2241; GCN-NEXT:     reserved_vgpr_first = 0242; GCN-NEXT:     reserved_vgpr_count = 0243; GCN-NEXT:     reserved_sgpr_first = 0244; GCN-NEXT:     reserved_sgpr_count = 0245; GCN-NEXT:     debug_wavefront_private_segment_offset_sgpr = 0246; GCN-NEXT:     debug_private_segment_buffer_sgpr = 0247; GCN-NEXT:     kernarg_segment_alignment = 4248; GCN-NEXT:     group_segment_alignment = 4249; GCN-NEXT:     private_segment_alignment = 4250; GCN-NEXT:     wavefront_size = 6251; GCN-NEXT:     call_convention = -1252; GCN-NEXT:     runtime_loader_kernel_symbol = 0253; GCN-NEXT:    .end_amd_kernel_code_t254; GCN-NEXT:  ; %bb.0:255; GCN-NEXT:    s_mov_b32 s3, 0xf000256; GCN-NEXT:    s_mov_b32 s2, -1257; GCN-NEXT:    buffer_load_dword v0, off, s[0:3], 0 glc258; GCN-NEXT:    s_waitcnt vmcnt(0)259; GCN-NEXT:    buffer_load_dword v1, off, s[0:3], 0 glc260; GCN-NEXT:    s_waitcnt vmcnt(0)261; GCN-NEXT:    v_min_f32_e32 v0, v0, v1262; GCN-NEXT:    buffer_store_dword v0, off, s[0:3], 0263; GCN-NEXT:    s_waitcnt vmcnt(0)264; GCN-NEXT:    s_endpgm265  %val0 = load volatile float, ptr addrspace(1) poison266  %val1 = load volatile float, ptr addrspace(1) poison267  %min = call float @llvm.minnum.f32(float %val0, float %val1)268  store volatile float %min, ptr addrspace(1) poison269  ret void270}271 272define void @func_ieee_mode_default() #0 {273; GCN-LABEL: func_ieee_mode_default:274; GCN:       ; %bb.0:275; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)276; GCN-NEXT:    s_mov_b32 s7, 0xf000277; GCN-NEXT:    s_mov_b32 s6, -1278; GCN-NEXT:    buffer_load_dword v0, off, s[4:7], 0 glc279; GCN-NEXT:    s_waitcnt vmcnt(0)280; GCN-NEXT:    buffer_load_dword v1, off, s[4:7], 0 glc281; GCN-NEXT:    s_waitcnt vmcnt(0)282; GCN-NEXT:    v_mul_f32_e32 v0, 1.0, v0283; GCN-NEXT:    v_mul_f32_e32 v1, 1.0, v1284; GCN-NEXT:    v_min_f32_e32 v0, v0, v1285; GCN-NEXT:    buffer_store_dword v0, off, s[4:7], 0286; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0)287; GCN-NEXT:    s_setpc_b64 s[30:31]288  %val0 = load volatile float, ptr addrspace(1) poison289  %val1 = load volatile float, ptr addrspace(1) poison290  %min = call float @llvm.minnum.f32(float %val0, float %val1)291  store volatile float %min, ptr addrspace(1) poison292  ret void293}294 295define void @func_ieee_mode_on() #1 {296; GCN-LABEL: func_ieee_mode_on:297; GCN:       ; %bb.0:298; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)299; GCN-NEXT:    s_mov_b32 s7, 0xf000300; GCN-NEXT:    s_mov_b32 s6, -1301; GCN-NEXT:    buffer_load_dword v0, off, s[4:7], 0 glc302; GCN-NEXT:    s_waitcnt vmcnt(0)303; GCN-NEXT:    buffer_load_dword v1, off, s[4:7], 0 glc304; GCN-NEXT:    s_waitcnt vmcnt(0)305; GCN-NEXT:    v_mul_f32_e32 v0, 1.0, v0306; GCN-NEXT:    v_mul_f32_e32 v1, 1.0, v1307; GCN-NEXT:    v_min_f32_e32 v0, v0, v1308; GCN-NEXT:    buffer_store_dword v0, off, s[4:7], 0309; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0)310; GCN-NEXT:    s_setpc_b64 s[30:31]311  %val0 = load volatile float, ptr addrspace(1) poison312  %val1 = load volatile float, ptr addrspace(1) poison313  %min = call float @llvm.minnum.f32(float %val0, float %val1)314  store volatile float %min, ptr addrspace(1) poison315  ret void316}317 318define void @func_ieee_mode_off() #2 {319; GCN-LABEL: func_ieee_mode_off:320; GCN:       ; %bb.0:321; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)322; GCN-NEXT:    s_mov_b32 s7, 0xf000323; GCN-NEXT:    s_mov_b32 s6, -1324; GCN-NEXT:    buffer_load_dword v0, off, s[4:7], 0 glc325; GCN-NEXT:    s_waitcnt vmcnt(0)326; GCN-NEXT:    buffer_load_dword v1, off, s[4:7], 0 glc327; GCN-NEXT:    s_waitcnt vmcnt(0)328; GCN-NEXT:    v_min_f32_e32 v0, v0, v1329; GCN-NEXT:    buffer_store_dword v0, off, s[4:7], 0330; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0)331; GCN-NEXT:    s_setpc_b64 s[30:31]332  %val0 = load volatile float, ptr addrspace(1) poison333  %val1 = load volatile float, ptr addrspace(1) poison334  %min = call float @llvm.minnum.f32(float %val0, float %val1)335  store volatile float %min, ptr addrspace(1) poison336  ret void337}338 339define amdgpu_cs void @cs_ieee_mode_default() #0 {340; GCN-LABEL: cs_ieee_mode_default:341; GCN:       ; %bb.0:342; GCN-NEXT:    s_mov_b32 s3, 0xf000343; GCN-NEXT:    s_mov_b32 s2, -1344; GCN-NEXT:    buffer_load_dword v0, off, s[0:3], 0 glc345; GCN-NEXT:    s_waitcnt vmcnt(0)346; GCN-NEXT:    buffer_load_dword v1, off, s[0:3], 0 glc347; GCN-NEXT:    s_waitcnt vmcnt(0)348; GCN-NEXT:    v_min_f32_e32 v0, v0, v1349; GCN-NEXT:    buffer_store_dword v0, off, s[0:3], 0350; GCN-NEXT:    s_waitcnt vmcnt(0)351; GCN-NEXT:    s_endpgm352  %val0 = load volatile float, ptr addrspace(1) poison353  %val1 = load volatile float, ptr addrspace(1) poison354  %min = call float @llvm.minnum.f32(float %val0, float %val1)355  store volatile float %min, ptr addrspace(1) poison356  ret void357}358 359define amdgpu_cs void @cs_ieee_mode_on() #1 {360; GCN-LABEL: cs_ieee_mode_on:361; GCN:       ; %bb.0:362; GCN-NEXT:    s_mov_b32 s3, 0xf000363; GCN-NEXT:    s_mov_b32 s2, -1364; GCN-NEXT:    buffer_load_dword v0, off, s[0:3], 0 glc365; GCN-NEXT:    s_waitcnt vmcnt(0)366; GCN-NEXT:    buffer_load_dword v1, off, s[0:3], 0 glc367; GCN-NEXT:    s_waitcnt vmcnt(0)368; GCN-NEXT:    v_mul_f32_e32 v0, 1.0, v0369; GCN-NEXT:    v_mul_f32_e32 v1, 1.0, v1370; GCN-NEXT:    v_min_f32_e32 v0, v0, v1371; GCN-NEXT:    buffer_store_dword v0, off, s[0:3], 0372; GCN-NEXT:    s_waitcnt vmcnt(0)373; GCN-NEXT:    s_endpgm374  %val0 = load volatile float, ptr addrspace(1) poison375  %val1 = load volatile float, ptr addrspace(1) poison376  %min = call float @llvm.minnum.f32(float %val0, float %val1)377  store volatile float %min, ptr addrspace(1) poison378  ret void379}380 381define amdgpu_cs void @cs_ieee_mode_off() #2 {382; GCN-LABEL: cs_ieee_mode_off:383; GCN:       ; %bb.0:384; GCN-NEXT:    s_mov_b32 s3, 0xf000385; GCN-NEXT:    s_mov_b32 s2, -1386; GCN-NEXT:    buffer_load_dword v0, off, s[0:3], 0 glc387; GCN-NEXT:    s_waitcnt vmcnt(0)388; GCN-NEXT:    buffer_load_dword v1, off, s[0:3], 0 glc389; GCN-NEXT:    s_waitcnt vmcnt(0)390; GCN-NEXT:    v_min_f32_e32 v0, v0, v1391; GCN-NEXT:    buffer_store_dword v0, off, s[0:3], 0392; GCN-NEXT:    s_waitcnt vmcnt(0)393; GCN-NEXT:    s_endpgm394  %val0 = load volatile float, ptr addrspace(1) poison395  %val1 = load volatile float, ptr addrspace(1) poison396  %min = call float @llvm.minnum.f32(float %val0, float %val1)397  store volatile float %min, ptr addrspace(1) poison398  ret void399}400 401define amdgpu_ps void @ps_ieee_mode_default() #0 {402; GCN-LABEL: ps_ieee_mode_default:403; GCN:       ; %bb.0:404; GCN-NEXT:    s_mov_b32 s3, 0xf000405; GCN-NEXT:    s_mov_b32 s2, -1406; GCN-NEXT:    buffer_load_dword v0, off, s[0:3], 0 glc407; GCN-NEXT:    s_waitcnt vmcnt(0)408; GCN-NEXT:    buffer_load_dword v1, off, s[0:3], 0 glc409; GCN-NEXT:    s_waitcnt vmcnt(0)410; GCN-NEXT:    v_min_f32_e32 v0, v0, v1411; GCN-NEXT:    buffer_store_dword v0, off, s[0:3], 0412; GCN-NEXT:    s_waitcnt vmcnt(0)413; GCN-NEXT:    s_endpgm414  %val0 = load volatile float, ptr addrspace(1) poison415  %val1 = load volatile float, ptr addrspace(1) poison416  %min = call float @llvm.minnum.f32(float %val0, float %val1)417  store volatile float %min, ptr addrspace(1) poison418  ret void419}420 421define amdgpu_ps void @ps_ieee_mode_on() #1 {422; GCN-LABEL: ps_ieee_mode_on:423; GCN:       ; %bb.0:424; GCN-NEXT:    s_mov_b32 s3, 0xf000425; GCN-NEXT:    s_mov_b32 s2, -1426; GCN-NEXT:    buffer_load_dword v0, off, s[0:3], 0 glc427; GCN-NEXT:    s_waitcnt vmcnt(0)428; GCN-NEXT:    buffer_load_dword v1, off, s[0:3], 0 glc429; GCN-NEXT:    s_waitcnt vmcnt(0)430; GCN-NEXT:    v_mul_f32_e32 v0, 1.0, v0431; GCN-NEXT:    v_mul_f32_e32 v1, 1.0, v1432; GCN-NEXT:    v_min_f32_e32 v0, v0, v1433; GCN-NEXT:    buffer_store_dword v0, off, s[0:3], 0434; GCN-NEXT:    s_waitcnt vmcnt(0)435; GCN-NEXT:    s_endpgm436  %val0 = load volatile float, ptr addrspace(1) poison437  %val1 = load volatile float, ptr addrspace(1) poison438  %min = call float @llvm.minnum.f32(float %val0, float %val1)439  store volatile float %min, ptr addrspace(1) poison440  ret void441}442 443define amdgpu_ps void @ps_ieee_mode_off() #2 {444; GCN-LABEL: ps_ieee_mode_off:445; GCN:       ; %bb.0:446; GCN-NEXT:    s_mov_b32 s3, 0xf000447; GCN-NEXT:    s_mov_b32 s2, -1448; GCN-NEXT:    buffer_load_dword v0, off, s[0:3], 0 glc449; GCN-NEXT:    s_waitcnt vmcnt(0)450; GCN-NEXT:    buffer_load_dword v1, off, s[0:3], 0 glc451; GCN-NEXT:    s_waitcnt vmcnt(0)452; GCN-NEXT:    v_min_f32_e32 v0, v0, v1453; GCN-NEXT:    buffer_store_dword v0, off, s[0:3], 0454; GCN-NEXT:    s_waitcnt vmcnt(0)455; GCN-NEXT:    s_endpgm456  %val0 = load volatile float, ptr addrspace(1) poison457  %val1 = load volatile float, ptr addrspace(1) poison458  %min = call float @llvm.minnum.f32(float %val0, float %val1)459  store volatile float %min, ptr addrspace(1) poison460  ret void461}462 463declare float @llvm.minnum.f32(float, float) #3464 465attributes #0 = { nounwind }466attributes #1 = { nounwind "amdgpu-ieee"="true" }467attributes #2 = { nounwind "amdgpu-ieee"="false" }468attributes #3 = { nounwind readnone speculatable }469