brintos

brintos / llvm-project-archived public Read only

0
0
Text · 63.6 KiB · 6846137 Raw
1565 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -global-isel -mtriple=amdgcn-amd-amdpal -mcpu=hawaii < %s | FileCheck --check-prefix=GFX7 %s3; RUN: llc -global-isel -mtriple=amdgcn-amd-amdpal -mcpu=fiji < %s | FileCheck --check-prefix=GFX8 %s4; RUN: llc -global-isel -mtriple=amdgcn-amd-amdpal -mcpu=gfx1010 < %s | FileCheck --check-prefix=GFX10_W32 %s5; RUN: llc -global-isel -mtriple=amdgcn-amd-amdpal -mcpu=gfx1010 -mattr=+wavefrontsize64 < %s | FileCheck --check-prefix=GFX10_W64 %s6; RUN: llc -global-isel -mtriple=amdgcn-amd-amdpal -mcpu=gfx1100 -mattr=-real-true16 -amdgpu-enable-delay-alu=0 < %s | FileCheck --check-prefixes=GFX11_W32 %s7; RUN: llc -global-isel -mtriple=amdgcn-amd-amdpal -mcpu=gfx1100 -mattr=-real-true16 -amdgpu-enable-delay-alu=0 -mattr=+wavefrontsize64 < %s | FileCheck --check-prefixes=GFX11_W64 %s8 9define float @v_div_fmas_f32(float %a, float %b, float %c, i1 %d) {10; GFX7-LABEL: v_div_fmas_f32:11; GFX7:       ; %bb.0:12; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13; GFX7-NEXT:    v_and_b32_e32 v3, 1, v314; GFX7-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v315; GFX7-NEXT:    s_nop 316; GFX7-NEXT:    v_div_fmas_f32 v0, v0, v1, v217; GFX7-NEXT:    s_setpc_b64 s[30:31]18;19; GFX8-LABEL: v_div_fmas_f32:20; GFX8:       ; %bb.0:21; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)22; GFX8-NEXT:    v_and_b32_e32 v3, 1, v323; GFX8-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v324; GFX8-NEXT:    s_nop 325; GFX8-NEXT:    v_div_fmas_f32 v0, v0, v1, v226; GFX8-NEXT:    s_setpc_b64 s[30:31]27;28; GFX10_W32-LABEL: v_div_fmas_f32:29; GFX10_W32:       ; %bb.0:30; GFX10_W32-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)31; GFX10_W32-NEXT:    v_and_b32_e32 v3, 1, v332; GFX10_W32-NEXT:    v_cmp_ne_u32_e32 vcc_lo, 0, v333; GFX10_W32-NEXT:    v_div_fmas_f32 v0, v0, v1, v234; GFX10_W32-NEXT:    s_setpc_b64 s[30:31]35;36; GFX10_W64-LABEL: v_div_fmas_f32:37; GFX10_W64:       ; %bb.0:38; GFX10_W64-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)39; GFX10_W64-NEXT:    v_and_b32_e32 v3, 1, v340; GFX10_W64-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v341; GFX10_W64-NEXT:    v_div_fmas_f32 v0, v0, v1, v242; GFX10_W64-NEXT:    s_setpc_b64 s[30:31]43;44; GFX11_W32-LABEL: v_div_fmas_f32:45; GFX11_W32:       ; %bb.0:46; GFX11_W32-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)47; GFX11_W32-NEXT:    v_and_b32_e32 v3, 1, v348; GFX11_W32-NEXT:    v_cmp_ne_u32_e32 vcc_lo, 0, v349; GFX11_W32-NEXT:    v_div_fmas_f32 v0, v0, v1, v250; GFX11_W32-NEXT:    s_setpc_b64 s[30:31]51;52; GFX11_W64-LABEL: v_div_fmas_f32:53; GFX11_W64:       ; %bb.0:54; GFX11_W64-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)55; GFX11_W64-NEXT:    v_and_b32_e32 v3, 1, v356; GFX11_W64-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v357; GFX11_W64-NEXT:    v_div_fmas_f32 v0, v0, v1, v258; GFX11_W64-NEXT:    s_setpc_b64 s[30:31]59  %result = call float @llvm.amdgcn.div.fmas.f32(float %a, float %b, float %c, i1 %d)60  ret float %result61}62 63define double @v_div_fmas_f64(double %a, double %b, double %c, i1 %d) {64; GFX7-LABEL: v_div_fmas_f64:65; GFX7:       ; %bb.0:66; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)67; GFX7-NEXT:    v_and_b32_e32 v6, 1, v668; GFX7-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v669; GFX7-NEXT:    s_nop 370; GFX7-NEXT:    v_div_fmas_f64 v[0:1], v[0:1], v[2:3], v[4:5]71; GFX7-NEXT:    s_setpc_b64 s[30:31]72;73; GFX8-LABEL: v_div_fmas_f64:74; GFX8:       ; %bb.0:75; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)76; GFX8-NEXT:    v_and_b32_e32 v6, 1, v677; GFX8-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v678; GFX8-NEXT:    s_nop 379; GFX8-NEXT:    v_div_fmas_f64 v[0:1], v[0:1], v[2:3], v[4:5]80; GFX8-NEXT:    s_setpc_b64 s[30:31]81;82; GFX10_W32-LABEL: v_div_fmas_f64:83; GFX10_W32:       ; %bb.0:84; GFX10_W32-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)85; GFX10_W32-NEXT:    v_and_b32_e32 v6, 1, v686; GFX10_W32-NEXT:    v_cmp_ne_u32_e32 vcc_lo, 0, v687; GFX10_W32-NEXT:    v_div_fmas_f64 v[0:1], v[0:1], v[2:3], v[4:5]88; GFX10_W32-NEXT:    s_setpc_b64 s[30:31]89;90; GFX10_W64-LABEL: v_div_fmas_f64:91; GFX10_W64:       ; %bb.0:92; GFX10_W64-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)93; GFX10_W64-NEXT:    v_and_b32_e32 v6, 1, v694; GFX10_W64-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v695; GFX10_W64-NEXT:    v_div_fmas_f64 v[0:1], v[0:1], v[2:3], v[4:5]96; GFX10_W64-NEXT:    s_setpc_b64 s[30:31]97;98; GFX11_W32-LABEL: v_div_fmas_f64:99; GFX11_W32:       ; %bb.0:100; GFX11_W32-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)101; GFX11_W32-NEXT:    v_and_b32_e32 v6, 1, v6102; GFX11_W32-NEXT:    v_cmp_ne_u32_e32 vcc_lo, 0, v6103; GFX11_W32-NEXT:    v_div_fmas_f64 v[0:1], v[0:1], v[2:3], v[4:5]104; GFX11_W32-NEXT:    s_setpc_b64 s[30:31]105;106; GFX11_W64-LABEL: v_div_fmas_f64:107; GFX11_W64:       ; %bb.0:108; GFX11_W64-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)109; GFX11_W64-NEXT:    v_and_b32_e32 v6, 1, v6110; GFX11_W64-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v6111; GFX11_W64-NEXT:    v_div_fmas_f64 v[0:1], v[0:1], v[2:3], v[4:5]112; GFX11_W64-NEXT:    s_setpc_b64 s[30:31]113  %result = call double @llvm.amdgcn.div.fmas.f64(double %a, double %b, double %c, i1 %d)114  ret double %result115}116 117define amdgpu_ps float @s_div_fmas_f32(float inreg %a, float inreg %b, float inreg %c, i32 inreg %d) {118; GFX7-LABEL: s_div_fmas_f32:119; GFX7:       ; %bb.0:120; GFX7-NEXT:    s_cmp_eq_u32 s3, 0121; GFX7-NEXT:    s_cselect_b32 s3, 1, 0122; GFX7-NEXT:    v_mov_b32_e32 v0, s0123; GFX7-NEXT:    s_and_b32 s0, 1, s3124; GFX7-NEXT:    v_mov_b32_e32 v1, s1125; GFX7-NEXT:    v_mov_b32_e32 v2, s2126; GFX7-NEXT:    v_cmp_ne_u32_e64 vcc, 0, s0127; GFX7-NEXT:    s_nop 3128; GFX7-NEXT:    v_div_fmas_f32 v0, v0, v1, v2129; GFX7-NEXT:    ; return to shader part epilog130;131; GFX8-LABEL: s_div_fmas_f32:132; GFX8:       ; %bb.0:133; GFX8-NEXT:    s_cmp_eq_u32 s3, 0134; GFX8-NEXT:    s_cselect_b32 s3, 1, 0135; GFX8-NEXT:    v_mov_b32_e32 v0, s0136; GFX8-NEXT:    s_and_b32 s0, 1, s3137; GFX8-NEXT:    v_mov_b32_e32 v1, s1138; GFX8-NEXT:    v_mov_b32_e32 v2, s2139; GFX8-NEXT:    v_cmp_ne_u32_e64 vcc, 0, s0140; GFX8-NEXT:    s_nop 3141; GFX8-NEXT:    v_div_fmas_f32 v0, v0, v1, v2142; GFX8-NEXT:    ; return to shader part epilog143;144; GFX10_W32-LABEL: s_div_fmas_f32:145; GFX10_W32:       ; %bb.0:146; GFX10_W32-NEXT:    s_cmp_eq_u32 s3, 0147; GFX10_W32-NEXT:    v_mov_b32_e32 v0, s1148; GFX10_W32-NEXT:    s_cselect_b32 s3, 1, 0149; GFX10_W32-NEXT:    v_mov_b32_e32 v1, s2150; GFX10_W32-NEXT:    s_and_b32 s3, 1, s3151; GFX10_W32-NEXT:    v_cmp_ne_u32_e64 vcc_lo, 0, s3152; GFX10_W32-NEXT:    v_div_fmas_f32 v0, s0, v0, v1153; GFX10_W32-NEXT:    ; return to shader part epilog154;155; GFX10_W64-LABEL: s_div_fmas_f32:156; GFX10_W64:       ; %bb.0:157; GFX10_W64-NEXT:    s_cmp_eq_u32 s3, 0158; GFX10_W64-NEXT:    v_mov_b32_e32 v0, s1159; GFX10_W64-NEXT:    s_cselect_b32 s3, 1, 0160; GFX10_W64-NEXT:    v_mov_b32_e32 v1, s2161; GFX10_W64-NEXT:    s_and_b32 s3, 1, s3162; GFX10_W64-NEXT:    v_cmp_ne_u32_e64 vcc, 0, s3163; GFX10_W64-NEXT:    v_div_fmas_f32 v0, s0, v0, v1164; GFX10_W64-NEXT:    ; return to shader part epilog165;166; GFX11_W32-LABEL: s_div_fmas_f32:167; GFX11_W32:       ; %bb.0:168; GFX11_W32-NEXT:    s_cmp_eq_u32 s3, 0169; GFX11_W32-NEXT:    v_dual_mov_b32 v0, s1 :: v_dual_mov_b32 v1, s2170; GFX11_W32-NEXT:    s_cselect_b32 s3, 1, 0171; GFX11_W32-NEXT:    s_and_b32 s3, 1, s3172; GFX11_W32-NEXT:    v_cmp_ne_u32_e64 vcc_lo, 0, s3173; GFX11_W32-NEXT:    v_div_fmas_f32 v0, s0, v0, v1174; GFX11_W32-NEXT:    ; return to shader part epilog175;176; GFX11_W64-LABEL: s_div_fmas_f32:177; GFX11_W64:       ; %bb.0:178; GFX11_W64-NEXT:    s_cmp_eq_u32 s3, 0179; GFX11_W64-NEXT:    v_mov_b32_e32 v0, s1180; GFX11_W64-NEXT:    s_cselect_b32 s3, 1, 0181; GFX11_W64-NEXT:    v_mov_b32_e32 v1, s2182; GFX11_W64-NEXT:    s_and_b32 s3, 1, s3183; GFX11_W64-NEXT:    v_cmp_ne_u32_e64 vcc, 0, s3184; GFX11_W64-NEXT:    v_div_fmas_f32 v0, s0, v0, v1185; GFX11_W64-NEXT:    ; return to shader part epilog186  %vcc = icmp eq i32 %d, 0187  %result = call float @llvm.amdgcn.div.fmas.f32(float %a, float %b, float %c, i1 %vcc)188  ret float %result189}190 191define amdgpu_ps double @s_div_fmas_f64(double inreg %a, double inreg %b, double inreg %c, i32 inreg %d) {192; GFX7-LABEL: s_div_fmas_f64:193; GFX7:       ; %bb.0:194; GFX7-NEXT:    s_cmp_eq_u32 s6, 0195; GFX7-NEXT:    s_cselect_b32 s6, 1, 0196; GFX7-NEXT:    v_mov_b32_e32 v0, s0197; GFX7-NEXT:    v_mov_b32_e32 v1, s1198; GFX7-NEXT:    v_mov_b32_e32 v2, s2199; GFX7-NEXT:    v_mov_b32_e32 v4, s4200; GFX7-NEXT:    s_and_b32 s0, 1, s6201; GFX7-NEXT:    v_mov_b32_e32 v3, s3202; GFX7-NEXT:    v_mov_b32_e32 v5, s5203; GFX7-NEXT:    v_cmp_ne_u32_e64 vcc, 0, s0204; GFX7-NEXT:    s_nop 3205; GFX7-NEXT:    v_div_fmas_f64 v[0:1], v[0:1], v[2:3], v[4:5]206; GFX7-NEXT:    v_readfirstlane_b32 s0, v0207; GFX7-NEXT:    v_readfirstlane_b32 s1, v1208; GFX7-NEXT:    ; return to shader part epilog209;210; GFX8-LABEL: s_div_fmas_f64:211; GFX8:       ; %bb.0:212; GFX8-NEXT:    s_cmp_eq_u32 s6, 0213; GFX8-NEXT:    s_cselect_b32 s6, 1, 0214; GFX8-NEXT:    v_mov_b32_e32 v0, s0215; GFX8-NEXT:    v_mov_b32_e32 v1, s1216; GFX8-NEXT:    v_mov_b32_e32 v2, s2217; GFX8-NEXT:    v_mov_b32_e32 v4, s4218; GFX8-NEXT:    s_and_b32 s0, 1, s6219; GFX8-NEXT:    v_mov_b32_e32 v3, s3220; GFX8-NEXT:    v_mov_b32_e32 v5, s5221; GFX8-NEXT:    v_cmp_ne_u32_e64 vcc, 0, s0222; GFX8-NEXT:    s_nop 3223; GFX8-NEXT:    v_div_fmas_f64 v[0:1], v[0:1], v[2:3], v[4:5]224; GFX8-NEXT:    v_readfirstlane_b32 s0, v0225; GFX8-NEXT:    v_readfirstlane_b32 s1, v1226; GFX8-NEXT:    ; return to shader part epilog227;228; GFX10_W32-LABEL: s_div_fmas_f64:229; GFX10_W32:       ; %bb.0:230; GFX10_W32-NEXT:    s_cmp_eq_u32 s6, 0231; GFX10_W32-NEXT:    v_mov_b32_e32 v0, s2232; GFX10_W32-NEXT:    s_cselect_b32 s6, 1, 0233; GFX10_W32-NEXT:    v_mov_b32_e32 v2, s4234; GFX10_W32-NEXT:    s_and_b32 s6, 1, s6235; GFX10_W32-NEXT:    v_mov_b32_e32 v1, s3236; GFX10_W32-NEXT:    v_cmp_ne_u32_e64 vcc_lo, 0, s6237; GFX10_W32-NEXT:    v_mov_b32_e32 v3, s5238; GFX10_W32-NEXT:    v_div_fmas_f64 v[0:1], s[0:1], v[0:1], v[2:3]239; GFX10_W32-NEXT:    v_readfirstlane_b32 s0, v0240; GFX10_W32-NEXT:    v_readfirstlane_b32 s1, v1241; GFX10_W32-NEXT:    ; return to shader part epilog242;243; GFX10_W64-LABEL: s_div_fmas_f64:244; GFX10_W64:       ; %bb.0:245; GFX10_W64-NEXT:    s_cmp_eq_u32 s6, 0246; GFX10_W64-NEXT:    v_mov_b32_e32 v0, s2247; GFX10_W64-NEXT:    s_cselect_b32 s6, 1, 0248; GFX10_W64-NEXT:    v_mov_b32_e32 v2, s4249; GFX10_W64-NEXT:    s_and_b32 s6, 1, s6250; GFX10_W64-NEXT:    v_mov_b32_e32 v1, s3251; GFX10_W64-NEXT:    v_cmp_ne_u32_e64 vcc, 0, s6252; GFX10_W64-NEXT:    v_mov_b32_e32 v3, s5253; GFX10_W64-NEXT:    v_div_fmas_f64 v[0:1], s[0:1], v[0:1], v[2:3]254; GFX10_W64-NEXT:    v_readfirstlane_b32 s0, v0255; GFX10_W64-NEXT:    v_readfirstlane_b32 s1, v1256; GFX10_W64-NEXT:    ; return to shader part epilog257;258; GFX11_W32-LABEL: s_div_fmas_f64:259; GFX11_W32:       ; %bb.0:260; GFX11_W32-NEXT:    s_cmp_eq_u32 s6, 0261; GFX11_W32-NEXT:    v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3262; GFX11_W32-NEXT:    s_cselect_b32 s6, 1, 0263; GFX11_W32-NEXT:    v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s5264; GFX11_W32-NEXT:    s_and_b32 s6, 1, s6265; GFX11_W32-NEXT:    v_cmp_ne_u32_e64 vcc_lo, 0, s6266; GFX11_W32-NEXT:    v_div_fmas_f64 v[0:1], s[0:1], v[0:1], v[2:3]267; GFX11_W32-NEXT:    v_readfirstlane_b32 s0, v0268; GFX11_W32-NEXT:    v_readfirstlane_b32 s1, v1269; GFX11_W32-NEXT:    ; return to shader part epilog270;271; GFX11_W64-LABEL: s_div_fmas_f64:272; GFX11_W64:       ; %bb.0:273; GFX11_W64-NEXT:    s_cmp_eq_u32 s6, 0274; GFX11_W64-NEXT:    v_mov_b32_e32 v0, s2275; GFX11_W64-NEXT:    s_cselect_b32 s6, 1, 0276; GFX11_W64-NEXT:    v_mov_b32_e32 v2, s4277; GFX11_W64-NEXT:    s_and_b32 s6, 1, s6278; GFX11_W64-NEXT:    v_mov_b32_e32 v1, s3279; GFX11_W64-NEXT:    v_cmp_ne_u32_e64 vcc, 0, s6280; GFX11_W64-NEXT:    v_mov_b32_e32 v3, s5281; GFX11_W64-NEXT:    v_div_fmas_f64 v[0:1], s[0:1], v[0:1], v[2:3]282; GFX11_W64-NEXT:    v_readfirstlane_b32 s0, v0283; GFX11_W64-NEXT:    v_readfirstlane_b32 s1, v1284; GFX11_W64-NEXT:    ; return to shader part epilog285  %vcc = icmp eq i32 %d, 0286  %result = call double @llvm.amdgcn.div.fmas.f64(double %a, double %b, double %c, i1 %vcc)287  ret double %result288}289 290define amdgpu_kernel void @test_div_fmas_f32(ptr addrspace(1) %out, [8 x i32], float %a, [8 x i32], float %b, [8 x i32], float %c, [8 x i32], i1 %d) {291; GFX7-LABEL: test_div_fmas_f32:292; GFX7:       ; %bb.0:293; GFX7-NEXT:    s_load_dword s2, s[4:5], 0xa294; GFX7-NEXT:    s_load_dword s3, s[4:5], 0x13295; GFX7-NEXT:    s_load_dword s6, s[4:5], 0x1c296; GFX7-NEXT:    s_load_dword s7, s[4:5], 0x25297; GFX7-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x0298; GFX7-NEXT:    s_waitcnt lgkmcnt(0)299; GFX7-NEXT:    v_mov_b32_e32 v0, s2300; GFX7-NEXT:    v_mov_b32_e32 v1, s3301; GFX7-NEXT:    v_mov_b32_e32 v2, s6302; GFX7-NEXT:    s_and_b32 s2, 1, s7303; GFX7-NEXT:    v_cmp_ne_u32_e64 vcc, 0, s2304; GFX7-NEXT:    s_mov_b32 s2, -1305; GFX7-NEXT:    s_mov_b32 s3, 0xf000306; GFX7-NEXT:    s_nop 1307; GFX7-NEXT:    v_div_fmas_f32 v0, v0, v1, v2308; GFX7-NEXT:    buffer_store_dword v0, off, s[0:3], 0309; GFX7-NEXT:    s_endpgm310;311; GFX8-LABEL: test_div_fmas_f32:312; GFX8:       ; %bb.0:313; GFX8-NEXT:    s_load_dword s0, s[4:5], 0x28314; GFX8-NEXT:    s_load_dword s1, s[4:5], 0x4c315; GFX8-NEXT:    s_load_dword s2, s[4:5], 0x70316; GFX8-NEXT:    s_load_dword s3, s[4:5], 0x94317; GFX8-NEXT:    s_waitcnt lgkmcnt(0)318; GFX8-NEXT:    v_mov_b32_e32 v0, s0319; GFX8-NEXT:    v_mov_b32_e32 v1, s1320; GFX8-NEXT:    v_mov_b32_e32 v2, s2321; GFX8-NEXT:    s_and_b32 s0, 1, s3322; GFX8-NEXT:    v_cmp_ne_u32_e64 vcc, 0, s0323; GFX8-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x0324; GFX8-NEXT:    s_nop 2325; GFX8-NEXT:    v_div_fmas_f32 v2, v0, v1, v2326; GFX8-NEXT:    s_waitcnt lgkmcnt(0)327; GFX8-NEXT:    v_mov_b32_e32 v0, s0328; GFX8-NEXT:    v_mov_b32_e32 v1, s1329; GFX8-NEXT:    flat_store_dword v[0:1], v2330; GFX8-NEXT:    s_endpgm331;332; GFX10_W32-LABEL: test_div_fmas_f32:333; GFX10_W32:       ; %bb.0:334; GFX10_W32-NEXT:    s_clause 0x4335; GFX10_W32-NEXT:    s_load_dword s2, s[4:5], 0x94336; GFX10_W32-NEXT:    s_load_dword s3, s[4:5], 0x4c337; GFX10_W32-NEXT:    s_load_dword s6, s[4:5], 0x70338; GFX10_W32-NEXT:    s_load_dword s7, s[4:5], 0x28339; GFX10_W32-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x0340; GFX10_W32-NEXT:    s_waitcnt lgkmcnt(0)341; GFX10_W32-NEXT:    s_and_b32 s2, 1, s2342; GFX10_W32-NEXT:    v_mov_b32_e32 v0, s3343; GFX10_W32-NEXT:    v_cmp_ne_u32_e64 vcc_lo, 0, s2344; GFX10_W32-NEXT:    v_mov_b32_e32 v1, s6345; GFX10_W32-NEXT:    v_div_fmas_f32 v0, s7, v0, v1346; GFX10_W32-NEXT:    v_mov_b32_e32 v1, 0347; GFX10_W32-NEXT:    global_store_dword v1, v0, s[0:1]348; GFX10_W32-NEXT:    s_endpgm349;350; GFX10_W64-LABEL: test_div_fmas_f32:351; GFX10_W64:       ; %bb.0:352; GFX10_W64-NEXT:    s_clause 0x4353; GFX10_W64-NEXT:    s_load_dword s2, s[4:5], 0x94354; GFX10_W64-NEXT:    s_load_dword s3, s[4:5], 0x4c355; GFX10_W64-NEXT:    s_load_dword s6, s[4:5], 0x70356; GFX10_W64-NEXT:    s_load_dword s7, s[4:5], 0x28357; GFX10_W64-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x0358; GFX10_W64-NEXT:    s_waitcnt lgkmcnt(0)359; GFX10_W64-NEXT:    s_and_b32 s2, 1, s2360; GFX10_W64-NEXT:    v_mov_b32_e32 v0, s3361; GFX10_W64-NEXT:    v_cmp_ne_u32_e64 vcc, 0, s2362; GFX10_W64-NEXT:    v_mov_b32_e32 v1, s6363; GFX10_W64-NEXT:    v_div_fmas_f32 v0, s7, v0, v1364; GFX10_W64-NEXT:    v_mov_b32_e32 v1, 0365; GFX10_W64-NEXT:    global_store_dword v1, v0, s[0:1]366; GFX10_W64-NEXT:    s_endpgm367;368; GFX11_W32-LABEL: test_div_fmas_f32:369; GFX11_W32:       ; %bb.0:370; GFX11_W32-NEXT:    s_clause 0x4371; GFX11_W32-NEXT:    s_load_b32 s2, s[4:5], 0x94372; GFX11_W32-NEXT:    s_load_b32 s3, s[4:5], 0x4c373; GFX11_W32-NEXT:    s_load_b32 s6, s[4:5], 0x70374; GFX11_W32-NEXT:    s_load_b32 s7, s[4:5], 0x28375; GFX11_W32-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0376; GFX11_W32-NEXT:    s_waitcnt lgkmcnt(0)377; GFX11_W32-NEXT:    s_and_b32 s2, 1, s2378; GFX11_W32-NEXT:    v_dual_mov_b32 v0, s3 :: v_dual_mov_b32 v1, s6379; GFX11_W32-NEXT:    v_cmp_ne_u32_e64 vcc_lo, 0, s2380; GFX11_W32-NEXT:    v_div_fmas_f32 v0, s7, v0, v1381; GFX11_W32-NEXT:    v_mov_b32_e32 v1, 0382; GFX11_W32-NEXT:    global_store_b32 v1, v0, s[0:1]383; GFX11_W32-NEXT:    s_endpgm384;385; GFX11_W64-LABEL: test_div_fmas_f32:386; GFX11_W64:       ; %bb.0:387; GFX11_W64-NEXT:    s_clause 0x4388; GFX11_W64-NEXT:    s_load_b32 s2, s[4:5], 0x94389; GFX11_W64-NEXT:    s_load_b32 s3, s[4:5], 0x4c390; GFX11_W64-NEXT:    s_load_b32 s6, s[4:5], 0x70391; GFX11_W64-NEXT:    s_load_b32 s7, s[4:5], 0x28392; GFX11_W64-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0393; GFX11_W64-NEXT:    s_waitcnt lgkmcnt(0)394; GFX11_W64-NEXT:    s_and_b32 s2, 1, s2395; GFX11_W64-NEXT:    v_mov_b32_e32 v0, s3396; GFX11_W64-NEXT:    v_cmp_ne_u32_e64 vcc, 0, s2397; GFX11_W64-NEXT:    v_mov_b32_e32 v1, s6398; GFX11_W64-NEXT:    v_div_fmas_f32 v0, s7, v0, v1399; GFX11_W64-NEXT:    v_mov_b32_e32 v1, 0400; GFX11_W64-NEXT:    global_store_b32 v1, v0, s[0:1]401; GFX11_W64-NEXT:    s_endpgm402  %result = call float @llvm.amdgcn.div.fmas.f32(float %a, float %b, float %c, i1 %d)403  store float %result, ptr addrspace(1) %out, align 4404  ret void405}406 407define amdgpu_kernel void @test_div_fmas_f32_inline_imm_0(ptr addrspace(1) %out, [8 x i32], float %a, [8 x i32], float %b, [8 x i32], float %c, [8 x i32], i1 %d) {408; GFX7-LABEL: test_div_fmas_f32_inline_imm_0:409; GFX7:       ; %bb.0:410; GFX7-NEXT:    s_load_dword s2, s[4:5], 0x13411; GFX7-NEXT:    s_load_dword s3, s[4:5], 0x1c412; GFX7-NEXT:    s_load_dword s6, s[4:5], 0x25413; GFX7-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x0414; GFX7-NEXT:    s_waitcnt lgkmcnt(0)415; GFX7-NEXT:    v_mov_b32_e32 v0, s2416; GFX7-NEXT:    v_mov_b32_e32 v1, s3417; GFX7-NEXT:    s_and_b32 s2, 1, s6418; GFX7-NEXT:    v_cmp_ne_u32_e64 vcc, 0, s2419; GFX7-NEXT:    s_mov_b32 s2, -1420; GFX7-NEXT:    s_mov_b32 s3, 0xf000421; GFX7-NEXT:    s_nop 1422; GFX7-NEXT:    v_div_fmas_f32 v0, 1.0, v0, v1423; GFX7-NEXT:    buffer_store_dword v0, off, s[0:3], 0424; GFX7-NEXT:    s_endpgm425;426; GFX8-LABEL: test_div_fmas_f32_inline_imm_0:427; GFX8:       ; %bb.0:428; GFX8-NEXT:    s_load_dword s0, s[4:5], 0x4c429; GFX8-NEXT:    s_load_dword s1, s[4:5], 0x70430; GFX8-NEXT:    s_load_dword s2, s[4:5], 0x94431; GFX8-NEXT:    s_waitcnt lgkmcnt(0)432; GFX8-NEXT:    v_mov_b32_e32 v0, s0433; GFX8-NEXT:    v_mov_b32_e32 v1, s1434; GFX8-NEXT:    s_and_b32 s0, 1, s2435; GFX8-NEXT:    v_cmp_ne_u32_e64 vcc, 0, s0436; GFX8-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x0437; GFX8-NEXT:    s_nop 2438; GFX8-NEXT:    v_div_fmas_f32 v2, 1.0, v0, v1439; GFX8-NEXT:    s_waitcnt lgkmcnt(0)440; GFX8-NEXT:    v_mov_b32_e32 v0, s0441; GFX8-NEXT:    v_mov_b32_e32 v1, s1442; GFX8-NEXT:    flat_store_dword v[0:1], v2443; GFX8-NEXT:    s_endpgm444;445; GFX10_W32-LABEL: test_div_fmas_f32_inline_imm_0:446; GFX10_W32:       ; %bb.0:447; GFX10_W32-NEXT:    s_clause 0x3448; GFX10_W32-NEXT:    s_load_dword s2, s[4:5], 0x94449; GFX10_W32-NEXT:    s_load_dword s3, s[4:5], 0x70450; GFX10_W32-NEXT:    s_load_dword s6, s[4:5], 0x4c451; GFX10_W32-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x0452; GFX10_W32-NEXT:    v_mov_b32_e32 v1, 0453; GFX10_W32-NEXT:    s_waitcnt lgkmcnt(0)454; GFX10_W32-NEXT:    s_and_b32 s2, 1, s2455; GFX10_W32-NEXT:    v_mov_b32_e32 v0, s3456; GFX10_W32-NEXT:    v_cmp_ne_u32_e64 vcc_lo, 0, s2457; GFX10_W32-NEXT:    v_div_fmas_f32 v0, 1.0, s6, v0458; GFX10_W32-NEXT:    global_store_dword v1, v0, s[0:1]459; GFX10_W32-NEXT:    s_endpgm460;461; GFX10_W64-LABEL: test_div_fmas_f32_inline_imm_0:462; GFX10_W64:       ; %bb.0:463; GFX10_W64-NEXT:    s_clause 0x3464; GFX10_W64-NEXT:    s_load_dword s2, s[4:5], 0x94465; GFX10_W64-NEXT:    s_load_dword s3, s[4:5], 0x70466; GFX10_W64-NEXT:    s_load_dword s6, s[4:5], 0x4c467; GFX10_W64-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x0468; GFX10_W64-NEXT:    v_mov_b32_e32 v1, 0469; GFX10_W64-NEXT:    s_waitcnt lgkmcnt(0)470; GFX10_W64-NEXT:    s_and_b32 s2, 1, s2471; GFX10_W64-NEXT:    v_mov_b32_e32 v0, s3472; GFX10_W64-NEXT:    v_cmp_ne_u32_e64 vcc, 0, s2473; GFX10_W64-NEXT:    v_div_fmas_f32 v0, 1.0, s6, v0474; GFX10_W64-NEXT:    global_store_dword v1, v0, s[0:1]475; GFX10_W64-NEXT:    s_endpgm476;477; GFX11_W32-LABEL: test_div_fmas_f32_inline_imm_0:478; GFX11_W32:       ; %bb.0:479; GFX11_W32-NEXT:    s_clause 0x3480; GFX11_W32-NEXT:    s_load_b32 s2, s[4:5], 0x94481; GFX11_W32-NEXT:    s_load_b32 s3, s[4:5], 0x70482; GFX11_W32-NEXT:    s_load_b32 s6, s[4:5], 0x4c483; GFX11_W32-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0484; GFX11_W32-NEXT:    v_mov_b32_e32 v1, 0485; GFX11_W32-NEXT:    s_waitcnt lgkmcnt(0)486; GFX11_W32-NEXT:    s_and_b32 s2, 1, s2487; GFX11_W32-NEXT:    v_mov_b32_e32 v0, s3488; GFX11_W32-NEXT:    v_cmp_ne_u32_e64 vcc_lo, 0, s2489; GFX11_W32-NEXT:    v_div_fmas_f32 v0, 1.0, s6, v0490; GFX11_W32-NEXT:    global_store_b32 v1, v0, s[0:1]491; GFX11_W32-NEXT:    s_endpgm492;493; GFX11_W64-LABEL: test_div_fmas_f32_inline_imm_0:494; GFX11_W64:       ; %bb.0:495; GFX11_W64-NEXT:    s_clause 0x3496; GFX11_W64-NEXT:    s_load_b32 s2, s[4:5], 0x94497; GFX11_W64-NEXT:    s_load_b32 s3, s[4:5], 0x70498; GFX11_W64-NEXT:    s_load_b32 s6, s[4:5], 0x4c499; GFX11_W64-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0500; GFX11_W64-NEXT:    v_mov_b32_e32 v1, 0501; GFX11_W64-NEXT:    s_waitcnt lgkmcnt(0)502; GFX11_W64-NEXT:    s_and_b32 s2, 1, s2503; GFX11_W64-NEXT:    v_mov_b32_e32 v0, s3504; GFX11_W64-NEXT:    v_cmp_ne_u32_e64 vcc, 0, s2505; GFX11_W64-NEXT:    v_div_fmas_f32 v0, 1.0, s6, v0506; GFX11_W64-NEXT:    global_store_b32 v1, v0, s[0:1]507; GFX11_W64-NEXT:    s_endpgm508  %result = call float @llvm.amdgcn.div.fmas.f32(float 1.0, float %b, float %c, i1 %d)509  store float %result, ptr addrspace(1) %out, align 4510  ret void511}512 513define amdgpu_kernel void @test_div_fmas_f32_inline_imm_1(ptr addrspace(1) %out, float %a, float %b, float %c, [8 x i32], i1 %d) {514; GFX7-LABEL: test_div_fmas_f32_inline_imm_1:515; GFX7:       ; %bb.0:516; GFX7-NEXT:    s_load_dword s2, s[4:5], 0x2517; GFX7-NEXT:    s_load_dword s3, s[4:5], 0x4518; GFX7-NEXT:    s_load_dword s6, s[4:5], 0xd519; GFX7-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x0520; GFX7-NEXT:    s_waitcnt lgkmcnt(0)521; GFX7-NEXT:    v_mov_b32_e32 v0, s2522; GFX7-NEXT:    v_mov_b32_e32 v1, s3523; GFX7-NEXT:    s_and_b32 s2, 1, s6524; GFX7-NEXT:    v_cmp_ne_u32_e64 vcc, 0, s2525; GFX7-NEXT:    s_mov_b32 s2, -1526; GFX7-NEXT:    s_mov_b32 s3, 0xf000527; GFX7-NEXT:    s_nop 1528; GFX7-NEXT:    v_div_fmas_f32 v0, v0, 1.0, v1529; GFX7-NEXT:    buffer_store_dword v0, off, s[0:3], 0530; GFX7-NEXT:    s_endpgm531;532; GFX8-LABEL: test_div_fmas_f32_inline_imm_1:533; GFX8:       ; %bb.0:534; GFX8-NEXT:    s_load_dword s0, s[4:5], 0x8535; GFX8-NEXT:    s_load_dword s1, s[4:5], 0x10536; GFX8-NEXT:    s_load_dword s2, s[4:5], 0x34537; GFX8-NEXT:    s_waitcnt lgkmcnt(0)538; GFX8-NEXT:    v_mov_b32_e32 v0, s0539; GFX8-NEXT:    v_mov_b32_e32 v1, s1540; GFX8-NEXT:    s_and_b32 s0, 1, s2541; GFX8-NEXT:    v_cmp_ne_u32_e64 vcc, 0, s0542; GFX8-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x0543; GFX8-NEXT:    s_nop 2544; GFX8-NEXT:    v_div_fmas_f32 v2, v0, 1.0, v1545; GFX8-NEXT:    s_waitcnt lgkmcnt(0)546; GFX8-NEXT:    v_mov_b32_e32 v0, s0547; GFX8-NEXT:    v_mov_b32_e32 v1, s1548; GFX8-NEXT:    flat_store_dword v[0:1], v2549; GFX8-NEXT:    s_endpgm550;551; GFX10_W32-LABEL: test_div_fmas_f32_inline_imm_1:552; GFX10_W32:       ; %bb.0:553; GFX10_W32-NEXT:    s_clause 0x3554; GFX10_W32-NEXT:    s_load_dword s2, s[4:5], 0x34555; GFX10_W32-NEXT:    s_load_dword s3, s[4:5], 0x10556; GFX10_W32-NEXT:    s_load_dword s6, s[4:5], 0x8557; GFX10_W32-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x0558; GFX10_W32-NEXT:    v_mov_b32_e32 v1, 0559; GFX10_W32-NEXT:    s_waitcnt lgkmcnt(0)560; GFX10_W32-NEXT:    s_and_b32 s2, 1, s2561; GFX10_W32-NEXT:    v_mov_b32_e32 v0, s3562; GFX10_W32-NEXT:    v_cmp_ne_u32_e64 vcc_lo, 0, s2563; GFX10_W32-NEXT:    v_div_fmas_f32 v0, s6, 1.0, v0564; GFX10_W32-NEXT:    global_store_dword v1, v0, s[0:1]565; GFX10_W32-NEXT:    s_endpgm566;567; GFX10_W64-LABEL: test_div_fmas_f32_inline_imm_1:568; GFX10_W64:       ; %bb.0:569; GFX10_W64-NEXT:    s_clause 0x3570; GFX10_W64-NEXT:    s_load_dword s2, s[4:5], 0x34571; GFX10_W64-NEXT:    s_load_dword s3, s[4:5], 0x10572; GFX10_W64-NEXT:    s_load_dword s6, s[4:5], 0x8573; GFX10_W64-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x0574; GFX10_W64-NEXT:    v_mov_b32_e32 v1, 0575; GFX10_W64-NEXT:    s_waitcnt lgkmcnt(0)576; GFX10_W64-NEXT:    s_and_b32 s2, 1, s2577; GFX10_W64-NEXT:    v_mov_b32_e32 v0, s3578; GFX10_W64-NEXT:    v_cmp_ne_u32_e64 vcc, 0, s2579; GFX10_W64-NEXT:    v_div_fmas_f32 v0, s6, 1.0, v0580; GFX10_W64-NEXT:    global_store_dword v1, v0, s[0:1]581; GFX10_W64-NEXT:    s_endpgm582;583; GFX11_W32-LABEL: test_div_fmas_f32_inline_imm_1:584; GFX11_W32:       ; %bb.0:585; GFX11_W32-NEXT:    s_clause 0x3586; GFX11_W32-NEXT:    s_load_b32 s2, s[4:5], 0x34587; GFX11_W32-NEXT:    s_load_b32 s3, s[4:5], 0x10588; GFX11_W32-NEXT:    s_load_b32 s6, s[4:5], 0x8589; GFX11_W32-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0590; GFX11_W32-NEXT:    v_mov_b32_e32 v1, 0591; GFX11_W32-NEXT:    s_waitcnt lgkmcnt(0)592; GFX11_W32-NEXT:    s_and_b32 s2, 1, s2593; GFX11_W32-NEXT:    v_mov_b32_e32 v0, s3594; GFX11_W32-NEXT:    v_cmp_ne_u32_e64 vcc_lo, 0, s2595; GFX11_W32-NEXT:    v_div_fmas_f32 v0, s6, 1.0, v0596; GFX11_W32-NEXT:    global_store_b32 v1, v0, s[0:1]597; GFX11_W32-NEXT:    s_endpgm598;599; GFX11_W64-LABEL: test_div_fmas_f32_inline_imm_1:600; GFX11_W64:       ; %bb.0:601; GFX11_W64-NEXT:    s_clause 0x3602; GFX11_W64-NEXT:    s_load_b32 s2, s[4:5], 0x34603; GFX11_W64-NEXT:    s_load_b32 s3, s[4:5], 0x10604; GFX11_W64-NEXT:    s_load_b32 s6, s[4:5], 0x8605; GFX11_W64-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0606; GFX11_W64-NEXT:    v_mov_b32_e32 v1, 0607; GFX11_W64-NEXT:    s_waitcnt lgkmcnt(0)608; GFX11_W64-NEXT:    s_and_b32 s2, 1, s2609; GFX11_W64-NEXT:    v_mov_b32_e32 v0, s3610; GFX11_W64-NEXT:    v_cmp_ne_u32_e64 vcc, 0, s2611; GFX11_W64-NEXT:    v_div_fmas_f32 v0, s6, 1.0, v0612; GFX11_W64-NEXT:    global_store_b32 v1, v0, s[0:1]613; GFX11_W64-NEXT:    s_endpgm614  %result = call float @llvm.amdgcn.div.fmas.f32(float %a, float 1.0, float %c, i1 %d)615  store float %result, ptr addrspace(1) %out, align 4616  ret void617}618 619define amdgpu_kernel void @test_div_fmas_f32_inline_imm_2(ptr addrspace(1) %out, [8 x i32], float %a, [8 x i32], float %b, [8 x i32], float %c, [8 x i32], i1 %d) {620; GFX7-LABEL: test_div_fmas_f32_inline_imm_2:621; GFX7:       ; %bb.0:622; GFX7-NEXT:    s_load_dword s2, s[4:5], 0xa623; GFX7-NEXT:    s_load_dword s3, s[4:5], 0x13624; GFX7-NEXT:    s_load_dword s6, s[4:5], 0x25625; GFX7-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x0626; GFX7-NEXT:    s_waitcnt lgkmcnt(0)627; GFX7-NEXT:    v_mov_b32_e32 v0, s2628; GFX7-NEXT:    v_mov_b32_e32 v1, s3629; GFX7-NEXT:    s_and_b32 s2, 1, s6630; GFX7-NEXT:    v_cmp_ne_u32_e64 vcc, 0, s2631; GFX7-NEXT:    s_mov_b32 s2, -1632; GFX7-NEXT:    s_mov_b32 s3, 0xf000633; GFX7-NEXT:    s_nop 1634; GFX7-NEXT:    v_div_fmas_f32 v0, v0, v1, 1.0635; GFX7-NEXT:    buffer_store_dword v0, off, s[0:3], 0636; GFX7-NEXT:    s_endpgm637;638; GFX8-LABEL: test_div_fmas_f32_inline_imm_2:639; GFX8:       ; %bb.0:640; GFX8-NEXT:    s_load_dword s0, s[4:5], 0x28641; GFX8-NEXT:    s_load_dword s1, s[4:5], 0x4c642; GFX8-NEXT:    s_load_dword s2, s[4:5], 0x94643; GFX8-NEXT:    s_waitcnt lgkmcnt(0)644; GFX8-NEXT:    v_mov_b32_e32 v0, s0645; GFX8-NEXT:    v_mov_b32_e32 v1, s1646; GFX8-NEXT:    s_and_b32 s0, 1, s2647; GFX8-NEXT:    v_cmp_ne_u32_e64 vcc, 0, s0648; GFX8-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x0649; GFX8-NEXT:    s_nop 2650; GFX8-NEXT:    v_div_fmas_f32 v2, v0, v1, 1.0651; GFX8-NEXT:    s_waitcnt lgkmcnt(0)652; GFX8-NEXT:    v_mov_b32_e32 v0, s0653; GFX8-NEXT:    v_mov_b32_e32 v1, s1654; GFX8-NEXT:    flat_store_dword v[0:1], v2655; GFX8-NEXT:    s_endpgm656;657; GFX10_W32-LABEL: test_div_fmas_f32_inline_imm_2:658; GFX10_W32:       ; %bb.0:659; GFX10_W32-NEXT:    s_clause 0x3660; GFX10_W32-NEXT:    s_load_dword s2, s[4:5], 0x94661; GFX10_W32-NEXT:    s_load_dword s3, s[4:5], 0x4c662; GFX10_W32-NEXT:    s_load_dword s6, s[4:5], 0x28663; GFX10_W32-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x0664; GFX10_W32-NEXT:    v_mov_b32_e32 v1, 0665; GFX10_W32-NEXT:    s_waitcnt lgkmcnt(0)666; GFX10_W32-NEXT:    s_and_b32 s2, 1, s2667; GFX10_W32-NEXT:    v_mov_b32_e32 v0, s3668; GFX10_W32-NEXT:    v_cmp_ne_u32_e64 vcc_lo, 0, s2669; GFX10_W32-NEXT:    v_div_fmas_f32 v0, s6, v0, 1.0670; GFX10_W32-NEXT:    global_store_dword v1, v0, s[0:1]671; GFX10_W32-NEXT:    s_endpgm672;673; GFX10_W64-LABEL: test_div_fmas_f32_inline_imm_2:674; GFX10_W64:       ; %bb.0:675; GFX10_W64-NEXT:    s_clause 0x3676; GFX10_W64-NEXT:    s_load_dword s2, s[4:5], 0x94677; GFX10_W64-NEXT:    s_load_dword s3, s[4:5], 0x4c678; GFX10_W64-NEXT:    s_load_dword s6, s[4:5], 0x28679; GFX10_W64-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x0680; GFX10_W64-NEXT:    v_mov_b32_e32 v1, 0681; GFX10_W64-NEXT:    s_waitcnt lgkmcnt(0)682; GFX10_W64-NEXT:    s_and_b32 s2, 1, s2683; GFX10_W64-NEXT:    v_mov_b32_e32 v0, s3684; GFX10_W64-NEXT:    v_cmp_ne_u32_e64 vcc, 0, s2685; GFX10_W64-NEXT:    v_div_fmas_f32 v0, s6, v0, 1.0686; GFX10_W64-NEXT:    global_store_dword v1, v0, s[0:1]687; GFX10_W64-NEXT:    s_endpgm688;689; GFX11_W32-LABEL: test_div_fmas_f32_inline_imm_2:690; GFX11_W32:       ; %bb.0:691; GFX11_W32-NEXT:    s_clause 0x3692; GFX11_W32-NEXT:    s_load_b32 s2, s[4:5], 0x94693; GFX11_W32-NEXT:    s_load_b32 s3, s[4:5], 0x4c694; GFX11_W32-NEXT:    s_load_b32 s6, s[4:5], 0x28695; GFX11_W32-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0696; GFX11_W32-NEXT:    v_mov_b32_e32 v1, 0697; GFX11_W32-NEXT:    s_waitcnt lgkmcnt(0)698; GFX11_W32-NEXT:    s_and_b32 s2, 1, s2699; GFX11_W32-NEXT:    v_mov_b32_e32 v0, s3700; GFX11_W32-NEXT:    v_cmp_ne_u32_e64 vcc_lo, 0, s2701; GFX11_W32-NEXT:    v_div_fmas_f32 v0, s6, v0, 1.0702; GFX11_W32-NEXT:    global_store_b32 v1, v0, s[0:1]703; GFX11_W32-NEXT:    s_endpgm704;705; GFX11_W64-LABEL: test_div_fmas_f32_inline_imm_2:706; GFX11_W64:       ; %bb.0:707; GFX11_W64-NEXT:    s_clause 0x3708; GFX11_W64-NEXT:    s_load_b32 s2, s[4:5], 0x94709; GFX11_W64-NEXT:    s_load_b32 s3, s[4:5], 0x4c710; GFX11_W64-NEXT:    s_load_b32 s6, s[4:5], 0x28711; GFX11_W64-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0712; GFX11_W64-NEXT:    v_mov_b32_e32 v1, 0713; GFX11_W64-NEXT:    s_waitcnt lgkmcnt(0)714; GFX11_W64-NEXT:    s_and_b32 s2, 1, s2715; GFX11_W64-NEXT:    v_mov_b32_e32 v0, s3716; GFX11_W64-NEXT:    v_cmp_ne_u32_e64 vcc, 0, s2717; GFX11_W64-NEXT:    v_div_fmas_f32 v0, s6, v0, 1.0718; GFX11_W64-NEXT:    global_store_b32 v1, v0, s[0:1]719; GFX11_W64-NEXT:    s_endpgm720  %result = call float @llvm.amdgcn.div.fmas.f32(float %a, float %b, float 1.0, i1 %d)721  store float %result, ptr addrspace(1) %out, align 4722  ret void723}724 725define amdgpu_kernel void @test_div_fmas_f64(ptr addrspace(1) %out, double %a, double %b, double %c, i1 %d) {726; GFX7-LABEL: test_div_fmas_f64:727; GFX7:       ; %bb.0:728; GFX7-NEXT:    s_load_dwordx8 s[8:15], s[4:5], 0x0729; GFX7-NEXT:    s_load_dword s0, s[4:5], 0x8730; GFX7-NEXT:    s_waitcnt lgkmcnt(0)731; GFX7-NEXT:    v_mov_b32_e32 v0, s10732; GFX7-NEXT:    v_mov_b32_e32 v2, s12733; GFX7-NEXT:    v_mov_b32_e32 v4, s14734; GFX7-NEXT:    s_and_b32 s0, 1, s0735; GFX7-NEXT:    v_mov_b32_e32 v1, s11736; GFX7-NEXT:    v_mov_b32_e32 v3, s13737; GFX7-NEXT:    v_mov_b32_e32 v5, s15738; GFX7-NEXT:    v_cmp_ne_u32_e64 vcc, 0, s0739; GFX7-NEXT:    s_mov_b32 s10, -1740; GFX7-NEXT:    s_mov_b32 s11, 0xf000741; GFX7-NEXT:    s_nop 1742; GFX7-NEXT:    v_div_fmas_f64 v[0:1], v[0:1], v[2:3], v[4:5]743; GFX7-NEXT:    buffer_store_dwordx2 v[0:1], off, s[8:11], 0744; GFX7-NEXT:    s_endpgm745;746; GFX8-LABEL: test_div_fmas_f64:747; GFX8:       ; %bb.0:748; GFX8-NEXT:    s_load_dwordx8 s[8:15], s[4:5], 0x0749; GFX8-NEXT:    s_load_dword s0, s[4:5], 0x20750; GFX8-NEXT:    s_waitcnt lgkmcnt(0)751; GFX8-NEXT:    v_mov_b32_e32 v0, s10752; GFX8-NEXT:    v_mov_b32_e32 v2, s12753; GFX8-NEXT:    v_mov_b32_e32 v4, s14754; GFX8-NEXT:    s_and_b32 s0, 1, s0755; GFX8-NEXT:    v_mov_b32_e32 v1, s11756; GFX8-NEXT:    v_mov_b32_e32 v3, s13757; GFX8-NEXT:    v_mov_b32_e32 v5, s15758; GFX8-NEXT:    v_cmp_ne_u32_e64 vcc, 0, s0759; GFX8-NEXT:    s_nop 3760; GFX8-NEXT:    v_div_fmas_f64 v[0:1], v[0:1], v[2:3], v[4:5]761; GFX8-NEXT:    v_mov_b32_e32 v2, s8762; GFX8-NEXT:    v_mov_b32_e32 v3, s9763; GFX8-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]764; GFX8-NEXT:    s_endpgm765;766; GFX10_W32-LABEL: test_div_fmas_f64:767; GFX10_W32:       ; %bb.0:768; GFX10_W32-NEXT:    s_clause 0x1769; GFX10_W32-NEXT:    s_load_dword s0, s[4:5], 0x20770; GFX10_W32-NEXT:    s_load_dwordx8 s[8:15], s[4:5], 0x0771; GFX10_W32-NEXT:    s_waitcnt lgkmcnt(0)772; GFX10_W32-NEXT:    s_and_b32 s0, 1, s0773; GFX10_W32-NEXT:    v_mov_b32_e32 v0, s12774; GFX10_W32-NEXT:    v_mov_b32_e32 v2, s14775; GFX10_W32-NEXT:    v_cmp_ne_u32_e64 vcc_lo, 0, s0776; GFX10_W32-NEXT:    v_mov_b32_e32 v1, s13777; GFX10_W32-NEXT:    v_mov_b32_e32 v3, s15778; GFX10_W32-NEXT:    v_div_fmas_f64 v[0:1], s[10:11], v[0:1], v[2:3]779; GFX10_W32-NEXT:    v_mov_b32_e32 v2, 0780; GFX10_W32-NEXT:    global_store_dwordx2 v2, v[0:1], s[8:9]781; GFX10_W32-NEXT:    s_endpgm782;783; GFX10_W64-LABEL: test_div_fmas_f64:784; GFX10_W64:       ; %bb.0:785; GFX10_W64-NEXT:    s_clause 0x1786; GFX10_W64-NEXT:    s_load_dword s0, s[4:5], 0x20787; GFX10_W64-NEXT:    s_load_dwordx8 s[8:15], s[4:5], 0x0788; GFX10_W64-NEXT:    s_waitcnt lgkmcnt(0)789; GFX10_W64-NEXT:    s_and_b32 s0, 1, s0790; GFX10_W64-NEXT:    v_mov_b32_e32 v0, s12791; GFX10_W64-NEXT:    v_mov_b32_e32 v2, s14792; GFX10_W64-NEXT:    v_cmp_ne_u32_e64 vcc, 0, s0793; GFX10_W64-NEXT:    v_mov_b32_e32 v1, s13794; GFX10_W64-NEXT:    v_mov_b32_e32 v3, s15795; GFX10_W64-NEXT:    v_div_fmas_f64 v[0:1], s[10:11], v[0:1], v[2:3]796; GFX10_W64-NEXT:    v_mov_b32_e32 v2, 0797; GFX10_W64-NEXT:    global_store_dwordx2 v2, v[0:1], s[8:9]798; GFX10_W64-NEXT:    s_endpgm799;800; GFX11_W32-LABEL: test_div_fmas_f64:801; GFX11_W32:       ; %bb.0:802; GFX11_W32-NEXT:    s_clause 0x1803; GFX11_W32-NEXT:    s_load_b32 s8, s[4:5], 0x20804; GFX11_W32-NEXT:    s_load_b256 s[0:7], s[4:5], 0x0805; GFX11_W32-NEXT:    s_waitcnt lgkmcnt(0)806; GFX11_W32-NEXT:    s_and_b32 s8, 1, s8807; GFX11_W32-NEXT:    v_dual_mov_b32 v0, s4 :: v_dual_mov_b32 v1, s5808; GFX11_W32-NEXT:    v_cmp_ne_u32_e64 vcc_lo, 0, s8809; GFX11_W32-NEXT:    v_dual_mov_b32 v2, s6 :: v_dual_mov_b32 v3, s7810; GFX11_W32-NEXT:    v_div_fmas_f64 v[0:1], s[2:3], v[0:1], v[2:3]811; GFX11_W32-NEXT:    v_mov_b32_e32 v2, 0812; GFX11_W32-NEXT:    global_store_b64 v2, v[0:1], s[0:1]813; GFX11_W32-NEXT:    s_endpgm814;815; GFX11_W64-LABEL: test_div_fmas_f64:816; GFX11_W64:       ; %bb.0:817; GFX11_W64-NEXT:    s_clause 0x1818; GFX11_W64-NEXT:    s_load_b32 s8, s[4:5], 0x20819; GFX11_W64-NEXT:    s_load_b256 s[0:7], s[4:5], 0x0820; GFX11_W64-NEXT:    s_waitcnt lgkmcnt(0)821; GFX11_W64-NEXT:    s_and_b32 s8, 1, s8822; GFX11_W64-NEXT:    v_mov_b32_e32 v0, s4823; GFX11_W64-NEXT:    v_mov_b32_e32 v2, s6824; GFX11_W64-NEXT:    v_cmp_ne_u32_e64 vcc, 0, s8825; GFX11_W64-NEXT:    v_mov_b32_e32 v1, s5826; GFX11_W64-NEXT:    v_mov_b32_e32 v3, s7827; GFX11_W64-NEXT:    v_div_fmas_f64 v[0:1], s[2:3], v[0:1], v[2:3]828; GFX11_W64-NEXT:    v_mov_b32_e32 v2, 0829; GFX11_W64-NEXT:    global_store_b64 v2, v[0:1], s[0:1]830; GFX11_W64-NEXT:    s_endpgm831  %result = call double @llvm.amdgcn.div.fmas.f64(double %a, double %b, double %c, i1 %d)832  store double %result, ptr addrspace(1) %out, align 8833  ret void834}835 836define amdgpu_kernel void @test_div_fmas_f32_cond_to_vcc(ptr addrspace(1) %out, float %a, float %b, float %c, i32 %i) {837; GFX7-LABEL: test_div_fmas_f32_cond_to_vcc:838; GFX7:       ; %bb.0:839; GFX7-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x2840; GFX7-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x0841; GFX7-NEXT:    s_mov_b32 s6, -1842; GFX7-NEXT:    s_mov_b32 s7, 0xf000843; GFX7-NEXT:    s_waitcnt lgkmcnt(0)844; GFX7-NEXT:    s_cmp_eq_u32 s3, 0845; GFX7-NEXT:    s_cselect_b32 s3, 1, 0846; GFX7-NEXT:    v_mov_b32_e32 v0, s0847; GFX7-NEXT:    s_and_b32 s0, 1, s3848; GFX7-NEXT:    v_mov_b32_e32 v1, s1849; GFX7-NEXT:    v_mov_b32_e32 v2, s2850; GFX7-NEXT:    v_cmp_ne_u32_e64 vcc, 0, s0851; GFX7-NEXT:    s_nop 3852; GFX7-NEXT:    v_div_fmas_f32 v0, v0, v1, v2853; GFX7-NEXT:    buffer_store_dword v0, off, s[4:7], 0854; GFX7-NEXT:    s_endpgm855;856; GFX8-LABEL: test_div_fmas_f32_cond_to_vcc:857; GFX8:       ; %bb.0:858; GFX8-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x8859; GFX8-NEXT:    s_waitcnt lgkmcnt(0)860; GFX8-NEXT:    s_cmp_eq_u32 s3, 0861; GFX8-NEXT:    s_cselect_b32 s3, 1, 0862; GFX8-NEXT:    v_mov_b32_e32 v0, s0863; GFX8-NEXT:    s_and_b32 s0, 1, s3864; GFX8-NEXT:    v_mov_b32_e32 v1, s1865; GFX8-NEXT:    v_mov_b32_e32 v2, s2866; GFX8-NEXT:    v_cmp_ne_u32_e64 vcc, 0, s0867; GFX8-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x0868; GFX8-NEXT:    s_nop 2869; GFX8-NEXT:    v_div_fmas_f32 v2, v0, v1, v2870; GFX8-NEXT:    s_waitcnt lgkmcnt(0)871; GFX8-NEXT:    v_mov_b32_e32 v0, s0872; GFX8-NEXT:    v_mov_b32_e32 v1, s1873; GFX8-NEXT:    flat_store_dword v[0:1], v2874; GFX8-NEXT:    s_endpgm875;876; GFX10_W32-LABEL: test_div_fmas_f32_cond_to_vcc:877; GFX10_W32:       ; %bb.0:878; GFX10_W32-NEXT:    s_clause 0x1879; GFX10_W32-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x8880; GFX10_W32-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x0881; GFX10_W32-NEXT:    s_waitcnt lgkmcnt(0)882; GFX10_W32-NEXT:    s_cmp_eq_u32 s3, 0883; GFX10_W32-NEXT:    v_mov_b32_e32 v0, s1884; GFX10_W32-NEXT:    s_cselect_b32 s3, 1, 0885; GFX10_W32-NEXT:    v_mov_b32_e32 v1, s2886; GFX10_W32-NEXT:    s_and_b32 s3, 1, s3887; GFX10_W32-NEXT:    v_cmp_ne_u32_e64 vcc_lo, 0, s3888; GFX10_W32-NEXT:    v_div_fmas_f32 v0, s0, v0, v1889; GFX10_W32-NEXT:    v_mov_b32_e32 v1, 0890; GFX10_W32-NEXT:    global_store_dword v1, v0, s[6:7]891; GFX10_W32-NEXT:    s_endpgm892;893; GFX10_W64-LABEL: test_div_fmas_f32_cond_to_vcc:894; GFX10_W64:       ; %bb.0:895; GFX10_W64-NEXT:    s_clause 0x1896; GFX10_W64-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x8897; GFX10_W64-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x0898; GFX10_W64-NEXT:    s_waitcnt lgkmcnt(0)899; GFX10_W64-NEXT:    s_cmp_eq_u32 s3, 0900; GFX10_W64-NEXT:    v_mov_b32_e32 v0, s1901; GFX10_W64-NEXT:    s_cselect_b32 s3, 1, 0902; GFX10_W64-NEXT:    v_mov_b32_e32 v1, s2903; GFX10_W64-NEXT:    s_and_b32 s3, 1, s3904; GFX10_W64-NEXT:    v_cmp_ne_u32_e64 vcc, 0, s3905; GFX10_W64-NEXT:    v_div_fmas_f32 v0, s0, v0, v1906; GFX10_W64-NEXT:    v_mov_b32_e32 v1, 0907; GFX10_W64-NEXT:    global_store_dword v1, v0, s[6:7]908; GFX10_W64-NEXT:    s_endpgm909;910; GFX11_W32-LABEL: test_div_fmas_f32_cond_to_vcc:911; GFX11_W32:       ; %bb.0:912; GFX11_W32-NEXT:    s_clause 0x1913; GFX11_W32-NEXT:    s_load_b128 s[0:3], s[4:5], 0x8914; GFX11_W32-NEXT:    s_load_b64 s[4:5], s[4:5], 0x0915; GFX11_W32-NEXT:    s_waitcnt lgkmcnt(0)916; GFX11_W32-NEXT:    s_cmp_eq_u32 s3, 0917; GFX11_W32-NEXT:    v_dual_mov_b32 v0, s1 :: v_dual_mov_b32 v1, s2918; GFX11_W32-NEXT:    s_cselect_b32 s3, 1, 0919; GFX11_W32-NEXT:    s_and_b32 s3, 1, s3920; GFX11_W32-NEXT:    v_cmp_ne_u32_e64 vcc_lo, 0, s3921; GFX11_W32-NEXT:    v_div_fmas_f32 v0, s0, v0, v1922; GFX11_W32-NEXT:    v_mov_b32_e32 v1, 0923; GFX11_W32-NEXT:    global_store_b32 v1, v0, s[4:5]924; GFX11_W32-NEXT:    s_endpgm925;926; GFX11_W64-LABEL: test_div_fmas_f32_cond_to_vcc:927; GFX11_W64:       ; %bb.0:928; GFX11_W64-NEXT:    s_clause 0x1929; GFX11_W64-NEXT:    s_load_b128 s[0:3], s[4:5], 0x8930; GFX11_W64-NEXT:    s_load_b64 s[4:5], s[4:5], 0x0931; GFX11_W64-NEXT:    s_waitcnt lgkmcnt(0)932; GFX11_W64-NEXT:    s_cmp_eq_u32 s3, 0933; GFX11_W64-NEXT:    v_mov_b32_e32 v0, s1934; GFX11_W64-NEXT:    s_cselect_b32 s3, 1, 0935; GFX11_W64-NEXT:    v_mov_b32_e32 v1, s2936; GFX11_W64-NEXT:    s_and_b32 s3, 1, s3937; GFX11_W64-NEXT:    v_cmp_ne_u32_e64 vcc, 0, s3938; GFX11_W64-NEXT:    v_div_fmas_f32 v0, s0, v0, v1939; GFX11_W64-NEXT:    v_mov_b32_e32 v1, 0940; GFX11_W64-NEXT:    global_store_b32 v1, v0, s[4:5]941; GFX11_W64-NEXT:    s_endpgm942  %cmp = icmp eq i32 %i, 0943  %result = call float @llvm.amdgcn.div.fmas.f32(float %a, float %b, float %c, i1 %cmp)944  store float %result, ptr addrspace(1) %out, align 4945  ret void946}947 948define amdgpu_kernel void @test_div_fmas_f32_imm_false_cond_to_vcc(ptr addrspace(1) %out, [8 x i32], float %a, [8 x i32], float %b, [8 x i32], float %c) {949; GFX7-LABEL: test_div_fmas_f32_imm_false_cond_to_vcc:950; GFX7:       ; %bb.0:951; GFX7-NEXT:    s_load_dword s2, s[4:5], 0xa952; GFX7-NEXT:    s_load_dword s3, s[4:5], 0x13953; GFX7-NEXT:    s_load_dword s6, s[4:5], 0x1c954; GFX7-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x0955; GFX7-NEXT:    s_mov_b64 vcc, 0956; GFX7-NEXT:    s_waitcnt lgkmcnt(0)957; GFX7-NEXT:    v_mov_b32_e32 v0, s2958; GFX7-NEXT:    v_mov_b32_e32 v1, s3959; GFX7-NEXT:    v_mov_b32_e32 v2, s6960; GFX7-NEXT:    v_div_fmas_f32 v0, v0, v1, v2961; GFX7-NEXT:    s_mov_b32 s2, -1962; GFX7-NEXT:    s_mov_b32 s3, 0xf000963; GFX7-NEXT:    buffer_store_dword v0, off, s[0:3], 0964; GFX7-NEXT:    s_endpgm965;966; GFX8-LABEL: test_div_fmas_f32_imm_false_cond_to_vcc:967; GFX8:       ; %bb.0:968; GFX8-NEXT:    s_load_dword s0, s[4:5], 0x28969; GFX8-NEXT:    s_load_dword s1, s[4:5], 0x4c970; GFX8-NEXT:    s_load_dword s2, s[4:5], 0x70971; GFX8-NEXT:    s_mov_b64 vcc, 0972; GFX8-NEXT:    s_waitcnt lgkmcnt(0)973; GFX8-NEXT:    v_mov_b32_e32 v0, s0974; GFX8-NEXT:    v_mov_b32_e32 v1, s1975; GFX8-NEXT:    v_mov_b32_e32 v2, s2976; GFX8-NEXT:    v_div_fmas_f32 v2, v0, v1, v2977; GFX8-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x0978; GFX8-NEXT:    s_waitcnt lgkmcnt(0)979; GFX8-NEXT:    v_mov_b32_e32 v0, s0980; GFX8-NEXT:    v_mov_b32_e32 v1, s1981; GFX8-NEXT:    flat_store_dword v[0:1], v2982; GFX8-NEXT:    s_endpgm983;984; GFX10_W32-LABEL: test_div_fmas_f32_imm_false_cond_to_vcc:985; GFX10_W32:       ; %bb.0:986; GFX10_W32-NEXT:    s_clause 0x3987; GFX10_W32-NEXT:    s_load_dword s2, s[4:5], 0x4c988; GFX10_W32-NEXT:    s_load_dword s3, s[4:5], 0x70989; GFX10_W32-NEXT:    s_load_dword s6, s[4:5], 0x28990; GFX10_W32-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x0991; GFX10_W32-NEXT:    s_mov_b32 vcc_lo, 0992; GFX10_W32-NEXT:    s_waitcnt lgkmcnt(0)993; GFX10_W32-NEXT:    v_mov_b32_e32 v0, s2994; GFX10_W32-NEXT:    v_mov_b32_e32 v1, s3995; GFX10_W32-NEXT:    v_div_fmas_f32 v0, s6, v0, v1996; GFX10_W32-NEXT:    v_mov_b32_e32 v1, 0997; GFX10_W32-NEXT:    global_store_dword v1, v0, s[0:1]998; GFX10_W32-NEXT:    s_endpgm999;1000; GFX10_W64-LABEL: test_div_fmas_f32_imm_false_cond_to_vcc:1001; GFX10_W64:       ; %bb.0:1002; GFX10_W64-NEXT:    s_clause 0x31003; GFX10_W64-NEXT:    s_load_dword s2, s[4:5], 0x4c1004; GFX10_W64-NEXT:    s_load_dword s3, s[4:5], 0x701005; GFX10_W64-NEXT:    s_load_dword s6, s[4:5], 0x281006; GFX10_W64-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x01007; GFX10_W64-NEXT:    s_mov_b64 vcc, 01008; GFX10_W64-NEXT:    s_waitcnt lgkmcnt(0)1009; GFX10_W64-NEXT:    v_mov_b32_e32 v0, s21010; GFX10_W64-NEXT:    v_mov_b32_e32 v1, s31011; GFX10_W64-NEXT:    v_div_fmas_f32 v0, s6, v0, v11012; GFX10_W64-NEXT:    v_mov_b32_e32 v1, 01013; GFX10_W64-NEXT:    global_store_dword v1, v0, s[0:1]1014; GFX10_W64-NEXT:    s_endpgm1015;1016; GFX11_W32-LABEL: test_div_fmas_f32_imm_false_cond_to_vcc:1017; GFX11_W32:       ; %bb.0:1018; GFX11_W32-NEXT:    s_clause 0x31019; GFX11_W32-NEXT:    s_load_b32 s2, s[4:5], 0x4c1020; GFX11_W32-NEXT:    s_load_b32 s3, s[4:5], 0x701021; GFX11_W32-NEXT:    s_load_b32 s6, s[4:5], 0x281022; GFX11_W32-NEXT:    s_load_b64 s[0:1], s[4:5], 0x01023; GFX11_W32-NEXT:    s_mov_b32 vcc_lo, 01024; GFX11_W32-NEXT:    s_waitcnt lgkmcnt(0)1025; GFX11_W32-NEXT:    v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s31026; GFX11_W32-NEXT:    v_div_fmas_f32 v0, s6, v0, v11027; GFX11_W32-NEXT:    v_mov_b32_e32 v1, 01028; GFX11_W32-NEXT:    global_store_b32 v1, v0, s[0:1]1029; GFX11_W32-NEXT:    s_endpgm1030;1031; GFX11_W64-LABEL: test_div_fmas_f32_imm_false_cond_to_vcc:1032; GFX11_W64:       ; %bb.0:1033; GFX11_W64-NEXT:    s_clause 0x31034; GFX11_W64-NEXT:    s_load_b32 s2, s[4:5], 0x4c1035; GFX11_W64-NEXT:    s_load_b32 s3, s[4:5], 0x701036; GFX11_W64-NEXT:    s_load_b32 s6, s[4:5], 0x281037; GFX11_W64-NEXT:    s_load_b64 s[0:1], s[4:5], 0x01038; GFX11_W64-NEXT:    s_mov_b64 vcc, 01039; GFX11_W64-NEXT:    s_waitcnt lgkmcnt(0)1040; GFX11_W64-NEXT:    v_mov_b32_e32 v0, s21041; GFX11_W64-NEXT:    v_mov_b32_e32 v1, s31042; GFX11_W64-NEXT:    v_div_fmas_f32 v0, s6, v0, v11043; GFX11_W64-NEXT:    v_mov_b32_e32 v1, 01044; GFX11_W64-NEXT:    global_store_b32 v1, v0, s[0:1]1045; GFX11_W64-NEXT:    s_endpgm1046  %result = call float @llvm.amdgcn.div.fmas.f32(float %a, float %b, float %c, i1 false)1047  store float %result, ptr addrspace(1) %out, align 41048  ret void1049}1050 1051define amdgpu_kernel void @test_div_fmas_f32_imm_true_cond_to_vcc(ptr addrspace(1) %out, [8 x i32], float %a, [8 x i32], float %b, [8 x i32], float %c) {1052; GFX7-LABEL: test_div_fmas_f32_imm_true_cond_to_vcc:1053; GFX7:       ; %bb.0:1054; GFX7-NEXT:    s_load_dword s2, s[4:5], 0xa1055; GFX7-NEXT:    s_load_dword s3, s[4:5], 0x131056; GFX7-NEXT:    s_load_dword s6, s[4:5], 0x1c1057; GFX7-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x01058; GFX7-NEXT:    s_mov_b64 vcc, -11059; GFX7-NEXT:    s_waitcnt lgkmcnt(0)1060; GFX7-NEXT:    v_mov_b32_e32 v0, s21061; GFX7-NEXT:    v_mov_b32_e32 v1, s31062; GFX7-NEXT:    v_mov_b32_e32 v2, s61063; GFX7-NEXT:    v_div_fmas_f32 v0, v0, v1, v21064; GFX7-NEXT:    s_mov_b32 s2, -11065; GFX7-NEXT:    s_mov_b32 s3, 0xf0001066; GFX7-NEXT:    buffer_store_dword v0, off, s[0:3], 01067; GFX7-NEXT:    s_endpgm1068;1069; GFX8-LABEL: test_div_fmas_f32_imm_true_cond_to_vcc:1070; GFX8:       ; %bb.0:1071; GFX8-NEXT:    s_load_dword s0, s[4:5], 0x281072; GFX8-NEXT:    s_load_dword s1, s[4:5], 0x4c1073; GFX8-NEXT:    s_load_dword s2, s[4:5], 0x701074; GFX8-NEXT:    s_mov_b64 vcc, -11075; GFX8-NEXT:    s_waitcnt lgkmcnt(0)1076; GFX8-NEXT:    v_mov_b32_e32 v0, s01077; GFX8-NEXT:    v_mov_b32_e32 v1, s11078; GFX8-NEXT:    v_mov_b32_e32 v2, s21079; GFX8-NEXT:    v_div_fmas_f32 v2, v0, v1, v21080; GFX8-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x01081; GFX8-NEXT:    s_waitcnt lgkmcnt(0)1082; GFX8-NEXT:    v_mov_b32_e32 v0, s01083; GFX8-NEXT:    v_mov_b32_e32 v1, s11084; GFX8-NEXT:    flat_store_dword v[0:1], v21085; GFX8-NEXT:    s_endpgm1086;1087; GFX10_W32-LABEL: test_div_fmas_f32_imm_true_cond_to_vcc:1088; GFX10_W32:       ; %bb.0:1089; GFX10_W32-NEXT:    s_clause 0x31090; GFX10_W32-NEXT:    s_load_dword s2, s[4:5], 0x4c1091; GFX10_W32-NEXT:    s_load_dword s3, s[4:5], 0x701092; GFX10_W32-NEXT:    s_load_dword s6, s[4:5], 0x281093; GFX10_W32-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x01094; GFX10_W32-NEXT:    s_mov_b32 vcc_lo, -11095; GFX10_W32-NEXT:    s_waitcnt lgkmcnt(0)1096; GFX10_W32-NEXT:    v_mov_b32_e32 v0, s21097; GFX10_W32-NEXT:    v_mov_b32_e32 v1, s31098; GFX10_W32-NEXT:    v_div_fmas_f32 v0, s6, v0, v11099; GFX10_W32-NEXT:    v_mov_b32_e32 v1, 01100; GFX10_W32-NEXT:    global_store_dword v1, v0, s[0:1]1101; GFX10_W32-NEXT:    s_endpgm1102;1103; GFX10_W64-LABEL: test_div_fmas_f32_imm_true_cond_to_vcc:1104; GFX10_W64:       ; %bb.0:1105; GFX10_W64-NEXT:    s_clause 0x31106; GFX10_W64-NEXT:    s_load_dword s2, s[4:5], 0x4c1107; GFX10_W64-NEXT:    s_load_dword s3, s[4:5], 0x701108; GFX10_W64-NEXT:    s_load_dword s6, s[4:5], 0x281109; GFX10_W64-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x01110; GFX10_W64-NEXT:    s_mov_b64 vcc, -11111; GFX10_W64-NEXT:    s_waitcnt lgkmcnt(0)1112; GFX10_W64-NEXT:    v_mov_b32_e32 v0, s21113; GFX10_W64-NEXT:    v_mov_b32_e32 v1, s31114; GFX10_W64-NEXT:    v_div_fmas_f32 v0, s6, v0, v11115; GFX10_W64-NEXT:    v_mov_b32_e32 v1, 01116; GFX10_W64-NEXT:    global_store_dword v1, v0, s[0:1]1117; GFX10_W64-NEXT:    s_endpgm1118;1119; GFX11_W32-LABEL: test_div_fmas_f32_imm_true_cond_to_vcc:1120; GFX11_W32:       ; %bb.0:1121; GFX11_W32-NEXT:    s_clause 0x31122; GFX11_W32-NEXT:    s_load_b32 s2, s[4:5], 0x4c1123; GFX11_W32-NEXT:    s_load_b32 s3, s[4:5], 0x701124; GFX11_W32-NEXT:    s_load_b32 s6, s[4:5], 0x281125; GFX11_W32-NEXT:    s_load_b64 s[0:1], s[4:5], 0x01126; GFX11_W32-NEXT:    s_mov_b32 vcc_lo, -11127; GFX11_W32-NEXT:    s_waitcnt lgkmcnt(0)1128; GFX11_W32-NEXT:    v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s31129; GFX11_W32-NEXT:    v_div_fmas_f32 v0, s6, v0, v11130; GFX11_W32-NEXT:    v_mov_b32_e32 v1, 01131; GFX11_W32-NEXT:    global_store_b32 v1, v0, s[0:1]1132; GFX11_W32-NEXT:    s_endpgm1133;1134; GFX11_W64-LABEL: test_div_fmas_f32_imm_true_cond_to_vcc:1135; GFX11_W64:       ; %bb.0:1136; GFX11_W64-NEXT:    s_clause 0x31137; GFX11_W64-NEXT:    s_load_b32 s2, s[4:5], 0x4c1138; GFX11_W64-NEXT:    s_load_b32 s3, s[4:5], 0x701139; GFX11_W64-NEXT:    s_load_b32 s6, s[4:5], 0x281140; GFX11_W64-NEXT:    s_load_b64 s[0:1], s[4:5], 0x01141; GFX11_W64-NEXT:    s_mov_b64 vcc, -11142; GFX11_W64-NEXT:    s_waitcnt lgkmcnt(0)1143; GFX11_W64-NEXT:    v_mov_b32_e32 v0, s21144; GFX11_W64-NEXT:    v_mov_b32_e32 v1, s31145; GFX11_W64-NEXT:    v_div_fmas_f32 v0, s6, v0, v11146; GFX11_W64-NEXT:    v_mov_b32_e32 v1, 01147; GFX11_W64-NEXT:    global_store_b32 v1, v0, s[0:1]1148; GFX11_W64-NEXT:    s_endpgm1149  %result = call float @llvm.amdgcn.div.fmas.f32(float %a, float %b, float %c, i1 true)1150  store float %result, ptr addrspace(1) %out, align 41151  ret void1152}1153 1154define amdgpu_kernel void @test_div_fmas_f32_logical_cond_to_vcc(ptr addrspace(1) %out, ptr addrspace(1) %in, [8 x i32], i32 %d) {1155; GFX7-LABEL: test_div_fmas_f32_logical_cond_to_vcc:1156; GFX7:       ; %bb.0:1157; GFX7-NEXT:    s_load_dwordx4 s[8:11], s[4:5], 0x01158; GFX7-NEXT:    s_load_dword s4, s[4:5], 0xc1159; GFX7-NEXT:    s_mov_b32 s2, 01160; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 2, v01161; GFX7-NEXT:    v_mov_b32_e32 v2, 01162; GFX7-NEXT:    s_mov_b32 s3, 0xf0001163; GFX7-NEXT:    s_waitcnt lgkmcnt(0)1164; GFX7-NEXT:    s_mov_b64 s[0:1], s[10:11]1165; GFX7-NEXT:    buffer_load_dword v3, v[1:2], s[0:3], 0 addr64 glc1166; GFX7-NEXT:    s_waitcnt vmcnt(0)1167; GFX7-NEXT:    buffer_load_dword v4, v[1:2], s[0:3], 0 addr64 offset:4 glc1168; GFX7-NEXT:    s_waitcnt vmcnt(0)1169; GFX7-NEXT:    buffer_load_dword v1, v[1:2], s[0:3], 0 addr64 offset:8 glc1170; GFX7-NEXT:    s_waitcnt vmcnt(0)1171; GFX7-NEXT:    s_cmp_lg_u32 s4, 01172; GFX7-NEXT:    s_cselect_b32 s0, 1, 01173; GFX7-NEXT:    s_and_b32 s0, 1, s01174; GFX7-NEXT:    v_cmp_eq_u32_e32 vcc, 0, v01175; GFX7-NEXT:    v_cmp_ne_u32_e64 s[0:1], 0, s01176; GFX7-NEXT:    s_mov_b32 s2, -11177; GFX7-NEXT:    s_and_b64 vcc, vcc, s[0:1]1178; GFX7-NEXT:    s_mov_b64 s[10:11], s[2:3]1179; GFX7-NEXT:    v_div_fmas_f32 v0, v3, v4, v11180; GFX7-NEXT:    buffer_store_dword v0, off, s[8:11], 0 offset:81181; GFX7-NEXT:    s_endpgm1182;1183; GFX8-LABEL: test_div_fmas_f32_logical_cond_to_vcc:1184; GFX8:       ; %bb.0:1185; GFX8-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x01186; GFX8-NEXT:    s_load_dword s4, s[4:5], 0x301187; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 2, v01188; GFX8-NEXT:    s_waitcnt lgkmcnt(0)1189; GFX8-NEXT:    v_mov_b32_e32 v1, s21190; GFX8-NEXT:    v_mov_b32_e32 v2, s31191; GFX8-NEXT:    v_add_u32_e32 v1, vcc, v1, v31192; GFX8-NEXT:    v_addc_u32_e32 v2, vcc, 0, v2, vcc1193; GFX8-NEXT:    v_add_u32_e32 v3, vcc, 4, v11194; GFX8-NEXT:    v_addc_u32_e32 v4, vcc, 0, v2, vcc1195; GFX8-NEXT:    v_add_u32_e32 v5, vcc, 8, v11196; GFX8-NEXT:    v_addc_u32_e32 v6, vcc, 0, v2, vcc1197; GFX8-NEXT:    flat_load_dword v1, v[1:2] glc1198; GFX8-NEXT:    s_waitcnt vmcnt(0)1199; GFX8-NEXT:    flat_load_dword v2, v[3:4] glc1200; GFX8-NEXT:    s_waitcnt vmcnt(0)1201; GFX8-NEXT:    flat_load_dword v3, v[5:6] glc1202; GFX8-NEXT:    s_waitcnt vmcnt(0)1203; GFX8-NEXT:    s_add_u32 s0, s0, 81204; GFX8-NEXT:    s_addc_u32 s1, s1, 01205; GFX8-NEXT:    s_cmp_lg_u32 s4, 01206; GFX8-NEXT:    s_cselect_b32 s2, 1, 01207; GFX8-NEXT:    s_and_b32 s2, 1, s21208; GFX8-NEXT:    v_cmp_eq_u32_e32 vcc, 0, v01209; GFX8-NEXT:    v_cmp_ne_u32_e64 s[2:3], 0, s21210; GFX8-NEXT:    s_and_b64 vcc, vcc, s[2:3]1211; GFX8-NEXT:    s_nop 11212; GFX8-NEXT:    v_div_fmas_f32 v2, v1, v2, v31213; GFX8-NEXT:    v_mov_b32_e32 v0, s01214; GFX8-NEXT:    v_mov_b32_e32 v1, s11215; GFX8-NEXT:    flat_store_dword v[0:1], v21216; GFX8-NEXT:    s_endpgm1217;1218; GFX10_W32-LABEL: test_div_fmas_f32_logical_cond_to_vcc:1219; GFX10_W32:       ; %bb.0:1220; GFX10_W32-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x01221; GFX10_W32-NEXT:    v_lshlrev_b32_e32 v1, 2, v01222; GFX10_W32-NEXT:    s_load_dword s4, s[4:5], 0x301223; GFX10_W32-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 0, v01224; GFX10_W32-NEXT:    s_waitcnt lgkmcnt(0)1225; GFX10_W32-NEXT:    global_load_dword v2, v1, s[2:3] glc dlc1226; GFX10_W32-NEXT:    s_waitcnt vmcnt(0)1227; GFX10_W32-NEXT:    global_load_dword v3, v1, s[2:3] offset:4 glc dlc1228; GFX10_W32-NEXT:    s_waitcnt vmcnt(0)1229; GFX10_W32-NEXT:    global_load_dword v4, v1, s[2:3] offset:8 glc dlc1230; GFX10_W32-NEXT:    s_waitcnt vmcnt(0)1231; GFX10_W32-NEXT:    v_mov_b32_e32 v1, 01232; GFX10_W32-NEXT:    s_cmp_lg_u32 s4, 01233; GFX10_W32-NEXT:    s_cselect_b32 s2, 1, 01234; GFX10_W32-NEXT:    s_and_b32 s2, 1, s21235; GFX10_W32-NEXT:    v_cmp_ne_u32_e64 s2, 0, s21236; GFX10_W32-NEXT:    s_and_b32 vcc_lo, vcc_lo, s21237; GFX10_W32-NEXT:    v_div_fmas_f32 v0, v2, v3, v41238; GFX10_W32-NEXT:    global_store_dword v1, v0, s[0:1] offset:81239; GFX10_W32-NEXT:    s_endpgm1240;1241; GFX10_W64-LABEL: test_div_fmas_f32_logical_cond_to_vcc:1242; GFX10_W64:       ; %bb.0:1243; GFX10_W64-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x01244; GFX10_W64-NEXT:    v_lshlrev_b32_e32 v1, 2, v01245; GFX10_W64-NEXT:    s_load_dword s4, s[4:5], 0x301246; GFX10_W64-NEXT:    v_cmp_eq_u32_e32 vcc, 0, v01247; GFX10_W64-NEXT:    s_waitcnt lgkmcnt(0)1248; GFX10_W64-NEXT:    global_load_dword v2, v1, s[2:3] glc dlc1249; GFX10_W64-NEXT:    s_waitcnt vmcnt(0)1250; GFX10_W64-NEXT:    global_load_dword v3, v1, s[2:3] offset:4 glc dlc1251; GFX10_W64-NEXT:    s_waitcnt vmcnt(0)1252; GFX10_W64-NEXT:    global_load_dword v4, v1, s[2:3] offset:8 glc dlc1253; GFX10_W64-NEXT:    s_waitcnt vmcnt(0)1254; GFX10_W64-NEXT:    v_mov_b32_e32 v1, 01255; GFX10_W64-NEXT:    s_cmp_lg_u32 s4, 01256; GFX10_W64-NEXT:    s_cselect_b32 s2, 1, 01257; GFX10_W64-NEXT:    s_and_b32 s2, 1, s21258; GFX10_W64-NEXT:    v_cmp_ne_u32_e64 s[2:3], 0, s21259; GFX10_W64-NEXT:    s_and_b64 vcc, vcc, s[2:3]1260; GFX10_W64-NEXT:    v_div_fmas_f32 v0, v2, v3, v41261; GFX10_W64-NEXT:    global_store_dword v1, v0, s[0:1] offset:81262; GFX10_W64-NEXT:    s_endpgm1263;1264; GFX11_W32-LABEL: test_div_fmas_f32_logical_cond_to_vcc:1265; GFX11_W32:       ; %bb.0:1266; GFX11_W32-NEXT:    s_load_b128 s[0:3], s[4:5], 0x01267; GFX11_W32-NEXT:    v_and_b32_e32 v0, 0x3ff, v01268; GFX11_W32-NEXT:    s_load_b32 s4, s[4:5], 0x301269; GFX11_W32-NEXT:    v_lshlrev_b32_e32 v1, 2, v01270; GFX11_W32-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 0, v01271; GFX11_W32-NEXT:    s_waitcnt lgkmcnt(0)1272; GFX11_W32-NEXT:    global_load_b32 v2, v1, s[2:3] glc dlc1273; GFX11_W32-NEXT:    s_waitcnt vmcnt(0)1274; GFX11_W32-NEXT:    global_load_b32 v3, v1, s[2:3] offset:4 glc dlc1275; GFX11_W32-NEXT:    s_waitcnt vmcnt(0)1276; GFX11_W32-NEXT:    global_load_b32 v1, v1, s[2:3] offset:8 glc dlc1277; GFX11_W32-NEXT:    s_waitcnt vmcnt(0)1278; GFX11_W32-NEXT:    s_cmp_lg_u32 s4, 01279; GFX11_W32-NEXT:    s_cselect_b32 s2, 1, 01280; GFX11_W32-NEXT:    s_and_b32 s2, 1, s21281; GFX11_W32-NEXT:    v_cmp_ne_u32_e64 s2, 0, s21282; GFX11_W32-NEXT:    s_and_b32 vcc_lo, vcc_lo, s21283; GFX11_W32-NEXT:    v_div_fmas_f32 v0, v2, v3, v11284; GFX11_W32-NEXT:    v_mov_b32_e32 v1, 01285; GFX11_W32-NEXT:    global_store_b32 v1, v0, s[0:1] offset:81286; GFX11_W32-NEXT:    s_endpgm1287;1288; GFX11_W64-LABEL: test_div_fmas_f32_logical_cond_to_vcc:1289; GFX11_W64:       ; %bb.0:1290; GFX11_W64-NEXT:    s_load_b128 s[0:3], s[4:5], 0x01291; GFX11_W64-NEXT:    v_and_b32_e32 v0, 0x3ff, v01292; GFX11_W64-NEXT:    s_load_b32 s4, s[4:5], 0x301293; GFX11_W64-NEXT:    v_lshlrev_b32_e32 v1, 2, v01294; GFX11_W64-NEXT:    v_cmp_eq_u32_e32 vcc, 0, v01295; GFX11_W64-NEXT:    s_waitcnt lgkmcnt(0)1296; GFX11_W64-NEXT:    global_load_b32 v2, v1, s[2:3] glc dlc1297; GFX11_W64-NEXT:    s_waitcnt vmcnt(0)1298; GFX11_W64-NEXT:    global_load_b32 v3, v1, s[2:3] offset:4 glc dlc1299; GFX11_W64-NEXT:    s_waitcnt vmcnt(0)1300; GFX11_W64-NEXT:    global_load_b32 v1, v1, s[2:3] offset:8 glc dlc1301; GFX11_W64-NEXT:    s_waitcnt vmcnt(0)1302; GFX11_W64-NEXT:    s_cmp_lg_u32 s4, 01303; GFX11_W64-NEXT:    s_cselect_b32 s2, 1, 01304; GFX11_W64-NEXT:    s_and_b32 s2, 1, s21305; GFX11_W64-NEXT:    v_cmp_ne_u32_e64 s[2:3], 0, s21306; GFX11_W64-NEXT:    s_and_b64 vcc, vcc, s[2:3]1307; GFX11_W64-NEXT:    v_div_fmas_f32 v0, v2, v3, v11308; GFX11_W64-NEXT:    v_mov_b32_e32 v1, 01309; GFX11_W64-NEXT:    global_store_b32 v1, v0, s[0:1] offset:81310; GFX11_W64-NEXT:    s_endpgm1311  %tid = call i32 @llvm.amdgcn.workitem.id.x()1312  %gep.a = getelementptr float, ptr addrspace(1) %in, i32 %tid1313  %gep.b = getelementptr float, ptr addrspace(1) %gep.a, i32 11314  %gep.c = getelementptr float, ptr addrspace(1) %gep.a, i32 21315  %gep.out = getelementptr float, ptr addrspace(1) %out, i32 21316 1317  %a = load volatile float, ptr addrspace(1) %gep.a1318  %b = load volatile float, ptr addrspace(1) %gep.b1319  %c = load volatile float, ptr addrspace(1) %gep.c1320 1321  %cmp0 = icmp eq i32 %tid, 01322  %cmp1 = icmp ne i32 %d, 01323  %and = and i1 %cmp0, %cmp11324 1325  %result = call float @llvm.amdgcn.div.fmas.f32(float %a, float %b, float %c, i1 %and)1326  store float %result, ptr addrspace(1) %gep.out, align 41327  ret void1328}1329 1330define amdgpu_kernel void @test_div_fmas_f32_i1_phi_vcc(ptr addrspace(1) %out, [8 x i32], ptr addrspace(1) %in, [8 x i32], ptr addrspace(1) %dummy) {1331; GFX7-LABEL: test_div_fmas_f32_i1_phi_vcc:1332; GFX7:       ; %bb.0: ; %entry1333; GFX7-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0xa1334; GFX7-NEXT:    v_lshlrev_b32_e32 v1, 2, v01335; GFX7-NEXT:    v_mov_b32_e32 v2, 01336; GFX7-NEXT:    s_mov_b32 s2, 01337; GFX7-NEXT:    s_mov_b32 s3, 0xf0001338; GFX7-NEXT:    s_waitcnt lgkmcnt(0)1339; GFX7-NEXT:    buffer_load_dwordx3 v[1:3], v[1:2], s[0:3], 0 addr641340; GFX7-NEXT:    v_cmp_eq_u32_e64 s[0:1], 0, v01341; GFX7-NEXT:    s_mov_b64 vcc, 01342; GFX7-NEXT:    s_and_saveexec_b64 s[6:7], s[0:1]1343; GFX7-NEXT:    s_cbranch_execz .LBB13_21344; GFX7-NEXT:  ; %bb.1: ; %bb1345; GFX7-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x141346; GFX7-NEXT:    s_waitcnt lgkmcnt(0)1347; GFX7-NEXT:    s_load_dword s0, s[0:1], 0x01348; GFX7-NEXT:    s_waitcnt lgkmcnt(0)1349; GFX7-NEXT:    s_cmp_lg_u32 s0, 01350; GFX7-NEXT:    s_cselect_b32 s0, 1, 01351; GFX7-NEXT:    s_and_b32 s0, 1, s01352; GFX7-NEXT:    v_cmp_ne_u32_e64 s[0:1], 0, s01353; GFX7-NEXT:    s_andn2_b64 s[8:9], 0, exec1354; GFX7-NEXT:    s_and_b64 s[0:1], exec, s[0:1]1355; GFX7-NEXT:    s_or_b64 vcc, s[8:9], s[0:1]1356; GFX7-NEXT:  .LBB13_2: ; %exit1357; GFX7-NEXT:    s_or_b64 exec, exec, s[6:7]1358; GFX7-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x01359; GFX7-NEXT:    s_waitcnt vmcnt(0)1360; GFX7-NEXT:    v_div_fmas_f32 v0, v1, v2, v31361; GFX7-NEXT:    s_mov_b32 s2, -11362; GFX7-NEXT:    s_waitcnt lgkmcnt(0)1363; GFX7-NEXT:    buffer_store_dword v0, off, s[0:3], 0 offset:81364; GFX7-NEXT:    s_endpgm1365;1366; GFX8-LABEL: test_div_fmas_f32_i1_phi_vcc:1367; GFX8:       ; %bb.0: ; %entry1368; GFX8-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x281369; GFX8-NEXT:    v_lshlrev_b32_e32 v3, 2, v01370; GFX8-NEXT:    s_waitcnt lgkmcnt(0)1371; GFX8-NEXT:    v_mov_b32_e32 v2, s11372; GFX8-NEXT:    v_mov_b32_e32 v1, s01373; GFX8-NEXT:    v_add_u32_e32 v1, vcc, v1, v31374; GFX8-NEXT:    v_addc_u32_e32 v2, vcc, 0, v2, vcc1375; GFX8-NEXT:    flat_load_dwordx3 v[1:3], v[1:2]1376; GFX8-NEXT:    v_cmp_eq_u32_e64 s[0:1], 0, v01377; GFX8-NEXT:    s_mov_b64 vcc, 01378; GFX8-NEXT:    s_and_saveexec_b64 s[2:3], s[0:1]1379; GFX8-NEXT:    s_cbranch_execz .LBB13_21380; GFX8-NEXT:  ; %bb.1: ; %bb1381; GFX8-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x501382; GFX8-NEXT:    s_waitcnt lgkmcnt(0)1383; GFX8-NEXT:    s_load_dword s0, s[0:1], 0x01384; GFX8-NEXT:    s_waitcnt lgkmcnt(0)1385; GFX8-NEXT:    s_cmp_lg_u32 s0, 01386; GFX8-NEXT:    s_cselect_b32 s0, 1, 01387; GFX8-NEXT:    s_and_b32 s0, 1, s01388; GFX8-NEXT:    v_cmp_ne_u32_e64 s[0:1], 0, s01389; GFX8-NEXT:    s_andn2_b64 s[6:7], 0, exec1390; GFX8-NEXT:    s_and_b64 s[0:1], exec, s[0:1]1391; GFX8-NEXT:    s_or_b64 vcc, s[6:7], s[0:1]1392; GFX8-NEXT:  .LBB13_2: ; %exit1393; GFX8-NEXT:    s_or_b64 exec, exec, s[2:3]1394; GFX8-NEXT:    s_waitcnt vmcnt(0)1395; GFX8-NEXT:    v_div_fmas_f32 v2, v1, v2, v31396; GFX8-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x01397; GFX8-NEXT:    s_waitcnt lgkmcnt(0)1398; GFX8-NEXT:    s_add_u32 s0, s0, 81399; GFX8-NEXT:    s_addc_u32 s1, s1, 01400; GFX8-NEXT:    v_mov_b32_e32 v0, s01401; GFX8-NEXT:    v_mov_b32_e32 v1, s11402; GFX8-NEXT:    flat_store_dword v[0:1], v21403; GFX8-NEXT:    s_endpgm1404;1405; GFX10_W32-LABEL: test_div_fmas_f32_i1_phi_vcc:1406; GFX10_W32:       ; %bb.0: ; %entry1407; GFX10_W32-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x281408; GFX10_W32-NEXT:    v_lshlrev_b32_e32 v1, 2, v01409; GFX10_W32-NEXT:    s_mov_b32 vcc_lo, 01410; GFX10_W32-NEXT:    s_waitcnt lgkmcnt(0)1411; GFX10_W32-NEXT:    global_load_dwordx3 v[1:3], v1, s[0:1]1412; GFX10_W32-NEXT:    v_cmp_eq_u32_e64 s0, 0, v01413; GFX10_W32-NEXT:    s_and_saveexec_b32 s1, s01414; GFX10_W32-NEXT:    s_cbranch_execz .LBB13_21415; GFX10_W32-NEXT:  ; %bb.1: ; %bb1416; GFX10_W32-NEXT:    s_load_dwordx2 s[2:3], s[4:5], 0x501417; GFX10_W32-NEXT:    s_waitcnt lgkmcnt(0)1418; GFX10_W32-NEXT:    s_load_dword s0, s[2:3], 0x01419; GFX10_W32-NEXT:    s_waitcnt lgkmcnt(0)1420; GFX10_W32-NEXT:    s_cmp_lg_u32 s0, 01421; GFX10_W32-NEXT:    s_cselect_b32 s0, 1, 01422; GFX10_W32-NEXT:    s_andn2_b32 s2, 0, exec_lo1423; GFX10_W32-NEXT:    s_and_b32 s0, 1, s01424; GFX10_W32-NEXT:    v_cmp_ne_u32_e64 s0, 0, s01425; GFX10_W32-NEXT:    s_and_b32 s0, exec_lo, s01426; GFX10_W32-NEXT:    s_or_b32 vcc_lo, s2, s01427; GFX10_W32-NEXT:  .LBB13_2: ; %exit1428; GFX10_W32-NEXT:    s_or_b32 exec_lo, exec_lo, s11429; GFX10_W32-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x01430; GFX10_W32-NEXT:    s_waitcnt vmcnt(0)1431; GFX10_W32-NEXT:    v_div_fmas_f32 v0, v1, v2, v31432; GFX10_W32-NEXT:    v_mov_b32_e32 v1, 01433; GFX10_W32-NEXT:    s_waitcnt lgkmcnt(0)1434; GFX10_W32-NEXT:    global_store_dword v1, v0, s[0:1] offset:81435; GFX10_W32-NEXT:    s_endpgm1436;1437; GFX10_W64-LABEL: test_div_fmas_f32_i1_phi_vcc:1438; GFX10_W64:       ; %bb.0: ; %entry1439; GFX10_W64-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x281440; GFX10_W64-NEXT:    v_lshlrev_b32_e32 v1, 2, v01441; GFX10_W64-NEXT:    s_mov_b64 vcc, 01442; GFX10_W64-NEXT:    s_waitcnt lgkmcnt(0)1443; GFX10_W64-NEXT:    global_load_dwordx3 v[1:3], v1, s[0:1]1444; GFX10_W64-NEXT:    v_cmp_eq_u32_e64 s[0:1], 0, v01445; GFX10_W64-NEXT:    s_and_saveexec_b64 s[2:3], s[0:1]1446; GFX10_W64-NEXT:    s_cbranch_execz .LBB13_21447; GFX10_W64-NEXT:  ; %bb.1: ; %bb1448; GFX10_W64-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x501449; GFX10_W64-NEXT:    s_waitcnt lgkmcnt(0)1450; GFX10_W64-NEXT:    s_load_dword s0, s[0:1], 0x01451; GFX10_W64-NEXT:    s_waitcnt lgkmcnt(0)1452; GFX10_W64-NEXT:    s_cmp_lg_u32 s0, 01453; GFX10_W64-NEXT:    s_cselect_b32 s0, 1, 01454; GFX10_W64-NEXT:    s_andn2_b64 s[6:7], 0, exec1455; GFX10_W64-NEXT:    s_and_b32 s0, 1, s01456; GFX10_W64-NEXT:    v_cmp_ne_u32_e64 s[0:1], 0, s01457; GFX10_W64-NEXT:    s_and_b64 s[0:1], exec, s[0:1]1458; GFX10_W64-NEXT:    s_or_b64 vcc, s[6:7], s[0:1]1459; GFX10_W64-NEXT:  .LBB13_2: ; %exit1460; GFX10_W64-NEXT:    s_or_b64 exec, exec, s[2:3]1461; GFX10_W64-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x01462; GFX10_W64-NEXT:    s_waitcnt vmcnt(0)1463; GFX10_W64-NEXT:    v_div_fmas_f32 v0, v1, v2, v31464; GFX10_W64-NEXT:    v_mov_b32_e32 v1, 01465; GFX10_W64-NEXT:    s_waitcnt lgkmcnt(0)1466; GFX10_W64-NEXT:    global_store_dword v1, v0, s[0:1] offset:81467; GFX10_W64-NEXT:    s_endpgm1468;1469; GFX11_W32-LABEL: test_div_fmas_f32_i1_phi_vcc:1470; GFX11_W32:       ; %bb.0: ; %entry1471; GFX11_W32-NEXT:    s_load_b64 s[0:1], s[4:5], 0x281472; GFX11_W32-NEXT:    v_and_b32_e32 v3, 0x3ff, v01473; GFX11_W32-NEXT:    s_mov_b32 vcc_lo, 01474; GFX11_W32-NEXT:    v_lshlrev_b32_e32 v0, 2, v31475; GFX11_W32-NEXT:    s_waitcnt lgkmcnt(0)1476; GFX11_W32-NEXT:    global_load_b96 v[0:2], v0, s[0:1]1477; GFX11_W32-NEXT:    s_mov_b32 s1, exec_lo1478; GFX11_W32-NEXT:    v_cmpx_eq_u32_e32 0, v31479; GFX11_W32-NEXT:    s_cbranch_execz .LBB13_21480; GFX11_W32-NEXT:  ; %bb.1: ; %bb1481; GFX11_W32-NEXT:    s_load_b64 s[2:3], s[4:5], 0x501482; GFX11_W32-NEXT:    s_waitcnt lgkmcnt(0)1483; GFX11_W32-NEXT:    s_load_b32 s0, s[2:3], 0x01484; GFX11_W32-NEXT:    s_waitcnt lgkmcnt(0)1485; GFX11_W32-NEXT:    s_cmp_lg_u32 s0, 01486; GFX11_W32-NEXT:    s_cselect_b32 s0, 1, 01487; GFX11_W32-NEXT:    s_and_not1_b32 s2, 0, exec_lo1488; GFX11_W32-NEXT:    s_and_b32 s0, 1, s01489; GFX11_W32-NEXT:    v_cmp_ne_u32_e64 s0, 0, s01490; GFX11_W32-NEXT:    s_and_b32 s0, exec_lo, s01491; GFX11_W32-NEXT:    s_or_b32 vcc_lo, s2, s01492; GFX11_W32-NEXT:  .LBB13_2: ; %exit1493; GFX11_W32-NEXT:    s_or_b32 exec_lo, exec_lo, s11494; GFX11_W32-NEXT:    s_load_b64 s[0:1], s[4:5], 0x01495; GFX11_W32-NEXT:    s_waitcnt vmcnt(0)1496; GFX11_W32-NEXT:    v_div_fmas_f32 v0, v0, v1, v21497; GFX11_W32-NEXT:    v_mov_b32_e32 v1, 01498; GFX11_W32-NEXT:    s_waitcnt lgkmcnt(0)1499; GFX11_W32-NEXT:    global_store_b32 v1, v0, s[0:1] offset:81500; GFX11_W32-NEXT:    s_endpgm1501;1502; GFX11_W64-LABEL: test_div_fmas_f32_i1_phi_vcc:1503; GFX11_W64:       ; %bb.0: ; %entry1504; GFX11_W64-NEXT:    s_load_b64 s[0:1], s[4:5], 0x281505; GFX11_W64-NEXT:    v_and_b32_e32 v3, 0x3ff, v01506; GFX11_W64-NEXT:    s_mov_b64 vcc, 01507; GFX11_W64-NEXT:    s_mov_b64 s[2:3], exec1508; GFX11_W64-NEXT:    v_lshlrev_b32_e32 v0, 2, v31509; GFX11_W64-NEXT:    s_waitcnt lgkmcnt(0)1510; GFX11_W64-NEXT:    global_load_b96 v[0:2], v0, s[0:1]1511; GFX11_W64-NEXT:    v_cmpx_eq_u32_e32 0, v31512; GFX11_W64-NEXT:    s_cbranch_execz .LBB13_21513; GFX11_W64-NEXT:  ; %bb.1: ; %bb1514; GFX11_W64-NEXT:    s_load_b64 s[0:1], s[4:5], 0x501515; GFX11_W64-NEXT:    s_waitcnt lgkmcnt(0)1516; GFX11_W64-NEXT:    s_load_b32 s0, s[0:1], 0x01517; GFX11_W64-NEXT:    s_waitcnt lgkmcnt(0)1518; GFX11_W64-NEXT:    s_cmp_lg_u32 s0, 01519; GFX11_W64-NEXT:    s_cselect_b32 s0, 1, 01520; GFX11_W64-NEXT:    s_and_not1_b64 s[6:7], 0, exec1521; GFX11_W64-NEXT:    s_and_b32 s0, 1, s01522; GFX11_W64-NEXT:    v_cmp_ne_u32_e64 s[0:1], 0, s01523; GFX11_W64-NEXT:    s_and_b64 s[0:1], exec, s[0:1]1524; GFX11_W64-NEXT:    s_or_b64 vcc, s[6:7], s[0:1]1525; GFX11_W64-NEXT:  .LBB13_2: ; %exit1526; GFX11_W64-NEXT:    s_or_b64 exec, exec, s[2:3]1527; GFX11_W64-NEXT:    s_load_b64 s[0:1], s[4:5], 0x01528; GFX11_W64-NEXT:    s_waitcnt vmcnt(0)1529; GFX11_W64-NEXT:    v_div_fmas_f32 v0, v0, v1, v21530; GFX11_W64-NEXT:    v_mov_b32_e32 v1, 01531; GFX11_W64-NEXT:    s_waitcnt lgkmcnt(0)1532; GFX11_W64-NEXT:    global_store_b32 v1, v0, s[0:1] offset:81533; GFX11_W64-NEXT:    s_endpgm1534entry:1535  %tid = call i32 @llvm.amdgcn.workitem.id.x()1536  %gep.a = getelementptr float, ptr addrspace(1) %in, i32 %tid1537  %gep.b = getelementptr float, ptr addrspace(1) %gep.a, i32 11538  %gep.c = getelementptr float, ptr addrspace(1) %gep.a, i32 21539 1540  %a = load float, ptr addrspace(1) %gep.a1541  %b = load float, ptr addrspace(1) %gep.b1542  %c = load float, ptr addrspace(1) %gep.c1543 1544  %cmp0 = icmp eq i32 %tid, 01545  br i1 %cmp0, label %bb, label %exit1546 1547bb:1548  %val = load i32, ptr addrspace(1) %dummy1549  %cmp1 = icmp ne i32 %val, 01550  br label %exit1551 1552exit:1553  %cond = phi i1 [false, %entry], [%cmp1, %bb]1554  %gep.out = getelementptr float, ptr addrspace(1) %out, i32 21555  %result = call float @llvm.amdgcn.div.fmas.f32(float %a, float %b, float %c, i1 %cond)1556  store float %result, ptr addrspace(1) %gep.out, align 41557  ret void1558}1559 1560declare i32 @llvm.amdgcn.workitem.id.x() #01561declare float @llvm.amdgcn.div.fmas.f32(float, float, float, i1) #01562declare double @llvm.amdgcn.div.fmas.f64(double, double, double, i1) #01563 1564attributes #0 = { nounwind readnone speculatable }1565