llvm.org GIT mirror llvm / 3405201
Lane number should be printed w/o hash git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78469 91177308-0d34-0410-b5e6-96231b3b80d8 Anton Korobeynikov 11 years ago
2 changed file(s) with 11 addition(s) and 11 deletion(s). Raw diff Collapse all Expand all
16121612
16131613 def VGETLNs8 : NVGetLane<0b11100101, 0b1011, 0b00,
16141614 (outs GPR:$dst), (ins DPR:$src, i32imm:$lane),
1615 NoItinerary, "vmov", ".s8\t$dst, $src[$lane]",
1615 NoItinerary, "vmov", ".s8\t$dst, $src[${lane:no_hash}]",
16161616 [(set GPR:$dst, (NEONvgetlanes (v8i8 DPR:$src),
16171617 imm:$lane))]>;
16181618 def VGETLNs16 : NVGetLane<0b11100001, 0b1011, 0b01,
16191619 (outs GPR:$dst), (ins DPR:$src, i32imm:$lane),
1620 NoItinerary, "vmov", ".s16\t$dst, $src[$lane]",
1620 NoItinerary, "vmov", ".s16\t$dst, $src[${lane:no_hash}]",
16211621 [(set GPR:$dst, (NEONvgetlanes (v4i16 DPR:$src),
16221622 imm:$lane))]>;
16231623 def VGETLNu8 : NVGetLane<0b11101101, 0b1011, 0b00,
16241624 (outs GPR:$dst), (ins DPR:$src, i32imm:$lane),
1625 NoItinerary, "vmov", ".u8\t$dst, $src[$lane]",
1625 NoItinerary, "vmov", ".u8\t$dst, $src[${lane:no_hash}]",
16261626 [(set GPR:$dst, (NEONvgetlaneu (v8i8 DPR:$src),
16271627 imm:$lane))]>;
16281628 def VGETLNu16 : NVGetLane<0b11101001, 0b1011, 0b01,
16291629 (outs GPR:$dst), (ins DPR:$src, i32imm:$lane),
1630 NoItinerary, "vmov", ".u16\t$dst, $src[$lane]",
1630 NoItinerary, "vmov", ".u16\t$dst, $src[${lane:no_hash}]",
16311631 [(set GPR:$dst, (NEONvgetlaneu (v4i16 DPR:$src),
16321632 imm:$lane))]>;
16331633 def VGETLNi32 : NVGetLane<0b11100001, 0b1011, 0b00,
16341634 (outs GPR:$dst), (ins DPR:$src, i32imm:$lane),
1635 NoItinerary, "vmov", ".32\t$dst, $src[$lane]",
1635 NoItinerary, "vmov", ".32\t$dst, $src[${lane:no_hash}]",
16361636 [(set GPR:$dst, (extractelt (v2i32 DPR:$src),
16371637 imm:$lane))]>;
16381638 // def VGETLNf32: see FMRDH and FMRDL in ARMInstrVFP.td
16671667 let Constraints = "$src1 = $dst" in {
16681668 def VSETLNi8 : NVSetLane<0b11100100, 0b1011, 0b00, (outs DPR:$dst),
16691669 (ins DPR:$src1, GPR:$src2, i32imm:$lane),
1670 NoItinerary, "vmov", ".8\t$dst[$lane], $src2",
1670 NoItinerary, "vmov", ".8\t$dst[${lane:no_hash}], $src2",
16711671 [(set DPR:$dst, (vector_insert (v8i8 DPR:$src1),
16721672 GPR:$src2, imm:$lane))]>;
16731673 def VSETLNi16 : NVSetLane<0b11100000, 0b1011, 0b01, (outs DPR:$dst),
16741674 (ins DPR:$src1, GPR:$src2, i32imm:$lane),
1675 NoItinerary, "vmov", ".16\t$dst[$lane], $src2",
1675 NoItinerary, "vmov", ".16\t$dst[${lane:no_hash}], $src2",
16761676 [(set DPR:$dst, (vector_insert (v4i16 DPR:$src1),
16771677 GPR:$src2, imm:$lane))]>;
16781678 def VSETLNi32 : NVSetLane<0b11100000, 0b1011, 0b00, (outs DPR:$dst),
16791679 (ins DPR:$src1, GPR:$src2, i32imm:$lane),
1680 NoItinerary, "vmov", ".32\t$dst[$lane], $src2",
1680 NoItinerary, "vmov", ".32\t$dst[${lane:no_hash}], $src2",
16811681 [(set DPR:$dst, (insertelt (v2i32 DPR:$src1),
16821682 GPR:$src2, imm:$lane))]>;
16831683 }
17581758 class VDUPLND op19_18, bits<2> op17_16, string OpcodeStr, ValueType Ty>
17591759 : N2V<0b11, 0b11, op19_18, op17_16, 0b11000, 0, 0,
17601760 (outs DPR:$dst), (ins DPR:$src, i32imm:$lane), NoItinerary,
1761 !strconcat(OpcodeStr, "\t$dst, $src[$lane]"), "",
1761 !strconcat(OpcodeStr, "\t$dst, $src[${lane:no_hash}]"), "",
17621762 [(set DPR:$dst, (Ty (splat_lane:$lane DPR:$src, undef)))]>;
17631763
17641764 // vector_shuffle requires that the source and destination types match, so
17671767 ValueType ResTy, ValueType OpTy>
17681768 : N2V<0b11, 0b11, op19_18, op17_16, 0b11000, 1, 0,
17691769 (outs QPR:$dst), (ins DPR:$src, i32imm:$lane), NoItinerary,
1770 !strconcat(OpcodeStr, "\t$dst, $src[$lane]"), "",
1770 !strconcat(OpcodeStr, "\t$dst, $src[${lane:no_hash}]"), "",
17711771 [(set QPR:$dst, (ResTy (NEONvduplaneq (OpTy DPR:$src), imm:$lane)))]>;
17721772
17731773 def VDUPLN8d : VDUPLND<0b00, 0b01, "vdup.8", v8i8>;
358358 }
359359 case MachineOperand::MO_Immediate: {
360360 if (!Modifier || strcmp(Modifier, "no_hash") != 0)
361 O << "#";
361 O << '#';
362362
363363 O << MO.getImm();
364364 break;