brintos

brintos / llvm-project-archived public Read only

0
0
Text · 68.2 KiB · b6b26a4 Raw
1590 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 22; RUN: llc -mtriple=amdgcn < %s | FileCheck -check-prefixes=SI %s3; RUN: llc -mtriple=amdgcn -mcpu=tonga -global-isel=0 -mattr=-flat-for-global < %s | FileCheck -check-prefixes=VI-SDAG,VI-SAFE-SDAG %s4; RUN: llc -mtriple=amdgcn -mcpu=tonga -global-isel=1 -mattr=-flat-for-global < %s | FileCheck -check-prefixes=VI-GISEL,VI-SAFE-GISEL %s5; RUN: llc -mtriple=amdgcn -mcpu=tonga -global-isel=0 -mattr=-flat-for-global < %s | FileCheck -check-prefixes=VI-SDAG,VI-UNSAFE-SDAG %s6; RUN: llc -mtriple=amdgcn -mcpu=gfx1030 -global-isel=0 -mattr=-flat-for-global < %s | FileCheck -check-prefixes=GFX10-SDAG,GFX10-SAFE-SDAG %s7; RUN: llc -mtriple=amdgcn -mcpu=gfx1030 -global-isel=1 -mattr=-flat-for-global < %s | FileCheck -check-prefixes=GFX10-GISEL,GFX10-SAFE-GISEL %s8; RUN: llc -mtriple=amdgcn -mcpu=gfx1030 -global-isel=0 -mattr=-flat-for-global < %s | FileCheck -check-prefixes=GFX10-SDAG,GFX10-UNSAFE-SDAG %s9; RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -global-isel=0 -mattr=-flat-for-global < %s | FileCheck -check-prefixes=GFX11-SDAG,GFX11-SAFE-SDAG %s10; RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -global-isel=1 -mattr=-flat-for-global < %s | FileCheck -check-prefixes=GFX11-GISEL,GFX11-SAFE-GISEL %s11; RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -global-isel=0 -mattr=-flat-for-global,+real-true16 < %s | FileCheck -check-prefixes=GFX11-SDAG,GFX11-UNSAFE-DAG-TRUE16 %s12; RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -global-isel=0 -mattr=-flat-for-global,-real-true16 < %s | FileCheck -check-prefixes=GFX11-SDAG,GFX11-UNSAFE-DAG-FAKE16 %s13; RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -global-isel=1 -mattr=-flat-for-global,+real-true16 < %s | FileCheck -check-prefixes=GFX11-GISEL,GFX11-UNSAFE-GISEL-TRUE16 %s14; RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -global-isel=1 -mattr=-flat-for-global,-real-true16 < %s | FileCheck -check-prefixes=GFX11-GISEL,GFX11-UNSAFE-GISEL-FAKE16 %s15 16define amdgpu_kernel void @fptrunc_f64_to_f32(ptr addrspace(1) %out, double %in) {17; SI-LABEL: fptrunc_f64_to_f32:18; SI:       ; %bb.0:19; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x920; SI-NEXT:    s_mov_b32 s7, 0xf00021; SI-NEXT:    s_mov_b32 s6, -122; SI-NEXT:    s_waitcnt lgkmcnt(0)23; SI-NEXT:    s_mov_b32 s4, s024; SI-NEXT:    s_mov_b32 s5, s125; SI-NEXT:    v_cvt_f32_f64_e32 v0, s[2:3]26; SI-NEXT:    buffer_store_dword v0, off, s[4:7], 027; SI-NEXT:    s_endpgm28;29; VI-SDAG-LABEL: fptrunc_f64_to_f32:30; VI-SDAG:       ; %bb.0:31; VI-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x2432; VI-SDAG-NEXT:    s_mov_b32 s7, 0xf00033; VI-SDAG-NEXT:    s_mov_b32 s6, -134; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)35; VI-SDAG-NEXT:    v_cvt_f32_f64_e32 v0, s[2:3]36; VI-SDAG-NEXT:    s_mov_b32 s4, s037; VI-SDAG-NEXT:    s_mov_b32 s5, s138; VI-SDAG-NEXT:    buffer_store_dword v0, off, s[4:7], 039; VI-SDAG-NEXT:    s_endpgm40;41; VI-GISEL-LABEL: fptrunc_f64_to_f32:42; VI-GISEL:       ; %bb.0:43; VI-GISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x2444; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)45; VI-GISEL-NEXT:    v_cvt_f32_f64_e32 v0, s[2:3]46; VI-GISEL-NEXT:    s_mov_b32 s2, -147; VI-GISEL-NEXT:    s_mov_b32 s3, 0xf00048; VI-GISEL-NEXT:    buffer_store_dword v0, off, s[0:3], 049; VI-GISEL-NEXT:    s_endpgm50;51; GFX10-SDAG-LABEL: fptrunc_f64_to_f32:52; GFX10-SDAG:       ; %bb.0:53; GFX10-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x2454; GFX10-SDAG-NEXT:    s_waitcnt lgkmcnt(0)55; GFX10-SDAG-NEXT:    v_cvt_f32_f64_e32 v0, s[2:3]56; GFX10-SDAG-NEXT:    s_mov_b32 s3, 0x3101600057; GFX10-SDAG-NEXT:    s_mov_b32 s2, -158; GFX10-SDAG-NEXT:    buffer_store_dword v0, off, s[0:3], 059; GFX10-SDAG-NEXT:    s_endpgm60;61; GFX10-GISEL-LABEL: fptrunc_f64_to_f32:62; GFX10-GISEL:       ; %bb.0:63; GFX10-GISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x2464; GFX10-GISEL-NEXT:    s_waitcnt lgkmcnt(0)65; GFX10-GISEL-NEXT:    v_cvt_f32_f64_e32 v0, s[2:3]66; GFX10-GISEL-NEXT:    s_mov_b32 s2, -167; GFX10-GISEL-NEXT:    s_mov_b32 s3, 0x3101600068; GFX10-GISEL-NEXT:    buffer_store_dword v0, off, s[0:3], 069; GFX10-GISEL-NEXT:    s_endpgm70;71; GFX11-SDAG-LABEL: fptrunc_f64_to_f32:72; GFX11-SDAG:       ; %bb.0:73; GFX11-SDAG-NEXT:    s_load_b128 s[0:3], s[4:5], 0x2474; GFX11-SDAG-NEXT:    s_waitcnt lgkmcnt(0)75; GFX11-SDAG-NEXT:    v_cvt_f32_f64_e32 v0, s[2:3]76; GFX11-SDAG-NEXT:    s_mov_b32 s3, 0x3101600077; GFX11-SDAG-NEXT:    s_mov_b32 s2, -178; GFX11-SDAG-NEXT:    buffer_store_b32 v0, off, s[0:3], 079; GFX11-SDAG-NEXT:    s_endpgm80;81; GFX11-GISEL-LABEL: fptrunc_f64_to_f32:82; GFX11-GISEL:       ; %bb.0:83; GFX11-GISEL-NEXT:    s_load_b128 s[0:3], s[4:5], 0x2484; GFX11-GISEL-NEXT:    s_waitcnt lgkmcnt(0)85; GFX11-GISEL-NEXT:    v_cvt_f32_f64_e32 v0, s[2:3]86; GFX11-GISEL-NEXT:    s_mov_b32 s2, -187; GFX11-GISEL-NEXT:    s_mov_b32 s3, 0x3101600088; GFX11-GISEL-NEXT:    buffer_store_b32 v0, off, s[0:3], 089; GFX11-GISEL-NEXT:    s_endpgm90  %result = fptrunc double %in to float91  store float %result, ptr addrspace(1) %out92  ret void93}94 95define amdgpu_kernel void @fptrunc_f64_to_f32_afn(ptr addrspace(1) %out, double %in) {96; SI-LABEL: fptrunc_f64_to_f32_afn:97; SI:       ; %bb.0:98; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x999; SI-NEXT:    s_mov_b32 s7, 0xf000100; SI-NEXT:    s_mov_b32 s6, -1101; SI-NEXT:    s_waitcnt lgkmcnt(0)102; SI-NEXT:    s_mov_b32 s4, s0103; SI-NEXT:    s_mov_b32 s5, s1104; SI-NEXT:    v_cvt_f32_f64_e32 v0, s[2:3]105; SI-NEXT:    buffer_store_dword v0, off, s[4:7], 0106; SI-NEXT:    s_endpgm107;108; VI-SDAG-LABEL: fptrunc_f64_to_f32_afn:109; VI-SDAG:       ; %bb.0:110; VI-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24111; VI-SDAG-NEXT:    s_mov_b32 s7, 0xf000112; VI-SDAG-NEXT:    s_mov_b32 s6, -1113; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)114; VI-SDAG-NEXT:    v_cvt_f32_f64_e32 v0, s[2:3]115; VI-SDAG-NEXT:    s_mov_b32 s4, s0116; VI-SDAG-NEXT:    s_mov_b32 s5, s1117; VI-SDAG-NEXT:    buffer_store_dword v0, off, s[4:7], 0118; VI-SDAG-NEXT:    s_endpgm119;120; VI-GISEL-LABEL: fptrunc_f64_to_f32_afn:121; VI-GISEL:       ; %bb.0:122; VI-GISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24123; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)124; VI-GISEL-NEXT:    v_cvt_f32_f64_e32 v0, s[2:3]125; VI-GISEL-NEXT:    s_mov_b32 s2, -1126; VI-GISEL-NEXT:    s_mov_b32 s3, 0xf000127; VI-GISEL-NEXT:    buffer_store_dword v0, off, s[0:3], 0128; VI-GISEL-NEXT:    s_endpgm129;130; GFX10-SDAG-LABEL: fptrunc_f64_to_f32_afn:131; GFX10-SDAG:       ; %bb.0:132; GFX10-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24133; GFX10-SDAG-NEXT:    s_waitcnt lgkmcnt(0)134; GFX10-SDAG-NEXT:    v_cvt_f32_f64_e32 v0, s[2:3]135; GFX10-SDAG-NEXT:    s_mov_b32 s3, 0x31016000136; GFX10-SDAG-NEXT:    s_mov_b32 s2, -1137; GFX10-SDAG-NEXT:    buffer_store_dword v0, off, s[0:3], 0138; GFX10-SDAG-NEXT:    s_endpgm139;140; GFX10-GISEL-LABEL: fptrunc_f64_to_f32_afn:141; GFX10-GISEL:       ; %bb.0:142; GFX10-GISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24143; GFX10-GISEL-NEXT:    s_waitcnt lgkmcnt(0)144; GFX10-GISEL-NEXT:    v_cvt_f32_f64_e32 v0, s[2:3]145; GFX10-GISEL-NEXT:    s_mov_b32 s2, -1146; GFX10-GISEL-NEXT:    s_mov_b32 s3, 0x31016000147; GFX10-GISEL-NEXT:    buffer_store_dword v0, off, s[0:3], 0148; GFX10-GISEL-NEXT:    s_endpgm149;150; GFX11-SDAG-LABEL: fptrunc_f64_to_f32_afn:151; GFX11-SDAG:       ; %bb.0:152; GFX11-SDAG-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24153; GFX11-SDAG-NEXT:    s_waitcnt lgkmcnt(0)154; GFX11-SDAG-NEXT:    v_cvt_f32_f64_e32 v0, s[2:3]155; GFX11-SDAG-NEXT:    s_mov_b32 s3, 0x31016000156; GFX11-SDAG-NEXT:    s_mov_b32 s2, -1157; GFX11-SDAG-NEXT:    buffer_store_b32 v0, off, s[0:3], 0158; GFX11-SDAG-NEXT:    s_endpgm159;160; GFX11-GISEL-LABEL: fptrunc_f64_to_f32_afn:161; GFX11-GISEL:       ; %bb.0:162; GFX11-GISEL-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24163; GFX11-GISEL-NEXT:    s_waitcnt lgkmcnt(0)164; GFX11-GISEL-NEXT:    v_cvt_f32_f64_e32 v0, s[2:3]165; GFX11-GISEL-NEXT:    s_mov_b32 s2, -1166; GFX11-GISEL-NEXT:    s_mov_b32 s3, 0x31016000167; GFX11-GISEL-NEXT:    buffer_store_b32 v0, off, s[0:3], 0168; GFX11-GISEL-NEXT:    s_endpgm169  %result = fptrunc afn double %in to float170  store float %result, ptr addrspace(1) %out171  ret void172}173 174define amdgpu_kernel void @fptrunc_f64_to_f16(ptr addrspace(1) %out, double %in) {175; SI-LABEL: fptrunc_f64_to_f16:176; SI:       ; %bb.0:177; SI-NEXT:    s_load_dwordx4 s[4:7], s[4:5], 0x9178; SI-NEXT:    s_mov_b32 s3, 0xf000179; SI-NEXT:    s_movk_i32 s2, 0x7e00180; SI-NEXT:    s_waitcnt lgkmcnt(0)181; SI-NEXT:    s_lshr_b32 s0, s7, 8182; SI-NEXT:    s_and_b32 s1, s7, 0x1ff183; SI-NEXT:    s_and_b32 s8, s0, 0xffe184; SI-NEXT:    s_or_b32 s0, s1, s6185; SI-NEXT:    s_cselect_b64 s[0:1], -1, 0186; SI-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[0:1]187; SI-NEXT:    s_bfe_u32 s0, s7, 0xb0014188; SI-NEXT:    v_readfirstlane_b32 s1, v0189; SI-NEXT:    s_sub_i32 s6, 0x3f1, s0190; SI-NEXT:    s_or_b32 s1, s8, s1191; SI-NEXT:    v_med3_i32 v0, s6, 0, 13192; SI-NEXT:    s_or_b32 s6, s1, 0x1000193; SI-NEXT:    v_readfirstlane_b32 s8, v0194; SI-NEXT:    s_lshr_b32 s9, s6, s8195; SI-NEXT:    s_lshl_b32 s8, s9, s8196; SI-NEXT:    s_cmp_lg_u32 s8, s6197; SI-NEXT:    s_cselect_b32 s6, 1, 0198; SI-NEXT:    s_addk_i32 s0, 0xfc10199; SI-NEXT:    s_or_b32 s6, s9, s6200; SI-NEXT:    s_lshl_b32 s8, s0, 12201; SI-NEXT:    s_or_b32 s8, s1, s8202; SI-NEXT:    s_cmp_lt_i32 s0, 1203; SI-NEXT:    s_cselect_b32 s6, s6, s8204; SI-NEXT:    s_and_b32 s8, s6, 7205; SI-NEXT:    s_cmp_gt_i32 s8, 5206; SI-NEXT:    s_cselect_b32 s9, 1, 0207; SI-NEXT:    s_cmp_eq_u32 s8, 3208; SI-NEXT:    s_cselect_b32 s8, 1, 0209; SI-NEXT:    s_lshr_b32 s6, s6, 2210; SI-NEXT:    s_or_b32 s8, s8, s9211; SI-NEXT:    s_add_i32 s6, s6, s8212; SI-NEXT:    s_cmp_lt_i32 s0, 31213; SI-NEXT:    s_cselect_b32 s6, s6, 0x7c00214; SI-NEXT:    s_cmp_lg_u32 s1, 0215; SI-NEXT:    s_cselect_b32 s1, s2, 0x7c00216; SI-NEXT:    s_cmpk_eq_i32 s0, 0x40f217; SI-NEXT:    s_cselect_b32 s0, s1, s6218; SI-NEXT:    s_lshr_b32 s1, s7, 16219; SI-NEXT:    s_and_b32 s1, s1, 0x8000220; SI-NEXT:    s_or_b32 s6, s1, s0221; SI-NEXT:    s_mov_b32 s2, -1222; SI-NEXT:    s_mov_b32 s0, s4223; SI-NEXT:    s_mov_b32 s1, s5224; SI-NEXT:    v_mov_b32_e32 v0, s6225; SI-NEXT:    buffer_store_short v0, off, s[0:3], 0226; SI-NEXT:    s_endpgm227;228; VI-SDAG-LABEL: fptrunc_f64_to_f16:229; VI-SDAG:       ; %bb.0:230; VI-SDAG-NEXT:    s_load_dwordx4 s[4:7], s[4:5], 0x24231; VI-SDAG-NEXT:    s_mov_b32 s3, 0xf000232; VI-SDAG-NEXT:    s_mov_b32 s2, -1233; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)234; VI-SDAG-NEXT:    s_mov_b32 s0, s4235; VI-SDAG-NEXT:    s_lshr_b32 s4, s7, 8236; VI-SDAG-NEXT:    s_and_b32 s8, s4, 0xffe237; VI-SDAG-NEXT:    s_and_b32 s4, s7, 0x1ff238; VI-SDAG-NEXT:    s_or_b32 s4, s4, s6239; VI-SDAG-NEXT:    s_mov_b32 s1, s5240; VI-SDAG-NEXT:    s_cselect_b64 s[4:5], -1, 0241; VI-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]242; VI-SDAG-NEXT:    v_readfirstlane_b32 s4, v0243; VI-SDAG-NEXT:    s_bfe_u32 s6, s7, 0xb0014244; VI-SDAG-NEXT:    s_or_b32 s4, s8, s4245; VI-SDAG-NEXT:    s_sub_i32 s8, 0x3f1, s6246; VI-SDAG-NEXT:    v_med3_i32 v0, s8, 0, 13247; VI-SDAG-NEXT:    s_or_b32 s5, s4, 0x1000248; VI-SDAG-NEXT:    v_readfirstlane_b32 s8, v0249; VI-SDAG-NEXT:    s_lshr_b32 s9, s5, s8250; VI-SDAG-NEXT:    s_lshl_b32 s8, s9, s8251; VI-SDAG-NEXT:    s_cmp_lg_u32 s8, s5252; VI-SDAG-NEXT:    s_cselect_b32 s5, 1, 0253; VI-SDAG-NEXT:    s_addk_i32 s6, 0xfc10254; VI-SDAG-NEXT:    s_lshl_b32 s8, s6, 12255; VI-SDAG-NEXT:    s_or_b32 s5, s9, s5256; VI-SDAG-NEXT:    s_or_b32 s8, s4, s8257; VI-SDAG-NEXT:    s_cmp_lt_i32 s6, 1258; VI-SDAG-NEXT:    s_cselect_b32 s5, s5, s8259; VI-SDAG-NEXT:    s_and_b32 s8, s5, 7260; VI-SDAG-NEXT:    s_cmp_gt_i32 s8, 5261; VI-SDAG-NEXT:    s_cselect_b32 s9, 1, 0262; VI-SDAG-NEXT:    s_cmp_eq_u32 s8, 3263; VI-SDAG-NEXT:    s_cselect_b32 s8, 1, 0264; VI-SDAG-NEXT:    s_or_b32 s8, s8, s9265; VI-SDAG-NEXT:    s_lshr_b32 s5, s5, 2266; VI-SDAG-NEXT:    s_add_i32 s5, s5, s8267; VI-SDAG-NEXT:    s_cmp_lt_i32 s6, 31268; VI-SDAG-NEXT:    s_cselect_b32 s5, s5, 0x7c00269; VI-SDAG-NEXT:    s_cmp_lg_u32 s4, 0270; VI-SDAG-NEXT:    s_movk_i32 s4, 0x7e00271; VI-SDAG-NEXT:    s_cselect_b32 s4, s4, 0x7c00272; VI-SDAG-NEXT:    s_cmpk_eq_i32 s6, 0x40f273; VI-SDAG-NEXT:    s_cselect_b32 s4, s4, s5274; VI-SDAG-NEXT:    s_lshr_b32 s5, s7, 16275; VI-SDAG-NEXT:    s_and_b32 s5, s5, 0x8000276; VI-SDAG-NEXT:    s_or_b32 s4, s5, s4277; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s4278; VI-SDAG-NEXT:    buffer_store_short v0, off, s[0:3], 0279; VI-SDAG-NEXT:    s_endpgm280;281; VI-GISEL-LABEL: fptrunc_f64_to_f16:282; VI-GISEL:       ; %bb.0:283; VI-GISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24284; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)285; VI-GISEL-NEXT:    s_bfe_u32 s4, s3, 0xb0014286; VI-GISEL-NEXT:    s_lshr_b32 s5, s3, 8287; VI-GISEL-NEXT:    s_and_b32 s6, s3, 0x1ff288; VI-GISEL-NEXT:    s_addk_i32 s4, 0xfc10289; VI-GISEL-NEXT:    s_and_b32 s5, s5, 0xffe290; VI-GISEL-NEXT:    s_or_b32 s2, s6, s2291; VI-GISEL-NEXT:    s_cselect_b32 s2, 1, 0292; VI-GISEL-NEXT:    s_or_b32 s2, s5, s2293; VI-GISEL-NEXT:    s_cselect_b32 s5, 1, 0294; VI-GISEL-NEXT:    s_sub_i32 s7, 1, s4295; VI-GISEL-NEXT:    s_lshl_b32 s6, s4, 12296; VI-GISEL-NEXT:    s_max_i32 s7, s7, 0297; VI-GISEL-NEXT:    s_or_b32 s6, s2, s6298; VI-GISEL-NEXT:    s_min_i32 s7, s7, 13299; VI-GISEL-NEXT:    s_bitset1_b32 s2, 12300; VI-GISEL-NEXT:    s_lshl_b32 s5, s5, 9301; VI-GISEL-NEXT:    s_lshr_b32 s8, s2, s7302; VI-GISEL-NEXT:    s_or_b32 s5, s5, 0x7c00303; VI-GISEL-NEXT:    s_lshl_b32 s7, s8, s7304; VI-GISEL-NEXT:    s_cmp_lg_u32 s7, s2305; VI-GISEL-NEXT:    s_cselect_b32 s2, 1, 0306; VI-GISEL-NEXT:    s_or_b32 s2, s8, s2307; VI-GISEL-NEXT:    s_cmp_lt_i32 s4, 1308; VI-GISEL-NEXT:    s_cselect_b32 s2, s2, s6309; VI-GISEL-NEXT:    s_and_b32 s6, s2, 7310; VI-GISEL-NEXT:    s_lshr_b32 s2, s2, 2311; VI-GISEL-NEXT:    s_cmp_eq_u32 s6, 3312; VI-GISEL-NEXT:    s_cselect_b32 s7, 1, 0313; VI-GISEL-NEXT:    s_cmp_gt_i32 s6, 5314; VI-GISEL-NEXT:    s_cselect_b32 s6, 1, 0315; VI-GISEL-NEXT:    s_or_b32 s6, s7, s6316; VI-GISEL-NEXT:    s_add_i32 s2, s2, s6317; VI-GISEL-NEXT:    s_cmp_gt_i32 s4, 30318; VI-GISEL-NEXT:    s_cselect_b32 s2, 0x7c00, s2319; VI-GISEL-NEXT:    s_cmpk_eq_i32 s4, 0x40f320; VI-GISEL-NEXT:    s_cselect_b32 s2, s5, s2321; VI-GISEL-NEXT:    s_lshr_b32 s3, s3, 16322; VI-GISEL-NEXT:    s_and_b32 s3, s3, 0x8000323; VI-GISEL-NEXT:    s_or_b32 s2, s3, s2324; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2325; VI-GISEL-NEXT:    s_mov_b32 s2, -1326; VI-GISEL-NEXT:    s_mov_b32 s3, 0xf000327; VI-GISEL-NEXT:    buffer_store_short v0, off, s[0:3], 0328; VI-GISEL-NEXT:    s_endpgm329;330; GFX10-SDAG-LABEL: fptrunc_f64_to_f16:331; GFX10-SDAG:       ; %bb.0:332; GFX10-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24333; GFX10-SDAG-NEXT:    s_waitcnt lgkmcnt(0)334; GFX10-SDAG-NEXT:    s_lshr_b32 s4, s3, 8335; GFX10-SDAG-NEXT:    s_and_b32 s5, s3, 0x1ff336; GFX10-SDAG-NEXT:    s_and_b32 s4, s4, 0xffe337; GFX10-SDAG-NEXT:    s_or_b32 s2, s5, s2338; GFX10-SDAG-NEXT:    s_cselect_b32 s2, -1, 0339; GFX10-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s2340; GFX10-SDAG-NEXT:    s_bfe_u32 s2, s3, 0xb0014341; GFX10-SDAG-NEXT:    s_sub_i32 s5, 0x3f1, s2342; GFX10-SDAG-NEXT:    v_med3_i32 v1, s5, 0, 13343; GFX10-SDAG-NEXT:    v_readfirstlane_b32 s5, v0344; GFX10-SDAG-NEXT:    v_readfirstlane_b32 s6, v1345; GFX10-SDAG-NEXT:    s_or_b32 s4, s4, s5346; GFX10-SDAG-NEXT:    s_or_b32 s5, s4, 0x1000347; GFX10-SDAG-NEXT:    s_lshr_b32 s7, s5, s6348; GFX10-SDAG-NEXT:    s_lshl_b32 s6, s7, s6349; GFX10-SDAG-NEXT:    s_cmp_lg_u32 s6, s5350; GFX10-SDAG-NEXT:    s_cselect_b32 s5, 1, 0351; GFX10-SDAG-NEXT:    s_addk_i32 s2, 0xfc10352; GFX10-SDAG-NEXT:    s_or_b32 s5, s7, s5353; GFX10-SDAG-NEXT:    s_lshl_b32 s6, s2, 12354; GFX10-SDAG-NEXT:    s_or_b32 s6, s4, s6355; GFX10-SDAG-NEXT:    s_cmp_lt_i32 s2, 1356; GFX10-SDAG-NEXT:    s_cselect_b32 s5, s5, s6357; GFX10-SDAG-NEXT:    s_and_b32 s6, s5, 7358; GFX10-SDAG-NEXT:    s_cmp_gt_i32 s6, 5359; GFX10-SDAG-NEXT:    s_cselect_b32 s7, 1, 0360; GFX10-SDAG-NEXT:    s_cmp_eq_u32 s6, 3361; GFX10-SDAG-NEXT:    s_cselect_b32 s6, 1, 0362; GFX10-SDAG-NEXT:    s_lshr_b32 s5, s5, 2363; GFX10-SDAG-NEXT:    s_or_b32 s6, s6, s7364; GFX10-SDAG-NEXT:    s_add_i32 s5, s5, s6365; GFX10-SDAG-NEXT:    s_cmp_lt_i32 s2, 31366; GFX10-SDAG-NEXT:    s_movk_i32 s6, 0x7e00367; GFX10-SDAG-NEXT:    s_cselect_b32 s5, s5, 0x7c00368; GFX10-SDAG-NEXT:    s_cmp_lg_u32 s4, 0369; GFX10-SDAG-NEXT:    s_cselect_b32 s4, s6, 0x7c00370; GFX10-SDAG-NEXT:    s_cmpk_eq_i32 s2, 0x40f371; GFX10-SDAG-NEXT:    s_cselect_b32 s2, s4, s5372; GFX10-SDAG-NEXT:    s_lshr_b32 s3, s3, 16373; GFX10-SDAG-NEXT:    s_and_b32 s3, s3, 0x8000374; GFX10-SDAG-NEXT:    s_or_b32 s2, s3, s2375; GFX10-SDAG-NEXT:    s_mov_b32 s3, 0x31016000376; GFX10-SDAG-NEXT:    v_mov_b32_e32 v0, s2377; GFX10-SDAG-NEXT:    s_mov_b32 s2, -1378; GFX10-SDAG-NEXT:    buffer_store_short v0, off, s[0:3], 0379; GFX10-SDAG-NEXT:    s_endpgm380;381; GFX10-GISEL-LABEL: fptrunc_f64_to_f16:382; GFX10-GISEL:       ; %bb.0:383; GFX10-GISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24384; GFX10-GISEL-NEXT:    s_waitcnt lgkmcnt(0)385; GFX10-GISEL-NEXT:    s_bfe_u32 s4, s3, 0xb0014386; GFX10-GISEL-NEXT:    s_lshr_b32 s5, s3, 8387; GFX10-GISEL-NEXT:    s_and_b32 s6, s3, 0x1ff388; GFX10-GISEL-NEXT:    s_addk_i32 s4, 0xfc10389; GFX10-GISEL-NEXT:    s_and_b32 s5, s5, 0xffe390; GFX10-GISEL-NEXT:    s_or_b32 s2, s6, s2391; GFX10-GISEL-NEXT:    s_cselect_b32 s2, 1, 0392; GFX10-GISEL-NEXT:    s_or_b32 s2, s5, s2393; GFX10-GISEL-NEXT:    s_cselect_b32 s5, 1, 0394; GFX10-GISEL-NEXT:    s_sub_i32 s6, 1, s4395; GFX10-GISEL-NEXT:    s_or_b32 s8, s2, 0x1000396; GFX10-GISEL-NEXT:    s_max_i32 s6, s6, 0397; GFX10-GISEL-NEXT:    s_lshl_b32 s7, s4, 12398; GFX10-GISEL-NEXT:    s_min_i32 s6, s6, 13399; GFX10-GISEL-NEXT:    s_lshl_b32 s5, s5, 9400; GFX10-GISEL-NEXT:    s_lshr_b32 s9, s8, s6401; GFX10-GISEL-NEXT:    s_or_b32 s2, s2, s7402; GFX10-GISEL-NEXT:    s_lshl_b32 s6, s9, s6403; GFX10-GISEL-NEXT:    s_or_b32 s5, s5, 0x7c00404; GFX10-GISEL-NEXT:    s_cmp_lg_u32 s6, s8405; GFX10-GISEL-NEXT:    s_cselect_b32 s6, 1, 0406; GFX10-GISEL-NEXT:    s_or_b32 s6, s9, s6407; GFX10-GISEL-NEXT:    s_cmp_lt_i32 s4, 1408; GFX10-GISEL-NEXT:    s_cselect_b32 s2, s6, s2409; GFX10-GISEL-NEXT:    s_and_b32 s6, s2, 7410; GFX10-GISEL-NEXT:    s_lshr_b32 s2, s2, 2411; GFX10-GISEL-NEXT:    s_cmp_eq_u32 s6, 3412; GFX10-GISEL-NEXT:    s_cselect_b32 s7, 1, 0413; GFX10-GISEL-NEXT:    s_cmp_gt_i32 s6, 5414; GFX10-GISEL-NEXT:    s_cselect_b32 s6, 1, 0415; GFX10-GISEL-NEXT:    s_or_b32 s6, s7, s6416; GFX10-GISEL-NEXT:    s_add_i32 s2, s2, s6417; GFX10-GISEL-NEXT:    s_cmp_gt_i32 s4, 30418; GFX10-GISEL-NEXT:    s_cselect_b32 s2, 0x7c00, s2419; GFX10-GISEL-NEXT:    s_cmpk_eq_i32 s4, 0x40f420; GFX10-GISEL-NEXT:    s_cselect_b32 s2, s5, s2421; GFX10-GISEL-NEXT:    s_lshr_b32 s3, s3, 16422; GFX10-GISEL-NEXT:    s_and_b32 s3, s3, 0x8000423; GFX10-GISEL-NEXT:    s_or_b32 s2, s3, s2424; GFX10-GISEL-NEXT:    s_mov_b32 s3, 0x31016000425; GFX10-GISEL-NEXT:    v_mov_b32_e32 v0, s2426; GFX10-GISEL-NEXT:    s_mov_b32 s2, -1427; GFX10-GISEL-NEXT:    buffer_store_short v0, off, s[0:3], 0428; GFX10-GISEL-NEXT:    s_endpgm429;430; GFX11-SDAG-LABEL: fptrunc_f64_to_f16:431; GFX11-SDAG:       ; %bb.0:432; GFX11-SDAG-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24433; GFX11-SDAG-NEXT:    s_waitcnt lgkmcnt(0)434; GFX11-SDAG-NEXT:    s_lshr_b32 s4, s3, 8435; GFX11-SDAG-NEXT:    s_and_b32 s5, s3, 0x1ff436; GFX11-SDAG-NEXT:    s_and_b32 s4, s4, 0xffe437; GFX11-SDAG-NEXT:    s_or_b32 s2, s5, s2438; GFX11-SDAG-NEXT:    s_cselect_b32 s2, -1, 0439; GFX11-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)440; GFX11-SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s2441; GFX11-SDAG-NEXT:    s_bfe_u32 s2, s3, 0xb0014442; GFX11-SDAG-NEXT:    s_sub_i32 s5, 0x3f1, s2443; GFX11-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_2)444; GFX11-SDAG-NEXT:    v_med3_i32 v1, s5, 0, 13445; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s5, v0446; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)447; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s6, v1448; GFX11-SDAG-NEXT:    s_or_b32 s4, s4, s5449; GFX11-SDAG-NEXT:    s_or_b32 s5, s4, 0x1000450; GFX11-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)451; GFX11-SDAG-NEXT:    s_lshr_b32 s7, s5, s6452; GFX11-SDAG-NEXT:    s_lshl_b32 s6, s7, s6453; GFX11-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)454; GFX11-SDAG-NEXT:    s_cmp_lg_u32 s6, s5455; GFX11-SDAG-NEXT:    s_cselect_b32 s5, 1, 0456; GFX11-SDAG-NEXT:    s_addk_i32 s2, 0xfc10457; GFX11-SDAG-NEXT:    s_or_b32 s5, s7, s5458; GFX11-SDAG-NEXT:    s_lshl_b32 s6, s2, 12459; GFX11-SDAG-NEXT:    s_or_b32 s6, s4, s6460; GFX11-SDAG-NEXT:    s_cmp_lt_i32 s2, 1461; GFX11-SDAG-NEXT:    s_cselect_b32 s5, s5, s6462; GFX11-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)463; GFX11-SDAG-NEXT:    s_and_b32 s6, s5, 7464; GFX11-SDAG-NEXT:    s_cmp_gt_i32 s6, 5465; GFX11-SDAG-NEXT:    s_cselect_b32 s7, 1, 0466; GFX11-SDAG-NEXT:    s_cmp_eq_u32 s6, 3467; GFX11-SDAG-NEXT:    s_cselect_b32 s6, 1, 0468; GFX11-SDAG-NEXT:    s_lshr_b32 s5, s5, 2469; GFX11-SDAG-NEXT:    s_or_b32 s6, s6, s7470; GFX11-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)471; GFX11-SDAG-NEXT:    s_add_i32 s5, s5, s6472; GFX11-SDAG-NEXT:    s_cmp_lt_i32 s2, 31473; GFX11-SDAG-NEXT:    s_movk_i32 s6, 0x7e00474; GFX11-SDAG-NEXT:    s_cselect_b32 s5, s5, 0x7c00475; GFX11-SDAG-NEXT:    s_cmp_lg_u32 s4, 0476; GFX11-SDAG-NEXT:    s_cselect_b32 s4, s6, 0x7c00477; GFX11-SDAG-NEXT:    s_cmpk_eq_i32 s2, 0x40f478; GFX11-SDAG-NEXT:    s_cselect_b32 s2, s4, s5479; GFX11-SDAG-NEXT:    s_lshr_b32 s3, s3, 16480; GFX11-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)481; GFX11-SDAG-NEXT:    s_and_b32 s3, s3, 0x8000482; GFX11-SDAG-NEXT:    s_or_b32 s2, s3, s2483; GFX11-SDAG-NEXT:    s_mov_b32 s3, 0x31016000484; GFX11-SDAG-NEXT:    v_mov_b32_e32 v0, s2485; GFX11-SDAG-NEXT:    s_mov_b32 s2, -1486; GFX11-SDAG-NEXT:    buffer_store_b16 v0, off, s[0:3], 0487; GFX11-SDAG-NEXT:    s_endpgm488;489; GFX11-GISEL-LABEL: fptrunc_f64_to_f16:490; GFX11-GISEL:       ; %bb.0:491; GFX11-GISEL-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24492; GFX11-GISEL-NEXT:    s_waitcnt lgkmcnt(0)493; GFX11-GISEL-NEXT:    s_bfe_u32 s4, s3, 0xb0014494; GFX11-GISEL-NEXT:    s_lshr_b32 s5, s3, 8495; GFX11-GISEL-NEXT:    s_and_b32 s6, s3, 0x1ff496; GFX11-GISEL-NEXT:    s_addk_i32 s4, 0xfc10497; GFX11-GISEL-NEXT:    s_and_b32 s5, s5, 0xffe498; GFX11-GISEL-NEXT:    s_or_b32 s2, s6, s2499; GFX11-GISEL-NEXT:    s_cselect_b32 s2, 1, 0500; GFX11-GISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)501; GFX11-GISEL-NEXT:    s_or_b32 s2, s5, s2502; GFX11-GISEL-NEXT:    s_cselect_b32 s5, 1, 0503; GFX11-GISEL-NEXT:    s_sub_i32 s6, 1, s4504; GFX11-GISEL-NEXT:    s_or_b32 s8, s2, 0x1000505; GFX11-GISEL-NEXT:    s_max_i32 s6, s6, 0506; GFX11-GISEL-NEXT:    s_lshl_b32 s7, s4, 12507; GFX11-GISEL-NEXT:    s_min_i32 s6, s6, 13508; GFX11-GISEL-NEXT:    s_lshl_b32 s5, s5, 9509; GFX11-GISEL-NEXT:    s_lshr_b32 s9, s8, s6510; GFX11-GISEL-NEXT:    s_or_b32 s2, s2, s7511; GFX11-GISEL-NEXT:    s_lshl_b32 s6, s9, s6512; GFX11-GISEL-NEXT:    s_or_b32 s5, s5, 0x7c00513; GFX11-GISEL-NEXT:    s_cmp_lg_u32 s6, s8514; GFX11-GISEL-NEXT:    s_cselect_b32 s6, 1, 0515; GFX11-GISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(SALU_CYCLE_1)516; GFX11-GISEL-NEXT:    s_or_b32 s6, s9, s6517; GFX11-GISEL-NEXT:    s_cmp_lt_i32 s4, 1518; GFX11-GISEL-NEXT:    s_cselect_b32 s2, s6, s2519; GFX11-GISEL-NEXT:    s_and_b32 s6, s2, 7520; GFX11-GISEL-NEXT:    s_lshr_b32 s2, s2, 2521; GFX11-GISEL-NEXT:    s_cmp_eq_u32 s6, 3522; GFX11-GISEL-NEXT:    s_cselect_b32 s7, 1, 0523; GFX11-GISEL-NEXT:    s_cmp_gt_i32 s6, 5524; GFX11-GISEL-NEXT:    s_cselect_b32 s6, 1, 0525; GFX11-GISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)526; GFX11-GISEL-NEXT:    s_or_b32 s6, s7, s6527; GFX11-GISEL-NEXT:    s_add_i32 s2, s2, s6528; GFX11-GISEL-NEXT:    s_cmp_gt_i32 s4, 30529; GFX11-GISEL-NEXT:    s_cselect_b32 s2, 0x7c00, s2530; GFX11-GISEL-NEXT:    s_cmpk_eq_i32 s4, 0x40f531; GFX11-GISEL-NEXT:    s_cselect_b32 s2, s5, s2532; GFX11-GISEL-NEXT:    s_lshr_b32 s3, s3, 16533; GFX11-GISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)534; GFX11-GISEL-NEXT:    s_and_b32 s3, s3, 0x8000535; GFX11-GISEL-NEXT:    s_or_b32 s2, s3, s2536; GFX11-GISEL-NEXT:    s_mov_b32 s3, 0x31016000537; GFX11-GISEL-NEXT:    v_mov_b32_e32 v0, s2538; GFX11-GISEL-NEXT:    s_mov_b32 s2, -1539; GFX11-GISEL-NEXT:    buffer_store_b16 v0, off, s[0:3], 0540; GFX11-GISEL-NEXT:    s_endpgm541  %result = fptrunc double %in to half542  %result_i16 = bitcast half %result to i16543  store i16 %result_i16, ptr addrspace(1) %out544  ret void545}546 547define amdgpu_kernel void @fptrunc_f64_to_f16_afn(ptr addrspace(1) %out, double %in) {548; SI-LABEL: fptrunc_f64_to_f16_afn:549; SI:       ; %bb.0:550; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x9551; SI-NEXT:    s_mov_b32 s7, 0xf000552; SI-NEXT:    s_mov_b32 s6, -1553; SI-NEXT:    s_waitcnt lgkmcnt(0)554; SI-NEXT:    s_mov_b32 s4, s0555; SI-NEXT:    s_mov_b32 s5, s1556; SI-NEXT:    v_cvt_f32_f64_e32 v0, s[2:3]557; SI-NEXT:    v_cvt_f16_f32_e32 v0, v0558; SI-NEXT:    buffer_store_short v0, off, s[4:7], 0559; SI-NEXT:    s_endpgm560;561; VI-SDAG-LABEL: fptrunc_f64_to_f16_afn:562; VI-SDAG:       ; %bb.0:563; VI-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24564; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)565; VI-SDAG-NEXT:    v_cvt_f32_f64_e32 v0, s[2:3]566; VI-SDAG-NEXT:    s_mov_b32 s3, 0xf000567; VI-SDAG-NEXT:    s_mov_b32 s2, -1568; VI-SDAG-NEXT:    v_cvt_f16_f32_e32 v0, v0569; VI-SDAG-NEXT:    buffer_store_short v0, off, s[0:3], 0570; VI-SDAG-NEXT:    s_endpgm571;572; VI-GISEL-LABEL: fptrunc_f64_to_f16_afn:573; VI-GISEL:       ; %bb.0:574; VI-GISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24575; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)576; VI-GISEL-NEXT:    v_cvt_f32_f64_e32 v0, s[2:3]577; VI-GISEL-NEXT:    s_mov_b32 s2, -1578; VI-GISEL-NEXT:    s_mov_b32 s3, 0xf000579; VI-GISEL-NEXT:    v_cvt_f16_f32_e32 v0, v0580; VI-GISEL-NEXT:    buffer_store_short v0, off, s[0:3], 0581; VI-GISEL-NEXT:    s_endpgm582;583; GFX10-SDAG-LABEL: fptrunc_f64_to_f16_afn:584; GFX10-SDAG:       ; %bb.0:585; GFX10-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24586; GFX10-SDAG-NEXT:    s_waitcnt lgkmcnt(0)587; GFX10-SDAG-NEXT:    v_cvt_f32_f64_e32 v0, s[2:3]588; GFX10-SDAG-NEXT:    s_mov_b32 s3, 0x31016000589; GFX10-SDAG-NEXT:    s_mov_b32 s2, -1590; GFX10-SDAG-NEXT:    v_cvt_f16_f32_e32 v0, v0591; GFX10-SDAG-NEXT:    buffer_store_short v0, off, s[0:3], 0592; GFX10-SDAG-NEXT:    s_endpgm593;594; GFX10-GISEL-LABEL: fptrunc_f64_to_f16_afn:595; GFX10-GISEL:       ; %bb.0:596; GFX10-GISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24597; GFX10-GISEL-NEXT:    s_waitcnt lgkmcnt(0)598; GFX10-GISEL-NEXT:    v_cvt_f32_f64_e32 v0, s[2:3]599; GFX10-GISEL-NEXT:    s_mov_b32 s2, -1600; GFX10-GISEL-NEXT:    s_mov_b32 s3, 0x31016000601; GFX10-GISEL-NEXT:    v_cvt_f16_f32_e32 v0, v0602; GFX10-GISEL-NEXT:    buffer_store_short v0, off, s[0:3], 0603; GFX10-GISEL-NEXT:    s_endpgm604;605; GFX11-SAFE-SDAG-LABEL: fptrunc_f64_to_f16_afn:606; GFX11-SAFE-SDAG:       ; %bb.0:607; GFX11-SAFE-SDAG-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24608; GFX11-SAFE-SDAG-NEXT:    s_waitcnt lgkmcnt(0)609; GFX11-SAFE-SDAG-NEXT:    v_cvt_f32_f64_e32 v0, s[2:3]610; GFX11-SAFE-SDAG-NEXT:    s_mov_b32 s3, 0x31016000611; GFX11-SAFE-SDAG-NEXT:    s_mov_b32 s2, -1612; GFX11-SAFE-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)613; GFX11-SAFE-SDAG-NEXT:    v_cvt_f16_f32_e32 v0.l, v0614; GFX11-SAFE-SDAG-NEXT:    buffer_store_b16 v0, off, s[0:3], 0615; GFX11-SAFE-SDAG-NEXT:    s_endpgm616;617; GFX11-SAFE-GISEL-LABEL: fptrunc_f64_to_f16_afn:618; GFX11-SAFE-GISEL:       ; %bb.0:619; GFX11-SAFE-GISEL-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24620; GFX11-SAFE-GISEL-NEXT:    s_waitcnt lgkmcnt(0)621; GFX11-SAFE-GISEL-NEXT:    v_cvt_f32_f64_e32 v0, s[2:3]622; GFX11-SAFE-GISEL-NEXT:    s_mov_b32 s2, -1623; GFX11-SAFE-GISEL-NEXT:    s_mov_b32 s3, 0x31016000624; GFX11-SAFE-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)625; GFX11-SAFE-GISEL-NEXT:    v_cvt_f16_f32_e32 v0.l, v0626; GFX11-SAFE-GISEL-NEXT:    buffer_store_b16 v0, off, s[0:3], 0627; GFX11-SAFE-GISEL-NEXT:    s_endpgm628;629; GFX11-UNSAFE-DAG-TRUE16-LABEL: fptrunc_f64_to_f16_afn:630; GFX11-UNSAFE-DAG-TRUE16:       ; %bb.0:631; GFX11-UNSAFE-DAG-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24632; GFX11-UNSAFE-DAG-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)633; GFX11-UNSAFE-DAG-TRUE16-NEXT:    v_cvt_f32_f64_e32 v0, s[2:3]634; GFX11-UNSAFE-DAG-TRUE16-NEXT:    s_mov_b32 s3, 0x31016000635; GFX11-UNSAFE-DAG-TRUE16-NEXT:    s_mov_b32 s2, -1636; GFX11-UNSAFE-DAG-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)637; GFX11-UNSAFE-DAG-TRUE16-NEXT:    v_cvt_f16_f32_e32 v0.l, v0638; GFX11-UNSAFE-DAG-TRUE16-NEXT:    buffer_store_b16 v0, off, s[0:3], 0639; GFX11-UNSAFE-DAG-TRUE16-NEXT:    s_endpgm640;641; GFX11-UNSAFE-DAG-FAKE16-LABEL: fptrunc_f64_to_f16_afn:642; GFX11-UNSAFE-DAG-FAKE16:       ; %bb.0:643; GFX11-UNSAFE-DAG-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24644; GFX11-UNSAFE-DAG-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)645; GFX11-UNSAFE-DAG-FAKE16-NEXT:    v_cvt_f32_f64_e32 v0, s[2:3]646; GFX11-UNSAFE-DAG-FAKE16-NEXT:    s_mov_b32 s3, 0x31016000647; GFX11-UNSAFE-DAG-FAKE16-NEXT:    s_mov_b32 s2, -1648; GFX11-UNSAFE-DAG-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)649; GFX11-UNSAFE-DAG-FAKE16-NEXT:    v_cvt_f16_f32_e32 v0, v0650; GFX11-UNSAFE-DAG-FAKE16-NEXT:    buffer_store_b16 v0, off, s[0:3], 0651; GFX11-UNSAFE-DAG-FAKE16-NEXT:    s_endpgm652;653; GFX11-UNSAFE-GISEL-TRUE16-LABEL: fptrunc_f64_to_f16_afn:654; GFX11-UNSAFE-GISEL-TRUE16:       ; %bb.0:655; GFX11-UNSAFE-GISEL-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24656; GFX11-UNSAFE-GISEL-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)657; GFX11-UNSAFE-GISEL-TRUE16-NEXT:    v_cvt_f32_f64_e32 v0, s[2:3]658; GFX11-UNSAFE-GISEL-TRUE16-NEXT:    s_mov_b32 s2, -1659; GFX11-UNSAFE-GISEL-TRUE16-NEXT:    s_mov_b32 s3, 0x31016000660; GFX11-UNSAFE-GISEL-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)661; GFX11-UNSAFE-GISEL-TRUE16-NEXT:    v_cvt_f16_f32_e32 v0.l, v0662; GFX11-UNSAFE-GISEL-TRUE16-NEXT:    buffer_store_b16 v0, off, s[0:3], 0663; GFX11-UNSAFE-GISEL-TRUE16-NEXT:    s_endpgm664;665; GFX11-UNSAFE-GISEL-FAKE16-LABEL: fptrunc_f64_to_f16_afn:666; GFX11-UNSAFE-GISEL-FAKE16:       ; %bb.0:667; GFX11-UNSAFE-GISEL-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24668; GFX11-UNSAFE-GISEL-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)669; GFX11-UNSAFE-GISEL-FAKE16-NEXT:    v_cvt_f32_f64_e32 v0, s[2:3]670; GFX11-UNSAFE-GISEL-FAKE16-NEXT:    s_mov_b32 s2, -1671; GFX11-UNSAFE-GISEL-FAKE16-NEXT:    s_mov_b32 s3, 0x31016000672; GFX11-UNSAFE-GISEL-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)673; GFX11-UNSAFE-GISEL-FAKE16-NEXT:    v_cvt_f16_f32_e32 v0, v0674; GFX11-UNSAFE-GISEL-FAKE16-NEXT:    buffer_store_b16 v0, off, s[0:3], 0675; GFX11-UNSAFE-GISEL-FAKE16-NEXT:    s_endpgm676  %result = fptrunc afn double %in to half677  %result_i16 = bitcast half %result to i16678  store i16 %result_i16, ptr addrspace(1) %out679  ret void680}681 682define amdgpu_kernel void @fptrunc_v2f64_to_v2f32(ptr addrspace(1) %out, <2 x double> %in) {683; SI-LABEL: fptrunc_v2f64_to_v2f32:684; SI:       ; %bb.0:685; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0xd686; SI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x9687; SI-NEXT:    s_mov_b32 s7, 0xf000688; SI-NEXT:    s_mov_b32 s6, -1689; SI-NEXT:    s_waitcnt lgkmcnt(0)690; SI-NEXT:    v_cvt_f32_f64_e32 v1, s[2:3]691; SI-NEXT:    v_cvt_f32_f64_e32 v0, s[0:1]692; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0693; SI-NEXT:    s_endpgm694;695; VI-SDAG-LABEL: fptrunc_v2f64_to_v2f32:696; VI-SDAG:       ; %bb.0:697; VI-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34698; VI-SDAG-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x24699; VI-SDAG-NEXT:    s_mov_b32 s7, 0xf000700; VI-SDAG-NEXT:    s_mov_b32 s6, -1701; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)702; VI-SDAG-NEXT:    v_cvt_f32_f64_e32 v1, s[2:3]703; VI-SDAG-NEXT:    v_cvt_f32_f64_e32 v0, s[0:1]704; VI-SDAG-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0705; VI-SDAG-NEXT:    s_endpgm706;707; VI-GISEL-LABEL: fptrunc_v2f64_to_v2f32:708; VI-GISEL:       ; %bb.0:709; VI-GISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34710; VI-GISEL-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x24711; VI-GISEL-NEXT:    s_mov_b32 s6, -1712; VI-GISEL-NEXT:    s_mov_b32 s7, 0xf000713; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)714; VI-GISEL-NEXT:    v_cvt_f32_f64_e32 v0, s[0:1]715; VI-GISEL-NEXT:    v_cvt_f32_f64_e32 v1, s[2:3]716; VI-GISEL-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0717; VI-GISEL-NEXT:    s_endpgm718;719; GFX10-SDAG-LABEL: fptrunc_v2f64_to_v2f32:720; GFX10-SDAG:       ; %bb.0:721; GFX10-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34722; GFX10-SDAG-NEXT:    s_waitcnt lgkmcnt(0)723; GFX10-SDAG-NEXT:    v_cvt_f32_f64_e32 v1, s[2:3]724; GFX10-SDAG-NEXT:    v_cvt_f32_f64_e32 v0, s[0:1]725; GFX10-SDAG-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24726; GFX10-SDAG-NEXT:    s_mov_b32 s3, 0x31016000727; GFX10-SDAG-NEXT:    s_mov_b32 s2, -1728; GFX10-SDAG-NEXT:    s_waitcnt lgkmcnt(0)729; GFX10-SDAG-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 0730; GFX10-SDAG-NEXT:    s_endpgm731;732; GFX10-GISEL-LABEL: fptrunc_v2f64_to_v2f32:733; GFX10-GISEL:       ; %bb.0:734; GFX10-GISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34735; GFX10-GISEL-NEXT:    s_waitcnt lgkmcnt(0)736; GFX10-GISEL-NEXT:    v_cvt_f32_f64_e32 v0, s[0:1]737; GFX10-GISEL-NEXT:    v_cvt_f32_f64_e32 v1, s[2:3]738; GFX10-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24739; GFX10-GISEL-NEXT:    s_mov_b32 s2, -1740; GFX10-GISEL-NEXT:    s_mov_b32 s3, 0x31016000741; GFX10-GISEL-NEXT:    s_waitcnt lgkmcnt(0)742; GFX10-GISEL-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 0743; GFX10-GISEL-NEXT:    s_endpgm744;745; GFX11-SDAG-LABEL: fptrunc_v2f64_to_v2f32:746; GFX11-SDAG:       ; %bb.0:747; GFX11-SDAG-NEXT:    s_load_b128 s[0:3], s[4:5], 0x34748; GFX11-SDAG-NEXT:    s_waitcnt lgkmcnt(0)749; GFX11-SDAG-NEXT:    v_cvt_f32_f64_e32 v1, s[2:3]750; GFX11-SDAG-NEXT:    v_cvt_f32_f64_e32 v0, s[0:1]751; GFX11-SDAG-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24752; GFX11-SDAG-NEXT:    s_mov_b32 s3, 0x31016000753; GFX11-SDAG-NEXT:    s_mov_b32 s2, -1754; GFX11-SDAG-NEXT:    s_waitcnt lgkmcnt(0)755; GFX11-SDAG-NEXT:    buffer_store_b64 v[0:1], off, s[0:3], 0756; GFX11-SDAG-NEXT:    s_endpgm757;758; GFX11-GISEL-LABEL: fptrunc_v2f64_to_v2f32:759; GFX11-GISEL:       ; %bb.0:760; GFX11-GISEL-NEXT:    s_load_b128 s[0:3], s[4:5], 0x34761; GFX11-GISEL-NEXT:    s_waitcnt lgkmcnt(0)762; GFX11-GISEL-NEXT:    v_cvt_f32_f64_e32 v0, s[0:1]763; GFX11-GISEL-NEXT:    v_cvt_f32_f64_e32 v1, s[2:3]764; GFX11-GISEL-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24765; GFX11-GISEL-NEXT:    s_mov_b32 s2, -1766; GFX11-GISEL-NEXT:    s_mov_b32 s3, 0x31016000767; GFX11-GISEL-NEXT:    s_waitcnt lgkmcnt(0)768; GFX11-GISEL-NEXT:    buffer_store_b64 v[0:1], off, s[0:3], 0769; GFX11-GISEL-NEXT:    s_endpgm770  %result = fptrunc <2 x double> %in to <2 x float>771  store <2 x float> %result, ptr addrspace(1) %out772  ret void773}774 775define amdgpu_kernel void @fptrunc_v2f64_to_v2f32_afn(ptr addrspace(1) %out, <2 x double> %in) {776; SI-LABEL: fptrunc_v2f64_to_v2f32_afn:777; SI:       ; %bb.0:778; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0xd779; SI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x9780; SI-NEXT:    s_mov_b32 s7, 0xf000781; SI-NEXT:    s_mov_b32 s6, -1782; SI-NEXT:    s_waitcnt lgkmcnt(0)783; SI-NEXT:    v_cvt_f32_f64_e32 v1, s[2:3]784; SI-NEXT:    v_cvt_f32_f64_e32 v0, s[0:1]785; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0786; SI-NEXT:    s_endpgm787;788; VI-SDAG-LABEL: fptrunc_v2f64_to_v2f32_afn:789; VI-SDAG:       ; %bb.0:790; VI-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34791; VI-SDAG-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x24792; VI-SDAG-NEXT:    s_mov_b32 s7, 0xf000793; VI-SDAG-NEXT:    s_mov_b32 s6, -1794; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)795; VI-SDAG-NEXT:    v_cvt_f32_f64_e32 v1, s[2:3]796; VI-SDAG-NEXT:    v_cvt_f32_f64_e32 v0, s[0:1]797; VI-SDAG-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0798; VI-SDAG-NEXT:    s_endpgm799;800; VI-GISEL-LABEL: fptrunc_v2f64_to_v2f32_afn:801; VI-GISEL:       ; %bb.0:802; VI-GISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34803; VI-GISEL-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x24804; VI-GISEL-NEXT:    s_mov_b32 s6, -1805; VI-GISEL-NEXT:    s_mov_b32 s7, 0xf000806; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)807; VI-GISEL-NEXT:    v_cvt_f32_f64_e32 v0, s[0:1]808; VI-GISEL-NEXT:    v_cvt_f32_f64_e32 v1, s[2:3]809; VI-GISEL-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 0810; VI-GISEL-NEXT:    s_endpgm811;812; GFX10-SDAG-LABEL: fptrunc_v2f64_to_v2f32_afn:813; GFX10-SDAG:       ; %bb.0:814; GFX10-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34815; GFX10-SDAG-NEXT:    s_waitcnt lgkmcnt(0)816; GFX10-SDAG-NEXT:    v_cvt_f32_f64_e32 v1, s[2:3]817; GFX10-SDAG-NEXT:    v_cvt_f32_f64_e32 v0, s[0:1]818; GFX10-SDAG-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24819; GFX10-SDAG-NEXT:    s_mov_b32 s3, 0x31016000820; GFX10-SDAG-NEXT:    s_mov_b32 s2, -1821; GFX10-SDAG-NEXT:    s_waitcnt lgkmcnt(0)822; GFX10-SDAG-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 0823; GFX10-SDAG-NEXT:    s_endpgm824;825; GFX10-GISEL-LABEL: fptrunc_v2f64_to_v2f32_afn:826; GFX10-GISEL:       ; %bb.0:827; GFX10-GISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34828; GFX10-GISEL-NEXT:    s_waitcnt lgkmcnt(0)829; GFX10-GISEL-NEXT:    v_cvt_f32_f64_e32 v0, s[0:1]830; GFX10-GISEL-NEXT:    v_cvt_f32_f64_e32 v1, s[2:3]831; GFX10-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24832; GFX10-GISEL-NEXT:    s_mov_b32 s2, -1833; GFX10-GISEL-NEXT:    s_mov_b32 s3, 0x31016000834; GFX10-GISEL-NEXT:    s_waitcnt lgkmcnt(0)835; GFX10-GISEL-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 0836; GFX10-GISEL-NEXT:    s_endpgm837;838; GFX11-SDAG-LABEL: fptrunc_v2f64_to_v2f32_afn:839; GFX11-SDAG:       ; %bb.0:840; GFX11-SDAG-NEXT:    s_load_b128 s[0:3], s[4:5], 0x34841; GFX11-SDAG-NEXT:    s_waitcnt lgkmcnt(0)842; GFX11-SDAG-NEXT:    v_cvt_f32_f64_e32 v1, s[2:3]843; GFX11-SDAG-NEXT:    v_cvt_f32_f64_e32 v0, s[0:1]844; GFX11-SDAG-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24845; GFX11-SDAG-NEXT:    s_mov_b32 s3, 0x31016000846; GFX11-SDAG-NEXT:    s_mov_b32 s2, -1847; GFX11-SDAG-NEXT:    s_waitcnt lgkmcnt(0)848; GFX11-SDAG-NEXT:    buffer_store_b64 v[0:1], off, s[0:3], 0849; GFX11-SDAG-NEXT:    s_endpgm850;851; GFX11-GISEL-LABEL: fptrunc_v2f64_to_v2f32_afn:852; GFX11-GISEL:       ; %bb.0:853; GFX11-GISEL-NEXT:    s_load_b128 s[0:3], s[4:5], 0x34854; GFX11-GISEL-NEXT:    s_waitcnt lgkmcnt(0)855; GFX11-GISEL-NEXT:    v_cvt_f32_f64_e32 v0, s[0:1]856; GFX11-GISEL-NEXT:    v_cvt_f32_f64_e32 v1, s[2:3]857; GFX11-GISEL-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24858; GFX11-GISEL-NEXT:    s_mov_b32 s2, -1859; GFX11-GISEL-NEXT:    s_mov_b32 s3, 0x31016000860; GFX11-GISEL-NEXT:    s_waitcnt lgkmcnt(0)861; GFX11-GISEL-NEXT:    buffer_store_b64 v[0:1], off, s[0:3], 0862; GFX11-GISEL-NEXT:    s_endpgm863  %result = fptrunc afn <2 x double> %in to <2 x float>864  store <2 x float> %result, ptr addrspace(1) %out865  ret void866}867 868define amdgpu_kernel void @fptrunc_v3f64_to_v3f32(ptr addrspace(1) %out, <3 x double> %in) {869; SI-LABEL: fptrunc_v3f64_to_v3f32:870; SI:       ; %bb.0:871; SI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9872; SI-NEXT:    s_load_dwordx4 s[8:11], s[4:5], 0x11873; SI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x15874; SI-NEXT:    s_mov_b32 s3, 0xf000875; SI-NEXT:    s_mov_b32 s2, -1876; SI-NEXT:    s_waitcnt lgkmcnt(0)877; SI-NEXT:    v_cvt_f32_f64_e32 v1, s[10:11]878; SI-NEXT:    v_cvt_f32_f64_e32 v0, s[8:9]879; SI-NEXT:    v_cvt_f32_f64_e32 v2, s[4:5]880; SI-NEXT:    buffer_store_dword v2, off, s[0:3], 0 offset:8881; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 0882; SI-NEXT:    s_endpgm883;884; VI-SDAG-LABEL: fptrunc_v3f64_to_v3f32:885; VI-SDAG:       ; %bb.0:886; VI-SDAG-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x54887; VI-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x44888; VI-SDAG-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x24889; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)890; VI-SDAG-NEXT:    v_cvt_f32_f64_e32 v2, s[6:7]891; VI-SDAG-NEXT:    v_cvt_f32_f64_e32 v1, s[2:3]892; VI-SDAG-NEXT:    v_cvt_f32_f64_e32 v0, s[0:1]893; VI-SDAG-NEXT:    s_mov_b32 s7, 0xf000894; VI-SDAG-NEXT:    s_mov_b32 s6, -1895; VI-SDAG-NEXT:    buffer_store_dwordx3 v[0:2], off, s[4:7], 0896; VI-SDAG-NEXT:    s_endpgm897;898; VI-GISEL-LABEL: fptrunc_v3f64_to_v3f32:899; VI-GISEL:       ; %bb.0:900; VI-GISEL-NEXT:    s_load_dwordx8 s[8:15], s[4:5], 0x44901; VI-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24902; VI-GISEL-NEXT:    s_mov_b32 s2, -1903; VI-GISEL-NEXT:    s_mov_b32 s3, 0xf000904; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)905; VI-GISEL-NEXT:    v_cvt_f32_f64_e32 v0, s[8:9]906; VI-GISEL-NEXT:    v_cvt_f32_f64_e32 v1, s[10:11]907; VI-GISEL-NEXT:    v_cvt_f32_f64_e32 v2, s[12:13]908; VI-GISEL-NEXT:    buffer_store_dwordx3 v[0:2], off, s[0:3], 0909; VI-GISEL-NEXT:    s_endpgm910;911; GFX10-SDAG-LABEL: fptrunc_v3f64_to_v3f32:912; GFX10-SDAG:       ; %bb.0:913; GFX10-SDAG-NEXT:    s_clause 0x1914; GFX10-SDAG-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x54915; GFX10-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x44916; GFX10-SDAG-NEXT:    s_waitcnt lgkmcnt(0)917; GFX10-SDAG-NEXT:    v_cvt_f32_f64_e32 v2, s[6:7]918; GFX10-SDAG-NEXT:    v_cvt_f32_f64_e32 v1, s[2:3]919; GFX10-SDAG-NEXT:    v_cvt_f32_f64_e32 v0, s[0:1]920; GFX10-SDAG-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24921; GFX10-SDAG-NEXT:    s_mov_b32 s3, 0x31016000922; GFX10-SDAG-NEXT:    s_mov_b32 s2, -1923; GFX10-SDAG-NEXT:    s_waitcnt lgkmcnt(0)924; GFX10-SDAG-NEXT:    buffer_store_dwordx3 v[0:2], off, s[0:3], 0925; GFX10-SDAG-NEXT:    s_endpgm926;927; GFX10-GISEL-LABEL: fptrunc_v3f64_to_v3f32:928; GFX10-GISEL:       ; %bb.0:929; GFX10-GISEL-NEXT:    s_clause 0x1930; GFX10-GISEL-NEXT:    s_load_dwordx8 s[8:15], s[4:5], 0x44931; GFX10-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24932; GFX10-GISEL-NEXT:    s_mov_b32 s2, -1933; GFX10-GISEL-NEXT:    s_mov_b32 s3, 0x31016000934; GFX10-GISEL-NEXT:    s_waitcnt lgkmcnt(0)935; GFX10-GISEL-NEXT:    v_cvt_f32_f64_e32 v0, s[8:9]936; GFX10-GISEL-NEXT:    v_cvt_f32_f64_e32 v1, s[10:11]937; GFX10-GISEL-NEXT:    v_cvt_f32_f64_e32 v2, s[12:13]938; GFX10-GISEL-NEXT:    buffer_store_dwordx3 v[0:2], off, s[0:3], 0939; GFX10-GISEL-NEXT:    s_endpgm940;941; GFX11-SDAG-LABEL: fptrunc_v3f64_to_v3f32:942; GFX11-SDAG:       ; %bb.0:943; GFX11-SDAG-NEXT:    s_clause 0x1944; GFX11-SDAG-NEXT:    s_load_b64 s[6:7], s[4:5], 0x54945; GFX11-SDAG-NEXT:    s_load_b128 s[0:3], s[4:5], 0x44946; GFX11-SDAG-NEXT:    s_waitcnt lgkmcnt(0)947; GFX11-SDAG-NEXT:    v_cvt_f32_f64_e32 v2, s[6:7]948; GFX11-SDAG-NEXT:    v_cvt_f32_f64_e32 v1, s[2:3]949; GFX11-SDAG-NEXT:    v_cvt_f32_f64_e32 v0, s[0:1]950; GFX11-SDAG-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24951; GFX11-SDAG-NEXT:    s_mov_b32 s3, 0x31016000952; GFX11-SDAG-NEXT:    s_mov_b32 s2, -1953; GFX11-SDAG-NEXT:    s_waitcnt lgkmcnt(0)954; GFX11-SDAG-NEXT:    buffer_store_b96 v[0:2], off, s[0:3], 0955; GFX11-SDAG-NEXT:    s_endpgm956;957; GFX11-GISEL-LABEL: fptrunc_v3f64_to_v3f32:958; GFX11-GISEL:       ; %bb.0:959; GFX11-GISEL-NEXT:    s_clause 0x1960; GFX11-GISEL-NEXT:    s_load_b256 s[8:15], s[4:5], 0x44961; GFX11-GISEL-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24962; GFX11-GISEL-NEXT:    s_mov_b32 s2, -1963; GFX11-GISEL-NEXT:    s_mov_b32 s3, 0x31016000964; GFX11-GISEL-NEXT:    s_waitcnt lgkmcnt(0)965; GFX11-GISEL-NEXT:    v_cvt_f32_f64_e32 v0, s[8:9]966; GFX11-GISEL-NEXT:    v_cvt_f32_f64_e32 v1, s[10:11]967; GFX11-GISEL-NEXT:    v_cvt_f32_f64_e32 v2, s[12:13]968; GFX11-GISEL-NEXT:    buffer_store_b96 v[0:2], off, s[0:3], 0969; GFX11-GISEL-NEXT:    s_endpgm970  %result = fptrunc <3 x double> %in to <3 x float>971  store <3 x float> %result, ptr addrspace(1) %out972  ret void973}974 975define amdgpu_kernel void @fptrunc_v3f64_to_v3f32_afn(ptr addrspace(1) %out, <3 x double> %in) {976; SI-LABEL: fptrunc_v3f64_to_v3f32_afn:977; SI:       ; %bb.0:978; SI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9979; SI-NEXT:    s_load_dwordx4 s[8:11], s[4:5], 0x11980; SI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x15981; SI-NEXT:    s_mov_b32 s3, 0xf000982; SI-NEXT:    s_mov_b32 s2, -1983; SI-NEXT:    s_waitcnt lgkmcnt(0)984; SI-NEXT:    v_cvt_f32_f64_e32 v1, s[10:11]985; SI-NEXT:    v_cvt_f32_f64_e32 v0, s[8:9]986; SI-NEXT:    v_cvt_f32_f64_e32 v2, s[4:5]987; SI-NEXT:    buffer_store_dword v2, off, s[0:3], 0 offset:8988; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 0989; SI-NEXT:    s_endpgm990;991; VI-SDAG-LABEL: fptrunc_v3f64_to_v3f32_afn:992; VI-SDAG:       ; %bb.0:993; VI-SDAG-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x54994; VI-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x44995; VI-SDAG-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x24996; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)997; VI-SDAG-NEXT:    v_cvt_f32_f64_e32 v2, s[6:7]998; VI-SDAG-NEXT:    v_cvt_f32_f64_e32 v1, s[2:3]999; VI-SDAG-NEXT:    v_cvt_f32_f64_e32 v0, s[0:1]1000; VI-SDAG-NEXT:    s_mov_b32 s7, 0xf0001001; VI-SDAG-NEXT:    s_mov_b32 s6, -11002; VI-SDAG-NEXT:    buffer_store_dwordx3 v[0:2], off, s[4:7], 01003; VI-SDAG-NEXT:    s_endpgm1004;1005; VI-GISEL-LABEL: fptrunc_v3f64_to_v3f32_afn:1006; VI-GISEL:       ; %bb.0:1007; VI-GISEL-NEXT:    s_load_dwordx8 s[8:15], s[4:5], 0x441008; VI-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241009; VI-GISEL-NEXT:    s_mov_b32 s2, -11010; VI-GISEL-NEXT:    s_mov_b32 s3, 0xf0001011; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)1012; VI-GISEL-NEXT:    v_cvt_f32_f64_e32 v0, s[8:9]1013; VI-GISEL-NEXT:    v_cvt_f32_f64_e32 v1, s[10:11]1014; VI-GISEL-NEXT:    v_cvt_f32_f64_e32 v2, s[12:13]1015; VI-GISEL-NEXT:    buffer_store_dwordx3 v[0:2], off, s[0:3], 01016; VI-GISEL-NEXT:    s_endpgm1017;1018; GFX10-SDAG-LABEL: fptrunc_v3f64_to_v3f32_afn:1019; GFX10-SDAG:       ; %bb.0:1020; GFX10-SDAG-NEXT:    s_clause 0x11021; GFX10-SDAG-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x541022; GFX10-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x441023; GFX10-SDAG-NEXT:    s_waitcnt lgkmcnt(0)1024; GFX10-SDAG-NEXT:    v_cvt_f32_f64_e32 v2, s[6:7]1025; GFX10-SDAG-NEXT:    v_cvt_f32_f64_e32 v1, s[2:3]1026; GFX10-SDAG-NEXT:    v_cvt_f32_f64_e32 v0, s[0:1]1027; GFX10-SDAG-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241028; GFX10-SDAG-NEXT:    s_mov_b32 s3, 0x310160001029; GFX10-SDAG-NEXT:    s_mov_b32 s2, -11030; GFX10-SDAG-NEXT:    s_waitcnt lgkmcnt(0)1031; GFX10-SDAG-NEXT:    buffer_store_dwordx3 v[0:2], off, s[0:3], 01032; GFX10-SDAG-NEXT:    s_endpgm1033;1034; GFX10-GISEL-LABEL: fptrunc_v3f64_to_v3f32_afn:1035; GFX10-GISEL:       ; %bb.0:1036; GFX10-GISEL-NEXT:    s_clause 0x11037; GFX10-GISEL-NEXT:    s_load_dwordx8 s[8:15], s[4:5], 0x441038; GFX10-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241039; GFX10-GISEL-NEXT:    s_mov_b32 s2, -11040; GFX10-GISEL-NEXT:    s_mov_b32 s3, 0x310160001041; GFX10-GISEL-NEXT:    s_waitcnt lgkmcnt(0)1042; GFX10-GISEL-NEXT:    v_cvt_f32_f64_e32 v0, s[8:9]1043; GFX10-GISEL-NEXT:    v_cvt_f32_f64_e32 v1, s[10:11]1044; GFX10-GISEL-NEXT:    v_cvt_f32_f64_e32 v2, s[12:13]1045; GFX10-GISEL-NEXT:    buffer_store_dwordx3 v[0:2], off, s[0:3], 01046; GFX10-GISEL-NEXT:    s_endpgm1047;1048; GFX11-SDAG-LABEL: fptrunc_v3f64_to_v3f32_afn:1049; GFX11-SDAG:       ; %bb.0:1050; GFX11-SDAG-NEXT:    s_clause 0x11051; GFX11-SDAG-NEXT:    s_load_b64 s[6:7], s[4:5], 0x541052; GFX11-SDAG-NEXT:    s_load_b128 s[0:3], s[4:5], 0x441053; GFX11-SDAG-NEXT:    s_waitcnt lgkmcnt(0)1054; GFX11-SDAG-NEXT:    v_cvt_f32_f64_e32 v2, s[6:7]1055; GFX11-SDAG-NEXT:    v_cvt_f32_f64_e32 v1, s[2:3]1056; GFX11-SDAG-NEXT:    v_cvt_f32_f64_e32 v0, s[0:1]1057; GFX11-SDAG-NEXT:    s_load_b64 s[0:1], s[4:5], 0x241058; GFX11-SDAG-NEXT:    s_mov_b32 s3, 0x310160001059; GFX11-SDAG-NEXT:    s_mov_b32 s2, -11060; GFX11-SDAG-NEXT:    s_waitcnt lgkmcnt(0)1061; GFX11-SDAG-NEXT:    buffer_store_b96 v[0:2], off, s[0:3], 01062; GFX11-SDAG-NEXT:    s_endpgm1063;1064; GFX11-GISEL-LABEL: fptrunc_v3f64_to_v3f32_afn:1065; GFX11-GISEL:       ; %bb.0:1066; GFX11-GISEL-NEXT:    s_clause 0x11067; GFX11-GISEL-NEXT:    s_load_b256 s[8:15], s[4:5], 0x441068; GFX11-GISEL-NEXT:    s_load_b64 s[0:1], s[4:5], 0x241069; GFX11-GISEL-NEXT:    s_mov_b32 s2, -11070; GFX11-GISEL-NEXT:    s_mov_b32 s3, 0x310160001071; GFX11-GISEL-NEXT:    s_waitcnt lgkmcnt(0)1072; GFX11-GISEL-NEXT:    v_cvt_f32_f64_e32 v0, s[8:9]1073; GFX11-GISEL-NEXT:    v_cvt_f32_f64_e32 v1, s[10:11]1074; GFX11-GISEL-NEXT:    v_cvt_f32_f64_e32 v2, s[12:13]1075; GFX11-GISEL-NEXT:    buffer_store_b96 v[0:2], off, s[0:3], 01076; GFX11-GISEL-NEXT:    s_endpgm1077  %result = fptrunc afn <3 x double> %in to <3 x float>1078  store <3 x float> %result, ptr addrspace(1) %out1079  ret void1080}1081 1082define amdgpu_kernel void @fptrunc_v4f64_to_v4f32(ptr addrspace(1) %out, <4 x double> %in) {1083; SI-LABEL: fptrunc_v4f64_to_v4f32:1084; SI:       ; %bb.0:1085; SI-NEXT:    s_load_dwordx8 s[8:15], s[4:5], 0x111086; SI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x91087; SI-NEXT:    s_mov_b32 s3, 0xf0001088; SI-NEXT:    s_mov_b32 s2, -11089; SI-NEXT:    s_waitcnt lgkmcnt(0)1090; SI-NEXT:    v_cvt_f32_f64_e32 v3, s[14:15]1091; SI-NEXT:    v_cvt_f32_f64_e32 v2, s[12:13]1092; SI-NEXT:    v_cvt_f32_f64_e32 v1, s[10:11]1093; SI-NEXT:    v_cvt_f32_f64_e32 v0, s[8:9]1094; SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 01095; SI-NEXT:    s_endpgm1096;1097; VI-SDAG-LABEL: fptrunc_v4f64_to_v4f32:1098; VI-SDAG:       ; %bb.0:1099; VI-SDAG-NEXT:    s_load_dwordx8 s[8:15], s[4:5], 0x441100; VI-SDAG-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241101; VI-SDAG-NEXT:    s_mov_b32 s3, 0xf0001102; VI-SDAG-NEXT:    s_mov_b32 s2, -11103; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)1104; VI-SDAG-NEXT:    v_cvt_f32_f64_e32 v3, s[14:15]1105; VI-SDAG-NEXT:    v_cvt_f32_f64_e32 v2, s[12:13]1106; VI-SDAG-NEXT:    v_cvt_f32_f64_e32 v1, s[10:11]1107; VI-SDAG-NEXT:    v_cvt_f32_f64_e32 v0, s[8:9]1108; VI-SDAG-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 01109; VI-SDAG-NEXT:    s_endpgm1110;1111; VI-GISEL-LABEL: fptrunc_v4f64_to_v4f32:1112; VI-GISEL:       ; %bb.0:1113; VI-GISEL-NEXT:    s_load_dwordx8 s[8:15], s[4:5], 0x441114; VI-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241115; VI-GISEL-NEXT:    s_mov_b32 s2, -11116; VI-GISEL-NEXT:    s_mov_b32 s3, 0xf0001117; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)1118; VI-GISEL-NEXT:    v_cvt_f32_f64_e32 v0, s[8:9]1119; VI-GISEL-NEXT:    v_cvt_f32_f64_e32 v1, s[10:11]1120; VI-GISEL-NEXT:    v_cvt_f32_f64_e32 v2, s[12:13]1121; VI-GISEL-NEXT:    v_cvt_f32_f64_e32 v3, s[14:15]1122; VI-GISEL-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 01123; VI-GISEL-NEXT:    s_endpgm1124;1125; GFX10-SDAG-LABEL: fptrunc_v4f64_to_v4f32:1126; GFX10-SDAG:       ; %bb.0:1127; GFX10-SDAG-NEXT:    s_clause 0x11128; GFX10-SDAG-NEXT:    s_load_dwordx8 s[8:15], s[4:5], 0x441129; GFX10-SDAG-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241130; GFX10-SDAG-NEXT:    s_mov_b32 s3, 0x310160001131; GFX10-SDAG-NEXT:    s_mov_b32 s2, -11132; GFX10-SDAG-NEXT:    s_waitcnt lgkmcnt(0)1133; GFX10-SDAG-NEXT:    v_cvt_f32_f64_e32 v3, s[14:15]1134; GFX10-SDAG-NEXT:    v_cvt_f32_f64_e32 v2, s[12:13]1135; GFX10-SDAG-NEXT:    v_cvt_f32_f64_e32 v1, s[10:11]1136; GFX10-SDAG-NEXT:    v_cvt_f32_f64_e32 v0, s[8:9]1137; GFX10-SDAG-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 01138; GFX10-SDAG-NEXT:    s_endpgm1139;1140; GFX10-GISEL-LABEL: fptrunc_v4f64_to_v4f32:1141; GFX10-GISEL:       ; %bb.0:1142; GFX10-GISEL-NEXT:    s_clause 0x11143; GFX10-GISEL-NEXT:    s_load_dwordx8 s[8:15], s[4:5], 0x441144; GFX10-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241145; GFX10-GISEL-NEXT:    s_mov_b32 s2, -11146; GFX10-GISEL-NEXT:    s_mov_b32 s3, 0x310160001147; GFX10-GISEL-NEXT:    s_waitcnt lgkmcnt(0)1148; GFX10-GISEL-NEXT:    v_cvt_f32_f64_e32 v0, s[8:9]1149; GFX10-GISEL-NEXT:    v_cvt_f32_f64_e32 v1, s[10:11]1150; GFX10-GISEL-NEXT:    v_cvt_f32_f64_e32 v2, s[12:13]1151; GFX10-GISEL-NEXT:    v_cvt_f32_f64_e32 v3, s[14:15]1152; GFX10-GISEL-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 01153; GFX10-GISEL-NEXT:    s_endpgm1154;1155; GFX11-SDAG-LABEL: fptrunc_v4f64_to_v4f32:1156; GFX11-SDAG:       ; %bb.0:1157; GFX11-SDAG-NEXT:    s_clause 0x11158; GFX11-SDAG-NEXT:    s_load_b256 s[8:15], s[4:5], 0x441159; GFX11-SDAG-NEXT:    s_load_b64 s[0:1], s[4:5], 0x241160; GFX11-SDAG-NEXT:    s_mov_b32 s3, 0x310160001161; GFX11-SDAG-NEXT:    s_mov_b32 s2, -11162; GFX11-SDAG-NEXT:    s_waitcnt lgkmcnt(0)1163; GFX11-SDAG-NEXT:    v_cvt_f32_f64_e32 v3, s[14:15]1164; GFX11-SDAG-NEXT:    v_cvt_f32_f64_e32 v2, s[12:13]1165; GFX11-SDAG-NEXT:    v_cvt_f32_f64_e32 v1, s[10:11]1166; GFX11-SDAG-NEXT:    v_cvt_f32_f64_e32 v0, s[8:9]1167; GFX11-SDAG-NEXT:    buffer_store_b128 v[0:3], off, s[0:3], 01168; GFX11-SDAG-NEXT:    s_endpgm1169;1170; GFX11-GISEL-LABEL: fptrunc_v4f64_to_v4f32:1171; GFX11-GISEL:       ; %bb.0:1172; GFX11-GISEL-NEXT:    s_clause 0x11173; GFX11-GISEL-NEXT:    s_load_b256 s[8:15], s[4:5], 0x441174; GFX11-GISEL-NEXT:    s_load_b64 s[0:1], s[4:5], 0x241175; GFX11-GISEL-NEXT:    s_mov_b32 s2, -11176; GFX11-GISEL-NEXT:    s_mov_b32 s3, 0x310160001177; GFX11-GISEL-NEXT:    s_waitcnt lgkmcnt(0)1178; GFX11-GISEL-NEXT:    v_cvt_f32_f64_e32 v0, s[8:9]1179; GFX11-GISEL-NEXT:    v_cvt_f32_f64_e32 v1, s[10:11]1180; GFX11-GISEL-NEXT:    v_cvt_f32_f64_e32 v2, s[12:13]1181; GFX11-GISEL-NEXT:    v_cvt_f32_f64_e32 v3, s[14:15]1182; GFX11-GISEL-NEXT:    buffer_store_b128 v[0:3], off, s[0:3], 01183; GFX11-GISEL-NEXT:    s_endpgm1184  %result = fptrunc <4 x double> %in to <4 x float>1185  store <4 x float> %result, ptr addrspace(1) %out1186  ret void1187}1188 1189define amdgpu_kernel void @fptrunc_v4f64_to_v4f32_afn(ptr addrspace(1) %out, <4 x double> %in) {1190; SI-LABEL: fptrunc_v4f64_to_v4f32_afn:1191; SI:       ; %bb.0:1192; SI-NEXT:    s_load_dwordx8 s[8:15], s[4:5], 0x111193; SI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x91194; SI-NEXT:    s_mov_b32 s3, 0xf0001195; SI-NEXT:    s_mov_b32 s2, -11196; SI-NEXT:    s_waitcnt lgkmcnt(0)1197; SI-NEXT:    v_cvt_f32_f64_e32 v3, s[14:15]1198; SI-NEXT:    v_cvt_f32_f64_e32 v2, s[12:13]1199; SI-NEXT:    v_cvt_f32_f64_e32 v1, s[10:11]1200; SI-NEXT:    v_cvt_f32_f64_e32 v0, s[8:9]1201; SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 01202; SI-NEXT:    s_endpgm1203;1204; VI-SDAG-LABEL: fptrunc_v4f64_to_v4f32_afn:1205; VI-SDAG:       ; %bb.0:1206; VI-SDAG-NEXT:    s_load_dwordx8 s[8:15], s[4:5], 0x441207; VI-SDAG-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241208; VI-SDAG-NEXT:    s_mov_b32 s3, 0xf0001209; VI-SDAG-NEXT:    s_mov_b32 s2, -11210; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)1211; VI-SDAG-NEXT:    v_cvt_f32_f64_e32 v3, s[14:15]1212; VI-SDAG-NEXT:    v_cvt_f32_f64_e32 v2, s[12:13]1213; VI-SDAG-NEXT:    v_cvt_f32_f64_e32 v1, s[10:11]1214; VI-SDAG-NEXT:    v_cvt_f32_f64_e32 v0, s[8:9]1215; VI-SDAG-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 01216; VI-SDAG-NEXT:    s_endpgm1217;1218; VI-GISEL-LABEL: fptrunc_v4f64_to_v4f32_afn:1219; VI-GISEL:       ; %bb.0:1220; VI-GISEL-NEXT:    s_load_dwordx8 s[8:15], s[4:5], 0x441221; VI-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241222; VI-GISEL-NEXT:    s_mov_b32 s2, -11223; VI-GISEL-NEXT:    s_mov_b32 s3, 0xf0001224; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)1225; VI-GISEL-NEXT:    v_cvt_f32_f64_e32 v0, s[8:9]1226; VI-GISEL-NEXT:    v_cvt_f32_f64_e32 v1, s[10:11]1227; VI-GISEL-NEXT:    v_cvt_f32_f64_e32 v2, s[12:13]1228; VI-GISEL-NEXT:    v_cvt_f32_f64_e32 v3, s[14:15]1229; VI-GISEL-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 01230; VI-GISEL-NEXT:    s_endpgm1231;1232; GFX10-SDAG-LABEL: fptrunc_v4f64_to_v4f32_afn:1233; GFX10-SDAG:       ; %bb.0:1234; GFX10-SDAG-NEXT:    s_clause 0x11235; GFX10-SDAG-NEXT:    s_load_dwordx8 s[8:15], s[4:5], 0x441236; GFX10-SDAG-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241237; GFX10-SDAG-NEXT:    s_mov_b32 s3, 0x310160001238; GFX10-SDAG-NEXT:    s_mov_b32 s2, -11239; GFX10-SDAG-NEXT:    s_waitcnt lgkmcnt(0)1240; GFX10-SDAG-NEXT:    v_cvt_f32_f64_e32 v3, s[14:15]1241; GFX10-SDAG-NEXT:    v_cvt_f32_f64_e32 v2, s[12:13]1242; GFX10-SDAG-NEXT:    v_cvt_f32_f64_e32 v1, s[10:11]1243; GFX10-SDAG-NEXT:    v_cvt_f32_f64_e32 v0, s[8:9]1244; GFX10-SDAG-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 01245; GFX10-SDAG-NEXT:    s_endpgm1246;1247; GFX10-GISEL-LABEL: fptrunc_v4f64_to_v4f32_afn:1248; GFX10-GISEL:       ; %bb.0:1249; GFX10-GISEL-NEXT:    s_clause 0x11250; GFX10-GISEL-NEXT:    s_load_dwordx8 s[8:15], s[4:5], 0x441251; GFX10-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241252; GFX10-GISEL-NEXT:    s_mov_b32 s2, -11253; GFX10-GISEL-NEXT:    s_mov_b32 s3, 0x310160001254; GFX10-GISEL-NEXT:    s_waitcnt lgkmcnt(0)1255; GFX10-GISEL-NEXT:    v_cvt_f32_f64_e32 v0, s[8:9]1256; GFX10-GISEL-NEXT:    v_cvt_f32_f64_e32 v1, s[10:11]1257; GFX10-GISEL-NEXT:    v_cvt_f32_f64_e32 v2, s[12:13]1258; GFX10-GISEL-NEXT:    v_cvt_f32_f64_e32 v3, s[14:15]1259; GFX10-GISEL-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 01260; GFX10-GISEL-NEXT:    s_endpgm1261;1262; GFX11-SDAG-LABEL: fptrunc_v4f64_to_v4f32_afn:1263; GFX11-SDAG:       ; %bb.0:1264; GFX11-SDAG-NEXT:    s_clause 0x11265; GFX11-SDAG-NEXT:    s_load_b256 s[8:15], s[4:5], 0x441266; GFX11-SDAG-NEXT:    s_load_b64 s[0:1], s[4:5], 0x241267; GFX11-SDAG-NEXT:    s_mov_b32 s3, 0x310160001268; GFX11-SDAG-NEXT:    s_mov_b32 s2, -11269; GFX11-SDAG-NEXT:    s_waitcnt lgkmcnt(0)1270; GFX11-SDAG-NEXT:    v_cvt_f32_f64_e32 v3, s[14:15]1271; GFX11-SDAG-NEXT:    v_cvt_f32_f64_e32 v2, s[12:13]1272; GFX11-SDAG-NEXT:    v_cvt_f32_f64_e32 v1, s[10:11]1273; GFX11-SDAG-NEXT:    v_cvt_f32_f64_e32 v0, s[8:9]1274; GFX11-SDAG-NEXT:    buffer_store_b128 v[0:3], off, s[0:3], 01275; GFX11-SDAG-NEXT:    s_endpgm1276;1277; GFX11-GISEL-LABEL: fptrunc_v4f64_to_v4f32_afn:1278; GFX11-GISEL:       ; %bb.0:1279; GFX11-GISEL-NEXT:    s_clause 0x11280; GFX11-GISEL-NEXT:    s_load_b256 s[8:15], s[4:5], 0x441281; GFX11-GISEL-NEXT:    s_load_b64 s[0:1], s[4:5], 0x241282; GFX11-GISEL-NEXT:    s_mov_b32 s2, -11283; GFX11-GISEL-NEXT:    s_mov_b32 s3, 0x310160001284; GFX11-GISEL-NEXT:    s_waitcnt lgkmcnt(0)1285; GFX11-GISEL-NEXT:    v_cvt_f32_f64_e32 v0, s[8:9]1286; GFX11-GISEL-NEXT:    v_cvt_f32_f64_e32 v1, s[10:11]1287; GFX11-GISEL-NEXT:    v_cvt_f32_f64_e32 v2, s[12:13]1288; GFX11-GISEL-NEXT:    v_cvt_f32_f64_e32 v3, s[14:15]1289; GFX11-GISEL-NEXT:    buffer_store_b128 v[0:3], off, s[0:3], 01290; GFX11-GISEL-NEXT:    s_endpgm1291  %result = fptrunc afn <4 x double> %in to <4 x float>1292  store <4 x float> %result, ptr addrspace(1) %out1293  ret void1294}1295 1296define amdgpu_kernel void @fptrunc_v8f64_to_v8f32(ptr addrspace(1) %out, <8 x double> %in) {1297; SI-LABEL: fptrunc_v8f64_to_v8f32:1298; SI:       ; %bb.0:1299; SI-NEXT:    s_load_dwordx16 s[8:23], s[4:5], 0x191300; SI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x91301; SI-NEXT:    s_mov_b32 s3, 0xf0001302; SI-NEXT:    s_mov_b32 s2, -11303; SI-NEXT:    s_waitcnt lgkmcnt(0)1304; SI-NEXT:    v_cvt_f32_f64_e32 v3, s[14:15]1305; SI-NEXT:    v_cvt_f32_f64_e32 v2, s[12:13]1306; SI-NEXT:    v_cvt_f32_f64_e32 v1, s[10:11]1307; SI-NEXT:    v_cvt_f32_f64_e32 v0, s[8:9]1308; SI-NEXT:    v_cvt_f32_f64_e32 v7, s[22:23]1309; SI-NEXT:    v_cvt_f32_f64_e32 v6, s[20:21]1310; SI-NEXT:    v_cvt_f32_f64_e32 v5, s[18:19]1311; SI-NEXT:    v_cvt_f32_f64_e32 v4, s[16:17]1312; SI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:161313; SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 01314; SI-NEXT:    s_endpgm1315;1316; VI-SDAG-LABEL: fptrunc_v8f64_to_v8f32:1317; VI-SDAG:       ; %bb.0:1318; VI-SDAG-NEXT:    s_load_dwordx16 s[8:23], s[4:5], 0x641319; VI-SDAG-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241320; VI-SDAG-NEXT:    s_mov_b32 s3, 0xf0001321; VI-SDAG-NEXT:    s_mov_b32 s2, -11322; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)1323; VI-SDAG-NEXT:    v_cvt_f32_f64_e32 v7, s[22:23]1324; VI-SDAG-NEXT:    v_cvt_f32_f64_e32 v6, s[20:21]1325; VI-SDAG-NEXT:    v_cvt_f32_f64_e32 v5, s[18:19]1326; VI-SDAG-NEXT:    v_cvt_f32_f64_e32 v4, s[16:17]1327; VI-SDAG-NEXT:    v_cvt_f32_f64_e32 v3, s[14:15]1328; VI-SDAG-NEXT:    v_cvt_f32_f64_e32 v2, s[12:13]1329; VI-SDAG-NEXT:    v_cvt_f32_f64_e32 v1, s[10:11]1330; VI-SDAG-NEXT:    v_cvt_f32_f64_e32 v0, s[8:9]1331; VI-SDAG-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:161332; VI-SDAG-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 01333; VI-SDAG-NEXT:    s_endpgm1334;1335; VI-GISEL-LABEL: fptrunc_v8f64_to_v8f32:1336; VI-GISEL:       ; %bb.0:1337; VI-GISEL-NEXT:    s_load_dwordx16 s[8:23], s[4:5], 0x641338; VI-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241339; VI-GISEL-NEXT:    s_mov_b32 s2, -11340; VI-GISEL-NEXT:    s_mov_b32 s3, 0xf0001341; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)1342; VI-GISEL-NEXT:    v_cvt_f32_f64_e32 v0, s[8:9]1343; VI-GISEL-NEXT:    v_cvt_f32_f64_e32 v1, s[10:11]1344; VI-GISEL-NEXT:    v_cvt_f32_f64_e32 v2, s[12:13]1345; VI-GISEL-NEXT:    v_cvt_f32_f64_e32 v3, s[14:15]1346; VI-GISEL-NEXT:    v_cvt_f32_f64_e32 v4, s[16:17]1347; VI-GISEL-NEXT:    v_cvt_f32_f64_e32 v5, s[18:19]1348; VI-GISEL-NEXT:    v_cvt_f32_f64_e32 v6, s[20:21]1349; VI-GISEL-NEXT:    v_cvt_f32_f64_e32 v7, s[22:23]1350; VI-GISEL-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 01351; VI-GISEL-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:161352; VI-GISEL-NEXT:    s_endpgm1353;1354; GFX10-SDAG-LABEL: fptrunc_v8f64_to_v8f32:1355; GFX10-SDAG:       ; %bb.0:1356; GFX10-SDAG-NEXT:    s_clause 0x11357; GFX10-SDAG-NEXT:    s_load_dwordx16 s[8:23], s[4:5], 0x641358; GFX10-SDAG-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241359; GFX10-SDAG-NEXT:    s_mov_b32 s3, 0x310160001360; GFX10-SDAG-NEXT:    s_mov_b32 s2, -11361; GFX10-SDAG-NEXT:    s_waitcnt lgkmcnt(0)1362; GFX10-SDAG-NEXT:    v_cvt_f32_f64_e32 v7, s[22:23]1363; GFX10-SDAG-NEXT:    v_cvt_f32_f64_e32 v6, s[20:21]1364; GFX10-SDAG-NEXT:    v_cvt_f32_f64_e32 v5, s[18:19]1365; GFX10-SDAG-NEXT:    v_cvt_f32_f64_e32 v4, s[16:17]1366; GFX10-SDAG-NEXT:    v_cvt_f32_f64_e32 v3, s[14:15]1367; GFX10-SDAG-NEXT:    v_cvt_f32_f64_e32 v2, s[12:13]1368; GFX10-SDAG-NEXT:    v_cvt_f32_f64_e32 v1, s[10:11]1369; GFX10-SDAG-NEXT:    v_cvt_f32_f64_e32 v0, s[8:9]1370; GFX10-SDAG-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:161371; GFX10-SDAG-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 01372; GFX10-SDAG-NEXT:    s_endpgm1373;1374; GFX10-GISEL-LABEL: fptrunc_v8f64_to_v8f32:1375; GFX10-GISEL:       ; %bb.0:1376; GFX10-GISEL-NEXT:    s_clause 0x11377; GFX10-GISEL-NEXT:    s_load_dwordx16 s[8:23], s[4:5], 0x641378; GFX10-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241379; GFX10-GISEL-NEXT:    s_mov_b32 s2, -11380; GFX10-GISEL-NEXT:    s_mov_b32 s3, 0x310160001381; GFX10-GISEL-NEXT:    s_waitcnt lgkmcnt(0)1382; GFX10-GISEL-NEXT:    v_cvt_f32_f64_e32 v0, s[8:9]1383; GFX10-GISEL-NEXT:    v_cvt_f32_f64_e32 v1, s[10:11]1384; GFX10-GISEL-NEXT:    v_cvt_f32_f64_e32 v2, s[12:13]1385; GFX10-GISEL-NEXT:    v_cvt_f32_f64_e32 v3, s[14:15]1386; GFX10-GISEL-NEXT:    v_cvt_f32_f64_e32 v4, s[16:17]1387; GFX10-GISEL-NEXT:    v_cvt_f32_f64_e32 v5, s[18:19]1388; GFX10-GISEL-NEXT:    v_cvt_f32_f64_e32 v6, s[20:21]1389; GFX10-GISEL-NEXT:    v_cvt_f32_f64_e32 v7, s[22:23]1390; GFX10-GISEL-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 01391; GFX10-GISEL-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:161392; GFX10-GISEL-NEXT:    s_endpgm1393;1394; GFX11-SDAG-LABEL: fptrunc_v8f64_to_v8f32:1395; GFX11-SDAG:       ; %bb.0:1396; GFX11-SDAG-NEXT:    s_clause 0x11397; GFX11-SDAG-NEXT:    s_load_b512 s[8:23], s[4:5], 0x641398; GFX11-SDAG-NEXT:    s_load_b64 s[0:1], s[4:5], 0x241399; GFX11-SDAG-NEXT:    s_mov_b32 s3, 0x310160001400; GFX11-SDAG-NEXT:    s_mov_b32 s2, -11401; GFX11-SDAG-NEXT:    s_waitcnt lgkmcnt(0)1402; GFX11-SDAG-NEXT:    v_cvt_f32_f64_e32 v7, s[22:23]1403; GFX11-SDAG-NEXT:    v_cvt_f32_f64_e32 v6, s[20:21]1404; GFX11-SDAG-NEXT:    v_cvt_f32_f64_e32 v5, s[18:19]1405; GFX11-SDAG-NEXT:    v_cvt_f32_f64_e32 v4, s[16:17]1406; GFX11-SDAG-NEXT:    v_cvt_f32_f64_e32 v3, s[14:15]1407; GFX11-SDAG-NEXT:    v_cvt_f32_f64_e32 v2, s[12:13]1408; GFX11-SDAG-NEXT:    v_cvt_f32_f64_e32 v1, s[10:11]1409; GFX11-SDAG-NEXT:    v_cvt_f32_f64_e32 v0, s[8:9]1410; GFX11-SDAG-NEXT:    s_clause 0x11411; GFX11-SDAG-NEXT:    buffer_store_b128 v[4:7], off, s[0:3], 0 offset:161412; GFX11-SDAG-NEXT:    buffer_store_b128 v[0:3], off, s[0:3], 01413; GFX11-SDAG-NEXT:    s_endpgm1414;1415; GFX11-GISEL-LABEL: fptrunc_v8f64_to_v8f32:1416; GFX11-GISEL:       ; %bb.0:1417; GFX11-GISEL-NEXT:    s_clause 0x11418; GFX11-GISEL-NEXT:    s_load_b512 s[8:23], s[4:5], 0x641419; GFX11-GISEL-NEXT:    s_load_b64 s[0:1], s[4:5], 0x241420; GFX11-GISEL-NEXT:    s_mov_b32 s2, -11421; GFX11-GISEL-NEXT:    s_mov_b32 s3, 0x310160001422; GFX11-GISEL-NEXT:    s_waitcnt lgkmcnt(0)1423; GFX11-GISEL-NEXT:    v_cvt_f32_f64_e32 v0, s[8:9]1424; GFX11-GISEL-NEXT:    v_cvt_f32_f64_e32 v1, s[10:11]1425; GFX11-GISEL-NEXT:    v_cvt_f32_f64_e32 v2, s[12:13]1426; GFX11-GISEL-NEXT:    v_cvt_f32_f64_e32 v3, s[14:15]1427; GFX11-GISEL-NEXT:    v_cvt_f32_f64_e32 v4, s[16:17]1428; GFX11-GISEL-NEXT:    v_cvt_f32_f64_e32 v5, s[18:19]1429; GFX11-GISEL-NEXT:    v_cvt_f32_f64_e32 v6, s[20:21]1430; GFX11-GISEL-NEXT:    v_cvt_f32_f64_e32 v7, s[22:23]1431; GFX11-GISEL-NEXT:    s_clause 0x11432; GFX11-GISEL-NEXT:    buffer_store_b128 v[0:3], off, s[0:3], 01433; GFX11-GISEL-NEXT:    buffer_store_b128 v[4:7], off, s[0:3], 0 offset:161434; GFX11-GISEL-NEXT:    s_endpgm1435  %result = fptrunc <8 x double> %in to <8 x float>1436  store <8 x float> %result, ptr addrspace(1) %out1437  ret void1438}1439 1440define amdgpu_kernel void @fptrunc_v8f64_to_v8f32_afn(ptr addrspace(1) %out, <8 x double> %in) {1441; SI-LABEL: fptrunc_v8f64_to_v8f32_afn:1442; SI:       ; %bb.0:1443; SI-NEXT:    s_load_dwordx16 s[8:23], s[4:5], 0x191444; SI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x91445; SI-NEXT:    s_mov_b32 s3, 0xf0001446; SI-NEXT:    s_mov_b32 s2, -11447; SI-NEXT:    s_waitcnt lgkmcnt(0)1448; SI-NEXT:    v_cvt_f32_f64_e32 v3, s[14:15]1449; SI-NEXT:    v_cvt_f32_f64_e32 v2, s[12:13]1450; SI-NEXT:    v_cvt_f32_f64_e32 v1, s[10:11]1451; SI-NEXT:    v_cvt_f32_f64_e32 v0, s[8:9]1452; SI-NEXT:    v_cvt_f32_f64_e32 v7, s[22:23]1453; SI-NEXT:    v_cvt_f32_f64_e32 v6, s[20:21]1454; SI-NEXT:    v_cvt_f32_f64_e32 v5, s[18:19]1455; SI-NEXT:    v_cvt_f32_f64_e32 v4, s[16:17]1456; SI-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:161457; SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 01458; SI-NEXT:    s_endpgm1459;1460; VI-SDAG-LABEL: fptrunc_v8f64_to_v8f32_afn:1461; VI-SDAG:       ; %bb.0:1462; VI-SDAG-NEXT:    s_load_dwordx16 s[8:23], s[4:5], 0x641463; VI-SDAG-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241464; VI-SDAG-NEXT:    s_mov_b32 s3, 0xf0001465; VI-SDAG-NEXT:    s_mov_b32 s2, -11466; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)1467; VI-SDAG-NEXT:    v_cvt_f32_f64_e32 v7, s[22:23]1468; VI-SDAG-NEXT:    v_cvt_f32_f64_e32 v6, s[20:21]1469; VI-SDAG-NEXT:    v_cvt_f32_f64_e32 v5, s[18:19]1470; VI-SDAG-NEXT:    v_cvt_f32_f64_e32 v4, s[16:17]1471; VI-SDAG-NEXT:    v_cvt_f32_f64_e32 v3, s[14:15]1472; VI-SDAG-NEXT:    v_cvt_f32_f64_e32 v2, s[12:13]1473; VI-SDAG-NEXT:    v_cvt_f32_f64_e32 v1, s[10:11]1474; VI-SDAG-NEXT:    v_cvt_f32_f64_e32 v0, s[8:9]1475; VI-SDAG-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:161476; VI-SDAG-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 01477; VI-SDAG-NEXT:    s_endpgm1478;1479; VI-GISEL-LABEL: fptrunc_v8f64_to_v8f32_afn:1480; VI-GISEL:       ; %bb.0:1481; VI-GISEL-NEXT:    s_load_dwordx16 s[8:23], s[4:5], 0x641482; VI-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241483; VI-GISEL-NEXT:    s_mov_b32 s2, -11484; VI-GISEL-NEXT:    s_mov_b32 s3, 0xf0001485; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)1486; VI-GISEL-NEXT:    v_cvt_f32_f64_e32 v0, s[8:9]1487; VI-GISEL-NEXT:    v_cvt_f32_f64_e32 v1, s[10:11]1488; VI-GISEL-NEXT:    v_cvt_f32_f64_e32 v2, s[12:13]1489; VI-GISEL-NEXT:    v_cvt_f32_f64_e32 v3, s[14:15]1490; VI-GISEL-NEXT:    v_cvt_f32_f64_e32 v4, s[16:17]1491; VI-GISEL-NEXT:    v_cvt_f32_f64_e32 v5, s[18:19]1492; VI-GISEL-NEXT:    v_cvt_f32_f64_e32 v6, s[20:21]1493; VI-GISEL-NEXT:    v_cvt_f32_f64_e32 v7, s[22:23]1494; VI-GISEL-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 01495; VI-GISEL-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:161496; VI-GISEL-NEXT:    s_endpgm1497;1498; GFX10-SDAG-LABEL: fptrunc_v8f64_to_v8f32_afn:1499; GFX10-SDAG:       ; %bb.0:1500; GFX10-SDAG-NEXT:    s_clause 0x11501; GFX10-SDAG-NEXT:    s_load_dwordx16 s[8:23], s[4:5], 0x641502; GFX10-SDAG-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241503; GFX10-SDAG-NEXT:    s_mov_b32 s3, 0x310160001504; GFX10-SDAG-NEXT:    s_mov_b32 s2, -11505; GFX10-SDAG-NEXT:    s_waitcnt lgkmcnt(0)1506; GFX10-SDAG-NEXT:    v_cvt_f32_f64_e32 v7, s[22:23]1507; GFX10-SDAG-NEXT:    v_cvt_f32_f64_e32 v6, s[20:21]1508; GFX10-SDAG-NEXT:    v_cvt_f32_f64_e32 v5, s[18:19]1509; GFX10-SDAG-NEXT:    v_cvt_f32_f64_e32 v4, s[16:17]1510; GFX10-SDAG-NEXT:    v_cvt_f32_f64_e32 v3, s[14:15]1511; GFX10-SDAG-NEXT:    v_cvt_f32_f64_e32 v2, s[12:13]1512; GFX10-SDAG-NEXT:    v_cvt_f32_f64_e32 v1, s[10:11]1513; GFX10-SDAG-NEXT:    v_cvt_f32_f64_e32 v0, s[8:9]1514; GFX10-SDAG-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:161515; GFX10-SDAG-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 01516; GFX10-SDAG-NEXT:    s_endpgm1517;1518; GFX10-GISEL-LABEL: fptrunc_v8f64_to_v8f32_afn:1519; GFX10-GISEL:       ; %bb.0:1520; GFX10-GISEL-NEXT:    s_clause 0x11521; GFX10-GISEL-NEXT:    s_load_dwordx16 s[8:23], s[4:5], 0x641522; GFX10-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241523; GFX10-GISEL-NEXT:    s_mov_b32 s2, -11524; GFX10-GISEL-NEXT:    s_mov_b32 s3, 0x310160001525; GFX10-GISEL-NEXT:    s_waitcnt lgkmcnt(0)1526; GFX10-GISEL-NEXT:    v_cvt_f32_f64_e32 v0, s[8:9]1527; GFX10-GISEL-NEXT:    v_cvt_f32_f64_e32 v1, s[10:11]1528; GFX10-GISEL-NEXT:    v_cvt_f32_f64_e32 v2, s[12:13]1529; GFX10-GISEL-NEXT:    v_cvt_f32_f64_e32 v3, s[14:15]1530; GFX10-GISEL-NEXT:    v_cvt_f32_f64_e32 v4, s[16:17]1531; GFX10-GISEL-NEXT:    v_cvt_f32_f64_e32 v5, s[18:19]1532; GFX10-GISEL-NEXT:    v_cvt_f32_f64_e32 v6, s[20:21]1533; GFX10-GISEL-NEXT:    v_cvt_f32_f64_e32 v7, s[22:23]1534; GFX10-GISEL-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 01535; GFX10-GISEL-NEXT:    buffer_store_dwordx4 v[4:7], off, s[0:3], 0 offset:161536; GFX10-GISEL-NEXT:    s_endpgm1537;1538; GFX11-SDAG-LABEL: fptrunc_v8f64_to_v8f32_afn:1539; GFX11-SDAG:       ; %bb.0:1540; GFX11-SDAG-NEXT:    s_clause 0x11541; GFX11-SDAG-NEXT:    s_load_b512 s[8:23], s[4:5], 0x641542; GFX11-SDAG-NEXT:    s_load_b64 s[0:1], s[4:5], 0x241543; GFX11-SDAG-NEXT:    s_mov_b32 s3, 0x310160001544; GFX11-SDAG-NEXT:    s_mov_b32 s2, -11545; GFX11-SDAG-NEXT:    s_waitcnt lgkmcnt(0)1546; GFX11-SDAG-NEXT:    v_cvt_f32_f64_e32 v7, s[22:23]1547; GFX11-SDAG-NEXT:    v_cvt_f32_f64_e32 v6, s[20:21]1548; GFX11-SDAG-NEXT:    v_cvt_f32_f64_e32 v5, s[18:19]1549; GFX11-SDAG-NEXT:    v_cvt_f32_f64_e32 v4, s[16:17]1550; GFX11-SDAG-NEXT:    v_cvt_f32_f64_e32 v3, s[14:15]1551; GFX11-SDAG-NEXT:    v_cvt_f32_f64_e32 v2, s[12:13]1552; GFX11-SDAG-NEXT:    v_cvt_f32_f64_e32 v1, s[10:11]1553; GFX11-SDAG-NEXT:    v_cvt_f32_f64_e32 v0, s[8:9]1554; GFX11-SDAG-NEXT:    s_clause 0x11555; GFX11-SDAG-NEXT:    buffer_store_b128 v[4:7], off, s[0:3], 0 offset:161556; GFX11-SDAG-NEXT:    buffer_store_b128 v[0:3], off, s[0:3], 01557; GFX11-SDAG-NEXT:    s_endpgm1558;1559; GFX11-GISEL-LABEL: fptrunc_v8f64_to_v8f32_afn:1560; GFX11-GISEL:       ; %bb.0:1561; GFX11-GISEL-NEXT:    s_clause 0x11562; GFX11-GISEL-NEXT:    s_load_b512 s[8:23], s[4:5], 0x641563; GFX11-GISEL-NEXT:    s_load_b64 s[0:1], s[4:5], 0x241564; GFX11-GISEL-NEXT:    s_mov_b32 s2, -11565; GFX11-GISEL-NEXT:    s_mov_b32 s3, 0x310160001566; GFX11-GISEL-NEXT:    s_waitcnt lgkmcnt(0)1567; GFX11-GISEL-NEXT:    v_cvt_f32_f64_e32 v0, s[8:9]1568; GFX11-GISEL-NEXT:    v_cvt_f32_f64_e32 v1, s[10:11]1569; GFX11-GISEL-NEXT:    v_cvt_f32_f64_e32 v2, s[12:13]1570; GFX11-GISEL-NEXT:    v_cvt_f32_f64_e32 v3, s[14:15]1571; GFX11-GISEL-NEXT:    v_cvt_f32_f64_e32 v4, s[16:17]1572; GFX11-GISEL-NEXT:    v_cvt_f32_f64_e32 v5, s[18:19]1573; GFX11-GISEL-NEXT:    v_cvt_f32_f64_e32 v6, s[20:21]1574; GFX11-GISEL-NEXT:    v_cvt_f32_f64_e32 v7, s[22:23]1575; GFX11-GISEL-NEXT:    s_clause 0x11576; GFX11-GISEL-NEXT:    buffer_store_b128 v[0:3], off, s[0:3], 01577; GFX11-GISEL-NEXT:    buffer_store_b128 v[4:7], off, s[0:3], 0 offset:161578; GFX11-GISEL-NEXT:    s_endpgm1579  %result = fptrunc <8 x double> %in to <8 x float>1580  store <8 x float> %result, ptr addrspace(1) %out1581  ret void1582}1583;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:1584; GFX10-SAFE-GISEL: {{.*}}1585; GFX10-SAFE-SDAG: {{.*}}1586; GFX10-UNSAFE-SDAG: {{.*}}1587; VI-SAFE-GISEL: {{.*}}1588; VI-SAFE-SDAG: {{.*}}1589; VI-UNSAFE-SDAG: {{.*}}1590