forked from OSchip/llvm-project
RISCV: Avoid GlobalISel build break in a future patch
The GlobalISelEmitter is stricter about matching timm instruction outputs to timm inputs (although in an accidental sort of way that doesn't hit a proper import failure error). Also, apparently no intrinsic patterns were importing since the ID enum declaration was missing.
This commit is contained in:
parent
2d3b8cc83f
commit
db091e12b2
|
@ -235,13 +235,13 @@ class PseudoMaskedAMOUMinUMax
|
||||||
|
|
||||||
class PseudoMaskedAMOPat<Intrinsic intrin, Pseudo AMOInst>
|
class PseudoMaskedAMOPat<Intrinsic intrin, Pseudo AMOInst>
|
||||||
: Pat<(intrin GPR:$addr, GPR:$incr, GPR:$mask, timm:$ordering),
|
: Pat<(intrin GPR:$addr, GPR:$incr, GPR:$mask, timm:$ordering),
|
||||||
(AMOInst GPR:$addr, GPR:$incr, GPR:$mask, imm:$ordering)>;
|
(AMOInst GPR:$addr, GPR:$incr, GPR:$mask, timm:$ordering)>;
|
||||||
|
|
||||||
class PseudoMaskedAMOMinMaxPat<Intrinsic intrin, Pseudo AMOInst>
|
class PseudoMaskedAMOMinMaxPat<Intrinsic intrin, Pseudo AMOInst>
|
||||||
: Pat<(intrin GPR:$addr, GPR:$incr, GPR:$mask, GPR:$shiftamt,
|
: Pat<(intrin GPR:$addr, GPR:$incr, GPR:$mask, GPR:$shiftamt,
|
||||||
timm:$ordering),
|
timm:$ordering),
|
||||||
(AMOInst GPR:$addr, GPR:$incr, GPR:$mask, GPR:$shiftamt,
|
(AMOInst GPR:$addr, GPR:$incr, GPR:$mask, GPR:$shiftamt,
|
||||||
imm:$ordering)>;
|
timm:$ordering)>;
|
||||||
|
|
||||||
def PseudoMaskedAtomicSwap32 : PseudoMaskedAMO;
|
def PseudoMaskedAtomicSwap32 : PseudoMaskedAMO;
|
||||||
def : PseudoMaskedAMOPat<int_riscv_masked_atomicrmw_xchg_i32,
|
def : PseudoMaskedAMOPat<int_riscv_masked_atomicrmw_xchg_i32,
|
||||||
|
@ -310,7 +310,7 @@ def PseudoMaskedCmpXchg32
|
||||||
def : Pat<(int_riscv_masked_cmpxchg_i32
|
def : Pat<(int_riscv_masked_cmpxchg_i32
|
||||||
GPR:$addr, GPR:$cmpval, GPR:$newval, GPR:$mask, timm:$ordering),
|
GPR:$addr, GPR:$cmpval, GPR:$newval, GPR:$mask, timm:$ordering),
|
||||||
(PseudoMaskedCmpXchg32
|
(PseudoMaskedCmpXchg32
|
||||||
GPR:$addr, GPR:$cmpval, GPR:$newval, GPR:$mask, imm:$ordering)>;
|
GPR:$addr, GPR:$cmpval, GPR:$newval, GPR:$mask, timm:$ordering)>;
|
||||||
|
|
||||||
} // Predicates = [HasStdExtA]
|
} // Predicates = [HasStdExtA]
|
||||||
|
|
||||||
|
@ -387,5 +387,5 @@ defm : PseudoCmpXchgPat<"atomic_cmp_swap_64", PseudoCmpXchg64>;
|
||||||
def : Pat<(int_riscv_masked_cmpxchg_i64
|
def : Pat<(int_riscv_masked_cmpxchg_i64
|
||||||
GPR:$addr, GPR:$cmpval, GPR:$newval, GPR:$mask, timm:$ordering),
|
GPR:$addr, GPR:$cmpval, GPR:$newval, GPR:$mask, timm:$ordering),
|
||||||
(PseudoMaskedCmpXchg32
|
(PseudoMaskedCmpXchg32
|
||||||
GPR:$addr, GPR:$cmpval, GPR:$newval, GPR:$mask, imm:$ordering)>;
|
GPR:$addr, GPR:$cmpval, GPR:$newval, GPR:$mask, timm:$ordering)>;
|
||||||
} // Predicates = [HasStdExtA, IsRV64]
|
} // Predicates = [HasStdExtA, IsRV64]
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
#include "RISCVTargetMachine.h"
|
#include "RISCVTargetMachine.h"
|
||||||
#include "llvm/CodeGen/GlobalISel/InstructionSelector.h"
|
#include "llvm/CodeGen/GlobalISel/InstructionSelector.h"
|
||||||
#include "llvm/CodeGen/GlobalISel/InstructionSelectorImpl.h"
|
#include "llvm/CodeGen/GlobalISel/InstructionSelectorImpl.h"
|
||||||
|
#include "llvm/IR/IntrinsicsRISCV.h"
|
||||||
#include "llvm/Support/Debug.h"
|
#include "llvm/Support/Debug.h"
|
||||||
|
|
||||||
#define DEBUG_TYPE "riscv-isel"
|
#define DEBUG_TYPE "riscv-isel"
|
||||||
|
|
Loading…
Reference in New Issue