[all-commits] [llvm/llvm-project] 00aa0a: [NVPTX] Add imm variants for surface and texture i...
Andrew Savonichev via All-commits
all-commits at lists.llvm.org
Wed Nov 10 08:06:00 PST 2021
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 00aa0aeb067bbfda274aafdcabe9f058959db66b
https://github.com/llvm/llvm-project/commit/00aa0aeb067bbfda274aafdcabe9f058959db66b
Author: Andrew Savonichev <andrew.savonichev at gmail.com>
Date: 2021-11-10 (Wed, 10 Nov 2021)
Changed paths:
M llvm/lib/Target/NVPTX/NVPTXISelDAGToDAG.cpp
M llvm/lib/Target/NVPTX/NVPTXIntrinsics.td
M llvm/lib/Target/NVPTX/NVPTXReplaceImageHandles.cpp
M llvm/test/CodeGen/NVPTX/surf-read-cuda.ll
M llvm/test/CodeGen/NVPTX/surf-read.ll
M llvm/test/CodeGen/NVPTX/surf-write-cuda.ll
M llvm/test/CodeGen/NVPTX/surf-write.ll
M llvm/test/CodeGen/NVPTX/tex-read-cuda.ll
M llvm/test/CodeGen/NVPTX/tex-read.ll
M llvm/test/CodeGen/NVPTX/texsurf-queries.ll
Log Message:
-----------
[NVPTX] Add imm variants for surface and texture instructions
Texture/sampler/surface operands can be either a register or an
immediate (an index of .texref, .samplerref or .surfref).
TableGen declarations for these instructions used to only have
Int64Regs operands, so this caused issues when machine verifier
is turned on:
*** Bad machine code: Expected a register operand. ***
- function: bar
- basic block: %bb.0 (0x55b144d99ab8)
- instruction: %4:int32regs = SULD_1D_I32_TRAP 0, killed %2:int32regs
- operand 1: 0
The solution is to duplicate these instructions for all possible
operand types (i16imm and Int64Regs). Since this would
essentially double the amount code in TableGen, the patch also
does some refactoring for the original instructions to keep
things manageable.
Differential Revision: https://reviews.llvm.org/D112232
More information about the All-commits
mailing list