1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=r600 -mcpu=juniper < %s | FileCheck -check-prefix=EG -check-prefix=FUNC %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker; === 1 image arg, read_only =================================================== 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}test_2d_rd_1_0: 6*9880d681SAndroid Build Coastguard Worker; EG: MEM_RAT_CACHELESS STORE_RAW [[VAL:T[0-9]+\.X]] 7*9880d681SAndroid Build Coastguard Worker; EG: MOV [[VAL]], literal.x 8*9880d681SAndroid Build Coastguard Worker; EG-NEXT: LSHR 9*9880d681SAndroid Build Coastguard Worker; EG-NEXT: 0( 10*9880d681SAndroid Build Coastguard Workerdefine void @test_2d_rd_1_0(%opencl.image2d_t addrspace(1)* %in, ; read_only 11*9880d681SAndroid Build Coastguard Worker i32 addrspace(1)* %out) { 12*9880d681SAndroid Build Coastguard Workerentry: 13*9880d681SAndroid Build Coastguard Worker %0 = call i32 @llvm.OpenCL.image.get.resource.id.2d( 14*9880d681SAndroid Build Coastguard Worker %opencl.image2d_t addrspace(1)* %in) #0 15*9880d681SAndroid Build Coastguard Worker store i32 %0, i32 addrspace(1)* %out 16*9880d681SAndroid Build Coastguard Worker ret void 17*9880d681SAndroid Build Coastguard Worker} 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}test_3d_rd_1_0: 20*9880d681SAndroid Build Coastguard Worker; EG: MEM_RAT_CACHELESS STORE_RAW [[VAL:T[0-9]+\.X]] 21*9880d681SAndroid Build Coastguard Worker; EG: MOV [[VAL]], literal.x 22*9880d681SAndroid Build Coastguard Worker; EG-NEXT: LSHR 23*9880d681SAndroid Build Coastguard Worker; EG-NEXT: 0( 24*9880d681SAndroid Build Coastguard Workerdefine void @test_3d_rd_1_0(%opencl.image3d_t addrspace(1)* %in, ; read_only 25*9880d681SAndroid Build Coastguard Worker i32 addrspace(1)* %out) { 26*9880d681SAndroid Build Coastguard Workerentry: 27*9880d681SAndroid Build Coastguard Worker %0 = call i32 @llvm.OpenCL.image.get.resource.id.3d( 28*9880d681SAndroid Build Coastguard Worker %opencl.image3d_t addrspace(1)* %in) #0 29*9880d681SAndroid Build Coastguard Worker store i32 %0, i32 addrspace(1)* %out 30*9880d681SAndroid Build Coastguard Worker ret void 31*9880d681SAndroid Build Coastguard Worker} 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Worker; === 1 image arg, write_only ================================================== 34*9880d681SAndroid Build Coastguard Worker 35*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}test_2d_wr_1_0: 36*9880d681SAndroid Build Coastguard Worker; EG: MEM_RAT_CACHELESS STORE_RAW [[VAL:T[0-9]+\.X]] 37*9880d681SAndroid Build Coastguard Worker; EG: MOV [[VAL]], literal.x 38*9880d681SAndroid Build Coastguard Worker; EG-NEXT: LSHR 39*9880d681SAndroid Build Coastguard Worker; EG-NEXT: 0( 40*9880d681SAndroid Build Coastguard Workerdefine void @test_2d_wr_1_0(%opencl.image2d_t addrspace(1)* %in, ; write_only 41*9880d681SAndroid Build Coastguard Worker i32 addrspace(1)* %out) { 42*9880d681SAndroid Build Coastguard Workerentry: 43*9880d681SAndroid Build Coastguard Worker %0 = call i32 @llvm.OpenCL.image.get.resource.id.2d( 44*9880d681SAndroid Build Coastguard Worker %opencl.image2d_t addrspace(1)* %in) #0 45*9880d681SAndroid Build Coastguard Worker store i32 %0, i32 addrspace(1)* %out 46*9880d681SAndroid Build Coastguard Worker ret void 47*9880d681SAndroid Build Coastguard Worker} 48*9880d681SAndroid Build Coastguard Worker 49*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}test_3d_wr_1_0: 50*9880d681SAndroid Build Coastguard Worker; EG: MEM_RAT_CACHELESS STORE_RAW [[VAL:T[0-9]+\.X]] 51*9880d681SAndroid Build Coastguard Worker; EG: MOV [[VAL]], literal.x 52*9880d681SAndroid Build Coastguard Worker; EG-NEXT: LSHR 53*9880d681SAndroid Build Coastguard Worker; EG-NEXT: 0( 54*9880d681SAndroid Build Coastguard Workerdefine void @test_3d_wr_1_0(%opencl.image3d_t addrspace(1)* %in, ; write_only 55*9880d681SAndroid Build Coastguard Worker i32 addrspace(1)* %out) { 56*9880d681SAndroid Build Coastguard Workerentry: 57*9880d681SAndroid Build Coastguard Worker %0 = call i32 @llvm.OpenCL.image.get.resource.id.3d( 58*9880d681SAndroid Build Coastguard Worker %opencl.image3d_t addrspace(1)* %in) #0 59*9880d681SAndroid Build Coastguard Worker store i32 %0, i32 addrspace(1)* %out 60*9880d681SAndroid Build Coastguard Worker ret void 61*9880d681SAndroid Build Coastguard Worker} 62*9880d681SAndroid Build Coastguard Worker 63*9880d681SAndroid Build Coastguard Worker; === 2 image args, read_only ================================================== 64*9880d681SAndroid Build Coastguard Worker 65*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}test_2d_rd_2_0: 66*9880d681SAndroid Build Coastguard Worker; EG: MEM_RAT_CACHELESS STORE_RAW [[VAL:T[0-9]+\.X]] 67*9880d681SAndroid Build Coastguard Worker; EG: MOV [[VAL]], literal.x 68*9880d681SAndroid Build Coastguard Worker; EG-NEXT: LSHR 69*9880d681SAndroid Build Coastguard Worker; EG-NEXT: 0( 70*9880d681SAndroid Build Coastguard Workerdefine void @test_2d_rd_2_0(%opencl.image2d_t addrspace(1)* %in1, ; read_only 71*9880d681SAndroid Build Coastguard Worker %opencl.image2d_t addrspace(1)* %in2, ; read_only 72*9880d681SAndroid Build Coastguard Worker i32 addrspace(1)* %out) { 73*9880d681SAndroid Build Coastguard Workerentry: 74*9880d681SAndroid Build Coastguard Worker %0 = call i32 @llvm.OpenCL.image.get.resource.id.2d( 75*9880d681SAndroid Build Coastguard Worker %opencl.image2d_t addrspace(1)* %in1) #0 76*9880d681SAndroid Build Coastguard Worker store i32 %0, i32 addrspace(1)* %out 77*9880d681SAndroid Build Coastguard Worker ret void 78*9880d681SAndroid Build Coastguard Worker} 79*9880d681SAndroid Build Coastguard Worker 80*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}test_2d_rd_2_1: 81*9880d681SAndroid Build Coastguard Worker; EG: MEM_RAT_CACHELESS STORE_RAW [[VAL:T[0-9]+\.X]] 82*9880d681SAndroid Build Coastguard Worker; EG: MOV [[VAL]], literal.x 83*9880d681SAndroid Build Coastguard Worker; EG-NEXT: LSHR 84*9880d681SAndroid Build Coastguard Worker; EG-NEXT: 1( 85*9880d681SAndroid Build Coastguard Workerdefine void @test_2d_rd_2_1(%opencl.image2d_t addrspace(1)* %in1, ; read_only 86*9880d681SAndroid Build Coastguard Worker %opencl.image2d_t addrspace(1)* %in2, ; read_only 87*9880d681SAndroid Build Coastguard Worker i32 addrspace(1)* %out) { 88*9880d681SAndroid Build Coastguard Workerentry: 89*9880d681SAndroid Build Coastguard Worker %0 = call i32 @llvm.OpenCL.image.get.resource.id.2d( 90*9880d681SAndroid Build Coastguard Worker %opencl.image2d_t addrspace(1)* %in2) #0 91*9880d681SAndroid Build Coastguard Worker store i32 %0, i32 addrspace(1)* %out 92*9880d681SAndroid Build Coastguard Worker ret void 93*9880d681SAndroid Build Coastguard Worker} 94*9880d681SAndroid Build Coastguard Worker 95*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}test_3d_rd_2_0: 96*9880d681SAndroid Build Coastguard Worker; EG: MEM_RAT_CACHELESS STORE_RAW [[VAL:T[0-9]+\.X]] 97*9880d681SAndroid Build Coastguard Worker; EG: MOV [[VAL]], literal.x 98*9880d681SAndroid Build Coastguard Worker; EG-NEXT: LSHR 99*9880d681SAndroid Build Coastguard Worker; EG-NEXT: 0( 100*9880d681SAndroid Build Coastguard Workerdefine void @test_3d_rd_2_0(%opencl.image3d_t addrspace(1)* %in1, ; read_only 101*9880d681SAndroid Build Coastguard Worker %opencl.image3d_t addrspace(1)* %in2, ; read_only 102*9880d681SAndroid Build Coastguard Worker i32 addrspace(1)* %out) { 103*9880d681SAndroid Build Coastguard Workerentry: 104*9880d681SAndroid Build Coastguard Worker %0 = call i32 @llvm.OpenCL.image.get.resource.id.3d( 105*9880d681SAndroid Build Coastguard Worker %opencl.image3d_t addrspace(1)* %in1) #0 106*9880d681SAndroid Build Coastguard Worker store i32 %0, i32 addrspace(1)* %out 107*9880d681SAndroid Build Coastguard Worker ret void 108*9880d681SAndroid Build Coastguard Worker} 109*9880d681SAndroid Build Coastguard Worker 110*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}test_3d_rd_2_1: 111*9880d681SAndroid Build Coastguard Worker; EG: MEM_RAT_CACHELESS STORE_RAW [[VAL:T[0-9]+\.X]] 112*9880d681SAndroid Build Coastguard Worker; EG: MOV [[VAL]], literal.x 113*9880d681SAndroid Build Coastguard Worker; EG-NEXT: LSHR 114*9880d681SAndroid Build Coastguard Worker; EG-NEXT: 1( 115*9880d681SAndroid Build Coastguard Workerdefine void @test_3d_rd_2_1(%opencl.image3d_t addrspace(1)* %in1, ; read_only 116*9880d681SAndroid Build Coastguard Worker %opencl.image3d_t addrspace(1)* %in2, ; read_only 117*9880d681SAndroid Build Coastguard Worker i32 addrspace(1)* %out) { 118*9880d681SAndroid Build Coastguard Workerentry: 119*9880d681SAndroid Build Coastguard Worker %0 = call i32 @llvm.OpenCL.image.get.resource.id.3d( 120*9880d681SAndroid Build Coastguard Worker %opencl.image3d_t addrspace(1)* %in2) #0 121*9880d681SAndroid Build Coastguard Worker store i32 %0, i32 addrspace(1)* %out 122*9880d681SAndroid Build Coastguard Worker ret void 123*9880d681SAndroid Build Coastguard Worker} 124*9880d681SAndroid Build Coastguard Worker 125*9880d681SAndroid Build Coastguard Worker; === 2 image args, write_only ================================================= 126*9880d681SAndroid Build Coastguard Worker 127*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}test_2d_wr_2_0: 128*9880d681SAndroid Build Coastguard Worker; EG: MEM_RAT_CACHELESS STORE_RAW [[VAL:T[0-9]+\.X]] 129*9880d681SAndroid Build Coastguard Worker; EG: MOV [[VAL]], literal.x 130*9880d681SAndroid Build Coastguard Worker; EG-NEXT: LSHR 131*9880d681SAndroid Build Coastguard Worker; EG-NEXT: 0( 132*9880d681SAndroid Build Coastguard Workerdefine void @test_2d_wr_2_0(%opencl.image2d_t addrspace(1)* %in1, ; write_only 133*9880d681SAndroid Build Coastguard Worker %opencl.image2d_t addrspace(1)* %in2, ; write_only 134*9880d681SAndroid Build Coastguard Worker i32 addrspace(1)* %out) { 135*9880d681SAndroid Build Coastguard Workerentry: 136*9880d681SAndroid Build Coastguard Worker %0 = call i32 @llvm.OpenCL.image.get.resource.id.2d( 137*9880d681SAndroid Build Coastguard Worker %opencl.image2d_t addrspace(1)* %in1) #0 138*9880d681SAndroid Build Coastguard Worker store i32 %0, i32 addrspace(1)* %out 139*9880d681SAndroid Build Coastguard Worker ret void 140*9880d681SAndroid Build Coastguard Worker} 141*9880d681SAndroid Build Coastguard Worker 142*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}test_2d_wr_2_1: 143*9880d681SAndroid Build Coastguard Worker; EG: MEM_RAT_CACHELESS STORE_RAW [[VAL:T[0-9]+\.X]] 144*9880d681SAndroid Build Coastguard Worker; EG: MOV [[VAL]], literal.x 145*9880d681SAndroid Build Coastguard Worker; EG-NEXT: LSHR 146*9880d681SAndroid Build Coastguard Worker; EG-NEXT: 1( 147*9880d681SAndroid Build Coastguard Workerdefine void @test_2d_wr_2_1(%opencl.image2d_t addrspace(1)* %in1, ; write_only 148*9880d681SAndroid Build Coastguard Worker %opencl.image2d_t addrspace(1)* %in2, ; write_only 149*9880d681SAndroid Build Coastguard Worker i32 addrspace(1)* %out) { 150*9880d681SAndroid Build Coastguard Workerentry: 151*9880d681SAndroid Build Coastguard Worker %0 = call i32 @llvm.OpenCL.image.get.resource.id.2d( 152*9880d681SAndroid Build Coastguard Worker %opencl.image2d_t addrspace(1)* %in2) #0 153*9880d681SAndroid Build Coastguard Worker store i32 %0, i32 addrspace(1)* %out 154*9880d681SAndroid Build Coastguard Worker ret void 155*9880d681SAndroid Build Coastguard Worker} 156*9880d681SAndroid Build Coastguard Worker 157*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}test_3d_wr_2_0: 158*9880d681SAndroid Build Coastguard Worker; EG: MEM_RAT_CACHELESS STORE_RAW [[VAL:T[0-9]+\.X]] 159*9880d681SAndroid Build Coastguard Worker; EG: MOV [[VAL]], literal.x 160*9880d681SAndroid Build Coastguard Worker; EG-NEXT: LSHR 161*9880d681SAndroid Build Coastguard Worker; EG-NEXT: 0( 162*9880d681SAndroid Build Coastguard Workerdefine void @test_3d_wr_2_0(%opencl.image3d_t addrspace(1)* %in1, ; write_only 163*9880d681SAndroid Build Coastguard Worker %opencl.image3d_t addrspace(1)* %in2, ; write_only 164*9880d681SAndroid Build Coastguard Worker i32 addrspace(1)* %out) { 165*9880d681SAndroid Build Coastguard Workerentry: 166*9880d681SAndroid Build Coastguard Worker %0 = call i32 @llvm.OpenCL.image.get.resource.id.3d( 167*9880d681SAndroid Build Coastguard Worker %opencl.image3d_t addrspace(1)* %in1) #0 168*9880d681SAndroid Build Coastguard Worker store i32 %0, i32 addrspace(1)* %out 169*9880d681SAndroid Build Coastguard Worker ret void 170*9880d681SAndroid Build Coastguard Worker} 171*9880d681SAndroid Build Coastguard Worker 172*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}test_3d_wr_2_1: 173*9880d681SAndroid Build Coastguard Worker; EG: MEM_RAT_CACHELESS STORE_RAW [[VAL:T[0-9]+\.X]] 174*9880d681SAndroid Build Coastguard Worker; EG: MOV [[VAL]], literal.x 175*9880d681SAndroid Build Coastguard Worker; EG-NEXT: LSHR 176*9880d681SAndroid Build Coastguard Worker; EG-NEXT: 1( 177*9880d681SAndroid Build Coastguard Workerdefine void @test_3d_wr_2_1(%opencl.image3d_t addrspace(1)* %in1, ; write_only 178*9880d681SAndroid Build Coastguard Worker %opencl.image3d_t addrspace(1)* %in2, ; write_only 179*9880d681SAndroid Build Coastguard Worker i32 addrspace(1)* %out) { 180*9880d681SAndroid Build Coastguard Workerentry: 181*9880d681SAndroid Build Coastguard Worker %0 = call i32 @llvm.OpenCL.image.get.resource.id.3d( 182*9880d681SAndroid Build Coastguard Worker %opencl.image3d_t addrspace(1)* %in2) #0 183*9880d681SAndroid Build Coastguard Worker store i32 %0, i32 addrspace(1)* %out 184*9880d681SAndroid Build Coastguard Worker ret void 185*9880d681SAndroid Build Coastguard Worker} 186*9880d681SAndroid Build Coastguard Worker 187*9880d681SAndroid Build Coastguard Worker; === 3 image args, read_only ================================================== 188*9880d681SAndroid Build Coastguard Worker 189*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}test_2d_rd_3_0: 190*9880d681SAndroid Build Coastguard Worker; EG: MEM_RAT_CACHELESS STORE_RAW [[VAL:T[0-9]+\.X]] 191*9880d681SAndroid Build Coastguard Worker; EG: MOV [[VAL]], literal.x 192*9880d681SAndroid Build Coastguard Worker; EG-NEXT: LSHR 193*9880d681SAndroid Build Coastguard Worker; EG-NEXT: 2( 194*9880d681SAndroid Build Coastguard Workerdefine void @test_2d_rd_3_0(%opencl.image2d_t addrspace(1)* %in1, ; read_only 195*9880d681SAndroid Build Coastguard Worker %opencl.image3d_t addrspace(1)* %in2, ; read_only 196*9880d681SAndroid Build Coastguard Worker %opencl.image2d_t addrspace(1)* %in3, ; read_only 197*9880d681SAndroid Build Coastguard Worker i32 addrspace(1)* %out) { 198*9880d681SAndroid Build Coastguard Workerentry: 199*9880d681SAndroid Build Coastguard Worker %0 = call i32 @llvm.OpenCL.image.get.resource.id.2d( 200*9880d681SAndroid Build Coastguard Worker %opencl.image2d_t addrspace(1)* %in3) #0 201*9880d681SAndroid Build Coastguard Worker store i32 %0, i32 addrspace(1)* %out 202*9880d681SAndroid Build Coastguard Worker ret void 203*9880d681SAndroid Build Coastguard Worker} 204*9880d681SAndroid Build Coastguard Worker 205*9880d681SAndroid Build Coastguard Worker 206*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}test_3d_rd_3_0: 207*9880d681SAndroid Build Coastguard Worker; EG: MEM_RAT_CACHELESS STORE_RAW [[VAL:T[0-9]+\.X]] 208*9880d681SAndroid Build Coastguard Worker; EG: MOV [[VAL]], literal.x 209*9880d681SAndroid Build Coastguard Worker; EG-NEXT: LSHR 210*9880d681SAndroid Build Coastguard Worker; EG-NEXT: 2( 211*9880d681SAndroid Build Coastguard Workerdefine void @test_3d_rd_3_0(%opencl.image3d_t addrspace(1)* %in1, ; read_only 212*9880d681SAndroid Build Coastguard Worker %opencl.image2d_t addrspace(1)* %in2, ; read_only 213*9880d681SAndroid Build Coastguard Worker %opencl.image3d_t addrspace(1)* %in3, ; read_only 214*9880d681SAndroid Build Coastguard Worker i32 addrspace(1)* %out) { 215*9880d681SAndroid Build Coastguard Workerentry: 216*9880d681SAndroid Build Coastguard Worker %0 = call i32 @llvm.OpenCL.image.get.resource.id.3d( 217*9880d681SAndroid Build Coastguard Worker %opencl.image3d_t addrspace(1)* %in3) #0 218*9880d681SAndroid Build Coastguard Worker store i32 %0, i32 addrspace(1)* %out 219*9880d681SAndroid Build Coastguard Worker ret void 220*9880d681SAndroid Build Coastguard Worker} 221*9880d681SAndroid Build Coastguard Worker 222*9880d681SAndroid Build Coastguard Worker; === 3 image args, write_only ================================================= 223*9880d681SAndroid Build Coastguard Worker 224*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}test_2d_wr_3_0: 225*9880d681SAndroid Build Coastguard Worker; EG: MEM_RAT_CACHELESS STORE_RAW [[VAL:T[0-9]+\.X]] 226*9880d681SAndroid Build Coastguard Worker; EG: MOV [[VAL]], literal.x 227*9880d681SAndroid Build Coastguard Worker; EG-NEXT: LSHR 228*9880d681SAndroid Build Coastguard Worker; EG-NEXT: 2( 229*9880d681SAndroid Build Coastguard Workerdefine void @test_2d_wr_3_0(%opencl.image2d_t addrspace(1)* %in1, ; write_only 230*9880d681SAndroid Build Coastguard Worker %opencl.image3d_t addrspace(1)* %in2, ; write_only 231*9880d681SAndroid Build Coastguard Worker %opencl.image2d_t addrspace(1)* %in3, ; write_only 232*9880d681SAndroid Build Coastguard Worker i32 addrspace(1)* %out) { 233*9880d681SAndroid Build Coastguard Workerentry: 234*9880d681SAndroid Build Coastguard Worker %0 = call i32 @llvm.OpenCL.image.get.resource.id.2d( 235*9880d681SAndroid Build Coastguard Worker %opencl.image2d_t addrspace(1)* %in3) #0 236*9880d681SAndroid Build Coastguard Worker store i32 %0, i32 addrspace(1)* %out 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; FUNC-LABEL: {{^}}test_3d_wr_3_0: 242*9880d681SAndroid Build Coastguard Worker; EG: MEM_RAT_CACHELESS STORE_RAW [[VAL:T[0-9]+\.X]] 243*9880d681SAndroid Build Coastguard Worker; EG: MOV [[VAL]], literal.x 244*9880d681SAndroid Build Coastguard Worker; EG-NEXT: LSHR 245*9880d681SAndroid Build Coastguard Worker; EG-NEXT: 2( 246*9880d681SAndroid Build Coastguard Workerdefine void @test_3d_wr_3_0(%opencl.image3d_t addrspace(1)* %in1, ; write_only 247*9880d681SAndroid Build Coastguard Worker %opencl.image2d_t addrspace(1)* %in2, ; write_only 248*9880d681SAndroid Build Coastguard Worker %opencl.image3d_t addrspace(1)* %in3, ; write_only 249*9880d681SAndroid Build Coastguard Worker i32 addrspace(1)* %out) { 250*9880d681SAndroid Build Coastguard Workerentry: 251*9880d681SAndroid Build Coastguard Worker %0 = call i32 @llvm.OpenCL.image.get.resource.id.3d( 252*9880d681SAndroid Build Coastguard Worker %opencl.image3d_t addrspace(1)* %in3) #0 253*9880d681SAndroid Build Coastguard Worker store i32 %0, i32 addrspace(1)* %out 254*9880d681SAndroid Build Coastguard Worker ret void 255*9880d681SAndroid Build Coastguard Worker} 256*9880d681SAndroid Build Coastguard Worker 257*9880d681SAndroid Build Coastguard Worker; === 3 image args, mixed ====================================================== 258*9880d681SAndroid Build Coastguard Worker 259*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}test_2d_mix_3_0: 260*9880d681SAndroid Build Coastguard Worker; EG: MEM_RAT_CACHELESS STORE_RAW [[VAL:T[0-9]+\.X]] 261*9880d681SAndroid Build Coastguard Worker; EG: MOV [[VAL]], literal.x 262*9880d681SAndroid Build Coastguard Worker; EG-NEXT: LSHR 263*9880d681SAndroid Build Coastguard Worker; EG-NEXT: 1( 264*9880d681SAndroid Build Coastguard Workerdefine void @test_2d_mix_3_0(%opencl.image2d_t addrspace(1)* %in1, ; write_only 265*9880d681SAndroid Build Coastguard Worker %opencl.image3d_t addrspace(1)* %in2, ; read_only 266*9880d681SAndroid Build Coastguard Worker %opencl.image2d_t addrspace(1)* %in3, ; read_only 267*9880d681SAndroid Build Coastguard Worker i32 addrspace(1)* %out) { 268*9880d681SAndroid Build Coastguard Workerentry: 269*9880d681SAndroid Build Coastguard Worker %0 = call i32 @llvm.OpenCL.image.get.resource.id.2d( 270*9880d681SAndroid Build Coastguard Worker %opencl.image2d_t addrspace(1)* %in3) #0 271*9880d681SAndroid Build Coastguard Worker store i32 %0, i32 addrspace(1)* %out 272*9880d681SAndroid Build Coastguard Worker ret void 273*9880d681SAndroid Build Coastguard Worker} 274*9880d681SAndroid Build Coastguard Worker 275*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}test_3d_mix_3_0: 276*9880d681SAndroid Build Coastguard Worker; EG: MEM_RAT_CACHELESS STORE_RAW [[VAL:T[0-9]+\.X]] 277*9880d681SAndroid Build Coastguard Worker; EG: MOV [[VAL]], literal.x 278*9880d681SAndroid Build Coastguard Worker; EG-NEXT: LSHR 279*9880d681SAndroid Build Coastguard Worker; EG-NEXT: 1( 280*9880d681SAndroid Build Coastguard Workerdefine void @test_3d_mix_3_0(%opencl.image3d_t addrspace(1)* %in1, ; write_only 281*9880d681SAndroid Build Coastguard Worker %opencl.image2d_t addrspace(1)* %in2, ; read_only 282*9880d681SAndroid Build Coastguard Worker %opencl.image3d_t addrspace(1)* %in3, ; read_only 283*9880d681SAndroid Build Coastguard Worker i32 addrspace(1)* %out) { 284*9880d681SAndroid Build Coastguard Workerentry: 285*9880d681SAndroid Build Coastguard Worker %0 = call i32 @llvm.OpenCL.image.get.resource.id.3d( 286*9880d681SAndroid Build Coastguard Worker %opencl.image3d_t addrspace(1)* %in3) #0 287*9880d681SAndroid Build Coastguard Worker store i32 %0, i32 addrspace(1)* %out 288*9880d681SAndroid Build Coastguard Worker ret void 289*9880d681SAndroid Build Coastguard Worker} 290*9880d681SAndroid Build Coastguard Worker 291*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}test_2d_mix_3_1: 292*9880d681SAndroid Build Coastguard Worker; EG: MEM_RAT_CACHELESS STORE_RAW [[VAL:T[0-9]+\.X]] 293*9880d681SAndroid Build Coastguard Worker; EG: MOV [[VAL]], literal.x 294*9880d681SAndroid Build Coastguard Worker; EG-NEXT: LSHR 295*9880d681SAndroid Build Coastguard Worker; EG-NEXT: 1( 296*9880d681SAndroid Build Coastguard Workerdefine void @test_2d_mix_3_1(%opencl.image2d_t addrspace(1)* %in1, ; write_only 297*9880d681SAndroid Build Coastguard Worker %opencl.image3d_t addrspace(1)* %in2, ; read_only 298*9880d681SAndroid Build Coastguard Worker %opencl.image2d_t addrspace(1)* %in3, ; write_only 299*9880d681SAndroid Build Coastguard Worker i32 addrspace(1)* %out) { 300*9880d681SAndroid Build Coastguard Workerentry: 301*9880d681SAndroid Build Coastguard Worker %0 = call i32 @llvm.OpenCL.image.get.resource.id.2d( 302*9880d681SAndroid Build Coastguard Worker %opencl.image2d_t addrspace(1)* %in3) #0 303*9880d681SAndroid Build Coastguard Worker store i32 %0, i32 addrspace(1)* %out 304*9880d681SAndroid Build Coastguard Worker ret void 305*9880d681SAndroid Build Coastguard Worker} 306*9880d681SAndroid Build Coastguard Worker 307*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}test_3d_mix_3_1: 308*9880d681SAndroid Build Coastguard Worker; EG: MEM_RAT_CACHELESS STORE_RAW [[VAL:T[0-9]+\.X]] 309*9880d681SAndroid Build Coastguard Worker; EG: MOV [[VAL]], literal.x 310*9880d681SAndroid Build Coastguard Worker; EG-NEXT: LSHR 311*9880d681SAndroid Build Coastguard Worker; EG-NEXT: 1( 312*9880d681SAndroid Build Coastguard Workerdefine void @test_3d_mix_3_1(%opencl.image3d_t addrspace(1)* %in1, ; write_only 313*9880d681SAndroid Build Coastguard Worker %opencl.image2d_t addrspace(1)* %in2, ; read_only 314*9880d681SAndroid Build Coastguard Worker %opencl.image3d_t addrspace(1)* %in3, ; write_only 315*9880d681SAndroid Build Coastguard Worker i32 addrspace(1)* %out) { 316*9880d681SAndroid Build Coastguard Workerentry: 317*9880d681SAndroid Build Coastguard Worker %0 = call i32 @llvm.OpenCL.image.get.resource.id.3d( 318*9880d681SAndroid Build Coastguard Worker %opencl.image3d_t addrspace(1)* %in3) #0 319*9880d681SAndroid Build Coastguard Worker store i32 %0, i32 addrspace(1)* %out 320*9880d681SAndroid Build Coastguard Worker ret void 321*9880d681SAndroid Build Coastguard Worker} 322*9880d681SAndroid Build Coastguard Worker 323*9880d681SAndroid Build Coastguard Worker 324*9880d681SAndroid Build Coastguard Worker%opencl.image2d_t = type opaque 325*9880d681SAndroid Build Coastguard Worker%opencl.image3d_t = type opaque 326*9880d681SAndroid Build Coastguard Worker 327*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.OpenCL.image.get.resource.id.2d(%opencl.image2d_t addrspace(1)*) #0 328*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.OpenCL.image.get.resource.id.3d(%opencl.image3d_t addrspace(1)*) #0 329*9880d681SAndroid Build Coastguard Worker 330*9880d681SAndroid Build Coastguard Workerattributes #0 = { readnone } 331*9880d681SAndroid Build Coastguard Worker 332*9880d681SAndroid Build Coastguard Worker!opencl.kernels = !{!0, !1, !2, !3, !4, !5, !6, !7, !8, !9, !10, !11, !12, !13, 333*9880d681SAndroid Build Coastguard Worker !14, !15, !16, !17, !18, !19} 334*9880d681SAndroid Build Coastguard Worker!0 = !{void (%opencl.image2d_t addrspace(1)*, i32 addrspace(1)*)* @test_2d_rd_1_0, 335*9880d681SAndroid Build Coastguard Worker !110, !120, !130, !140, !150} 336*9880d681SAndroid Build Coastguard Worker!1 = !{void (%opencl.image3d_t addrspace(1)*, i32 addrspace(1)*)* @test_3d_rd_1_0, 337*9880d681SAndroid Build Coastguard Worker !110, !120, !131, !141, !150} 338*9880d681SAndroid Build Coastguard Worker!2 = !{void (%opencl.image2d_t addrspace(1)*, i32 addrspace(1)*)* @test_2d_wr_1_0, 339*9880d681SAndroid Build Coastguard Worker !110, !121, !130, !140, !150} 340*9880d681SAndroid Build Coastguard Worker!3 = !{void (%opencl.image3d_t addrspace(1)*, i32 addrspace(1)*)* @test_3d_wr_1_0, 341*9880d681SAndroid Build Coastguard Worker !110, !121, !131, !141, !150} 342*9880d681SAndroid Build Coastguard Worker!110 = !{!"kernel_arg_addr_space", i32 1, i32 1} 343*9880d681SAndroid Build Coastguard Worker!120 = !{!"kernel_arg_access_qual", !"read_only", !"none"} 344*9880d681SAndroid Build Coastguard Worker!121 = !{!"kernel_arg_access_qual", !"write_only", !"none"} 345*9880d681SAndroid Build Coastguard Worker!130 = !{!"kernel_arg_type", !"image2d_t", !"int*"} 346*9880d681SAndroid Build Coastguard Worker!131 = !{!"kernel_arg_type", !"image3d_t", !"int*"} 347*9880d681SAndroid Build Coastguard Worker!140 = !{!"kernel_arg_base_type", !"image2d_t", !"int*"} 348*9880d681SAndroid Build Coastguard Worker!141 = !{!"kernel_arg_base_type", !"image3d_t", !"int*"} 349*9880d681SAndroid Build Coastguard Worker!150 = !{!"kernel_arg_type_qual", !"", !""} 350*9880d681SAndroid Build Coastguard Worker 351*9880d681SAndroid Build Coastguard Worker!4 = !{void (%opencl.image2d_t addrspace(1)*, %opencl.image2d_t addrspace(1)*, 352*9880d681SAndroid Build Coastguard Worker i32 addrspace(1)*)* @test_2d_rd_2_0, !112, !122, !132, !142, !152} 353*9880d681SAndroid Build Coastguard Worker!5 = !{void (%opencl.image2d_t addrspace(1)*, %opencl.image2d_t addrspace(1)*, 354*9880d681SAndroid Build Coastguard Worker i32 addrspace(1)*)* @test_2d_rd_2_1, !112, !122, !132, !142, !152} 355*9880d681SAndroid Build Coastguard Worker!6 = !{void (%opencl.image3d_t addrspace(1)*, %opencl.image3d_t addrspace(1)*, 356*9880d681SAndroid Build Coastguard Worker i32 addrspace(1)*)* @test_3d_rd_2_0, !112, !122, !133, !143, !152} 357*9880d681SAndroid Build Coastguard Worker!7 = !{void (%opencl.image3d_t addrspace(1)*, %opencl.image3d_t addrspace(1)*, 358*9880d681SAndroid Build Coastguard Worker i32 addrspace(1)*)* @test_3d_rd_2_1, !112, !122, !133, !143, !152} 359*9880d681SAndroid Build Coastguard Worker!8 = !{void (%opencl.image2d_t addrspace(1)*, %opencl.image2d_t addrspace(1)*, 360*9880d681SAndroid Build Coastguard Worker i32 addrspace(1)*)* @test_2d_wr_2_0, !112, !123, !132, !142, !152} 361*9880d681SAndroid Build Coastguard Worker!9 = !{void (%opencl.image2d_t addrspace(1)*, %opencl.image2d_t addrspace(1)*, 362*9880d681SAndroid Build Coastguard Worker i32 addrspace(1)*)* @test_2d_wr_2_1, !112, !123, !132, !142, !152} 363*9880d681SAndroid Build Coastguard Worker!10 = !{void (%opencl.image3d_t addrspace(1)*, %opencl.image3d_t addrspace(1)*, 364*9880d681SAndroid Build Coastguard Worker i32 addrspace(1)*)* @test_3d_wr_2_0, !112, !123, !133, !143, !152} 365*9880d681SAndroid Build Coastguard Worker!11 = !{void (%opencl.image3d_t addrspace(1)*, %opencl.image3d_t addrspace(1)*, 366*9880d681SAndroid Build Coastguard Worker i32 addrspace(1)*)* @test_3d_wr_2_1, !112, !123, !133, !143, !152} 367*9880d681SAndroid Build Coastguard Worker!112 = !{!"kernel_arg_addr_space", i32 1, i32 1, i32 1} 368*9880d681SAndroid Build Coastguard Worker!122 = !{!"kernel_arg_access_qual", !"read_only", !"read_only", !"none"} 369*9880d681SAndroid Build Coastguard Worker!123 = !{!"kernel_arg_access_qual", !"write_only", !"write_only", !"none"} 370*9880d681SAndroid Build Coastguard Worker!132 = !{!"kernel_arg_type", !"image2d_t", !"image2d_t", !"int*"} 371*9880d681SAndroid Build Coastguard Worker!133 = !{!"kernel_arg_type", !"image3d_t", !"image3d_t", !"int*"} 372*9880d681SAndroid Build Coastguard Worker!142 = !{!"kernel_arg_base_type", !"image2d_t", !"image2d_t", !"int*"} 373*9880d681SAndroid Build Coastguard Worker!143 = !{!"kernel_arg_base_type", !"image3d_t", !"image3d_t", !"int*"} 374*9880d681SAndroid Build Coastguard Worker!152 = !{!"kernel_arg_type_qual", !"", !"", !""} 375*9880d681SAndroid Build Coastguard Worker 376*9880d681SAndroid Build Coastguard Worker!12 = !{void (%opencl.image2d_t addrspace(1)*, %opencl.image3d_t addrspace(1)*, 377*9880d681SAndroid Build Coastguard Worker %opencl.image2d_t addrspace(1)*, i32 addrspace(1)*)* @test_2d_rd_3_0, 378*9880d681SAndroid Build Coastguard Worker !114, !124, !134, !144, !154} 379*9880d681SAndroid Build Coastguard Worker!13 = !{void (%opencl.image3d_t addrspace(1)*, %opencl.image2d_t addrspace(1)*, 380*9880d681SAndroid Build Coastguard Worker %opencl.image3d_t addrspace(1)*, i32 addrspace(1)*)* @test_3d_rd_3_0, 381*9880d681SAndroid Build Coastguard Worker !114, !124, !135, !145, !154} 382*9880d681SAndroid Build Coastguard Worker!14 = !{void (%opencl.image2d_t addrspace(1)*, %opencl.image3d_t addrspace(1)*, 383*9880d681SAndroid Build Coastguard Worker %opencl.image2d_t addrspace(1)*, i32 addrspace(1)*)* @test_2d_wr_3_0, 384*9880d681SAndroid Build Coastguard Worker !114, !125, !134, !144, !154} 385*9880d681SAndroid Build Coastguard Worker!15 = !{void (%opencl.image3d_t addrspace(1)*, %opencl.image2d_t addrspace(1)*, 386*9880d681SAndroid Build Coastguard Worker %opencl.image3d_t addrspace(1)*, i32 addrspace(1)*)* @test_3d_wr_3_0, 387*9880d681SAndroid Build Coastguard Worker !114, !125, !135, !145, !154} 388*9880d681SAndroid Build Coastguard Worker!16 = !{void (%opencl.image2d_t addrspace(1)*, %opencl.image3d_t addrspace(1)*, 389*9880d681SAndroid Build Coastguard Worker %opencl.image2d_t addrspace(1)*, i32 addrspace(1)*)* @test_2d_mix_3_0, 390*9880d681SAndroid Build Coastguard Worker !114, !126, !134, !144, !154} 391*9880d681SAndroid Build Coastguard Worker!17 = !{void (%opencl.image3d_t addrspace(1)*, %opencl.image2d_t addrspace(1)*, 392*9880d681SAndroid Build Coastguard Worker %opencl.image3d_t addrspace(1)*, i32 addrspace(1)*)* @test_3d_mix_3_0, 393*9880d681SAndroid Build Coastguard Worker !114, !126, !135, !145, !154} 394*9880d681SAndroid Build Coastguard Worker!18 = !{void (%opencl.image2d_t addrspace(1)*, %opencl.image3d_t addrspace(1)*, 395*9880d681SAndroid Build Coastguard Worker %opencl.image2d_t addrspace(1)*, i32 addrspace(1)*)* @test_2d_mix_3_1, 396*9880d681SAndroid Build Coastguard Worker !114, !127, !134, !144, !154} 397*9880d681SAndroid Build Coastguard Worker!19 = !{void (%opencl.image3d_t addrspace(1)*, %opencl.image2d_t addrspace(1)*, 398*9880d681SAndroid Build Coastguard Worker %opencl.image3d_t addrspace(1)*, i32 addrspace(1)*)* @test_3d_mix_3_1, 399*9880d681SAndroid Build Coastguard Worker !114, !127, !135, !145, !154} 400*9880d681SAndroid Build Coastguard Worker!114 = !{!"kernel_arg_addr_space", i32 1, i32 1, i32 1, i32 1} 401*9880d681SAndroid Build Coastguard Worker!124 = !{!"kernel_arg_access_qual", !"read_only", !"read_only", !"read_only", !"none"} 402*9880d681SAndroid Build Coastguard Worker!125 = !{!"kernel_arg_access_qual", !"write_only", !"write_only", !"write_only", !"none"} 403*9880d681SAndroid Build Coastguard Worker!126 = !{!"kernel_arg_access_qual", !"write_only", !"read_only", !"read_only", !"none"} 404*9880d681SAndroid Build Coastguard Worker!127 = !{!"kernel_arg_access_qual", !"write_only", !"read_only", !"write_only", !"none"} 405*9880d681SAndroid Build Coastguard Worker!134 = !{!"kernel_arg_type", !"image2d_t", !"image3d_t", !"image2d_t", !"int*"} 406*9880d681SAndroid Build Coastguard Worker!135 = !{!"kernel_arg_type", !"image3d_t", !"image2d_t", !"image3d_t", !"int*"} 407*9880d681SAndroid Build Coastguard Worker!144 = !{!"kernel_arg_base_type", !"image2d_t", !"image3d_t", !"image2d_t", !"int*"} 408*9880d681SAndroid Build Coastguard Worker!145 = !{!"kernel_arg_base_type", !"image3d_t", !"image2d_t", !"image3d_t", !"int*"} 409*9880d681SAndroid Build Coastguard Worker!154 = !{!"kernel_arg_type_qual", !"", !"", !"", !""} 410