1*9880d681SAndroid Build Coastguard Worker# RUN: llc -march=amdgcn -verify-machineinstrs -run-pass si-lower-control-flow -o - %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker# Getting an undef that is specifically a VGPR is tricky from IR 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Worker# CHECK-LABEL: name: extract_undef_offset_vgpr{{$}} 5*9880d681SAndroid Build Coastguard Worker# CHECK: bb.1: 6*9880d681SAndroid Build Coastguard Worker# CHECK: successors: %bb.2(0x40000000 / 0x80000000 = 50.00%), %bb.1(0x40000000 / 0x80000000 = 50.00%) 7*9880d681SAndroid Build Coastguard Worker# CHECK: liveins: %vgpr0_vgpr1_vgpr2_vgpr3{{$}} 8*9880d681SAndroid Build Coastguard Worker 9*9880d681SAndroid Build Coastguard Worker# CHECK: V_READFIRSTLANE_B32 undef %vgpr10, implicit %exec 10*9880d681SAndroid Build Coastguard Worker# CHECK: %vgpr0 = V_MOVRELS_B32_e32 %vgpr0, implicit %m0, implicit %exec, implicit %vgpr0_vgpr1_vgpr2_vgpr3 11*9880d681SAndroid Build Coastguard Worker# CHECK: S_CBRANCH_EXECNZ %bb.1, implicit %exec 12*9880d681SAndroid Build Coastguard Worker 13*9880d681SAndroid Build Coastguard Worker# CHECK: bb.2: 14*9880d681SAndroid Build Coastguard Worker# CHECK: liveins: %sgpr6_sgpr7, %sgpr4_sgpr5_sgpr6_sgpr7, %sgpr4, %sgpr5, %sgpr6, %sgpr7, %sgpr4_sgpr5, %vgpr0_vgpr1_vgpr2_vgpr3, %vgpr0, %vgpr1, %vgpr2, %vgpr3, %vgpr0_vgpr1, %vgpr2_vgpr3, %vgpr0_vgpr1_vgpr2, %vgpr1_vgpr2, %vgpr1_vgpr2_vgpr3, %sgpr0_sgpr1, %sgpr0, %sgpr1{{$}} 15*9880d681SAndroid Build Coastguard Worker 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Worker--- | 18*9880d681SAndroid Build Coastguard Worker target datalayout = "e-p:32:32-p1:64:64-p2:64:64-p3:32:32-p4:64:64-p5:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-v2048:2048-n32:64" 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Worker define void @extract_undef_offset_vgpr(i32 addrspace(1)* %out, <4 x i32> addrspace(1)* %in) { 21*9880d681SAndroid Build Coastguard Worker entry: 22*9880d681SAndroid Build Coastguard Worker %ld = load volatile <4 x i32>, <4 x i32> addrspace(1)* %in 23*9880d681SAndroid Build Coastguard Worker %value = extractelement <4 x i32> %ld, i32 undef 24*9880d681SAndroid Build Coastguard Worker store i32 %value, i32 addrspace(1)* %out 25*9880d681SAndroid Build Coastguard Worker ret void 26*9880d681SAndroid Build Coastguard Worker } 27*9880d681SAndroid Build Coastguard Worker 28*9880d681SAndroid Build Coastguard Worker define void @extract_undef_neg_offset_vgpr(i32 addrspace(1)* %out, <4 x i32> addrspace(1)* %in) { 29*9880d681SAndroid Build Coastguard Worker entry: 30*9880d681SAndroid Build Coastguard Worker %ld = load volatile <4 x i32>, <4 x i32> addrspace(1)* %in 31*9880d681SAndroid Build Coastguard Worker %value = extractelement <4 x i32> %ld, i32 undef 32*9880d681SAndroid Build Coastguard Worker store i32 %value, i32 addrspace(1)* %out 33*9880d681SAndroid Build Coastguard Worker ret void 34*9880d681SAndroid Build Coastguard Worker } 35*9880d681SAndroid Build Coastguard Worker 36*9880d681SAndroid Build Coastguard Worker define void @insert_undef_offset_vgpr(<4 x i32> addrspace(1)* %out, <4 x i32> addrspace(1)* %in) { 37*9880d681SAndroid Build Coastguard Worker entry: 38*9880d681SAndroid Build Coastguard Worker %ld = load <4 x i32>, <4 x i32> addrspace(1)* %in 39*9880d681SAndroid Build Coastguard Worker %value = insertelement <4 x i32> %ld, i32 5, i32 undef 40*9880d681SAndroid Build Coastguard Worker store <4 x i32> %value, <4 x i32> addrspace(1)* %out 41*9880d681SAndroid Build Coastguard Worker ret void 42*9880d681SAndroid Build Coastguard Worker } 43*9880d681SAndroid Build Coastguard Worker 44*9880d681SAndroid Build Coastguard Worker define void @insert_undef_neg_offset_vgpr(<4 x i32> addrspace(1)* %out, <4 x i32> addrspace(1)* %in) { 45*9880d681SAndroid Build Coastguard Worker entry: 46*9880d681SAndroid Build Coastguard Worker %ld = load <4 x i32>, <4 x i32> addrspace(1)* %in 47*9880d681SAndroid Build Coastguard Worker %value = insertelement <4 x i32> %ld, i32 5, i32 undef 48*9880d681SAndroid Build Coastguard Worker store <4 x i32> %value, <4 x i32> addrspace(1)* %out 49*9880d681SAndroid Build Coastguard Worker ret void 50*9880d681SAndroid Build Coastguard Worker } 51*9880d681SAndroid Build Coastguard Worker 52*9880d681SAndroid Build Coastguard Worker define void @insert_undef_value_offset_vgpr(<4 x i32> addrspace(1)*%out, <4 x i32> addrspace(1)* %in, i32 %idx) { 53*9880d681SAndroid Build Coastguard Worker entry: 54*9880d681SAndroid Build Coastguard Worker %ld = load <4 x i32>, <4 x i32> addrspace(1)* %in 55*9880d681SAndroid Build Coastguard Worker %value = insertelement <4 x i32> %ld, i32 undef, i32 %idx 56*9880d681SAndroid Build Coastguard Worker store <4 x i32> %value, <4 x i32> addrspace(1)* %out 57*9880d681SAndroid Build Coastguard Worker ret void 58*9880d681SAndroid Build Coastguard Worker } 59*9880d681SAndroid Build Coastguard Worker 60*9880d681SAndroid Build Coastguard Worker... 61*9880d681SAndroid Build Coastguard Worker--- 62*9880d681SAndroid Build Coastguard Workername: extract_undef_offset_vgpr 63*9880d681SAndroid Build Coastguard Workeralignment: 0 64*9880d681SAndroid Build Coastguard WorkerexposesReturnsTwice: false 65*9880d681SAndroid Build Coastguard WorkerhasInlineAsm: false 66*9880d681SAndroid Build Coastguard WorkerallVRegsAllocated: true 67*9880d681SAndroid Build Coastguard WorkerisSSA: false 68*9880d681SAndroid Build Coastguard WorkertracksRegLiveness: true 69*9880d681SAndroid Build Coastguard WorkertracksSubRegLiveness: true 70*9880d681SAndroid Build Coastguard Workerliveins: 71*9880d681SAndroid Build Coastguard Worker - { reg: '%sgpr0_sgpr1' } 72*9880d681SAndroid Build Coastguard WorkerframeInfo: 73*9880d681SAndroid Build Coastguard Worker isFrameAddressTaken: false 74*9880d681SAndroid Build Coastguard Worker isReturnAddressTaken: false 75*9880d681SAndroid Build Coastguard Worker hasStackMap: false 76*9880d681SAndroid Build Coastguard Worker hasPatchPoint: false 77*9880d681SAndroid Build Coastguard Worker stackSize: 0 78*9880d681SAndroid Build Coastguard Worker offsetAdjustment: 0 79*9880d681SAndroid Build Coastguard Worker maxAlignment: 0 80*9880d681SAndroid Build Coastguard Worker adjustsStack: false 81*9880d681SAndroid Build Coastguard Worker hasCalls: false 82*9880d681SAndroid Build Coastguard Worker maxCallFrameSize: 0 83*9880d681SAndroid Build Coastguard Worker hasOpaqueSPAdjustment: false 84*9880d681SAndroid Build Coastguard Worker hasVAStart: false 85*9880d681SAndroid Build Coastguard Worker hasMustTailInVarArgFunc: false 86*9880d681SAndroid Build Coastguard Workerbody: | 87*9880d681SAndroid Build Coastguard Worker bb.0.entry: 88*9880d681SAndroid Build Coastguard Worker liveins: %sgpr0_sgpr1 89*9880d681SAndroid Build Coastguard Worker 90*9880d681SAndroid Build Coastguard Worker %sgpr4_sgpr5 = S_LOAD_DWORDX2_IMM %sgpr0_sgpr1, 11 91*9880d681SAndroid Build Coastguard Worker %sgpr7 = S_MOV_B32 61440 92*9880d681SAndroid Build Coastguard Worker %sgpr6 = S_MOV_B32 -1 93*9880d681SAndroid Build Coastguard Worker S_WAITCNT 127 94*9880d681SAndroid Build Coastguard Worker %vgpr0_vgpr1_vgpr2_vgpr3 = BUFFER_LOAD_DWORDX4_OFFSET %sgpr4_sgpr5_sgpr6_sgpr7, 0, 0, 0, 0, 0, implicit %exec 95*9880d681SAndroid Build Coastguard Worker %sgpr4_sgpr5 = S_LOAD_DWORDX2_IMM killed %sgpr0_sgpr1, 9 96*9880d681SAndroid Build Coastguard Worker S_WAITCNT 3952 97*9880d681SAndroid Build Coastguard Worker %vgpr0, dead %sgpr0_sgpr1 = SI_INDIRECT_SRC_V4 killed %vgpr0_vgpr1_vgpr2_vgpr3, undef %vgpr10, 0, implicit-def dead %exec, implicit-def dead %vcc, implicit-def dead %m0, implicit %exec 98*9880d681SAndroid Build Coastguard Worker S_WAITCNT 127 99*9880d681SAndroid Build Coastguard Worker BUFFER_STORE_DWORD_OFFSET killed %vgpr0, killed %sgpr4_sgpr5_sgpr6_sgpr7, 0, 0, 0, 0, 0, implicit %exec 100*9880d681SAndroid Build Coastguard Worker S_ENDPGM 101*9880d681SAndroid Build Coastguard Worker 102*9880d681SAndroid Build Coastguard Worker... 103*9880d681SAndroid Build Coastguard Worker 104*9880d681SAndroid Build Coastguard Worker# CHECK-LABEL: name: extract_undef_neg_offset_vgpr{{$}} 105*9880d681SAndroid Build Coastguard Worker# CHECK: bb.1: 106*9880d681SAndroid Build Coastguard Worker# CHECK: successors: %bb.2(0x40000000 / 0x80000000 = 50.00%), %bb.1(0x40000000 / 0x80000000 = 50.00%) 107*9880d681SAndroid Build Coastguard Worker# CHECK: liveins: %vgpr0_vgpr1_vgpr2_vgpr3{{$}} 108*9880d681SAndroid Build Coastguard Worker 109*9880d681SAndroid Build Coastguard Worker# CHECK: %vcc_lo = V_READFIRSTLANE_B32 undef %vgpr10, implicit %exec 110*9880d681SAndroid Build Coastguard Worker# CHECK: %m0 = S_MOV_B32 %vcc_lo 111*9880d681SAndroid Build Coastguard Worker# CHECK: %m0 = S_ADD_I32 %m0, -7, implicit-def %scc 112*9880d681SAndroid Build Coastguard Worker# CHECK: %vgpr0 = V_MOVRELS_B32_e32 %vgpr0, implicit %m0, implicit %exec, implicit %vgpr0_vgpr1_vgpr2_vgpr3 113*9880d681SAndroid Build Coastguard Worker# CHECK: S_CBRANCH_EXECNZ %bb.1, implicit %exec 114*9880d681SAndroid Build Coastguard Worker 115*9880d681SAndroid Build Coastguard Worker# CHECK: bb.2: 116*9880d681SAndroid Build Coastguard Worker# CHECK: liveins: %sgpr6_sgpr7, %sgpr4_sgpr5_sgpr6_sgpr7, %sgpr4, %sgpr5, %sgpr6, %sgpr7, %sgpr4_sgpr5, %vgpr0_vgpr1_vgpr2_vgpr3, %vgpr0, %vgpr1, %vgpr2, %vgpr3, %vgpr0_vgpr1, %vgpr2_vgpr3, %vgpr0_vgpr1_vgpr2, %vgpr1_vgpr2, %vgpr1_vgpr2_vgpr3, %sgpr0_sgpr1, %sgpr0, %sgpr1 117*9880d681SAndroid Build Coastguard Worker 118*9880d681SAndroid Build Coastguard Workername: extract_undef_neg_offset_vgpr 119*9880d681SAndroid Build Coastguard Workeralignment: 0 120*9880d681SAndroid Build Coastguard WorkerexposesReturnsTwice: false 121*9880d681SAndroid Build Coastguard WorkerhasInlineAsm: false 122*9880d681SAndroid Build Coastguard WorkerallVRegsAllocated: true 123*9880d681SAndroid Build Coastguard WorkerisSSA: false 124*9880d681SAndroid Build Coastguard WorkertracksRegLiveness: true 125*9880d681SAndroid Build Coastguard WorkertracksSubRegLiveness: true 126*9880d681SAndroid Build Coastguard Workerliveins: 127*9880d681SAndroid Build Coastguard Worker - { reg: '%sgpr0_sgpr1' } 128*9880d681SAndroid Build Coastguard WorkerframeInfo: 129*9880d681SAndroid Build Coastguard Worker isFrameAddressTaken: false 130*9880d681SAndroid Build Coastguard Worker isReturnAddressTaken: false 131*9880d681SAndroid Build Coastguard Worker hasStackMap: false 132*9880d681SAndroid Build Coastguard Worker hasPatchPoint: false 133*9880d681SAndroid Build Coastguard Worker stackSize: 0 134*9880d681SAndroid Build Coastguard Worker offsetAdjustment: 0 135*9880d681SAndroid Build Coastguard Worker maxAlignment: 0 136*9880d681SAndroid Build Coastguard Worker adjustsStack: false 137*9880d681SAndroid Build Coastguard Worker hasCalls: false 138*9880d681SAndroid Build Coastguard Worker maxCallFrameSize: 0 139*9880d681SAndroid Build Coastguard Worker hasOpaqueSPAdjustment: false 140*9880d681SAndroid Build Coastguard Worker hasVAStart: false 141*9880d681SAndroid Build Coastguard Worker hasMustTailInVarArgFunc: false 142*9880d681SAndroid Build Coastguard Workerbody: | 143*9880d681SAndroid Build Coastguard Worker bb.0.entry: 144*9880d681SAndroid Build Coastguard Worker liveins: %sgpr0_sgpr1 145*9880d681SAndroid Build Coastguard Worker 146*9880d681SAndroid Build Coastguard Worker %sgpr4_sgpr5 = S_LOAD_DWORDX2_IMM %sgpr0_sgpr1, 11 147*9880d681SAndroid Build Coastguard Worker %sgpr7 = S_MOV_B32 61440 148*9880d681SAndroid Build Coastguard Worker %sgpr6 = S_MOV_B32 -1 149*9880d681SAndroid Build Coastguard Worker S_WAITCNT 127 150*9880d681SAndroid Build Coastguard Worker %vgpr0_vgpr1_vgpr2_vgpr3 = BUFFER_LOAD_DWORDX4_OFFSET %sgpr4_sgpr5_sgpr6_sgpr7, 0, 0, 0, 0, 0, implicit %exec 151*9880d681SAndroid Build Coastguard Worker %sgpr4_sgpr5 = S_LOAD_DWORDX2_IMM killed %sgpr0_sgpr1, 9 152*9880d681SAndroid Build Coastguard Worker S_WAITCNT 3952 153*9880d681SAndroid Build Coastguard Worker %vgpr0, dead %sgpr0_sgpr1 = SI_INDIRECT_SRC_V4 killed %vgpr0_vgpr1_vgpr2_vgpr3, undef %vgpr10, -7, implicit-def dead %exec, implicit-def dead %vcc, implicit-def dead %m0, implicit %exec 154*9880d681SAndroid Build Coastguard Worker S_WAITCNT 127 155*9880d681SAndroid Build Coastguard Worker BUFFER_STORE_DWORD_OFFSET killed %vgpr0, killed %sgpr4_sgpr5_sgpr6_sgpr7, 0, 0, 0, 0, 0, implicit %exec 156*9880d681SAndroid Build Coastguard Worker S_ENDPGM 157*9880d681SAndroid Build Coastguard Worker 158*9880d681SAndroid Build Coastguard Worker... 159*9880d681SAndroid Build Coastguard Worker 160*9880d681SAndroid Build Coastguard Worker# CHECK-LABEL: name: insert_undef_offset_vgpr{{$}} 161*9880d681SAndroid Build Coastguard Worker# CHECK: bb.1: 162*9880d681SAndroid Build Coastguard Worker# CHECK: successors: %bb.2(0x40000000 / 0x80000000 = 50.00%), %bb.1(0x40000000 / 0x80000000 = 50.00%) 163*9880d681SAndroid Build Coastguard Worker# CHECK: liveins: %vgpr4, %vgpr0_vgpr1_vgpr2_vgpr3{{$}} 164*9880d681SAndroid Build Coastguard Worker 165*9880d681SAndroid Build Coastguard Worker# CHECK: %vcc_lo = V_READFIRSTLANE_B32 undef %vgpr10, implicit %exec 166*9880d681SAndroid Build Coastguard Worker# CHECK: %m0 = S_MOV_B32 %vcc_lo 167*9880d681SAndroid Build Coastguard Worker# CHECK: %vgpr0 = V_MOVRELD_B32_e32 %vgpr4, implicit %m0, implicit %exec, implicit %vgpr0_vgpr1_vgpr2_vgpr3 168*9880d681SAndroid Build Coastguard Worker# CHECK: S_CBRANCH_EXECNZ %bb.1, implicit %exec 169*9880d681SAndroid Build Coastguard Worker 170*9880d681SAndroid Build Coastguard Worker# CHECK: bb.2: 171*9880d681SAndroid Build Coastguard Worker# CHECK: liveins: %sgpr6_sgpr7, %sgpr7, %sgpr4_sgpr5, %sgpr5, %sgpr4_sgpr5_sgpr6_sgpr7, %sgpr6, %sgpr4, %vgpr0_vgpr1_vgpr2_vgpr3, %vgpr0, %vgpr1, %vgpr2, %vgpr3, %vgpr0_vgpr1, %vgpr2_vgpr3, %vgpr0_vgpr1_vgpr2, %vgpr1_vgpr2, %vgpr1_vgpr2_vgpr3, %vgpr4, %sgpr0_sgpr1, %sgpr0, %sgpr1 172*9880d681SAndroid Build Coastguard Worker 173*9880d681SAndroid Build Coastguard Workername: insert_undef_offset_vgpr 174*9880d681SAndroid Build Coastguard Workeralignment: 0 175*9880d681SAndroid Build Coastguard WorkerexposesReturnsTwice: false 176*9880d681SAndroid Build Coastguard WorkerhasInlineAsm: false 177*9880d681SAndroid Build Coastguard WorkerallVRegsAllocated: true 178*9880d681SAndroid Build Coastguard WorkerisSSA: false 179*9880d681SAndroid Build Coastguard WorkertracksRegLiveness: true 180*9880d681SAndroid Build Coastguard WorkertracksSubRegLiveness: true 181*9880d681SAndroid Build Coastguard Workerliveins: 182*9880d681SAndroid Build Coastguard Worker - { reg: '%sgpr0_sgpr1' } 183*9880d681SAndroid Build Coastguard WorkerframeInfo: 184*9880d681SAndroid Build Coastguard Worker isFrameAddressTaken: false 185*9880d681SAndroid Build Coastguard Worker isReturnAddressTaken: false 186*9880d681SAndroid Build Coastguard Worker hasStackMap: false 187*9880d681SAndroid Build Coastguard Worker hasPatchPoint: false 188*9880d681SAndroid Build Coastguard Worker stackSize: 0 189*9880d681SAndroid Build Coastguard Worker offsetAdjustment: 0 190*9880d681SAndroid Build Coastguard Worker maxAlignment: 0 191*9880d681SAndroid Build Coastguard Worker adjustsStack: false 192*9880d681SAndroid Build Coastguard Worker hasCalls: false 193*9880d681SAndroid Build Coastguard Worker maxCallFrameSize: 0 194*9880d681SAndroid Build Coastguard Worker hasOpaqueSPAdjustment: false 195*9880d681SAndroid Build Coastguard Worker hasVAStart: false 196*9880d681SAndroid Build Coastguard Worker hasMustTailInVarArgFunc: false 197*9880d681SAndroid Build Coastguard Workerbody: | 198*9880d681SAndroid Build Coastguard Worker bb.0.entry: 199*9880d681SAndroid Build Coastguard Worker liveins: %sgpr0_sgpr1 200*9880d681SAndroid Build Coastguard Worker 201*9880d681SAndroid Build Coastguard Worker %sgpr4_sgpr5 = S_LOAD_DWORDX2_IMM %sgpr0_sgpr1, 11 :: (non-temporal invariant load 8 from `i64 addrspace(2)* undef`) 202*9880d681SAndroid Build Coastguard Worker %sgpr7 = S_MOV_B32 61440 203*9880d681SAndroid Build Coastguard Worker %sgpr6 = S_MOV_B32 -1 204*9880d681SAndroid Build Coastguard Worker %vgpr4 = V_MOV_B32_e32 5, implicit %exec 205*9880d681SAndroid Build Coastguard Worker S_WAITCNT 127 206*9880d681SAndroid Build Coastguard Worker %vgpr0_vgpr1_vgpr2_vgpr3 = BUFFER_LOAD_DWORDX4_OFFSET %sgpr4_sgpr5_sgpr6_sgpr7, 0, 0, 0, 0, 0, implicit %exec :: (load 16 from %ir.in) 207*9880d681SAndroid Build Coastguard Worker %sgpr4_sgpr5 = S_LOAD_DWORDX2_IMM killed %sgpr0_sgpr1, 9 :: (non-temporal invariant load 8 from `i64 addrspace(2)* undef`) 208*9880d681SAndroid Build Coastguard Worker S_WAITCNT 3952 209*9880d681SAndroid Build Coastguard Worker %vgpr0_vgpr1_vgpr2_vgpr3, dead %sgpr0_sgpr1 = SI_INDIRECT_DST_V4 %vgpr0_vgpr1_vgpr2_vgpr3, undef %vgpr10, 0, killed %vgpr4, implicit-def dead %exec, implicit-def dead %vcc, implicit-def dead %m0, implicit %exec 210*9880d681SAndroid Build Coastguard Worker S_WAITCNT 127 211*9880d681SAndroid Build Coastguard Worker BUFFER_STORE_DWORDX4_OFFSET killed %vgpr0_vgpr1_vgpr2_vgpr3, killed %sgpr4_sgpr5_sgpr6_sgpr7, 0, 0, 0, 0, 0, implicit %exec :: (store 16 into %ir.out) 212*9880d681SAndroid Build Coastguard Worker S_ENDPGM 213*9880d681SAndroid Build Coastguard Worker 214*9880d681SAndroid Build Coastguard Worker... 215*9880d681SAndroid Build Coastguard Worker 216*9880d681SAndroid Build Coastguard Worker# CHECK-LABEL: name: insert_undef_neg_offset_vgpr{{$}} 217*9880d681SAndroid Build Coastguard Worker# CHECK: bb.1: 218*9880d681SAndroid Build Coastguard Worker# CHECK: successors: %bb.2(0x40000000 / 0x80000000 = 50.00%), %bb.1(0x40000000 / 0x80000000 = 50.00%) 219*9880d681SAndroid Build Coastguard Worker# CHECK: liveins: %vgpr4, %vgpr0_vgpr1_vgpr2_vgpr3{{$}} 220*9880d681SAndroid Build Coastguard Worker 221*9880d681SAndroid Build Coastguard Worker# CHECK: %vcc_lo = V_READFIRSTLANE_B32 undef %vgpr10, implicit %exec 222*9880d681SAndroid Build Coastguard Worker# CHECK: %m0 = S_MOV_B32 %vcc_lo 223*9880d681SAndroid Build Coastguard Worker# CHECK: %m0 = S_ADD_I32 %m0, -7, implicit-def %scc 224*9880d681SAndroid Build Coastguard Worker# CHECK: %vgpr0 = V_MOVRELD_B32_e32 %vgpr4, implicit %m0, implicit %exec, implicit %vgpr0_vgpr1_vgpr2_vgpr3 225*9880d681SAndroid Build Coastguard Worker# CHECK: S_CBRANCH_EXECNZ %bb.1, implicit %exec 226*9880d681SAndroid Build Coastguard Worker 227*9880d681SAndroid Build Coastguard Worker# CHECK: bb.2: 228*9880d681SAndroid Build Coastguard Worker# CHECK: liveins: %sgpr6_sgpr7, %sgpr7, %sgpr4_sgpr5, %sgpr5, %sgpr4_sgpr5_sgpr6_sgpr7, %sgpr6, %sgpr4, %vgpr0_vgpr1_vgpr2_vgpr3, %vgpr0, %vgpr1, %vgpr2, %vgpr3, %vgpr0_vgpr1, %vgpr2_vgpr3, %vgpr0_vgpr1_vgpr2, %vgpr1_vgpr2, %vgpr1_vgpr2_vgpr3, %vgpr4, %sgpr0_sgpr1, %sgpr0, %sgpr1{{$}} 229*9880d681SAndroid Build Coastguard Worker 230*9880d681SAndroid Build Coastguard Workername: insert_undef_neg_offset_vgpr 231*9880d681SAndroid Build Coastguard Workeralignment: 0 232*9880d681SAndroid Build Coastguard WorkerexposesReturnsTwice: false 233*9880d681SAndroid Build Coastguard WorkerhasInlineAsm: false 234*9880d681SAndroid Build Coastguard WorkerallVRegsAllocated: true 235*9880d681SAndroid Build Coastguard WorkerisSSA: false 236*9880d681SAndroid Build Coastguard WorkertracksRegLiveness: true 237*9880d681SAndroid Build Coastguard WorkertracksSubRegLiveness: true 238*9880d681SAndroid Build Coastguard Workerliveins: 239*9880d681SAndroid Build Coastguard Worker - { reg: '%sgpr0_sgpr1' } 240*9880d681SAndroid Build Coastguard WorkerframeInfo: 241*9880d681SAndroid Build Coastguard Worker isFrameAddressTaken: false 242*9880d681SAndroid Build Coastguard Worker isReturnAddressTaken: false 243*9880d681SAndroid Build Coastguard Worker hasStackMap: false 244*9880d681SAndroid Build Coastguard Worker hasPatchPoint: false 245*9880d681SAndroid Build Coastguard Worker stackSize: 0 246*9880d681SAndroid Build Coastguard Worker offsetAdjustment: 0 247*9880d681SAndroid Build Coastguard Worker maxAlignment: 0 248*9880d681SAndroid Build Coastguard Worker adjustsStack: false 249*9880d681SAndroid Build Coastguard Worker hasCalls: false 250*9880d681SAndroid Build Coastguard Worker maxCallFrameSize: 0 251*9880d681SAndroid Build Coastguard Worker hasOpaqueSPAdjustment: false 252*9880d681SAndroid Build Coastguard Worker hasVAStart: false 253*9880d681SAndroid Build Coastguard Worker hasMustTailInVarArgFunc: false 254*9880d681SAndroid Build Coastguard Workerbody: | 255*9880d681SAndroid Build Coastguard Worker bb.0.entry: 256*9880d681SAndroid Build Coastguard Worker liveins: %sgpr0_sgpr1 257*9880d681SAndroid Build Coastguard Worker 258*9880d681SAndroid Build Coastguard Worker %sgpr4_sgpr5 = S_LOAD_DWORDX2_IMM %sgpr0_sgpr1, 11 :: (non-temporal invariant load 8 from `i64 addrspace(2)* undef`) 259*9880d681SAndroid Build Coastguard Worker %sgpr7 = S_MOV_B32 61440 260*9880d681SAndroid Build Coastguard Worker %sgpr6 = S_MOV_B32 -1 261*9880d681SAndroid Build Coastguard Worker %vgpr4 = V_MOV_B32_e32 5, implicit %exec 262*9880d681SAndroid Build Coastguard Worker S_WAITCNT 127 263*9880d681SAndroid Build Coastguard Worker %vgpr0_vgpr1_vgpr2_vgpr3 = BUFFER_LOAD_DWORDX4_OFFSET %sgpr4_sgpr5_sgpr6_sgpr7, 0, 0, 0, 0, 0, implicit %exec :: (load 16 from %ir.in) 264*9880d681SAndroid Build Coastguard Worker %sgpr4_sgpr5 = S_LOAD_DWORDX2_IMM killed %sgpr0_sgpr1, 9 :: (non-temporal invariant load 8 from `i64 addrspace(2)* undef`) 265*9880d681SAndroid Build Coastguard Worker S_WAITCNT 3952 266*9880d681SAndroid Build Coastguard Worker %vgpr0_vgpr1_vgpr2_vgpr3, dead %sgpr0_sgpr1 = SI_INDIRECT_DST_V4 %vgpr0_vgpr1_vgpr2_vgpr3, undef %vgpr10, -7, killed %vgpr4, implicit-def dead %exec, implicit-def dead %vcc, implicit-def dead %m0, implicit %exec 267*9880d681SAndroid Build Coastguard Worker S_WAITCNT 127 268*9880d681SAndroid Build Coastguard Worker BUFFER_STORE_DWORDX4_OFFSET killed %vgpr0_vgpr1_vgpr2_vgpr3, killed %sgpr4_sgpr5_sgpr6_sgpr7, 0, 0, 0, 0, 0, implicit %exec :: (store 16 into %ir.out) 269*9880d681SAndroid Build Coastguard Worker S_ENDPGM 270*9880d681SAndroid Build Coastguard Worker 271*9880d681SAndroid Build Coastguard Worker... 272*9880d681SAndroid Build Coastguard Worker 273*9880d681SAndroid Build Coastguard Worker# CHECK-LABEL: insert_undef_value_offset_vgpr{{$}} 274*9880d681SAndroid Build Coastguard Worker# CHECK: bb.1: 275*9880d681SAndroid Build Coastguard Worker# CHECK: successors: %bb.2(0x40000000 / 0x80000000 = 50.00%), %bb.1(0x40000000 / 0x80000000 = 50.00%) 276*9880d681SAndroid Build Coastguard Worker# CHECK: liveins: %vgpr4, %vgpr0_vgpr1_vgpr2_vgpr3{{$}} 277*9880d681SAndroid Build Coastguard Worker 278*9880d681SAndroid Build Coastguard Worker# CHECK: %vcc_lo = V_READFIRSTLANE_B32 %vgpr4, implicit %exec 279*9880d681SAndroid Build Coastguard Worker# CHECK: %m0 = S_MOV_B32 %vcc_lo 280*9880d681SAndroid Build Coastguard Worker# CHECK: %vgpr0 = V_MOVRELD_B32_e32 undef %vgpr10, implicit %m0, implicit %exec, implicit %vgpr0_vgpr1_vgpr2_vgpr3 281*9880d681SAndroid Build Coastguard Worker# CHECK: S_CBRANCH_EXECNZ %bb.1, implicit %exec 282*9880d681SAndroid Build Coastguard Worker 283*9880d681SAndroid Build Coastguard Worker# CHECK: bb.2: 284*9880d681SAndroid Build Coastguard Worker# CHECK: liveins: %sgpr6_sgpr7, %sgpr7, %sgpr4_sgpr5, %sgpr5, %sgpr4_sgpr5_sgpr6_sgpr7, %sgpr6, %sgpr4, %vgpr0_vgpr1_vgpr2_vgpr3, %vgpr0, %vgpr1, %vgpr2, %vgpr3, %vgpr0_vgpr1, %vgpr2_vgpr3, %vgpr0_vgpr1_vgpr2, %vgpr1_vgpr2, %vgpr1_vgpr2_vgpr3, %vgpr4, %sgpr0_sgpr1, %sgpr0, %sgpr1{{$}} 285*9880d681SAndroid Build Coastguard Worker 286*9880d681SAndroid Build Coastguard Workername: insert_undef_value_offset_vgpr 287*9880d681SAndroid Build Coastguard Workeralignment: 0 288*9880d681SAndroid Build Coastguard WorkerexposesReturnsTwice: false 289*9880d681SAndroid Build Coastguard WorkerhasInlineAsm: false 290*9880d681SAndroid Build Coastguard WorkerallVRegsAllocated: true 291*9880d681SAndroid Build Coastguard WorkerisSSA: false 292*9880d681SAndroid Build Coastguard WorkertracksRegLiveness: true 293*9880d681SAndroid Build Coastguard WorkertracksSubRegLiveness: true 294*9880d681SAndroid Build Coastguard Workerliveins: 295*9880d681SAndroid Build Coastguard Worker - { reg: '%sgpr0_sgpr1' } 296*9880d681SAndroid Build Coastguard WorkerframeInfo: 297*9880d681SAndroid Build Coastguard Worker isFrameAddressTaken: false 298*9880d681SAndroid Build Coastguard Worker isReturnAddressTaken: false 299*9880d681SAndroid Build Coastguard Worker hasStackMap: false 300*9880d681SAndroid Build Coastguard Worker hasPatchPoint: false 301*9880d681SAndroid Build Coastguard Worker stackSize: 0 302*9880d681SAndroid Build Coastguard Worker offsetAdjustment: 0 303*9880d681SAndroid Build Coastguard Worker maxAlignment: 0 304*9880d681SAndroid Build Coastguard Worker adjustsStack: false 305*9880d681SAndroid Build Coastguard Worker hasCalls: false 306*9880d681SAndroid Build Coastguard Worker maxCallFrameSize: 0 307*9880d681SAndroid Build Coastguard Worker hasOpaqueSPAdjustment: false 308*9880d681SAndroid Build Coastguard Worker hasVAStart: false 309*9880d681SAndroid Build Coastguard Worker hasMustTailInVarArgFunc: false 310*9880d681SAndroid Build Coastguard Workerbody: | 311*9880d681SAndroid Build Coastguard Worker bb.0.entry: 312*9880d681SAndroid Build Coastguard Worker liveins: %sgpr0_sgpr1 313*9880d681SAndroid Build Coastguard Worker 314*9880d681SAndroid Build Coastguard Worker %sgpr4_sgpr5 = S_LOAD_DWORDX2_IMM %sgpr0_sgpr1, 11 :: (non-temporal invariant load 8 from `i64 addrspace(2)* undef`) 315*9880d681SAndroid Build Coastguard Worker %sgpr7 = S_MOV_B32 61440 316*9880d681SAndroid Build Coastguard Worker %sgpr6 = S_MOV_B32 -1 317*9880d681SAndroid Build Coastguard Worker %vgpr4 = V_MOV_B32_e32 2, implicit %exec 318*9880d681SAndroid Build Coastguard Worker S_WAITCNT 127 319*9880d681SAndroid Build Coastguard Worker %vgpr0_vgpr1_vgpr2_vgpr3 = BUFFER_LOAD_DWORDX4_OFFSET %sgpr4_sgpr5_sgpr6_sgpr7, 0, 0, 0, 0, 0, implicit %exec :: (load 16 from %ir.in) 320*9880d681SAndroid Build Coastguard Worker %sgpr4_sgpr5 = S_LOAD_DWORDX2_IMM killed %sgpr0_sgpr1, 9 :: (non-temporal invariant load 8 from `i64 addrspace(2)* undef`) 321*9880d681SAndroid Build Coastguard Worker S_WAITCNT 3952 322*9880d681SAndroid Build Coastguard Worker %vgpr0_vgpr1_vgpr2_vgpr3, dead %sgpr0_sgpr1 = SI_INDIRECT_DST_V4 %vgpr0_vgpr1_vgpr2_vgpr3, killed %vgpr4, 0, undef %vgpr10, implicit-def dead %exec, implicit-def dead %vcc, implicit-def dead %m0, implicit %exec 323*9880d681SAndroid Build Coastguard Worker S_WAITCNT 127 324*9880d681SAndroid Build Coastguard Worker BUFFER_STORE_DWORDX4_OFFSET killed %vgpr0_vgpr1_vgpr2_vgpr3, killed %sgpr4_sgpr5_sgpr6_sgpr7, 0, 0, 0, 0, 0, implicit %exec :: (store 16 into %ir.out) 325*9880d681SAndroid Build Coastguard Worker S_ENDPGM 326*9880d681SAndroid Build Coastguard Worker 327*9880d681SAndroid Build Coastguard Worker... 328