brintos

brintos / llvm-project-archived public Read only

0
0
Text · 21.4 KiB · 2d38924 Raw
537 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=amdgcn -mcpu=verde | FileCheck %s -check-prefix=SI3; RUN: llc < %s -mtriple=amdgcn -mcpu=hawaii | FileCheck %s  -check-prefix=GFX74; RUN: llc < %s -mtriple=amdgcn -mcpu=gfx1010 | FileCheck %s -check-prefix=GFX105; RUN: llc < %s -mtriple=amdgcn -mcpu=gfx1030 | FileCheck %s -check-prefix=GFX10306 7; RUN: llc < %s -global-isel -mtriple=amdgcn -mcpu=verde | FileCheck %s -check-prefix=G_SI8; RUN: llc < %s -global-isel -mtriple=amdgcn -mcpu=hawaii | FileCheck %s  -check-prefix=G_GFX79; RUN: llc < %s -global-isel -mtriple=amdgcn -mcpu=gfx1010 | FileCheck %s -check-prefix=G_GFX1010; RUN: llc < %s -global-isel -mtriple=amdgcn -mcpu=gfx1030 | FileCheck %s -check-prefix=G_GFX103011 12declare double @llvm.amdgcn.raw.buffer.atomic.fmin.f64(double, <4 x i32>, i32, i32, i32 immarg)13declare double @llvm.amdgcn.raw.buffer.atomic.fmax.f64(double, <4 x i32>, i32, i32, i32 immarg)14 15 16define amdgpu_kernel void @raw_buffer_atomic_min_noret_f64(<4 x i32> inreg %rsrc, double %data, i32 %vindex) {17; SI-LABEL: raw_buffer_atomic_min_noret_f64:18; SI:       ; %bb.0: ; %main_body19; SI-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0xd20; SI-NEXT:    s_load_dword s8, s[4:5], 0xf21; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x922; SI-NEXT:    s_waitcnt lgkmcnt(0)23; SI-NEXT:    v_mov_b32_e32 v0, s624; SI-NEXT:    v_mov_b32_e32 v1, s725; SI-NEXT:    v_mov_b32_e32 v2, s826; SI-NEXT:    buffer_atomic_fmin_x2 v[0:1], v2, s[0:3], 0 offen27; SI-NEXT:    s_endpgm28;29; GFX7-LABEL: raw_buffer_atomic_min_noret_f64:30; GFX7:       ; %bb.0: ; %main_body31; GFX7-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0xd32; GFX7-NEXT:    s_load_dword s8, s[4:5], 0xf33; GFX7-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x934; GFX7-NEXT:    s_waitcnt lgkmcnt(0)35; GFX7-NEXT:    v_mov_b32_e32 v0, s636; GFX7-NEXT:    v_mov_b32_e32 v1, s737; GFX7-NEXT:    v_mov_b32_e32 v2, s838; GFX7-NEXT:    buffer_atomic_fmin_x2 v[0:1], v2, s[0:3], 0 offen39; GFX7-NEXT:    s_endpgm40;41; GFX10-LABEL: raw_buffer_atomic_min_noret_f64:42; GFX10:       ; %bb.0: ; %main_body43; GFX10-NEXT:    s_clause 0x244; GFX10-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x3445; GFX10-NEXT:    s_load_dword s8, s[4:5], 0x3c46; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x2447; GFX10-NEXT:    s_waitcnt lgkmcnt(0)48; GFX10-NEXT:    v_mov_b32_e32 v0, s649; GFX10-NEXT:    v_mov_b32_e32 v1, s750; GFX10-NEXT:    v_mov_b32_e32 v2, s851; GFX10-NEXT:    buffer_atomic_fmin_x2 v[0:1], v2, s[0:3], 0 offen52; GFX10-NEXT:    s_endpgm53;54; GFX1030-LABEL: raw_buffer_atomic_min_noret_f64:55; GFX1030:       ; %bb.0: ; %main_body56; GFX1030-NEXT:    s_clause 0x257; GFX1030-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x3458; GFX1030-NEXT:    s_load_dword s8, s[4:5], 0x3c59; GFX1030-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x2460; GFX1030-NEXT:    s_waitcnt lgkmcnt(0)61; GFX1030-NEXT:    v_mov_b32_e32 v0, s662; GFX1030-NEXT:    v_mov_b32_e32 v1, s763; GFX1030-NEXT:    v_mov_b32_e32 v2, s864; GFX1030-NEXT:    buffer_atomic_fmin_x2 v[0:1], v2, s[0:3], 0 offen65; GFX1030-NEXT:    s_endpgm66;67; G_SI-LABEL: raw_buffer_atomic_min_noret_f64:68; G_SI:       ; %bb.0: ; %main_body69; G_SI-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0xd70; G_SI-NEXT:    s_load_dword s8, s[4:5], 0xf71; G_SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x972; G_SI-NEXT:    s_waitcnt lgkmcnt(0)73; G_SI-NEXT:    v_mov_b32_e32 v0, s674; G_SI-NEXT:    v_mov_b32_e32 v1, s775; G_SI-NEXT:    v_mov_b32_e32 v2, s876; G_SI-NEXT:    buffer_atomic_fmin_x2 v[0:1], v2, s[0:3], 0 offen77; G_SI-NEXT:    s_endpgm78;79; G_GFX7-LABEL: raw_buffer_atomic_min_noret_f64:80; G_GFX7:       ; %bb.0: ; %main_body81; G_GFX7-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0xd82; G_GFX7-NEXT:    s_load_dword s8, s[4:5], 0xf83; G_GFX7-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x984; G_GFX7-NEXT:    s_waitcnt lgkmcnt(0)85; G_GFX7-NEXT:    v_mov_b32_e32 v0, s686; G_GFX7-NEXT:    v_mov_b32_e32 v1, s787; G_GFX7-NEXT:    v_mov_b32_e32 v2, s888; G_GFX7-NEXT:    buffer_atomic_fmin_x2 v[0:1], v2, s[0:3], 0 offen89; G_GFX7-NEXT:    s_endpgm90;91; G_GFX10-LABEL: raw_buffer_atomic_min_noret_f64:92; G_GFX10:       ; %bb.0: ; %main_body93; G_GFX10-NEXT:    s_clause 0x294; G_GFX10-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x3495; G_GFX10-NEXT:    s_load_dword s8, s[4:5], 0x3c96; G_GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x2497; G_GFX10-NEXT:    s_waitcnt lgkmcnt(0)98; G_GFX10-NEXT:    v_mov_b32_e32 v0, s699; G_GFX10-NEXT:    v_mov_b32_e32 v1, s7100; G_GFX10-NEXT:    v_mov_b32_e32 v2, s8101; G_GFX10-NEXT:    buffer_atomic_fmin_x2 v[0:1], v2, s[0:3], 0 offen102; G_GFX10-NEXT:    s_endpgm103;104; G_GFX1030-LABEL: raw_buffer_atomic_min_noret_f64:105; G_GFX1030:       ; %bb.0: ; %main_body106; G_GFX1030-NEXT:    s_clause 0x2107; G_GFX1030-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x34108; G_GFX1030-NEXT:    s_load_dword s8, s[4:5], 0x3c109; G_GFX1030-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24110; G_GFX1030-NEXT:    s_waitcnt lgkmcnt(0)111; G_GFX1030-NEXT:    v_mov_b32_e32 v0, s6112; G_GFX1030-NEXT:    v_mov_b32_e32 v1, s7113; G_GFX1030-NEXT:    v_mov_b32_e32 v2, s8114; G_GFX1030-NEXT:    buffer_atomic_fmin_x2 v[0:1], v2, s[0:3], 0 offen115; G_GFX1030-NEXT:    s_endpgm116main_body:117  %ret = call double @llvm.amdgcn.raw.buffer.atomic.fmin.f64(double %data, <4 x i32> %rsrc, i32 %vindex, i32 0, i32 0)118  ret void119}120 121define amdgpu_ps void @raw_buffer_atomic_min_rtn_f64(<4 x i32> inreg %rsrc, double %data, i32 %vindex) {122; SI-LABEL: raw_buffer_atomic_min_rtn_f64:123; SI:       ; %bb.0: ; %main_body124; SI-NEXT:    buffer_atomic_fmin_x2 v[0:1], v2, s[0:3], 0 offen glc125; SI-NEXT:    s_mov_b32 m0, -1126; SI-NEXT:    s_waitcnt vmcnt(0)127; SI-NEXT:    ds_write_b64 v0, v[0:1]128; SI-NEXT:    s_endpgm129;130; GFX7-LABEL: raw_buffer_atomic_min_rtn_f64:131; GFX7:       ; %bb.0: ; %main_body132; GFX7-NEXT:    buffer_atomic_fmin_x2 v[0:1], v2, s[0:3], 0 offen glc133; GFX7-NEXT:    s_mov_b32 m0, -1134; GFX7-NEXT:    s_waitcnt vmcnt(0)135; GFX7-NEXT:    ds_write_b64 v0, v[0:1]136; GFX7-NEXT:    s_endpgm137;138; GFX10-LABEL: raw_buffer_atomic_min_rtn_f64:139; GFX10:       ; %bb.0: ; %main_body140; GFX10-NEXT:    buffer_atomic_fmin_x2 v[0:1], v2, s[0:3], 0 offen glc141; GFX10-NEXT:    s_waitcnt vmcnt(0)142; GFX10-NEXT:    ds_write_b64 v0, v[0:1]143; GFX10-NEXT:    s_endpgm144;145; GFX1030-LABEL: raw_buffer_atomic_min_rtn_f64:146; GFX1030:       ; %bb.0: ; %main_body147; GFX1030-NEXT:    buffer_atomic_fmin_x2 v[0:1], v2, s[0:3], 0 offen glc148; GFX1030-NEXT:    s_waitcnt vmcnt(0)149; GFX1030-NEXT:    ds_write_b64 v0, v[0:1]150; GFX1030-NEXT:    s_endpgm151;152; G_SI-LABEL: raw_buffer_atomic_min_rtn_f64:153; G_SI:       ; %bb.0: ; %main_body154; G_SI-NEXT:    buffer_atomic_fmin_x2 v[0:1], v2, s[0:3], 0 offen glc155; G_SI-NEXT:    s_mov_b32 m0, -1156; G_SI-NEXT:    s_waitcnt vmcnt(0)157; G_SI-NEXT:    ds_write_b64 v0, v[0:1]158; G_SI-NEXT:    s_endpgm159;160; G_GFX7-LABEL: raw_buffer_atomic_min_rtn_f64:161; G_GFX7:       ; %bb.0: ; %main_body162; G_GFX7-NEXT:    buffer_atomic_fmin_x2 v[0:1], v2, s[0:3], 0 offen glc163; G_GFX7-NEXT:    s_mov_b32 m0, -1164; G_GFX7-NEXT:    s_waitcnt vmcnt(0)165; G_GFX7-NEXT:    ds_write_b64 v0, v[0:1]166; G_GFX7-NEXT:    s_endpgm167;168; G_GFX10-LABEL: raw_buffer_atomic_min_rtn_f64:169; G_GFX10:       ; %bb.0: ; %main_body170; G_GFX10-NEXT:    buffer_atomic_fmin_x2 v[0:1], v2, s[0:3], 0 offen glc171; G_GFX10-NEXT:    s_waitcnt vmcnt(0)172; G_GFX10-NEXT:    ds_write_b64 v0, v[0:1]173; G_GFX10-NEXT:    s_endpgm174;175; G_GFX1030-LABEL: raw_buffer_atomic_min_rtn_f64:176; G_GFX1030:       ; %bb.0: ; %main_body177; G_GFX1030-NEXT:    buffer_atomic_fmin_x2 v[0:1], v2, s[0:3], 0 offen glc178; G_GFX1030-NEXT:    s_waitcnt vmcnt(0)179; G_GFX1030-NEXT:    ds_write_b64 v0, v[0:1]180; G_GFX1030-NEXT:    s_endpgm181main_body:182  %ret = call double @llvm.amdgcn.raw.buffer.atomic.fmin.f64(double %data, <4 x i32> %rsrc, i32 %vindex, i32 0, i32 0)183  store double %ret, ptr addrspace(3) poison184  ret void185}186 187define amdgpu_ps void @raw_buffer_atomic_min_rtn_f64_off4_slc(<4 x i32> inreg %rsrc, double %data, i32 %vindex, ptr addrspace(3) %out) {188; SI-LABEL: raw_buffer_atomic_min_rtn_f64_off4_slc:189; SI:       ; %bb.0: ; %main_body190; SI-NEXT:    buffer_atomic_fmin_x2 v[0:1], v2, s[0:3], 4 offen glc slc191; SI-NEXT:    s_mov_b32 m0, -1192; SI-NEXT:    s_waitcnt vmcnt(0)193; SI-NEXT:    ds_write_b64 v3, v[0:1]194; SI-NEXT:    s_endpgm195;196; GFX7-LABEL: raw_buffer_atomic_min_rtn_f64_off4_slc:197; GFX7:       ; %bb.0: ; %main_body198; GFX7-NEXT:    buffer_atomic_fmin_x2 v[0:1], v2, s[0:3], 4 offen glc slc199; GFX7-NEXT:    s_mov_b32 m0, -1200; GFX7-NEXT:    s_waitcnt vmcnt(0)201; GFX7-NEXT:    ds_write_b64 v3, v[0:1]202; GFX7-NEXT:    s_endpgm203;204; GFX10-LABEL: raw_buffer_atomic_min_rtn_f64_off4_slc:205; GFX10:       ; %bb.0: ; %main_body206; GFX10-NEXT:    buffer_atomic_fmin_x2 v[0:1], v2, s[0:3], 4 offen glc slc207; GFX10-NEXT:    s_waitcnt vmcnt(0)208; GFX10-NEXT:    ds_write_b64 v3, v[0:1]209; GFX10-NEXT:    s_endpgm210;211; GFX1030-LABEL: raw_buffer_atomic_min_rtn_f64_off4_slc:212; GFX1030:       ; %bb.0: ; %main_body213; GFX1030-NEXT:    buffer_atomic_fmin_x2 v[0:1], v2, s[0:3], 4 offen glc slc214; GFX1030-NEXT:    s_waitcnt vmcnt(0)215; GFX1030-NEXT:    ds_write_b64 v3, v[0:1]216; GFX1030-NEXT:    s_endpgm217;218; G_SI-LABEL: raw_buffer_atomic_min_rtn_f64_off4_slc:219; G_SI:       ; %bb.0: ; %main_body220; G_SI-NEXT:    buffer_atomic_fmin_x2 v[0:1], v2, s[0:3], 4 offen glc slc221; G_SI-NEXT:    s_mov_b32 m0, -1222; G_SI-NEXT:    s_waitcnt vmcnt(0)223; G_SI-NEXT:    ds_write_b64 v3, v[0:1]224; G_SI-NEXT:    s_endpgm225;226; G_GFX7-LABEL: raw_buffer_atomic_min_rtn_f64_off4_slc:227; G_GFX7:       ; %bb.0: ; %main_body228; G_GFX7-NEXT:    buffer_atomic_fmin_x2 v[0:1], v2, s[0:3], 4 offen glc slc229; G_GFX7-NEXT:    s_mov_b32 m0, -1230; G_GFX7-NEXT:    s_waitcnt vmcnt(0)231; G_GFX7-NEXT:    ds_write_b64 v3, v[0:1]232; G_GFX7-NEXT:    s_endpgm233;234; G_GFX10-LABEL: raw_buffer_atomic_min_rtn_f64_off4_slc:235; G_GFX10:       ; %bb.0: ; %main_body236; G_GFX10-NEXT:    buffer_atomic_fmin_x2 v[0:1], v2, s[0:3], 4 offen glc slc237; G_GFX10-NEXT:    s_waitcnt vmcnt(0)238; G_GFX10-NEXT:    ds_write_b64 v3, v[0:1]239; G_GFX10-NEXT:    s_endpgm240;241; G_GFX1030-LABEL: raw_buffer_atomic_min_rtn_f64_off4_slc:242; G_GFX1030:       ; %bb.0: ; %main_body243; G_GFX1030-NEXT:    buffer_atomic_fmin_x2 v[0:1], v2, s[0:3], 4 offen glc slc244; G_GFX1030-NEXT:    s_waitcnt vmcnt(0)245; G_GFX1030-NEXT:    ds_write_b64 v3, v[0:1]246; G_GFX1030-NEXT:    s_endpgm247main_body:248  %ret = call double @llvm.amdgcn.raw.buffer.atomic.fmin.f64(double %data, <4 x i32> %rsrc, i32 %vindex, i32 4, i32 2)249  store double %ret, ptr addrspace(3) %out, align 8250  ret void251}252 253define amdgpu_kernel void @raw_buffer_atomic_max_noret_f64(<4 x i32> inreg %rsrc, double %data, i32 %vindex) {254; SI-LABEL: raw_buffer_atomic_max_noret_f64:255; SI:       ; %bb.0: ; %main_body256; SI-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0xd257; SI-NEXT:    s_load_dword s8, s[4:5], 0xf258; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x9259; SI-NEXT:    s_waitcnt lgkmcnt(0)260; SI-NEXT:    v_mov_b32_e32 v0, s6261; SI-NEXT:    v_mov_b32_e32 v1, s7262; SI-NEXT:    v_mov_b32_e32 v2, s8263; SI-NEXT:    buffer_atomic_fmax_x2 v[0:1], v2, s[0:3], 0 offen264; SI-NEXT:    s_endpgm265;266; GFX7-LABEL: raw_buffer_atomic_max_noret_f64:267; GFX7:       ; %bb.0: ; %main_body268; GFX7-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0xd269; GFX7-NEXT:    s_load_dword s8, s[4:5], 0xf270; GFX7-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x9271; GFX7-NEXT:    s_waitcnt lgkmcnt(0)272; GFX7-NEXT:    v_mov_b32_e32 v0, s6273; GFX7-NEXT:    v_mov_b32_e32 v1, s7274; GFX7-NEXT:    v_mov_b32_e32 v2, s8275; GFX7-NEXT:    buffer_atomic_fmax_x2 v[0:1], v2, s[0:3], 0 offen276; GFX7-NEXT:    s_endpgm277;278; GFX10-LABEL: raw_buffer_atomic_max_noret_f64:279; GFX10:       ; %bb.0: ; %main_body280; GFX10-NEXT:    s_clause 0x2281; GFX10-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x34282; GFX10-NEXT:    s_load_dword s8, s[4:5], 0x3c283; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24284; GFX10-NEXT:    s_waitcnt lgkmcnt(0)285; GFX10-NEXT:    v_mov_b32_e32 v0, s6286; GFX10-NEXT:    v_mov_b32_e32 v1, s7287; GFX10-NEXT:    v_mov_b32_e32 v2, s8288; GFX10-NEXT:    buffer_atomic_fmax_x2 v[0:1], v2, s[0:3], 0 offen289; GFX10-NEXT:    s_endpgm290;291; GFX1030-LABEL: raw_buffer_atomic_max_noret_f64:292; GFX1030:       ; %bb.0: ; %main_body293; GFX1030-NEXT:    s_clause 0x2294; GFX1030-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x34295; GFX1030-NEXT:    s_load_dword s8, s[4:5], 0x3c296; GFX1030-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24297; GFX1030-NEXT:    s_waitcnt lgkmcnt(0)298; GFX1030-NEXT:    v_mov_b32_e32 v0, s6299; GFX1030-NEXT:    v_mov_b32_e32 v1, s7300; GFX1030-NEXT:    v_mov_b32_e32 v2, s8301; GFX1030-NEXT:    buffer_atomic_fmax_x2 v[0:1], v2, s[0:3], 0 offen302; GFX1030-NEXT:    s_endpgm303;304; G_SI-LABEL: raw_buffer_atomic_max_noret_f64:305; G_SI:       ; %bb.0: ; %main_body306; G_SI-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0xd307; G_SI-NEXT:    s_load_dword s8, s[4:5], 0xf308; G_SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x9309; G_SI-NEXT:    s_waitcnt lgkmcnt(0)310; G_SI-NEXT:    v_mov_b32_e32 v0, s6311; G_SI-NEXT:    v_mov_b32_e32 v1, s7312; G_SI-NEXT:    v_mov_b32_e32 v2, s8313; G_SI-NEXT:    buffer_atomic_fmax_x2 v[0:1], v2, s[0:3], 0 offen314; G_SI-NEXT:    s_endpgm315;316; G_GFX7-LABEL: raw_buffer_atomic_max_noret_f64:317; G_GFX7:       ; %bb.0: ; %main_body318; G_GFX7-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0xd319; G_GFX7-NEXT:    s_load_dword s8, s[4:5], 0xf320; G_GFX7-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x9321; G_GFX7-NEXT:    s_waitcnt lgkmcnt(0)322; G_GFX7-NEXT:    v_mov_b32_e32 v0, s6323; G_GFX7-NEXT:    v_mov_b32_e32 v1, s7324; G_GFX7-NEXT:    v_mov_b32_e32 v2, s8325; G_GFX7-NEXT:    buffer_atomic_fmax_x2 v[0:1], v2, s[0:3], 0 offen326; G_GFX7-NEXT:    s_endpgm327;328; G_GFX10-LABEL: raw_buffer_atomic_max_noret_f64:329; G_GFX10:       ; %bb.0: ; %main_body330; G_GFX10-NEXT:    s_clause 0x2331; G_GFX10-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x34332; G_GFX10-NEXT:    s_load_dword s8, s[4:5], 0x3c333; G_GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24334; G_GFX10-NEXT:    s_waitcnt lgkmcnt(0)335; G_GFX10-NEXT:    v_mov_b32_e32 v0, s6336; G_GFX10-NEXT:    v_mov_b32_e32 v1, s7337; G_GFX10-NEXT:    v_mov_b32_e32 v2, s8338; G_GFX10-NEXT:    buffer_atomic_fmax_x2 v[0:1], v2, s[0:3], 0 offen339; G_GFX10-NEXT:    s_endpgm340;341; G_GFX1030-LABEL: raw_buffer_atomic_max_noret_f64:342; G_GFX1030:       ; %bb.0: ; %main_body343; G_GFX1030-NEXT:    s_clause 0x2344; G_GFX1030-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x34345; G_GFX1030-NEXT:    s_load_dword s8, s[4:5], 0x3c346; G_GFX1030-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24347; G_GFX1030-NEXT:    s_waitcnt lgkmcnt(0)348; G_GFX1030-NEXT:    v_mov_b32_e32 v0, s6349; G_GFX1030-NEXT:    v_mov_b32_e32 v1, s7350; G_GFX1030-NEXT:    v_mov_b32_e32 v2, s8351; G_GFX1030-NEXT:    buffer_atomic_fmax_x2 v[0:1], v2, s[0:3], 0 offen352; G_GFX1030-NEXT:    s_endpgm353main_body:354  %ret = call double @llvm.amdgcn.raw.buffer.atomic.fmax.f64(double %data, <4 x i32> %rsrc, i32 %vindex, i32 0, i32 0)355  ret void356}357 358define amdgpu_ps void @raw_buffer_atomic_max_rtn_f64(<4 x i32> inreg %rsrc, double %data, i32 %vindex) {359; SI-LABEL: raw_buffer_atomic_max_rtn_f64:360; SI:       ; %bb.0: ; %main_body361; SI-NEXT:    buffer_atomic_fmax_x2 v[0:1], v2, s[0:3], 0 offen glc362; SI-NEXT:    s_mov_b32 m0, -1363; SI-NEXT:    s_waitcnt vmcnt(0)364; SI-NEXT:    ds_write_b64 v0, v[0:1]365; SI-NEXT:    s_endpgm366;367; GFX7-LABEL: raw_buffer_atomic_max_rtn_f64:368; GFX7:       ; %bb.0: ; %main_body369; GFX7-NEXT:    buffer_atomic_fmax_x2 v[0:1], v2, s[0:3], 0 offen glc370; GFX7-NEXT:    s_mov_b32 m0, -1371; GFX7-NEXT:    s_waitcnt vmcnt(0)372; GFX7-NEXT:    ds_write_b64 v0, v[0:1]373; GFX7-NEXT:    s_endpgm374;375; GFX10-LABEL: raw_buffer_atomic_max_rtn_f64:376; GFX10:       ; %bb.0: ; %main_body377; GFX10-NEXT:    buffer_atomic_fmax_x2 v[0:1], v2, s[0:3], 0 offen glc378; GFX10-NEXT:    s_waitcnt vmcnt(0)379; GFX10-NEXT:    ds_write_b64 v0, v[0:1]380; GFX10-NEXT:    s_endpgm381;382; GFX1030-LABEL: raw_buffer_atomic_max_rtn_f64:383; GFX1030:       ; %bb.0: ; %main_body384; GFX1030-NEXT:    buffer_atomic_fmax_x2 v[0:1], v2, s[0:3], 0 offen glc385; GFX1030-NEXT:    s_waitcnt vmcnt(0)386; GFX1030-NEXT:    ds_write_b64 v0, v[0:1]387; GFX1030-NEXT:    s_endpgm388;389; G_SI-LABEL: raw_buffer_atomic_max_rtn_f64:390; G_SI:       ; %bb.0: ; %main_body391; G_SI-NEXT:    buffer_atomic_fmax_x2 v[0:1], v2, s[0:3], 0 offen glc392; G_SI-NEXT:    s_mov_b32 m0, -1393; G_SI-NEXT:    s_waitcnt vmcnt(0)394; G_SI-NEXT:    ds_write_b64 v0, v[0:1]395; G_SI-NEXT:    s_endpgm396;397; G_GFX7-LABEL: raw_buffer_atomic_max_rtn_f64:398; G_GFX7:       ; %bb.0: ; %main_body399; G_GFX7-NEXT:    buffer_atomic_fmax_x2 v[0:1], v2, s[0:3], 0 offen glc400; G_GFX7-NEXT:    s_mov_b32 m0, -1401; G_GFX7-NEXT:    s_waitcnt vmcnt(0)402; G_GFX7-NEXT:    ds_write_b64 v0, v[0:1]403; G_GFX7-NEXT:    s_endpgm404;405; G_GFX10-LABEL: raw_buffer_atomic_max_rtn_f64:406; G_GFX10:       ; %bb.0: ; %main_body407; G_GFX10-NEXT:    buffer_atomic_fmax_x2 v[0:1], v2, s[0:3], 0 offen glc408; G_GFX10-NEXT:    s_waitcnt vmcnt(0)409; G_GFX10-NEXT:    ds_write_b64 v0, v[0:1]410; G_GFX10-NEXT:    s_endpgm411;412; G_GFX1030-LABEL: raw_buffer_atomic_max_rtn_f64:413; G_GFX1030:       ; %bb.0: ; %main_body414; G_GFX1030-NEXT:    buffer_atomic_fmax_x2 v[0:1], v2, s[0:3], 0 offen glc415; G_GFX1030-NEXT:    s_waitcnt vmcnt(0)416; G_GFX1030-NEXT:    ds_write_b64 v0, v[0:1]417; G_GFX1030-NEXT:    s_endpgm418main_body:419  %ret = call double @llvm.amdgcn.raw.buffer.atomic.fmax.f64(double %data, <4 x i32> %rsrc, i32 %vindex, i32 0, i32 0)420  store double %ret, ptr addrspace(3) poison421  ret void422}423 424define amdgpu_kernel void @raw_buffer_atomic_max_rtn_f64_off4_slc(<4 x i32> inreg %rsrc, double %data, i32 %vindex, ptr addrspace(3) %out) {425; SI-LABEL: raw_buffer_atomic_max_rtn_f64_off4_slc:426; SI:       ; %bb.0: ; %main_body427; SI-NEXT:    s_load_dwordx8 s[0:7], s[4:5], 0x9428; SI-NEXT:    s_mov_b32 m0, -1429; SI-NEXT:    s_waitcnt lgkmcnt(0)430; SI-NEXT:    v_mov_b32_e32 v0, s4431; SI-NEXT:    v_mov_b32_e32 v1, s5432; SI-NEXT:    v_mov_b32_e32 v2, s6433; SI-NEXT:    buffer_atomic_fmax_x2 v[0:1], v2, s[0:3], 4 offen glc slc434; SI-NEXT:    v_mov_b32_e32 v2, s7435; SI-NEXT:    s_waitcnt vmcnt(0)436; SI-NEXT:    ds_write_b64 v2, v[0:1]437; SI-NEXT:    s_endpgm438;439; GFX7-LABEL: raw_buffer_atomic_max_rtn_f64_off4_slc:440; GFX7:       ; %bb.0: ; %main_body441; GFX7-NEXT:    s_load_dwordx8 s[0:7], s[4:5], 0x9442; GFX7-NEXT:    s_mov_b32 m0, -1443; GFX7-NEXT:    s_waitcnt lgkmcnt(0)444; GFX7-NEXT:    v_mov_b32_e32 v0, s4445; GFX7-NEXT:    v_mov_b32_e32 v1, s5446; GFX7-NEXT:    v_mov_b32_e32 v2, s6447; GFX7-NEXT:    buffer_atomic_fmax_x2 v[0:1], v2, s[0:3], 4 offen glc slc448; GFX7-NEXT:    v_mov_b32_e32 v2, s7449; GFX7-NEXT:    s_waitcnt vmcnt(0)450; GFX7-NEXT:    ds_write_b64 v2, v[0:1]451; GFX7-NEXT:    s_endpgm452;453; GFX10-LABEL: raw_buffer_atomic_max_rtn_f64_off4_slc:454; GFX10:       ; %bb.0: ; %main_body455; GFX10-NEXT:    s_load_dwordx8 s[8:15], s[4:5], 0x24456; GFX10-NEXT:    s_waitcnt lgkmcnt(0)457; GFX10-NEXT:    v_mov_b32_e32 v0, s12458; GFX10-NEXT:    v_mov_b32_e32 v1, s13459; GFX10-NEXT:    v_mov_b32_e32 v2, s14460; GFX10-NEXT:    buffer_atomic_fmax_x2 v[0:1], v2, s[8:11], 4 offen glc slc461; GFX10-NEXT:    v_mov_b32_e32 v2, s15462; GFX10-NEXT:    s_waitcnt vmcnt(0)463; GFX10-NEXT:    ds_write_b64 v2, v[0:1]464; GFX10-NEXT:    s_endpgm465;466; GFX1030-LABEL: raw_buffer_atomic_max_rtn_f64_off4_slc:467; GFX1030:       ; %bb.0: ; %main_body468; GFX1030-NEXT:    s_load_dwordx8 s[0:7], s[4:5], 0x24469; GFX1030-NEXT:    s_waitcnt lgkmcnt(0)470; GFX1030-NEXT:    v_mov_b32_e32 v0, s4471; GFX1030-NEXT:    v_mov_b32_e32 v1, s5472; GFX1030-NEXT:    v_mov_b32_e32 v2, s6473; GFX1030-NEXT:    buffer_atomic_fmax_x2 v[0:1], v2, s[0:3], 4 offen glc slc474; GFX1030-NEXT:    v_mov_b32_e32 v2, s7475; GFX1030-NEXT:    s_waitcnt vmcnt(0)476; GFX1030-NEXT:    ds_write_b64 v2, v[0:1]477; GFX1030-NEXT:    s_endpgm478;479; G_SI-LABEL: raw_buffer_atomic_max_rtn_f64_off4_slc:480; G_SI:       ; %bb.0: ; %main_body481; G_SI-NEXT:    s_load_dwordx8 s[0:7], s[4:5], 0x9482; G_SI-NEXT:    s_mov_b32 m0, -1483; G_SI-NEXT:    s_waitcnt lgkmcnt(0)484; G_SI-NEXT:    v_mov_b32_e32 v0, s4485; G_SI-NEXT:    v_mov_b32_e32 v1, s5486; G_SI-NEXT:    v_mov_b32_e32 v2, s6487; G_SI-NEXT:    buffer_atomic_fmax_x2 v[0:1], v2, s[0:3], 4 offen glc slc488; G_SI-NEXT:    v_mov_b32_e32 v2, s7489; G_SI-NEXT:    s_waitcnt vmcnt(0)490; G_SI-NEXT:    ds_write_b64 v2, v[0:1]491; G_SI-NEXT:    s_endpgm492;493; G_GFX7-LABEL: raw_buffer_atomic_max_rtn_f64_off4_slc:494; G_GFX7:       ; %bb.0: ; %main_body495; G_GFX7-NEXT:    s_load_dwordx8 s[0:7], s[4:5], 0x9496; G_GFX7-NEXT:    s_mov_b32 m0, -1497; G_GFX7-NEXT:    s_waitcnt lgkmcnt(0)498; G_GFX7-NEXT:    v_mov_b32_e32 v0, s4499; G_GFX7-NEXT:    v_mov_b32_e32 v1, s5500; G_GFX7-NEXT:    v_mov_b32_e32 v2, s6501; G_GFX7-NEXT:    buffer_atomic_fmax_x2 v[0:1], v2, s[0:3], 4 offen glc slc502; G_GFX7-NEXT:    v_mov_b32_e32 v2, s7503; G_GFX7-NEXT:    s_waitcnt vmcnt(0)504; G_GFX7-NEXT:    ds_write_b64 v2, v[0:1]505; G_GFX7-NEXT:    s_endpgm506;507; G_GFX10-LABEL: raw_buffer_atomic_max_rtn_f64_off4_slc:508; G_GFX10:       ; %bb.0: ; %main_body509; G_GFX10-NEXT:    s_load_dwordx8 s[8:15], s[4:5], 0x24510; G_GFX10-NEXT:    s_waitcnt lgkmcnt(0)511; G_GFX10-NEXT:    v_mov_b32_e32 v0, s12512; G_GFX10-NEXT:    v_mov_b32_e32 v1, s13513; G_GFX10-NEXT:    v_mov_b32_e32 v2, s14514; G_GFX10-NEXT:    buffer_atomic_fmax_x2 v[0:1], v2, s[8:11], 4 offen glc slc515; G_GFX10-NEXT:    v_mov_b32_e32 v2, s15516; G_GFX10-NEXT:    s_waitcnt vmcnt(0)517; G_GFX10-NEXT:    ds_write_b64 v2, v[0:1]518; G_GFX10-NEXT:    s_endpgm519;520; G_GFX1030-LABEL: raw_buffer_atomic_max_rtn_f64_off4_slc:521; G_GFX1030:       ; %bb.0: ; %main_body522; G_GFX1030-NEXT:    s_load_dwordx8 s[0:7], s[4:5], 0x24523; G_GFX1030-NEXT:    s_waitcnt lgkmcnt(0)524; G_GFX1030-NEXT:    v_mov_b32_e32 v0, s4525; G_GFX1030-NEXT:    v_mov_b32_e32 v1, s5526; G_GFX1030-NEXT:    v_mov_b32_e32 v2, s6527; G_GFX1030-NEXT:    buffer_atomic_fmax_x2 v[0:1], v2, s[0:3], 4 offen glc slc528; G_GFX1030-NEXT:    v_mov_b32_e32 v2, s7529; G_GFX1030-NEXT:    s_waitcnt vmcnt(0)530; G_GFX1030-NEXT:    ds_write_b64 v2, v[0:1]531; G_GFX1030-NEXT:    s_endpgm532main_body:533  %ret = call double @llvm.amdgcn.raw.buffer.atomic.fmax.f64(double %data, <4 x i32> %rsrc, i32 %vindex, i32 4, i32 2)534  store double %ret, ptr addrspace(3) %out, align 8535  ret void536}537