mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-15 22:28:18 +00:00
Revert commit r157966
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157972 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -62,14 +62,6 @@ def t2_so_imm_neg_XFORM : SDNodeXForm<imm, [{
|
|||||||
return CurDAG->getTargetConstant(-((int)N->getZExtValue()), MVT::i32);
|
return CurDAG->getTargetConstant(-((int)N->getZExtValue()), MVT::i32);
|
||||||
}]>;
|
}]>;
|
||||||
|
|
||||||
// so_imm_not_sext_XFORM - Return a so_imm value packed into the format
|
|
||||||
// described for so_imm_not_sext def below.
|
|
||||||
def t2_so_imm_not_sext_XFORM : SDNodeXForm<imm, [{
|
|
||||||
APInt apIntN = N->getAPIntValue();
|
|
||||||
unsigned N16bitSignExt = apIntN.trunc(16).sext(32).getZExtValue();
|
|
||||||
return CurDAG->getTargetConstant(~N16bitSignExt, MVT::i32);
|
|
||||||
}]>;
|
|
||||||
|
|
||||||
// t2_so_imm - Match a 32-bit immediate operand, which is an
|
// t2_so_imm - Match a 32-bit immediate operand, which is an
|
||||||
// 8-bit immediate rotated by an arbitrary number of bits, or an 8-bit
|
// 8-bit immediate rotated by an arbitrary number of bits, or an 8-bit
|
||||||
// immediate splatted into multiple bytes of the word.
|
// immediate splatted into multiple bytes of the word.
|
||||||
@@ -94,17 +86,6 @@ def t2_so_imm_not : Operand<i32>, PatLeaf<(imm), [{
|
|||||||
let ParserMatchClass = t2_so_imm_not_asmoperand;
|
let ParserMatchClass = t2_so_imm_not_asmoperand;
|
||||||
}
|
}
|
||||||
|
|
||||||
// t2_so_imm_not_sext - Match an immediate that when zero-extended
|
|
||||||
// from 16-bits to 32-bits is a complement of a t2_so_imm.
|
|
||||||
def t2_so_imm_not_sext : Operand<i32>, PatLeaf<(imm), [{
|
|
||||||
APInt apIntN = N->getAPIntValue();
|
|
||||||
if (!apIntN.isIntN(16)) return false;
|
|
||||||
unsigned N16bitSignExt = apIntN.trunc(16).sext(32).getZExtValue();
|
|
||||||
return ARM_AM::getT2SOImmVal(~N16bitSignExt) != -1;
|
|
||||||
}], t2_so_imm_not_sext_XFORM> {
|
|
||||||
let ParserMatchClass = t2_so_imm_not_asmoperand;
|
|
||||||
}
|
|
||||||
|
|
||||||
// t2_so_imm_neg - Match an immediate that is a negation of a t2_so_imm.
|
// t2_so_imm_neg - Match an immediate that is a negation of a t2_so_imm.
|
||||||
def t2_so_imm_neg_asmoperand : AsmOperandClass { let Name = "T2SOImmNeg"; }
|
def t2_so_imm_neg_asmoperand : AsmOperandClass { let Name = "T2SOImmNeg"; }
|
||||||
def t2_so_imm_neg : Operand<i32>, PatLeaf<(imm), [{
|
def t2_so_imm_neg : Operand<i32>, PatLeaf<(imm), [{
|
||||||
@@ -2351,11 +2332,6 @@ let AddedComplexity = 1 in
|
|||||||
def : T2Pat<(and rGPR:$src, t2_so_imm_not:$imm),
|
def : T2Pat<(and rGPR:$src, t2_so_imm_not:$imm),
|
||||||
(t2BICri rGPR:$src, t2_so_imm_not:$imm)>;
|
(t2BICri rGPR:$src, t2_so_imm_not:$imm)>;
|
||||||
|
|
||||||
// so_imm_not_sext is needed instead of so_imm_not, as the value of imm
|
|
||||||
// will match the original bitWidth for $src.
|
|
||||||
def : T2Pat<(and rGPR:$src, t2_so_imm_not_sext:$imm),
|
|
||||||
(t2BICri rGPR:$src, t2_so_imm_not_sext:$imm)>;
|
|
||||||
|
|
||||||
// FIXME: Disable this pattern on Darwin to workaround an assembler bug.
|
// FIXME: Disable this pattern on Darwin to workaround an assembler bug.
|
||||||
def : T2Pat<(or rGPR:$src, t2_so_imm_not:$imm),
|
def : T2Pat<(or rGPR:$src, t2_so_imm_not:$imm),
|
||||||
(t2ORNri rGPR:$src, t2_so_imm_not:$imm)>,
|
(t2ORNri rGPR:$src, t2_so_imm_not:$imm)>,
|
||||||
|
@@ -1,19 +0,0 @@
|
|||||||
; RUN: llc %s -o - | FileCheck %s
|
|
||||||
; ModuleID = 'bic.c'
|
|
||||||
target triple = "thumbv7-apple-ios3.0.0"
|
|
||||||
|
|
||||||
define zeroext i16 @foo16(i16 zeroext %f) nounwind readnone optsize ssp {
|
|
||||||
entry:
|
|
||||||
; CHECK: .thumb_func _foo16
|
|
||||||
; CHECK: {{bic[^#]*#3}}
|
|
||||||
%and = and i16 %f, -4
|
|
||||||
ret i16 %and
|
|
||||||
}
|
|
||||||
|
|
||||||
define i32 @foo32(i32 %f) nounwind readnone optsize ssp {
|
|
||||||
entry:
|
|
||||||
; CHECK: .thumb_func _foo32
|
|
||||||
; CHECK: {{bic[^#]*#3}}
|
|
||||||
%and = and i32 %f, -4
|
|
||||||
ret i32 %and
|
|
||||||
}
|
|
Reference in New Issue
Block a user