1*a8203291SChangpeng Fang# RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -mattr=+wavefrontsize64 -verify-machineinstrs -start-after=amdgpu-insert-delay-alu %s -o - | FileCheck %s 2edf2d0a9SMichael Bedy 3edf2d0a9SMichael Bedy--- 4edf2d0a9SMichael Bedyname: valu_dep_1 5edf2d0a9SMichael Bedybody: | 6edf2d0a9SMichael Bedy bb.0: 7edf2d0a9SMichael Bedy ; CHECK-LABEL: {{^}}valu_dep_1: 8edf2d0a9SMichael Bedy ; CHECK: %bb.0: 9edf2d0a9SMichael Bedy ; CHECK-NEXT: v_add_nc_u32_e32 v0, v0, v0 10edf2d0a9SMichael Bedy ; CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) 11edf2d0a9SMichael Bedy ; CHECK-NEXT: v_add_nc_u32_e32 v0, v0, v0 12edf2d0a9SMichael Bedy $vgpr0 = V_ADD_U32_e32 $vgpr0, $vgpr0, implicit $exec 13edf2d0a9SMichael Bedy S_DELAY_ALU .id0_VALU_DEP_1 14edf2d0a9SMichael Bedy $vgpr0 = V_ADD_U32_e32 $vgpr0, $vgpr0, implicit $exec 15edf2d0a9SMichael Bedy... 16edf2d0a9SMichael Bedy 17edf2d0a9SMichael Bedy--- 18edf2d0a9SMichael Bedyname: valu_dep_2 19edf2d0a9SMichael Bedybody: | 20edf2d0a9SMichael Bedy bb.0: 21edf2d0a9SMichael Bedy ; CHECK-LABEL: {{^}}valu_dep_2: 22edf2d0a9SMichael Bedy ; CHECK: %bb.0: 23edf2d0a9SMichael Bedy ; CHECK-NEXT: v_add_nc_u32_e32 v0, v0, v0 24edf2d0a9SMichael Bedy ; CHECK-NEXT: v_add_nc_u32_e32 v1, v1, v1 25edf2d0a9SMichael Bedy ; CHECK-NEXT: s_delay_alu instid0(VALU_DEP_2) 26edf2d0a9SMichael Bedy ; CHECK-NEXT: v_add_nc_u32_e32 v0, v0, v0 27edf2d0a9SMichael Bedy $vgpr0 = V_ADD_U32_e32 $vgpr0, $vgpr0, implicit $exec 28edf2d0a9SMichael Bedy $vgpr1 = V_ADD_U32_e32 $vgpr1, $vgpr1, implicit $exec 29edf2d0a9SMichael Bedy S_DELAY_ALU .id0_VALU_DEP_2 30edf2d0a9SMichael Bedy $vgpr0 = V_ADD_U32_e32 $vgpr0, $vgpr0, implicit $exec 31edf2d0a9SMichael Bedy... 32edf2d0a9SMichael Bedy 33edf2d0a9SMichael Bedy--- 34edf2d0a9SMichael Bedyname: valu_dep_3 35edf2d0a9SMichael Bedybody: | 36edf2d0a9SMichael Bedy bb.0: 37edf2d0a9SMichael Bedy ; CHECK-LABEL: {{^}}valu_dep_3: 38edf2d0a9SMichael Bedy ; CHECK: %bb.0: 39edf2d0a9SMichael Bedy ; CHECK-NEXT: v_add_nc_u32_e32 v0, v0, v0 40edf2d0a9SMichael Bedy ; CHECK-NEXT: v_add_nc_u32_e32 v1, v1, v1 41edf2d0a9SMichael Bedy ; CHECK-NEXT: v_add_nc_u32_e32 v2, v2, v2 42edf2d0a9SMichael Bedy ; CHECK-NEXT: s_delay_alu instid0(VALU_DEP_3) 43edf2d0a9SMichael Bedy ; CHECK-NEXT: v_add_nc_u32_e32 v0, v0, v0 44edf2d0a9SMichael Bedy $vgpr0 = V_ADD_U32_e32 $vgpr0, $vgpr0, implicit $exec 45edf2d0a9SMichael Bedy $vgpr1 = V_ADD_U32_e32 $vgpr1, $vgpr1, implicit $exec 46edf2d0a9SMichael Bedy $vgpr2 = V_ADD_U32_e32 $vgpr2, $vgpr2, implicit $exec 47edf2d0a9SMichael Bedy S_DELAY_ALU .id0_VALU_DEP_3 48edf2d0a9SMichael Bedy $vgpr0 = V_ADD_U32_e32 $vgpr0, $vgpr0, implicit $exec 49edf2d0a9SMichael Bedy... 50edf2d0a9SMichael Bedy 51edf2d0a9SMichael Bedy--- 52edf2d0a9SMichael Bedyname: valu_dep_4 53edf2d0a9SMichael Bedybody: | 54edf2d0a9SMichael Bedy bb.0: 55edf2d0a9SMichael Bedy ; CHECK-LABEL: {{^}}valu_dep_4: 56edf2d0a9SMichael Bedy ; CHECK: %bb.0: 57edf2d0a9SMichael Bedy ; CHECK-NEXT: v_add_nc_u32_e32 v0, v0, v0 58edf2d0a9SMichael Bedy ; CHECK-NEXT: v_add_nc_u32_e32 v1, v1, v1 59edf2d0a9SMichael Bedy ; CHECK-NEXT: v_add_nc_u32_e32 v2, v2, v2 60edf2d0a9SMichael Bedy ; CHECK-NEXT: v_add_nc_u32_e32 v3, v3, v3 61edf2d0a9SMichael Bedy ; CHECK-NEXT: s_delay_alu instid0(VALU_DEP_4) 62edf2d0a9SMichael Bedy ; CHECK-NEXT: v_add_nc_u32_e32 v0, v0, v0 63edf2d0a9SMichael Bedy $vgpr0 = V_ADD_U32_e32 $vgpr0, $vgpr0, implicit $exec 64edf2d0a9SMichael Bedy $vgpr1 = V_ADD_U32_e32 $vgpr1, $vgpr1, implicit $exec 65edf2d0a9SMichael Bedy $vgpr2 = V_ADD_U32_e32 $vgpr2, $vgpr2, implicit $exec 66edf2d0a9SMichael Bedy $vgpr3 = V_ADD_U32_e32 $vgpr3, $vgpr3, implicit $exec 67edf2d0a9SMichael Bedy S_DELAY_ALU .id0_VALU_DEP_4 68edf2d0a9SMichael Bedy $vgpr0 = V_ADD_U32_e32 $vgpr0, $vgpr0, implicit $exec 69edf2d0a9SMichael Bedy... 70edf2d0a9SMichael Bedy 71edf2d0a9SMichael Bedy--- 72edf2d0a9SMichael Bedyname: trans32_dep_1 73edf2d0a9SMichael Bedybody: | 74edf2d0a9SMichael Bedy bb.0: 75edf2d0a9SMichael Bedy ; CHECK-LABEL: {{^}}trans32_dep_1: 76edf2d0a9SMichael Bedy ; CHECK: %bb.0: 77edf2d0a9SMichael Bedy ; CHECK-NEXT: v_exp_f32_e32 v0, v0 78edf2d0a9SMichael Bedy ; CHECK-NEXT: s_delay_alu instid0(TRANS32_DEP_1) 79edf2d0a9SMichael Bedy ; CHECK-NEXT: v_add_nc_u32_e32 v0, v0, v0 80edf2d0a9SMichael Bedy $vgpr0 = V_EXP_F32_e32 $vgpr0, implicit $exec, implicit $mode 81edf2d0a9SMichael Bedy S_DELAY_ALU .id0_TRANS32_DEP_1 82edf2d0a9SMichael Bedy $vgpr0 = V_ADD_U32_e32 $vgpr0, $vgpr0, implicit $exec 83edf2d0a9SMichael Bedy... 84edf2d0a9SMichael Bedy 85edf2d0a9SMichael Bedy--- 86edf2d0a9SMichael Bedyname: trans32_dep_2 87edf2d0a9SMichael Bedybody: | 88edf2d0a9SMichael Bedy bb.0: 89edf2d0a9SMichael Bedy ; CHECK-LABEL: {{^}}trans32_dep_2: 90edf2d0a9SMichael Bedy ; CHECK: %bb.0: 91edf2d0a9SMichael Bedy ; CHECK-NEXT: v_exp_f32_e32 v0, v0 92edf2d0a9SMichael Bedy ; CHECK-NEXT: v_exp_f32_e32 v1, v1 93edf2d0a9SMichael Bedy ; CHECK-NEXT: s_delay_alu instid0(TRANS32_DEP_2) 94edf2d0a9SMichael Bedy ; CHECK-NEXT: v_add_nc_u32_e32 v0, v0, v0 95edf2d0a9SMichael Bedy $vgpr0 = V_EXP_F32_e32 $vgpr0, implicit $exec, implicit $mode 96edf2d0a9SMichael Bedy $vgpr1 = V_EXP_F32_e32 $vgpr1, implicit $exec, implicit $mode 97edf2d0a9SMichael Bedy S_DELAY_ALU .id0_TRANS32_DEP_2 98edf2d0a9SMichael Bedy $vgpr0 = V_ADD_U32_e32 $vgpr0, $vgpr0, implicit $exec 99edf2d0a9SMichael Bedy... 100edf2d0a9SMichael Bedy 101edf2d0a9SMichael Bedy--- 102edf2d0a9SMichael Bedyname: trans32_dep_3 103edf2d0a9SMichael Bedybody: | 104edf2d0a9SMichael Bedy bb.0: 105edf2d0a9SMichael Bedy ; CHECK-LABEL: {{^}}trans32_dep_3: 106edf2d0a9SMichael Bedy ; CHECK: %bb.0: 107edf2d0a9SMichael Bedy ; CHECK-NEXT: v_exp_f32_e32 v0, v0 108edf2d0a9SMichael Bedy ; CHECK-NEXT: v_exp_f32_e32 v1, v1 109edf2d0a9SMichael Bedy ; CHECK-NEXT: v_exp_f32_e32 v2, v2 110edf2d0a9SMichael Bedy ; CHECK-NEXT: s_delay_alu instid0(TRANS32_DEP_3) 111edf2d0a9SMichael Bedy ; CHECK-NEXT: v_add_nc_u32_e32 v0, v0, v0 112edf2d0a9SMichael Bedy $vgpr0 = V_EXP_F32_e32 $vgpr0, implicit $exec, implicit $mode 113edf2d0a9SMichael Bedy $vgpr1 = V_EXP_F32_e32 $vgpr1, implicit $exec, implicit $mode 114edf2d0a9SMichael Bedy $vgpr2 = V_EXP_F32_e32 $vgpr2, implicit $exec, implicit $mode 115edf2d0a9SMichael Bedy S_DELAY_ALU .id0_TRANS32_DEP_3 116edf2d0a9SMichael Bedy $vgpr0 = V_ADD_U32_e32 $vgpr0, $vgpr0, implicit $exec 117edf2d0a9SMichael Bedy... 118edf2d0a9SMichael Bedy 119edf2d0a9SMichael Bedy--- 120edf2d0a9SMichael Bedyname: salu_cycle_1 121edf2d0a9SMichael Bedybody: | 122edf2d0a9SMichael Bedy bb.0: 123edf2d0a9SMichael Bedy ; CHECK-LABEL: {{^}}salu_cycle_1: 124edf2d0a9SMichael Bedy ; CHECK: %bb.0: 125edf2d0a9SMichael Bedy ; CHECK-NEXT: s_mov_b32 s0, 0 126edf2d0a9SMichael Bedy ; CHECK-NEXT: s_delay_alu instid0(SALU_CYCLE_1) 127edf2d0a9SMichael Bedy ; CHECK-NEXT: v_add_nc_u32_e32 v0, s0, v0 128edf2d0a9SMichael Bedy $sgpr0 = S_MOV_B32 0 129edf2d0a9SMichael Bedy S_DELAY_ALU .id0_SALU_CYCLE_1 130edf2d0a9SMichael Bedy $vgpr0 = V_ADD_U32_e32 $sgpr0, $vgpr0, implicit $exec 131edf2d0a9SMichael Bedy... 132edf2d0a9SMichael Bedy 133edf2d0a9SMichael Bedy--- 134edf2d0a9SMichael Bedyname: valu_dep_1_same_trans32_dep_1 135edf2d0a9SMichael Bedybody: | 136edf2d0a9SMichael Bedy bb.0: 137edf2d0a9SMichael Bedy ; CHECK-LABEL: {{^}}valu_dep_1_same_trans32_dep_1: 138edf2d0a9SMichael Bedy ; CHECK: %bb.0: 139edf2d0a9SMichael Bedy ; CHECK-NEXT: v_exp_f32_e32 v0, v0 140edf2d0a9SMichael Bedy ; CHECK-NEXT: v_add_nc_u32_e32 v1, v1, v1 141edf2d0a9SMichael Bedy ; CHECK-NEXT: s_delay_alu instid0(TRANS32_DEP_1) | instid1(VALU_DEP_1) 142edf2d0a9SMichael Bedy ; CHECK-NEXT: v_add_nc_u32_e32 v0, v0, v1 143edf2d0a9SMichael Bedy $vgpr0 = V_EXP_F32_e32 $vgpr0, implicit $exec, implicit $mode 144edf2d0a9SMichael Bedy $vgpr1 = V_ADD_U32_e32 $vgpr1, $vgpr1, implicit $exec 145edf2d0a9SMichael Bedy S_DELAY_ALU .id0_TRANS32_DEP_1_skip_SAME_id1_VALU_DEP_1 146edf2d0a9SMichael Bedy $vgpr0 = V_ADD_U32_e32 $vgpr0, $vgpr1, implicit $exec 147edf2d0a9SMichael Bedy... 148edf2d0a9SMichael Bedy 149edf2d0a9SMichael Bedy--- 150edf2d0a9SMichael Bedyname: valu_dep_1_same_salu_cycle_1 151edf2d0a9SMichael Bedybody: | 152edf2d0a9SMichael Bedy bb.0: 153edf2d0a9SMichael Bedy ; CHECK-LABEL: {{^}}valu_dep_1_same_salu_cycle_1: 154edf2d0a9SMichael Bedy ; CHECK: %bb.0: 155edf2d0a9SMichael Bedy ; CHECK-NEXT: v_add_nc_u32_e32 v0, v0, v0 156edf2d0a9SMichael Bedy ; CHECK-NEXT: s_mov_b32 s0, 0 157edf2d0a9SMichael Bedy ; CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1) 158edf2d0a9SMichael Bedy ; CHECK-NEXT: v_add_nc_u32_e32 v0, s0, v0 159edf2d0a9SMichael Bedy $vgpr0 = V_ADD_U32_e32 $vgpr0, $vgpr0, implicit $exec 160edf2d0a9SMichael Bedy $sgpr0 = S_MOV_B32 0 161edf2d0a9SMichael Bedy S_DELAY_ALU .id0_VALU_DEP_1_skip_SAME_id1_SALU_CYCLE_1 162edf2d0a9SMichael Bedy $vgpr0 = V_ADD_U32_e32 $sgpr0, $vgpr0, implicit $exec 163edf2d0a9SMichael Bedy... 164edf2d0a9SMichael Bedy 165edf2d0a9SMichael Bedy--- 166edf2d0a9SMichael Bedyname: valu_dep_1_next_valu_dep_1 167edf2d0a9SMichael Bedybody: | 168edf2d0a9SMichael Bedy bb.0: 169edf2d0a9SMichael Bedy ; CHECK-LABEL: {{^}}valu_dep_1_next_valu_dep_1: 170edf2d0a9SMichael Bedy ; CHECK: %bb.0: 171edf2d0a9SMichael Bedy ; CHECK-NEXT: v_add_nc_u32_e32 v0, v0, v0 172edf2d0a9SMichael Bedy ; CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1) 173edf2d0a9SMichael Bedy ; CHECK-NEXT: v_add_nc_u32_e32 v0, v0, v0 174edf2d0a9SMichael Bedy ; CHECK-NEXT: v_add_nc_u32_e32 v0, v0, v0 175edf2d0a9SMichael Bedy $vgpr0 = V_ADD_U32_e32 $vgpr0, $vgpr0, implicit $exec 176edf2d0a9SMichael Bedy S_DELAY_ALU .id0_VALU_DEP_1_skip_NEXT_id1_VALU_DEP_1 177edf2d0a9SMichael Bedy $vgpr0 = V_ADD_U32_e32 $vgpr0, $vgpr0, implicit $exec 178edf2d0a9SMichael Bedy $vgpr0 = V_ADD_U32_e32 $vgpr0, $vgpr0, implicit $exec 179edf2d0a9SMichael Bedy... 180edf2d0a9SMichael Bedy 181edf2d0a9SMichael Bedy--- 182edf2d0a9SMichael Bedyname: valu_dep_2_next_valu_dep_2 183edf2d0a9SMichael Bedybody: | 184edf2d0a9SMichael Bedy bb.0: 185edf2d0a9SMichael Bedy ; CHECK-LABEL: {{^}}valu_dep_2_next_valu_dep_2: 186edf2d0a9SMichael Bedy ; CHECK: %bb.0: 187edf2d0a9SMichael Bedy ; CHECK-NEXT: v_add_nc_u32_e32 v0, v0, v0 188edf2d0a9SMichael Bedy ; CHECK-NEXT: v_add_nc_u32_e32 v1, v1, v1 189edf2d0a9SMichael Bedy ; CHECK-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2) 190edf2d0a9SMichael Bedy ; CHECK-NEXT: v_add_nc_u32_e32 v0, v0, v0 191edf2d0a9SMichael Bedy ; CHECK-NEXT: v_add_nc_u32_e32 v1, v1, v1 192edf2d0a9SMichael Bedy $vgpr0 = V_ADD_U32_e32 $vgpr0, $vgpr0, implicit $exec 193edf2d0a9SMichael Bedy $vgpr1 = V_ADD_U32_e32 $vgpr1, $vgpr1, implicit $exec 194edf2d0a9SMichael Bedy S_DELAY_ALU .id0_VALU_DEP_2_skip_NEXT_id1_VALU_DEP_2 195edf2d0a9SMichael Bedy $vgpr0 = V_ADD_U32_e32 $vgpr0, $vgpr0, implicit $exec 196edf2d0a9SMichael Bedy $vgpr1 = V_ADD_U32_e32 $vgpr1, $vgpr1, implicit $exec 197edf2d0a9SMichael Bedy... 198edf2d0a9SMichael Bedy 199edf2d0a9SMichael Bedy--- 200edf2d0a9SMichael Bedyname: valu_dep_2_skip_valu_dep_2 201edf2d0a9SMichael Bedybody: | 202edf2d0a9SMichael Bedy bb.0: 203edf2d0a9SMichael Bedy ; CHECK-LABEL: {{^}}valu_dep_2_skip_valu_dep_2 204edf2d0a9SMichael Bedy ; CHECK: %bb.0: 205edf2d0a9SMichael Bedy ; CHECK-NEXT: v_add_nc_u32_e32 v0, v0, v0 206edf2d0a9SMichael Bedy ; CHECK-NEXT: v_add_nc_u32_e32 v2, v1, v1 207edf2d0a9SMichael Bedy ; CHECK-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2) 208edf2d0a9SMichael Bedy ; CHECK-NEXT: v_add_nc_u32_e32 v1, v0, v1 209edf2d0a9SMichael Bedy ; CHECK-NEXT: v_add_nc_u32_e32 v4, v3, v3 210edf2d0a9SMichael Bedy ; CHECK-NEXT: v_add_nc_u32_e32 v1, v1, v1 211edf2d0a9SMichael Bedy $vgpr0 = V_ADD_U32_e32 $vgpr0, $vgpr0, implicit $exec 212edf2d0a9SMichael Bedy $vgpr2 = V_ADD_U32_e32 $vgpr1, $vgpr1, implicit $exec 213edf2d0a9SMichael Bedy S_DELAY_ALU .id0_VALU_DEP_2_skip_SKIP_1_id1_VALU_DEP_2 214edf2d0a9SMichael Bedy $vgpr1 = V_ADD_U32_e32 $vgpr0, $vgpr1, implicit $exec 215edf2d0a9SMichael Bedy $vgpr4 = V_ADD_U32_e32 $vgpr3, $vgpr3, implicit $exec 216edf2d0a9SMichael Bedy $vgpr1 = V_ADD_U32_e32 $vgpr1, $vgpr1, implicit $exec 217edf2d0a9SMichael Bedy... 218