@@ -1184,6 +1184,47 @@ merge:
11841184 ret [4 x float ] %i25
11851185}
11861186
1187+ define amdgpu_ps [4 x float ] @load_2dmsaa_v4f32_dmask1_different_rsrc (<8 x i32 > inreg %rsrc1 , <8 x i32 > inreg %rsrc2 , i32 %s , i32 %t ) {
1188+ ; NO-MSAA-LABEL: define amdgpu_ps [4 x float] @load_2dmsaa_v4f32_dmask1_different_rsrc(
1189+ ; NO-MSAA-SAME: <8 x i32> inreg [[RSRC1:%.*]], <8 x i32> inreg [[RSRC2:%.*]], i32 [[S:%.*]], i32 [[T:%.*]]) #[[ATTR0]] {
1190+ ; NO-MSAA-NEXT: main_body:
1191+ ; NO-MSAA-NEXT: [[I:%.*]] = call float @llvm.amdgcn.image.load.2dmsaa.f32.i32(i32 1, i32 [[S]], i32 [[T]], i32 0, <8 x i32> [[RSRC1]], i32 0, i32 0)
1192+ ; NO-MSAA-NEXT: [[I1:%.*]] = call float @llvm.amdgcn.image.load.2dmsaa.f32.i32(i32 1, i32 [[S]], i32 [[T]], i32 1, <8 x i32> [[RSRC1]], i32 0, i32 0)
1193+ ; NO-MSAA-NEXT: [[I2:%.*]] = call float @llvm.amdgcn.image.load.2dmsaa.f32.i32(i32 1, i32 [[S]], i32 [[T]], i32 0, <8 x i32> [[RSRC2]], i32 0, i32 0)
1194+ ; NO-MSAA-NEXT: [[I3:%.*]] = call float @llvm.amdgcn.image.load.2dmsaa.f32.i32(i32 1, i32 [[S]], i32 [[T]], i32 1, <8 x i32> [[RSRC2]], i32 0, i32 0)
1195+ ; NO-MSAA-NEXT: [[I4:%.*]] = insertvalue [4 x float] undef, float [[I]], 0
1196+ ; NO-MSAA-NEXT: [[I5:%.*]] = insertvalue [4 x float] [[I4]], float [[I1]], 1
1197+ ; NO-MSAA-NEXT: [[I6:%.*]] = insertvalue [4 x float] [[I5]], float [[I2]], 2
1198+ ; NO-MSAA-NEXT: [[I7:%.*]] = insertvalue [4 x float] [[I6]], float [[I3]], 3
1199+ ; NO-MSAA-NEXT: ret [4 x float] [[I7]]
1200+ ;
1201+ ; MSAA-LABEL: define amdgpu_ps [4 x float] @load_2dmsaa_v4f32_dmask1_different_rsrc(
1202+ ; MSAA-SAME: <8 x i32> inreg [[RSRC1:%.*]], <8 x i32> inreg [[RSRC2:%.*]], i32 [[S:%.*]], i32 [[T:%.*]]) #[[ATTR0]] {
1203+ ; MSAA-NEXT: main_body:
1204+ ; MSAA-NEXT: [[TMP0:%.*]] = call <4 x float> @llvm.amdgcn.image.msaa.load.2dmsaa.v4f32.i32(i32 1, i32 [[S]], i32 [[T]], i32 0, <8 x i32> [[RSRC1]], i32 0, i32 0)
1205+ ; MSAA-NEXT: [[I:%.*]] = extractelement <4 x float> [[TMP0]], i64 0
1206+ ; MSAA-NEXT: [[I1:%.*]] = extractelement <4 x float> [[TMP0]], i64 1
1207+ ; MSAA-NEXT: [[TMP1:%.*]] = call <4 x float> @llvm.amdgcn.image.msaa.load.2dmsaa.v4f32.i32(i32 1, i32 [[S]], i32 [[T]], i32 0, <8 x i32> [[RSRC2]], i32 0, i32 0)
1208+ ; MSAA-NEXT: [[I2:%.*]] = extractelement <4 x float> [[TMP1]], i64 0
1209+ ; MSAA-NEXT: [[I3:%.*]] = extractelement <4 x float> [[TMP1]], i64 1
1210+ ; MSAA-NEXT: [[I4:%.*]] = insertvalue [4 x float] undef, float [[I]], 0
1211+ ; MSAA-NEXT: [[I5:%.*]] = insertvalue [4 x float] [[I4]], float [[I1]], 1
1212+ ; MSAA-NEXT: [[I6:%.*]] = insertvalue [4 x float] [[I5]], float [[I2]], 2
1213+ ; MSAA-NEXT: [[I7:%.*]] = insertvalue [4 x float] [[I6]], float [[I3]], 3
1214+ ; MSAA-NEXT: ret [4 x float] [[I7]]
1215+ ;
1216+ main_body:
1217+ %i = call float @llvm.amdgcn.image.load.2dmsaa.f32.i32 (i32 1 , i32 %s , i32 %t , i32 0 , <8 x i32 > %rsrc1 , i32 0 , i32 0 )
1218+ %i1 = call float @llvm.amdgcn.image.load.2dmsaa.f32.i32 (i32 1 , i32 %s , i32 %t , i32 1 , <8 x i32 > %rsrc1 , i32 0 , i32 0 )
1219+ %i2 = call float @llvm.amdgcn.image.load.2dmsaa.f32.i32 (i32 1 , i32 %s , i32 %t , i32 0 , <8 x i32 > %rsrc2 , i32 0 , i32 0 )
1220+ %i3 = call float @llvm.amdgcn.image.load.2dmsaa.f32.i32 (i32 1 , i32 %s , i32 %t , i32 1 , <8 x i32 > %rsrc2 , i32 0 , i32 0 )
1221+ %i4 = insertvalue [4 x float ] undef , float %i , 0
1222+ %i5 = insertvalue [4 x float ] %i4 , float %i1 , 1
1223+ %i6 = insertvalue [4 x float ] %i5 , float %i2 , 2
1224+ %i7 = insertvalue [4 x float ] %i6 , float %i3 , 3
1225+ ret [4 x float ] %i7
1226+ }
1227+
11871228declare float @llvm.amdgcn.image.load.2dmsaa.f32.i32 (i32 , i32 , i32 , i32 , <8 x i32 >, i32 , i32 ) #0
11881229declare <2 x float > @llvm.amdgcn.image.load.2dmsaa.v2f32.i32 (i32 , i32 , i32 , i32 , <8 x i32 >, i32 , i32 ) #0
11891230declare <3 x float > @llvm.amdgcn.image.load.2dmsaa.v3f32.i32 (i32 , i32 , i32 , i32 , <8 x i32 >, i32 , i32 ) #0
0 commit comments