From 816c06f7fa73e8150e260a11d897be2f52d4f2b8 Mon Sep 17 00:00:00 2001 From: Ulrich Weigand Date: Tue, 25 Jun 2013 13:17:10 +0000 Subject: [PATCH] [PowerPC] Add rldcr/rldic instructions This adds pattern for the rldcr and rldic instructions (the last instruction from the rotate/shift family that were missing). They are currently used only by the asm parser. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184833 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/PowerPC/PPCInstr64Bit.td | 8 ++++++++ test/MC/PowerPC/ppc64-encoding.s | 12 ++++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/lib/Target/PowerPC/PPCInstr64Bit.td b/lib/Target/PowerPC/PPCInstr64Bit.td index cab1a20b327..d612fd96992 100644 --- a/lib/Target/PowerPC/PPCInstr64Bit.td +++ b/lib/Target/PowerPC/PPCInstr64Bit.td @@ -538,6 +538,10 @@ defm RLDCL : MDSForm_1r<30, 8, (outs g8rc:$rA), (ins g8rc:$rS, gprc:$rB, u6imm:$MBE), "rldcl", "$rA, $rS, $rB, $MBE", IntRotateD, []>, isPPC64; +defm RLDCR : MDSForm_1r<30, 9, + (outs g8rc:$rA), (ins g8rc:$rS, gprc:$rB, u6imm:$MBE), + "rldcr", "$rA, $rS, $rB, $MBE", IntRotateD, + []>, isPPC64; defm RLDICL : MDForm_1r<30, 0, (outs g8rc:$rA), (ins g8rc:$rS, u6imm:$SH, u6imm:$MBE), "rldicl", "$rA, $rS, $SH, $MBE", IntRotateDI, @@ -546,6 +550,10 @@ defm RLDICR : MDForm_1r<30, 1, (outs g8rc:$rA), (ins g8rc:$rS, u6imm:$SH, u6imm:$MBE), "rldicr", "$rA, $rS, $SH, $MBE", IntRotateDI, []>, isPPC64; +defm RLDIC : MDForm_1r<30, 2, + (outs g8rc:$rA), (ins g8rc:$rS, u6imm:$SH, u6imm:$MBE), + "rldic", "$rA, $rS, $SH, $MBE", IntRotateDI, + []>, isPPC64; let Interpretation64Bit = 1 in { defm RLWINM8 : MForm_2r<21, (outs g8rc:$rA), diff --git a/test/MC/PowerPC/ppc64-encoding.s b/test/MC/PowerPC/ppc64-encoding.s index 377000f1d25..edf18eb96a0 100644 --- a/test/MC/PowerPC/ppc64-encoding.s +++ b/test/MC/PowerPC/ppc64-encoding.s @@ -444,14 +444,18 @@ rldicr 2, 3, 4, 5 # CHECK: rldicr. 2, 3, 4, 5 # encoding: [0x78,0x62,0x21,0x45] rldicr. 2, 3, 4, 5 -# FIXME: rldic 2, 3, 4, 5 -# FIXME: rldic. 2, 3, 4, 5 +# CHECK: rldic 2, 3, 4, 5 # encoding: [0x78,0x62,0x21,0x48] + rldic 2, 3, 4, 5 +# CHECK: rldic. 2, 3, 4, 5 # encoding: [0x78,0x62,0x21,0x49] + rldic. 2, 3, 4, 5 # CHECK: rldcl 2, 3, 4, 5 # encoding: [0x78,0x62,0x21,0x50] rldcl 2, 3, 4, 5 # CHECK: rldcl. 2, 3, 4, 5 # encoding: [0x78,0x62,0x21,0x51] rldcl. 2, 3, 4, 5 -# FIXME: rldcr 2, 3, 4, 5 -# FIXME: rldcr. 2, 3, 4, 5 +# CHECK: rldcr 2, 3, 4, 5 # encoding: [0x78,0x62,0x21,0x52] + rldcr 2, 3, 4, 5 +# CHECK: rldcr. 2, 3, 4, 5 # encoding: [0x78,0x62,0x21,0x53] + rldcr. 2, 3, 4, 5 # CHECK: rldimi 2, 3, 4, 5 # encoding: [0x78,0x62,0x21,0x4c] rldimi 2, 3, 4, 5 # CHECK: rldimi. 2, 3, 4, 5 # encoding: [0x78,0x62,0x21,0x4d] -- 2.11.0