1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=amdgcn -mcpu=SI -verify-machineinstrs -o - %s 2*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=amdgcn -mcpu=tonga -verify-machineinstrs -o - %s 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Worker; SI-LABEL:{{^}}row_filter_C1_D0: 5*9880d681SAndroid Build Coastguard Worker; SI: s_endpgm 6*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 7*9880d681SAndroid Build Coastguard Workerdefine void @row_filter_C1_D0() { 8*9880d681SAndroid Build Coastguard Workerentry: 9*9880d681SAndroid Build Coastguard Worker br i1 undef, label %for.inc.1, label %do.body.preheader 10*9880d681SAndroid Build Coastguard Worker 11*9880d681SAndroid Build Coastguard Workerdo.body.preheader: ; preds = %entry 12*9880d681SAndroid Build Coastguard Worker %0 = insertelement <4 x i32> zeroinitializer, i32 undef, i32 1 13*9880d681SAndroid Build Coastguard Worker br i1 undef, label %do.body56.1, label %do.body90 14*9880d681SAndroid Build Coastguard Worker 15*9880d681SAndroid Build Coastguard Workerdo.body90: ; preds = %do.body56.2, %do.body56.1, %do.body.preheader 16*9880d681SAndroid Build Coastguard Worker %1 = phi <4 x i32> [ %6, %do.body56.2 ], [ %5, %do.body56.1 ], [ %0, %do.body.preheader ] 17*9880d681SAndroid Build Coastguard Worker %2 = insertelement <4 x i32> %1, i32 undef, i32 2 18*9880d681SAndroid Build Coastguard Worker %3 = insertelement <4 x i32> %2, i32 undef, i32 3 19*9880d681SAndroid Build Coastguard Worker br i1 undef, label %do.body124.1, label %do.body.1562.preheader 20*9880d681SAndroid Build Coastguard Worker 21*9880d681SAndroid Build Coastguard Workerdo.body.1562.preheader: ; preds = %do.body124.1, %do.body90 22*9880d681SAndroid Build Coastguard Worker %storemerge = phi <4 x i32> [ %3, %do.body90 ], [ %7, %do.body124.1 ] 23*9880d681SAndroid Build Coastguard Worker %4 = insertelement <4 x i32> undef, i32 undef, i32 1 24*9880d681SAndroid Build Coastguard Worker br label %for.inc.1 25*9880d681SAndroid Build Coastguard Worker 26*9880d681SAndroid Build Coastguard Workerdo.body56.1: ; preds = %do.body.preheader 27*9880d681SAndroid Build Coastguard Worker %5 = insertelement <4 x i32> %0, i32 undef, i32 1 28*9880d681SAndroid Build Coastguard Worker %or.cond472.1 = or i1 undef, undef 29*9880d681SAndroid Build Coastguard Worker br i1 %or.cond472.1, label %do.body56.2, label %do.body90 30*9880d681SAndroid Build Coastguard Worker 31*9880d681SAndroid Build Coastguard Workerdo.body56.2: ; preds = %do.body56.1 32*9880d681SAndroid Build Coastguard Worker %6 = insertelement <4 x i32> %5, i32 undef, i32 1 33*9880d681SAndroid Build Coastguard Worker br label %do.body90 34*9880d681SAndroid Build Coastguard Worker 35*9880d681SAndroid Build Coastguard Workerdo.body124.1: ; preds = %do.body90 36*9880d681SAndroid Build Coastguard Worker %7 = insertelement <4 x i32> %3, i32 undef, i32 3 37*9880d681SAndroid Build Coastguard Worker br label %do.body.1562.preheader 38*9880d681SAndroid Build Coastguard Worker 39*9880d681SAndroid Build Coastguard Workerfor.inc.1: ; preds = %do.body.1562.preheader, %entry 40*9880d681SAndroid Build Coastguard Worker %storemerge591 = phi <4 x i32> [ zeroinitializer, %entry ], [ %storemerge, %do.body.1562.preheader ] 41*9880d681SAndroid Build Coastguard Worker %add.i495 = add <4 x i32> %storemerge591, undef 42*9880d681SAndroid Build Coastguard Worker unreachable 43*9880d681SAndroid Build Coastguard Worker} 44*9880d681SAndroid Build Coastguard Worker 45*9880d681SAndroid Build Coastguard Worker; SI-LABEL: {{^}}foo: 46*9880d681SAndroid Build Coastguard Worker; SI: s_endpgm 47*9880d681SAndroid Build Coastguard Workerdefine amdgpu_ps void @foo() #0 { 48*9880d681SAndroid Build Coastguard Workerbb: 49*9880d681SAndroid Build Coastguard Worker br i1 undef, label %bb2, label %bb1 50*9880d681SAndroid Build Coastguard Worker 51*9880d681SAndroid Build Coastguard Workerbb1: ; preds = %bb 52*9880d681SAndroid Build Coastguard Worker br i1 undef, label %bb4, label %bb6 53*9880d681SAndroid Build Coastguard Worker 54*9880d681SAndroid Build Coastguard Workerbb2: ; preds = %bb4, %bb 55*9880d681SAndroid Build Coastguard Worker %tmp = phi float [ %tmp5, %bb4 ], [ 0.000000e+00, %bb ] 56*9880d681SAndroid Build Coastguard Worker br i1 undef, label %bb9, label %bb13 57*9880d681SAndroid Build Coastguard Worker 58*9880d681SAndroid Build Coastguard Workerbb4: ; preds = %bb7, %bb6, %bb1 59*9880d681SAndroid Build Coastguard Worker %tmp5 = phi float [ undef, %bb1 ], [ undef, %bb6 ], [ %tmp8, %bb7 ] 60*9880d681SAndroid Build Coastguard Worker br label %bb2 61*9880d681SAndroid Build Coastguard Worker 62*9880d681SAndroid Build Coastguard Workerbb6: ; preds = %bb1 63*9880d681SAndroid Build Coastguard Worker br i1 undef, label %bb7, label %bb4 64*9880d681SAndroid Build Coastguard Worker 65*9880d681SAndroid Build Coastguard Workerbb7: ; preds = %bb6 66*9880d681SAndroid Build Coastguard Worker %tmp8 = fmul float undef, undef 67*9880d681SAndroid Build Coastguard Worker br label %bb4 68*9880d681SAndroid Build Coastguard Worker 69*9880d681SAndroid Build Coastguard Workerbb9: ; preds = %bb2 70*9880d681SAndroid Build Coastguard Worker %tmp10 = call <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0) 71*9880d681SAndroid Build Coastguard Worker %tmp11 = extractelement <4 x float> %tmp10, i32 1 72*9880d681SAndroid Build Coastguard Worker %tmp12 = extractelement <4 x float> %tmp10, i32 3 73*9880d681SAndroid Build Coastguard Worker br label %bb14 74*9880d681SAndroid Build Coastguard Worker 75*9880d681SAndroid Build Coastguard Workerbb13: ; preds = %bb2 76*9880d681SAndroid Build Coastguard Worker br i1 undef, label %bb23, label %bb24 77*9880d681SAndroid Build Coastguard Worker 78*9880d681SAndroid Build Coastguard Workerbb14: ; preds = %bb27, %bb24, %bb9 79*9880d681SAndroid Build Coastguard Worker %tmp15 = phi float [ %tmp12, %bb9 ], [ undef, %bb27 ], [ 0.000000e+00, %bb24 ] 80*9880d681SAndroid Build Coastguard Worker %tmp16 = phi float [ %tmp11, %bb9 ], [ undef, %bb27 ], [ %tmp25, %bb24 ] 81*9880d681SAndroid Build Coastguard Worker %tmp17 = fmul float 10.5, %tmp16 82*9880d681SAndroid Build Coastguard Worker %tmp18 = fmul float 11.5, %tmp15 83*9880d681SAndroid Build Coastguard Worker call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %tmp18, float %tmp17, float %tmp17, float %tmp17) 84*9880d681SAndroid Build Coastguard Worker ret void 85*9880d681SAndroid Build Coastguard Worker 86*9880d681SAndroid Build Coastguard Workerbb23: ; preds = %bb13 87*9880d681SAndroid Build Coastguard Worker br i1 undef, label %bb24, label %bb26 88*9880d681SAndroid Build Coastguard Worker 89*9880d681SAndroid Build Coastguard Workerbb24: ; preds = %bb26, %bb23, %bb13 90*9880d681SAndroid Build Coastguard Worker %tmp25 = phi float [ %tmp, %bb13 ], [ %tmp, %bb26 ], [ 0.000000e+00, %bb23 ] 91*9880d681SAndroid Build Coastguard Worker br i1 undef, label %bb27, label %bb14 92*9880d681SAndroid Build Coastguard Worker 93*9880d681SAndroid Build Coastguard Workerbb26: ; preds = %bb23 94*9880d681SAndroid Build Coastguard Worker br label %bb24 95*9880d681SAndroid Build Coastguard Worker 96*9880d681SAndroid Build Coastguard Workerbb27: ; preds = %bb24 97*9880d681SAndroid Build Coastguard Worker br label %bb14 98*9880d681SAndroid Build Coastguard Worker} 99*9880d681SAndroid Build Coastguard Worker 100*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone 101*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.SI.image.sample.v2i32(<2 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1 102*9880d681SAndroid Build Coastguard Worker 103*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone 104*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.SI.packf16(float, float) #1 105*9880d681SAndroid Build Coastguard Worker 106*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float) 107*9880d681SAndroid Build Coastguard Worker 108*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind } 109*9880d681SAndroid Build Coastguard Workerattributes #1 = { nounwind readnone } 110