1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx703 < %s | FileCheck -check-prefixes=GCN,GFX7 %s 3; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx803 < %s | FileCheck -check-prefixes=GCN,GFX8 %s 4; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -check-prefixes=GCN,GFX9 %s 5; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -check-prefixes=GCN,GFX9,GFX900 %s 6; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx950 < %s | FileCheck -check-prefixes=GCN,GFX9,GFX950 %s 7; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1030 < %s | FileCheck -check-prefixes=GCN,GFX10 %s 8; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 < %s | FileCheck -check-prefixes=GCN,GFX11 %s 9; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1200 < %s | FileCheck -check-prefixes=GCN,GFX12 %s 10 11define double @v_minimum_f64(double %src0, double %src1) { 12; GFX7-LABEL: v_minimum_f64: 13; GFX7: ; %bb.0: 14; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 15; GFX7-NEXT: v_min_f64 v[4:5], v[0:1], v[2:3] 16; GFX7-NEXT: v_cmp_u_f64_e32 vcc, v[0:1], v[2:3] 17; GFX7-NEXT: v_mov_b32_e32 v1, 0x7ff80000 18; GFX7-NEXT: v_cndmask_b32_e64 v0, v4, 0, vcc 19; GFX7-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc 20; GFX7-NEXT: s_setpc_b64 s[30:31] 21; 22; GFX8-LABEL: v_minimum_f64: 23; GFX8: ; %bb.0: 24; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25; GFX8-NEXT: v_min_f64 v[4:5], v[0:1], v[2:3] 26; GFX8-NEXT: v_cmp_u_f64_e32 vcc, v[0:1], v[2:3] 27; GFX8-NEXT: v_mov_b32_e32 v1, 0x7ff80000 28; GFX8-NEXT: v_cndmask_b32_e64 v0, v4, 0, vcc 29; GFX8-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc 30; GFX8-NEXT: s_setpc_b64 s[30:31] 31; 32; GFX900-LABEL: v_minimum_f64: 33; GFX900: ; %bb.0: 34; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 35; GFX900-NEXT: v_min_f64 v[4:5], v[0:1], v[2:3] 36; GFX900-NEXT: v_cmp_u_f64_e32 vcc, v[0:1], v[2:3] 37; GFX900-NEXT: v_mov_b32_e32 v1, 0x7ff80000 38; GFX900-NEXT: v_cndmask_b32_e64 v0, v4, 0, vcc 39; GFX900-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc 40; GFX900-NEXT: s_setpc_b64 s[30:31] 41; 42; GFX950-LABEL: v_minimum_f64: 43; GFX950: ; %bb.0: 44; GFX950-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 45; GFX950-NEXT: v_min_f64 v[4:5], v[0:1], v[2:3] 46; GFX950-NEXT: v_cmp_u_f64_e32 vcc, v[0:1], v[2:3] 47; GFX950-NEXT: v_mov_b32_e32 v1, 0x7ff80000 48; GFX950-NEXT: s_nop 0 49; GFX950-NEXT: v_cndmask_b32_e64 v0, v4, 0, vcc 50; GFX950-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc 51; GFX950-NEXT: s_setpc_b64 s[30:31] 52; 53; GFX10-LABEL: v_minimum_f64: 54; GFX10: ; %bb.0: 55; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 56; GFX10-NEXT: v_min_f64 v[4:5], v[0:1], v[2:3] 57; GFX10-NEXT: v_cmp_u_f64_e32 vcc_lo, v[0:1], v[2:3] 58; GFX10-NEXT: v_cndmask_b32_e64 v0, v4, 0, vcc_lo 59; GFX10-NEXT: v_cndmask_b32_e64 v1, v5, 0x7ff80000, vcc_lo 60; GFX10-NEXT: s_setpc_b64 s[30:31] 61; 62; GFX11-LABEL: v_minimum_f64: 63; GFX11: ; %bb.0: 64; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 65; GFX11-NEXT: v_min_f64 v[4:5], v[0:1], v[2:3] 66; GFX11-NEXT: v_cmp_u_f64_e32 vcc_lo, v[0:1], v[2:3] 67; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_3) 68; GFX11-NEXT: v_cndmask_b32_e64 v0, v4, 0, vcc_lo 69; GFX11-NEXT: v_cndmask_b32_e64 v1, v5, 0x7ff80000, vcc_lo 70; GFX11-NEXT: s_setpc_b64 s[30:31] 71; 72; GFX12-LABEL: v_minimum_f64: 73; GFX12: ; %bb.0: 74; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 75; GFX12-NEXT: s_wait_expcnt 0x0 76; GFX12-NEXT: s_wait_samplecnt 0x0 77; GFX12-NEXT: s_wait_bvhcnt 0x0 78; GFX12-NEXT: s_wait_kmcnt 0x0 79; GFX12-NEXT: v_minimum_f64 v[0:1], v[0:1], v[2:3] 80; GFX12-NEXT: s_setpc_b64 s[30:31] 81 %op = call double @llvm.minimum.f64(double %src0, double %src1) 82 ret double %op 83} 84 85define double @v_minimum_f64__nnan(double %src0, double %src1) { 86; GFX7-LABEL: v_minimum_f64__nnan: 87; GFX7: ; %bb.0: 88; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 89; GFX7-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3] 90; GFX7-NEXT: s_setpc_b64 s[30:31] 91; 92; GFX8-LABEL: v_minimum_f64__nnan: 93; GFX8: ; %bb.0: 94; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 95; GFX8-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3] 96; GFX8-NEXT: s_setpc_b64 s[30:31] 97; 98; GFX9-LABEL: v_minimum_f64__nnan: 99; GFX9: ; %bb.0: 100; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 101; GFX9-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3] 102; GFX9-NEXT: s_setpc_b64 s[30:31] 103; 104; GFX10-LABEL: v_minimum_f64__nnan: 105; GFX10: ; %bb.0: 106; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 107; GFX10-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3] 108; GFX10-NEXT: s_setpc_b64 s[30:31] 109; 110; GFX11-LABEL: v_minimum_f64__nnan: 111; GFX11: ; %bb.0: 112; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 113; GFX11-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3] 114; GFX11-NEXT: s_setpc_b64 s[30:31] 115; 116; GFX12-LABEL: v_minimum_f64__nnan: 117; GFX12: ; %bb.0: 118; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 119; GFX12-NEXT: s_wait_expcnt 0x0 120; GFX12-NEXT: s_wait_samplecnt 0x0 121; GFX12-NEXT: s_wait_bvhcnt 0x0 122; GFX12-NEXT: s_wait_kmcnt 0x0 123; GFX12-NEXT: v_minimum_f64 v[0:1], v[0:1], v[2:3] 124; GFX12-NEXT: s_setpc_b64 s[30:31] 125 %op = call nnan double @llvm.minimum.f64(double %src0, double %src1) 126 ret double %op 127} 128 129define double @v_minimum_f64__nsz(double %src0, double %src1) { 130; GFX7-LABEL: v_minimum_f64__nsz: 131; GFX7: ; %bb.0: 132; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 133; GFX7-NEXT: v_min_f64 v[4:5], v[0:1], v[2:3] 134; GFX7-NEXT: v_cmp_u_f64_e32 vcc, v[0:1], v[2:3] 135; GFX7-NEXT: v_mov_b32_e32 v1, 0x7ff80000 136; GFX7-NEXT: v_cndmask_b32_e64 v0, v4, 0, vcc 137; GFX7-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc 138; GFX7-NEXT: s_setpc_b64 s[30:31] 139; 140; GFX8-LABEL: v_minimum_f64__nsz: 141; GFX8: ; %bb.0: 142; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 143; GFX8-NEXT: v_min_f64 v[4:5], v[0:1], v[2:3] 144; GFX8-NEXT: v_cmp_u_f64_e32 vcc, v[0:1], v[2:3] 145; GFX8-NEXT: v_mov_b32_e32 v1, 0x7ff80000 146; GFX8-NEXT: v_cndmask_b32_e64 v0, v4, 0, vcc 147; GFX8-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc 148; GFX8-NEXT: s_setpc_b64 s[30:31] 149; 150; GFX900-LABEL: v_minimum_f64__nsz: 151; GFX900: ; %bb.0: 152; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 153; GFX900-NEXT: v_min_f64 v[4:5], v[0:1], v[2:3] 154; GFX900-NEXT: v_cmp_u_f64_e32 vcc, v[0:1], v[2:3] 155; GFX900-NEXT: v_mov_b32_e32 v1, 0x7ff80000 156; GFX900-NEXT: v_cndmask_b32_e64 v0, v4, 0, vcc 157; GFX900-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc 158; GFX900-NEXT: s_setpc_b64 s[30:31] 159; 160; GFX950-LABEL: v_minimum_f64__nsz: 161; GFX950: ; %bb.0: 162; GFX950-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 163; GFX950-NEXT: v_min_f64 v[4:5], v[0:1], v[2:3] 164; GFX950-NEXT: v_cmp_u_f64_e32 vcc, v[0:1], v[2:3] 165; GFX950-NEXT: v_mov_b32_e32 v1, 0x7ff80000 166; GFX950-NEXT: s_nop 0 167; GFX950-NEXT: v_cndmask_b32_e64 v0, v4, 0, vcc 168; GFX950-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc 169; GFX950-NEXT: s_setpc_b64 s[30:31] 170; 171; GFX10-LABEL: v_minimum_f64__nsz: 172; GFX10: ; %bb.0: 173; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 174; GFX10-NEXT: v_min_f64 v[4:5], v[0:1], v[2:3] 175; GFX10-NEXT: v_cmp_u_f64_e32 vcc_lo, v[0:1], v[2:3] 176; GFX10-NEXT: v_cndmask_b32_e64 v0, v4, 0, vcc_lo 177; GFX10-NEXT: v_cndmask_b32_e64 v1, v5, 0x7ff80000, vcc_lo 178; GFX10-NEXT: s_setpc_b64 s[30:31] 179; 180; GFX11-LABEL: v_minimum_f64__nsz: 181; GFX11: ; %bb.0: 182; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 183; GFX11-NEXT: v_min_f64 v[4:5], v[0:1], v[2:3] 184; GFX11-NEXT: v_cmp_u_f64_e32 vcc_lo, v[0:1], v[2:3] 185; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_3) 186; GFX11-NEXT: v_cndmask_b32_e64 v0, v4, 0, vcc_lo 187; GFX11-NEXT: v_cndmask_b32_e64 v1, v5, 0x7ff80000, vcc_lo 188; GFX11-NEXT: s_setpc_b64 s[30:31] 189; 190; GFX12-LABEL: v_minimum_f64__nsz: 191; GFX12: ; %bb.0: 192; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 193; GFX12-NEXT: s_wait_expcnt 0x0 194; GFX12-NEXT: s_wait_samplecnt 0x0 195; GFX12-NEXT: s_wait_bvhcnt 0x0 196; GFX12-NEXT: s_wait_kmcnt 0x0 197; GFX12-NEXT: v_minimum_f64 v[0:1], v[0:1], v[2:3] 198; GFX12-NEXT: s_setpc_b64 s[30:31] 199 %op = call nsz double @llvm.minimum.f64(double %src0, double %src1) 200 ret double %op 201} 202 203define double @v_minimum_f64__nnan_nsz(double %src0, double %src1) { 204; GFX7-LABEL: v_minimum_f64__nnan_nsz: 205; GFX7: ; %bb.0: 206; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 207; GFX7-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3] 208; GFX7-NEXT: s_setpc_b64 s[30:31] 209; 210; GFX8-LABEL: v_minimum_f64__nnan_nsz: 211; GFX8: ; %bb.0: 212; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 213; GFX8-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3] 214; GFX8-NEXT: s_setpc_b64 s[30:31] 215; 216; GFX9-LABEL: v_minimum_f64__nnan_nsz: 217; GFX9: ; %bb.0: 218; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 219; GFX9-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3] 220; GFX9-NEXT: s_setpc_b64 s[30:31] 221; 222; GFX10-LABEL: v_minimum_f64__nnan_nsz: 223; GFX10: ; %bb.0: 224; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 225; GFX10-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3] 226; GFX10-NEXT: s_setpc_b64 s[30:31] 227; 228; GFX11-LABEL: v_minimum_f64__nnan_nsz: 229; GFX11: ; %bb.0: 230; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 231; GFX11-NEXT: v_min_f64 v[0:1], v[0:1], v[2:3] 232; GFX11-NEXT: s_setpc_b64 s[30:31] 233; 234; GFX12-LABEL: v_minimum_f64__nnan_nsz: 235; GFX12: ; %bb.0: 236; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 237; GFX12-NEXT: s_wait_expcnt 0x0 238; GFX12-NEXT: s_wait_samplecnt 0x0 239; GFX12-NEXT: s_wait_bvhcnt 0x0 240; GFX12-NEXT: s_wait_kmcnt 0x0 241; GFX12-NEXT: v_minimum_f64 v[0:1], v[0:1], v[2:3] 242; GFX12-NEXT: s_setpc_b64 s[30:31] 243 %op = call nnan nsz double @llvm.minimum.f64(double %src0, double %src1) 244 ret double %op 245} 246 247define double @v_minimum_f64__nnan_src0(double %arg0, double %src1) { 248; GFX7-LABEL: v_minimum_f64__nnan_src0: 249; GFX7: ; %bb.0: 250; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 251; GFX7-NEXT: v_add_f64 v[0:1], v[0:1], 1.0 252; GFX7-NEXT: v_min_f64 v[4:5], v[0:1], v[2:3] 253; GFX7-NEXT: v_cmp_u_f64_e32 vcc, v[0:1], v[2:3] 254; GFX7-NEXT: v_mov_b32_e32 v1, 0x7ff80000 255; GFX7-NEXT: v_cndmask_b32_e64 v0, v4, 0, vcc 256; GFX7-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc 257; GFX7-NEXT: s_setpc_b64 s[30:31] 258; 259; GFX8-LABEL: v_minimum_f64__nnan_src0: 260; GFX8: ; %bb.0: 261; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 262; GFX8-NEXT: v_add_f64 v[0:1], v[0:1], 1.0 263; GFX8-NEXT: v_min_f64 v[4:5], v[0:1], v[2:3] 264; GFX8-NEXT: v_cmp_u_f64_e32 vcc, v[0:1], v[2:3] 265; GFX8-NEXT: v_mov_b32_e32 v1, 0x7ff80000 266; GFX8-NEXT: v_cndmask_b32_e64 v0, v4, 0, vcc 267; GFX8-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc 268; GFX8-NEXT: s_setpc_b64 s[30:31] 269; 270; GFX900-LABEL: v_minimum_f64__nnan_src0: 271; GFX900: ; %bb.0: 272; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 273; GFX900-NEXT: v_add_f64 v[0:1], v[0:1], 1.0 274; GFX900-NEXT: v_min_f64 v[4:5], v[0:1], v[2:3] 275; GFX900-NEXT: v_cmp_u_f64_e32 vcc, v[0:1], v[2:3] 276; GFX900-NEXT: v_mov_b32_e32 v1, 0x7ff80000 277; GFX900-NEXT: v_cndmask_b32_e64 v0, v4, 0, vcc 278; GFX900-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc 279; GFX900-NEXT: s_setpc_b64 s[30:31] 280; 281; GFX950-LABEL: v_minimum_f64__nnan_src0: 282; GFX950: ; %bb.0: 283; GFX950-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 284; GFX950-NEXT: v_add_f64 v[0:1], v[0:1], 1.0 285; GFX950-NEXT: v_min_f64 v[4:5], v[0:1], v[2:3] 286; GFX950-NEXT: v_cmp_u_f64_e32 vcc, v[0:1], v[2:3] 287; GFX950-NEXT: v_mov_b32_e32 v1, 0x7ff80000 288; GFX950-NEXT: s_nop 0 289; GFX950-NEXT: v_cndmask_b32_e64 v0, v4, 0, vcc 290; GFX950-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc 291; GFX950-NEXT: s_setpc_b64 s[30:31] 292; 293; GFX10-LABEL: v_minimum_f64__nnan_src0: 294; GFX10: ; %bb.0: 295; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 296; GFX10-NEXT: v_add_f64 v[0:1], v[0:1], 1.0 297; GFX10-NEXT: v_min_f64 v[4:5], v[0:1], v[2:3] 298; GFX10-NEXT: v_cmp_u_f64_e32 vcc_lo, v[0:1], v[2:3] 299; GFX10-NEXT: v_cndmask_b32_e64 v0, v4, 0, vcc_lo 300; GFX10-NEXT: v_cndmask_b32_e64 v1, v5, 0x7ff80000, vcc_lo 301; GFX10-NEXT: s_setpc_b64 s[30:31] 302; 303; GFX11-LABEL: v_minimum_f64__nnan_src0: 304; GFX11: ; %bb.0: 305; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 306; GFX11-NEXT: v_add_f64 v[0:1], v[0:1], 1.0 307; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2) 308; GFX11-NEXT: v_min_f64 v[4:5], v[0:1], v[2:3] 309; GFX11-NEXT: v_cmp_u_f64_e32 vcc_lo, v[0:1], v[2:3] 310; GFX11-NEXT: v_cndmask_b32_e64 v0, v4, 0, vcc_lo 311; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_3) 312; GFX11-NEXT: v_cndmask_b32_e64 v1, v5, 0x7ff80000, vcc_lo 313; GFX11-NEXT: s_setpc_b64 s[30:31] 314; 315; GFX12-LABEL: v_minimum_f64__nnan_src0: 316; GFX12: ; %bb.0: 317; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 318; GFX12-NEXT: s_wait_expcnt 0x0 319; GFX12-NEXT: s_wait_samplecnt 0x0 320; GFX12-NEXT: s_wait_bvhcnt 0x0 321; GFX12-NEXT: s_wait_kmcnt 0x0 322; GFX12-NEXT: v_add_f64_e32 v[0:1], 1.0, v[0:1] 323; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1) 324; GFX12-NEXT: v_minimum_f64 v[0:1], v[0:1], v[2:3] 325; GFX12-NEXT: s_setpc_b64 s[30:31] 326 %src0 = fadd nnan double %arg0, 1.0 327 %op = call double @llvm.minimum.f64(double %src0, double %src1) 328 ret double %op 329} 330 331define double @v_minimum_f64__nnan_src1(double %src0, double %arg1) { 332; GFX7-LABEL: v_minimum_f64__nnan_src1: 333; GFX7: ; %bb.0: 334; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 335; GFX7-NEXT: v_add_f64 v[2:3], v[2:3], 1.0 336; GFX7-NEXT: v_min_f64 v[4:5], v[0:1], v[2:3] 337; GFX7-NEXT: v_cmp_u_f64_e32 vcc, v[0:1], v[2:3] 338; GFX7-NEXT: v_mov_b32_e32 v1, 0x7ff80000 339; GFX7-NEXT: v_cndmask_b32_e64 v0, v4, 0, vcc 340; GFX7-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc 341; GFX7-NEXT: s_setpc_b64 s[30:31] 342; 343; GFX8-LABEL: v_minimum_f64__nnan_src1: 344; GFX8: ; %bb.0: 345; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 346; GFX8-NEXT: v_add_f64 v[2:3], v[2:3], 1.0 347; GFX8-NEXT: v_min_f64 v[4:5], v[0:1], v[2:3] 348; GFX8-NEXT: v_cmp_u_f64_e32 vcc, v[0:1], v[2:3] 349; GFX8-NEXT: v_mov_b32_e32 v1, 0x7ff80000 350; GFX8-NEXT: v_cndmask_b32_e64 v0, v4, 0, vcc 351; GFX8-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc 352; GFX8-NEXT: s_setpc_b64 s[30:31] 353; 354; GFX900-LABEL: v_minimum_f64__nnan_src1: 355; GFX900: ; %bb.0: 356; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 357; GFX900-NEXT: v_add_f64 v[2:3], v[2:3], 1.0 358; GFX900-NEXT: v_min_f64 v[4:5], v[0:1], v[2:3] 359; GFX900-NEXT: v_cmp_u_f64_e32 vcc, v[0:1], v[2:3] 360; GFX900-NEXT: v_mov_b32_e32 v1, 0x7ff80000 361; GFX900-NEXT: v_cndmask_b32_e64 v0, v4, 0, vcc 362; GFX900-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc 363; GFX900-NEXT: s_setpc_b64 s[30:31] 364; 365; GFX950-LABEL: v_minimum_f64__nnan_src1: 366; GFX950: ; %bb.0: 367; GFX950-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 368; GFX950-NEXT: v_add_f64 v[2:3], v[2:3], 1.0 369; GFX950-NEXT: v_min_f64 v[4:5], v[0:1], v[2:3] 370; GFX950-NEXT: v_cmp_u_f64_e32 vcc, v[0:1], v[2:3] 371; GFX950-NEXT: v_mov_b32_e32 v1, 0x7ff80000 372; GFX950-NEXT: s_nop 0 373; GFX950-NEXT: v_cndmask_b32_e64 v0, v4, 0, vcc 374; GFX950-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc 375; GFX950-NEXT: s_setpc_b64 s[30:31] 376; 377; GFX10-LABEL: v_minimum_f64__nnan_src1: 378; GFX10: ; %bb.0: 379; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 380; GFX10-NEXT: v_add_f64 v[2:3], v[2:3], 1.0 381; GFX10-NEXT: v_min_f64 v[4:5], v[0:1], v[2:3] 382; GFX10-NEXT: v_cmp_u_f64_e32 vcc_lo, v[0:1], v[2:3] 383; GFX10-NEXT: v_cndmask_b32_e64 v0, v4, 0, vcc_lo 384; GFX10-NEXT: v_cndmask_b32_e64 v1, v5, 0x7ff80000, vcc_lo 385; GFX10-NEXT: s_setpc_b64 s[30:31] 386; 387; GFX11-LABEL: v_minimum_f64__nnan_src1: 388; GFX11: ; %bb.0: 389; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 390; GFX11-NEXT: v_add_f64 v[2:3], v[2:3], 1.0 391; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2) 392; GFX11-NEXT: v_min_f64 v[4:5], v[0:1], v[2:3] 393; GFX11-NEXT: v_cmp_u_f64_e32 vcc_lo, v[0:1], v[2:3] 394; GFX11-NEXT: v_cndmask_b32_e64 v0, v4, 0, vcc_lo 395; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_3) 396; GFX11-NEXT: v_cndmask_b32_e64 v1, v5, 0x7ff80000, vcc_lo 397; GFX11-NEXT: s_setpc_b64 s[30:31] 398; 399; GFX12-LABEL: v_minimum_f64__nnan_src1: 400; GFX12: ; %bb.0: 401; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 402; GFX12-NEXT: s_wait_expcnt 0x0 403; GFX12-NEXT: s_wait_samplecnt 0x0 404; GFX12-NEXT: s_wait_bvhcnt 0x0 405; GFX12-NEXT: s_wait_kmcnt 0x0 406; GFX12-NEXT: v_add_f64_e32 v[2:3], 1.0, v[2:3] 407; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1) 408; GFX12-NEXT: v_minimum_f64 v[0:1], v[0:1], v[2:3] 409; GFX12-NEXT: s_setpc_b64 s[30:31] 410 %src1 = fadd nnan double %arg1, 1.0 411 %op = call double @llvm.minimum.f64(double %src0, double %src1) 412 ret double %op 413} 414 415define void @s_minimum_f64(double inreg %src0, double inreg %src1) { 416; GFX7-LABEL: s_minimum_f64: 417; GFX7: ; %bb.0: 418; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 419; GFX7-NEXT: v_mov_b32_e32 v0, s18 420; GFX7-NEXT: v_mov_b32_e32 v1, s19 421; GFX7-NEXT: v_min_f64 v[2:3], s[16:17], v[0:1] 422; GFX7-NEXT: v_cmp_u_f64_e32 vcc, s[16:17], v[0:1] 423; GFX7-NEXT: v_mov_b32_e32 v4, 0x7ff80000 424; GFX7-NEXT: v_cndmask_b32_e32 v1, v3, v4, vcc 425; GFX7-NEXT: v_cndmask_b32_e64 v0, v2, 0, vcc 426; GFX7-NEXT: ;;#ASMSTART 427; GFX7-NEXT: ; use v[0:1] 428; GFX7-NEXT: ;;#ASMEND 429; GFX7-NEXT: s_setpc_b64 s[30:31] 430; 431; GFX8-LABEL: s_minimum_f64: 432; GFX8: ; %bb.0: 433; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 434; GFX8-NEXT: v_mov_b32_e32 v0, s18 435; GFX8-NEXT: v_mov_b32_e32 v1, s19 436; GFX8-NEXT: v_min_f64 v[2:3], s[16:17], v[0:1] 437; GFX8-NEXT: v_cmp_u_f64_e32 vcc, s[16:17], v[0:1] 438; GFX8-NEXT: v_mov_b32_e32 v4, 0x7ff80000 439; GFX8-NEXT: v_cndmask_b32_e32 v1, v3, v4, vcc 440; GFX8-NEXT: v_cndmask_b32_e64 v0, v2, 0, vcc 441; GFX8-NEXT: ;;#ASMSTART 442; GFX8-NEXT: ; use v[0:1] 443; GFX8-NEXT: ;;#ASMEND 444; GFX8-NEXT: s_setpc_b64 s[30:31] 445; 446; GFX900-LABEL: s_minimum_f64: 447; GFX900: ; %bb.0: 448; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 449; GFX900-NEXT: v_mov_b32_e32 v0, s18 450; GFX900-NEXT: v_mov_b32_e32 v1, s19 451; GFX900-NEXT: v_min_f64 v[2:3], s[16:17], v[0:1] 452; GFX900-NEXT: v_cmp_u_f64_e32 vcc, s[16:17], v[0:1] 453; GFX900-NEXT: v_mov_b32_e32 v4, 0x7ff80000 454; GFX900-NEXT: v_cndmask_b32_e32 v1, v3, v4, vcc 455; GFX900-NEXT: v_cndmask_b32_e64 v0, v2, 0, vcc 456; GFX900-NEXT: ;;#ASMSTART 457; GFX900-NEXT: ; use v[0:1] 458; GFX900-NEXT: ;;#ASMEND 459; GFX900-NEXT: s_setpc_b64 s[30:31] 460; 461; GFX950-LABEL: s_minimum_f64: 462; GFX950: ; %bb.0: 463; GFX950-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 464; GFX950-NEXT: v_mov_b64_e32 v[0:1], s[2:3] 465; GFX950-NEXT: v_min_f64 v[2:3], s[0:1], v[0:1] 466; GFX950-NEXT: v_mov_b32_e32 v4, 0x7ff80000 467; GFX950-NEXT: v_cmp_u_f64_e32 vcc, s[0:1], v[0:1] 468; GFX950-NEXT: s_nop 1 469; GFX950-NEXT: v_cndmask_b32_e32 v1, v3, v4, vcc 470; GFX950-NEXT: v_cndmask_b32_e64 v0, v2, 0, vcc 471; GFX950-NEXT: ;;#ASMSTART 472; GFX950-NEXT: ; use v[0:1] 473; GFX950-NEXT: ;;#ASMEND 474; GFX950-NEXT: s_setpc_b64 s[30:31] 475; 476; GFX10-LABEL: s_minimum_f64: 477; GFX10: ; %bb.0: 478; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 479; GFX10-NEXT: v_min_f64 v[0:1], s[16:17], s[18:19] 480; GFX10-NEXT: v_cmp_u_f64_e64 s4, s[16:17], s[18:19] 481; GFX10-NEXT: v_cndmask_b32_e64 v1, v1, 0x7ff80000, s4 482; GFX10-NEXT: v_cndmask_b32_e64 v0, v0, 0, s4 483; GFX10-NEXT: ;;#ASMSTART 484; GFX10-NEXT: ; use v[0:1] 485; GFX10-NEXT: ;;#ASMEND 486; GFX10-NEXT: s_setpc_b64 s[30:31] 487; 488; GFX11-LABEL: s_minimum_f64: 489; GFX11: ; %bb.0: 490; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 491; GFX11-NEXT: v_min_f64 v[0:1], s[0:1], s[2:3] 492; GFX11-NEXT: v_cmp_u_f64_e64 s0, s[0:1], s[2:3] 493; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3) 494; GFX11-NEXT: v_cndmask_b32_e64 v1, v1, 0x7ff80000, s0 495; GFX11-NEXT: v_cndmask_b32_e64 v0, v0, 0, s0 496; GFX11-NEXT: ;;#ASMSTART 497; GFX11-NEXT: ; use v[0:1] 498; GFX11-NEXT: ;;#ASMEND 499; GFX11-NEXT: s_setpc_b64 s[30:31] 500; 501; GFX12-LABEL: s_minimum_f64: 502; GFX12: ; %bb.0: 503; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 504; GFX12-NEXT: s_wait_expcnt 0x0 505; GFX12-NEXT: s_wait_samplecnt 0x0 506; GFX12-NEXT: s_wait_bvhcnt 0x0 507; GFX12-NEXT: s_wait_kmcnt 0x0 508; GFX12-NEXT: v_minimum_f64 v[0:1], s[0:1], s[2:3] 509; GFX12-NEXT: ;;#ASMSTART 510; GFX12-NEXT: ; use v[0:1] 511; GFX12-NEXT: ;;#ASMEND 512; GFX12-NEXT: s_setpc_b64 s[30:31] 513 %op = call double @llvm.minimum.f64(double %src0, double %src1) 514 call void asm sideeffect "; use $0", "s"(double %op) 515 ret void 516} 517 518define <2 x double> @v_minimum_v2f64(<2 x double> %src0, <2 x double> %src1) { 519; GFX7-LABEL: v_minimum_v2f64: 520; GFX7: ; %bb.0: 521; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 522; GFX7-NEXT: v_min_f64 v[8:9], v[0:1], v[4:5] 523; GFX7-NEXT: v_cmp_u_f64_e32 vcc, v[0:1], v[4:5] 524; GFX7-NEXT: v_min_f64 v[4:5], v[2:3], v[6:7] 525; GFX7-NEXT: v_cmp_u_f64_e64 s[4:5], v[2:3], v[6:7] 526; GFX7-NEXT: v_mov_b32_e32 v3, 0x7ff80000 527; GFX7-NEXT: v_cndmask_b32_e64 v0, v8, 0, vcc 528; GFX7-NEXT: v_cndmask_b32_e32 v1, v9, v3, vcc 529; GFX7-NEXT: v_cndmask_b32_e64 v2, v4, 0, s[4:5] 530; GFX7-NEXT: v_cndmask_b32_e64 v3, v5, v3, s[4:5] 531; GFX7-NEXT: s_setpc_b64 s[30:31] 532; 533; GFX8-LABEL: v_minimum_v2f64: 534; GFX8: ; %bb.0: 535; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 536; GFX8-NEXT: v_min_f64 v[8:9], v[0:1], v[4:5] 537; GFX8-NEXT: v_cmp_u_f64_e32 vcc, v[0:1], v[4:5] 538; GFX8-NEXT: v_min_f64 v[4:5], v[2:3], v[6:7] 539; GFX8-NEXT: v_cmp_u_f64_e64 s[4:5], v[2:3], v[6:7] 540; GFX8-NEXT: v_mov_b32_e32 v3, 0x7ff80000 541; GFX8-NEXT: v_cndmask_b32_e64 v0, v8, 0, vcc 542; GFX8-NEXT: v_cndmask_b32_e32 v1, v9, v3, vcc 543; GFX8-NEXT: v_cndmask_b32_e64 v2, v4, 0, s[4:5] 544; GFX8-NEXT: v_cndmask_b32_e64 v3, v5, v3, s[4:5] 545; GFX8-NEXT: s_setpc_b64 s[30:31] 546; 547; GFX900-LABEL: v_minimum_v2f64: 548; GFX900: ; %bb.0: 549; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 550; GFX900-NEXT: v_min_f64 v[8:9], v[0:1], v[4:5] 551; GFX900-NEXT: v_cmp_u_f64_e32 vcc, v[0:1], v[4:5] 552; GFX900-NEXT: v_min_f64 v[4:5], v[2:3], v[6:7] 553; GFX900-NEXT: v_cmp_u_f64_e64 s[4:5], v[2:3], v[6:7] 554; GFX900-NEXT: v_mov_b32_e32 v3, 0x7ff80000 555; GFX900-NEXT: v_cndmask_b32_e64 v0, v8, 0, vcc 556; GFX900-NEXT: v_cndmask_b32_e32 v1, v9, v3, vcc 557; GFX900-NEXT: v_cndmask_b32_e64 v2, v4, 0, s[4:5] 558; GFX900-NEXT: v_cndmask_b32_e64 v3, v5, v3, s[4:5] 559; GFX900-NEXT: s_setpc_b64 s[30:31] 560; 561; GFX950-LABEL: v_minimum_v2f64: 562; GFX950: ; %bb.0: 563; GFX950-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 564; GFX950-NEXT: v_min_f64 v[8:9], v[0:1], v[4:5] 565; GFX950-NEXT: v_cmp_u_f64_e32 vcc, v[0:1], v[4:5] 566; GFX950-NEXT: v_min_f64 v[4:5], v[2:3], v[6:7] 567; GFX950-NEXT: s_nop 0 568; GFX950-NEXT: v_cndmask_b32_e64 v0, v8, 0, vcc 569; GFX950-NEXT: v_mov_b32_e32 v8, 0x7ff80000 570; GFX950-NEXT: v_cndmask_b32_e32 v1, v9, v8, vcc 571; GFX950-NEXT: v_cmp_u_f64_e32 vcc, v[2:3], v[6:7] 572; GFX950-NEXT: s_nop 1 573; GFX950-NEXT: v_cndmask_b32_e64 v2, v4, 0, vcc 574; GFX950-NEXT: v_cndmask_b32_e32 v3, v5, v8, vcc 575; GFX950-NEXT: s_setpc_b64 s[30:31] 576; 577; GFX10-LABEL: v_minimum_v2f64: 578; GFX10: ; %bb.0: 579; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 580; GFX10-NEXT: v_min_f64 v[8:9], v[0:1], v[4:5] 581; GFX10-NEXT: v_cmp_u_f64_e32 vcc_lo, v[0:1], v[4:5] 582; GFX10-NEXT: v_min_f64 v[4:5], v[2:3], v[6:7] 583; GFX10-NEXT: v_cmp_u_f64_e64 s4, v[2:3], v[6:7] 584; GFX10-NEXT: v_cndmask_b32_e64 v0, v8, 0, vcc_lo 585; GFX10-NEXT: v_cndmask_b32_e64 v1, v9, 0x7ff80000, vcc_lo 586; GFX10-NEXT: v_cndmask_b32_e64 v2, v4, 0, s4 587; GFX10-NEXT: v_cndmask_b32_e64 v3, v5, 0x7ff80000, s4 588; GFX10-NEXT: s_setpc_b64 s[30:31] 589; 590; GFX11-LABEL: v_minimum_v2f64: 591; GFX11: ; %bb.0: 592; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 593; GFX11-NEXT: v_min_f64 v[8:9], v[0:1], v[4:5] 594; GFX11-NEXT: v_cmp_u_f64_e32 vcc_lo, v[0:1], v[4:5] 595; GFX11-NEXT: v_min_f64 v[4:5], v[2:3], v[6:7] 596; GFX11-NEXT: v_cmp_u_f64_e64 s0, v[2:3], v[6:7] 597; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_1) | instid1(VALU_DEP_3) 598; GFX11-NEXT: v_cndmask_b32_e64 v0, v8, 0, vcc_lo 599; GFX11-NEXT: v_cndmask_b32_e64 v1, v9, 0x7ff80000, vcc_lo 600; GFX11-NEXT: v_cndmask_b32_e64 v2, v4, 0, s0 601; GFX11-NEXT: v_cndmask_b32_e64 v3, v5, 0x7ff80000, s0 602; GFX11-NEXT: s_setpc_b64 s[30:31] 603; 604; GFX12-LABEL: v_minimum_v2f64: 605; GFX12: ; %bb.0: 606; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 607; GFX12-NEXT: s_wait_expcnt 0x0 608; GFX12-NEXT: s_wait_samplecnt 0x0 609; GFX12-NEXT: s_wait_bvhcnt 0x0 610; GFX12-NEXT: s_wait_kmcnt 0x0 611; GFX12-NEXT: v_minimum_f64 v[0:1], v[0:1], v[4:5] 612; GFX12-NEXT: v_minimum_f64 v[2:3], v[2:3], v[6:7] 613; GFX12-NEXT: s_setpc_b64 s[30:31] 614 %op = call <2 x double> @llvm.minimum.v2f64(<2 x double> %src0, <2 x double> %src1) 615 ret <2 x double> %op 616} 617 618define <2 x double> @v_minimum_v2f64__nnan(<2 x double> %src0, <2 x double> %src1) { 619; GFX7-LABEL: v_minimum_v2f64__nnan: 620; GFX7: ; %bb.0: 621; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 622; GFX7-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5] 623; GFX7-NEXT: v_min_f64 v[2:3], v[2:3], v[6:7] 624; GFX7-NEXT: s_setpc_b64 s[30:31] 625; 626; GFX8-LABEL: v_minimum_v2f64__nnan: 627; GFX8: ; %bb.0: 628; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 629; GFX8-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5] 630; GFX8-NEXT: v_min_f64 v[2:3], v[2:3], v[6:7] 631; GFX8-NEXT: s_setpc_b64 s[30:31] 632; 633; GFX9-LABEL: v_minimum_v2f64__nnan: 634; GFX9: ; %bb.0: 635; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 636; GFX9-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5] 637; GFX9-NEXT: v_min_f64 v[2:3], v[2:3], v[6:7] 638; GFX9-NEXT: s_setpc_b64 s[30:31] 639; 640; GFX10-LABEL: v_minimum_v2f64__nnan: 641; GFX10: ; %bb.0: 642; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 643; GFX10-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5] 644; GFX10-NEXT: v_min_f64 v[2:3], v[2:3], v[6:7] 645; GFX10-NEXT: s_setpc_b64 s[30:31] 646; 647; GFX11-LABEL: v_minimum_v2f64__nnan: 648; GFX11: ; %bb.0: 649; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 650; GFX11-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5] 651; GFX11-NEXT: v_min_f64 v[2:3], v[2:3], v[6:7] 652; GFX11-NEXT: s_setpc_b64 s[30:31] 653; 654; GFX12-LABEL: v_minimum_v2f64__nnan: 655; GFX12: ; %bb.0: 656; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 657; GFX12-NEXT: s_wait_expcnt 0x0 658; GFX12-NEXT: s_wait_samplecnt 0x0 659; GFX12-NEXT: s_wait_bvhcnt 0x0 660; GFX12-NEXT: s_wait_kmcnt 0x0 661; GFX12-NEXT: v_minimum_f64 v[0:1], v[0:1], v[4:5] 662; GFX12-NEXT: v_minimum_f64 v[2:3], v[2:3], v[6:7] 663; GFX12-NEXT: s_setpc_b64 s[30:31] 664 %op = call nnan <2 x double> @llvm.minimum.v2f64(<2 x double> %src0, <2 x double> %src1) 665 ret <2 x double> %op 666} 667 668define <2 x double> @v_minimum_v2f64__nsz(<2 x double> %src0, <2 x double> %src1) { 669; GFX7-LABEL: v_minimum_v2f64__nsz: 670; GFX7: ; %bb.0: 671; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 672; GFX7-NEXT: v_min_f64 v[8:9], v[0:1], v[4:5] 673; GFX7-NEXT: v_cmp_u_f64_e32 vcc, v[0:1], v[4:5] 674; GFX7-NEXT: v_min_f64 v[4:5], v[2:3], v[6:7] 675; GFX7-NEXT: v_cmp_u_f64_e64 s[4:5], v[2:3], v[6:7] 676; GFX7-NEXT: v_mov_b32_e32 v3, 0x7ff80000 677; GFX7-NEXT: v_cndmask_b32_e64 v0, v8, 0, vcc 678; GFX7-NEXT: v_cndmask_b32_e32 v1, v9, v3, vcc 679; GFX7-NEXT: v_cndmask_b32_e64 v2, v4, 0, s[4:5] 680; GFX7-NEXT: v_cndmask_b32_e64 v3, v5, v3, s[4:5] 681; GFX7-NEXT: s_setpc_b64 s[30:31] 682; 683; GFX8-LABEL: v_minimum_v2f64__nsz: 684; GFX8: ; %bb.0: 685; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 686; GFX8-NEXT: v_min_f64 v[8:9], v[0:1], v[4:5] 687; GFX8-NEXT: v_cmp_u_f64_e32 vcc, v[0:1], v[4:5] 688; GFX8-NEXT: v_min_f64 v[4:5], v[2:3], v[6:7] 689; GFX8-NEXT: v_cmp_u_f64_e64 s[4:5], v[2:3], v[6:7] 690; GFX8-NEXT: v_mov_b32_e32 v3, 0x7ff80000 691; GFX8-NEXT: v_cndmask_b32_e64 v0, v8, 0, vcc 692; GFX8-NEXT: v_cndmask_b32_e32 v1, v9, v3, vcc 693; GFX8-NEXT: v_cndmask_b32_e64 v2, v4, 0, s[4:5] 694; GFX8-NEXT: v_cndmask_b32_e64 v3, v5, v3, s[4:5] 695; GFX8-NEXT: s_setpc_b64 s[30:31] 696; 697; GFX900-LABEL: v_minimum_v2f64__nsz: 698; GFX900: ; %bb.0: 699; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 700; GFX900-NEXT: v_min_f64 v[8:9], v[0:1], v[4:5] 701; GFX900-NEXT: v_cmp_u_f64_e32 vcc, v[0:1], v[4:5] 702; GFX900-NEXT: v_min_f64 v[4:5], v[2:3], v[6:7] 703; GFX900-NEXT: v_cmp_u_f64_e64 s[4:5], v[2:3], v[6:7] 704; GFX900-NEXT: v_mov_b32_e32 v3, 0x7ff80000 705; GFX900-NEXT: v_cndmask_b32_e64 v0, v8, 0, vcc 706; GFX900-NEXT: v_cndmask_b32_e32 v1, v9, v3, vcc 707; GFX900-NEXT: v_cndmask_b32_e64 v2, v4, 0, s[4:5] 708; GFX900-NEXT: v_cndmask_b32_e64 v3, v5, v3, s[4:5] 709; GFX900-NEXT: s_setpc_b64 s[30:31] 710; 711; GFX950-LABEL: v_minimum_v2f64__nsz: 712; GFX950: ; %bb.0: 713; GFX950-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 714; GFX950-NEXT: v_min_f64 v[8:9], v[0:1], v[4:5] 715; GFX950-NEXT: v_cmp_u_f64_e32 vcc, v[0:1], v[4:5] 716; GFX950-NEXT: v_min_f64 v[4:5], v[2:3], v[6:7] 717; GFX950-NEXT: s_nop 0 718; GFX950-NEXT: v_cndmask_b32_e64 v0, v8, 0, vcc 719; GFX950-NEXT: v_mov_b32_e32 v8, 0x7ff80000 720; GFX950-NEXT: v_cndmask_b32_e32 v1, v9, v8, vcc 721; GFX950-NEXT: v_cmp_u_f64_e32 vcc, v[2:3], v[6:7] 722; GFX950-NEXT: s_nop 1 723; GFX950-NEXT: v_cndmask_b32_e64 v2, v4, 0, vcc 724; GFX950-NEXT: v_cndmask_b32_e32 v3, v5, v8, vcc 725; GFX950-NEXT: s_setpc_b64 s[30:31] 726; 727; GFX10-LABEL: v_minimum_v2f64__nsz: 728; GFX10: ; %bb.0: 729; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 730; GFX10-NEXT: v_min_f64 v[8:9], v[0:1], v[4:5] 731; GFX10-NEXT: v_cmp_u_f64_e32 vcc_lo, v[0:1], v[4:5] 732; GFX10-NEXT: v_min_f64 v[4:5], v[2:3], v[6:7] 733; GFX10-NEXT: v_cmp_u_f64_e64 s4, v[2:3], v[6:7] 734; GFX10-NEXT: v_cndmask_b32_e64 v0, v8, 0, vcc_lo 735; GFX10-NEXT: v_cndmask_b32_e64 v1, v9, 0x7ff80000, vcc_lo 736; GFX10-NEXT: v_cndmask_b32_e64 v2, v4, 0, s4 737; GFX10-NEXT: v_cndmask_b32_e64 v3, v5, 0x7ff80000, s4 738; GFX10-NEXT: s_setpc_b64 s[30:31] 739; 740; GFX11-LABEL: v_minimum_v2f64__nsz: 741; GFX11: ; %bb.0: 742; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 743; GFX11-NEXT: v_min_f64 v[8:9], v[0:1], v[4:5] 744; GFX11-NEXT: v_cmp_u_f64_e32 vcc_lo, v[0:1], v[4:5] 745; GFX11-NEXT: v_min_f64 v[4:5], v[2:3], v[6:7] 746; GFX11-NEXT: v_cmp_u_f64_e64 s0, v[2:3], v[6:7] 747; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_1) | instid1(VALU_DEP_3) 748; GFX11-NEXT: v_cndmask_b32_e64 v0, v8, 0, vcc_lo 749; GFX11-NEXT: v_cndmask_b32_e64 v1, v9, 0x7ff80000, vcc_lo 750; GFX11-NEXT: v_cndmask_b32_e64 v2, v4, 0, s0 751; GFX11-NEXT: v_cndmask_b32_e64 v3, v5, 0x7ff80000, s0 752; GFX11-NEXT: s_setpc_b64 s[30:31] 753; 754; GFX12-LABEL: v_minimum_v2f64__nsz: 755; GFX12: ; %bb.0: 756; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 757; GFX12-NEXT: s_wait_expcnt 0x0 758; GFX12-NEXT: s_wait_samplecnt 0x0 759; GFX12-NEXT: s_wait_bvhcnt 0x0 760; GFX12-NEXT: s_wait_kmcnt 0x0 761; GFX12-NEXT: v_minimum_f64 v[0:1], v[0:1], v[4:5] 762; GFX12-NEXT: v_minimum_f64 v[2:3], v[2:3], v[6:7] 763; GFX12-NEXT: s_setpc_b64 s[30:31] 764 %op = call nsz <2 x double> @llvm.minimum.v2f64(<2 x double> %src0, <2 x double> %src1) 765 ret <2 x double> %op 766} 767 768define <2 x double> @v_minimum_v2f64__nnan_nsz(<2 x double> %src0, <2 x double> %src1) { 769; GFX7-LABEL: v_minimum_v2f64__nnan_nsz: 770; GFX7: ; %bb.0: 771; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 772; GFX7-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5] 773; GFX7-NEXT: v_min_f64 v[2:3], v[2:3], v[6:7] 774; GFX7-NEXT: s_setpc_b64 s[30:31] 775; 776; GFX8-LABEL: v_minimum_v2f64__nnan_nsz: 777; GFX8: ; %bb.0: 778; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 779; GFX8-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5] 780; GFX8-NEXT: v_min_f64 v[2:3], v[2:3], v[6:7] 781; GFX8-NEXT: s_setpc_b64 s[30:31] 782; 783; GFX9-LABEL: v_minimum_v2f64__nnan_nsz: 784; GFX9: ; %bb.0: 785; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 786; GFX9-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5] 787; GFX9-NEXT: v_min_f64 v[2:3], v[2:3], v[6:7] 788; GFX9-NEXT: s_setpc_b64 s[30:31] 789; 790; GFX10-LABEL: v_minimum_v2f64__nnan_nsz: 791; GFX10: ; %bb.0: 792; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 793; GFX10-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5] 794; GFX10-NEXT: v_min_f64 v[2:3], v[2:3], v[6:7] 795; GFX10-NEXT: s_setpc_b64 s[30:31] 796; 797; GFX11-LABEL: v_minimum_v2f64__nnan_nsz: 798; GFX11: ; %bb.0: 799; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 800; GFX11-NEXT: v_min_f64 v[0:1], v[0:1], v[4:5] 801; GFX11-NEXT: v_min_f64 v[2:3], v[2:3], v[6:7] 802; GFX11-NEXT: s_setpc_b64 s[30:31] 803; 804; GFX12-LABEL: v_minimum_v2f64__nnan_nsz: 805; GFX12: ; %bb.0: 806; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 807; GFX12-NEXT: s_wait_expcnt 0x0 808; GFX12-NEXT: s_wait_samplecnt 0x0 809; GFX12-NEXT: s_wait_bvhcnt 0x0 810; GFX12-NEXT: s_wait_kmcnt 0x0 811; GFX12-NEXT: v_minimum_f64 v[0:1], v[0:1], v[4:5] 812; GFX12-NEXT: v_minimum_f64 v[2:3], v[2:3], v[6:7] 813; GFX12-NEXT: s_setpc_b64 s[30:31] 814 %op = call nnan nsz <2 x double> @llvm.minimum.v2f64(<2 x double> %src0, <2 x double> %src1) 815 ret <2 x double> %op 816} 817 818define void @s_minimum_v2f64(<2 x double> inreg %src0, <2 x double> inreg %src1) { 819; GFX7-LABEL: s_minimum_v2f64: 820; GFX7: ; %bb.0: 821; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 822; GFX7-NEXT: v_mov_b32_e32 v0, s22 823; GFX7-NEXT: v_mov_b32_e32 v4, s20 824; GFX7-NEXT: v_mov_b32_e32 v1, s23 825; GFX7-NEXT: v_mov_b32_e32 v5, s21 826; GFX7-NEXT: v_min_f64 v[2:3], s[18:19], v[0:1] 827; GFX7-NEXT: v_cmp_u_f64_e32 vcc, s[18:19], v[0:1] 828; GFX7-NEXT: v_min_f64 v[0:1], s[16:17], v[4:5] 829; GFX7-NEXT: v_cmp_u_f64_e64 s[4:5], s[16:17], v[4:5] 830; GFX7-NEXT: v_mov_b32_e32 v6, 0x7ff80000 831; GFX7-NEXT: v_cndmask_b32_e32 v3, v3, v6, vcc 832; GFX7-NEXT: v_cndmask_b32_e64 v2, v2, 0, vcc 833; GFX7-NEXT: v_cndmask_b32_e64 v1, v1, v6, s[4:5] 834; GFX7-NEXT: v_cndmask_b32_e64 v0, v0, 0, s[4:5] 835; GFX7-NEXT: ;;#ASMSTART 836; GFX7-NEXT: ; use v[0:3] 837; GFX7-NEXT: ;;#ASMEND 838; GFX7-NEXT: s_setpc_b64 s[30:31] 839; 840; GFX8-LABEL: s_minimum_v2f64: 841; GFX8: ; %bb.0: 842; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 843; GFX8-NEXT: v_mov_b32_e32 v0, s22 844; GFX8-NEXT: v_mov_b32_e32 v4, s20 845; GFX8-NEXT: v_mov_b32_e32 v1, s23 846; GFX8-NEXT: v_mov_b32_e32 v5, s21 847; GFX8-NEXT: v_min_f64 v[2:3], s[18:19], v[0:1] 848; GFX8-NEXT: v_cmp_u_f64_e32 vcc, s[18:19], v[0:1] 849; GFX8-NEXT: v_min_f64 v[0:1], s[16:17], v[4:5] 850; GFX8-NEXT: v_cmp_u_f64_e64 s[4:5], s[16:17], v[4:5] 851; GFX8-NEXT: v_mov_b32_e32 v6, 0x7ff80000 852; GFX8-NEXT: v_cndmask_b32_e32 v3, v3, v6, vcc 853; GFX8-NEXT: v_cndmask_b32_e64 v2, v2, 0, vcc 854; GFX8-NEXT: v_cndmask_b32_e64 v1, v1, v6, s[4:5] 855; GFX8-NEXT: v_cndmask_b32_e64 v0, v0, 0, s[4:5] 856; GFX8-NEXT: ;;#ASMSTART 857; GFX8-NEXT: ; use v[0:3] 858; GFX8-NEXT: ;;#ASMEND 859; GFX8-NEXT: s_setpc_b64 s[30:31] 860; 861; GFX900-LABEL: s_minimum_v2f64: 862; GFX900: ; %bb.0: 863; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 864; GFX900-NEXT: v_mov_b32_e32 v0, s22 865; GFX900-NEXT: v_mov_b32_e32 v4, s20 866; GFX900-NEXT: v_mov_b32_e32 v1, s23 867; GFX900-NEXT: v_mov_b32_e32 v5, s21 868; GFX900-NEXT: v_min_f64 v[2:3], s[18:19], v[0:1] 869; GFX900-NEXT: v_cmp_u_f64_e32 vcc, s[18:19], v[0:1] 870; GFX900-NEXT: v_min_f64 v[0:1], s[16:17], v[4:5] 871; GFX900-NEXT: v_cmp_u_f64_e64 s[4:5], s[16:17], v[4:5] 872; GFX900-NEXT: v_mov_b32_e32 v6, 0x7ff80000 873; GFX900-NEXT: v_cndmask_b32_e32 v3, v3, v6, vcc 874; GFX900-NEXT: v_cndmask_b32_e64 v2, v2, 0, vcc 875; GFX900-NEXT: v_cndmask_b32_e64 v1, v1, v6, s[4:5] 876; GFX900-NEXT: v_cndmask_b32_e64 v0, v0, 0, s[4:5] 877; GFX900-NEXT: ;;#ASMSTART 878; GFX900-NEXT: ; use v[0:3] 879; GFX900-NEXT: ;;#ASMEND 880; GFX900-NEXT: s_setpc_b64 s[30:31] 881; 882; GFX950-LABEL: s_minimum_v2f64: 883; GFX950: ; %bb.0: 884; GFX950-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 885; GFX950-NEXT: v_mov_b64_e32 v[0:1], s[18:19] 886; GFX950-NEXT: v_min_f64 v[2:3], s[2:3], v[0:1] 887; GFX950-NEXT: v_mov_b32_e32 v6, 0x7ff80000 888; GFX950-NEXT: v_cmp_u_f64_e32 vcc, s[2:3], v[0:1] 889; GFX950-NEXT: v_mov_b64_e32 v[0:1], s[16:17] 890; GFX950-NEXT: v_min_f64 v[4:5], s[0:1], v[0:1] 891; GFX950-NEXT: v_cndmask_b32_e32 v3, v3, v6, vcc 892; GFX950-NEXT: v_cndmask_b32_e64 v2, v2, 0, vcc 893; GFX950-NEXT: v_cmp_u_f64_e32 vcc, s[0:1], v[0:1] 894; GFX950-NEXT: s_nop 1 895; GFX950-NEXT: v_cndmask_b32_e32 v1, v5, v6, vcc 896; GFX950-NEXT: v_cndmask_b32_e64 v0, v4, 0, vcc 897; GFX950-NEXT: ;;#ASMSTART 898; GFX950-NEXT: ; use v[0:3] 899; GFX950-NEXT: ;;#ASMEND 900; GFX950-NEXT: s_setpc_b64 s[30:31] 901; 902; GFX10-LABEL: s_minimum_v2f64: 903; GFX10: ; %bb.0: 904; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 905; GFX10-NEXT: v_min_f64 v[0:1], s[18:19], s[22:23] 906; GFX10-NEXT: v_cmp_u_f64_e64 s4, s[18:19], s[22:23] 907; GFX10-NEXT: v_min_f64 v[4:5], s[16:17], s[20:21] 908; GFX10-NEXT: v_cmp_u_f64_e64 s5, s[16:17], s[20:21] 909; GFX10-NEXT: v_cndmask_b32_e64 v3, v1, 0x7ff80000, s4 910; GFX10-NEXT: v_cndmask_b32_e64 v2, v0, 0, s4 911; GFX10-NEXT: v_cndmask_b32_e64 v1, v5, 0x7ff80000, s5 912; GFX10-NEXT: v_cndmask_b32_e64 v0, v4, 0, s5 913; GFX10-NEXT: ;;#ASMSTART 914; GFX10-NEXT: ; use v[0:3] 915; GFX10-NEXT: ;;#ASMEND 916; GFX10-NEXT: s_setpc_b64 s[30:31] 917; 918; GFX11-LABEL: s_minimum_v2f64: 919; GFX11: ; %bb.0: 920; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 921; GFX11-NEXT: v_min_f64 v[0:1], s[2:3], s[18:19] 922; GFX11-NEXT: v_cmp_u_f64_e64 s2, s[2:3], s[18:19] 923; GFX11-NEXT: v_min_f64 v[4:5], s[0:1], s[16:17] 924; GFX11-NEXT: v_cmp_u_f64_e64 s0, s[0:1], s[16:17] 925; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3) 926; GFX11-NEXT: v_cndmask_b32_e64 v3, v1, 0x7ff80000, s2 927; GFX11-NEXT: v_cndmask_b32_e64 v2, v0, 0, s2 928; GFX11-NEXT: v_cndmask_b32_e64 v1, v5, 0x7ff80000, s0 929; GFX11-NEXT: v_cndmask_b32_e64 v0, v4, 0, s0 930; GFX11-NEXT: ;;#ASMSTART 931; GFX11-NEXT: ; use v[0:3] 932; GFX11-NEXT: ;;#ASMEND 933; GFX11-NEXT: s_setpc_b64 s[30:31] 934; 935; GFX12-LABEL: s_minimum_v2f64: 936; GFX12: ; %bb.0: 937; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 938; GFX12-NEXT: s_wait_expcnt 0x0 939; GFX12-NEXT: s_wait_samplecnt 0x0 940; GFX12-NEXT: s_wait_bvhcnt 0x0 941; GFX12-NEXT: s_wait_kmcnt 0x0 942; GFX12-NEXT: v_minimum_f64 v[2:3], s[2:3], s[18:19] 943; GFX12-NEXT: v_minimum_f64 v[0:1], s[0:1], s[16:17] 944; GFX12-NEXT: ;;#ASMSTART 945; GFX12-NEXT: ; use v[0:3] 946; GFX12-NEXT: ;;#ASMEND 947; GFX12-NEXT: s_setpc_b64 s[30:31] 948 %op = call <2 x double> @llvm.minimum.v2f64(<2 x double> %src0, <2 x double> %src1) 949 call void asm sideeffect "; use $0", "s"(<2 x double> %op) 950 ret void 951} 952 953define <3 x double> @v_minimum_v3f64(<3 x double> %src0, <3 x double> %src1) { 954; GFX7-LABEL: v_minimum_v3f64: 955; GFX7: ; %bb.0: 956; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 957; GFX7-NEXT: v_min_f64 v[12:13], v[0:1], v[6:7] 958; GFX7-NEXT: v_cmp_u_f64_e32 vcc, v[0:1], v[6:7] 959; GFX7-NEXT: v_min_f64 v[6:7], v[2:3], v[8:9] 960; GFX7-NEXT: v_cmp_u_f64_e64 s[4:5], v[2:3], v[8:9] 961; GFX7-NEXT: v_min_f64 v[8:9], v[4:5], v[10:11] 962; GFX7-NEXT: v_cmp_u_f64_e64 s[6:7], v[4:5], v[10:11] 963; GFX7-NEXT: v_mov_b32_e32 v5, 0x7ff80000 964; GFX7-NEXT: v_cndmask_b32_e64 v0, v12, 0, vcc 965; GFX7-NEXT: v_cndmask_b32_e32 v1, v13, v5, vcc 966; GFX7-NEXT: v_cndmask_b32_e64 v2, v6, 0, s[4:5] 967; GFX7-NEXT: v_cndmask_b32_e64 v3, v7, v5, s[4:5] 968; GFX7-NEXT: v_cndmask_b32_e64 v4, v8, 0, s[6:7] 969; GFX7-NEXT: v_cndmask_b32_e64 v5, v9, v5, s[6:7] 970; GFX7-NEXT: s_setpc_b64 s[30:31] 971; 972; GFX8-LABEL: v_minimum_v3f64: 973; GFX8: ; %bb.0: 974; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 975; GFX8-NEXT: v_min_f64 v[12:13], v[0:1], v[6:7] 976; GFX8-NEXT: v_cmp_u_f64_e32 vcc, v[0:1], v[6:7] 977; GFX8-NEXT: v_min_f64 v[6:7], v[2:3], v[8:9] 978; GFX8-NEXT: v_cmp_u_f64_e64 s[4:5], v[2:3], v[8:9] 979; GFX8-NEXT: v_min_f64 v[8:9], v[4:5], v[10:11] 980; GFX8-NEXT: v_cmp_u_f64_e64 s[6:7], v[4:5], v[10:11] 981; GFX8-NEXT: v_mov_b32_e32 v5, 0x7ff80000 982; GFX8-NEXT: v_cndmask_b32_e64 v0, v12, 0, vcc 983; GFX8-NEXT: v_cndmask_b32_e32 v1, v13, v5, vcc 984; GFX8-NEXT: v_cndmask_b32_e64 v2, v6, 0, s[4:5] 985; GFX8-NEXT: v_cndmask_b32_e64 v3, v7, v5, s[4:5] 986; GFX8-NEXT: v_cndmask_b32_e64 v4, v8, 0, s[6:7] 987; GFX8-NEXT: v_cndmask_b32_e64 v5, v9, v5, s[6:7] 988; GFX8-NEXT: s_setpc_b64 s[30:31] 989; 990; GFX900-LABEL: v_minimum_v3f64: 991; GFX900: ; %bb.0: 992; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 993; GFX900-NEXT: v_min_f64 v[12:13], v[0:1], v[6:7] 994; GFX900-NEXT: v_cmp_u_f64_e32 vcc, v[0:1], v[6:7] 995; GFX900-NEXT: v_min_f64 v[6:7], v[2:3], v[8:9] 996; GFX900-NEXT: v_cmp_u_f64_e64 s[4:5], v[2:3], v[8:9] 997; GFX900-NEXT: v_min_f64 v[8:9], v[4:5], v[10:11] 998; GFX900-NEXT: v_cmp_u_f64_e64 s[6:7], v[4:5], v[10:11] 999; GFX900-NEXT: v_mov_b32_e32 v5, 0x7ff80000 1000; GFX900-NEXT: v_cndmask_b32_e64 v0, v12, 0, vcc 1001; GFX900-NEXT: v_cndmask_b32_e32 v1, v13, v5, vcc 1002; GFX900-NEXT: v_cndmask_b32_e64 v2, v6, 0, s[4:5] 1003; GFX900-NEXT: v_cndmask_b32_e64 v3, v7, v5, s[4:5] 1004; GFX900-NEXT: v_cndmask_b32_e64 v4, v8, 0, s[6:7] 1005; GFX900-NEXT: v_cndmask_b32_e64 v5, v9, v5, s[6:7] 1006; GFX900-NEXT: s_setpc_b64 s[30:31] 1007; 1008; GFX950-LABEL: v_minimum_v3f64: 1009; GFX950: ; %bb.0: 1010; GFX950-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1011; GFX950-NEXT: v_min_f64 v[12:13], v[0:1], v[6:7] 1012; GFX950-NEXT: v_cmp_u_f64_e32 vcc, v[0:1], v[6:7] 1013; GFX950-NEXT: v_min_f64 v[6:7], v[2:3], v[8:9] 1014; GFX950-NEXT: s_nop 0 1015; GFX950-NEXT: v_cndmask_b32_e64 v0, v12, 0, vcc 1016; GFX950-NEXT: v_mov_b32_e32 v12, 0x7ff80000 1017; GFX950-NEXT: v_cndmask_b32_e32 v1, v13, v12, vcc 1018; GFX950-NEXT: v_cmp_u_f64_e32 vcc, v[2:3], v[8:9] 1019; GFX950-NEXT: s_nop 1 1020; GFX950-NEXT: v_cndmask_b32_e64 v2, v6, 0, vcc 1021; GFX950-NEXT: v_cndmask_b32_e32 v3, v7, v12, vcc 1022; GFX950-NEXT: v_min_f64 v[6:7], v[4:5], v[10:11] 1023; GFX950-NEXT: v_cmp_u_f64_e32 vcc, v[4:5], v[10:11] 1024; GFX950-NEXT: s_nop 1 1025; GFX950-NEXT: v_cndmask_b32_e64 v4, v6, 0, vcc 1026; GFX950-NEXT: v_cndmask_b32_e32 v5, v7, v12, vcc 1027; GFX950-NEXT: s_setpc_b64 s[30:31] 1028; 1029; GFX10-LABEL: v_minimum_v3f64: 1030; GFX10: ; %bb.0: 1031; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1032; GFX10-NEXT: v_min_f64 v[12:13], v[0:1], v[6:7] 1033; GFX10-NEXT: v_cmp_u_f64_e32 vcc_lo, v[0:1], v[6:7] 1034; GFX10-NEXT: v_min_f64 v[6:7], v[2:3], v[8:9] 1035; GFX10-NEXT: v_cmp_u_f64_e64 s4, v[2:3], v[8:9] 1036; GFX10-NEXT: v_min_f64 v[8:9], v[4:5], v[10:11] 1037; GFX10-NEXT: v_cmp_u_f64_e64 s5, v[4:5], v[10:11] 1038; GFX10-NEXT: v_cndmask_b32_e64 v0, v12, 0, vcc_lo 1039; GFX10-NEXT: v_cndmask_b32_e64 v1, v13, 0x7ff80000, vcc_lo 1040; GFX10-NEXT: v_cndmask_b32_e64 v2, v6, 0, s4 1041; GFX10-NEXT: v_cndmask_b32_e64 v3, v7, 0x7ff80000, s4 1042; GFX10-NEXT: v_cndmask_b32_e64 v4, v8, 0, s5 1043; GFX10-NEXT: v_cndmask_b32_e64 v5, v9, 0x7ff80000, s5 1044; GFX10-NEXT: s_setpc_b64 s[30:31] 1045; 1046; GFX11-LABEL: v_minimum_v3f64: 1047; GFX11: ; %bb.0: 1048; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1049; GFX11-NEXT: v_min_f64 v[12:13], v[0:1], v[6:7] 1050; GFX11-NEXT: v_cmp_u_f64_e32 vcc_lo, v[0:1], v[6:7] 1051; GFX11-NEXT: v_min_f64 v[6:7], v[2:3], v[8:9] 1052; GFX11-NEXT: v_cmp_u_f64_e64 s0, v[2:3], v[8:9] 1053; GFX11-NEXT: v_min_f64 v[8:9], v[4:5], v[10:11] 1054; GFX11-NEXT: v_cmp_u_f64_e64 s1, v[4:5], v[10:11] 1055; GFX11-NEXT: v_cndmask_b32_e64 v0, v12, 0, vcc_lo 1056; GFX11-NEXT: v_cndmask_b32_e64 v1, v13, 0x7ff80000, vcc_lo 1057; GFX11-NEXT: v_cndmask_b32_e64 v2, v6, 0, s0 1058; GFX11-NEXT: v_cndmask_b32_e64 v3, v7, 0x7ff80000, s0 1059; GFX11-NEXT: v_cndmask_b32_e64 v4, v8, 0, s1 1060; GFX11-NEXT: v_cndmask_b32_e64 v5, v9, 0x7ff80000, s1 1061; GFX11-NEXT: s_setpc_b64 s[30:31] 1062; 1063; GFX12-LABEL: v_minimum_v3f64: 1064; GFX12: ; %bb.0: 1065; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 1066; GFX12-NEXT: s_wait_expcnt 0x0 1067; GFX12-NEXT: s_wait_samplecnt 0x0 1068; GFX12-NEXT: s_wait_bvhcnt 0x0 1069; GFX12-NEXT: s_wait_kmcnt 0x0 1070; GFX12-NEXT: v_minimum_f64 v[0:1], v[0:1], v[6:7] 1071; GFX12-NEXT: v_minimum_f64 v[2:3], v[2:3], v[8:9] 1072; GFX12-NEXT: v_minimum_f64 v[4:5], v[4:5], v[10:11] 1073; GFX12-NEXT: s_setpc_b64 s[30:31] 1074 %op = call <3 x double> @llvm.minimum.v3f64(<3 x double> %src0, <3 x double> %src1) 1075 ret <3 x double> %op 1076} 1077 1078define <3 x double> @v_minimum_v3f64__nnan(<3 x double> %src0, <3 x double> %src1) { 1079; GFX7-LABEL: v_minimum_v3f64__nnan: 1080; GFX7: ; %bb.0: 1081; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1082; GFX7-NEXT: v_min_f64 v[0:1], v[0:1], v[6:7] 1083; GFX7-NEXT: v_min_f64 v[2:3], v[2:3], v[8:9] 1084; GFX7-NEXT: v_min_f64 v[4:5], v[4:5], v[10:11] 1085; GFX7-NEXT: s_setpc_b64 s[30:31] 1086; 1087; GFX8-LABEL: v_minimum_v3f64__nnan: 1088; GFX8: ; %bb.0: 1089; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1090; GFX8-NEXT: v_min_f64 v[0:1], v[0:1], v[6:7] 1091; GFX8-NEXT: v_min_f64 v[2:3], v[2:3], v[8:9] 1092; GFX8-NEXT: v_min_f64 v[4:5], v[4:5], v[10:11] 1093; GFX8-NEXT: s_setpc_b64 s[30:31] 1094; 1095; GFX9-LABEL: v_minimum_v3f64__nnan: 1096; GFX9: ; %bb.0: 1097; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1098; GFX9-NEXT: v_min_f64 v[0:1], v[0:1], v[6:7] 1099; GFX9-NEXT: v_min_f64 v[2:3], v[2:3], v[8:9] 1100; GFX9-NEXT: v_min_f64 v[4:5], v[4:5], v[10:11] 1101; GFX9-NEXT: s_setpc_b64 s[30:31] 1102; 1103; GFX10-LABEL: v_minimum_v3f64__nnan: 1104; GFX10: ; %bb.0: 1105; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1106; GFX10-NEXT: v_min_f64 v[0:1], v[0:1], v[6:7] 1107; GFX10-NEXT: v_min_f64 v[2:3], v[2:3], v[8:9] 1108; GFX10-NEXT: v_min_f64 v[4:5], v[4:5], v[10:11] 1109; GFX10-NEXT: s_setpc_b64 s[30:31] 1110; 1111; GFX11-LABEL: v_minimum_v3f64__nnan: 1112; GFX11: ; %bb.0: 1113; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1114; GFX11-NEXT: v_min_f64 v[0:1], v[0:1], v[6:7] 1115; GFX11-NEXT: v_min_f64 v[2:3], v[2:3], v[8:9] 1116; GFX11-NEXT: v_min_f64 v[4:5], v[4:5], v[10:11] 1117; GFX11-NEXT: s_setpc_b64 s[30:31] 1118; 1119; GFX12-LABEL: v_minimum_v3f64__nnan: 1120; GFX12: ; %bb.0: 1121; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 1122; GFX12-NEXT: s_wait_expcnt 0x0 1123; GFX12-NEXT: s_wait_samplecnt 0x0 1124; GFX12-NEXT: s_wait_bvhcnt 0x0 1125; GFX12-NEXT: s_wait_kmcnt 0x0 1126; GFX12-NEXT: v_minimum_f64 v[0:1], v[0:1], v[6:7] 1127; GFX12-NEXT: v_minimum_f64 v[2:3], v[2:3], v[8:9] 1128; GFX12-NEXT: v_minimum_f64 v[4:5], v[4:5], v[10:11] 1129; GFX12-NEXT: s_setpc_b64 s[30:31] 1130 %op = call nnan <3 x double> @llvm.minimum.v3f64(<3 x double> %src0, <3 x double> %src1) 1131 ret <3 x double> %op 1132} 1133 1134define <3 x double> @v_minimum_v3f64__nsz(<3 x double> %src0, <3 x double> %src1) { 1135; GFX7-LABEL: v_minimum_v3f64__nsz: 1136; GFX7: ; %bb.0: 1137; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1138; GFX7-NEXT: v_min_f64 v[12:13], v[0:1], v[6:7] 1139; GFX7-NEXT: v_cmp_u_f64_e32 vcc, v[0:1], v[6:7] 1140; GFX7-NEXT: v_min_f64 v[6:7], v[2:3], v[8:9] 1141; GFX7-NEXT: v_cmp_u_f64_e64 s[4:5], v[2:3], v[8:9] 1142; GFX7-NEXT: v_min_f64 v[8:9], v[4:5], v[10:11] 1143; GFX7-NEXT: v_cmp_u_f64_e64 s[6:7], v[4:5], v[10:11] 1144; GFX7-NEXT: v_mov_b32_e32 v5, 0x7ff80000 1145; GFX7-NEXT: v_cndmask_b32_e64 v0, v12, 0, vcc 1146; GFX7-NEXT: v_cndmask_b32_e32 v1, v13, v5, vcc 1147; GFX7-NEXT: v_cndmask_b32_e64 v2, v6, 0, s[4:5] 1148; GFX7-NEXT: v_cndmask_b32_e64 v3, v7, v5, s[4:5] 1149; GFX7-NEXT: v_cndmask_b32_e64 v4, v8, 0, s[6:7] 1150; GFX7-NEXT: v_cndmask_b32_e64 v5, v9, v5, s[6:7] 1151; GFX7-NEXT: s_setpc_b64 s[30:31] 1152; 1153; GFX8-LABEL: v_minimum_v3f64__nsz: 1154; GFX8: ; %bb.0: 1155; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1156; GFX8-NEXT: v_min_f64 v[12:13], v[0:1], v[6:7] 1157; GFX8-NEXT: v_cmp_u_f64_e32 vcc, v[0:1], v[6:7] 1158; GFX8-NEXT: v_min_f64 v[6:7], v[2:3], v[8:9] 1159; GFX8-NEXT: v_cmp_u_f64_e64 s[4:5], v[2:3], v[8:9] 1160; GFX8-NEXT: v_min_f64 v[8:9], v[4:5], v[10:11] 1161; GFX8-NEXT: v_cmp_u_f64_e64 s[6:7], v[4:5], v[10:11] 1162; GFX8-NEXT: v_mov_b32_e32 v5, 0x7ff80000 1163; GFX8-NEXT: v_cndmask_b32_e64 v0, v12, 0, vcc 1164; GFX8-NEXT: v_cndmask_b32_e32 v1, v13, v5, vcc 1165; GFX8-NEXT: v_cndmask_b32_e64 v2, v6, 0, s[4:5] 1166; GFX8-NEXT: v_cndmask_b32_e64 v3, v7, v5, s[4:5] 1167; GFX8-NEXT: v_cndmask_b32_e64 v4, v8, 0, s[6:7] 1168; GFX8-NEXT: v_cndmask_b32_e64 v5, v9, v5, s[6:7] 1169; GFX8-NEXT: s_setpc_b64 s[30:31] 1170; 1171; GFX900-LABEL: v_minimum_v3f64__nsz: 1172; GFX900: ; %bb.0: 1173; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1174; GFX900-NEXT: v_min_f64 v[12:13], v[0:1], v[6:7] 1175; GFX900-NEXT: v_cmp_u_f64_e32 vcc, v[0:1], v[6:7] 1176; GFX900-NEXT: v_min_f64 v[6:7], v[2:3], v[8:9] 1177; GFX900-NEXT: v_cmp_u_f64_e64 s[4:5], v[2:3], v[8:9] 1178; GFX900-NEXT: v_min_f64 v[8:9], v[4:5], v[10:11] 1179; GFX900-NEXT: v_cmp_u_f64_e64 s[6:7], v[4:5], v[10:11] 1180; GFX900-NEXT: v_mov_b32_e32 v5, 0x7ff80000 1181; GFX900-NEXT: v_cndmask_b32_e64 v0, v12, 0, vcc 1182; GFX900-NEXT: v_cndmask_b32_e32 v1, v13, v5, vcc 1183; GFX900-NEXT: v_cndmask_b32_e64 v2, v6, 0, s[4:5] 1184; GFX900-NEXT: v_cndmask_b32_e64 v3, v7, v5, s[4:5] 1185; GFX900-NEXT: v_cndmask_b32_e64 v4, v8, 0, s[6:7] 1186; GFX900-NEXT: v_cndmask_b32_e64 v5, v9, v5, s[6:7] 1187; GFX900-NEXT: s_setpc_b64 s[30:31] 1188; 1189; GFX950-LABEL: v_minimum_v3f64__nsz: 1190; GFX950: ; %bb.0: 1191; GFX950-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1192; GFX950-NEXT: v_min_f64 v[12:13], v[0:1], v[6:7] 1193; GFX950-NEXT: v_cmp_u_f64_e32 vcc, v[0:1], v[6:7] 1194; GFX950-NEXT: v_min_f64 v[6:7], v[2:3], v[8:9] 1195; GFX950-NEXT: s_nop 0 1196; GFX950-NEXT: v_cndmask_b32_e64 v0, v12, 0, vcc 1197; GFX950-NEXT: v_mov_b32_e32 v12, 0x7ff80000 1198; GFX950-NEXT: v_cndmask_b32_e32 v1, v13, v12, vcc 1199; GFX950-NEXT: v_cmp_u_f64_e32 vcc, v[2:3], v[8:9] 1200; GFX950-NEXT: s_nop 1 1201; GFX950-NEXT: v_cndmask_b32_e64 v2, v6, 0, vcc 1202; GFX950-NEXT: v_cndmask_b32_e32 v3, v7, v12, vcc 1203; GFX950-NEXT: v_min_f64 v[6:7], v[4:5], v[10:11] 1204; GFX950-NEXT: v_cmp_u_f64_e32 vcc, v[4:5], v[10:11] 1205; GFX950-NEXT: s_nop 1 1206; GFX950-NEXT: v_cndmask_b32_e64 v4, v6, 0, vcc 1207; GFX950-NEXT: v_cndmask_b32_e32 v5, v7, v12, vcc 1208; GFX950-NEXT: s_setpc_b64 s[30:31] 1209; 1210; GFX10-LABEL: v_minimum_v3f64__nsz: 1211; GFX10: ; %bb.0: 1212; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1213; GFX10-NEXT: v_min_f64 v[12:13], v[0:1], v[6:7] 1214; GFX10-NEXT: v_cmp_u_f64_e32 vcc_lo, v[0:1], v[6:7] 1215; GFX10-NEXT: v_min_f64 v[6:7], v[2:3], v[8:9] 1216; GFX10-NEXT: v_cmp_u_f64_e64 s4, v[2:3], v[8:9] 1217; GFX10-NEXT: v_min_f64 v[8:9], v[4:5], v[10:11] 1218; GFX10-NEXT: v_cmp_u_f64_e64 s5, v[4:5], v[10:11] 1219; GFX10-NEXT: v_cndmask_b32_e64 v0, v12, 0, vcc_lo 1220; GFX10-NEXT: v_cndmask_b32_e64 v1, v13, 0x7ff80000, vcc_lo 1221; GFX10-NEXT: v_cndmask_b32_e64 v2, v6, 0, s4 1222; GFX10-NEXT: v_cndmask_b32_e64 v3, v7, 0x7ff80000, s4 1223; GFX10-NEXT: v_cndmask_b32_e64 v4, v8, 0, s5 1224; GFX10-NEXT: v_cndmask_b32_e64 v5, v9, 0x7ff80000, s5 1225; GFX10-NEXT: s_setpc_b64 s[30:31] 1226; 1227; GFX11-LABEL: v_minimum_v3f64__nsz: 1228; GFX11: ; %bb.0: 1229; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1230; GFX11-NEXT: v_min_f64 v[12:13], v[0:1], v[6:7] 1231; GFX11-NEXT: v_cmp_u_f64_e32 vcc_lo, v[0:1], v[6:7] 1232; GFX11-NEXT: v_min_f64 v[6:7], v[2:3], v[8:9] 1233; GFX11-NEXT: v_cmp_u_f64_e64 s0, v[2:3], v[8:9] 1234; GFX11-NEXT: v_min_f64 v[8:9], v[4:5], v[10:11] 1235; GFX11-NEXT: v_cmp_u_f64_e64 s1, v[4:5], v[10:11] 1236; GFX11-NEXT: v_cndmask_b32_e64 v0, v12, 0, vcc_lo 1237; GFX11-NEXT: v_cndmask_b32_e64 v1, v13, 0x7ff80000, vcc_lo 1238; GFX11-NEXT: v_cndmask_b32_e64 v2, v6, 0, s0 1239; GFX11-NEXT: v_cndmask_b32_e64 v3, v7, 0x7ff80000, s0 1240; GFX11-NEXT: v_cndmask_b32_e64 v4, v8, 0, s1 1241; GFX11-NEXT: v_cndmask_b32_e64 v5, v9, 0x7ff80000, s1 1242; GFX11-NEXT: s_setpc_b64 s[30:31] 1243; 1244; GFX12-LABEL: v_minimum_v3f64__nsz: 1245; GFX12: ; %bb.0: 1246; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 1247; GFX12-NEXT: s_wait_expcnt 0x0 1248; GFX12-NEXT: s_wait_samplecnt 0x0 1249; GFX12-NEXT: s_wait_bvhcnt 0x0 1250; GFX12-NEXT: s_wait_kmcnt 0x0 1251; GFX12-NEXT: v_minimum_f64 v[0:1], v[0:1], v[6:7] 1252; GFX12-NEXT: v_minimum_f64 v[2:3], v[2:3], v[8:9] 1253; GFX12-NEXT: v_minimum_f64 v[4:5], v[4:5], v[10:11] 1254; GFX12-NEXT: s_setpc_b64 s[30:31] 1255 %op = call nsz <3 x double> @llvm.minimum.v3f64(<3 x double> %src0, <3 x double> %src1) 1256 ret <3 x double> %op 1257} 1258 1259define <3 x double> @v_minimum_v3f64__nnan_nsz(<3 x double> %src0, <3 x double> %src1) { 1260; GFX7-LABEL: v_minimum_v3f64__nnan_nsz: 1261; GFX7: ; %bb.0: 1262; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1263; GFX7-NEXT: v_min_f64 v[0:1], v[0:1], v[6:7] 1264; GFX7-NEXT: v_min_f64 v[2:3], v[2:3], v[8:9] 1265; GFX7-NEXT: v_min_f64 v[4:5], v[4:5], v[10:11] 1266; GFX7-NEXT: s_setpc_b64 s[30:31] 1267; 1268; GFX8-LABEL: v_minimum_v3f64__nnan_nsz: 1269; GFX8: ; %bb.0: 1270; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1271; GFX8-NEXT: v_min_f64 v[0:1], v[0:1], v[6:7] 1272; GFX8-NEXT: v_min_f64 v[2:3], v[2:3], v[8:9] 1273; GFX8-NEXT: v_min_f64 v[4:5], v[4:5], v[10:11] 1274; GFX8-NEXT: s_setpc_b64 s[30:31] 1275; 1276; GFX9-LABEL: v_minimum_v3f64__nnan_nsz: 1277; GFX9: ; %bb.0: 1278; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1279; GFX9-NEXT: v_min_f64 v[0:1], v[0:1], v[6:7] 1280; GFX9-NEXT: v_min_f64 v[2:3], v[2:3], v[8:9] 1281; GFX9-NEXT: v_min_f64 v[4:5], v[4:5], v[10:11] 1282; GFX9-NEXT: s_setpc_b64 s[30:31] 1283; 1284; GFX10-LABEL: v_minimum_v3f64__nnan_nsz: 1285; GFX10: ; %bb.0: 1286; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1287; GFX10-NEXT: v_min_f64 v[0:1], v[0:1], v[6:7] 1288; GFX10-NEXT: v_min_f64 v[2:3], v[2:3], v[8:9] 1289; GFX10-NEXT: v_min_f64 v[4:5], v[4:5], v[10:11] 1290; GFX10-NEXT: s_setpc_b64 s[30:31] 1291; 1292; GFX11-LABEL: v_minimum_v3f64__nnan_nsz: 1293; GFX11: ; %bb.0: 1294; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1295; GFX11-NEXT: v_min_f64 v[0:1], v[0:1], v[6:7] 1296; GFX11-NEXT: v_min_f64 v[2:3], v[2:3], v[8:9] 1297; GFX11-NEXT: v_min_f64 v[4:5], v[4:5], v[10:11] 1298; GFX11-NEXT: s_setpc_b64 s[30:31] 1299; 1300; GFX12-LABEL: v_minimum_v3f64__nnan_nsz: 1301; GFX12: ; %bb.0: 1302; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 1303; GFX12-NEXT: s_wait_expcnt 0x0 1304; GFX12-NEXT: s_wait_samplecnt 0x0 1305; GFX12-NEXT: s_wait_bvhcnt 0x0 1306; GFX12-NEXT: s_wait_kmcnt 0x0 1307; GFX12-NEXT: v_minimum_f64 v[0:1], v[0:1], v[6:7] 1308; GFX12-NEXT: v_minimum_f64 v[2:3], v[2:3], v[8:9] 1309; GFX12-NEXT: v_minimum_f64 v[4:5], v[4:5], v[10:11] 1310; GFX12-NEXT: s_setpc_b64 s[30:31] 1311 %op = call nnan nsz <3 x double> @llvm.minimum.v3f64(<3 x double> %src0, <3 x double> %src1) 1312 ret <3 x double> %op 1313} 1314 1315define <4 x double> @v_minimum_v4f64(<4 x double> %src0, <4 x double> %src1) { 1316; GFX7-LABEL: v_minimum_v4f64: 1317; GFX7: ; %bb.0: 1318; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1319; GFX7-NEXT: v_min_f64 v[16:17], v[0:1], v[8:9] 1320; GFX7-NEXT: v_cmp_u_f64_e32 vcc, v[0:1], v[8:9] 1321; GFX7-NEXT: v_min_f64 v[8:9], v[2:3], v[10:11] 1322; GFX7-NEXT: v_cmp_u_f64_e64 s[4:5], v[2:3], v[10:11] 1323; GFX7-NEXT: v_min_f64 v[10:11], v[4:5], v[12:13] 1324; GFX7-NEXT: v_cmp_u_f64_e64 s[6:7], v[4:5], v[12:13] 1325; GFX7-NEXT: v_min_f64 v[12:13], v[6:7], v[14:15] 1326; GFX7-NEXT: v_cmp_u_f64_e64 s[8:9], v[6:7], v[14:15] 1327; GFX7-NEXT: v_mov_b32_e32 v7, 0x7ff80000 1328; GFX7-NEXT: v_cndmask_b32_e64 v0, v16, 0, vcc 1329; GFX7-NEXT: v_cndmask_b32_e32 v1, v17, v7, vcc 1330; GFX7-NEXT: v_cndmask_b32_e64 v2, v8, 0, s[4:5] 1331; GFX7-NEXT: v_cndmask_b32_e64 v3, v9, v7, s[4:5] 1332; GFX7-NEXT: v_cndmask_b32_e64 v4, v10, 0, s[6:7] 1333; GFX7-NEXT: v_cndmask_b32_e64 v5, v11, v7, s[6:7] 1334; GFX7-NEXT: v_cndmask_b32_e64 v6, v12, 0, s[8:9] 1335; GFX7-NEXT: v_cndmask_b32_e64 v7, v13, v7, s[8:9] 1336; GFX7-NEXT: s_setpc_b64 s[30:31] 1337; 1338; GFX8-LABEL: v_minimum_v4f64: 1339; GFX8: ; %bb.0: 1340; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1341; GFX8-NEXT: v_min_f64 v[16:17], v[0:1], v[8:9] 1342; GFX8-NEXT: v_cmp_u_f64_e32 vcc, v[0:1], v[8:9] 1343; GFX8-NEXT: v_min_f64 v[8:9], v[2:3], v[10:11] 1344; GFX8-NEXT: v_cmp_u_f64_e64 s[4:5], v[2:3], v[10:11] 1345; GFX8-NEXT: v_min_f64 v[10:11], v[4:5], v[12:13] 1346; GFX8-NEXT: v_cmp_u_f64_e64 s[6:7], v[4:5], v[12:13] 1347; GFX8-NEXT: v_min_f64 v[12:13], v[6:7], v[14:15] 1348; GFX8-NEXT: v_cmp_u_f64_e64 s[8:9], v[6:7], v[14:15] 1349; GFX8-NEXT: v_mov_b32_e32 v7, 0x7ff80000 1350; GFX8-NEXT: v_cndmask_b32_e64 v0, v16, 0, vcc 1351; GFX8-NEXT: v_cndmask_b32_e32 v1, v17, v7, vcc 1352; GFX8-NEXT: v_cndmask_b32_e64 v2, v8, 0, s[4:5] 1353; GFX8-NEXT: v_cndmask_b32_e64 v3, v9, v7, s[4:5] 1354; GFX8-NEXT: v_cndmask_b32_e64 v4, v10, 0, s[6:7] 1355; GFX8-NEXT: v_cndmask_b32_e64 v5, v11, v7, s[6:7] 1356; GFX8-NEXT: v_cndmask_b32_e64 v6, v12, 0, s[8:9] 1357; GFX8-NEXT: v_cndmask_b32_e64 v7, v13, v7, s[8:9] 1358; GFX8-NEXT: s_setpc_b64 s[30:31] 1359; 1360; GFX900-LABEL: v_minimum_v4f64: 1361; GFX900: ; %bb.0: 1362; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1363; GFX900-NEXT: v_min_f64 v[16:17], v[0:1], v[8:9] 1364; GFX900-NEXT: v_cmp_u_f64_e32 vcc, v[0:1], v[8:9] 1365; GFX900-NEXT: v_min_f64 v[8:9], v[2:3], v[10:11] 1366; GFX900-NEXT: v_cmp_u_f64_e64 s[4:5], v[2:3], v[10:11] 1367; GFX900-NEXT: v_min_f64 v[10:11], v[4:5], v[12:13] 1368; GFX900-NEXT: v_cmp_u_f64_e64 s[6:7], v[4:5], v[12:13] 1369; GFX900-NEXT: v_min_f64 v[12:13], v[6:7], v[14:15] 1370; GFX900-NEXT: v_cmp_u_f64_e64 s[8:9], v[6:7], v[14:15] 1371; GFX900-NEXT: v_mov_b32_e32 v7, 0x7ff80000 1372; GFX900-NEXT: v_cndmask_b32_e64 v0, v16, 0, vcc 1373; GFX900-NEXT: v_cndmask_b32_e32 v1, v17, v7, vcc 1374; GFX900-NEXT: v_cndmask_b32_e64 v2, v8, 0, s[4:5] 1375; GFX900-NEXT: v_cndmask_b32_e64 v3, v9, v7, s[4:5] 1376; GFX900-NEXT: v_cndmask_b32_e64 v4, v10, 0, s[6:7] 1377; GFX900-NEXT: v_cndmask_b32_e64 v5, v11, v7, s[6:7] 1378; GFX900-NEXT: v_cndmask_b32_e64 v6, v12, 0, s[8:9] 1379; GFX900-NEXT: v_cndmask_b32_e64 v7, v13, v7, s[8:9] 1380; GFX900-NEXT: s_setpc_b64 s[30:31] 1381; 1382; GFX950-LABEL: v_minimum_v4f64: 1383; GFX950: ; %bb.0: 1384; GFX950-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1385; GFX950-NEXT: v_min_f64 v[16:17], v[0:1], v[8:9] 1386; GFX950-NEXT: v_cmp_u_f64_e32 vcc, v[0:1], v[8:9] 1387; GFX950-NEXT: v_min_f64 v[8:9], v[2:3], v[10:11] 1388; GFX950-NEXT: s_nop 0 1389; GFX950-NEXT: v_cndmask_b32_e64 v0, v16, 0, vcc 1390; GFX950-NEXT: v_mov_b32_e32 v16, 0x7ff80000 1391; GFX950-NEXT: v_cndmask_b32_e32 v1, v17, v16, vcc 1392; GFX950-NEXT: v_cmp_u_f64_e32 vcc, v[2:3], v[10:11] 1393; GFX950-NEXT: s_nop 1 1394; GFX950-NEXT: v_cndmask_b32_e64 v2, v8, 0, vcc 1395; GFX950-NEXT: v_cndmask_b32_e32 v3, v9, v16, vcc 1396; GFX950-NEXT: v_min_f64 v[8:9], v[4:5], v[12:13] 1397; GFX950-NEXT: v_cmp_u_f64_e32 vcc, v[4:5], v[12:13] 1398; GFX950-NEXT: s_nop 1 1399; GFX950-NEXT: v_cndmask_b32_e64 v4, v8, 0, vcc 1400; GFX950-NEXT: v_cndmask_b32_e32 v5, v9, v16, vcc 1401; GFX950-NEXT: v_min_f64 v[8:9], v[6:7], v[14:15] 1402; GFX950-NEXT: v_cmp_u_f64_e32 vcc, v[6:7], v[14:15] 1403; GFX950-NEXT: s_nop 1 1404; GFX950-NEXT: v_cndmask_b32_e64 v6, v8, 0, vcc 1405; GFX950-NEXT: v_cndmask_b32_e32 v7, v9, v16, vcc 1406; GFX950-NEXT: s_setpc_b64 s[30:31] 1407; 1408; GFX10-LABEL: v_minimum_v4f64: 1409; GFX10: ; %bb.0: 1410; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1411; GFX10-NEXT: v_min_f64 v[16:17], v[0:1], v[8:9] 1412; GFX10-NEXT: v_cmp_u_f64_e32 vcc_lo, v[0:1], v[8:9] 1413; GFX10-NEXT: v_min_f64 v[8:9], v[2:3], v[10:11] 1414; GFX10-NEXT: v_cmp_u_f64_e64 s4, v[2:3], v[10:11] 1415; GFX10-NEXT: v_min_f64 v[10:11], v[4:5], v[12:13] 1416; GFX10-NEXT: v_cmp_u_f64_e64 s5, v[4:5], v[12:13] 1417; GFX10-NEXT: v_min_f64 v[12:13], v[6:7], v[14:15] 1418; GFX10-NEXT: v_cmp_u_f64_e64 s6, v[6:7], v[14:15] 1419; GFX10-NEXT: v_cndmask_b32_e64 v0, v16, 0, vcc_lo 1420; GFX10-NEXT: v_cndmask_b32_e64 v1, v17, 0x7ff80000, vcc_lo 1421; GFX10-NEXT: v_cndmask_b32_e64 v2, v8, 0, s4 1422; GFX10-NEXT: v_cndmask_b32_e64 v3, v9, 0x7ff80000, s4 1423; GFX10-NEXT: v_cndmask_b32_e64 v4, v10, 0, s5 1424; GFX10-NEXT: v_cndmask_b32_e64 v5, v11, 0x7ff80000, s5 1425; GFX10-NEXT: v_cndmask_b32_e64 v6, v12, 0, s6 1426; GFX10-NEXT: v_cndmask_b32_e64 v7, v13, 0x7ff80000, s6 1427; GFX10-NEXT: s_setpc_b64 s[30:31] 1428; 1429; GFX11-LABEL: v_minimum_v4f64: 1430; GFX11: ; %bb.0: 1431; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1432; GFX11-NEXT: v_min_f64 v[16:17], v[0:1], v[8:9] 1433; GFX11-NEXT: v_cmp_u_f64_e32 vcc_lo, v[0:1], v[8:9] 1434; GFX11-NEXT: v_min_f64 v[8:9], v[2:3], v[10:11] 1435; GFX11-NEXT: v_cmp_u_f64_e64 s0, v[2:3], v[10:11] 1436; GFX11-NEXT: v_min_f64 v[10:11], v[4:5], v[12:13] 1437; GFX11-NEXT: v_cmp_u_f64_e64 s1, v[4:5], v[12:13] 1438; GFX11-NEXT: v_min_f64 v[12:13], v[6:7], v[14:15] 1439; GFX11-NEXT: v_cmp_u_f64_e64 s2, v[6:7], v[14:15] 1440; GFX11-NEXT: v_cndmask_b32_e64 v0, v16, 0, vcc_lo 1441; GFX11-NEXT: v_cndmask_b32_e64 v1, v17, 0x7ff80000, vcc_lo 1442; GFX11-NEXT: v_cndmask_b32_e64 v2, v8, 0, s0 1443; GFX11-NEXT: v_cndmask_b32_e64 v3, v9, 0x7ff80000, s0 1444; GFX11-NEXT: v_cndmask_b32_e64 v4, v10, 0, s1 1445; GFX11-NEXT: v_cndmask_b32_e64 v5, v11, 0x7ff80000, s1 1446; GFX11-NEXT: v_cndmask_b32_e64 v6, v12, 0, s2 1447; GFX11-NEXT: v_cndmask_b32_e64 v7, v13, 0x7ff80000, s2 1448; GFX11-NEXT: s_setpc_b64 s[30:31] 1449; 1450; GFX12-LABEL: v_minimum_v4f64: 1451; GFX12: ; %bb.0: 1452; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 1453; GFX12-NEXT: s_wait_expcnt 0x0 1454; GFX12-NEXT: s_wait_samplecnt 0x0 1455; GFX12-NEXT: s_wait_bvhcnt 0x0 1456; GFX12-NEXT: s_wait_kmcnt 0x0 1457; GFX12-NEXT: v_minimum_f64 v[0:1], v[0:1], v[8:9] 1458; GFX12-NEXT: v_minimum_f64 v[2:3], v[2:3], v[10:11] 1459; GFX12-NEXT: v_minimum_f64 v[4:5], v[4:5], v[12:13] 1460; GFX12-NEXT: v_minimum_f64 v[6:7], v[6:7], v[14:15] 1461; GFX12-NEXT: s_setpc_b64 s[30:31] 1462 %op = call <4 x double> @llvm.minimum.v4f64(<4 x double> %src0, <4 x double> %src1) 1463 ret <4 x double> %op 1464} 1465 1466define <4 x double> @v_minimum_v4f64__nnan(<4 x double> %src0, <4 x double> %src1) { 1467; GFX7-LABEL: v_minimum_v4f64__nnan: 1468; GFX7: ; %bb.0: 1469; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1470; GFX7-NEXT: v_min_f64 v[0:1], v[0:1], v[8:9] 1471; GFX7-NEXT: v_min_f64 v[2:3], v[2:3], v[10:11] 1472; GFX7-NEXT: v_min_f64 v[4:5], v[4:5], v[12:13] 1473; GFX7-NEXT: v_min_f64 v[6:7], v[6:7], v[14:15] 1474; GFX7-NEXT: s_setpc_b64 s[30:31] 1475; 1476; GFX8-LABEL: v_minimum_v4f64__nnan: 1477; GFX8: ; %bb.0: 1478; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1479; GFX8-NEXT: v_min_f64 v[0:1], v[0:1], v[8:9] 1480; GFX8-NEXT: v_min_f64 v[2:3], v[2:3], v[10:11] 1481; GFX8-NEXT: v_min_f64 v[4:5], v[4:5], v[12:13] 1482; GFX8-NEXT: v_min_f64 v[6:7], v[6:7], v[14:15] 1483; GFX8-NEXT: s_setpc_b64 s[30:31] 1484; 1485; GFX9-LABEL: v_minimum_v4f64__nnan: 1486; GFX9: ; %bb.0: 1487; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1488; GFX9-NEXT: v_min_f64 v[0:1], v[0:1], v[8:9] 1489; GFX9-NEXT: v_min_f64 v[2:3], v[2:3], v[10:11] 1490; GFX9-NEXT: v_min_f64 v[4:5], v[4:5], v[12:13] 1491; GFX9-NEXT: v_min_f64 v[6:7], v[6:7], v[14:15] 1492; GFX9-NEXT: s_setpc_b64 s[30:31] 1493; 1494; GFX10-LABEL: v_minimum_v4f64__nnan: 1495; GFX10: ; %bb.0: 1496; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1497; GFX10-NEXT: v_min_f64 v[0:1], v[0:1], v[8:9] 1498; GFX10-NEXT: v_min_f64 v[2:3], v[2:3], v[10:11] 1499; GFX10-NEXT: v_min_f64 v[4:5], v[4:5], v[12:13] 1500; GFX10-NEXT: v_min_f64 v[6:7], v[6:7], v[14:15] 1501; GFX10-NEXT: s_setpc_b64 s[30:31] 1502; 1503; GFX11-LABEL: v_minimum_v4f64__nnan: 1504; GFX11: ; %bb.0: 1505; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1506; GFX11-NEXT: v_min_f64 v[0:1], v[0:1], v[8:9] 1507; GFX11-NEXT: v_min_f64 v[2:3], v[2:3], v[10:11] 1508; GFX11-NEXT: v_min_f64 v[4:5], v[4:5], v[12:13] 1509; GFX11-NEXT: v_min_f64 v[6:7], v[6:7], v[14:15] 1510; GFX11-NEXT: s_setpc_b64 s[30:31] 1511; 1512; GFX12-LABEL: v_minimum_v4f64__nnan: 1513; GFX12: ; %bb.0: 1514; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 1515; GFX12-NEXT: s_wait_expcnt 0x0 1516; GFX12-NEXT: s_wait_samplecnt 0x0 1517; GFX12-NEXT: s_wait_bvhcnt 0x0 1518; GFX12-NEXT: s_wait_kmcnt 0x0 1519; GFX12-NEXT: v_minimum_f64 v[0:1], v[0:1], v[8:9] 1520; GFX12-NEXT: v_minimum_f64 v[2:3], v[2:3], v[10:11] 1521; GFX12-NEXT: v_minimum_f64 v[4:5], v[4:5], v[12:13] 1522; GFX12-NEXT: v_minimum_f64 v[6:7], v[6:7], v[14:15] 1523; GFX12-NEXT: s_setpc_b64 s[30:31] 1524 %op = call nnan <4 x double> @llvm.minimum.v4f64(<4 x double> %src0, <4 x double> %src1) 1525 ret <4 x double> %op 1526} 1527 1528define <4 x double> @v_minimum_v4f64__nsz(<4 x double> %src0, <4 x double> %src1) { 1529; GFX7-LABEL: v_minimum_v4f64__nsz: 1530; GFX7: ; %bb.0: 1531; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1532; GFX7-NEXT: v_min_f64 v[16:17], v[0:1], v[8:9] 1533; GFX7-NEXT: v_cmp_u_f64_e32 vcc, v[0:1], v[8:9] 1534; GFX7-NEXT: v_min_f64 v[8:9], v[2:3], v[10:11] 1535; GFX7-NEXT: v_cmp_u_f64_e64 s[4:5], v[2:3], v[10:11] 1536; GFX7-NEXT: v_min_f64 v[10:11], v[4:5], v[12:13] 1537; GFX7-NEXT: v_cmp_u_f64_e64 s[6:7], v[4:5], v[12:13] 1538; GFX7-NEXT: v_min_f64 v[12:13], v[6:7], v[14:15] 1539; GFX7-NEXT: v_cmp_u_f64_e64 s[8:9], v[6:7], v[14:15] 1540; GFX7-NEXT: v_mov_b32_e32 v7, 0x7ff80000 1541; GFX7-NEXT: v_cndmask_b32_e64 v0, v16, 0, vcc 1542; GFX7-NEXT: v_cndmask_b32_e32 v1, v17, v7, vcc 1543; GFX7-NEXT: v_cndmask_b32_e64 v2, v8, 0, s[4:5] 1544; GFX7-NEXT: v_cndmask_b32_e64 v3, v9, v7, s[4:5] 1545; GFX7-NEXT: v_cndmask_b32_e64 v4, v10, 0, s[6:7] 1546; GFX7-NEXT: v_cndmask_b32_e64 v5, v11, v7, s[6:7] 1547; GFX7-NEXT: v_cndmask_b32_e64 v6, v12, 0, s[8:9] 1548; GFX7-NEXT: v_cndmask_b32_e64 v7, v13, v7, s[8:9] 1549; GFX7-NEXT: s_setpc_b64 s[30:31] 1550; 1551; GFX8-LABEL: v_minimum_v4f64__nsz: 1552; GFX8: ; %bb.0: 1553; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1554; GFX8-NEXT: v_min_f64 v[16:17], v[0:1], v[8:9] 1555; GFX8-NEXT: v_cmp_u_f64_e32 vcc, v[0:1], v[8:9] 1556; GFX8-NEXT: v_min_f64 v[8:9], v[2:3], v[10:11] 1557; GFX8-NEXT: v_cmp_u_f64_e64 s[4:5], v[2:3], v[10:11] 1558; GFX8-NEXT: v_min_f64 v[10:11], v[4:5], v[12:13] 1559; GFX8-NEXT: v_cmp_u_f64_e64 s[6:7], v[4:5], v[12:13] 1560; GFX8-NEXT: v_min_f64 v[12:13], v[6:7], v[14:15] 1561; GFX8-NEXT: v_cmp_u_f64_e64 s[8:9], v[6:7], v[14:15] 1562; GFX8-NEXT: v_mov_b32_e32 v7, 0x7ff80000 1563; GFX8-NEXT: v_cndmask_b32_e64 v0, v16, 0, vcc 1564; GFX8-NEXT: v_cndmask_b32_e32 v1, v17, v7, vcc 1565; GFX8-NEXT: v_cndmask_b32_e64 v2, v8, 0, s[4:5] 1566; GFX8-NEXT: v_cndmask_b32_e64 v3, v9, v7, s[4:5] 1567; GFX8-NEXT: v_cndmask_b32_e64 v4, v10, 0, s[6:7] 1568; GFX8-NEXT: v_cndmask_b32_e64 v5, v11, v7, s[6:7] 1569; GFX8-NEXT: v_cndmask_b32_e64 v6, v12, 0, s[8:9] 1570; GFX8-NEXT: v_cndmask_b32_e64 v7, v13, v7, s[8:9] 1571; GFX8-NEXT: s_setpc_b64 s[30:31] 1572; 1573; GFX900-LABEL: v_minimum_v4f64__nsz: 1574; GFX900: ; %bb.0: 1575; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1576; GFX900-NEXT: v_min_f64 v[16:17], v[0:1], v[8:9] 1577; GFX900-NEXT: v_cmp_u_f64_e32 vcc, v[0:1], v[8:9] 1578; GFX900-NEXT: v_min_f64 v[8:9], v[2:3], v[10:11] 1579; GFX900-NEXT: v_cmp_u_f64_e64 s[4:5], v[2:3], v[10:11] 1580; GFX900-NEXT: v_min_f64 v[10:11], v[4:5], v[12:13] 1581; GFX900-NEXT: v_cmp_u_f64_e64 s[6:7], v[4:5], v[12:13] 1582; GFX900-NEXT: v_min_f64 v[12:13], v[6:7], v[14:15] 1583; GFX900-NEXT: v_cmp_u_f64_e64 s[8:9], v[6:7], v[14:15] 1584; GFX900-NEXT: v_mov_b32_e32 v7, 0x7ff80000 1585; GFX900-NEXT: v_cndmask_b32_e64 v0, v16, 0, vcc 1586; GFX900-NEXT: v_cndmask_b32_e32 v1, v17, v7, vcc 1587; GFX900-NEXT: v_cndmask_b32_e64 v2, v8, 0, s[4:5] 1588; GFX900-NEXT: v_cndmask_b32_e64 v3, v9, v7, s[4:5] 1589; GFX900-NEXT: v_cndmask_b32_e64 v4, v10, 0, s[6:7] 1590; GFX900-NEXT: v_cndmask_b32_e64 v5, v11, v7, s[6:7] 1591; GFX900-NEXT: v_cndmask_b32_e64 v6, v12, 0, s[8:9] 1592; GFX900-NEXT: v_cndmask_b32_e64 v7, v13, v7, s[8:9] 1593; GFX900-NEXT: s_setpc_b64 s[30:31] 1594; 1595; GFX950-LABEL: v_minimum_v4f64__nsz: 1596; GFX950: ; %bb.0: 1597; GFX950-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1598; GFX950-NEXT: v_min_f64 v[16:17], v[0:1], v[8:9] 1599; GFX950-NEXT: v_cmp_u_f64_e32 vcc, v[0:1], v[8:9] 1600; GFX950-NEXT: v_min_f64 v[8:9], v[2:3], v[10:11] 1601; GFX950-NEXT: s_nop 0 1602; GFX950-NEXT: v_cndmask_b32_e64 v0, v16, 0, vcc 1603; GFX950-NEXT: v_mov_b32_e32 v16, 0x7ff80000 1604; GFX950-NEXT: v_cndmask_b32_e32 v1, v17, v16, vcc 1605; GFX950-NEXT: v_cmp_u_f64_e32 vcc, v[2:3], v[10:11] 1606; GFX950-NEXT: s_nop 1 1607; GFX950-NEXT: v_cndmask_b32_e64 v2, v8, 0, vcc 1608; GFX950-NEXT: v_cndmask_b32_e32 v3, v9, v16, vcc 1609; GFX950-NEXT: v_min_f64 v[8:9], v[4:5], v[12:13] 1610; GFX950-NEXT: v_cmp_u_f64_e32 vcc, v[4:5], v[12:13] 1611; GFX950-NEXT: s_nop 1 1612; GFX950-NEXT: v_cndmask_b32_e64 v4, v8, 0, vcc 1613; GFX950-NEXT: v_cndmask_b32_e32 v5, v9, v16, vcc 1614; GFX950-NEXT: v_min_f64 v[8:9], v[6:7], v[14:15] 1615; GFX950-NEXT: v_cmp_u_f64_e32 vcc, v[6:7], v[14:15] 1616; GFX950-NEXT: s_nop 1 1617; GFX950-NEXT: v_cndmask_b32_e64 v6, v8, 0, vcc 1618; GFX950-NEXT: v_cndmask_b32_e32 v7, v9, v16, vcc 1619; GFX950-NEXT: s_setpc_b64 s[30:31] 1620; 1621; GFX10-LABEL: v_minimum_v4f64__nsz: 1622; GFX10: ; %bb.0: 1623; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1624; GFX10-NEXT: v_min_f64 v[16:17], v[0:1], v[8:9] 1625; GFX10-NEXT: v_cmp_u_f64_e32 vcc_lo, v[0:1], v[8:9] 1626; GFX10-NEXT: v_min_f64 v[8:9], v[2:3], v[10:11] 1627; GFX10-NEXT: v_cmp_u_f64_e64 s4, v[2:3], v[10:11] 1628; GFX10-NEXT: v_min_f64 v[10:11], v[4:5], v[12:13] 1629; GFX10-NEXT: v_cmp_u_f64_e64 s5, v[4:5], v[12:13] 1630; GFX10-NEXT: v_min_f64 v[12:13], v[6:7], v[14:15] 1631; GFX10-NEXT: v_cmp_u_f64_e64 s6, v[6:7], v[14:15] 1632; GFX10-NEXT: v_cndmask_b32_e64 v0, v16, 0, vcc_lo 1633; GFX10-NEXT: v_cndmask_b32_e64 v1, v17, 0x7ff80000, vcc_lo 1634; GFX10-NEXT: v_cndmask_b32_e64 v2, v8, 0, s4 1635; GFX10-NEXT: v_cndmask_b32_e64 v3, v9, 0x7ff80000, s4 1636; GFX10-NEXT: v_cndmask_b32_e64 v4, v10, 0, s5 1637; GFX10-NEXT: v_cndmask_b32_e64 v5, v11, 0x7ff80000, s5 1638; GFX10-NEXT: v_cndmask_b32_e64 v6, v12, 0, s6 1639; GFX10-NEXT: v_cndmask_b32_e64 v7, v13, 0x7ff80000, s6 1640; GFX10-NEXT: s_setpc_b64 s[30:31] 1641; 1642; GFX11-LABEL: v_minimum_v4f64__nsz: 1643; GFX11: ; %bb.0: 1644; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1645; GFX11-NEXT: v_min_f64 v[16:17], v[0:1], v[8:9] 1646; GFX11-NEXT: v_cmp_u_f64_e32 vcc_lo, v[0:1], v[8:9] 1647; GFX11-NEXT: v_min_f64 v[8:9], v[2:3], v[10:11] 1648; GFX11-NEXT: v_cmp_u_f64_e64 s0, v[2:3], v[10:11] 1649; GFX11-NEXT: v_min_f64 v[10:11], v[4:5], v[12:13] 1650; GFX11-NEXT: v_cmp_u_f64_e64 s1, v[4:5], v[12:13] 1651; GFX11-NEXT: v_min_f64 v[12:13], v[6:7], v[14:15] 1652; GFX11-NEXT: v_cmp_u_f64_e64 s2, v[6:7], v[14:15] 1653; GFX11-NEXT: v_cndmask_b32_e64 v0, v16, 0, vcc_lo 1654; GFX11-NEXT: v_cndmask_b32_e64 v1, v17, 0x7ff80000, vcc_lo 1655; GFX11-NEXT: v_cndmask_b32_e64 v2, v8, 0, s0 1656; GFX11-NEXT: v_cndmask_b32_e64 v3, v9, 0x7ff80000, s0 1657; GFX11-NEXT: v_cndmask_b32_e64 v4, v10, 0, s1 1658; GFX11-NEXT: v_cndmask_b32_e64 v5, v11, 0x7ff80000, s1 1659; GFX11-NEXT: v_cndmask_b32_e64 v6, v12, 0, s2 1660; GFX11-NEXT: v_cndmask_b32_e64 v7, v13, 0x7ff80000, s2 1661; GFX11-NEXT: s_setpc_b64 s[30:31] 1662; 1663; GFX12-LABEL: v_minimum_v4f64__nsz: 1664; GFX12: ; %bb.0: 1665; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 1666; GFX12-NEXT: s_wait_expcnt 0x0 1667; GFX12-NEXT: s_wait_samplecnt 0x0 1668; GFX12-NEXT: s_wait_bvhcnt 0x0 1669; GFX12-NEXT: s_wait_kmcnt 0x0 1670; GFX12-NEXT: v_minimum_f64 v[0:1], v[0:1], v[8:9] 1671; GFX12-NEXT: v_minimum_f64 v[2:3], v[2:3], v[10:11] 1672; GFX12-NEXT: v_minimum_f64 v[4:5], v[4:5], v[12:13] 1673; GFX12-NEXT: v_minimum_f64 v[6:7], v[6:7], v[14:15] 1674; GFX12-NEXT: s_setpc_b64 s[30:31] 1675 %op = call nsz <4 x double> @llvm.minimum.v4f64(<4 x double> %src0, <4 x double> %src1) 1676 ret <4 x double> %op 1677} 1678 1679define <4 x double> @v_minimum_v4f64__nnan_nsz(<4 x double> %src0, <4 x double> %src1) { 1680; GFX7-LABEL: v_minimum_v4f64__nnan_nsz: 1681; GFX7: ; %bb.0: 1682; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1683; GFX7-NEXT: v_min_f64 v[0:1], v[0:1], v[8:9] 1684; GFX7-NEXT: v_min_f64 v[2:3], v[2:3], v[10:11] 1685; GFX7-NEXT: v_min_f64 v[4:5], v[4:5], v[12:13] 1686; GFX7-NEXT: v_min_f64 v[6:7], v[6:7], v[14:15] 1687; GFX7-NEXT: s_setpc_b64 s[30:31] 1688; 1689; GFX8-LABEL: v_minimum_v4f64__nnan_nsz: 1690; GFX8: ; %bb.0: 1691; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1692; GFX8-NEXT: v_min_f64 v[0:1], v[0:1], v[8:9] 1693; GFX8-NEXT: v_min_f64 v[2:3], v[2:3], v[10:11] 1694; GFX8-NEXT: v_min_f64 v[4:5], v[4:5], v[12:13] 1695; GFX8-NEXT: v_min_f64 v[6:7], v[6:7], v[14:15] 1696; GFX8-NEXT: s_setpc_b64 s[30:31] 1697; 1698; GFX9-LABEL: v_minimum_v4f64__nnan_nsz: 1699; GFX9: ; %bb.0: 1700; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1701; GFX9-NEXT: v_min_f64 v[0:1], v[0:1], v[8:9] 1702; GFX9-NEXT: v_min_f64 v[2:3], v[2:3], v[10:11] 1703; GFX9-NEXT: v_min_f64 v[4:5], v[4:5], v[12:13] 1704; GFX9-NEXT: v_min_f64 v[6:7], v[6:7], v[14:15] 1705; GFX9-NEXT: s_setpc_b64 s[30:31] 1706; 1707; GFX10-LABEL: v_minimum_v4f64__nnan_nsz: 1708; GFX10: ; %bb.0: 1709; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1710; GFX10-NEXT: v_min_f64 v[0:1], v[0:1], v[8:9] 1711; GFX10-NEXT: v_min_f64 v[2:3], v[2:3], v[10:11] 1712; GFX10-NEXT: v_min_f64 v[4:5], v[4:5], v[12:13] 1713; GFX10-NEXT: v_min_f64 v[6:7], v[6:7], v[14:15] 1714; GFX10-NEXT: s_setpc_b64 s[30:31] 1715; 1716; GFX11-LABEL: v_minimum_v4f64__nnan_nsz: 1717; GFX11: ; %bb.0: 1718; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1719; GFX11-NEXT: v_min_f64 v[0:1], v[0:1], v[8:9] 1720; GFX11-NEXT: v_min_f64 v[2:3], v[2:3], v[10:11] 1721; GFX11-NEXT: v_min_f64 v[4:5], v[4:5], v[12:13] 1722; GFX11-NEXT: v_min_f64 v[6:7], v[6:7], v[14:15] 1723; GFX11-NEXT: s_setpc_b64 s[30:31] 1724; 1725; GFX12-LABEL: v_minimum_v4f64__nnan_nsz: 1726; GFX12: ; %bb.0: 1727; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 1728; GFX12-NEXT: s_wait_expcnt 0x0 1729; GFX12-NEXT: s_wait_samplecnt 0x0 1730; GFX12-NEXT: s_wait_bvhcnt 0x0 1731; GFX12-NEXT: s_wait_kmcnt 0x0 1732; GFX12-NEXT: v_minimum_f64 v[0:1], v[0:1], v[8:9] 1733; GFX12-NEXT: v_minimum_f64 v[2:3], v[2:3], v[10:11] 1734; GFX12-NEXT: v_minimum_f64 v[4:5], v[4:5], v[12:13] 1735; GFX12-NEXT: v_minimum_f64 v[6:7], v[6:7], v[14:15] 1736; GFX12-NEXT: s_setpc_b64 s[30:31] 1737 %op = call nnan nsz <4 x double> @llvm.minimum.v4f64(<4 x double> %src0, <4 x double> %src1) 1738 ret <4 x double> %op 1739} 1740 1741define <8 x double> @v_minimum_v8f64(<8 x double> %src0, <8 x double> %src1) { 1742; GFX7-LABEL: v_minimum_v8f64: 1743; GFX7: ; %bb.0: 1744; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1745; GFX7-NEXT: buffer_load_dword v31, off, s[0:3], s32 1746; GFX7-NEXT: v_min_f64 v[32:33], v[2:3], v[18:19] 1747; GFX7-NEXT: v_cmp_u_f64_e32 vcc, v[2:3], v[18:19] 1748; GFX7-NEXT: v_min_f64 v[18:19], v[4:5], v[20:21] 1749; GFX7-NEXT: v_cmp_u_f64_e64 s[4:5], v[4:5], v[20:21] 1750; GFX7-NEXT: v_min_f64 v[2:3], v[0:1], v[16:17] 1751; GFX7-NEXT: v_cmp_u_f64_e64 s[8:9], v[0:1], v[16:17] 1752; GFX7-NEXT: v_mov_b32_e32 v34, 0x7ff80000 1753; GFX7-NEXT: v_min_f64 v[20:21], v[6:7], v[22:23] 1754; GFX7-NEXT: v_cmp_u_f64_e64 s[6:7], v[6:7], v[22:23] 1755; GFX7-NEXT: v_min_f64 v[16:17], v[8:9], v[24:25] 1756; GFX7-NEXT: v_cmp_u_f64_e64 s[10:11], v[8:9], v[24:25] 1757; GFX7-NEXT: v_min_f64 v[22:23], v[10:11], v[26:27] 1758; GFX7-NEXT: v_cmp_u_f64_e64 s[12:13], v[10:11], v[26:27] 1759; GFX7-NEXT: v_min_f64 v[24:25], v[12:13], v[28:29] 1760; GFX7-NEXT: v_cmp_u_f64_e64 s[14:15], v[12:13], v[28:29] 1761; GFX7-NEXT: v_cndmask_b32_e64 v0, v2, 0, s[8:9] 1762; GFX7-NEXT: v_cndmask_b32_e64 v1, v3, v34, s[8:9] 1763; GFX7-NEXT: v_cndmask_b32_e64 v2, v32, 0, vcc 1764; GFX7-NEXT: v_cndmask_b32_e32 v3, v33, v34, vcc 1765; GFX7-NEXT: v_cndmask_b32_e64 v4, v18, 0, s[4:5] 1766; GFX7-NEXT: v_cndmask_b32_e64 v5, v19, v34, s[4:5] 1767; GFX7-NEXT: v_cndmask_b32_e64 v6, v20, 0, s[6:7] 1768; GFX7-NEXT: v_cndmask_b32_e64 v7, v21, v34, s[6:7] 1769; GFX7-NEXT: v_cndmask_b32_e64 v8, v16, 0, s[10:11] 1770; GFX7-NEXT: v_cndmask_b32_e64 v9, v17, v34, s[10:11] 1771; GFX7-NEXT: v_cndmask_b32_e64 v10, v22, 0, s[12:13] 1772; GFX7-NEXT: v_cndmask_b32_e64 v11, v23, v34, s[12:13] 1773; GFX7-NEXT: v_cndmask_b32_e64 v12, v24, 0, s[14:15] 1774; GFX7-NEXT: v_cndmask_b32_e64 v13, v25, v34, s[14:15] 1775; GFX7-NEXT: s_waitcnt vmcnt(0) 1776; GFX7-NEXT: v_min_f64 v[18:19], v[14:15], v[30:31] 1777; GFX7-NEXT: v_cmp_u_f64_e32 vcc, v[14:15], v[30:31] 1778; GFX7-NEXT: v_cndmask_b32_e64 v14, v18, 0, vcc 1779; GFX7-NEXT: v_cndmask_b32_e32 v15, v19, v34, vcc 1780; GFX7-NEXT: s_setpc_b64 s[30:31] 1781; 1782; GFX8-LABEL: v_minimum_v8f64: 1783; GFX8: ; %bb.0: 1784; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1785; GFX8-NEXT: buffer_load_dword v31, off, s[0:3], s32 1786; GFX8-NEXT: v_min_f64 v[32:33], v[2:3], v[18:19] 1787; GFX8-NEXT: v_cmp_u_f64_e32 vcc, v[2:3], v[18:19] 1788; GFX8-NEXT: v_min_f64 v[18:19], v[4:5], v[20:21] 1789; GFX8-NEXT: v_cmp_u_f64_e64 s[4:5], v[4:5], v[20:21] 1790; GFX8-NEXT: v_min_f64 v[2:3], v[0:1], v[16:17] 1791; GFX8-NEXT: v_cmp_u_f64_e64 s[8:9], v[0:1], v[16:17] 1792; GFX8-NEXT: v_mov_b32_e32 v34, 0x7ff80000 1793; GFX8-NEXT: v_min_f64 v[20:21], v[6:7], v[22:23] 1794; GFX8-NEXT: v_cmp_u_f64_e64 s[6:7], v[6:7], v[22:23] 1795; GFX8-NEXT: v_min_f64 v[16:17], v[8:9], v[24:25] 1796; GFX8-NEXT: v_cmp_u_f64_e64 s[10:11], v[8:9], v[24:25] 1797; GFX8-NEXT: v_min_f64 v[22:23], v[10:11], v[26:27] 1798; GFX8-NEXT: v_cmp_u_f64_e64 s[12:13], v[10:11], v[26:27] 1799; GFX8-NEXT: v_min_f64 v[24:25], v[12:13], v[28:29] 1800; GFX8-NEXT: v_cmp_u_f64_e64 s[14:15], v[12:13], v[28:29] 1801; GFX8-NEXT: v_cndmask_b32_e64 v0, v2, 0, s[8:9] 1802; GFX8-NEXT: v_cndmask_b32_e64 v1, v3, v34, s[8:9] 1803; GFX8-NEXT: v_cndmask_b32_e64 v2, v32, 0, vcc 1804; GFX8-NEXT: v_cndmask_b32_e32 v3, v33, v34, vcc 1805; GFX8-NEXT: v_cndmask_b32_e64 v4, v18, 0, s[4:5] 1806; GFX8-NEXT: v_cndmask_b32_e64 v5, v19, v34, s[4:5] 1807; GFX8-NEXT: v_cndmask_b32_e64 v6, v20, 0, s[6:7] 1808; GFX8-NEXT: v_cndmask_b32_e64 v7, v21, v34, s[6:7] 1809; GFX8-NEXT: v_cndmask_b32_e64 v8, v16, 0, s[10:11] 1810; GFX8-NEXT: v_cndmask_b32_e64 v9, v17, v34, s[10:11] 1811; GFX8-NEXT: v_cndmask_b32_e64 v10, v22, 0, s[12:13] 1812; GFX8-NEXT: v_cndmask_b32_e64 v11, v23, v34, s[12:13] 1813; GFX8-NEXT: v_cndmask_b32_e64 v12, v24, 0, s[14:15] 1814; GFX8-NEXT: v_cndmask_b32_e64 v13, v25, v34, s[14:15] 1815; GFX8-NEXT: s_waitcnt vmcnt(0) 1816; GFX8-NEXT: v_min_f64 v[18:19], v[14:15], v[30:31] 1817; GFX8-NEXT: v_cmp_u_f64_e32 vcc, v[14:15], v[30:31] 1818; GFX8-NEXT: v_cndmask_b32_e64 v14, v18, 0, vcc 1819; GFX8-NEXT: v_cndmask_b32_e32 v15, v19, v34, vcc 1820; GFX8-NEXT: s_setpc_b64 s[30:31] 1821; 1822; GFX900-LABEL: v_minimum_v8f64: 1823; GFX900: ; %bb.0: 1824; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1825; GFX900-NEXT: buffer_load_dword v31, off, s[0:3], s32 1826; GFX900-NEXT: v_min_f64 v[32:33], v[2:3], v[18:19] 1827; GFX900-NEXT: v_cmp_u_f64_e32 vcc, v[2:3], v[18:19] 1828; GFX900-NEXT: v_min_f64 v[18:19], v[4:5], v[20:21] 1829; GFX900-NEXT: v_cmp_u_f64_e64 s[4:5], v[4:5], v[20:21] 1830; GFX900-NEXT: v_min_f64 v[2:3], v[0:1], v[16:17] 1831; GFX900-NEXT: v_cmp_u_f64_e64 s[8:9], v[0:1], v[16:17] 1832; GFX900-NEXT: v_mov_b32_e32 v34, 0x7ff80000 1833; GFX900-NEXT: v_min_f64 v[20:21], v[6:7], v[22:23] 1834; GFX900-NEXT: v_cmp_u_f64_e64 s[6:7], v[6:7], v[22:23] 1835; GFX900-NEXT: v_min_f64 v[16:17], v[8:9], v[24:25] 1836; GFX900-NEXT: v_cmp_u_f64_e64 s[10:11], v[8:9], v[24:25] 1837; GFX900-NEXT: v_min_f64 v[22:23], v[10:11], v[26:27] 1838; GFX900-NEXT: v_cmp_u_f64_e64 s[12:13], v[10:11], v[26:27] 1839; GFX900-NEXT: v_min_f64 v[24:25], v[12:13], v[28:29] 1840; GFX900-NEXT: v_cmp_u_f64_e64 s[14:15], v[12:13], v[28:29] 1841; GFX900-NEXT: v_cndmask_b32_e64 v0, v2, 0, s[8:9] 1842; GFX900-NEXT: v_cndmask_b32_e64 v1, v3, v34, s[8:9] 1843; GFX900-NEXT: v_cndmask_b32_e64 v2, v32, 0, vcc 1844; GFX900-NEXT: v_cndmask_b32_e32 v3, v33, v34, vcc 1845; GFX900-NEXT: v_cndmask_b32_e64 v4, v18, 0, s[4:5] 1846; GFX900-NEXT: v_cndmask_b32_e64 v5, v19, v34, s[4:5] 1847; GFX900-NEXT: v_cndmask_b32_e64 v6, v20, 0, s[6:7] 1848; GFX900-NEXT: v_cndmask_b32_e64 v7, v21, v34, s[6:7] 1849; GFX900-NEXT: v_cndmask_b32_e64 v8, v16, 0, s[10:11] 1850; GFX900-NEXT: v_cndmask_b32_e64 v9, v17, v34, s[10:11] 1851; GFX900-NEXT: v_cndmask_b32_e64 v10, v22, 0, s[12:13] 1852; GFX900-NEXT: v_cndmask_b32_e64 v11, v23, v34, s[12:13] 1853; GFX900-NEXT: v_cndmask_b32_e64 v12, v24, 0, s[14:15] 1854; GFX900-NEXT: v_cndmask_b32_e64 v13, v25, v34, s[14:15] 1855; GFX900-NEXT: s_waitcnt vmcnt(0) 1856; GFX900-NEXT: v_min_f64 v[18:19], v[14:15], v[30:31] 1857; GFX900-NEXT: v_cmp_u_f64_e32 vcc, v[14:15], v[30:31] 1858; GFX900-NEXT: v_cndmask_b32_e64 v14, v18, 0, vcc 1859; GFX900-NEXT: v_cndmask_b32_e32 v15, v19, v34, vcc 1860; GFX900-NEXT: s_setpc_b64 s[30:31] 1861; 1862; GFX950-LABEL: v_minimum_v8f64: 1863; GFX950: ; %bb.0: 1864; GFX950-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1865; GFX950-NEXT: scratch_load_dword v31, off, s32 1866; GFX950-NEXT: v_mov_b32_e32 v54, 0x7ff80000 1867; GFX950-NEXT: v_min_f64 v[32:33], v[0:1], v[16:17] 1868; GFX950-NEXT: v_cmp_u_f64_e32 vcc, v[0:1], v[16:17] 1869; GFX950-NEXT: v_min_f64 v[34:35], v[2:3], v[18:19] 1870; GFX950-NEXT: v_min_f64 v[36:37], v[4:5], v[20:21] 1871; GFX950-NEXT: v_cndmask_b32_e64 v0, v32, 0, vcc 1872; GFX950-NEXT: v_cndmask_b32_e32 v1, v33, v54, vcc 1873; GFX950-NEXT: v_cmp_u_f64_e32 vcc, v[2:3], v[18:19] 1874; GFX950-NEXT: v_min_f64 v[38:39], v[6:7], v[22:23] 1875; GFX950-NEXT: v_min_f64 v[48:49], v[8:9], v[24:25] 1876; GFX950-NEXT: v_cndmask_b32_e64 v2, v34, 0, vcc 1877; GFX950-NEXT: v_cndmask_b32_e32 v3, v35, v54, vcc 1878; GFX950-NEXT: v_cmp_u_f64_e32 vcc, v[4:5], v[20:21] 1879; GFX950-NEXT: v_min_f64 v[50:51], v[10:11], v[26:27] 1880; GFX950-NEXT: v_min_f64 v[52:53], v[12:13], v[28:29] 1881; GFX950-NEXT: v_cndmask_b32_e64 v4, v36, 0, vcc 1882; GFX950-NEXT: v_cndmask_b32_e32 v5, v37, v54, vcc 1883; GFX950-NEXT: v_cmp_u_f64_e32 vcc, v[6:7], v[22:23] 1884; GFX950-NEXT: s_waitcnt vmcnt(0) 1885; GFX950-NEXT: v_min_f64 v[16:17], v[14:15], v[30:31] 1886; GFX950-NEXT: v_cndmask_b32_e64 v6, v38, 0, vcc 1887; GFX950-NEXT: v_cndmask_b32_e32 v7, v39, v54, vcc 1888; GFX950-NEXT: v_cmp_u_f64_e32 vcc, v[8:9], v[24:25] 1889; GFX950-NEXT: s_nop 1 1890; GFX950-NEXT: v_cndmask_b32_e64 v8, v48, 0, vcc 1891; GFX950-NEXT: v_cndmask_b32_e32 v9, v49, v54, vcc 1892; GFX950-NEXT: v_cmp_u_f64_e32 vcc, v[10:11], v[26:27] 1893; GFX950-NEXT: s_nop 1 1894; GFX950-NEXT: v_cndmask_b32_e64 v10, v50, 0, vcc 1895; GFX950-NEXT: v_cndmask_b32_e32 v11, v51, v54, vcc 1896; GFX950-NEXT: v_cmp_u_f64_e32 vcc, v[12:13], v[28:29] 1897; GFX950-NEXT: s_nop 1 1898; GFX950-NEXT: v_cndmask_b32_e64 v12, v52, 0, vcc 1899; GFX950-NEXT: v_cndmask_b32_e32 v13, v53, v54, vcc 1900; GFX950-NEXT: v_cmp_u_f64_e32 vcc, v[14:15], v[30:31] 1901; GFX950-NEXT: s_nop 1 1902; GFX950-NEXT: v_cndmask_b32_e64 v14, v16, 0, vcc 1903; GFX950-NEXT: v_cndmask_b32_e32 v15, v17, v54, vcc 1904; GFX950-NEXT: s_setpc_b64 s[30:31] 1905; 1906; GFX10-LABEL: v_minimum_v8f64: 1907; GFX10: ; %bb.0: 1908; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1909; GFX10-NEXT: buffer_load_dword v31, off, s[0:3], s32 1910; GFX10-NEXT: v_min_f64 v[32:33], v[0:1], v[16:17] 1911; GFX10-NEXT: v_cmp_u_f64_e32 vcc_lo, v[0:1], v[16:17] 1912; GFX10-NEXT: v_min_f64 v[16:17], v[2:3], v[18:19] 1913; GFX10-NEXT: v_cmp_u_f64_e64 s4, v[2:3], v[18:19] 1914; GFX10-NEXT: v_min_f64 v[18:19], v[4:5], v[20:21] 1915; GFX10-NEXT: v_cmp_u_f64_e64 s5, v[4:5], v[20:21] 1916; GFX10-NEXT: v_min_f64 v[20:21], v[6:7], v[22:23] 1917; GFX10-NEXT: v_cmp_u_f64_e64 s6, v[6:7], v[22:23] 1918; GFX10-NEXT: v_min_f64 v[22:23], v[8:9], v[24:25] 1919; GFX10-NEXT: v_cmp_u_f64_e64 s7, v[8:9], v[24:25] 1920; GFX10-NEXT: v_min_f64 v[24:25], v[10:11], v[26:27] 1921; GFX10-NEXT: v_cmp_u_f64_e64 s8, v[10:11], v[26:27] 1922; GFX10-NEXT: v_min_f64 v[26:27], v[12:13], v[28:29] 1923; GFX10-NEXT: v_cmp_u_f64_e64 s9, v[12:13], v[28:29] 1924; GFX10-NEXT: v_cndmask_b32_e64 v0, v32, 0, vcc_lo 1925; GFX10-NEXT: v_cndmask_b32_e64 v1, v33, 0x7ff80000, vcc_lo 1926; GFX10-NEXT: v_cndmask_b32_e64 v2, v16, 0, s4 1927; GFX10-NEXT: v_cndmask_b32_e64 v3, v17, 0x7ff80000, s4 1928; GFX10-NEXT: v_cndmask_b32_e64 v4, v18, 0, s5 1929; GFX10-NEXT: v_cndmask_b32_e64 v5, v19, 0x7ff80000, s5 1930; GFX10-NEXT: v_cndmask_b32_e64 v6, v20, 0, s6 1931; GFX10-NEXT: v_cndmask_b32_e64 v7, v21, 0x7ff80000, s6 1932; GFX10-NEXT: v_cndmask_b32_e64 v8, v22, 0, s7 1933; GFX10-NEXT: v_cndmask_b32_e64 v9, v23, 0x7ff80000, s7 1934; GFX10-NEXT: v_cndmask_b32_e64 v10, v24, 0, s8 1935; GFX10-NEXT: v_cndmask_b32_e64 v11, v25, 0x7ff80000, s8 1936; GFX10-NEXT: v_cndmask_b32_e64 v12, v26, 0, s9 1937; GFX10-NEXT: v_cndmask_b32_e64 v13, v27, 0x7ff80000, s9 1938; GFX10-NEXT: s_waitcnt vmcnt(0) 1939; GFX10-NEXT: v_min_f64 v[28:29], v[14:15], v[30:31] 1940; GFX10-NEXT: v_cmp_u_f64_e64 s10, v[14:15], v[30:31] 1941; GFX10-NEXT: v_cndmask_b32_e64 v14, v28, 0, s10 1942; GFX10-NEXT: v_cndmask_b32_e64 v15, v29, 0x7ff80000, s10 1943; GFX10-NEXT: s_setpc_b64 s[30:31] 1944; 1945; GFX11-LABEL: v_minimum_v8f64: 1946; GFX11: ; %bb.0: 1947; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1948; GFX11-NEXT: scratch_load_b32 v31, off, s32 1949; GFX11-NEXT: v_min_f64 v[32:33], v[0:1], v[16:17] 1950; GFX11-NEXT: v_cmp_u_f64_e32 vcc_lo, v[0:1], v[16:17] 1951; GFX11-NEXT: v_min_f64 v[16:17], v[2:3], v[18:19] 1952; GFX11-NEXT: v_cmp_u_f64_e64 s0, v[2:3], v[18:19] 1953; GFX11-NEXT: v_min_f64 v[18:19], v[4:5], v[20:21] 1954; GFX11-NEXT: v_cmp_u_f64_e64 s1, v[4:5], v[20:21] 1955; GFX11-NEXT: v_min_f64 v[20:21], v[6:7], v[22:23] 1956; GFX11-NEXT: v_cmp_u_f64_e64 s2, v[6:7], v[22:23] 1957; GFX11-NEXT: v_min_f64 v[22:23], v[8:9], v[24:25] 1958; GFX11-NEXT: v_cmp_u_f64_e64 s3, v[8:9], v[24:25] 1959; GFX11-NEXT: v_min_f64 v[24:25], v[10:11], v[26:27] 1960; GFX11-NEXT: v_cmp_u_f64_e64 s4, v[10:11], v[26:27] 1961; GFX11-NEXT: v_min_f64 v[26:27], v[12:13], v[28:29] 1962; GFX11-NEXT: v_cmp_u_f64_e64 s5, v[12:13], v[28:29] 1963; GFX11-NEXT: v_cndmask_b32_e64 v0, v32, 0, vcc_lo 1964; GFX11-NEXT: v_cndmask_b32_e64 v1, v33, 0x7ff80000, vcc_lo 1965; GFX11-NEXT: v_cndmask_b32_e64 v2, v16, 0, s0 1966; GFX11-NEXT: v_cndmask_b32_e64 v3, v17, 0x7ff80000, s0 1967; GFX11-NEXT: v_cndmask_b32_e64 v4, v18, 0, s1 1968; GFX11-NEXT: v_cndmask_b32_e64 v5, v19, 0x7ff80000, s1 1969; GFX11-NEXT: v_cndmask_b32_e64 v6, v20, 0, s2 1970; GFX11-NEXT: v_cndmask_b32_e64 v7, v21, 0x7ff80000, s2 1971; GFX11-NEXT: v_cndmask_b32_e64 v8, v22, 0, s3 1972; GFX11-NEXT: v_cndmask_b32_e64 v9, v23, 0x7ff80000, s3 1973; GFX11-NEXT: v_cndmask_b32_e64 v10, v24, 0, s4 1974; GFX11-NEXT: v_cndmask_b32_e64 v11, v25, 0x7ff80000, s4 1975; GFX11-NEXT: v_cndmask_b32_e64 v12, v26, 0, s5 1976; GFX11-NEXT: v_cndmask_b32_e64 v13, v27, 0x7ff80000, s5 1977; GFX11-NEXT: s_waitcnt vmcnt(0) 1978; GFX11-NEXT: v_min_f64 v[28:29], v[14:15], v[30:31] 1979; GFX11-NEXT: v_cmp_u_f64_e64 s6, v[14:15], v[30:31] 1980; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3) 1981; GFX11-NEXT: v_cndmask_b32_e64 v14, v28, 0, s6 1982; GFX11-NEXT: v_cndmask_b32_e64 v15, v29, 0x7ff80000, s6 1983; GFX11-NEXT: s_setpc_b64 s[30:31] 1984; 1985; GFX12-LABEL: v_minimum_v8f64: 1986; GFX12: ; %bb.0: 1987; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 1988; GFX12-NEXT: s_wait_expcnt 0x0 1989; GFX12-NEXT: s_wait_samplecnt 0x0 1990; GFX12-NEXT: s_wait_bvhcnt 0x0 1991; GFX12-NEXT: s_wait_kmcnt 0x0 1992; GFX12-NEXT: scratch_load_b32 v31, off, s32 1993; GFX12-NEXT: v_minimum_f64 v[0:1], v[0:1], v[16:17] 1994; GFX12-NEXT: v_minimum_f64 v[2:3], v[2:3], v[18:19] 1995; GFX12-NEXT: v_minimum_f64 v[4:5], v[4:5], v[20:21] 1996; GFX12-NEXT: v_minimum_f64 v[6:7], v[6:7], v[22:23] 1997; GFX12-NEXT: v_minimum_f64 v[8:9], v[8:9], v[24:25] 1998; GFX12-NEXT: v_minimum_f64 v[10:11], v[10:11], v[26:27] 1999; GFX12-NEXT: v_minimum_f64 v[12:13], v[12:13], v[28:29] 2000; GFX12-NEXT: s_wait_loadcnt 0x0 2001; GFX12-NEXT: v_minimum_f64 v[14:15], v[14:15], v[30:31] 2002; GFX12-NEXT: s_setpc_b64 s[30:31] 2003 %op = call <8 x double> @llvm.minimum.v8f64(<8 x double> %src0, <8 x double> %src1) 2004 ret <8 x double> %op 2005} 2006 2007define <16 x double> @v_minimum_v16f64(<16 x double> %src0, <16 x double> %src1) { 2008; GFX7-LABEL: v_minimum_v16f64: 2009; GFX7: ; %bb.0: 2010; GFX7-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2011; GFX7-NEXT: s_xor_saveexec_b64 s[4:5], -1 2012; GFX7-NEXT: buffer_store_dword v34, off, s[0:3], s32 offset:132 ; 4-byte Folded Spill 2013; GFX7-NEXT: s_mov_b64 exec, s[4:5] 2014; GFX7-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:8 2015; GFX7-NEXT: buffer_load_dword v31, off, s[0:3], s32 offset:4 2016; GFX7-NEXT: v_writelane_b32 v34, s30, 0 2017; GFX7-NEXT: v_writelane_b32 v34, s31, 1 2018; GFX7-NEXT: v_writelane_b32 v34, s34, 2 2019; GFX7-NEXT: v_writelane_b32 v34, s35, 3 2020; GFX7-NEXT: s_waitcnt vmcnt(0) 2021; GFX7-NEXT: v_cmp_u_f64_e32 vcc, v[0:1], v[31:32] 2022; GFX7-NEXT: v_min_f64 v[0:1], v[0:1], v[31:32] 2023; GFX7-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:16 2024; GFX7-NEXT: buffer_load_dword v31, off, s[0:3], s32 offset:12 2025; GFX7-NEXT: v_cndmask_b32_e64 v0, v0, 0, vcc 2026; GFX7-NEXT: s_waitcnt vmcnt(0) 2027; GFX7-NEXT: v_cmp_u_f64_e64 s[4:5], v[2:3], v[31:32] 2028; GFX7-NEXT: v_min_f64 v[2:3], v[2:3], v[31:32] 2029; GFX7-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:24 2030; GFX7-NEXT: buffer_load_dword v31, off, s[0:3], s32 offset:20 2031; GFX7-NEXT: v_cndmask_b32_e64 v2, v2, 0, s[4:5] 2032; GFX7-NEXT: s_waitcnt vmcnt(0) 2033; GFX7-NEXT: v_cmp_u_f64_e64 s[6:7], v[4:5], v[31:32] 2034; GFX7-NEXT: v_min_f64 v[4:5], v[4:5], v[31:32] 2035; GFX7-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:32 2036; GFX7-NEXT: buffer_load_dword v31, off, s[0:3], s32 offset:28 2037; GFX7-NEXT: v_cndmask_b32_e64 v4, v4, 0, s[6:7] 2038; GFX7-NEXT: s_waitcnt vmcnt(0) 2039; GFX7-NEXT: v_cmp_u_f64_e64 s[8:9], v[6:7], v[31:32] 2040; GFX7-NEXT: v_min_f64 v[6:7], v[6:7], v[31:32] 2041; GFX7-NEXT: buffer_load_dword v31, off, s[0:3], s32 offset:36 2042; GFX7-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:40 2043; GFX7-NEXT: v_cndmask_b32_e64 v6, v6, 0, s[8:9] 2044; GFX7-NEXT: s_waitcnt vmcnt(0) 2045; GFX7-NEXT: v_cmp_u_f64_e64 s[10:11], v[8:9], v[31:32] 2046; GFX7-NEXT: v_min_f64 v[8:9], v[8:9], v[31:32] 2047; GFX7-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:48 2048; GFX7-NEXT: buffer_load_dword v31, off, s[0:3], s32 offset:44 2049; GFX7-NEXT: v_cndmask_b32_e64 v8, v8, 0, s[10:11] 2050; GFX7-NEXT: s_waitcnt vmcnt(0) 2051; GFX7-NEXT: v_cmp_u_f64_e64 s[12:13], v[10:11], v[31:32] 2052; GFX7-NEXT: v_min_f64 v[10:11], v[10:11], v[31:32] 2053; GFX7-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:56 2054; GFX7-NEXT: buffer_load_dword v31, off, s[0:3], s32 offset:52 2055; GFX7-NEXT: v_cndmask_b32_e64 v10, v10, 0, s[12:13] 2056; GFX7-NEXT: s_waitcnt vmcnt(0) 2057; GFX7-NEXT: v_cmp_u_f64_e64 s[14:15], v[12:13], v[31:32] 2058; GFX7-NEXT: v_min_f64 v[12:13], v[12:13], v[31:32] 2059; GFX7-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:64 2060; GFX7-NEXT: buffer_load_dword v31, off, s[0:3], s32 offset:60 2061; GFX7-NEXT: v_cndmask_b32_e64 v12, v12, 0, s[14:15] 2062; GFX7-NEXT: s_waitcnt vmcnt(0) 2063; GFX7-NEXT: v_cmp_u_f64_e64 s[16:17], v[14:15], v[31:32] 2064; GFX7-NEXT: v_min_f64 v[14:15], v[14:15], v[31:32] 2065; GFX7-NEXT: buffer_load_dword v31, off, s[0:3], s32 offset:68 2066; GFX7-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:72 2067; GFX7-NEXT: v_cndmask_b32_e64 v14, v14, 0, s[16:17] 2068; GFX7-NEXT: s_waitcnt vmcnt(0) 2069; GFX7-NEXT: v_cmp_u_f64_e64 s[18:19], v[16:17], v[31:32] 2070; GFX7-NEXT: v_min_f64 v[16:17], v[16:17], v[31:32] 2071; GFX7-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:80 2072; GFX7-NEXT: buffer_load_dword v31, off, s[0:3], s32 offset:76 2073; GFX7-NEXT: v_cndmask_b32_e64 v16, v16, 0, s[18:19] 2074; GFX7-NEXT: s_waitcnt vmcnt(0) 2075; GFX7-NEXT: v_cmp_u_f64_e64 s[20:21], v[18:19], v[31:32] 2076; GFX7-NEXT: v_min_f64 v[18:19], v[18:19], v[31:32] 2077; GFX7-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:88 2078; GFX7-NEXT: buffer_load_dword v31, off, s[0:3], s32 offset:84 2079; GFX7-NEXT: v_cndmask_b32_e64 v18, v18, 0, s[20:21] 2080; GFX7-NEXT: s_waitcnt vmcnt(0) 2081; GFX7-NEXT: v_cmp_u_f64_e64 s[22:23], v[20:21], v[31:32] 2082; GFX7-NEXT: v_min_f64 v[20:21], v[20:21], v[31:32] 2083; GFX7-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:96 2084; GFX7-NEXT: buffer_load_dword v31, off, s[0:3], s32 offset:92 2085; GFX7-NEXT: v_cndmask_b32_e64 v20, v20, 0, s[22:23] 2086; GFX7-NEXT: s_waitcnt vmcnt(0) 2087; GFX7-NEXT: v_cmp_u_f64_e64 s[24:25], v[22:23], v[31:32] 2088; GFX7-NEXT: v_min_f64 v[22:23], v[22:23], v[31:32] 2089; GFX7-NEXT: buffer_load_dword v31, off, s[0:3], s32 offset:100 2090; GFX7-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:104 2091; GFX7-NEXT: v_cndmask_b32_e64 v22, v22, 0, s[24:25] 2092; GFX7-NEXT: s_waitcnt vmcnt(0) 2093; GFX7-NEXT: v_cmp_u_f64_e64 s[26:27], v[24:25], v[31:32] 2094; GFX7-NEXT: v_min_f64 v[24:25], v[24:25], v[31:32] 2095; GFX7-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:112 2096; GFX7-NEXT: buffer_load_dword v31, off, s[0:3], s32 offset:108 2097; GFX7-NEXT: v_cndmask_b32_e64 v24, v24, 0, s[26:27] 2098; GFX7-NEXT: s_waitcnt vmcnt(0) 2099; GFX7-NEXT: v_cmp_u_f64_e64 s[28:29], v[26:27], v[31:32] 2100; GFX7-NEXT: v_min_f64 v[26:27], v[26:27], v[31:32] 2101; GFX7-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:120 2102; GFX7-NEXT: buffer_load_dword v31, off, s[0:3], s32 offset:116 2103; GFX7-NEXT: v_cndmask_b32_e64 v26, v26, 0, s[28:29] 2104; GFX7-NEXT: s_waitcnt vmcnt(0) 2105; GFX7-NEXT: v_cmp_u_f64_e64 s[30:31], v[28:29], v[31:32] 2106; GFX7-NEXT: v_min_f64 v[28:29], v[28:29], v[31:32] 2107; GFX7-NEXT: buffer_load_dword v31, off, s[0:3], s32 2108; GFX7-NEXT: buffer_load_dword v33, off, s[0:3], s32 offset:128 2109; GFX7-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:124 2110; GFX7-NEXT: v_cndmask_b32_e64 v28, v28, 0, s[30:31] 2111; GFX7-NEXT: s_waitcnt vmcnt(0) 2112; GFX7-NEXT: v_cmp_u_f64_e64 s[34:35], v[30:31], v[32:33] 2113; GFX7-NEXT: v_min_f64 v[30:31], v[30:31], v[32:33] 2114; GFX7-NEXT: v_mov_b32_e32 v32, 0x7ff80000 2115; GFX7-NEXT: v_cndmask_b32_e32 v1, v1, v32, vcc 2116; GFX7-NEXT: v_cndmask_b32_e64 v3, v3, v32, s[4:5] 2117; GFX7-NEXT: v_cndmask_b32_e64 v5, v5, v32, s[6:7] 2118; GFX7-NEXT: v_cndmask_b32_e64 v7, v7, v32, s[8:9] 2119; GFX7-NEXT: v_cndmask_b32_e64 v9, v9, v32, s[10:11] 2120; GFX7-NEXT: v_cndmask_b32_e64 v11, v11, v32, s[12:13] 2121; GFX7-NEXT: v_cndmask_b32_e64 v13, v13, v32, s[14:15] 2122; GFX7-NEXT: v_cndmask_b32_e64 v15, v15, v32, s[16:17] 2123; GFX7-NEXT: v_cndmask_b32_e64 v17, v17, v32, s[18:19] 2124; GFX7-NEXT: v_cndmask_b32_e64 v19, v19, v32, s[20:21] 2125; GFX7-NEXT: v_cndmask_b32_e64 v21, v21, v32, s[22:23] 2126; GFX7-NEXT: v_cndmask_b32_e64 v23, v23, v32, s[24:25] 2127; GFX7-NEXT: v_cndmask_b32_e64 v25, v25, v32, s[26:27] 2128; GFX7-NEXT: v_cndmask_b32_e64 v27, v27, v32, s[28:29] 2129; GFX7-NEXT: v_cndmask_b32_e64 v29, v29, v32, s[30:31] 2130; GFX7-NEXT: v_cndmask_b32_e64 v31, v31, v32, s[34:35] 2131; GFX7-NEXT: v_cndmask_b32_e64 v30, v30, 0, s[34:35] 2132; GFX7-NEXT: v_readlane_b32 s35, v34, 3 2133; GFX7-NEXT: v_readlane_b32 s34, v34, 2 2134; GFX7-NEXT: v_readlane_b32 s31, v34, 1 2135; GFX7-NEXT: v_readlane_b32 s30, v34, 0 2136; GFX7-NEXT: s_xor_saveexec_b64 s[4:5], -1 2137; GFX7-NEXT: buffer_load_dword v34, off, s[0:3], s32 offset:132 ; 4-byte Folded Reload 2138; GFX7-NEXT: s_mov_b64 exec, s[4:5] 2139; GFX7-NEXT: s_waitcnt vmcnt(0) 2140; GFX7-NEXT: s_setpc_b64 s[30:31] 2141; 2142; GFX8-LABEL: v_minimum_v16f64: 2143; GFX8: ; %bb.0: 2144; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2145; GFX8-NEXT: s_xor_saveexec_b64 s[4:5], -1 2146; GFX8-NEXT: buffer_store_dword v34, off, s[0:3], s32 offset:132 ; 4-byte Folded Spill 2147; GFX8-NEXT: s_mov_b64 exec, s[4:5] 2148; GFX8-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:8 2149; GFX8-NEXT: buffer_load_dword v31, off, s[0:3], s32 offset:4 2150; GFX8-NEXT: v_writelane_b32 v34, s30, 0 2151; GFX8-NEXT: v_writelane_b32 v34, s31, 1 2152; GFX8-NEXT: v_writelane_b32 v34, s34, 2 2153; GFX8-NEXT: v_writelane_b32 v34, s35, 3 2154; GFX8-NEXT: s_waitcnt vmcnt(0) 2155; GFX8-NEXT: v_cmp_u_f64_e32 vcc, v[0:1], v[31:32] 2156; GFX8-NEXT: v_min_f64 v[0:1], v[0:1], v[31:32] 2157; GFX8-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:16 2158; GFX8-NEXT: buffer_load_dword v31, off, s[0:3], s32 offset:12 2159; GFX8-NEXT: v_cndmask_b32_e64 v0, v0, 0, vcc 2160; GFX8-NEXT: s_waitcnt vmcnt(0) 2161; GFX8-NEXT: v_cmp_u_f64_e64 s[4:5], v[2:3], v[31:32] 2162; GFX8-NEXT: v_min_f64 v[2:3], v[2:3], v[31:32] 2163; GFX8-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:24 2164; GFX8-NEXT: buffer_load_dword v31, off, s[0:3], s32 offset:20 2165; GFX8-NEXT: v_cndmask_b32_e64 v2, v2, 0, s[4:5] 2166; GFX8-NEXT: s_waitcnt vmcnt(0) 2167; GFX8-NEXT: v_cmp_u_f64_e64 s[6:7], v[4:5], v[31:32] 2168; GFX8-NEXT: v_min_f64 v[4:5], v[4:5], v[31:32] 2169; GFX8-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:32 2170; GFX8-NEXT: buffer_load_dword v31, off, s[0:3], s32 offset:28 2171; GFX8-NEXT: v_cndmask_b32_e64 v4, v4, 0, s[6:7] 2172; GFX8-NEXT: s_waitcnt vmcnt(0) 2173; GFX8-NEXT: v_cmp_u_f64_e64 s[8:9], v[6:7], v[31:32] 2174; GFX8-NEXT: v_min_f64 v[6:7], v[6:7], v[31:32] 2175; GFX8-NEXT: buffer_load_dword v31, off, s[0:3], s32 offset:36 2176; GFX8-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:40 2177; GFX8-NEXT: v_cndmask_b32_e64 v6, v6, 0, s[8:9] 2178; GFX8-NEXT: s_waitcnt vmcnt(0) 2179; GFX8-NEXT: v_cmp_u_f64_e64 s[10:11], v[8:9], v[31:32] 2180; GFX8-NEXT: v_min_f64 v[8:9], v[8:9], v[31:32] 2181; GFX8-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:48 2182; GFX8-NEXT: buffer_load_dword v31, off, s[0:3], s32 offset:44 2183; GFX8-NEXT: v_cndmask_b32_e64 v8, v8, 0, s[10:11] 2184; GFX8-NEXT: s_waitcnt vmcnt(0) 2185; GFX8-NEXT: v_cmp_u_f64_e64 s[12:13], v[10:11], v[31:32] 2186; GFX8-NEXT: v_min_f64 v[10:11], v[10:11], v[31:32] 2187; GFX8-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:56 2188; GFX8-NEXT: buffer_load_dword v31, off, s[0:3], s32 offset:52 2189; GFX8-NEXT: v_cndmask_b32_e64 v10, v10, 0, s[12:13] 2190; GFX8-NEXT: s_waitcnt vmcnt(0) 2191; GFX8-NEXT: v_cmp_u_f64_e64 s[14:15], v[12:13], v[31:32] 2192; GFX8-NEXT: v_min_f64 v[12:13], v[12:13], v[31:32] 2193; GFX8-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:64 2194; GFX8-NEXT: buffer_load_dword v31, off, s[0:3], s32 offset:60 2195; GFX8-NEXT: v_cndmask_b32_e64 v12, v12, 0, s[14:15] 2196; GFX8-NEXT: s_waitcnt vmcnt(0) 2197; GFX8-NEXT: v_cmp_u_f64_e64 s[16:17], v[14:15], v[31:32] 2198; GFX8-NEXT: v_min_f64 v[14:15], v[14:15], v[31:32] 2199; GFX8-NEXT: buffer_load_dword v31, off, s[0:3], s32 offset:68 2200; GFX8-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:72 2201; GFX8-NEXT: v_cndmask_b32_e64 v14, v14, 0, s[16:17] 2202; GFX8-NEXT: s_waitcnt vmcnt(0) 2203; GFX8-NEXT: v_cmp_u_f64_e64 s[18:19], v[16:17], v[31:32] 2204; GFX8-NEXT: v_min_f64 v[16:17], v[16:17], v[31:32] 2205; GFX8-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:80 2206; GFX8-NEXT: buffer_load_dword v31, off, s[0:3], s32 offset:76 2207; GFX8-NEXT: v_cndmask_b32_e64 v16, v16, 0, s[18:19] 2208; GFX8-NEXT: s_waitcnt vmcnt(0) 2209; GFX8-NEXT: v_cmp_u_f64_e64 s[20:21], v[18:19], v[31:32] 2210; GFX8-NEXT: v_min_f64 v[18:19], v[18:19], v[31:32] 2211; GFX8-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:88 2212; GFX8-NEXT: buffer_load_dword v31, off, s[0:3], s32 offset:84 2213; GFX8-NEXT: v_cndmask_b32_e64 v18, v18, 0, s[20:21] 2214; GFX8-NEXT: s_waitcnt vmcnt(0) 2215; GFX8-NEXT: v_cmp_u_f64_e64 s[22:23], v[20:21], v[31:32] 2216; GFX8-NEXT: v_min_f64 v[20:21], v[20:21], v[31:32] 2217; GFX8-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:96 2218; GFX8-NEXT: buffer_load_dword v31, off, s[0:3], s32 offset:92 2219; GFX8-NEXT: v_cndmask_b32_e64 v20, v20, 0, s[22:23] 2220; GFX8-NEXT: s_waitcnt vmcnt(0) 2221; GFX8-NEXT: v_cmp_u_f64_e64 s[24:25], v[22:23], v[31:32] 2222; GFX8-NEXT: v_min_f64 v[22:23], v[22:23], v[31:32] 2223; GFX8-NEXT: buffer_load_dword v31, off, s[0:3], s32 offset:100 2224; GFX8-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:104 2225; GFX8-NEXT: v_cndmask_b32_e64 v22, v22, 0, s[24:25] 2226; GFX8-NEXT: s_waitcnt vmcnt(0) 2227; GFX8-NEXT: v_cmp_u_f64_e64 s[26:27], v[24:25], v[31:32] 2228; GFX8-NEXT: v_min_f64 v[24:25], v[24:25], v[31:32] 2229; GFX8-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:112 2230; GFX8-NEXT: buffer_load_dword v31, off, s[0:3], s32 offset:108 2231; GFX8-NEXT: v_cndmask_b32_e64 v24, v24, 0, s[26:27] 2232; GFX8-NEXT: s_waitcnt vmcnt(0) 2233; GFX8-NEXT: v_cmp_u_f64_e64 s[28:29], v[26:27], v[31:32] 2234; GFX8-NEXT: v_min_f64 v[26:27], v[26:27], v[31:32] 2235; GFX8-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:120 2236; GFX8-NEXT: buffer_load_dword v31, off, s[0:3], s32 offset:116 2237; GFX8-NEXT: v_cndmask_b32_e64 v26, v26, 0, s[28:29] 2238; GFX8-NEXT: s_waitcnt vmcnt(0) 2239; GFX8-NEXT: v_cmp_u_f64_e64 s[30:31], v[28:29], v[31:32] 2240; GFX8-NEXT: v_min_f64 v[28:29], v[28:29], v[31:32] 2241; GFX8-NEXT: buffer_load_dword v31, off, s[0:3], s32 2242; GFX8-NEXT: buffer_load_dword v33, off, s[0:3], s32 offset:128 2243; GFX8-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:124 2244; GFX8-NEXT: v_cndmask_b32_e64 v28, v28, 0, s[30:31] 2245; GFX8-NEXT: s_waitcnt vmcnt(0) 2246; GFX8-NEXT: v_cmp_u_f64_e64 s[34:35], v[30:31], v[32:33] 2247; GFX8-NEXT: v_min_f64 v[30:31], v[30:31], v[32:33] 2248; GFX8-NEXT: v_mov_b32_e32 v32, 0x7ff80000 2249; GFX8-NEXT: v_cndmask_b32_e32 v1, v1, v32, vcc 2250; GFX8-NEXT: v_cndmask_b32_e64 v3, v3, v32, s[4:5] 2251; GFX8-NEXT: v_cndmask_b32_e64 v5, v5, v32, s[6:7] 2252; GFX8-NEXT: v_cndmask_b32_e64 v7, v7, v32, s[8:9] 2253; GFX8-NEXT: v_cndmask_b32_e64 v9, v9, v32, s[10:11] 2254; GFX8-NEXT: v_cndmask_b32_e64 v11, v11, v32, s[12:13] 2255; GFX8-NEXT: v_cndmask_b32_e64 v13, v13, v32, s[14:15] 2256; GFX8-NEXT: v_cndmask_b32_e64 v15, v15, v32, s[16:17] 2257; GFX8-NEXT: v_cndmask_b32_e64 v17, v17, v32, s[18:19] 2258; GFX8-NEXT: v_cndmask_b32_e64 v19, v19, v32, s[20:21] 2259; GFX8-NEXT: v_cndmask_b32_e64 v21, v21, v32, s[22:23] 2260; GFX8-NEXT: v_cndmask_b32_e64 v23, v23, v32, s[24:25] 2261; GFX8-NEXT: v_cndmask_b32_e64 v25, v25, v32, s[26:27] 2262; GFX8-NEXT: v_cndmask_b32_e64 v27, v27, v32, s[28:29] 2263; GFX8-NEXT: v_cndmask_b32_e64 v29, v29, v32, s[30:31] 2264; GFX8-NEXT: v_cndmask_b32_e64 v31, v31, v32, s[34:35] 2265; GFX8-NEXT: v_cndmask_b32_e64 v30, v30, 0, s[34:35] 2266; GFX8-NEXT: v_readlane_b32 s35, v34, 3 2267; GFX8-NEXT: v_readlane_b32 s34, v34, 2 2268; GFX8-NEXT: v_readlane_b32 s31, v34, 1 2269; GFX8-NEXT: v_readlane_b32 s30, v34, 0 2270; GFX8-NEXT: s_xor_saveexec_b64 s[4:5], -1 2271; GFX8-NEXT: buffer_load_dword v34, off, s[0:3], s32 offset:132 ; 4-byte Folded Reload 2272; GFX8-NEXT: s_mov_b64 exec, s[4:5] 2273; GFX8-NEXT: s_waitcnt vmcnt(0) 2274; GFX8-NEXT: s_setpc_b64 s[30:31] 2275; 2276; GFX900-LABEL: v_minimum_v16f64: 2277; GFX900: ; %bb.0: 2278; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2279; GFX900-NEXT: s_xor_saveexec_b64 s[4:5], -1 2280; GFX900-NEXT: buffer_store_dword v34, off, s[0:3], s32 offset:132 ; 4-byte Folded Spill 2281; GFX900-NEXT: s_mov_b64 exec, s[4:5] 2282; GFX900-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:8 2283; GFX900-NEXT: buffer_load_dword v31, off, s[0:3], s32 offset:4 2284; GFX900-NEXT: v_writelane_b32 v34, s30, 0 2285; GFX900-NEXT: v_writelane_b32 v34, s31, 1 2286; GFX900-NEXT: v_writelane_b32 v34, s34, 2 2287; GFX900-NEXT: v_writelane_b32 v34, s35, 3 2288; GFX900-NEXT: s_waitcnt vmcnt(0) 2289; GFX900-NEXT: v_cmp_u_f64_e32 vcc, v[0:1], v[31:32] 2290; GFX900-NEXT: v_min_f64 v[0:1], v[0:1], v[31:32] 2291; GFX900-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:16 2292; GFX900-NEXT: buffer_load_dword v31, off, s[0:3], s32 offset:12 2293; GFX900-NEXT: v_cndmask_b32_e64 v0, v0, 0, vcc 2294; GFX900-NEXT: s_waitcnt vmcnt(0) 2295; GFX900-NEXT: v_cmp_u_f64_e64 s[4:5], v[2:3], v[31:32] 2296; GFX900-NEXT: v_min_f64 v[2:3], v[2:3], v[31:32] 2297; GFX900-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:24 2298; GFX900-NEXT: buffer_load_dword v31, off, s[0:3], s32 offset:20 2299; GFX900-NEXT: v_cndmask_b32_e64 v2, v2, 0, s[4:5] 2300; GFX900-NEXT: s_waitcnt vmcnt(0) 2301; GFX900-NEXT: v_cmp_u_f64_e64 s[6:7], v[4:5], v[31:32] 2302; GFX900-NEXT: v_min_f64 v[4:5], v[4:5], v[31:32] 2303; GFX900-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:32 2304; GFX900-NEXT: buffer_load_dword v31, off, s[0:3], s32 offset:28 2305; GFX900-NEXT: v_cndmask_b32_e64 v4, v4, 0, s[6:7] 2306; GFX900-NEXT: s_waitcnt vmcnt(0) 2307; GFX900-NEXT: v_cmp_u_f64_e64 s[8:9], v[6:7], v[31:32] 2308; GFX900-NEXT: v_min_f64 v[6:7], v[6:7], v[31:32] 2309; GFX900-NEXT: buffer_load_dword v31, off, s[0:3], s32 offset:36 2310; GFX900-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:40 2311; GFX900-NEXT: v_cndmask_b32_e64 v6, v6, 0, s[8:9] 2312; GFX900-NEXT: s_waitcnt vmcnt(0) 2313; GFX900-NEXT: v_cmp_u_f64_e64 s[10:11], v[8:9], v[31:32] 2314; GFX900-NEXT: v_min_f64 v[8:9], v[8:9], v[31:32] 2315; GFX900-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:48 2316; GFX900-NEXT: buffer_load_dword v31, off, s[0:3], s32 offset:44 2317; GFX900-NEXT: v_cndmask_b32_e64 v8, v8, 0, s[10:11] 2318; GFX900-NEXT: s_waitcnt vmcnt(0) 2319; GFX900-NEXT: v_cmp_u_f64_e64 s[12:13], v[10:11], v[31:32] 2320; GFX900-NEXT: v_min_f64 v[10:11], v[10:11], v[31:32] 2321; GFX900-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:56 2322; GFX900-NEXT: buffer_load_dword v31, off, s[0:3], s32 offset:52 2323; GFX900-NEXT: v_cndmask_b32_e64 v10, v10, 0, s[12:13] 2324; GFX900-NEXT: s_waitcnt vmcnt(0) 2325; GFX900-NEXT: v_cmp_u_f64_e64 s[14:15], v[12:13], v[31:32] 2326; GFX900-NEXT: v_min_f64 v[12:13], v[12:13], v[31:32] 2327; GFX900-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:64 2328; GFX900-NEXT: buffer_load_dword v31, off, s[0:3], s32 offset:60 2329; GFX900-NEXT: v_cndmask_b32_e64 v12, v12, 0, s[14:15] 2330; GFX900-NEXT: s_waitcnt vmcnt(0) 2331; GFX900-NEXT: v_cmp_u_f64_e64 s[16:17], v[14:15], v[31:32] 2332; GFX900-NEXT: v_min_f64 v[14:15], v[14:15], v[31:32] 2333; GFX900-NEXT: buffer_load_dword v31, off, s[0:3], s32 offset:68 2334; GFX900-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:72 2335; GFX900-NEXT: v_cndmask_b32_e64 v14, v14, 0, s[16:17] 2336; GFX900-NEXT: s_waitcnt vmcnt(0) 2337; GFX900-NEXT: v_cmp_u_f64_e64 s[18:19], v[16:17], v[31:32] 2338; GFX900-NEXT: v_min_f64 v[16:17], v[16:17], v[31:32] 2339; GFX900-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:80 2340; GFX900-NEXT: buffer_load_dword v31, off, s[0:3], s32 offset:76 2341; GFX900-NEXT: v_cndmask_b32_e64 v16, v16, 0, s[18:19] 2342; GFX900-NEXT: s_waitcnt vmcnt(0) 2343; GFX900-NEXT: v_cmp_u_f64_e64 s[20:21], v[18:19], v[31:32] 2344; GFX900-NEXT: v_min_f64 v[18:19], v[18:19], v[31:32] 2345; GFX900-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:88 2346; GFX900-NEXT: buffer_load_dword v31, off, s[0:3], s32 offset:84 2347; GFX900-NEXT: v_cndmask_b32_e64 v18, v18, 0, s[20:21] 2348; GFX900-NEXT: s_waitcnt vmcnt(0) 2349; GFX900-NEXT: v_cmp_u_f64_e64 s[22:23], v[20:21], v[31:32] 2350; GFX900-NEXT: v_min_f64 v[20:21], v[20:21], v[31:32] 2351; GFX900-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:96 2352; GFX900-NEXT: buffer_load_dword v31, off, s[0:3], s32 offset:92 2353; GFX900-NEXT: v_cndmask_b32_e64 v20, v20, 0, s[22:23] 2354; GFX900-NEXT: s_waitcnt vmcnt(0) 2355; GFX900-NEXT: v_cmp_u_f64_e64 s[24:25], v[22:23], v[31:32] 2356; GFX900-NEXT: v_min_f64 v[22:23], v[22:23], v[31:32] 2357; GFX900-NEXT: buffer_load_dword v31, off, s[0:3], s32 offset:100 2358; GFX900-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:104 2359; GFX900-NEXT: v_cndmask_b32_e64 v22, v22, 0, s[24:25] 2360; GFX900-NEXT: s_waitcnt vmcnt(0) 2361; GFX900-NEXT: v_cmp_u_f64_e64 s[26:27], v[24:25], v[31:32] 2362; GFX900-NEXT: v_min_f64 v[24:25], v[24:25], v[31:32] 2363; GFX900-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:112 2364; GFX900-NEXT: buffer_load_dword v31, off, s[0:3], s32 offset:108 2365; GFX900-NEXT: v_cndmask_b32_e64 v24, v24, 0, s[26:27] 2366; GFX900-NEXT: s_waitcnt vmcnt(0) 2367; GFX900-NEXT: v_cmp_u_f64_e64 s[28:29], v[26:27], v[31:32] 2368; GFX900-NEXT: v_min_f64 v[26:27], v[26:27], v[31:32] 2369; GFX900-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:120 2370; GFX900-NEXT: buffer_load_dword v31, off, s[0:3], s32 offset:116 2371; GFX900-NEXT: v_cndmask_b32_e64 v26, v26, 0, s[28:29] 2372; GFX900-NEXT: s_waitcnt vmcnt(0) 2373; GFX900-NEXT: v_cmp_u_f64_e64 s[30:31], v[28:29], v[31:32] 2374; GFX900-NEXT: v_min_f64 v[28:29], v[28:29], v[31:32] 2375; GFX900-NEXT: buffer_load_dword v31, off, s[0:3], s32 2376; GFX900-NEXT: buffer_load_dword v33, off, s[0:3], s32 offset:128 2377; GFX900-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:124 2378; GFX900-NEXT: v_cndmask_b32_e64 v28, v28, 0, s[30:31] 2379; GFX900-NEXT: s_waitcnt vmcnt(0) 2380; GFX900-NEXT: v_cmp_u_f64_e64 s[34:35], v[30:31], v[32:33] 2381; GFX900-NEXT: v_min_f64 v[30:31], v[30:31], v[32:33] 2382; GFX900-NEXT: v_mov_b32_e32 v32, 0x7ff80000 2383; GFX900-NEXT: v_cndmask_b32_e32 v1, v1, v32, vcc 2384; GFX900-NEXT: v_cndmask_b32_e64 v3, v3, v32, s[4:5] 2385; GFX900-NEXT: v_cndmask_b32_e64 v5, v5, v32, s[6:7] 2386; GFX900-NEXT: v_cndmask_b32_e64 v7, v7, v32, s[8:9] 2387; GFX900-NEXT: v_cndmask_b32_e64 v9, v9, v32, s[10:11] 2388; GFX900-NEXT: v_cndmask_b32_e64 v11, v11, v32, s[12:13] 2389; GFX900-NEXT: v_cndmask_b32_e64 v13, v13, v32, s[14:15] 2390; GFX900-NEXT: v_cndmask_b32_e64 v15, v15, v32, s[16:17] 2391; GFX900-NEXT: v_cndmask_b32_e64 v17, v17, v32, s[18:19] 2392; GFX900-NEXT: v_cndmask_b32_e64 v19, v19, v32, s[20:21] 2393; GFX900-NEXT: v_cndmask_b32_e64 v21, v21, v32, s[22:23] 2394; GFX900-NEXT: v_cndmask_b32_e64 v23, v23, v32, s[24:25] 2395; GFX900-NEXT: v_cndmask_b32_e64 v25, v25, v32, s[26:27] 2396; GFX900-NEXT: v_cndmask_b32_e64 v27, v27, v32, s[28:29] 2397; GFX900-NEXT: v_cndmask_b32_e64 v29, v29, v32, s[30:31] 2398; GFX900-NEXT: v_cndmask_b32_e64 v31, v31, v32, s[34:35] 2399; GFX900-NEXT: v_cndmask_b32_e64 v30, v30, 0, s[34:35] 2400; GFX900-NEXT: v_readlane_b32 s35, v34, 3 2401; GFX900-NEXT: v_readlane_b32 s34, v34, 2 2402; GFX900-NEXT: v_readlane_b32 s31, v34, 1 2403; GFX900-NEXT: v_readlane_b32 s30, v34, 0 2404; GFX900-NEXT: s_xor_saveexec_b64 s[4:5], -1 2405; GFX900-NEXT: buffer_load_dword v34, off, s[0:3], s32 offset:132 ; 4-byte Folded Reload 2406; GFX900-NEXT: s_mov_b64 exec, s[4:5] 2407; GFX900-NEXT: s_waitcnt vmcnt(0) 2408; GFX900-NEXT: s_setpc_b64 s[30:31] 2409; 2410; GFX950-LABEL: v_minimum_v16f64: 2411; GFX950: ; %bb.0: 2412; GFX950-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2413; GFX950-NEXT: v_accvgpr_write_b32 a1, v40 ; Reload Reuse 2414; GFX950-NEXT: v_accvgpr_write_b32 a2, v41 ; Reload Reuse 2415; GFX950-NEXT: v_accvgpr_write_b32 a3, v42 ; Reload Reuse 2416; GFX950-NEXT: v_accvgpr_write_b32 a4, v43 ; Reload Reuse 2417; GFX950-NEXT: v_accvgpr_write_b32 a5, v44 ; Reload Reuse 2418; GFX950-NEXT: v_accvgpr_write_b32 a6, v45 ; Reload Reuse 2419; GFX950-NEXT: v_accvgpr_write_b32 a7, v46 ; Reload Reuse 2420; GFX950-NEXT: v_accvgpr_write_b32 a8, v47 ; Reload Reuse 2421; GFX950-NEXT: v_accvgpr_write_b32 a9, v56 ; Reload Reuse 2422; GFX950-NEXT: v_accvgpr_write_b32 a10, v57 ; Reload Reuse 2423; GFX950-NEXT: scratch_load_dword v37, off, s32 offset:16 2424; GFX950-NEXT: scratch_load_dword v36, off, s32 offset:12 2425; GFX950-NEXT: scratch_load_dword v39, off, s32 offset:24 2426; GFX950-NEXT: scratch_load_dword v38, off, s32 offset:20 2427; GFX950-NEXT: scratch_load_dword v49, off, s32 offset:32 2428; GFX950-NEXT: scratch_load_dword v48, off, s32 offset:28 2429; GFX950-NEXT: scratch_load_dword v57, off, s32 offset:8 2430; GFX950-NEXT: scratch_load_dword v56, off, s32 offset:4 2431; GFX950-NEXT: scratch_load_dword v47, off, s32 offset:40 2432; GFX950-NEXT: scratch_load_dword v46, off, s32 offset:36 2433; GFX950-NEXT: scratch_load_dword v45, off, s32 offset:48 2434; GFX950-NEXT: scratch_load_dword v44, off, s32 offset:44 2435; GFX950-NEXT: scratch_load_dword v43, off, s32 offset:56 2436; GFX950-NEXT: scratch_load_dword v42, off, s32 offset:52 2437; GFX950-NEXT: scratch_load_dword v41, off, s32 offset:64 2438; GFX950-NEXT: scratch_load_dword v40, off, s32 offset:60 2439; GFX950-NEXT: scratch_load_dword v55, off, s32 offset:72 2440; GFX950-NEXT: scratch_load_dword v54, off, s32 offset:68 2441; GFX950-NEXT: scratch_load_dword v53, off, s32 offset:80 2442; GFX950-NEXT: scratch_load_dword v52, off, s32 offset:76 2443; GFX950-NEXT: scratch_load_dword v51, off, s32 offset:88 2444; GFX950-NEXT: scratch_load_dword v50, off, s32 offset:84 2445; GFX950-NEXT: scratch_load_dword v35, off, s32 offset:96 2446; GFX950-NEXT: scratch_load_dword v34, off, s32 offset:92 2447; GFX950-NEXT: scratch_load_dword v31, off, s32 2448; GFX950-NEXT: scratch_load_dword v33, off, s32 offset:104 2449; GFX950-NEXT: scratch_load_dword v32, off, s32 offset:100 2450; GFX950-NEXT: v_accvgpr_write_b32 a11, v58 ; Reload Reuse 2451; GFX950-NEXT: v_accvgpr_write_b32 a12, v59 ; Reload Reuse 2452; GFX950-NEXT: v_accvgpr_write_b32 a13, v60 ; Reload Reuse 2453; GFX950-NEXT: v_accvgpr_write_b32 a14, v61 ; Reload Reuse 2454; GFX950-NEXT: v_accvgpr_write_b32 a15, v62 ; Reload Reuse 2455; GFX950-NEXT: v_accvgpr_write_b32 a16, v63 ; Reload Reuse 2456; GFX950-NEXT: s_waitcnt vmcnt(25) 2457; GFX950-NEXT: v_min_f64 v[58:59], v[2:3], v[36:37] 2458; GFX950-NEXT: v_cmp_u_f64_e32 vcc, v[2:3], v[36:37] 2459; GFX950-NEXT: scratch_load_dword v37, off, s32 offset:112 2460; GFX950-NEXT: scratch_load_dword v36, off, s32 offset:108 2461; GFX950-NEXT: s_waitcnt vmcnt(25) 2462; GFX950-NEXT: v_min_f64 v[60:61], v[4:5], v[38:39] 2463; GFX950-NEXT: v_cmp_u_f64_e64 s[0:1], v[4:5], v[38:39] 2464; GFX950-NEXT: scratch_load_dword v39, off, s32 offset:120 2465; GFX950-NEXT: scratch_load_dword v38, off, s32 offset:116 2466; GFX950-NEXT: s_waitcnt vmcnt(25) 2467; GFX950-NEXT: v_min_f64 v[62:63], v[6:7], v[48:49] 2468; GFX950-NEXT: v_cmp_u_f64_e64 s[2:3], v[6:7], v[48:49] 2469; GFX950-NEXT: scratch_load_dword v49, off, s32 offset:128 2470; GFX950-NEXT: scratch_load_dword v48, off, s32 offset:124 2471; GFX950-NEXT: s_waitcnt vmcnt(25) 2472; GFX950-NEXT: v_min_f64 v[2:3], v[0:1], v[56:57] 2473; GFX950-NEXT: v_cmp_u_f64_e64 s[4:5], v[0:1], v[56:57] 2474; GFX950-NEXT: v_mov_b32_e32 v0, 0x7ff80000 2475; GFX950-NEXT: s_waitcnt vmcnt(23) 2476; GFX950-NEXT: v_min_f64 v[56:57], v[8:9], v[46:47] 2477; GFX950-NEXT: v_cndmask_b32_e64 v1, v2, 0, s[4:5] 2478; GFX950-NEXT: v_accvgpr_write_b32 a0, v1 2479; GFX950-NEXT: v_cndmask_b32_e64 v1, v3, v0, s[4:5] 2480; GFX950-NEXT: v_cndmask_b32_e64 v2, v58, 0, vcc 2481; GFX950-NEXT: v_cndmask_b32_e32 v3, v59, v0, vcc 2482; GFX950-NEXT: v_cmp_u_f64_e32 vcc, v[8:9], v[46:47] 2483; GFX950-NEXT: s_waitcnt vmcnt(21) 2484; GFX950-NEXT: v_min_f64 v[46:47], v[10:11], v[44:45] 2485; GFX950-NEXT: v_cndmask_b32_e64 v4, v60, 0, s[0:1] 2486; GFX950-NEXT: v_cndmask_b32_e64 v8, v56, 0, vcc 2487; GFX950-NEXT: v_cndmask_b32_e32 v9, v57, v0, vcc 2488; GFX950-NEXT: v_cmp_u_f64_e32 vcc, v[10:11], v[44:45] 2489; GFX950-NEXT: s_waitcnt vmcnt(19) 2490; GFX950-NEXT: v_min_f64 v[44:45], v[12:13], v[42:43] 2491; GFX950-NEXT: v_cndmask_b32_e64 v5, v61, v0, s[0:1] 2492; GFX950-NEXT: v_cndmask_b32_e64 v10, v46, 0, vcc 2493; GFX950-NEXT: v_cndmask_b32_e32 v11, v47, v0, vcc 2494; GFX950-NEXT: v_cmp_u_f64_e32 vcc, v[12:13], v[42:43] 2495; GFX950-NEXT: s_waitcnt vmcnt(17) 2496; GFX950-NEXT: v_min_f64 v[42:43], v[14:15], v[40:41] 2497; GFX950-NEXT: v_cndmask_b32_e64 v6, v62, 0, s[2:3] 2498; GFX950-NEXT: v_cndmask_b32_e64 v12, v44, 0, vcc 2499; GFX950-NEXT: v_cndmask_b32_e32 v13, v45, v0, vcc 2500; GFX950-NEXT: v_cmp_u_f64_e32 vcc, v[14:15], v[40:41] 2501; GFX950-NEXT: s_waitcnt vmcnt(15) 2502; GFX950-NEXT: v_min_f64 v[40:41], v[16:17], v[54:55] 2503; GFX950-NEXT: v_cndmask_b32_e64 v7, v63, v0, s[2:3] 2504; GFX950-NEXT: v_cndmask_b32_e64 v14, v42, 0, vcc 2505; GFX950-NEXT: v_cndmask_b32_e32 v15, v43, v0, vcc 2506; GFX950-NEXT: v_cmp_u_f64_e32 vcc, v[16:17], v[54:55] 2507; GFX950-NEXT: s_waitcnt vmcnt(13) 2508; GFX950-NEXT: v_min_f64 v[54:55], v[18:19], v[52:53] 2509; GFX950-NEXT: v_accvgpr_read_b32 v63, a16 ; Reload Reuse 2510; GFX950-NEXT: v_cndmask_b32_e64 v16, v40, 0, vcc 2511; GFX950-NEXT: v_cndmask_b32_e32 v17, v41, v0, vcc 2512; GFX950-NEXT: v_cmp_u_f64_e32 vcc, v[18:19], v[52:53] 2513; GFX950-NEXT: s_waitcnt vmcnt(11) 2514; GFX950-NEXT: v_min_f64 v[52:53], v[20:21], v[50:51] 2515; GFX950-NEXT: v_accvgpr_read_b32 v62, a15 ; Reload Reuse 2516; GFX950-NEXT: v_cndmask_b32_e64 v18, v54, 0, vcc 2517; GFX950-NEXT: v_cndmask_b32_e32 v19, v55, v0, vcc 2518; GFX950-NEXT: v_cmp_u_f64_e32 vcc, v[20:21], v[50:51] 2519; GFX950-NEXT: s_waitcnt vmcnt(9) 2520; GFX950-NEXT: v_min_f64 v[50:51], v[22:23], v[34:35] 2521; GFX950-NEXT: v_accvgpr_read_b32 v61, a14 ; Reload Reuse 2522; GFX950-NEXT: v_cndmask_b32_e64 v20, v52, 0, vcc 2523; GFX950-NEXT: v_cndmask_b32_e32 v21, v53, v0, vcc 2524; GFX950-NEXT: v_cmp_u_f64_e32 vcc, v[22:23], v[34:35] 2525; GFX950-NEXT: s_waitcnt vmcnt(6) 2526; GFX950-NEXT: v_min_f64 v[34:35], v[24:25], v[32:33] 2527; GFX950-NEXT: v_accvgpr_read_b32 v60, a13 ; Reload Reuse 2528; GFX950-NEXT: v_cndmask_b32_e64 v22, v50, 0, vcc 2529; GFX950-NEXT: v_cndmask_b32_e32 v23, v51, v0, vcc 2530; GFX950-NEXT: v_cmp_u_f64_e32 vcc, v[24:25], v[32:33] 2531; GFX950-NEXT: v_accvgpr_read_b32 v59, a12 ; Reload Reuse 2532; GFX950-NEXT: v_accvgpr_read_b32 v58, a11 ; Reload Reuse 2533; GFX950-NEXT: v_cndmask_b32_e64 v24, v34, 0, vcc 2534; GFX950-NEXT: v_cndmask_b32_e32 v25, v35, v0, vcc 2535; GFX950-NEXT: v_accvgpr_read_b32 v57, a10 ; Reload Reuse 2536; GFX950-NEXT: v_accvgpr_read_b32 v56, a9 ; Reload Reuse 2537; GFX950-NEXT: v_accvgpr_read_b32 v47, a8 ; Reload Reuse 2538; GFX950-NEXT: v_accvgpr_read_b32 v46, a7 ; Reload Reuse 2539; GFX950-NEXT: v_accvgpr_read_b32 v45, a6 ; Reload Reuse 2540; GFX950-NEXT: v_accvgpr_read_b32 v44, a5 ; Reload Reuse 2541; GFX950-NEXT: v_accvgpr_read_b32 v43, a4 ; Reload Reuse 2542; GFX950-NEXT: v_accvgpr_read_b32 v42, a3 ; Reload Reuse 2543; GFX950-NEXT: v_accvgpr_read_b32 v41, a2 ; Reload Reuse 2544; GFX950-NEXT: v_accvgpr_read_b32 v40, a1 ; Reload Reuse 2545; GFX950-NEXT: s_waitcnt vmcnt(4) 2546; GFX950-NEXT: v_min_f64 v[32:33], v[26:27], v[36:37] 2547; GFX950-NEXT: v_cmp_u_f64_e32 vcc, v[26:27], v[36:37] 2548; GFX950-NEXT: s_nop 1 2549; GFX950-NEXT: v_cndmask_b32_e64 v26, v32, 0, vcc 2550; GFX950-NEXT: v_cndmask_b32_e32 v27, v33, v0, vcc 2551; GFX950-NEXT: s_waitcnt vmcnt(2) 2552; GFX950-NEXT: v_min_f64 v[32:33], v[28:29], v[38:39] 2553; GFX950-NEXT: v_cmp_u_f64_e32 vcc, v[28:29], v[38:39] 2554; GFX950-NEXT: s_nop 1 2555; GFX950-NEXT: v_cndmask_b32_e64 v28, v32, 0, vcc 2556; GFX950-NEXT: v_cndmask_b32_e32 v29, v33, v0, vcc 2557; GFX950-NEXT: s_waitcnt vmcnt(0) 2558; GFX950-NEXT: v_min_f64 v[32:33], v[30:31], v[48:49] 2559; GFX950-NEXT: v_cmp_u_f64_e32 vcc, v[30:31], v[48:49] 2560; GFX950-NEXT: s_nop 1 2561; GFX950-NEXT: v_cndmask_b32_e64 v30, v32, 0, vcc 2562; GFX950-NEXT: v_cndmask_b32_e32 v31, v33, v0, vcc 2563; GFX950-NEXT: v_accvgpr_read_b32 v0, a0 2564; GFX950-NEXT: s_setpc_b64 s[30:31] 2565; 2566; GFX10-LABEL: v_minimum_v16f64: 2567; GFX10: ; %bb.0: 2568; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2569; GFX10-NEXT: s_clause 0x19 2570; GFX10-NEXT: buffer_load_dword v32, off, s[0:3], s32 offset:16 2571; GFX10-NEXT: buffer_load_dword v31, off, s[0:3], s32 offset:12 2572; GFX10-NEXT: buffer_load_dword v34, off, s[0:3], s32 offset:24 2573; GFX10-NEXT: buffer_load_dword v33, off, s[0:3], s32 offset:20 2574; GFX10-NEXT: buffer_load_dword v36, off, s[0:3], s32 offset:32 2575; GFX10-NEXT: buffer_load_dword v35, off, s[0:3], s32 offset:28 2576; GFX10-NEXT: buffer_load_dword v37, off, s[0:3], s32 offset:36 2577; GFX10-NEXT: buffer_load_dword v48, off, s[0:3], s32 offset:68 2578; GFX10-NEXT: buffer_load_dword v51, off, s[0:3], s32 offset:64 2579; GFX10-NEXT: buffer_load_dword v50, off, s[0:3], s32 offset:60 2580; GFX10-NEXT: buffer_load_dword v53, off, s[0:3], s32 offset:56 2581; GFX10-NEXT: buffer_load_dword v52, off, s[0:3], s32 offset:52 2582; GFX10-NEXT: buffer_load_dword v55, off, s[0:3], s32 offset:48 2583; GFX10-NEXT: buffer_load_dword v54, off, s[0:3], s32 offset:44 2584; GFX10-NEXT: buffer_load_dword v38, off, s[0:3], s32 offset:40 2585; GFX10-NEXT: buffer_load_dword v65, off, s[0:3], s32 offset:8 2586; GFX10-NEXT: buffer_load_dword v64, off, s[0:3], s32 offset:4 2587; GFX10-NEXT: buffer_load_dword v66, off, s[0:3], s32 offset:100 2588; GFX10-NEXT: buffer_load_dword v69, off, s[0:3], s32 offset:96 2589; GFX10-NEXT: buffer_load_dword v68, off, s[0:3], s32 offset:92 2590; GFX10-NEXT: buffer_load_dword v71, off, s[0:3], s32 offset:88 2591; GFX10-NEXT: buffer_load_dword v70, off, s[0:3], s32 offset:84 2592; GFX10-NEXT: buffer_load_dword v81, off, s[0:3], s32 offset:80 2593; GFX10-NEXT: buffer_load_dword v80, off, s[0:3], s32 offset:76 2594; GFX10-NEXT: buffer_load_dword v49, off, s[0:3], s32 offset:72 2595; GFX10-NEXT: buffer_load_dword v67, off, s[0:3], s32 offset:104 2596; GFX10-NEXT: s_waitcnt vmcnt(24) 2597; GFX10-NEXT: v_min_f64 v[82:83], v[2:3], v[31:32] 2598; GFX10-NEXT: v_cmp_u_f64_e32 vcc_lo, v[2:3], v[31:32] 2599; GFX10-NEXT: s_waitcnt vmcnt(22) 2600; GFX10-NEXT: v_min_f64 v[84:85], v[4:5], v[33:34] 2601; GFX10-NEXT: v_cmp_u_f64_e64 s4, v[4:5], v[33:34] 2602; GFX10-NEXT: s_clause 0x3 2603; GFX10-NEXT: buffer_load_dword v3, off, s[0:3], s32 offset:120 2604; GFX10-NEXT: buffer_load_dword v2, off, s[0:3], s32 offset:116 2605; GFX10-NEXT: buffer_load_dword v5, off, s[0:3], s32 offset:112 2606; GFX10-NEXT: buffer_load_dword v4, off, s[0:3], s32 offset:108 2607; GFX10-NEXT: s_waitcnt vmcnt(24) 2608; GFX10-NEXT: v_min_f64 v[32:33], v[6:7], v[35:36] 2609; GFX10-NEXT: v_cmp_u_f64_e64 s5, v[6:7], v[35:36] 2610; GFX10-NEXT: s_clause 0x2 2611; GFX10-NEXT: buffer_load_dword v31, off, s[0:3], s32 2612; GFX10-NEXT: buffer_load_dword v7, off, s[0:3], s32 offset:128 2613; GFX10-NEXT: buffer_load_dword v6, off, s[0:3], s32 offset:124 2614; GFX10-NEXT: s_waitcnt vmcnt(23) 2615; GFX10-NEXT: v_cmp_u_f64_e64 s10, v[14:15], v[50:51] 2616; GFX10-NEXT: s_waitcnt vmcnt(21) 2617; GFX10-NEXT: v_cmp_u_f64_e64 s9, v[12:13], v[52:53] 2618; GFX10-NEXT: s_waitcnt vmcnt(19) 2619; GFX10-NEXT: v_cmp_u_f64_e64 s7, v[10:11], v[54:55] 2620; GFX10-NEXT: s_waitcnt vmcnt(18) 2621; GFX10-NEXT: v_min_f64 v[34:35], v[8:9], v[37:38] 2622; GFX10-NEXT: v_cmp_u_f64_e64 s6, v[8:9], v[37:38] 2623; GFX10-NEXT: s_waitcnt vmcnt(16) 2624; GFX10-NEXT: v_min_f64 v[8:9], v[0:1], v[64:65] 2625; GFX10-NEXT: v_min_f64 v[36:37], v[10:11], v[54:55] 2626; GFX10-NEXT: v_cmp_u_f64_e64 s8, v[0:1], v[64:65] 2627; GFX10-NEXT: v_min_f64 v[38:39], v[12:13], v[52:53] 2628; GFX10-NEXT: v_min_f64 v[52:53], v[14:15], v[50:51] 2629; GFX10-NEXT: s_waitcnt vmcnt(11) 2630; GFX10-NEXT: v_min_f64 v[54:55], v[20:21], v[70:71] 2631; GFX10-NEXT: v_cmp_u_f64_e64 s13, v[20:21], v[70:71] 2632; GFX10-NEXT: s_waitcnt vmcnt(9) 2633; GFX10-NEXT: v_cmp_u_f64_e64 s12, v[18:19], v[80:81] 2634; GFX10-NEXT: s_waitcnt vmcnt(8) 2635; GFX10-NEXT: v_min_f64 v[50:51], v[16:17], v[48:49] 2636; GFX10-NEXT: v_cmp_u_f64_e64 s11, v[16:17], v[48:49] 2637; GFX10-NEXT: v_min_f64 v[48:49], v[18:19], v[80:81] 2638; GFX10-NEXT: v_min_f64 v[64:65], v[22:23], v[68:69] 2639; GFX10-NEXT: v_cmp_u_f64_e64 s14, v[22:23], v[68:69] 2640; GFX10-NEXT: s_waitcnt vmcnt(7) 2641; GFX10-NEXT: v_min_f64 v[68:69], v[24:25], v[66:67] 2642; GFX10-NEXT: v_cmp_u_f64_e64 s15, v[24:25], v[66:67] 2643; GFX10-NEXT: v_cndmask_b32_e64 v10, v36, 0, s7 2644; GFX10-NEXT: v_cndmask_b32_e64 v0, v8, 0, s8 2645; GFX10-NEXT: v_cndmask_b32_e64 v1, v9, 0x7ff80000, s8 2646; GFX10-NEXT: v_cndmask_b32_e64 v8, v34, 0, s6 2647; GFX10-NEXT: v_cndmask_b32_e64 v9, v35, 0x7ff80000, s6 2648; GFX10-NEXT: v_cndmask_b32_e64 v11, v37, 0x7ff80000, s7 2649; GFX10-NEXT: v_cndmask_b32_e64 v12, v38, 0, s9 2650; GFX10-NEXT: v_cndmask_b32_e64 v13, v39, 0x7ff80000, s9 2651; GFX10-NEXT: v_cndmask_b32_e64 v14, v52, 0, s10 2652; GFX10-NEXT: v_cndmask_b32_e64 v15, v53, 0x7ff80000, s10 2653; GFX10-NEXT: v_cndmask_b32_e64 v16, v50, 0, s11 2654; GFX10-NEXT: v_cndmask_b32_e64 v17, v51, 0x7ff80000, s11 2655; GFX10-NEXT: v_cndmask_b32_e64 v18, v48, 0, s12 2656; GFX10-NEXT: v_cndmask_b32_e64 v19, v49, 0x7ff80000, s12 2657; GFX10-NEXT: v_cndmask_b32_e64 v20, v54, 0, s13 2658; GFX10-NEXT: v_cndmask_b32_e64 v21, v55, 0x7ff80000, s13 2659; GFX10-NEXT: v_cndmask_b32_e64 v22, v64, 0, s14 2660; GFX10-NEXT: v_cndmask_b32_e64 v23, v65, 0x7ff80000, s14 2661; GFX10-NEXT: v_cndmask_b32_e64 v24, v68, 0, s15 2662; GFX10-NEXT: v_cndmask_b32_e64 v25, v69, 0x7ff80000, s15 2663; GFX10-NEXT: s_waitcnt vmcnt(5) 2664; GFX10-NEXT: v_min_f64 v[70:71], v[28:29], v[2:3] 2665; GFX10-NEXT: v_cmp_u_f64_e64 s17, v[28:29], v[2:3] 2666; GFX10-NEXT: s_waitcnt vmcnt(3) 2667; GFX10-NEXT: v_min_f64 v[66:67], v[26:27], v[4:5] 2668; GFX10-NEXT: v_cmp_u_f64_e64 s16, v[26:27], v[4:5] 2669; GFX10-NEXT: v_cndmask_b32_e64 v2, v82, 0, vcc_lo 2670; GFX10-NEXT: s_waitcnt vmcnt(0) 2671; GFX10-NEXT: v_min_f64 v[80:81], v[30:31], v[6:7] 2672; GFX10-NEXT: v_cmp_u_f64_e64 s18, v[30:31], v[6:7] 2673; GFX10-NEXT: v_cndmask_b32_e64 v3, v83, 0x7ff80000, vcc_lo 2674; GFX10-NEXT: v_cndmask_b32_e64 v4, v84, 0, s4 2675; GFX10-NEXT: v_cndmask_b32_e64 v5, v85, 0x7ff80000, s4 2676; GFX10-NEXT: v_cndmask_b32_e64 v6, v32, 0, s5 2677; GFX10-NEXT: v_cndmask_b32_e64 v7, v33, 0x7ff80000, s5 2678; GFX10-NEXT: v_cndmask_b32_e64 v28, v70, 0, s17 2679; GFX10-NEXT: v_cndmask_b32_e64 v29, v71, 0x7ff80000, s17 2680; GFX10-NEXT: v_cndmask_b32_e64 v26, v66, 0, s16 2681; GFX10-NEXT: v_cndmask_b32_e64 v27, v67, 0x7ff80000, s16 2682; GFX10-NEXT: v_cndmask_b32_e64 v30, v80, 0, s18 2683; GFX10-NEXT: v_cndmask_b32_e64 v31, v81, 0x7ff80000, s18 2684; GFX10-NEXT: s_setpc_b64 s[30:31] 2685; 2686; GFX11-LABEL: v_minimum_v16f64: 2687; GFX11: ; %bb.0: 2688; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2689; GFX11-NEXT: s_clause 0x1f 2690; GFX11-NEXT: scratch_load_b32 v31, off, s32 2691; GFX11-NEXT: scratch_load_b32 v33, off, s32 offset:8 2692; GFX11-NEXT: scratch_load_b32 v32, off, s32 offset:4 2693; GFX11-NEXT: scratch_load_b32 v35, off, s32 offset:16 2694; GFX11-NEXT: scratch_load_b32 v34, off, s32 offset:12 2695; GFX11-NEXT: scratch_load_b32 v37, off, s32 offset:24 2696; GFX11-NEXT: scratch_load_b32 v36, off, s32 offset:20 2697; GFX11-NEXT: scratch_load_b32 v39, off, s32 offset:32 2698; GFX11-NEXT: scratch_load_b32 v38, off, s32 offset:28 2699; GFX11-NEXT: scratch_load_b32 v49, off, s32 offset:40 2700; GFX11-NEXT: scratch_load_b32 v48, off, s32 offset:36 2701; GFX11-NEXT: scratch_load_b32 v51, off, s32 offset:48 2702; GFX11-NEXT: scratch_load_b32 v50, off, s32 offset:44 2703; GFX11-NEXT: scratch_load_b32 v53, off, s32 offset:56 2704; GFX11-NEXT: scratch_load_b32 v52, off, s32 offset:52 2705; GFX11-NEXT: scratch_load_b32 v55, off, s32 offset:64 2706; GFX11-NEXT: scratch_load_b32 v54, off, s32 offset:60 2707; GFX11-NEXT: scratch_load_b32 v65, off, s32 offset:72 2708; GFX11-NEXT: scratch_load_b32 v64, off, s32 offset:68 2709; GFX11-NEXT: scratch_load_b32 v67, off, s32 offset:80 2710; GFX11-NEXT: scratch_load_b32 v66, off, s32 offset:76 2711; GFX11-NEXT: scratch_load_b32 v69, off, s32 offset:88 2712; GFX11-NEXT: scratch_load_b32 v68, off, s32 offset:84 2713; GFX11-NEXT: scratch_load_b32 v71, off, s32 offset:96 2714; GFX11-NEXT: scratch_load_b32 v70, off, s32 offset:92 2715; GFX11-NEXT: scratch_load_b32 v81, off, s32 offset:104 2716; GFX11-NEXT: scratch_load_b32 v80, off, s32 offset:100 2717; GFX11-NEXT: scratch_load_b32 v83, off, s32 offset:112 2718; GFX11-NEXT: scratch_load_b32 v82, off, s32 offset:108 2719; GFX11-NEXT: scratch_load_b32 v85, off, s32 offset:120 2720; GFX11-NEXT: scratch_load_b32 v84, off, s32 offset:116 2721; GFX11-NEXT: scratch_load_b32 v87, off, s32 offset:128 2722; GFX11-NEXT: scratch_load_b32 v86, off, s32 offset:124 2723; GFX11-NEXT: s_waitcnt vmcnt(30) 2724; GFX11-NEXT: v_min_f64 v[96:97], v[0:1], v[32:33] 2725; GFX11-NEXT: v_cmp_u_f64_e32 vcc_lo, v[0:1], v[32:33] 2726; GFX11-NEXT: s_waitcnt vmcnt(28) 2727; GFX11-NEXT: v_min_f64 v[32:33], v[2:3], v[34:35] 2728; GFX11-NEXT: v_cmp_u_f64_e64 s0, v[2:3], v[34:35] 2729; GFX11-NEXT: s_waitcnt vmcnt(26) 2730; GFX11-NEXT: v_min_f64 v[34:35], v[4:5], v[36:37] 2731; GFX11-NEXT: v_cmp_u_f64_e64 s1, v[4:5], v[36:37] 2732; GFX11-NEXT: s_waitcnt vmcnt(24) 2733; GFX11-NEXT: v_min_f64 v[36:37], v[6:7], v[38:39] 2734; GFX11-NEXT: v_cmp_u_f64_e64 s2, v[6:7], v[38:39] 2735; GFX11-NEXT: s_waitcnt vmcnt(22) 2736; GFX11-NEXT: v_min_f64 v[38:39], v[8:9], v[48:49] 2737; GFX11-NEXT: v_cmp_u_f64_e64 s3, v[8:9], v[48:49] 2738; GFX11-NEXT: s_waitcnt vmcnt(20) 2739; GFX11-NEXT: v_min_f64 v[48:49], v[10:11], v[50:51] 2740; GFX11-NEXT: v_cmp_u_f64_e64 s4, v[10:11], v[50:51] 2741; GFX11-NEXT: s_waitcnt vmcnt(18) 2742; GFX11-NEXT: v_min_f64 v[50:51], v[12:13], v[52:53] 2743; GFX11-NEXT: v_cmp_u_f64_e64 s5, v[12:13], v[52:53] 2744; GFX11-NEXT: s_waitcnt vmcnt(16) 2745; GFX11-NEXT: v_min_f64 v[52:53], v[14:15], v[54:55] 2746; GFX11-NEXT: v_cmp_u_f64_e64 s6, v[14:15], v[54:55] 2747; GFX11-NEXT: s_waitcnt vmcnt(14) 2748; GFX11-NEXT: v_min_f64 v[54:55], v[16:17], v[64:65] 2749; GFX11-NEXT: v_cmp_u_f64_e64 s7, v[16:17], v[64:65] 2750; GFX11-NEXT: s_waitcnt vmcnt(12) 2751; GFX11-NEXT: v_min_f64 v[64:65], v[18:19], v[66:67] 2752; GFX11-NEXT: v_cmp_u_f64_e64 s8, v[18:19], v[66:67] 2753; GFX11-NEXT: s_waitcnt vmcnt(10) 2754; GFX11-NEXT: v_min_f64 v[66:67], v[20:21], v[68:69] 2755; GFX11-NEXT: v_cmp_u_f64_e64 s9, v[20:21], v[68:69] 2756; GFX11-NEXT: s_waitcnt vmcnt(8) 2757; GFX11-NEXT: v_min_f64 v[68:69], v[22:23], v[70:71] 2758; GFX11-NEXT: v_cmp_u_f64_e64 s10, v[22:23], v[70:71] 2759; GFX11-NEXT: s_waitcnt vmcnt(6) 2760; GFX11-NEXT: v_min_f64 v[70:71], v[24:25], v[80:81] 2761; GFX11-NEXT: v_cmp_u_f64_e64 s11, v[24:25], v[80:81] 2762; GFX11-NEXT: s_waitcnt vmcnt(4) 2763; GFX11-NEXT: v_min_f64 v[80:81], v[26:27], v[82:83] 2764; GFX11-NEXT: v_cmp_u_f64_e64 s12, v[26:27], v[82:83] 2765; GFX11-NEXT: s_waitcnt vmcnt(2) 2766; GFX11-NEXT: v_min_f64 v[82:83], v[28:29], v[84:85] 2767; GFX11-NEXT: v_cmp_u_f64_e64 s13, v[28:29], v[84:85] 2768; GFX11-NEXT: s_waitcnt vmcnt(0) 2769; GFX11-NEXT: v_min_f64 v[84:85], v[30:31], v[86:87] 2770; GFX11-NEXT: v_cmp_u_f64_e64 s14, v[30:31], v[86:87] 2771; GFX11-NEXT: v_cndmask_b32_e64 v0, v96, 0, vcc_lo 2772; GFX11-NEXT: v_cndmask_b32_e64 v1, v97, 0x7ff80000, vcc_lo 2773; GFX11-NEXT: v_cndmask_b32_e64 v2, v32, 0, s0 2774; GFX11-NEXT: v_cndmask_b32_e64 v3, v33, 0x7ff80000, s0 2775; GFX11-NEXT: v_cndmask_b32_e64 v4, v34, 0, s1 2776; GFX11-NEXT: v_cndmask_b32_e64 v5, v35, 0x7ff80000, s1 2777; GFX11-NEXT: v_cndmask_b32_e64 v6, v36, 0, s2 2778; GFX11-NEXT: v_cndmask_b32_e64 v7, v37, 0x7ff80000, s2 2779; GFX11-NEXT: v_cndmask_b32_e64 v8, v38, 0, s3 2780; GFX11-NEXT: v_cndmask_b32_e64 v9, v39, 0x7ff80000, s3 2781; GFX11-NEXT: v_cndmask_b32_e64 v10, v48, 0, s4 2782; GFX11-NEXT: v_cndmask_b32_e64 v11, v49, 0x7ff80000, s4 2783; GFX11-NEXT: v_cndmask_b32_e64 v12, v50, 0, s5 2784; GFX11-NEXT: v_cndmask_b32_e64 v13, v51, 0x7ff80000, s5 2785; GFX11-NEXT: v_cndmask_b32_e64 v14, v52, 0, s6 2786; GFX11-NEXT: v_cndmask_b32_e64 v15, v53, 0x7ff80000, s6 2787; GFX11-NEXT: v_cndmask_b32_e64 v16, v54, 0, s7 2788; GFX11-NEXT: v_cndmask_b32_e64 v17, v55, 0x7ff80000, s7 2789; GFX11-NEXT: v_cndmask_b32_e64 v18, v64, 0, s8 2790; GFX11-NEXT: v_cndmask_b32_e64 v19, v65, 0x7ff80000, s8 2791; GFX11-NEXT: v_cndmask_b32_e64 v20, v66, 0, s9 2792; GFX11-NEXT: v_cndmask_b32_e64 v21, v67, 0x7ff80000, s9 2793; GFX11-NEXT: v_cndmask_b32_e64 v22, v68, 0, s10 2794; GFX11-NEXT: v_cndmask_b32_e64 v23, v69, 0x7ff80000, s10 2795; GFX11-NEXT: v_cndmask_b32_e64 v24, v70, 0, s11 2796; GFX11-NEXT: v_cndmask_b32_e64 v25, v71, 0x7ff80000, s11 2797; GFX11-NEXT: v_cndmask_b32_e64 v26, v80, 0, s12 2798; GFX11-NEXT: v_cndmask_b32_e64 v27, v81, 0x7ff80000, s12 2799; GFX11-NEXT: v_cndmask_b32_e64 v28, v82, 0, s13 2800; GFX11-NEXT: v_cndmask_b32_e64 v29, v83, 0x7ff80000, s13 2801; GFX11-NEXT: v_cndmask_b32_e64 v30, v84, 0, s14 2802; GFX11-NEXT: v_cndmask_b32_e64 v31, v85, 0x7ff80000, s14 2803; GFX11-NEXT: s_setpc_b64 s[30:31] 2804; 2805; GFX12-LABEL: v_minimum_v16f64: 2806; GFX12: ; %bb.0: 2807; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 2808; GFX12-NEXT: s_wait_expcnt 0x0 2809; GFX12-NEXT: s_wait_samplecnt 0x0 2810; GFX12-NEXT: s_wait_bvhcnt 0x0 2811; GFX12-NEXT: s_wait_kmcnt 0x0 2812; GFX12-NEXT: s_clause 0x1f 2813; GFX12-NEXT: scratch_load_b32 v31, off, s32 2814; GFX12-NEXT: scratch_load_b32 v33, off, s32 offset:8 2815; GFX12-NEXT: scratch_load_b32 v32, off, s32 offset:4 2816; GFX12-NEXT: scratch_load_b32 v35, off, s32 offset:16 2817; GFX12-NEXT: scratch_load_b32 v34, off, s32 offset:12 2818; GFX12-NEXT: scratch_load_b32 v37, off, s32 offset:24 2819; GFX12-NEXT: scratch_load_b32 v36, off, s32 offset:20 2820; GFX12-NEXT: scratch_load_b32 v39, off, s32 offset:32 2821; GFX12-NEXT: scratch_load_b32 v38, off, s32 offset:28 2822; GFX12-NEXT: scratch_load_b32 v49, off, s32 offset:40 2823; GFX12-NEXT: scratch_load_b32 v48, off, s32 offset:36 2824; GFX12-NEXT: scratch_load_b32 v51, off, s32 offset:48 2825; GFX12-NEXT: scratch_load_b32 v50, off, s32 offset:44 2826; GFX12-NEXT: scratch_load_b32 v53, off, s32 offset:56 2827; GFX12-NEXT: scratch_load_b32 v52, off, s32 offset:52 2828; GFX12-NEXT: scratch_load_b32 v55, off, s32 offset:64 2829; GFX12-NEXT: scratch_load_b32 v54, off, s32 offset:60 2830; GFX12-NEXT: scratch_load_b32 v65, off, s32 offset:72 2831; GFX12-NEXT: scratch_load_b32 v64, off, s32 offset:68 2832; GFX12-NEXT: scratch_load_b32 v67, off, s32 offset:80 2833; GFX12-NEXT: scratch_load_b32 v66, off, s32 offset:76 2834; GFX12-NEXT: scratch_load_b32 v69, off, s32 offset:88 2835; GFX12-NEXT: scratch_load_b32 v68, off, s32 offset:84 2836; GFX12-NEXT: scratch_load_b32 v71, off, s32 offset:96 2837; GFX12-NEXT: scratch_load_b32 v70, off, s32 offset:92 2838; GFX12-NEXT: scratch_load_b32 v81, off, s32 offset:104 2839; GFX12-NEXT: scratch_load_b32 v80, off, s32 offset:100 2840; GFX12-NEXT: scratch_load_b32 v83, off, s32 offset:112 2841; GFX12-NEXT: scratch_load_b32 v82, off, s32 offset:108 2842; GFX12-NEXT: scratch_load_b32 v85, off, s32 offset:120 2843; GFX12-NEXT: scratch_load_b32 v84, off, s32 offset:116 2844; GFX12-NEXT: scratch_load_b32 v87, off, s32 offset:128 2845; GFX12-NEXT: scratch_load_b32 v86, off, s32 offset:124 2846; GFX12-NEXT: s_wait_loadcnt 0x1e 2847; GFX12-NEXT: v_minimum_f64 v[0:1], v[0:1], v[32:33] 2848; GFX12-NEXT: s_wait_loadcnt 0x1c 2849; GFX12-NEXT: v_minimum_f64 v[2:3], v[2:3], v[34:35] 2850; GFX12-NEXT: s_wait_loadcnt 0x1a 2851; GFX12-NEXT: v_minimum_f64 v[4:5], v[4:5], v[36:37] 2852; GFX12-NEXT: s_wait_loadcnt 0x18 2853; GFX12-NEXT: v_minimum_f64 v[6:7], v[6:7], v[38:39] 2854; GFX12-NEXT: s_wait_loadcnt 0x16 2855; GFX12-NEXT: v_minimum_f64 v[8:9], v[8:9], v[48:49] 2856; GFX12-NEXT: s_wait_loadcnt 0x14 2857; GFX12-NEXT: v_minimum_f64 v[10:11], v[10:11], v[50:51] 2858; GFX12-NEXT: s_wait_loadcnt 0x12 2859; GFX12-NEXT: v_minimum_f64 v[12:13], v[12:13], v[52:53] 2860; GFX12-NEXT: s_wait_loadcnt 0x10 2861; GFX12-NEXT: v_minimum_f64 v[14:15], v[14:15], v[54:55] 2862; GFX12-NEXT: s_wait_loadcnt 0xe 2863; GFX12-NEXT: v_minimum_f64 v[16:17], v[16:17], v[64:65] 2864; GFX12-NEXT: s_wait_loadcnt 0xc 2865; GFX12-NEXT: v_minimum_f64 v[18:19], v[18:19], v[66:67] 2866; GFX12-NEXT: s_wait_loadcnt 0xa 2867; GFX12-NEXT: v_minimum_f64 v[20:21], v[20:21], v[68:69] 2868; GFX12-NEXT: s_wait_loadcnt 0x8 2869; GFX12-NEXT: v_minimum_f64 v[22:23], v[22:23], v[70:71] 2870; GFX12-NEXT: s_wait_loadcnt 0x6 2871; GFX12-NEXT: v_minimum_f64 v[24:25], v[24:25], v[80:81] 2872; GFX12-NEXT: s_wait_loadcnt 0x4 2873; GFX12-NEXT: v_minimum_f64 v[26:27], v[26:27], v[82:83] 2874; GFX12-NEXT: s_wait_loadcnt 0x2 2875; GFX12-NEXT: v_minimum_f64 v[28:29], v[28:29], v[84:85] 2876; GFX12-NEXT: s_wait_loadcnt 0x0 2877; GFX12-NEXT: v_minimum_f64 v[30:31], v[30:31], v[86:87] 2878; GFX12-NEXT: s_setpc_b64 s[30:31] 2879 %op = call <16 x double> @llvm.minimum.v16f64(<16 x double> %src0, <16 x double> %src1) 2880 ret <16 x double> %op 2881} 2882;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: 2883; GCN: {{.*}} 2884