[llvm] [AMDGPU] Change the representation of double literals in operands (PR #68740)

Jay Foad via llvm-commits llvm-commits at lists.llvm.org
Wed Oct 11 02:28:33 PDT 2023


================
@@ -2241,7 +2242,10 @@ void AMDGPUOperand::addLiteralImmOperand(MCInst &Inst, int64_t Val, bool ApplyMo
       return;
     }
 
-    Inst.addOperand(MCOperand::createImm(Lo_32(Val)));
+    if (isInt<32>(Val) || isUInt<32>(Val))
+      Val = AMDGPU::isSISrcFPOperand(InstDesc, OpNum) ? Val << 32 : Lo_32(Val);
----------------
jayfoad wrote:

Aren't there three interesting cases?
```
  if (!AMDGPU::isSISrcFPOperand(InstDesc, OpNum)) // integer operand
    Val = Lo_32(Val);
  else if (isInt<32>(Val) || isUInt<32>(Val))) // small hex literal for double operand
    Val = Val << 32;
  else // large hex literal for double operand
    do nothing;
```

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


More information about the llvm-commits mailing list