[llvm-commits] [llvm] r104653 - /llvm/trunk/lib/Target/ARM/ARMCodeEmitter.cpp
Evan Cheng
evan.cheng at apple.com
Tue May 25 22:07:46 PDT 2010
Sorry I have been behind on patch reviews. I have some concerns about these patches. We want to prevent special casing for individual instructions. Is it not possible to add generic support for these?
Evan
On May 25, 2010, at 5:25 PM, Shih-wei Liao <sliao at google.com> wrote:
> Author: sliao
> Date: Tue May 25 19:25:05 2010
> New Revision: 104653
>
> URL: http://llvm.org/viewvc/llvm-project?rev=104653&view=rev
> Log:
> Adding the missing implementation of Bitfield's "clear" and "insert".
> Fixing http://llvm.org/bugs/show_bug.cgi?id=7222.
>
> Modified:
> llvm/trunk/lib/Target/ARM/ARMCodeEmitter.cpp
>
> Modified: llvm/trunk/lib/Target/ARM/ARMCodeEmitter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMCodeEmitter.cpp?rev=104653&r1=104652&r2=104653&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/ARM/ARMCodeEmitter.cpp (original)
> +++ llvm/trunk/lib/Target/ARM/ARMCodeEmitter.cpp Tue May 25 19:25:05 2010
> @@ -781,10 +781,6 @@
> unsigned ImplicitRn) {
> const TargetInstrDesc &TID = MI.getDesc();
>
> - if (TID.Opcode == ARM::BFC) {
> - report_fatal_error("ARMv6t2 JIT is not yet supported.");
> - }
> -
> // Part of binary is determined by TableGn.
> unsigned Binary = getBinaryCodeForInstr(MI);
>
> @@ -820,6 +816,15 @@
> Binary |= ((Hi16 >> 12) & 0xF) << 16;
> emitWordLE(Binary);
> return;
> + } else if((TID.Opcode == ARM::BFC) || (TID.Opcode == ARM::BFI)) {
> + uint32_t v = ~MI.getOperand(2).getImm();
> + int32_t lsb = CountTrailingZeros_32(v);
> + int32_t msb = (32 - CountLeadingZeros_32(v)) - 1;
> + // Insts[20-16] = msb, Insts[11-7] = lsb
> + Binary |= (msb & 0x1F) << 16;
> + Binary |= (lsb & 0x1F) << 7;
> + emitWordLE(Binary);
> + return;
> }
>
> // If this is a two-address operand, skip it. e.g. MOVCCr operand 1.
>
>
> _______________________________________________
> 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