diff --git a/lib/Target/PowerPC/PPCInstrInfo.td b/lib/Target/PowerPC/PPCInstrInfo.td index b30fd247952..e9b0061c3bc 100644 --- a/lib/Target/PowerPC/PPCInstrInfo.td +++ b/lib/Target/PowerPC/PPCInstrInfo.td @@ -3064,6 +3064,19 @@ def MFSRIN: XForm_srin<31, 659, (outs gprc:$RS), (ins gprc:$RB), def MTMSR: XForm_mtmsr<31, 146, (outs), (ins gprc:$RS, i32imm:$L), "mtmsr $RS, $L", IIC_SprMTMSR>; +def WRTEE: XForm_mtmsr<31, 131, (outs), (ins gprc:$RS), + "wrtee $RS", IIC_SprMTMSR>, Requires<[IsBookE]> { + let L = 0; +} + +def WRTEEI: I<31, (outs), (ins i1imm:$E), "wrteei $E", IIC_SprMTMSR>, + Requires<[IsBookE]> { + bits<1> E; + + let Inst{16} = E; + let Inst{21-30} = 163; +} + def MFMSR : XForm_rs<31, 83, (outs gprc:$RT), (ins), "mfmsr $RT", IIC_SprMFMSR, []>; diff --git a/test/MC/Disassembler/PowerPC/ppc64-encoding-bookIII.txt b/test/MC/Disassembler/PowerPC/ppc64-encoding-bookIII.txt index 32fb7befebc..844a0ac46cc 100644 --- a/test/MC/Disassembler/PowerPC/ppc64-encoding-bookIII.txt +++ b/test/MC/Disassembler/PowerPC/ppc64-encoding-bookIII.txt @@ -109,3 +109,10 @@ 0x4c 0x00 0x00 0x64 # CHECK: rfci 0x4c 0x00 0x00 0x66 + +# CHECK: wrtee 12 +0x7d 0x80 0x01 0x06 +# CHECK: wrteei 0 +0x7c 0x00 0x01 0x46 +# CHECK: wrteei 1 +0x7c 0x00 0x81 0x46 diff --git a/test/MC/PowerPC/ppc64-encoding-bookIII.s b/test/MC/PowerPC/ppc64-encoding-bookIII.s index 029b7be79b5..65a7350ea87 100644 --- a/test/MC/PowerPC/ppc64-encoding-bookIII.s +++ b/test/MC/PowerPC/ppc64-encoding-bookIII.s @@ -160,3 +160,15 @@ # CHECK-BE: rfci # encoding: [0x4c,0x00,0x00,0x66] # CHECK-LE: rfci # encoding: [0x66,0x00,0x00,0x4c] rfci + +# CHECK-BE: wrtee 12 # encoding: [0x7d,0x80,0x01,0x06] +# CHECK-LE: wrtee 12 # encoding: [0x06,0x01,0x80,0x7d] + wrtee %r12 + +# CHECK-BE: wrteei 0 # encoding: [0x7c,0x00,0x01,0x46] +# CHECK-LE: wrteei 0 # encoding: [0x46,0x01,0x00,0x7c] + wrteei 0 + +# CHECK-BE: wrteei 1 # encoding: [0x7c,0x00,0x81,0x46] +# CHECK-LE: wrteei 1 # encoding: [0x46,0x81,0x00,0x7c] + wrteei 1