1*9880d681SAndroid Build Coastguard Worker;RUN: llc < %s -march=amdgcn -mcpu=verde -verify-machineinstrs | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker;RUN: llc < %s -march=amdgcn -mcpu=tonga -verify-machineinstrs | FileCheck %s 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_v2: 5*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4 {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da 6*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_v2() { 7*9880d681SAndroid Build Coastguard Workermain_body: 8*9880d681SAndroid Build Coastguard Worker %r = call <4 x float> @llvm.SI.gather4.v2i32(<2 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0) 9*9880d681SAndroid Build Coastguard Worker %r0 = extractelement <4 x float> %r, i32 0 10*9880d681SAndroid Build Coastguard Worker %r1 = extractelement <4 x float> %r, i32 1 11*9880d681SAndroid Build Coastguard Worker %r2 = extractelement <4 x float> %r, i32 2 12*9880d681SAndroid Build Coastguard Worker %r3 = extractelement <4 x float> %r, i32 3 13*9880d681SAndroid Build Coastguard Worker call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3) 14*9880d681SAndroid Build Coastguard Worker ret void 15*9880d681SAndroid Build Coastguard Worker} 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4: 18*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4 {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da 19*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4() { 20*9880d681SAndroid Build Coastguard Workermain_body: 21*9880d681SAndroid Build Coastguard Worker %r = call <4 x float> @llvm.SI.gather4.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0) 22*9880d681SAndroid Build Coastguard Worker %r0 = extractelement <4 x float> %r, i32 0 23*9880d681SAndroid Build Coastguard Worker %r1 = extractelement <4 x float> %r, i32 1 24*9880d681SAndroid Build Coastguard Worker %r2 = extractelement <4 x float> %r, i32 2 25*9880d681SAndroid Build Coastguard Worker %r3 = extractelement <4 x float> %r, i32 3 26*9880d681SAndroid Build Coastguard Worker call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3) 27*9880d681SAndroid Build Coastguard Worker ret void 28*9880d681SAndroid Build Coastguard Worker} 29*9880d681SAndroid Build Coastguard Worker 30*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_cl: 31*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_cl {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da 32*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_cl() { 33*9880d681SAndroid Build Coastguard Workermain_body: 34*9880d681SAndroid Build Coastguard Worker %r = call <4 x float> @llvm.SI.gather4.cl.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0) 35*9880d681SAndroid Build Coastguard Worker %r0 = extractelement <4 x float> %r, i32 0 36*9880d681SAndroid Build Coastguard Worker %r1 = extractelement <4 x float> %r, i32 1 37*9880d681SAndroid Build Coastguard Worker %r2 = extractelement <4 x float> %r, i32 2 38*9880d681SAndroid Build Coastguard Worker %r3 = extractelement <4 x float> %r, i32 3 39*9880d681SAndroid Build Coastguard Worker call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3) 40*9880d681SAndroid Build Coastguard Worker ret void 41*9880d681SAndroid Build Coastguard Worker} 42*9880d681SAndroid Build Coastguard Worker 43*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_l: 44*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_l {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da 45*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_l() { 46*9880d681SAndroid Build Coastguard Workermain_body: 47*9880d681SAndroid Build Coastguard Worker %r = call <4 x float> @llvm.SI.gather4.l.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0) 48*9880d681SAndroid Build Coastguard Worker %r0 = extractelement <4 x float> %r, i32 0 49*9880d681SAndroid Build Coastguard Worker %r1 = extractelement <4 x float> %r, i32 1 50*9880d681SAndroid Build Coastguard Worker %r2 = extractelement <4 x float> %r, i32 2 51*9880d681SAndroid Build Coastguard Worker %r3 = extractelement <4 x float> %r, i32 3 52*9880d681SAndroid Build Coastguard Worker call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3) 53*9880d681SAndroid Build Coastguard Worker ret void 54*9880d681SAndroid Build Coastguard Worker} 55*9880d681SAndroid Build Coastguard Worker 56*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_b: 57*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_b {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da 58*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_b() { 59*9880d681SAndroid Build Coastguard Workermain_body: 60*9880d681SAndroid Build Coastguard Worker %r = call <4 x float> @llvm.SI.gather4.b.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0) 61*9880d681SAndroid Build Coastguard Worker %r0 = extractelement <4 x float> %r, i32 0 62*9880d681SAndroid Build Coastguard Worker %r1 = extractelement <4 x float> %r, i32 1 63*9880d681SAndroid Build Coastguard Worker %r2 = extractelement <4 x float> %r, i32 2 64*9880d681SAndroid Build Coastguard Worker %r3 = extractelement <4 x float> %r, i32 3 65*9880d681SAndroid Build Coastguard Worker call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3) 66*9880d681SAndroid Build Coastguard Worker ret void 67*9880d681SAndroid Build Coastguard Worker} 68*9880d681SAndroid Build Coastguard Worker 69*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_b_cl: 70*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_b_cl {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da 71*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_b_cl() { 72*9880d681SAndroid Build Coastguard Workermain_body: 73*9880d681SAndroid Build Coastguard Worker %r = call <4 x float> @llvm.SI.gather4.b.cl.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0) 74*9880d681SAndroid Build Coastguard Worker %r0 = extractelement <4 x float> %r, i32 0 75*9880d681SAndroid Build Coastguard Worker %r1 = extractelement <4 x float> %r, i32 1 76*9880d681SAndroid Build Coastguard Worker %r2 = extractelement <4 x float> %r, i32 2 77*9880d681SAndroid Build Coastguard Worker %r3 = extractelement <4 x float> %r, i32 3 78*9880d681SAndroid Build Coastguard Worker call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3) 79*9880d681SAndroid Build Coastguard Worker ret void 80*9880d681SAndroid Build Coastguard Worker} 81*9880d681SAndroid Build Coastguard Worker 82*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_b_cl_v8: 83*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_b_cl {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da 84*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_b_cl_v8() { 85*9880d681SAndroid Build Coastguard Workermain_body: 86*9880d681SAndroid Build Coastguard Worker %r = call <4 x float> @llvm.SI.gather4.b.cl.v8i32(<8 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0) 87*9880d681SAndroid Build Coastguard Worker %r0 = extractelement <4 x float> %r, i32 0 88*9880d681SAndroid Build Coastguard Worker %r1 = extractelement <4 x float> %r, i32 1 89*9880d681SAndroid Build Coastguard Worker %r2 = extractelement <4 x float> %r, i32 2 90*9880d681SAndroid Build Coastguard Worker %r3 = extractelement <4 x float> %r, i32 3 91*9880d681SAndroid Build Coastguard Worker call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3) 92*9880d681SAndroid Build Coastguard Worker ret void 93*9880d681SAndroid Build Coastguard Worker} 94*9880d681SAndroid Build Coastguard Worker 95*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_lz_v2: 96*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_lz {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da 97*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_lz_v2() { 98*9880d681SAndroid Build Coastguard Workermain_body: 99*9880d681SAndroid Build Coastguard Worker %r = call <4 x float> @llvm.SI.gather4.lz.v2i32(<2 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0) 100*9880d681SAndroid Build Coastguard Worker %r0 = extractelement <4 x float> %r, i32 0 101*9880d681SAndroid Build Coastguard Worker %r1 = extractelement <4 x float> %r, i32 1 102*9880d681SAndroid Build Coastguard Worker %r2 = extractelement <4 x float> %r, i32 2 103*9880d681SAndroid Build Coastguard Worker %r3 = extractelement <4 x float> %r, i32 3 104*9880d681SAndroid Build Coastguard Worker call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3) 105*9880d681SAndroid Build Coastguard Worker ret void 106*9880d681SAndroid Build Coastguard Worker} 107*9880d681SAndroid Build Coastguard Worker 108*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_lz: 109*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_lz {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da 110*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_lz() { 111*9880d681SAndroid Build Coastguard Workermain_body: 112*9880d681SAndroid Build Coastguard Worker %r = call <4 x float> @llvm.SI.gather4.lz.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0) 113*9880d681SAndroid Build Coastguard Worker %r0 = extractelement <4 x float> %r, i32 0 114*9880d681SAndroid Build Coastguard Worker %r1 = extractelement <4 x float> %r, i32 1 115*9880d681SAndroid Build Coastguard Worker %r2 = extractelement <4 x float> %r, i32 2 116*9880d681SAndroid Build Coastguard Worker %r3 = extractelement <4 x float> %r, i32 3 117*9880d681SAndroid Build Coastguard Worker call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3) 118*9880d681SAndroid Build Coastguard Worker ret void 119*9880d681SAndroid Build Coastguard Worker} 120*9880d681SAndroid Build Coastguard Worker 121*9880d681SAndroid Build Coastguard Worker 122*9880d681SAndroid Build Coastguard Worker 123*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_o: 124*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_o {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da 125*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_o() { 126*9880d681SAndroid Build Coastguard Workermain_body: 127*9880d681SAndroid Build Coastguard Worker %r = call <4 x float> @llvm.SI.gather4.o.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0) 128*9880d681SAndroid Build Coastguard Worker %r0 = extractelement <4 x float> %r, i32 0 129*9880d681SAndroid Build Coastguard Worker %r1 = extractelement <4 x float> %r, i32 1 130*9880d681SAndroid Build Coastguard Worker %r2 = extractelement <4 x float> %r, i32 2 131*9880d681SAndroid Build Coastguard Worker %r3 = extractelement <4 x float> %r, i32 3 132*9880d681SAndroid Build Coastguard Worker call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3) 133*9880d681SAndroid Build Coastguard Worker ret void 134*9880d681SAndroid Build Coastguard Worker} 135*9880d681SAndroid Build Coastguard Worker 136*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_cl_o: 137*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_cl_o {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da 138*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_cl_o() { 139*9880d681SAndroid Build Coastguard Workermain_body: 140*9880d681SAndroid Build Coastguard Worker %r = call <4 x float> @llvm.SI.gather4.cl.o.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0) 141*9880d681SAndroid Build Coastguard Worker %r0 = extractelement <4 x float> %r, i32 0 142*9880d681SAndroid Build Coastguard Worker %r1 = extractelement <4 x float> %r, i32 1 143*9880d681SAndroid Build Coastguard Worker %r2 = extractelement <4 x float> %r, i32 2 144*9880d681SAndroid Build Coastguard Worker %r3 = extractelement <4 x float> %r, i32 3 145*9880d681SAndroid Build Coastguard Worker call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3) 146*9880d681SAndroid Build Coastguard Worker ret void 147*9880d681SAndroid Build Coastguard Worker} 148*9880d681SAndroid Build Coastguard Worker 149*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_cl_o_v8: 150*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_cl_o {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da 151*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_cl_o_v8() { 152*9880d681SAndroid Build Coastguard Workermain_body: 153*9880d681SAndroid Build Coastguard Worker %r = call <4 x float> @llvm.SI.gather4.cl.o.v8i32(<8 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0) 154*9880d681SAndroid Build Coastguard Worker %r0 = extractelement <4 x float> %r, i32 0 155*9880d681SAndroid Build Coastguard Worker %r1 = extractelement <4 x float> %r, i32 1 156*9880d681SAndroid Build Coastguard Worker %r2 = extractelement <4 x float> %r, i32 2 157*9880d681SAndroid Build Coastguard Worker %r3 = extractelement <4 x float> %r, i32 3 158*9880d681SAndroid Build Coastguard Worker call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3) 159*9880d681SAndroid Build Coastguard Worker ret void 160*9880d681SAndroid Build Coastguard Worker} 161*9880d681SAndroid Build Coastguard Worker 162*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_l_o: 163*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_l_o {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da 164*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_l_o() { 165*9880d681SAndroid Build Coastguard Workermain_body: 166*9880d681SAndroid Build Coastguard Worker %r = call <4 x float> @llvm.SI.gather4.l.o.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0) 167*9880d681SAndroid Build Coastguard Worker %r0 = extractelement <4 x float> %r, i32 0 168*9880d681SAndroid Build Coastguard Worker %r1 = extractelement <4 x float> %r, i32 1 169*9880d681SAndroid Build Coastguard Worker %r2 = extractelement <4 x float> %r, i32 2 170*9880d681SAndroid Build Coastguard Worker %r3 = extractelement <4 x float> %r, i32 3 171*9880d681SAndroid Build Coastguard Worker call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3) 172*9880d681SAndroid Build Coastguard Worker ret void 173*9880d681SAndroid Build Coastguard Worker} 174*9880d681SAndroid Build Coastguard Worker 175*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_l_o_v8: 176*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_l_o {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da 177*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_l_o_v8() { 178*9880d681SAndroid Build Coastguard Workermain_body: 179*9880d681SAndroid Build Coastguard Worker %r = call <4 x float> @llvm.SI.gather4.l.o.v8i32(<8 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0) 180*9880d681SAndroid Build Coastguard Worker %r0 = extractelement <4 x float> %r, i32 0 181*9880d681SAndroid Build Coastguard Worker %r1 = extractelement <4 x float> %r, i32 1 182*9880d681SAndroid Build Coastguard Worker %r2 = extractelement <4 x float> %r, i32 2 183*9880d681SAndroid Build Coastguard Worker %r3 = extractelement <4 x float> %r, i32 3 184*9880d681SAndroid Build Coastguard Worker call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3) 185*9880d681SAndroid Build Coastguard Worker ret void 186*9880d681SAndroid Build Coastguard Worker} 187*9880d681SAndroid Build Coastguard Worker 188*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_b_o: 189*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_b_o {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da 190*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_b_o() { 191*9880d681SAndroid Build Coastguard Workermain_body: 192*9880d681SAndroid Build Coastguard Worker %r = call <4 x float> @llvm.SI.gather4.b.o.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0) 193*9880d681SAndroid Build Coastguard Worker %r0 = extractelement <4 x float> %r, i32 0 194*9880d681SAndroid Build Coastguard Worker %r1 = extractelement <4 x float> %r, i32 1 195*9880d681SAndroid Build Coastguard Worker %r2 = extractelement <4 x float> %r, i32 2 196*9880d681SAndroid Build Coastguard Worker %r3 = extractelement <4 x float> %r, i32 3 197*9880d681SAndroid Build Coastguard Worker call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3) 198*9880d681SAndroid Build Coastguard Worker ret void 199*9880d681SAndroid Build Coastguard Worker} 200*9880d681SAndroid Build Coastguard Worker 201*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_b_o_v8: 202*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_b_o {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da 203*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_b_o_v8() { 204*9880d681SAndroid Build Coastguard Workermain_body: 205*9880d681SAndroid Build Coastguard Worker %r = call <4 x float> @llvm.SI.gather4.b.o.v8i32(<8 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0) 206*9880d681SAndroid Build Coastguard Worker %r0 = extractelement <4 x float> %r, i32 0 207*9880d681SAndroid Build Coastguard Worker %r1 = extractelement <4 x float> %r, i32 1 208*9880d681SAndroid Build Coastguard Worker %r2 = extractelement <4 x float> %r, i32 2 209*9880d681SAndroid Build Coastguard Worker %r3 = extractelement <4 x float> %r, i32 3 210*9880d681SAndroid Build Coastguard Worker call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3) 211*9880d681SAndroid Build Coastguard Worker ret void 212*9880d681SAndroid Build Coastguard Worker} 213*9880d681SAndroid Build Coastguard Worker 214*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_b_cl_o: 215*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_b_cl_o {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da 216*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_b_cl_o() { 217*9880d681SAndroid Build Coastguard Workermain_body: 218*9880d681SAndroid Build Coastguard Worker %r = call <4 x float> @llvm.SI.gather4.b.cl.o.v8i32(<8 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0) 219*9880d681SAndroid Build Coastguard Worker %r0 = extractelement <4 x float> %r, i32 0 220*9880d681SAndroid Build Coastguard Worker %r1 = extractelement <4 x float> %r, i32 1 221*9880d681SAndroid Build Coastguard Worker %r2 = extractelement <4 x float> %r, i32 2 222*9880d681SAndroid Build Coastguard Worker %r3 = extractelement <4 x float> %r, i32 3 223*9880d681SAndroid Build Coastguard Worker call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3) 224*9880d681SAndroid Build Coastguard Worker ret void 225*9880d681SAndroid Build Coastguard Worker} 226*9880d681SAndroid Build Coastguard Worker 227*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_lz_o: 228*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_lz_o {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da 229*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_lz_o() { 230*9880d681SAndroid Build Coastguard Workermain_body: 231*9880d681SAndroid Build Coastguard Worker %r = call <4 x float> @llvm.SI.gather4.lz.o.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0) 232*9880d681SAndroid Build Coastguard Worker %r0 = extractelement <4 x float> %r, i32 0 233*9880d681SAndroid Build Coastguard Worker %r1 = extractelement <4 x float> %r, i32 1 234*9880d681SAndroid Build Coastguard Worker %r2 = extractelement <4 x float> %r, i32 2 235*9880d681SAndroid Build Coastguard Worker %r3 = extractelement <4 x float> %r, i32 3 236*9880d681SAndroid Build Coastguard Worker call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3) 237*9880d681SAndroid Build Coastguard Worker ret void 238*9880d681SAndroid Build Coastguard Worker} 239*9880d681SAndroid Build Coastguard Worker 240*9880d681SAndroid Build Coastguard Worker 241*9880d681SAndroid Build Coastguard Worker 242*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_c: 243*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_c {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da 244*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_c() { 245*9880d681SAndroid Build Coastguard Workermain_body: 246*9880d681SAndroid Build Coastguard Worker %r = call <4 x float> @llvm.SI.gather4.c.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0) 247*9880d681SAndroid Build Coastguard Worker %r0 = extractelement <4 x float> %r, i32 0 248*9880d681SAndroid Build Coastguard Worker %r1 = extractelement <4 x float> %r, i32 1 249*9880d681SAndroid Build Coastguard Worker %r2 = extractelement <4 x float> %r, i32 2 250*9880d681SAndroid Build Coastguard Worker %r3 = extractelement <4 x float> %r, i32 3 251*9880d681SAndroid Build Coastguard Worker call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3) 252*9880d681SAndroid Build Coastguard Worker ret void 253*9880d681SAndroid Build Coastguard Worker} 254*9880d681SAndroid Build Coastguard Worker 255*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_c_cl: 256*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_c_cl {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da 257*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_c_cl() { 258*9880d681SAndroid Build Coastguard Workermain_body: 259*9880d681SAndroid Build Coastguard Worker %r = call <4 x float> @llvm.SI.gather4.c.cl.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0) 260*9880d681SAndroid Build Coastguard Worker %r0 = extractelement <4 x float> %r, i32 0 261*9880d681SAndroid Build Coastguard Worker %r1 = extractelement <4 x float> %r, i32 1 262*9880d681SAndroid Build Coastguard Worker %r2 = extractelement <4 x float> %r, i32 2 263*9880d681SAndroid Build Coastguard Worker %r3 = extractelement <4 x float> %r, i32 3 264*9880d681SAndroid Build Coastguard Worker call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3) 265*9880d681SAndroid Build Coastguard Worker ret void 266*9880d681SAndroid Build Coastguard Worker} 267*9880d681SAndroid Build Coastguard Worker 268*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_c_cl_v8: 269*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_c_cl {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da 270*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_c_cl_v8() { 271*9880d681SAndroid Build Coastguard Workermain_body: 272*9880d681SAndroid Build Coastguard Worker %r = call <4 x float> @llvm.SI.gather4.c.cl.v8i32(<8 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0) 273*9880d681SAndroid Build Coastguard Worker %r0 = extractelement <4 x float> %r, i32 0 274*9880d681SAndroid Build Coastguard Worker %r1 = extractelement <4 x float> %r, i32 1 275*9880d681SAndroid Build Coastguard Worker %r2 = extractelement <4 x float> %r, i32 2 276*9880d681SAndroid Build Coastguard Worker %r3 = extractelement <4 x float> %r, i32 3 277*9880d681SAndroid Build Coastguard Worker call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3) 278*9880d681SAndroid Build Coastguard Worker ret void 279*9880d681SAndroid Build Coastguard Worker} 280*9880d681SAndroid Build Coastguard Worker 281*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_c_l: 282*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_c_l {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da 283*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_c_l() { 284*9880d681SAndroid Build Coastguard Workermain_body: 285*9880d681SAndroid Build Coastguard Worker %r = call <4 x float> @llvm.SI.gather4.c.l.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0) 286*9880d681SAndroid Build Coastguard Worker %r0 = extractelement <4 x float> %r, i32 0 287*9880d681SAndroid Build Coastguard Worker %r1 = extractelement <4 x float> %r, i32 1 288*9880d681SAndroid Build Coastguard Worker %r2 = extractelement <4 x float> %r, i32 2 289*9880d681SAndroid Build Coastguard Worker %r3 = extractelement <4 x float> %r, i32 3 290*9880d681SAndroid Build Coastguard Worker call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3) 291*9880d681SAndroid Build Coastguard Worker ret void 292*9880d681SAndroid Build Coastguard Worker} 293*9880d681SAndroid Build Coastguard Worker 294*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_c_l_v8: 295*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_c_l {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da 296*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_c_l_v8() { 297*9880d681SAndroid Build Coastguard Workermain_body: 298*9880d681SAndroid Build Coastguard Worker %r = call <4 x float> @llvm.SI.gather4.c.l.v8i32(<8 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0) 299*9880d681SAndroid Build Coastguard Worker %r0 = extractelement <4 x float> %r, i32 0 300*9880d681SAndroid Build Coastguard Worker %r1 = extractelement <4 x float> %r, i32 1 301*9880d681SAndroid Build Coastguard Worker %r2 = extractelement <4 x float> %r, i32 2 302*9880d681SAndroid Build Coastguard Worker %r3 = extractelement <4 x float> %r, i32 3 303*9880d681SAndroid Build Coastguard Worker call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3) 304*9880d681SAndroid Build Coastguard Worker ret void 305*9880d681SAndroid Build Coastguard Worker} 306*9880d681SAndroid Build Coastguard Worker 307*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_c_b: 308*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_c_b {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da 309*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_c_b() { 310*9880d681SAndroid Build Coastguard Workermain_body: 311*9880d681SAndroid Build Coastguard Worker %r = call <4 x float> @llvm.SI.gather4.c.b.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0) 312*9880d681SAndroid Build Coastguard Worker %r0 = extractelement <4 x float> %r, i32 0 313*9880d681SAndroid Build Coastguard Worker %r1 = extractelement <4 x float> %r, i32 1 314*9880d681SAndroid Build Coastguard Worker %r2 = extractelement <4 x float> %r, i32 2 315*9880d681SAndroid Build Coastguard Worker %r3 = extractelement <4 x float> %r, i32 3 316*9880d681SAndroid Build Coastguard Worker call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3) 317*9880d681SAndroid Build Coastguard Worker ret void 318*9880d681SAndroid Build Coastguard Worker} 319*9880d681SAndroid Build Coastguard Worker 320*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_c_b_v8: 321*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_c_b {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da 322*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_c_b_v8() { 323*9880d681SAndroid Build Coastguard Workermain_body: 324*9880d681SAndroid Build Coastguard Worker %r = call <4 x float> @llvm.SI.gather4.c.b.v8i32(<8 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0) 325*9880d681SAndroid Build Coastguard Worker %r0 = extractelement <4 x float> %r, i32 0 326*9880d681SAndroid Build Coastguard Worker %r1 = extractelement <4 x float> %r, i32 1 327*9880d681SAndroid Build Coastguard Worker %r2 = extractelement <4 x float> %r, i32 2 328*9880d681SAndroid Build Coastguard Worker %r3 = extractelement <4 x float> %r, i32 3 329*9880d681SAndroid Build Coastguard Worker call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3) 330*9880d681SAndroid Build Coastguard Worker ret void 331*9880d681SAndroid Build Coastguard Worker} 332*9880d681SAndroid Build Coastguard Worker 333*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_c_b_cl: 334*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_c_b_cl {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da 335*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_c_b_cl() { 336*9880d681SAndroid Build Coastguard Workermain_body: 337*9880d681SAndroid Build Coastguard Worker %r = call <4 x float> @llvm.SI.gather4.c.b.cl.v8i32(<8 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0) 338*9880d681SAndroid Build Coastguard Worker %r0 = extractelement <4 x float> %r, i32 0 339*9880d681SAndroid Build Coastguard Worker %r1 = extractelement <4 x float> %r, i32 1 340*9880d681SAndroid Build Coastguard Worker %r2 = extractelement <4 x float> %r, i32 2 341*9880d681SAndroid Build Coastguard Worker %r3 = extractelement <4 x float> %r, i32 3 342*9880d681SAndroid Build Coastguard Worker call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3) 343*9880d681SAndroid Build Coastguard Worker ret void 344*9880d681SAndroid Build Coastguard Worker} 345*9880d681SAndroid Build Coastguard Worker 346*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_c_lz: 347*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_c_lz {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da 348*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_c_lz() { 349*9880d681SAndroid Build Coastguard Workermain_body: 350*9880d681SAndroid Build Coastguard Worker %r = call <4 x float> @llvm.SI.gather4.c.lz.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0) 351*9880d681SAndroid Build Coastguard Worker %r0 = extractelement <4 x float> %r, i32 0 352*9880d681SAndroid Build Coastguard Worker %r1 = extractelement <4 x float> %r, i32 1 353*9880d681SAndroid Build Coastguard Worker %r2 = extractelement <4 x float> %r, i32 2 354*9880d681SAndroid Build Coastguard Worker %r3 = extractelement <4 x float> %r, i32 3 355*9880d681SAndroid Build Coastguard Worker call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3) 356*9880d681SAndroid Build Coastguard Worker ret void 357*9880d681SAndroid Build Coastguard Worker} 358*9880d681SAndroid Build Coastguard Worker 359*9880d681SAndroid Build Coastguard Worker 360*9880d681SAndroid Build Coastguard Worker 361*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_c_o: 362*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_c_o {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da 363*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_c_o() { 364*9880d681SAndroid Build Coastguard Workermain_body: 365*9880d681SAndroid Build Coastguard Worker %r = call <4 x float> @llvm.SI.gather4.c.o.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0) 366*9880d681SAndroid Build Coastguard Worker %r0 = extractelement <4 x float> %r, i32 0 367*9880d681SAndroid Build Coastguard Worker %r1 = extractelement <4 x float> %r, i32 1 368*9880d681SAndroid Build Coastguard Worker %r2 = extractelement <4 x float> %r, i32 2 369*9880d681SAndroid Build Coastguard Worker %r3 = extractelement <4 x float> %r, i32 3 370*9880d681SAndroid Build Coastguard Worker call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3) 371*9880d681SAndroid Build Coastguard Worker ret void 372*9880d681SAndroid Build Coastguard Worker} 373*9880d681SAndroid Build Coastguard Worker 374*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_c_o_v8: 375*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_c_o {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da 376*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_c_o_v8() { 377*9880d681SAndroid Build Coastguard Workermain_body: 378*9880d681SAndroid Build Coastguard Worker %r = call <4 x float> @llvm.SI.gather4.c.o.v8i32(<8 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0) 379*9880d681SAndroid Build Coastguard Worker %r0 = extractelement <4 x float> %r, i32 0 380*9880d681SAndroid Build Coastguard Worker %r1 = extractelement <4 x float> %r, i32 1 381*9880d681SAndroid Build Coastguard Worker %r2 = extractelement <4 x float> %r, i32 2 382*9880d681SAndroid Build Coastguard Worker %r3 = extractelement <4 x float> %r, i32 3 383*9880d681SAndroid Build Coastguard Worker call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3) 384*9880d681SAndroid Build Coastguard Worker ret void 385*9880d681SAndroid Build Coastguard Worker} 386*9880d681SAndroid Build Coastguard Worker 387*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_c_cl_o: 388*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_c_cl_o {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da 389*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_c_cl_o() { 390*9880d681SAndroid Build Coastguard Workermain_body: 391*9880d681SAndroid Build Coastguard Worker %r = call <4 x float> @llvm.SI.gather4.c.cl.o.v8i32(<8 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0) 392*9880d681SAndroid Build Coastguard Worker %r0 = extractelement <4 x float> %r, i32 0 393*9880d681SAndroid Build Coastguard Worker %r1 = extractelement <4 x float> %r, i32 1 394*9880d681SAndroid Build Coastguard Worker %r2 = extractelement <4 x float> %r, i32 2 395*9880d681SAndroid Build Coastguard Worker %r3 = extractelement <4 x float> %r, i32 3 396*9880d681SAndroid Build Coastguard Worker call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3) 397*9880d681SAndroid Build Coastguard Worker ret void 398*9880d681SAndroid Build Coastguard Worker} 399*9880d681SAndroid Build Coastguard Worker 400*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_c_l_o: 401*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_c_l_o {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da 402*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_c_l_o() { 403*9880d681SAndroid Build Coastguard Workermain_body: 404*9880d681SAndroid Build Coastguard Worker %r = call <4 x float> @llvm.SI.gather4.c.l.o.v8i32(<8 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0) 405*9880d681SAndroid Build Coastguard Worker %r0 = extractelement <4 x float> %r, i32 0 406*9880d681SAndroid Build Coastguard Worker %r1 = extractelement <4 x float> %r, i32 1 407*9880d681SAndroid Build Coastguard Worker %r2 = extractelement <4 x float> %r, i32 2 408*9880d681SAndroid Build Coastguard Worker %r3 = extractelement <4 x float> %r, i32 3 409*9880d681SAndroid Build Coastguard Worker call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3) 410*9880d681SAndroid Build Coastguard Worker ret void 411*9880d681SAndroid Build Coastguard Worker} 412*9880d681SAndroid Build Coastguard Worker 413*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_c_b_o: 414*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_c_b_o {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da 415*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_c_b_o() { 416*9880d681SAndroid Build Coastguard Workermain_body: 417*9880d681SAndroid Build Coastguard Worker %r = call <4 x float> @llvm.SI.gather4.c.b.o.v8i32(<8 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0) 418*9880d681SAndroid Build Coastguard Worker %r0 = extractelement <4 x float> %r, i32 0 419*9880d681SAndroid Build Coastguard Worker %r1 = extractelement <4 x float> %r, i32 1 420*9880d681SAndroid Build Coastguard Worker %r2 = extractelement <4 x float> %r, i32 2 421*9880d681SAndroid Build Coastguard Worker %r3 = extractelement <4 x float> %r, i32 3 422*9880d681SAndroid Build Coastguard Worker call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3) 423*9880d681SAndroid Build Coastguard Worker ret void 424*9880d681SAndroid Build Coastguard Worker} 425*9880d681SAndroid Build Coastguard Worker 426*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_c_b_cl_o: 427*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_c_b_cl_o {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da 428*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_c_b_cl_o() { 429*9880d681SAndroid Build Coastguard Workermain_body: 430*9880d681SAndroid Build Coastguard Worker %r = call <4 x float> @llvm.SI.gather4.c.b.cl.o.v8i32(<8 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0) 431*9880d681SAndroid Build Coastguard Worker %r0 = extractelement <4 x float> %r, i32 0 432*9880d681SAndroid Build Coastguard Worker %r1 = extractelement <4 x float> %r, i32 1 433*9880d681SAndroid Build Coastguard Worker %r2 = extractelement <4 x float> %r, i32 2 434*9880d681SAndroid Build Coastguard Worker %r3 = extractelement <4 x float> %r, i32 3 435*9880d681SAndroid Build Coastguard Worker call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3) 436*9880d681SAndroid Build Coastguard Worker ret void 437*9880d681SAndroid Build Coastguard Worker} 438*9880d681SAndroid Build Coastguard Worker 439*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_c_lz_o: 440*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_c_lz_o {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da 441*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_c_lz_o() { 442*9880d681SAndroid Build Coastguard Workermain_body: 443*9880d681SAndroid Build Coastguard Worker %r = call <4 x float> @llvm.SI.gather4.c.lz.o.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0) 444*9880d681SAndroid Build Coastguard Worker %r0 = extractelement <4 x float> %r, i32 0 445*9880d681SAndroid Build Coastguard Worker %r1 = extractelement <4 x float> %r, i32 1 446*9880d681SAndroid Build Coastguard Worker %r2 = extractelement <4 x float> %r, i32 2 447*9880d681SAndroid Build Coastguard Worker %r3 = extractelement <4 x float> %r, i32 3 448*9880d681SAndroid Build Coastguard Worker call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3) 449*9880d681SAndroid Build Coastguard Worker ret void 450*9880d681SAndroid Build Coastguard Worker} 451*9880d681SAndroid Build Coastguard Worker 452*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_c_lz_o_v8: 453*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_c_lz_o {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}} dmask:0x1 da 454*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @gather4_c_lz_o_v8() { 455*9880d681SAndroid Build Coastguard Workermain_body: 456*9880d681SAndroid Build Coastguard Worker %r = call <4 x float> @llvm.SI.gather4.c.lz.o.v8i32(<8 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0) 457*9880d681SAndroid Build Coastguard Worker %r0 = extractelement <4 x float> %r, i32 0 458*9880d681SAndroid Build Coastguard Worker %r1 = extractelement <4 x float> %r, i32 1 459*9880d681SAndroid Build Coastguard Worker %r2 = extractelement <4 x float> %r, i32 2 460*9880d681SAndroid Build Coastguard Worker %r3 = extractelement <4 x float> %r, i32 3 461*9880d681SAndroid Build Coastguard Worker call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3) 462*9880d681SAndroid Build Coastguard Worker ret void 463*9880d681SAndroid Build Coastguard Worker} 464*9880d681SAndroid Build Coastguard Worker 465*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: {{^}}gather4_sgpr_bug: 466*9880d681SAndroid Build Coastguard Worker; 467*9880d681SAndroid Build Coastguard Worker; This crashed at some point due to a bug in FixSGPRCopies. Derived from the 468*9880d681SAndroid Build Coastguard Worker; report in https://bugs.freedesktop.org/show_bug.cgi?id=96877 469*9880d681SAndroid Build Coastguard Worker; 470*9880d681SAndroid Build Coastguard Worker;CHECK: s_load_dwordx4 s{{\[}}[[LO:[0-9]+]]:[[HI:[0-9]+]]], {{s\[[0-9]+:[0-9]+\]}}, 0x0 471*9880d681SAndroid Build Coastguard Worker;CHECK: s_waitcnt lgkmcnt(0) 472*9880d681SAndroid Build Coastguard Worker;CHECK: s_mov_b32 s[[LO]], 0 473*9880d681SAndroid Build Coastguard Worker;CHECK: image_gather4_lz {{v\[[0-9]+:[0-9]+\]}}, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, s{{\[}}[[LO]]:[[HI]]] dmask:0x8 474*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps float @gather4_sgpr_bug() { 475*9880d681SAndroid Build Coastguard Workermain_body: 476*9880d681SAndroid Build Coastguard Worker %tmp = load <4 x i32>, <4 x i32> addrspace(2)* undef, align 16 477*9880d681SAndroid Build Coastguard Worker %tmp1 = insertelement <4 x i32> %tmp, i32 0, i32 0 478*9880d681SAndroid Build Coastguard Worker %tmp2 = call <4 x float> @llvm.SI.gather4.lz.v2i32(<2 x i32> undef, <8 x i32> undef, <4 x i32> %tmp1, i32 8, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) 479*9880d681SAndroid Build Coastguard Worker %tmp4 = extractelement <4 x float> %tmp2, i32 1 480*9880d681SAndroid Build Coastguard Worker %tmp9 = fadd float undef, %tmp4 481*9880d681SAndroid Build Coastguard Worker ret float %tmp9 482*9880d681SAndroid Build Coastguard Worker} 483*9880d681SAndroid Build Coastguard Worker 484*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.v2i32(<2 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0 485*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0 486*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.cl.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0 487*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.l.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0 488*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.b.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0 489*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.b.cl.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0 490*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.b.cl.v8i32(<8 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0 491*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.lz.v2i32(<2 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0 492*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.lz.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0 493*9880d681SAndroid Build Coastguard Worker 494*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.o.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0 495*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.cl.o.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0 496*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.cl.o.v8i32(<8 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0 497*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.l.o.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0 498*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.l.o.v8i32(<8 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0 499*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.b.o.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0 500*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.b.o.v8i32(<8 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0 501*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.b.cl.o.v8i32(<8 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0 502*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.lz.o.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0 503*9880d681SAndroid Build Coastguard Worker 504*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.c.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0 505*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.c.cl.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0 506*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.c.cl.v8i32(<8 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0 507*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.c.l.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0 508*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.c.l.v8i32(<8 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0 509*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.c.b.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0 510*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.c.b.v8i32(<8 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0 511*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.c.b.cl.v8i32(<8 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0 512*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.c.lz.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0 513*9880d681SAndroid Build Coastguard Worker 514*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.c.o.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0 515*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.c.o.v8i32(<8 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0 516*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.c.cl.o.v8i32(<8 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0 517*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.c.l.o.v8i32(<8 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0 518*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.c.b.o.v8i32(<8 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0 519*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.c.b.cl.o.v8i32(<8 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0 520*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.c.lz.o.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0 521*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.gather4.c.lz.o.v8i32(<8 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #0 522*9880d681SAndroid Build Coastguard Worker 523*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float) 524*9880d681SAndroid Build Coastguard Worker 525*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind readnone } 526