diff options
Diffstat (limited to 'llvm/lib/Target/Hexagon/HexagonInstrInfo.td')
| -rw-r--r-- | llvm/lib/Target/Hexagon/HexagonInstrInfo.td | 26 |
1 files changed, 9 insertions, 17 deletions
diff --git a/llvm/lib/Target/Hexagon/HexagonInstrInfo.td b/llvm/lib/Target/Hexagon/HexagonInstrInfo.td index c5719ad5b6d..16298cae083 100644 --- a/llvm/lib/Target/Hexagon/HexagonInstrInfo.td +++ b/llvm/lib/Target/Hexagon/HexagonInstrInfo.td @@ -401,13 +401,12 @@ def A2_tfril: T_tfr16<0>; def A2_tfrih: T_tfr16<1>; // Conditional transfer is an alias to conditional "Rd = add(Rs, #0)". -let isPredicated = 1, hasNewValue = 1, opNewValue = 0 in +let isPredicated = 1, hasNewValue = 1, isCodeGenOnly = 1, opNewValue = 0, + isPseudo = 1 in class T_tfr_pred<bit isPredNot, bit isPredNew> : ALU32Inst<(outs IntRegs:$dst), (ins PredRegs:$src1, IntRegs:$src2), - "if ("#!if(isPredNot, "!", "")# - "$src1"#!if(isPredNew, ".new", "")# - ") $dst = $src2"> { + ""> { bits<5> dst; bits<2> src1; bits<5> src2; @@ -487,6 +486,11 @@ multiclass TFR64_base<string BaseName> { } } +def A2_tfrfAlias : InstAlias<"if (!$Pu4) $Rd32=$Rs32", (A2_paddif IntRegs:$Rd32, PredRegs:$Pu4, IntRegs:$Rs32, 0)>; +def A2_tfrfnewAlias : InstAlias<"if (!$Pu4.new) $Rd32=$Rs32", (A2_paddifnew IntRegs:$Rd32, PredRegs:$Pu4, IntRegs:$Rs32, 0)>; +def A2_tfrtAlias : InstAlias<"if ($Pu4) $Rd32=$Rs32", (A2_paddit IntRegs:$Rd32, PredRegs:$Pu4, IntRegs:$Rs32, 0)>; +def A2_tfrtnewAlias : InstAlias<"if ($Pu4.new) $Rd32=$Rs32", (A2_padditnew IntRegs:$Rd32, PredRegs:$Pu4, IntRegs:$Rs32, 0)>; + let InputType = "imm", isExtendable = 1, isExtentSigned = 1, opExtentBits = 12, isMoveImm = 1, opExtendable = 2, BaseOpcode = "TFRI", CextOpcode = "TFR", hasSideEffects = 0, isPredicated = 1, hasNewValue = 1 in @@ -699,19 +703,7 @@ defm zxth : ALU32_2op_base<"zxth", 0b110>, PredNewRel; let hasNewValue = 1, opNewValue = 0 in class T_ZXTB: ALU32Inst < (outs IntRegs:$Rd), (ins IntRegs:$Rs), - "$Rd = zxtb($Rs)", [] > { // Rd = and(Rs,255) - bits<5> Rd; - bits<5> Rs; - bits<10> s10 = 255; - - let IClass = 0b0111; - - let Inst{27-22} = 0b011000; - let Inst{4-0} = Rd; - let Inst{20-16} = Rs; - let Inst{21} = s10{9}; - let Inst{13-5} = s10{8-0}; -} + "$Rd=zxtb($Rs)", [] >; //Rd=zxtb(Rs): assembler mapped to "Rd=and(Rs,#255) multiclass ZXTB_base <string mnemonic, bits<3> minOp> { |

