================
@@ -1509,18 +1509,18 @@ multiclass MIMG_Gather <mimgopc op, AMDGPUSampleVariant 
sample, bit wqm = 0,
 multiclass MIMG_Gather_WQM <mimgopc op, AMDGPUSampleVariant sample>
     : MIMG_Gather<op, sample, 1>;
 
-class MIMG_IntersectRay_Helper<bit Is64, bit IsA16, bit isDual> {
-  int num_addrs = !if(Is64, !if(IsA16, 9, 12), !if(IsA16, 8, 11));
+class MIMG_IntersectRay_Helper<bit Is64, bit IsA16, bit isDual, bit isBVH8> {
+  int num_addrs = !if(isBVH8, 11, !if(Is64, !if(IsA16, 9, 12), !if(IsA16, 8, 
11)));
   RegisterClass RegClass = MIMGAddrSize<num_addrs, 0>.RegClass;
   int VAddrDwords = !srl(RegClass.Size, 5);
 
   int GFX11PlusNSAAddrs = !if(IsA16, 4, 5);
   RegisterClass node_ptr_type = !if(Is64, VReg_64, VGPR_32);
   list<RegisterClass> GFX11PlusAddrTypes =
-    !if(isDual, [VReg_64, VReg_64, VReg_96, VReg_96, VReg_64],
-         !if(IsA16,
-              [node_ptr_type, VGPR_32, VReg_96, VReg_96],
-              [node_ptr_type, VGPR_32, VReg_96, VReg_96, VReg_96]));
+     !cond(!eq(isBVH8, 1) : [node_ptr_type, VReg_64, VReg_96, VReg_96, 
VGPR_32],
+           !eq(isDual, 1) : [node_ptr_type, VReg_64, VReg_96, VReg_96, 
VReg_64],
+           !eq(IsA16,  0) : [node_ptr_type, VGPR_32, VReg_96, VReg_96, 
VReg_96],
+           !eq(IsA16,  1) : [node_ptr_type, VGPR_32, VReg_96, VReg_96]);
----------------
mbrkusanin wrote:

```suggestion
     !cond(isBVH8 : [node_ptr_type, VReg_64, VReg_96, VReg_96, VGPR_32],
           isDual : [node_ptr_type, VReg_64, VReg_96, VReg_96, VReg_64],
           IsA16  : [node_ptr_type, VGPR_32, VReg_96, VReg_96],
           true   : [node_ptr_type, VGPR_32, VReg_96, VReg_96, VReg_96]);
```

!eq(X, 1) is redundant here, and last two options can be swapped

https://github.com/llvm/llvm-project/pull/130041
_______________________________________________
llvm-branch-commits mailing list
llvm-branch-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits

Reply via email to