[llvm-commits] [llvm] r112393 - in /llvm/trunk/lib/Target/ARM: ARMISelLowering.cpp ARMISelLowering.h ARMInstrThumb2.td
Jim Grosbach
grosbach at apple.com
Mon Aug 30 08:27:30 PDT 2010
Hi Bill,
I'm not sure I follow why this is needed. I'm probably just missing some context. Mind dropping by to enlighten me?
Thanks,
-Jim
On Aug 28, 2010, at 8:02 PM, Bill Wendling wrote:
> Author: void
> Date: Sat Aug 28 22:02:11 2010
> New Revision: 112393
>
> URL: http://llvm.org/viewvc/llvm-project?rev=112393&view=rev
> Log:
> Create an ARMISD::AND node. This node is exactly like the "ARM::AND" node, but
> it sets the CPSR register.
>
> Modified:
> llvm/trunk/lib/Target/ARM/ARMISelLowering.cpp
> llvm/trunk/lib/Target/ARM/ARMISelLowering.h
> llvm/trunk/lib/Target/ARM/ARMInstrThumb2.td
>
> Modified: llvm/trunk/lib/Target/ARM/ARMISelLowering.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMISelLowering.cpp?rev=112393&r1=112392&r2=112393&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/ARM/ARMISelLowering.cpp (original)
> +++ llvm/trunk/lib/Target/ARM/ARMISelLowering.cpp Sat Aug 28 22:02:11 2010
> @@ -609,6 +609,7 @@
> case ARMISD::BR2_JT: return "ARMISD::BR2_JT";
> case ARMISD::RET_FLAG: return "ARMISD::RET_FLAG";
> case ARMISD::PIC_ADD: return "ARMISD::PIC_ADD";
> + case ARMISD::AND: return "ARMISD::AND";
> case ARMISD::CMP: return "ARMISD::CMP";
> case ARMISD::CMPZ: return "ARMISD::CMPZ";
> case ARMISD::CMPFP: return "ARMISD::CMPFP";
>
> Modified: llvm/trunk/lib/Target/ARM/ARMISelLowering.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMISelLowering.h?rev=112393&r1=112392&r2=112393&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/ARM/ARMISelLowering.h (original)
> +++ llvm/trunk/lib/Target/ARM/ARMISelLowering.h Sat Aug 28 22:02:11 2010
> @@ -47,6 +47,8 @@
>
> PIC_ADD, // Add with a PC operand and a PIC label.
>
> + AND, // ARM "and" instruction that sets the 's' flag in CPSR.
> +
> CMP, // ARM compare instructions.
> CMPZ, // ARM compare that sets only Z flag.
> CMPFP, // ARM VFP compare instruction, sets FPSCR.
>
> Modified: llvm/trunk/lib/Target/ARM/ARMInstrThumb2.td
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMInstrThumb2.td?rev=112393&r1=112392&r2=112393&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/ARM/ARMInstrThumb2.td (original)
> +++ llvm/trunk/lib/Target/ARM/ARMInstrThumb2.td Sat Aug 28 22:02:11 2010
> @@ -1631,6 +1631,10 @@
> defm t2BIC : T2I_bin_w_irs<0b0001, "bic",
> BinOpFrag<(and node:$LHS, (not node:$RHS))>>;
>
> +let Defs = [CPSR] in
> +defm t2ANDflag : T2I_bin_w_irs<0b0000, "and",
> + BinOpFrag<(ARMand node:$LHS, node:$RHS)>, 1>;
> +
> let Constraints = "$src = $dst" in
> def t2BFC : T2I<(outs rGPR:$dst), (ins rGPR:$src, bf_inv_mask_imm:$imm),
> IIC_iUNAsi, "bfc", "\t$dst, $imm",
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list