[llvm] [AMDGPU] Add wave reduce intrinsics for double types - 1 (PR #170811)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Wed Jan 21 00:59:00 PST 2026


================
@@ -5943,6 +5942,63 @@ static MachineBasicBlock *lowerWaveReduce(MachineInstr &MI,
                              .addReg(Accumulator->getOperand(0).getReg());
         break;
       }
+      case AMDGPU::V_MIN_F64_e64:
+      case AMDGPU::V_MAX_F64_e64: {
+        int SrcIdx =
+            AMDGPU::getNamedOperandIdx(MI.getOpcode(), AMDGPU::OpName::src);
+        const TargetRegisterClass *VregRC =
+            TRI->getAllocatableClass(TII->getRegClass(MI.getDesc(), SrcIdx));
+        const TargetRegisterClass *VregSubRC =
+            TRI->getSubRegisterClass(VregRC, AMDGPU::sub0);
+        Register AccumulatorVReg = MRI.createVirtualRegister(VregRC);
+        Register DstVreg = MRI.createVirtualRegister(VregRC);
+        Register LaneValLo =
+            MRI.createVirtualRegister(&AMDGPU::SReg_32_XM0RegClass);
+        Register LaneValHi =
+            MRI.createVirtualRegister(&AMDGPU::SReg_32_XM0RegClass);
+        BuildMI(*ComputeLoop, I, DL, TII->get(AMDGPU::V_MOV_B64_PSEUDO),
+                AccumulatorVReg)
+            .addReg(Accumulator->getOperand(0).getReg());
+        if (IsGFX12Plus) {
----------------
arsenm wrote:

```suggestion
        if (ST.getGeneration() >= AMDGPUSubtarget::::GFX12) {
```

This should have a named feature, but it looks like the one we have is misnamed and misapplied on the instruction definitions 

https://github.com/llvm/llvm-project/pull/170811


More information about the llvm-commits mailing list