[llvm] [AMDGPU] Prevent VOP3 from receiving 64b relocations as immediates (PR #221932)

via llvm-commits llvm-commits at lists.llvm.org
Tue Sep 8 04:19:25 PDT 2026


github-actions[bot] wrote:

<!--PREMERGE ADVISOR COMMENT: Windows-->
# :window: Windows x64 Test Results

* 141650 tests passed
* 3256 tests skipped
* 1 test failed

## Failed Tests
(click on a test name to see its output)

### LLVM
<details>
<summary>LLVM.CodeGen/AMDGPU/si-fold-operands-64b-reloc.mir</summary>

```
Exit Code: 2

Command Output (stdout):
--
# RUN: at line 2
c:\_work\llvm-project\llvm-project\build\bin\llc.exe -mtriple=amdgpu13.10 -run-pass=si-fold-operands -o - C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\AMDGPU\si-fold-operands-64b-reloc.mir | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe -check-prefixes=GFX1310
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\llc.exe' -mtriple=amdgpu13.10 -run-pass=si-fold-operands -o - 'C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\AMDGPU\si-fold-operands-64b-reloc.mir'
# .---command stdout------------
# | --- |
# |   ; ModuleID = 'C:\_work\llvm-project\llvm-project\llvm\test\CodeGen\AMDGPU\si-fold-operands-64b-reloc.mir'
# |   source_filename = "C:\\_work\\llvm-project\\llvm-project\\llvm\\test\\CodeGen\\AMDGPU\\si-fold-operands-64b-reloc.mir"
# |   target datalayout = "e-m:e-p:64:64-p1:64:64-p2:32:32-p3:32:32-p4:64:64-p5:32:32-p6:32:32-p7:160:256:256:32-p8:128:128:128:48-p9:192:256:256:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-v2048:2048-n32:64-S32-A5-G1-ni:7:8:9"
# |   target triple = "amdgpu13.10"
# |   
# |   @mem = internal unnamed_addr addrspace(4) constant [4 x <4 x i32>] zeroinitializer
# |   
# |   define amdgpu_cs void @fold_vop3_abs64_sgpr() {
# |     ret void
# |   }
# |   
# |   define amdgpu_cs void @fold_vop3_abs64_vgpr() {
# |     ret void
# |   }
# |   
# |   define amdgpu_cs void @fold_vop3_rel64_sgpr() {
# |     ret void
# |   }
# |   
# |   define amdgpu_cs void @fold_vop3_rel64_vgpr() {
# |     ret void
# |   }
# | ...
# | ---
# | name:            fold_vop3_abs64_sgpr
# | alignment:       1
# | exposesReturnsTwice: false
# | legalized:       false
# | regBankSelected: false
# | selected:        false
# | failedISel:      false
# | tracksRegLiveness: true
# | hasWinCFI:       false
# | noPhis:          true
# | isSSA:           true
# | noVRegs:         false
# | hasFakeUses:     false
# | callsEHReturn:   false
# | callsUnwindInit: false
# | hasEHContTarget: false
# | hasEHScopes:     false
# | hasEHFunclets:   false
# | isOutlined:      false
# | debugInstrRef:   false
# | failsVerification: false
# | tracksDebugUserValues: false
# | registers:
# |   - { id: 0, class: sreg_64, preferred-register: '', flags: [  ] }
# |   - { id: 1, class: vreg_64, preferred-register: '', flags: [  ] }
# | liveins:         []
# | frameInfo:
# |   isFrameAddressTaken: false
# |   isReturnAddressTaken: false
# |   hasStackMap:     false
# |   hasPatchPoint:   false
# |   stackSize:       0
# |   offsetAdjustment: 0
# |   maxAlignment:    1
# |   adjustsStack:    false
# |   hasCalls:        false
# |   framePointerPolicy: none
# |   stackProtector:  ''
# |   functionContext: ''
# |   maxCallFrameSize: 4294967295
# |   cvBytesOfCalleeSavedRegisters: 0
# |   hasOpaqueSPAdjustment: false
# |   hasVAStart:      false
# |   hasMustTailInVarArgFunc: false
# |   hasTailCall:     false
# |   isCalleeSavedInfoValid: false
# |   localFrameSize:  0
# | fixedStack:      []
# | stack:           []
# | entry_values:    []
# | callSites:       []
# | debugValueSubstitutions: []
# | constants:       []
# | machineFunctionInfo:
# |   explicitKernArgSize: 0
# |   maxKernArgAlign: 1
# |   ldsSize:         0
# |   gdsSize:         0
# |   dynLDSAlign:     1
# |   isEntryFunction: false
# |   isChainFunction: false
# |   memoryBound:     false
# |   waveLimiter:     false
# |   hasSpilledSGPRs: false
# |   hasSpilledVGPRs: false
# |   hasNoWWMPoolSGPRSpillFallback: false
# |   numWaveDispatchSGPRs: 0
# |   numWaveDispatchVGPRs: 0
# |   scratchRSrcReg:  '$private_rsrc_reg'
# |   frameOffsetReg:  '$fp_reg'
# |   stackPtrOffsetReg: '$sp_reg'
# |   bytesInStackArgArea: 0
# |   returnsVoid:     true
# |   psInputAddr:     0
# |   psInputEnable:   0
# |   maxMemoryClusterDWords: 8
# |   mode:
# |     ieee:            false
# |     dx10-clamp:      true
# |     fp32-input-denormals: true
# |     fp32-output-denormals: true
# |     fp64-fp16-input-denormals: true
# |     fp64-fp16-output-denormals: true
# |   highBitsOf32BitAddress: 0
# |   occupancy:       16
# |   vgprForAGPRCopy: ''
# |   sgprForEXECCopy: ''
# |   longBranchReservedReg: ''
# |   hasInitWholeWave: false
# |   dynamicVGPRBlockSize: 0
# |   scratchReservedForDynamicVGPRs: 0
# |   numKernargPreloadSGPRs: 0
# |   isWholeWaveFunction: false
# |   minNumAGPRs:     4294967295
# | body:             |
# |   bb.0:
# |     %0:sreg_64 = S_MOV_B64 target-flags(amdgpu-abs64) @mem
# |     %1:vreg_64, $sgpr_null = V_MAD_U64_U32_e64 0, 0, %0, 0, implicit $exec
# | ...
# | ---
# | name:            fold_vop3_abs64_vgpr
# | alignment:       1
# | exposesReturnsTwice: false
# | legalized:       false
# | regBankSelected: false
# | selected:        false
# | failedISel:      false
# | tracksRegLiveness: true
# | hasWinCFI:       false
# | noPhis:          true
# | isSSA:           true
# | noVRegs:         false
# | hasFakeUses:     false
# | callsEHReturn:   false
# | callsUnwindInit: false
# | hasEHContTarget: false
# | hasEHScopes:     false
# | hasEHFunclets:   false
# | isOutlined:      false
# | debugInstrRef:   false
# | failsVerification: false
# | tracksDebugUserValues: false
# | registers:
# |   - { id: 0, class: vreg_64, preferred-register: '', flags: [  ] }
# |   - { id: 1, class: vreg_64, preferred-register: '', flags: [  ] }
# | liveins:         []
# | frameInfo:
# |   isFrameAddressTaken: false
# |   isReturnAddressTaken: false
# |   hasStackMap:     false
# |   hasPatchPoint:   false
# |   stackSize:       0
# |   offsetAdjustment: 0
# |   maxAlignment:    1
# |   adjustsStack:    false
# |   hasCalls:        false
# |   framePointerPolicy: none
# |   stackProtector:  ''
# |   functionContext: ''
# |   maxCallFrameSize: 4294967295
# |   cvBytesOfCalleeSavedRegisters: 0
# |   hasOpaqueSPAdjustment: false
# |   hasVAStart:      false
# |   hasMustTailInVarArgFunc: false
# |   hasTailCall:     false
# |   isCalleeSavedInfoValid: false
# |   localFrameSize:  0
# | fixedStack:      []
# | stack:           []
# | entry_values:    []
# | callSites:       []
# | debugValueSubstitutions: []
# | constants:       []
# | machineFunctionInfo:
# |   explicitKernArgSize: 0
# |   maxKernArgAlign: 1
# |   ldsSize:         0
# |   gdsSize:         0
# |   dynLDSAlign:     1
# |   isEntryFunction: false
# |   isChainFunction: false
# |   memoryBound:     false
# |   waveLimiter:     false
# |   hasSpilledSGPRs: false
# |   hasSpilledVGPRs: false
# |   hasNoWWMPoolSGPRSpillFallback: false
# |   numWaveDispatchSGPRs: 0
# |   numWaveDispatchVGPRs: 0
# |   scratchRSrcReg:  '$private_rsrc_reg'
# |   frameOffsetReg:  '$fp_reg'
# |   stackPtrOffsetReg: '$sp_reg'
# |   bytesInStackArgArea: 0
# |   returnsVoid:     true
# |   psInputAddr:     0
# |   psInputEnable:   0
# |   maxMemoryClusterDWords: 8
# |   mode:
# |     ieee:            false
# |     dx10-clamp:      true
# |     fp32-input-denormals: true
# |     fp32-output-denormals: true
# |     fp64-fp16-input-denormals: true
# |     fp64-fp16-output-denormals: true
# |   highBitsOf32BitAddress: 0
# |   occupancy:       16
# |   vgprForAGPRCopy: ''
# |   sgprForEXECCopy: ''
# |   longBranchReservedReg: ''
# |   hasInitWholeWave: false
# |   dynamicVGPRBlockSize: 0
# |   scratchReservedForDynamicVGPRs: 0
# |   numKernargPreloadSGPRs: 0
# |   isWholeWaveFunction: false
# |   minNumAGPRs:     4294967295
# | body:             |
# |   bb.0:
# |     %0:vreg_64 = V_MOV_B64_PSEUDO target-flags(amdgpu-abs64) @mem, implicit $exec
# |     %1:vreg_64, $sgpr_null = V_MAD_U64_U32_e64 0, 0, %0, 0, implicit $exec
# | ...
# | ---
# | name:            fold_vop3_rel64_sgpr
# | alignment:       1
# | exposesReturnsTwice: false
# | legalized:       false
# | regBankSelected: false
# | selected:        false
# | failedISel:      false
# | tracksRegLiveness: true
# | hasWinCFI:       false
# | noPhis:          true
# | isSSA:           true
# | noVRegs:         false
# | hasFakeUses:     false
# | callsEHReturn:   false
# | callsUnwindInit: false
# | hasEHContTarget: false
# | hasEHScopes:     false
# | hasEHFunclets:   false
# | isOutlined:      false
# | debugInstrRef:   false
# | failsVerification: false
# | tracksDebugUserValues: false
# | registers:
# |   - { id: 0, class: sreg_64, preferred-register: '', flags: [  ] }
# |   - { id: 1, class: vreg_64, preferred-register: '', flags: [  ] }
# | liveins:         []
# | frameInfo:
# |   isFrameAddressTaken: false
# |   isReturnAddressTaken: false
# |   hasStackMap:     false
# |   hasPatchPoint:   false
# |   stackSize:       0
# |   offsetAdjustment: 0
# |   maxAlignment:    1
# |   adjustsStack:    false
# |   hasCalls:        false
# |   framePointerPolicy: none
# |   stackProtector:  ''
# |   functionContext: ''
# |   maxCallFrameSize: 4294967295
# |   cvBytesOfCalleeSavedRegisters: 0
# |   hasOpaqueSPAdjustment: false
# |   hasVAStart:      false
# |   hasMustTailInVarArgFunc: false
# |   hasTailCall:     false
# |   isCalleeSavedInfoValid: false
# |   localFrameSize:  0
# | fixedStack:      []
# | stack:           []
# | entry_values:    []
# | callSites:       []
# | debugValueSubstitutions: []
# | constants:       []
# | machineFunctionInfo:
# |   explicitKernArgSize: 0
# |   maxKernArgAlign: 1
# |   ldsSize:         0
# |   gdsSize:         0
# |   dynLDSAlign:     1
# |   isEntryFunction: false
# |   isChainFunction: false
# |   memoryBound:     false
# |   waveLimiter:     false
# |   hasSpilledSGPRs: false
# |   hasSpilledVGPRs: false
# |   hasNoWWMPoolSGPRSpillFallback: false
# |   numWaveDispatchSGPRs: 0
# |   numWaveDispatchVGPRs: 0
# |   scratchRSrcReg:  '$private_rsrc_reg'
# |   frameOffsetReg:  '$fp_reg'
# |   stackPtrOffsetReg: '$sp_reg'
# |   bytesInStackArgArea: 0
# |   returnsVoid:     true
# |   psInputAddr:     0
# |   psInputEnable:   0
# |   maxMemoryClusterDWords: 8
# |   mode:
# |     ieee:            false
# |     dx10-clamp:      true
# |     fp32-input-denormals: true
# |     fp32-output-denormals: true
# |     fp64-fp16-input-denormals: true
# |     fp64-fp16-output-denormals: true
# |   highBitsOf32BitAddress: 0
# |   occupancy:       16
# |   vgprForAGPRCopy: ''
# |   sgprForEXECCopy: ''
# |   longBranchReservedReg: ''
# |   hasInitWholeWave: false
# |   dynamicVGPRBlockSize: 0
# |   scratchReservedForDynamicVGPRs: 0
# |   numKernargPreloadSGPRs: 0
# |   isWholeWaveFunction: false
# |   minNumAGPRs:     4294967295
# | body:             |
# |   bb.0:
# |     %0:sreg_64 = S_MOV_B64 target-flags(amdgpu-rel64) @mem
# |     %1:vreg_64, $sgpr_null = V_MAD_U64_U32_e64 0, 0, %0, 0, implicit $exec
# | ...
# | ---
# | name:            fold_vop3_rel64_vgpr
# | alignment:       1
# | exposesReturnsTwice: false
# | legalized:       false
# | regBankSelected: false
# | selected:        false
# | failedISel:      false
# | tracksRegLiveness: true
# | hasWinCFI:       false
# | noPhis:          true
# | isSSA:           true
# | noVRegs:         false
# | hasFakeUses:     false
# | callsEHReturn:   false
# | callsUnwindInit: false
# | hasEHContTarget: false
# | hasEHScopes:     false
# | hasEHFunclets:   false
# | isOutlined:      false
# | debugInstrRef:   false
# | failsVerification: false
# | tracksDebugUserValues: false
# | registers:
# |   - { id: 0, class: vreg_64, preferred-register: '', flags: [  ] }
# |   - { id: 1, class: vreg_64, preferred-register: '', flags: [  ] }
# | liveins:         []
# | frameInfo:
# |   isFrameAddressTaken: false
# |   isReturnAddressTaken: false
# |   hasStackMap:     false
# |   hasPatchPoint:   false
# |   stackSize:       0
# |   offsetAdjustment: 0
# |   maxAlignment:    1
# |   adjustsStack:    false
# |   hasCalls:        false
# |   framePointerPolicy: none
# |   stackProtector:  ''
# |   functionContext: ''
# |   maxCallFrameSize: 4294967295
# |   cvBytesOfCalleeSavedRegisters: 0
# |   hasOpaqueSPAdjustment: false
# |   hasVAStart:      false
# |   hasMustTailInVarArgFunc: false
# |   hasTailCall:     false
# |   isCalleeSavedInfoValid: false
# |   localFrameSize:  0
# | fixedStack:      []
# | stack:           []
# | entry_values:    []
# | callSites:       []
# | debugValueSubstitutions: []
# | constants:       []
# | machineFunctionInfo:
# |   explicitKernArgSize: 0
# |   maxKernArgAlign: 1
# |   ldsSize:         0
# |   gdsSize:         0
# |   dynL
# | ...
# `---data was truncated (10240/11397) (change limit with -D output_limit=N)
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' -check-prefixes=GFX1310
# .---command stderr------------
# | <check-file> not specified
# `-----------------------------
# error: command failed with exit status: 2

--

```
</details>

If these failures are unrelated to your changes (for example tests are broken or flaky at HEAD), please open an issue at https://github.com/llvm/llvm-project/issues and add the `infrastructure` label.

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


More information about the llvm-commits mailing list