Recommit: "[mips] Add rsqrt, recip for MIPS"
authorSimon Dardis <simon.dardis@imgtec.com>
Wed, 5 Oct 2016 16:11:01 +0000 (16:11 +0000)
committerSimon Dardis <simon.dardis@imgtec.com>
Wed, 5 Oct 2016 16:11:01 +0000 (16:11 +0000)
Add rsqrt.[ds], recip.[ds] for MIPS. Correct the microMIPS definitions for
architecture support and register usage.

Reviewers: vkalintiris, zoran.jovanoic

Differential Review: https://reviews.llvm.org/D24499

llvm-svn: 283334

58 files changed:
llvm/lib/Target/Mips/MicroMips32r6InstrInfo.td
llvm/lib/Target/Mips/MicroMipsInstrFPU.td
llvm/lib/Target/Mips/MipsInstrFPU.td
llvm/lib/Target/Mips/MipsInstrInfo.td
llvm/lib/Target/Mips/MipsSchedule.td
llvm/lib/Target/Mips/MipsScheduleGeneric.td
llvm/lib/Target/Mips/MipsScheduleP5600.td
llvm/test/MC/Disassembler/Mips/micromips32r3/valid-el.txt
llvm/test/MC/Disassembler/Mips/micromips32r3/valid.txt
llvm/test/MC/Disassembler/Mips/mips32r2/valid-mips32r2-el.txt
llvm/test/MC/Disassembler/Mips/mips32r2/valid-mips32r2.txt
llvm/test/MC/Disassembler/Mips/mips32r2/valid-xfail-mips32r2.txt
llvm/test/MC/Disassembler/Mips/mips32r3/valid-mips32r3-el.txt
llvm/test/MC/Disassembler/Mips/mips32r3/valid-mips32r3.txt
llvm/test/MC/Disassembler/Mips/mips32r3/valid-xfail-mips32r3.txt
llvm/test/MC/Disassembler/Mips/mips32r5/valid-mips32r5-el.txt
llvm/test/MC/Disassembler/Mips/mips32r5/valid-mips32r5.txt
llvm/test/MC/Disassembler/Mips/mips32r5/valid-xfail-mips32r5.txt
llvm/test/MC/Disassembler/Mips/mips32r6/valid-mips32r6-el.txt
llvm/test/MC/Disassembler/Mips/mips32r6/valid-mips32r6.txt
llvm/test/MC/Disassembler/Mips/mips4/valid-mips4-el.txt
llvm/test/MC/Disassembler/Mips/mips4/valid-mips4.txt
llvm/test/MC/Disassembler/Mips/mips4/valid-xfail-mips4.txt
llvm/test/MC/Disassembler/Mips/mips64/valid-mips64-el.txt
llvm/test/MC/Disassembler/Mips/mips64/valid-mips64-xfail.txt
llvm/test/MC/Disassembler/Mips/mips64/valid-mips64.txt
llvm/test/MC/Disassembler/Mips/mips64r2/valid-mips64r2-el.txt
llvm/test/MC/Disassembler/Mips/mips64r2/valid-mips64r2.txt
llvm/test/MC/Disassembler/Mips/mips64r2/valid-xfail-mips64r2.txt
llvm/test/MC/Disassembler/Mips/mips64r3/valid-mips64r3-el.txt
llvm/test/MC/Disassembler/Mips/mips64r3/valid-mips64r3.txt
llvm/test/MC/Disassembler/Mips/mips64r3/valid-xfail-mips64r3.txt
llvm/test/MC/Disassembler/Mips/mips64r5/valid-mips64r5-el.txt
llvm/test/MC/Disassembler/Mips/mips64r5/valid-mips64r5.txt
llvm/test/MC/Disassembler/Mips/mips64r5/valid-xfail-mips64r5.txt
llvm/test/MC/Disassembler/Mips/mips64r6/valid-mips64r6-el.txt
llvm/test/MC/Disassembler/Mips/mips64r6/valid-mips64r6.txt
llvm/test/MC/Mips/micromips/valid.s
llvm/test/MC/Mips/mips32r2/valid-xfail.s
llvm/test/MC/Mips/mips32r2/valid.s
llvm/test/MC/Mips/mips32r3/valid-xfail.s
llvm/test/MC/Mips/mips32r3/valid.s
llvm/test/MC/Mips/mips32r5/valid-xfail.s
llvm/test/MC/Mips/mips32r5/valid.s
llvm/test/MC/Mips/mips32r6/valid.s
llvm/test/MC/Mips/mips4/valid-xfail.s
llvm/test/MC/Mips/mips4/valid.s
llvm/test/MC/Mips/mips5/valid-xfail.s
llvm/test/MC/Mips/mips5/valid.s
llvm/test/MC/Mips/mips64/valid-xfail.s
llvm/test/MC/Mips/mips64/valid.s
llvm/test/MC/Mips/mips64r2/valid-xfail.s
llvm/test/MC/Mips/mips64r2/valid.s
llvm/test/MC/Mips/mips64r3/valid-xfail.s
llvm/test/MC/Mips/mips64r3/valid.s
llvm/test/MC/Mips/mips64r5/valid-xfail.s
llvm/test/MC/Mips/mips64r5/valid.s
llvm/test/MC/Mips/mips64r6/valid.s

index b8d8aa0ce20f3b4206cab0717f26631bb27e0787..d1c2079f06a20935c0f4cb8837c306af92f220db 100644 (file)
@@ -186,8 +186,6 @@ class TRUNC_W_S_MMR6_ENC : POOL32F_MATH_FM_MMR6<"trunc.w.s", 0, 0b10101100>;
 class TRUNC_W_D_MMR6_ENC : POOL32F_MATH_FM_MMR6<"trunc.w.d", 1, 0b10101100>;
 class SQRT_S_MMR6_ENC : POOL32F_MATH_FM_MMR6<"sqrt.s", 0, 0b00101000>;
 class SQRT_D_MMR6_ENC : POOL32F_MATH_FM_MMR6<"sqrt.d", 1, 0b00101000>;
-class RSQRT_S_MMR6_ENC : POOL32F_MATH_FM_MMR6<"rsqrt.s", 0, 0b00001000>;
-class RSQRT_D_MMR6_ENC : POOL32F_MATH_FM_MMR6<"rsqrt.d", 1, 0b00001000>;
 class SB_MMR6_ENC : SB32_SH32_STORE_FM_MMR6<0b000110>;
 class SBE_MMR6_ENC : POOL32C_STORE_EVA_FM_MMR6<0b100>;
 class SCE_MMR6_ENC : POOL32C_STORE_EVA_FM_MMR6<0b110>;
@@ -198,8 +196,6 @@ class LWE_MMR6_ENC : LOAD_WORD_EVA_FM_MMR6<0b111>;
 class LW_MMR6_ENC : LOAD_WORD_FM_MMR6;
 class LUI_MMR6_ENC : LOAD_UPPER_IMM_FM_MMR6;
 class JALRC_HB_MMR6_ENC : POOL32A_JALRC_FM_MMR6<"jalrc.hb", 0b0001111100>;
-class RECIP_S_MMR6_ENC : POOL32F_RECIP_ROUND_FM_MMR6<"recip.s", 0, 0b01001000>;
-class RECIP_D_MMR6_ENC : POOL32F_RECIP_ROUND_FM_MMR6<"recip.d", 1, 0b01001000>;
 class RINT_S_MMR6_ENC : POOL32F_RINT_FM_MMR6<"rint.s", 0>;
 class RINT_D_MMR6_ENC : POOL32F_RINT_FM_MMR6<"rint.d", 1>;
 class ROUND_L_S_MMR6_ENC : POOL32F_RECIP_ROUND_FM_MMR6<"round.l.s", 0,
@@ -1118,14 +1114,6 @@ class SQRT_S_MMR6_DESC : ABSS_FT_MMR6_DESC_BASE<"sqrt.s", FGR32Opnd, FGR32Opnd,
                                                  II_SQRT_S, fsqrt>;
 class SQRT_D_MMR6_DESC : ABSS_FT_MMR6_DESC_BASE<"sqrt.d", AFGR64Opnd, AFGR64Opnd,
                                                  II_SQRT_D, fsqrt>;
-class RSQRT_S_MMR6_DESC : ABSS_FT_MMR6_DESC_BASE<"rsqrt.s", FGR32Opnd,
-                                                  FGR32Opnd, II_TRUNC>;
-class RSQRT_D_MMR6_DESC : ABSS_FT_MMR6_DESC_BASE<"rsqrt.d", FGR32Opnd,
-                                                  AFGR64Opnd, II_TRUNC>;
-class RECIP_S_MMR6_DESC : ABSS_FT_MMR6_DESC_BASE<"recip.s", FGR32Opnd,
-                                                 FGR32Opnd, II_ROUND>;
-class RECIP_D_MMR6_DESC : ABSS_FT_MMR6_DESC_BASE<"recip.d", FGR32Opnd, FGR32Opnd,
-                                                 II_ROUND>;
 class ROUND_L_S_MMR6_DESC : ABSS_FT_MMR6_DESC_BASE<"round.l.s", FGR64Opnd,
                                                    FGR32Opnd, II_ROUND>;
 class ROUND_L_D_MMR6_DESC : ABSS_FT_MMR6_DESC_BASE<"round.l.d", FGR64Opnd,
@@ -1664,10 +1652,6 @@ def SQRT_S_MMR6 : StdMMR6Rel, SQRT_S_MMR6_ENC, SQRT_S_MMR6_DESC,
                   ISA_MICROMIPS32R6;
 def SQRT_D_MMR6 : StdMMR6Rel, SQRT_D_MMR6_ENC, SQRT_D_MMR6_DESC,
                   ISA_MICROMIPS32R6;
-def RSQRT_S_MMR6 : StdMMR6Rel, RSQRT_S_MMR6_ENC, RSQRT_S_MMR6_DESC,
-                   ISA_MICROMIPS32R6;
-def RSQRT_D_MMR6 : StdMMR6Rel, RSQRT_D_MMR6_ENC, RSQRT_D_MMR6_DESC,
-                   ISA_MICROMIPS32R6;
 def SB_MMR6 : StdMMR6Rel, SB_MMR6_DESC, SB_MMR6_ENC, ISA_MICROMIPS32R6;
 def SBE_MMR6 : StdMMR6Rel, SBE_MMR6_DESC, SBE_MMR6_ENC, ISA_MICROMIPS32R6;
 def SCE_MMR6 : StdMMR6Rel, SCE_MMR6_DESC, SCE_MMR6_ENC, ISA_MICROMIPS32R6;
@@ -1708,9 +1692,6 @@ def JALRC_HB_MMR6 : R6MMR6Rel, JALRC_HB_MMR6_ENC, JALRC_HB_MMR6_DESC,
 def EXT_MMR6 : StdMMR6Rel, EXT_MMR6_ENC, EXT_MMR6_DESC, ISA_MICROMIPS32R6;
 def INS_MMR6 : StdMMR6Rel, INS_MMR6_ENC, INS_MMR6_DESC, ISA_MICROMIPS32R6;
 def JALRC_MMR6 : R6MMR6Rel, JALRC_MMR6_ENC, JALRC_MMR6_DESC, ISA_MICROMIPS32R6;
-def RECIP_S_MMR6 : StdMMR6Rel, RECIP_S_MMR6_ENC, RECIP_S_MMR6_DESC,
-                   ISA_MICROMIPS32R6;
-def RECIP_D_MMR6 : StdMMR6Rel, RECIP_D_MMR6_ENC, RECIP_D_MMR6_DESC, ISA_MICROMIPS32R6;
 def RINT_S_MMR6 : StdMMR6Rel, RINT_S_MMR6_ENC, RINT_S_MMR6_DESC,
                   ISA_MICROMIPS32R6;
 def RINT_D_MMR6 : StdMMR6Rel, RINT_D_MMR6_ENC, RINT_D_MMR6_DESC, ISA_MICROMIPS32R6;
index ed92265e47f61212449021d207bf2132ff2df416..fc83761e409b5938e010fa30cbf40aabadab7087 100644 (file)
@@ -141,6 +141,16 @@ let AdditionalPredicates = [InMicroMips] in {
                   MFC1_FM_MM<0x40>;
     def CTC1_MM : MMRel, MTC1_FT<"ctc1", CCROpnd, GPR32Opnd, II_CTC1>,
                   MFC1_FM_MM<0x60>;
+    def RECIP_S_MM : MMRel, ABSS_FT<"recip.s", FGR32Opnd, FGR32Opnd,
+                                    II_RECIP_S>,
+                     ROUND_W_FM_MM<0b0, 0b01001000>;
+    def RECIP_D_MM : MMRel, ABSS_FT<"recip.d", AFGR64Opnd, AFGR64Opnd,
+                                 II_RECIP_D>, ROUND_W_FM_MM<0b1, 0b01001000>;
+    def RSQRT_S_MM : MMRel, ABSS_FT<"rsqrt.s", FGR32Opnd, FGR32Opnd,
+                                    II_RECIP_S>,
+                     ROUND_W_FM_MM<0b0, 0b00001000>;
+    def RSQRT_D_MM : MMRel, ABSS_FT<"rsqrt.d", AFGR64Opnd, AFGR64Opnd,
+                                 II_RECIP_D>, ROUND_W_FM_MM<0b1, 0b00001000>;
   }
   let DecoderNamespace = "MicroMips",  DecoderMethod = "DecodeFMemMMR2" in {
     def LDC1_MM : MMRel, LW_FT<"ldc1", AFGR64Opnd, mem_mm_16, II_LDC1, load>,
index 6bbbd51a63827a09b43b49693e08b7736b02f0e9..ab7aa9dcdcaec85d7d6c8a0fa0351028c48438d1 100644 (file)
@@ -284,6 +284,16 @@ defm CEIL_W  : ROUND_M<"ceil.w.d", II_CEIL>, ABSS_FM<0xe, 17>, ISA_MIPS2;
 defm FLOOR_W : ROUND_M<"floor.w.d", II_FLOOR>, ABSS_FM<0xf, 17>, ISA_MIPS2;
 defm CVT_W   : ROUND_M<"cvt.w.d", II_CVT>, ABSS_FM<0x24, 17>;
 
+let AdditionalPredicates = [NotInMicroMips] in {
+  def RECIP_S : MMRel, ABSS_FT<"recip.s", FGR32Opnd, FGR32Opnd, II_RECIP_S>,
+                ABSS_FM<0b010101, 0x10>, INSN_MIPS4_32R2;
+  def RECIP_D : MMRel, ABSS_FT<"recip.d", FGR64Opnd, FGR64Opnd, II_RECIP_D>,
+                ABSS_FM<0b010101, 0x11>, INSN_MIPS4_32R2;
+  def RSQRT_S : MMRel, ABSS_FT<"rsqrt.s", FGR32Opnd, FGR32Opnd, II_RSQRT_S>,
+                ABSS_FM<0b010110, 0x10>, INSN_MIPS4_32R2;
+  def RSQRT_D : MMRel, ABSS_FT<"rsqrt.d", FGR64Opnd, FGR64Opnd, II_RSQRT_D>,
+                ABSS_FM<0b010110, 0x11>, INSN_MIPS4_32R2;
+}
 let DecoderNamespace = "Mips64" in {
   let AdditionalPredicates = [NotInMicroMips] in {
   def ROUND_L_S : ABSS_FT<"round.l.s", FGR64Opnd, FGR32Opnd, II_ROUND>,
index 39b310746082db13ec154d6803a687cdb1e1e92d..51fe46953b2251e94516531dca75044c49089a4f 100644 (file)
@@ -300,6 +300,9 @@ class INSN_MIPS3_32_NOT_32R6_64R6 {
 // The portions of MIPS-III that were also added to MIPS32
 class INSN_MIPS3_32R2 { list<Predicate> InsnPredicates = [HasMips3_32r2]; }
 
+// The portions of MIPS-IV that were also added to MIPS32.
+class INSN_MIPS4_32 { list <Predicate> InsnPredicates = [HasMips4_32]; }
+
 // The portions of MIPS-IV that were also added to MIPS32 but were removed in
 // MIPS32r6 and MIPS64r6.
 class INSN_MIPS4_32_NOT_32R6_64R6 {
@@ -312,6 +315,11 @@ class INSN_MIPS4_32R2_NOT_32R6_64R6 {
   list<Predicate> InsnPredicates = [HasMips4_32r2, NotMips32r6, NotMips64r6];
 }
 
+// The portions of MIPS-IV that were also added to MIPS32r2.
+class INSN_MIPS4_32R2 {
+  list<Predicate> InsnPredicates = [HasMips4_32r2];
+}
+
 // The portions of MIPS-V that were also added to MIPS32r2 but were removed in
 // MIPS32r6 and MIPS64r6.
 class INSN_MIPS5_32R2_NOT_32R6_64R6 {
index 76bd818a4f17954505c732833dd6d2241ada7beb..c0de59ba15f556bbc53271eff203c27ecfb551c6 100644 (file)
@@ -270,11 +270,15 @@ def II_ORI              : InstrItinClass;
 def II_POP              : InstrItinClass;
 def II_RDHWR            : InstrItinClass;
 def II_RESTORE          : InstrItinClass;
+def II_RECIP_S          : InstrItinClass;
+def II_RECIP_D          : InstrItinClass;
 def II_RINT_S           : InstrItinClass;
 def II_RINT_D           : InstrItinClass;
 def II_ROTR             : InstrItinClass;
 def II_ROTRV            : InstrItinClass;
 def II_ROUND            : InstrItinClass;
+def II_RSQRT_S          : InstrItinClass;
+def II_RSQRT_D          : InstrItinClass;
 def II_SAVE             : InstrItinClass;
 def II_SC               : InstrItinClass;
 def II_SCD              : InstrItinClass;
@@ -607,6 +611,10 @@ def MipsGenericItineraries : ProcessorItineraries<[ALU, IMULDIV], [], [
   InstrItinData<II_NMSUB_D         , [InstrStage<8,  [ALU]>]>,
   InstrItinData<II_DIV_S           , [InstrStage<23, [ALU]>]>,
   InstrItinData<II_DIV_D           , [InstrStage<36, [ALU]>]>,
+  InstrItinData<II_RECIP_D         , [InstrStage<25, [ALU]>]>,
+  InstrItinData<II_RECIP_S         , [InstrStage<13, [ALU]>]>,
+  InstrItinData<II_RSQRT_D         , [InstrStage<29, [ALU]>]>,
+  InstrItinData<II_RSQRT_S         , [InstrStage<14, [ALU]>]>,
   InstrItinData<II_RINT_D          , [InstrStage<1,  [ALU]>]>,
   InstrItinData<II_RINT_S          , [InstrStage<1,  [ALU]>]>,
   InstrItinData<II_SQRT_S          , [InstrStage<54, [ALU]>]>,
index 9712addff1a4faa98e56d1da8e65c8fc69255483..15a0401b781e510dd60d267f6e8d3f7ebc620a84 100644 (file)
@@ -440,6 +440,10 @@ def : ItinRW<[GenericWriteFPUDivD], [II_DIV_D]>;
 def : ItinRW<[GenericWriteFPUSqrtS], [II_SQRT_S]>;
 def : ItinRW<[GenericWriteFPUSqrtD], [II_SQRT_D]>;
 
+// rsqrt.[ds], recip.[ds]
+def : ItinRW<[GenericWriteFPURcpS], [II_RECIP_S, II_RSQRT_S]>;
+def : ItinRW<[GenericWriteFPURcpD], [II_RECIP_D, II_RSQRT_D]>;
+
 // MIPSR6
 // ======
 //
index 976e9f56affb60c4bf24d5891c9c3e1233d8ab4d..882a241d1426a806e5a5c70a6ecefe4fd9af61ed 100644 (file)
@@ -448,6 +448,9 @@ def : ItinRW<[P5600WriteFPUSqrtD], [II_SQRT_D]>;
 def : InstRW<[P5600WriteFPURsqrtD], (instregex "^FRCP_(W|D)$")>;
 def : InstRW<[P5600WriteFPURsqrtD], (instregex "^FRSQRT_(W|D)$")>;
 
+def : ItinRW<[P5600WriteFPURsqrtD], [II_RECIP_D, II_RSQRT_D]>;
+def : ItinRW<[P5600WriteFPURsqrtS], [II_RECIP_S, II_RSQRT_S]>;
+
 // fmadd.[wd], fmsubb.[wd], fdiv.[wd], fsqrt.[wd], fmul.[wd], fadd.[wd],
 // fsub.[wd]
 def : InstRW<[P5600WriteFPUL_MADDSUB], (instregex "^FMADD_(W|D)$")>;
index cc391934c5a365a97a45322fe778da02fb20d571..84f498754cd1dee291a1c32396edb3adb253fb39 100644 (file)
 0xea 0xb8 0x40 0x00 # CHECK: sdc1 $f7, 64($10)
 0x46 0xb8 0x04 0x00 # CHECK: sdc1 $f2, 4($6)
 0x46 0x98 0x04 0x00 # CHECK: swc1 $f2, 4($6)
+0x46,0x56,0x3b,0x52 # CHECK: recip.d $f18, $f6
+0x7e,0x54,0x3b,0x12 # CHECK: recip.s $f3, $f30
+0x5c,0x54,0x3b,0x42 # CHECK: rsqrt.d $f2, $f28
+0x88,0x54,0x3b,0x02 # CHECK: rsqrt.s $f4, $f8
index 894ac6e048f2f51f0891b2e17ba4c14d05cf55a8..3be26bb5b6610bf1d1899df0870c8bdc6d62936f 100644 (file)
 0x00 0x64 0xcd 0x3c # CHECK: cfc2 $3, $4
 0x54 0xa6 0x18 0x3b # CHECK: ctc1 $5, $6
 0x00 0xe8 0xdd 0x3c # CHECK: ctc2 $7, $8
+0x56 0x46 0x52 0x3b # CHECK: recip.d $f18, $f6
+0x54 0x7e 0x12 0x3b # CHECK: recip.s $f3, $f30
+0x54 0x5c 0x42 0x3b # CHECK: rsqrt.d $f2, $f28
+0x54 0x88 0x02 0x3b # CHECK: rsqrt.s $f4, $f8
index 82a883557e87e1bf23c94a4e5f6f2d6b922b6356..5a374ac43cb6ded79b62825080bf5da6916f4420 100644 (file)
 0x67 0x45 0xc9 0x34 # CHECK: ori $9, $6, 17767
 0xc2 0x49 0x26 0x00 # CHECK: rotr $9, $6, 7
 0x46 0x48 0xe6 0x00 # CHECK: rotrv $9, $6, $7
+0x95 0x34 0x20 0x46 # CHECK: recip.d $f18, $f6
+0xd5 0xf0 0x00 0x46 # CHECK: recip.s $f3, $f30
 0x0c 0x73 0x20 0x46 # CHECK: round.w.d $f12, $f14
 0x8c 0x39 0x00 0x46 # CHECK: round.w.s $f6, $f7
+0x96 0xe0 0x20 0x46 # CHECK: rsqrt.d $f2, $f28
+0x16 0x41 0x00 0x46 # CHECK: rsqrt.s $f4, $f8
 0xc6 0x23 0xa4 0xa0 # CHECK: sb $4, 9158($5)
 0x06 0x00 0xa4 0xa0 # CHECK: sb $4, 6($5)
 0xc6 0x23 0xe9 0xe0 # CHECK: sc $9, 9158($7)
index 7ee4f4bf7fa81d1c82fb612bdc36552ded0565fd..9935929a1cc2fb5cf281450f65a733e38526c218 100644 (file)
 0x46 0x80 0x5e 0xa1 # CHECK: cvt.d.w $f26, $f11
 0x46 0x80 0x73 0x21 # CHECK: cvt.d.w $f12, $f14
 0x46 0x80 0x7d 0xa0 # CHECK: cvt.s.w $f22, $f15
+0x46 0x20 0x34 0x95 # CHECK: recip.d $f18, $f6
+0x46 0x00 0xf0 0xd5 # CHECK: recip.s $f3, $f30
+0x46 0x20 0xe0 0x96 # CHECK: rsqrt.d $f2, $f28
+0x46 0x00 0x41 0x16 # CHECK: rsqrt.s $f4, $f8
 0x4c 0x52 0xf2 0xa9 # CHECK: msub.d $f10, $f2, $f30, $f18
 0x4c 0xa6 0x00 0x05 # CHECK: luxc1 $f0, $6($5)
 0x4c 0xac 0xc8 0x30 # CHECK: nmadd.s $f0, $f5, $f25, $f12
index da8130c9f4c43d06e6d82d87e23ade2314d42936..bc7ae8dd839147a38e081f1efa6edde5ed42b23a 100644 (file)
 0x46 0xda 0xf2 0x2e # CHECK: pul.ps $f8, $f30, $f26
 0x46 0xc2 0x46 0x2f # CHECK: puu.ps $f24, $f8, $f2
 0x41 0x49 0x98 0x00 # CHECK: rdpgpr s3, t1
-0x46 0x20 0x34 0x95 # CHECK: recip.d $f18, $f6
-0x46 0x00 0xf0 0xd5 # CHECK: recip.s $f3, $f30
 0x02 0xa7 0x68 0x46 # CHECK: rorv t5, a3, s5
 0x46 0x20 0x03 0x08 # CHECK: round.l.d $f12, $f0
 0x46 0x00 0x2e 0x08 # CHECK: round.l.s $f24, $f5
-0x46 0x20 0xe0 0x96 # CHECK: rsqrt.d $f2, $f28
-0x46 0x00 0x41 0x16 # CHECK: rsqrt.s $f4, $f8
 0x46 0xda 0x71 0x01 # CHECK: sub.ps $f4, $f14, $f26
 0x46 0x20 0xb5 0x89 # CHECK: trunc.l.d $f22, $f22
 0x46 0x00 0xff 0x09 # CHECK: trunc.l.s $f28, $f31
index 37c14de4cb6a8c93a2215041deb6d2524185eda9..96c7805e21656e70f625069eca2ba071ea0b5a53 100644 (file)
 0x78 0x98 0x04 0x4f # CHECK: nmsub.s $f1, $f24, $f19, $f4
 0x25 0x18 0x65 0x00 # CHECK: or $3, $3, $5
 0x67 0x45 0xc9 0x34 # CHECK: ori $9, $6, 17767
+0x95 0x34 0x20 0x46 # CHECK: recip.d $f18, $f6
+0xd5 0xf0 0x00 0x46 # CHECK: recip.s $f3, $f30
 0xc2 0x49 0x26 0x00 # CHECK: rotr $9, $6, 7
 0x46 0x48 0xe6 0x00 # CHECK: rotrv $9, $6, $7
 0x0c 0x73 0x20 0x46 # CHECK: round.w.d $f12, $f14
 0x8c 0x39 0x00 0x46 # CHECK: round.w.s $f6, $f7
+0x96 0xe0 0x20 0x46 # CHECK: rsqrt.d $f2, $f28
+0x16 0x41 0x00 0x46 # CHECK: rsqrt.s $f4, $f8
 0xc6 0x23 0xa4 0xa0 # CHECK: sb $4, 9158($5)
 0x06 0x00 0xa4 0xa0 # CHECK: sb $4, 6($5)
 0xc6 0x23 0xe9 0xe0 # CHECK: sc $9, 9158($7)
index 8e5c16b4a33707a942d1c9cdb1f0b32b1b4edac2..9be0189e6bfb0690a9e56c8cc8639ee5b38eb2f1 100644 (file)
 0x46 0x80 0x5e 0xa1 # CHECK: cvt.d.w $f26, $f11
 0x46 0x80 0x73 0x21 # CHECK: cvt.d.w $f12, $f14
 0x46 0x80 0x7d 0xa0 # CHECK: cvt.s.w $f22, $f15
+0x46 0x20 0x34 0x95 # CHECK: recip.d $f18, $f6
+0x46 0x00 0xf0 0xd5 # CHECK: recip.s $f3, $f30
+0x46 0x20 0xe0 0x96 # CHECK: rsqrt.d $f2, $f28
+0x46 0x00 0x41 0x16 # CHECK: rsqrt.s $f4, $f8
 0x4c 0x52 0xf2 0xa9 # CHECK: msub.d $f10, $f2, $f30, $f18
 0x4c 0xa6 0x00 0x05 # CHECK: luxc1 $f0, $6($5)
 0x4c 0xac 0xc8 0x30 # CHECK: nmadd.s $f0, $f5, $f25, $f12
index 7623bba364fcf3c7d425a95e5636da47039c1d74..5d317edd4658926ef459a35df7bba4b22a572105 100644 (file)
 0x46 0xda 0xf2 0x2e # CHECK: pul.ps $f8, $f30, $f26
 0x46 0xc2 0x46 0x2f # CHECK: puu.ps $f24, $f8, $f2
 0x41 0x49 0x98 0x00 # CHECK: rdpgpr s3, t1
-0x46 0x20 0x34 0x95 # CHECK: recip.d $f18, $f6
-0x46 0x00 0xf0 0xd5 # CHECK: recip.s $f3, $f30
 0x02 0xa7 0x68 0x46 # CHECK: rorv t5, a3, s5
 0x46 0x20 0x03 0x08 # CHECK: round.l.d $f12, $f0
 0x46 0x00 0x2e 0x08 # CHECK: round.l.s $f24, $f5
-0x46 0x20 0xe0 0x96 # CHECK: rsqrt.d $f2, $f28
-0x46 0x00 0x41 0x16 # CHECK: rsqrt.s $f4, $f8
 0x46 0xda 0x71 0x01 # CHECK: sub.ps $f4, $f14, $f26
 0x46 0x20 0xb5 0x89 # CHECK: trunc.l.d $f22, $f22
 0x46 0x00 0xff 0x09 # CHECK: trunc.l.s $f28, $f31
index b68089b0a078133eb328f94983c5c71fc8c5406d..072e17b6151b8f8889b911549d30542759cc5bca 100644 (file)
 0x67 0x45 0xc9 0x34 # CHECK: ori $9, $6, 17767
 0xc2 0x49 0x26 0x00 # CHECK: rotr $9, $6, 7
 0x46 0x48 0xe6 0x00 # CHECK: rotrv $9, $6, $7
+0x95 0x34 0x20 0x46 # CHECK: recip.d $f18, $f6
+0xd5 0xf0 0x00 0x46 # CHECK: recip.s $f3, $f30
 0x0c 0x73 0x20 0x46 # CHECK: round.w.d $f12, $f14
 0x8c 0x39 0x00 0x46 # CHECK: round.w.s $f6, $f7
+0x96 0xe0 0x20 0x46 # CHECK: rsqrt.d $f2, $f28
+0x16 0x41 0x00 0x46 # CHECK: rsqrt.s $f4, $f8
 0xc6 0x23 0xa4 0xa0 # CHECK: sb $4, 9158($5)
 0x06 0x00 0xa4 0xa0 # CHECK: sb $4, 6($5)
 0xc6 0x23 0xe9 0xe0 # CHECK: sc $9, 9158($7)
index afe1b695dea57bbfd9b7cc6f6a4777abc35472ad..ecb64ccdea2653d019910e7f8f53736695cb5b6c 100644 (file)
 0x46 0x80 0x5e 0xa1 # CHECK: cvt.d.w $f26, $f11
 0x46 0x80 0x73 0x21 # CHECK: cvt.d.w $f12, $f14
 0x46 0x80 0x7d 0xa0 # CHECK: cvt.s.w $f22, $f15
+0x46 0x20 0x34 0x95 # CHECK: recip.d $f18, $f6
+0x46 0x00 0xf0 0xd5 # CHECK: recip.s $f3, $f30
+0x46 0x20 0xe0 0x96 # CHECK: rsqrt.d $f2, $f28
+0x46 0x00 0x41 0x16 # CHECK: rsqrt.s $f4, $f8
 0x4c 0x52 0xf2 0xa9 # CHECK: msub.d $f10, $f2, $f30, $f18
 0x4c 0xa6 0x00 0x05 # CHECK: luxc1 $f0, $6($5)
 0x4c 0xac 0xc8 0x30 # CHECK: nmadd.s $f0, $f5, $f25, $f12
index 27f5498ea661500fcd2f548a5f6f1d08e4d65264..ed9bc08d72d40f8832a4f876fcc80302c5190813 100644 (file)
 0x46 0xda 0xf2 0x2e # CHECK: pul.ps $f8, $f30, $f26
 0x46 0xc2 0x46 0x2f # CHECK: puu.ps $f24, $f8, $f2
 0x41 0x49 0x98 0x00 # CHECK: rdpgpr s3, t1
-0x46 0x20 0x34 0x95 # CHECK: recip.d $f18, $f6
-0x46 0x00 0xf0 0xd5 # CHECK: recip.s $f3, $f30
 0x02 0xa7 0x68 0x46 # CHECK: rorv t5, a3, s5
 0x46 0x20 0x03 0x08 # CHECK: round.l.d $f12, $f0
 0x46 0x00 0x2e 0x08 # CHECK: round.l.s $f24, $f5
-0x46 0x20 0xe0 0x96 # CHECK: rsqrt.d $f2, $f28
-0x46 0x00 0x41 0x16 # CHECK: rsqrt.s $f4, $f8
 0x46 0xda 0x71 0x01 # CHECK: sub.ps $f4, $f14, $f26
 0x46 0x20 0xb5 0x89 # CHECK: trunc.l.d $f22, $f22
 0x46 0x00 0xff 0x09 # CHECK: trunc.l.s $f28, $f31
index 34bfd769f2d3b287fe83655016169a46a62d2c9b..271ff904f172bafc551e22b9f7daf7ba9b5c62c5 100644 (file)
 0x14 0x10 0x24 0x46 # CHECK: seleqz.d $f0, $f2, $f4
 0x17 0x10 0x04 0x46 # CHECK: selnez.s $f0, $f2, $f4
 0x17 0x10 0x24 0x46 # CHECK: selnez.d $f0, $f2, $f4
+0x95 0x34 0x20 0x46 # CHECK: recip.d $f18, $f6
+0xd5 0xf0 0x00 0x46 # CHECK: recip.s $f3, $f30
 0x9a 0x20 0x00 0x46 # CHECK: rint.s $f2, $f4
 0x9a 0x20 0x20 0x46 # CHECK: rint.d $f2, $f4
+0x96 0xe0 0x20 0x46 # CHECK: rsqrt.d $f2, $f28
+0x16 0x41 0x00 0x46 # CHECK: rsqrt.s $f4, $f8
 0x9b 0x20 0x00 0x46 # CHECK: class.s $f2, $f4
 0x9b 0x20 0x20 0x46 # CHECK: class.d $f2, $f4
 0x09 0x04 0x80 0x00 # CHECK: jr.hb $4
index 7266848706d34a724081e818ccf2b4e88efac42b..b796f48d566f6dbd40019ab7113cc103c7e41304 100644 (file)
 0x46 0xa4 0x18 0x8d # CHECK: cmp.sult.d $f2, $f3, $f4
 0x46 0xa4 0x18 0x8e # CHECK: cmp.sle.d $f2, $f3, $f4
 0x46 0xa4 0x18 0x8f # CHECK: cmp.sule.d $f2, $f3, $f4
+0x46 0x20 0x34 0x95 # CHECK: recip.d $f18, $f6
+0x46 0x00 0xf0 0xd5 # CHECK: recip.s $f3, $f30
+0x46 0x20 0xe0 0x96 # CHECK: rsqrt.d $f2, $f28
+0x46 0x00 0x41 0x16 # CHECK: rsqrt.s $f4, $f8
 0x42 0x00 0x00 0x58 # CHECK: eretnc
 # FIXME: The encode/decode functions are not inverses of each other.
 #        The immediate should be 8 but the disassembler currently emits 12
index 4a3d78cde55341b4f5c8551ca284e825ad44e7b3..64c350e45a8773067205c53481db52c83fc98785 100644 (file)
 0x27 0x38 0x07 0x00 # CHECK: nor $7, $zero, $7
 0x25 0x60 0x1d 0x02 # CHECK: or $12, $16, $sp
 0x04 0x00 0x42 0x34 # CHECK: ori $2, $2, 4
-0x08 0x00 0xa1 0xcc # CHECK: pref 1, 8($5) 
+0x08 0x00 0xa1 0xcc # CHECK: pref 1, 8($5)
+0x95 0x34 0x20 0x46 # CHECK: recip.d $f18, $f6
+0xd5 0xf0 0x00 0x46 # CHECK: recip.s $f3, $f30
 0x08 0x0b 0x20 0x46 # CHECK: round.l.d $f12, $f1
 0x48 0x2e 0x00 0x46 # CHECK: round.l.s $f25, $f5
 0x8c 0x21 0x20 0x46 # CHECK: round.w.d $f6, $f4
 0xcc 0xe6 0x00 0x46 # CHECK: round.w.s $f27, $f28
+0x96 0xe0 0x20 0x46 # CHECK: rsqrt.d $f2, $f28
+0x16 0x41 0x00 0x46 # CHECK: rsqrt.s $f4, $f8
 0x6f 0xb2 0xd6 0xa1 # CHECK: sb $22, -19857($14)
 0xd8 0x49 0x6f 0xe2 # CHECK: sc $15, 18904($19)
 0xcd 0xdf 0xaf 0xf3 # CHECK: scd $15, -8243($sp)
index f225d2cc220d35d815933a392f051ee4dc5bdd54..2635b6bca7db91753266947785c4a87cc5ecd0a1 100644 (file)
 0xf5 0xbe 0x77 0x6e # CHECK: sdc1 $f30, 30574($13)
 0xfa 0x54 0x5a 0x75 # CHECK: sdc2 $20, 23157($18)
 0xfd 0x4c 0x16 0xcb # CHECK: sd $12, 5835($10)
+0x46 0x20 0x34 0xd5 # CHECK: recip.d $f19, $f6
+0x46 0x00 0xf0 0xd5 # CHECK: recip.s $f3, $f30
+0x46 0x20 0xe0 0xd6 # CHECK: rsqrt.d $f3, $f28
+0x46 0x00 0x41 0x16 # CHECK: rsqrt.s $f4, $f8
index 3375bcf31404797259a52f3b0bae1a2fe33c5dce..1b669389e7b4f46d70005fba2c6a3f00d27c0671 100644 (file)
@@ -36,7 +36,3 @@
 0x4c 0xac 0xc8 0x30 # CHECK: nmadd.s $f0, $f5, $f25, $f12
 0x4d 0x1e 0x87 0xb9 # CHECK: nmsub.d $f30, $f8, $f16, $f30
 0x4f 0x04 0x98 0x78 # CHECK: nmsub.s $f1, $f24, $f19, $f4
-0x46 0x20 0x34 0xd5 # CHECK: recip.d $f19, $f6
-0x46 0x00 0xf0 0xd5 # CHECK: recip.s $f3, $f30
-0x46 0x20 0xe0 0xd6 # CHECK: rsqrt.d $f3, $f28
-0x46 0x00 0x41 0x16 # CHECK: rsqrt.s $f4, $f8
index 1cd7b0bcebab5115e207553fe02928c13962503a..eb531aad8829c3127d478bee0c07d8b0062c2eb1 100644 (file)
 0x10 0x00 0xa4 0xa8 # CHECK: swl $4, 16($5)
 0x10 0x00 0xe6 0xb8 # CHECK: swr $6, 16($7)
 0xcf 0x01 0x00 0x00 # CHECK: sync 7
+0x95 0x34 0x20 0x46 # CHECK: recip.d $f18, $f6
+0xd5 0xf0 0x00 0x46 # CHECK: recip.s $f3, $f30
+0x96 0xe0 0x20 0x46 # CHECK: rsqrt.d $f2, $f28
+0x16 0x41 0x00 0x46 # CHECK: rsqrt.s $f4, $f8
 0xc9 0xbd 0x20 0x46 # CHECK: trunc.l.d $f23, $f23
 0x09 0xff 0x00 0x46 # CHECK: trunc.l.s $f28, $f31
 0x0d 0x73 0x20 0x46 # CHECK: trunc.w.d $f12, $f14
index dd97bcd5a1f866c610fe0f96d9d1686efd040d8f..bb6807a25daab65e40fc2381d1379d1b7ed16a8a 100644 (file)
@@ -73,8 +73,4 @@
 0x46 0xdd 0xd0 0x6d # CHECK: plu.ps $f1, $f26, $f29
 0x46 0xda 0xf2 0x6e # CHECK: pul.ps $f9, $f30, $f26
 0x46 0xc2 0x4e 0x2f # CHECK: puu.ps $f24, $f9, $f2
-0x46 0x20 0x34 0xd5 # CHECK: recip.d $f19, $f6
-0x46 0x00 0xf0 0xd5 # CHECK: recip.s $f3, $f30
-0x46 0x20 0xe0 0xd6 # CHECK: rsqrt.d $f3, $f28
-0x46 0x00 0x41 0x16 # CHECK: rsqrt.s $f4, $f8
 0x46 0xda 0x71 0x41 # CHECK: sub.ps $f5, $f14, $f26
index 5b5427db1e105ed8009a16250f4407955ad05f9d..8a6bf0ce61324b8a78e65d320a55beacd0a1949a 100644 (file)
 0x46 0x80 0x5e 0xa1 # CHECK: cvt.d.w $f26, $f11
 0x46 0x80 0x73 0x21 # CHECK: cvt.d.w $f12, $f14
 0x46 0x80 0x7d 0xa0 # CHECK: cvt.s.w $f22, $f15
+0x46 0x20 0x34 0xd5 # CHECK: recip.d $f19, $f6
+0x46 0x00 0xf0 0xd5 # CHECK: recip.s $f3, $f30
+0x46 0x20 0xe0 0xd6 # CHECK: rsqrt.d $f3, $f28
+0x46 0x00 0x41 0x16 # CHECK: rsqrt.s $f4, $f8
 0x48 0x20 0x50 0x00 # CHECK: dmfc2 $zero, $10, 0           
 0x48 0xa4 0x50 0x00 # CHECK: dmtc2 $4, $10, 0              
 0x4d 0x0c 0xe0 0x21 # CHECK: madd.d $f0, $f8, $f28, $f12    
index 3f2b7615eb319e258c5eac6231f465ab2c5d2555..cc74ce95ae395e246cd00be2fd2668ab1266c64f 100644 (file)
 0x78 0x98 0x04 0x4f # CHECK: nmsub.s $f1, $f24, $f19, $f4
 0x25 0x18 0x65 0x00 # CHECK: or $3, $3, $5
 0x67 0x45 0xc9 0x34 # CHECK: ori $9, $6, 17767
+0x95 0x34 0x20 0x46 # CHECK: recip.d $f18, $f6
+0xd5 0xf0 0x00 0x46 # CHECK: recip.s $f3, $f30
 0xc2 0x49 0x26 0x00 # CHECK: rotr $9, $6, 7
 0x46 0x48 0xe6 0x00 # CHECK: rotrv $9, $6, $7
 0x08 0x0b 0x20 0x46 # CHECK: round.l.d $f12, $f1
 0x48 0x2e 0x00 0x46 # CHECK: round.l.s $f25, $f5
 0x0c 0x73 0x20 0x46 # CHECK: round.w.d $f12, $f14
 0x8c 0x39 0x00 0x46 # CHECK: round.w.s $f6, $f7
+0x96 0xe0 0x20 0x46 # CHECK: rsqrt.d $f2, $f28
+0x16 0x41 0x00 0x46 # CHECK: rsqrt.s $f4, $f8
 0xc6 0x23 0xa4 0xa0 # CHECK: sb $4, 9158($5)
 0x06 0x00 0xa4 0xa0 # CHECK: sb $4, 6($5)
 0xc6 0x23 0xe9 0xe0 # CHECK: sc $9, 9158($7)
index 5de751234c814f750e61cb634b5016f9e55f6432..ab857a55c7bbb9d672509ec6af34b5f6027a0e44 100644 (file)
 0x5d 0x40 0xfc 0x59 # CHECK: bgtzl $10, -3736
 0x46 0xa0 0x81 0x21 # CHECK: cvt.d.l $f4, $f16
 0x46 0xa0 0xf3 0xe0 # CHECK: cvt.s.l $f15, $f30
+0x46 0x20 0x34 0x95 # CHECK: recip.d $f18, $f6
+0x46 0x00 0xf0 0xd5 # CHECK: recip.s $f3, $f30
+0x46 0x20 0xe0 0x96 # CHECK: rsqrt.d $f2, $f28
+0x46 0x00 0x41 0x16 # CHECK: rsqrt.s $f4, $f8
 0x4c 0xa6 0x00 0x05 # CHECK: luxc1 $f0, $6($5)
 0x4c 0xac 0xc8 0x30 # CHECK: nmadd.s $f0, $f5, $f25, $f12
 0x4c 0xb8 0x20 0x0d # CHECK: suxc1 $f4, $24($5)
index cbc2eee3fe19d8e9e5c3d541f641c6897911f402..145dcacb1f592ccd52155cda01a7af7ae47506ca 100644 (file)
 0x46 0xda 0xf2 0x2e # CHECK: pul.ps $f8, $f30, $f26
 0x46 0xc2 0x46 0x2f # CHECK: puu.ps $f24, $f8, $f2
 0x41 0x49 0x98 0x00 # CHECK: rdpgpr s3, t1
-0x46 0x20 0x34 0x95 # CHECK: recip.d $f18, $f6
-0x46 0x00 0xf0 0xd5 # CHECK: recip.s $f3, $f30
 0x02 0xa7 0x68 0x46 # CHECK: rorv t5, a3, s5
-0x46 0x20 0xe0 0x96 # CHECK: rsqrt.d $f2, $f28
-0x46 0x00 0x41 0x16 # CHECK: rsqrt.s $f4, $f8
 0x46 0xda 0x71 0x01 # CHECK: sub.ps $f4, $f14, $f26
 0x41 0xcd 0x00 0x00 # CHECK: wrpgpr zero, t5
index 7d59ef6d3e03b69c2913e352be71cefb27f6bb77..31618400d93f36dfc1ac1b2513d6a5dea36f31f4 100644 (file)
 0x78 0x98 0x04 0x4f # CHECK: nmsub.s $f1, $f24, $f19, $f4
 0x25 0x18 0x65 0x00 # CHECK: or $3, $3, $5
 0x67 0x45 0xc9 0x34 # CHECK: ori $9, $6, 17767
+0x95 0x34 0x20 0x46 # CHECK: recip.d $f18, $f6
+0xd5 0xf0 0x00 0x46 # CHECK: recip.s $f3, $f30
 0xc2 0x49 0x26 0x00 # CHECK: rotr $9, $6, 7
 0x46 0x48 0xe6 0x00 # CHECK: rotrv $9, $6, $7
 0x08 0x0b 0x20 0x46 # CHECK: round.l.d $f12, $f1
 0x48 0x2e 0x00 0x46 # CHECK: round.l.s $f25, $f5
 0x0c 0x73 0x20 0x46 # CHECK: round.w.d $f12, $f14
 0x8c 0x39 0x00 0x46 # CHECK: round.w.s $f6, $f7
+0x96 0xe0 0x20 0x46 # CHECK: rsqrt.d $f2, $f28
+0x16 0x41 0x00 0x46 # CHECK: rsqrt.s $f4, $f8
 0xc6 0x23 0xa4 0xa0 # CHECK: sb $4, 9158($5)
 0x06 0x00 0xa4 0xa0 # CHECK: sb $4, 6($5)
 0xc6 0x23 0xe9 0xe0 # CHECK: sc $9, 9158($7)
index 01c02ad822241561022ec98755c8e26a157e42ad..7dd8d64f5c094a78d86a114e80ab261d19b8534d 100644 (file)
 0x46 0x80 0x5e 0xa1 # CHECK: cvt.d.w $f26, $f11
 0x46 0x80 0x73 0x21 # CHECK: cvt.d.w $f12, $f14
 0x46 0x80 0x7d 0xa0 # CHECK: cvt.s.w $f22, $f15
-0x48 0x20 0x50 0x00 # CHECK: dmfc2 $zero, $10, 0           
-0x48 0xa4 0x50 0x00 # CHECK: dmtc2 $4, $10, 0              
+0x46 0x20 0x34 0x95 # CHECK: recip.d $f18, $f6
+0x46 0x00 0xf0 0xd5 # CHECK: recip.s $f3, $f30
+0x46 0x20 0xe0 0x96 # CHECK: rsqrt.d $f2, $f28
+0x46 0x00 0x41 0x16 # CHECK: rsqrt.s $f4, $f8
+0x48 0x20 0x50 0x00 # CHECK: dmfc2 $zero, $10, 0
+0x48 0xa4 0x50 0x00 # CHECK: dmtc2 $4, $10, 0
 0x4d 0x0c 0xe0 0x21 # CHECK: madd.d $f0, $f8, $f28, $f12    
 0x4d 0xbb 0x0d 0xe0 # CHECK: madd.s $f23, $f13, $f1, $f27   
 0x51 0xd3 0x0c 0x40 # CHECK: beql $14, $19, 12548
index 8c58eb1c9e3bea7d310402d06e8ea12228f4ef71..74ae59669f5cd3caa582f88b529467b8eafa3c84 100644 (file)
 0x46 0xda 0xf2 0x2e # CHECK: pul.ps $f8, $f30, $f26
 0x46 0xc2 0x46 0x2f # CHECK: puu.ps $f24, $f8, $f2
 0x41 0x49 0x98 0x00 # CHECK: rdpgpr s3, t1
-0x46 0x20 0x34 0x95 # CHECK: recip.d $f18, $f6
-0x46 0x00 0xf0 0xd5 # CHECK: recip.s $f3, $f30
 0x02 0xa7 0x68 0x46 # CHECK: rorv t5, a3, s5
-0x46 0x20 0xe0 0x96 # CHECK: rsqrt.d $f2, $f28
-0x46 0x00 0x41 0x16 # CHECK: rsqrt.s $f4, $f8
 0x46 0xda 0x71 0x01 # CHECK: sub.ps $f4, $f14, $f26
 0x41 0xcd 0x00 0x00 # CHECK: wrpgpr zero, t5
index ee6ad1c719457d5a60ea3020da3ed06963cedb38..5cc0aa6b71613b71e30bb97ec85f114b0ec9b4c7 100644 (file)
 0x78 0x98 0x04 0x4f # CHECK: nmsub.s $f1, $f24, $f19, $f4
 0x25 0x18 0x65 0x00 # CHECK: or $3, $3, $5
 0x67 0x45 0xc9 0x34 # CHECK: ori $9, $6, 17767
+0x95 0x34 0x20 0x46 # CHECK: recip.d $f18, $f6
+0xd5 0xf0 0x00 0x46 # CHECK: recip.s $f3, $f30
 0xc2 0x49 0x26 0x00 # CHECK: rotr $9, $6, 7
 0x46 0x48 0xe6 0x00 # CHECK: rotrv $9, $6, $7
 0x08 0x0b 0x20 0x46 # CHECK: round.l.d $f12, $f1
 0x48 0x2e 0x00 0x46 # CHECK: round.l.s $f25, $f5
 0x0c 0x73 0x20 0x46 # CHECK: round.w.d $f12, $f14
 0x8c 0x39 0x00 0x46 # CHECK: round.w.s $f6, $f7
+0x96 0xe0 0x20 0x46 # CHECK: rsqrt.d $f2, $f28
+0x16 0x41 0x00 0x46 # CHECK: rsqrt.s $f4, $f8
 0xc6 0x23 0xa4 0xa0 # CHECK: sb $4, 9158($5)
 0x06 0x00 0xa4 0xa0 # CHECK: sb $4, 6($5)
 0xc6 0x23 0xe9 0xe0 # CHECK: sc $9, 9158($7)
index 12e5294d36da05f1769a06340b3e8fb8665862f6..f2467e8e480869ece2de75ff883a1db4c3197013 100644 (file)
 0x46 0x80 0x5e 0xa1 # CHECK: cvt.d.w $f26, $f11
 0x46 0x80 0x73 0x21 # CHECK: cvt.d.w $f12, $f14
 0x46 0x80 0x7d 0xa0 # CHECK: cvt.s.w $f22, $f15
+0x46 0x20 0x34 0x95 # CHECK: recip.d $f18, $f6
+0x46 0x00 0xf0 0xd5 # CHECK: recip.s $f3, $f30
+0x46 0x20 0xe0 0x96 # CHECK: rsqrt.d $f2, $f28
+0x46 0x00 0x41 0x16 # CHECK: rsqrt.s $f4, $f8
 0x48 0x20 0x50 0x00 # CHECK: dmfc2 $zero, $10, 0           
 0x48 0xa4 0x50 0x00 # CHECK: dmtc2 $4, $10, 0              
 0x4d 0x0c 0xe0 0x21 # CHECK: madd.d $f0, $f8, $f28, $f12    
index b8a98bdf73e74f0a02064998d56063de7c533c1d..2d02fca4b7c7dbdfafaf7938d335826b8406d57d 100644 (file)
 0x46 0xda 0xf2 0x2e # CHECK: pul.ps $f8, $f30, $f26
 0x46 0xc2 0x46 0x2f # CHECK: puu.ps $f24, $f8, $f2
 0x41 0x49 0x98 0x00 # CHECK: rdpgpr s3, t1
-0x46 0x20 0x34 0x95 # CHECK: recip.d $f18, $f6
-0x46 0x00 0xf0 0xd5 # CHECK: recip.s $f3, $f30
 0x02 0xa7 0x68 0x46 # CHECK: rorv t5, a3, s5
-0x46 0x20 0xe0 0x96 # CHECK: rsqrt.d $f2, $f28
-0x46 0x00 0x41 0x16 # CHECK: rsqrt.s $f4, $f8
 0x46 0xda 0x71 0x01 # CHECK: sub.ps $f4, $f14, $f26
 0x41 0xcd 0x00 0x00 # CHECK: wrpgpr zero, t5
index cda529624836a38ccffe210c7fc35466413fa5e8..15821640ff39ace26847301335a1b8de11af7b5c 100644 (file)
 0x99 0x10 0x64 0x00 # CHECK: mulu $2, $3, $4
 0x04 0x00 0x42 0x34 # CHECK: ori $2, $2, 4
 0x35 0x04 0xa1 0x7c # CHECK: pref 1, 8($5)
+0x95 0x34 0x20 0x46 # CHECK: recip.d $f18, $f6
+0xd5 0xf0 0x00 0x46 # CHECK: recip.s $f3, $f30
 0x9a 0x20 0x20 0x46 # CHECK: rint.d $f2, $f4
 0x9a 0x20 0x00 0x46 # CHECK: rint.s $f2, $f4
+0x96 0xe0 0x20 0x46 # CHECK: rsqrt.d $f2, $f28
+0x16 0x41 0x00 0x46 # CHECK: rsqrt.s $f4, $f8
 0x26 0xec 0x6f 0x7e # CHECK: sc $15, -40($19)
 0xa7 0xe6 0xaf 0x7f # CHECK: scd $15, -51($sp)
 0x0e 0x00 0x00 0x00 # CHECK: sdbbp
index 7be3fa71b1e4eb5c38ecc7e1056438a7a583b86f..066c3d4a27391b500da95a37ebe33c856929464a 100644 (file)
 0x46 0xa4 0x18 0x8d # CHECK: cmp.sult.d $f2, $f3, $f4
 0x46 0xa4 0x18 0x8e # CHECK: cmp.sle.d $f2, $f3, $f4
 0x46 0xa4 0x18 0x8f # CHECK: cmp.sule.d $f2, $f3, $f4
+0x46 0x20 0x34 0x95 # CHECK: recip.d $f18, $f6
+0x46 0x00 0xf0 0xd5 # CHECK: recip.s $f3, $f30
+0x46 0x20 0xe0 0x96 # CHECK: rsqrt.d $f2, $f28
+0x46 0x00 0x41 0x16 # CHECK: rsqrt.s $f4, $f8
 0x42 0x00 0x00 0x58 # CHECK: eretnc
 # FIXME: The encode/decode functions are not inverses of each other.
 #        The immediate should be 8 but the disassembler currently emits 12
index c6e83c122aedb0a9c0524de1f04d63f93d3b268b..2178faee6ce76560d260bffe248042f2cde79478 100644 (file)
@@ -203,3 +203,7 @@ cfc1 $1, $2                 # CHECK: cfc1 $1, $2            # encoding: [0x54,0x
 cfc2 $3, $4                 # CHECK: cfc2 $3, $4            # encoding: [0x00,0x64,0xcd,0x3c]
 ctc1 $5, $6                 # CHECK: ctc1 $5, $6            # encoding: [0x54,0xa6,0x18,0x3b]
 ctc2 $7, $8                 # CHECK: ctc2 $7, $8            # encoding: [0x00,0xe8,0xdd,0x3c]
+recip.s $f2, $f4            # CHECK: recip.s $f2, $f4       # encoding: [0x54,0x44,0x12,0x3b]
+recip.d $f2, $f4            # CHECK: recip.d $f2, $f4       # encoding: [0x54,0x44,0x52,0x3b]
+rsqrt.s $f3, $f5            # CHECK: rsqrt.s $f3, $f5       # encoding: [0x54,0x65,0x02,0x3b]
+rsqrt.d $f2, $f4            # CHECK: rsqrt.d $f2, $f4       # encoding: [0x54,0x44,0x42,0x3b]
index 5a61eb6cbfb714444082f96cf51fbbed4a328c19..6fab97f7a62a4864e75f78b8a99a09a8d11c1739 100644 (file)
         pul.ps          $f9,$f30,$f26
         puu.ps          $f24,$f9,$f2
         rdpgpr          $s3,$9
-        recip.d         $f19,$f6
-        recip.s         $f3,$f30
         rorv            $13,$a3,$s5
         round.l.d       $f12,$f1
         round.l.s       $f25,$f5
-        rsqrt.d         $f3,$f28
-        rsqrt.s         $f4,$f8
         sbe             $s7,33($s1)
         sce             $sp,189($10)
         she             $24,105($v0)
index 6a5c6a0a51323ba6a06723e52cc1203f1b98ff2c..0ffddb0cdfea759b2e80709894bed770b4e45751 100644 (file)
@@ -167,11 +167,15 @@ a:
                                        # CHECK-NEXT: .set  mips32r2
                                        # CHECK-NEXT: rdhwr $sp, $11
                                        # CHECK-NEXT: .set  pop          # encoding: [0x7c,0x1d,0x58,0x3b]
+        recip.d   $f19,$f6             # CHECK: recip.d $f19, $f6       # encoding: [0x46,0x20,0x34,0xd5]
+        recip.s   $f3,$f30             # CHECK: recip.s $f3, $f30       # encoding: [0x46,0x00,0xf0,0xd5]
         rotr      $1,15                # CHECK: rotr $1, $1, 15         # encoding: [0x00,0x21,0x0b,0xc2]
         rotr      $1,$14,15            # CHECK: rotr $1, $14, 15        # encoding: [0x00,0x2e,0x0b,0xc2]
         rotrv     $1,$14,$15           # CHECK: rotrv $1, $14, $15      # encoding: [0x01,0xee,0x08,0x46]
         round.w.d $f6,$f4
         round.w.s $f27,$f28
+        rsqrt.s   $f0,$f4              # CHECK: rsqrt.s $f0, $f4       # encoding: [0x46,0x00,0x20,0x16]
+        rsqrt.d   $f2,$f6              # CHECK: rsqrt.d $f2, $f6       # encoding: [0x46,0x20,0x30,0x96]
         s.s       $f2, 8($3)           # CHECK: swc1  $f2, 8($3)       # encoding: [0xe4,0x62,0x00,0x08]
         s.d       $f2, 8($3)           # CHECK: sdc1  $f2, 8($3)       # encoding: [0xf4,0x62,0x00,0x08]
         sb        $s6,-19857($14)
index defa388c4df2af7bb63f81f3aa9835ae35082c9d..a442beb6198a473f55db543f66d01e9d64ff54a5 100644 (file)
         pul.ps          $f9,$f30,$f26
         puu.ps          $f24,$f9,$f2
         rdpgpr          $s3,$9
-        recip.d         $f19,$f6
-        recip.s         $f3,$f30
         rorv            $13,$a3,$s5
         round.l.d       $f12,$f1
         round.l.s       $f25,$f5
-        rsqrt.d         $f3,$f28
-        rsqrt.s         $f4,$f8
         sbe             $s7,33($s1)
         sce             $sp,189($10)
         she             $24,105($v0)
index 1505ccb224433ddb28fa59c887f62f3be6836237..a05df83ac2d374146c6f0e8e45f3e462d436e79d 100644 (file)
@@ -167,11 +167,15 @@ a:
                                        # CHECK-NEXT: .set  mips32r2
                                        # CHECK-NEXT: rdhwr $sp, $11
                                        # CHECK-NEXT: .set  pop          # encoding: [0x7c,0x1d,0x58,0x3b]
+        recip.d   $f19,$f6             # CHECK: recip.d $f19, $f6       # encoding: [0x46,0x20,0x34,0xd5]
+        recip.s   $f3,$f30             # CHECK: recip.s $f3, $f30       # encoding: [0x46,0x00,0xf0,0xd5]
         rotr      $1,15                # CHECK: rotr $1, $1, 15         # encoding: [0x00,0x21,0x0b,0xc2]
         rotr      $1,$14,15            # CHECK: rotr $1, $14, 15        # encoding: [0x00,0x2e,0x0b,0xc2]
         rotrv     $1,$14,$15           # CHECK: rotrv $1, $14, $15      # encoding: [0x01,0xee,0x08,0x46]
         round.w.d $f6,$f4
         round.w.s $f27,$f28
+        rsqrt.s   $f0,$f4              # CHECK: rsqrt.s $f0, $f4       # encoding: [0x46,0x00,0x20,0x16]
+        rsqrt.d   $f2,$f6              # CHECK: rsqrt.d $f2, $f6       # encoding: [0x46,0x20,0x30,0x96]
         s.s       $f2, 8($3)           # CHECK: swc1  $f2, 8($3)       # encoding: [0xe4,0x62,0x00,0x08]
         s.d       $f2, 8($3)           # CHECK: sdc1  $f2, 8($3)       # encoding: [0xf4,0x62,0x00,0x08]
         sb        $s6,-19857($14)
index c1bf7a4b3a296100554fb1e8b9a39dc93526a9c2..33ea7c46358f5c10bbac8d210783b8b10e819adb 100644 (file)
         pul.ps          $f9,$f30,$f26
         puu.ps          $f24,$f9,$f2
         rdpgpr          $s3,$9
-        recip.d         $f19,$f6
-        recip.s         $f3,$f30
         rorv            $13,$a3,$s5
         round.l.d       $f12,$f1
         round.l.s       $f25,$f5
-        rsqrt.d         $f3,$f28
-        rsqrt.s         $f4,$f8
         sbe             $s7,33($s1)
         sce             $sp,189($10)
         she             $24,105($v0)
index b3dd775c53846fe14c98e27786363d236b45b601..3100dd401d7bae0f3f9e181479eb4f38bfa7d2a4 100644 (file)
@@ -168,11 +168,15 @@ a:
                                        # CHECK-NEXT: .set  mips32r2
                                        # CHECK-NEXT: rdhwr $sp, $11
                                        # CHECK-NEXT: .set  pop          # encoding: [0x7c,0x1d,0x58,0x3b]
+        recip.d   $f19,$f6             # CHECK: recip.d $f19, $f6       # encoding: [0x46,0x20,0x34,0xd5]
+        recip.s   $f3,$f30             # CHECK: recip.s $f3, $f30       # encoding: [0x46,0x00,0xf0,0xd5]
         rotr      $1,15                # CHECK: rotr $1, $1, 15         # encoding: [0x00,0x21,0x0b,0xc2]
         rotr      $1,$14,15            # CHECK: rotr $1, $14, 15        # encoding: [0x00,0x2e,0x0b,0xc2]
         rotrv     $1,$14,$15           # CHECK: rotrv $1, $14, $15      # encoding: [0x01,0xee,0x08,0x46]
         round.w.d $f6,$f4
         round.w.s $f27,$f28
+        rsqrt.s   $f0,$f4              # CHECK: rsqrt.s $f0, $f4       # encoding: [0x46,0x00,0x20,0x16]
+        rsqrt.d   $f2,$f6              # CHECK: rsqrt.d $f2, $f6       # encoding: [0x46,0x20,0x30,0x96]
         s.s       $f2, 8($3)           # CHECK: swc1  $f2, 8($3)       # encoding: [0xe4,0x62,0x00,0x08]
         s.d       $f2, 8($3)           # CHECK: sdc1  $f2, 8($3)       # encoding: [0xf4,0x62,0x00,0x08]
         sb        $s6,-19857($14)
index cd90fcd279bbcc674df2ac1d9426ea461e903e5f..bb4c7c577f1e16fdbb12e64ca9559259b6204870 100644 (file)
@@ -139,6 +139,8 @@ a:
                                  # CHECK-NEXT: .set  mips32r2
                                  # CHECK-NEXT: rdhwr $sp, $11
                                  # CHECK-NEXT: .set  pop      # encoding: [0x7c,0x1d,0x58,0x3b]
+        recip.d $f19,$f6         # CHECK: recip.d $f19, $f6   # encoding: [0x46,0x20,0x34,0xd5]
+        recip.s $f3,$f30         # CHECK: recip.s $f3, $f30   # encoding: [0x46,0x00,0xf0,0xd5]
         s.s    $f2, 8($3)        # CHECK: swc1 $f2, 8($3)     # encoding: [0xe4,0x62,0x00,0x08]
         s.d    $f2, 8($3)        # CHECK: sdc1 $f2, 8($3)     # encoding: [0xf4,0x62,0x00,0x08]
         sel.d   $f0,$f1,$f2      # CHECK: sel.d $f0, $f1, $f2 # encoding: [0x46,0x22,0x08,0x10]
@@ -185,6 +187,8 @@ a:
         sc      $15,-40($s3)     # CHECK: sc $15, -40($19)       # encoding: [0x7e,0x6f,0xec,0x26]
         clo     $11,$a1          # CHECK: clo $11, $5            # encoding: [0x00,0xa0,0x58,0x51]
         clz     $sp,$gp          # CHECK: clz $sp, $gp           # encoding: [0x03,0x80,0xe8,0x50]
+        rsqrt.s $f0,$f4          # CHECK: rsqrt.s $f0, $f4       # encoding: [0x46,0x00,0x20,0x16]
+        rsqrt.d $f2,$f6          # CHECK: rsqrt.d $f2, $f6       # encoding: [0x46,0x20,0x30,0x96]
         sgt     $4, $5           # CHECK: slt $4, $5, $4         # encoding: [0x00,0xa4,0x20,0x2a]
         sgt     $4, $5, $6       # CHECK: slt $4, $6, $5         # encoding: [0x00,0xc5,0x20,0x2a]
         sgtu    $4, $5           # CHECK: sltu $4, $5, $4        # encoding: [0x00,0xa4,0x20,0x2b]
index 9c647d15115384fff7a7eaa12631e2c506cb3a9e..21129bb9dbc49c4e28f8e62f545e11a96ede6166 100644 (file)
@@ -35,7 +35,3 @@
         c.ult.s         $fcc7,$f24,$f10
         c.un.d          $fcc6,$f23,$f24
         c.un.s          $fcc1,$f30,$f4
-        recip.d         $f19,$f6
-        recip.s         $f3,$f30
-        rsqrt.d         $f3,$f28
-        rsqrt.s         $f4,$f8
index 18b02234a71faa1ffa5f488003e07fe76af32f24..e9a7ae90dd5dc05a660cabb1773eea566b1e3754 100644 (file)
@@ -196,10 +196,14 @@ a:
         or        $12,$s0,$sp
         or        $2, 4                # CHECK: ori $2, $2, 4          # encoding: [0x34,0x42,0x00,0x04]
         pref      1, 8($5)             # CHECK: pref 1, 8($5)          # encoding: [0xcc,0xa1,0x00,0x08]
+        recip.d   $f19,$f6             # CHECK: recip.d $f19, $f6      # encoding: [0x46,0x20,0x34,0xd5]
+        recip.s   $f3,$f30             # CHECK: recip.s $f3, $f30      # encoding: [0x46,0x00,0xf0,0xd5]
         round.l.d $f12,$f1
         round.l.s $f25,$f5
         round.w.d $f6,$f4
         round.w.s $f27,$f28
+        rsqrt.s   $f0,$f4              # CHECK: rsqrt.s $f0, $f4       # encoding: [0x46,0x00,0x20,0x16]
+        rsqrt.d   $f2,$f6              # CHECK: rsqrt.d $f2, $f6       # encoding: [0x46,0x20,0x30,0x96]
         s.s       $f2, 8($3)           # CHECK: swc1  $f2, 8($3)       # encoding: [0xe4,0x62,0x00,0x08]
         s.d       $f2, 8($3)           # CHECK: sdc1  $f2, 8($3)       # encoding: [0xf4,0x62,0x00,0x08]
         sb        $s6,-19857($14)
index d76118950fc1f6466d8955d9336f1b51f1f6f4b1..8517315780e0a9a75519bd1e47afe9aa4847c54b 100644 (file)
@@ -72,8 +72,4 @@
         plu.ps          $f1,$f26,$f29
         pul.ps          $f9,$f30,$f26
         puu.ps          $f24,$f9,$f2
-        recip.d         $f19,$f6
-        recip.s         $f3,$f30
-        rsqrt.d         $f3,$f28
-        rsqrt.s         $f4,$f8
         sub.ps          $f5,$f14,$f26
index 0661a4d4f80cc92687c6f3b4e03e9a1b4d6cccda..62b1b48c767f19834f91a98807a816224837b81c 100644 (file)
@@ -197,10 +197,14 @@ a:
         or        $12,$s0,$sp
         or        $2, 4                # CHECK: ori $2, $2, 4          # encoding: [0x34,0x42,0x00,0x04]
         pref      1, 8($5)             # CHECK: pref 1, 8($5)          # encoding: [0xcc,0xa1,0x00,0x08]
+        recip.d   $f19,$f6             # CHECK: recip.d $f19, $f6      # encoding: [0x46,0x20,0x34,0xd5]
+        recip.s   $f3,$f30             # CHECK: recip.s $f3, $f30      # encoding: [0x46,0x00,0xf0,0xd5]
         round.l.d $f12,$f1
         round.l.s $f25,$f5
         round.w.d $f6,$f4
         round.w.s $f27,$f28
+        rsqrt.s   $f0,$f4              # CHECK: rsqrt.s $f0, $f4       # encoding: [0x46,0x00,0x20,0x16]
+        rsqrt.d   $f2,$f6              # CHECK: rsqrt.d $f2, $f6       # encoding: [0x46,0x20,0x30,0x96]
         s.s       $f2, 8($3)           # CHECK: swc1  $f2, 8($3)       # encoding: [0xe4,0x62,0x00,0x08]
         s.d       $f2, 8($3)           # CHECK: sdc1  $f2, 8($3)       # encoding: [0xf4,0x62,0x00,0x08]
         sb        $s6,-19857($14)
index 7d1eb9264e26e02af76ef8a743f591ee38dcc054..c7513bf5d7e18cacd7d995f15dc072c93398fe61 100644 (file)
@@ -79,8 +79,4 @@
         plu.ps          $f1,$f26,$f29
         pul.ps          $f9,$f30,$f26
         puu.ps          $f24,$f9,$f2
-        recip.d         $f19,$f6
-        recip.s         $f3,$f30
-        rsqrt.d         $f3,$f28
-        rsqrt.s         $f4,$f8
         sub.ps          $f5,$f14,$f26
index dbcddda55563f04b207be30c08e019a78d8b79e8..6235b89e182493170a40f56b5b0b0f1ec7cbe6e2 100644 (file)
@@ -213,10 +213,14 @@ a:
         or        $12,$s0,$sp
         or        $2, 4                # CHECK: ori $2, $2, 4          # encoding: [0x34,0x42,0x00,0x04]
         pref      1, 8($5)             # CHECK: pref 1, 8($5)          # encoding: [0xcc,0xa1,0x00,0x08]
+        recip.d   $f19,$f6             # CHECK: recip.d $f19, $f6      # encoding: [0x46,0x20,0x34,0xd5]
+        recip.s   $f3,$f30             # CHECK: recip.s $f3, $f30      # encoding: [0x46,0x00,0xf0,0xd5]
         round.l.d $f12,$f1
         round.l.s $f25,$f5
         round.w.d $f6,$f4
         round.w.s $f27,$f28
+        rsqrt.s   $f0,$f4              # CHECK: rsqrt.s $f0, $f4       # encoding: [0x46,0x00,0x20,0x16]
+        rsqrt.d   $f2,$f6              # CHECK: rsqrt.d $f2, $f6       # encoding: [0x46,0x20,0x30,0x96]
         s.s       $f2, 8($3)           # CHECK: swc1  $f2, 8($3)       # encoding: [0xe4,0x62,0x00,0x08]
         s.d       $f2, 8($3)           # CHECK: sdc1  $f2, 8($3)       # encoding: [0xf4,0x62,0x00,0x08]
         sb        $s6,-19857($14)
index bf17b35c446c4d0c55a93a522f1abaa64d6ba48d..d55d1fb9a196184ad7f1f7d9f291de78472f53f5 100644 (file)
         pul.ps          $f9,$f30,$f26
         puu.ps          $f24,$f9,$f2
         rdpgpr          $s3,$9
-        recip.d         $f19,$f6
-        recip.s         $f3,$f30
         rorv            $13,$a3,$s5
-        rsqrt.d         $f3,$f28
-        rsqrt.s         $f4,$f8
         sbe             $s7,33($s1)
         sce             $sp,189($10)
         she             $24,105($v0)
index f5a7ca5a894e6b641fef9bca57266ed63cfc082a..43f6b73b68e8b0be05e999e92ae7613e74fc39d0 100644 (file)
@@ -234,6 +234,8 @@ a:
                                        # CHECK-NEXT: .set  mips32r2
                                        # CHECK-NEXT: rdhwr $sp, $11
                                        # CHECK-NEXT: .set  pop          # encoding: [0x7c,0x1d,0x58,0x3b]
+        recip.d   $f19,$f6             # CHECK: recip.d $f19, $f6       # encoding: [0x46,0x20,0x34,0xd5]
+        recip.s   $f3,$f30             # CHECK: recip.s $f3, $f30       # encoding: [0x46,0x00,0xf0,0xd5]
         rotr      $1,15                # CHECK: rotr $1, $1, 15         # encoding: [0x00,0x21,0x0b,0xc2]
         rotr      $1,$14,15            # CHECK: rotr $1, $14, 15        # encoding: [0x00,0x2e,0x0b,0xc2]
         rotrv     $1,$14,$15           # CHECK: rotrv $1, $14, $15      # encoding: [0x01,0xee,0x08,0x46]
@@ -241,6 +243,8 @@ a:
         round.l.s $f25,$f5
         round.w.d $f6,$f4
         round.w.s $f27,$f28
+        rsqrt.s   $f0,$f4              # CHECK: rsqrt.s $f0, $f4       # encoding: [0x46,0x00,0x20,0x16]
+        rsqrt.d   $f2,$f6              # CHECK: rsqrt.d $f2, $f6       # encoding: [0x46,0x20,0x30,0x96]
         s.s       $f2, 8($3)           # CHECK: swc1  $f2, 8($3)       # encoding: [0xe4,0x62,0x00,0x08]
         s.d       $f2, 8($3)           # CHECK: sdc1  $f2, 8($3)       # encoding: [0xf4,0x62,0x00,0x08]
         sb        $s6,-19857($14)
index 7e94200dfd62d92fac9a23fd7368525f617c7a44..2f38e73e442b16453770c991fb91c67997c1fbb4 100644 (file)
         pul.ps          $f9,$f30,$f26
         puu.ps          $f24,$f9,$f2
         rdpgpr          $s3,$9
-        recip.d         $f19,$f6
-        recip.s         $f3,$f30
         rorv            $13,$a3,$s5
-        rsqrt.d         $f3,$f28
-        rsqrt.s         $f4,$f8
         sbe             $s7,33($s1)
         sce             $sp,189($10)
         she             $24,105($v0)
index 0101b3a7fe27d67cf7b0114380f3fa83bbae9537..e8a65abd9762124ac0192290291501a2cc269936 100644 (file)
@@ -234,6 +234,8 @@ a:
                                        # CHECK-NEXT: .set  mips32r2
                                        # CHECK-NEXT: rdhwr $sp, $11
                                        # CHECK-NEXT: .set  pop          # encoding: [0x7c,0x1d,0x58,0x3b]
+        recip.d   $f19,$f6             # CHECK: recip.d $f19, $f6       # encoding: [0x46,0x20,0x34,0xd5]
+        recip.s   $f3,$f30             # CHECK: recip.s $f3, $f30       # encoding: [0x46,0x00,0xf0,0xd5]
         rotr      $1,15                # CHECK: rotr $1, $1, 15         # encoding: [0x00,0x21,0x0b,0xc2]
         rotr      $1,$14,15            # CHECK: rotr $1, $14, 15        # encoding: [0x00,0x2e,0x0b,0xc2]
         rotrv     $1,$14,$15           # CHECK: rotrv $1, $14, $15      # encoding: [0x01,0xee,0x08,0x46]
@@ -241,6 +243,8 @@ a:
         round.l.s $f25,$f5
         round.w.d $f6,$f4
         round.w.s $f27,$f28
+        rsqrt.s   $f0,$f4              # CHECK: rsqrt.s $f0, $f4       # encoding: [0x46,0x00,0x20,0x16]
+        rsqrt.d   $f2,$f6              # CHECK: rsqrt.d $f2, $f6       # encoding: [0x46,0x20,0x30,0x96]
         s.s       $f2, 8($3)           # CHECK: swc1  $f2, 8($3)       # encoding: [0xe4,0x62,0x00,0x08]
         s.d       $f2, 8($3)           # CHECK: sdc1  $f2, 8($3)       # encoding: [0xf4,0x62,0x00,0x08]
         sb        $s6,-19857($14)
index b5ecdcbfb7266ab38fc26561827b06bd9f11251d..44ff4ee9fc0b02bd697aff2aa4c0b22e2ec52184 100644 (file)
         pul.ps          $f9,$f30,$f26
         puu.ps          $f24,$f9,$f2
         rdpgpr          $s3,$9
-        recip.d         $f19,$f6
-        recip.s         $f3,$f30
         rorv            $13,$a3,$s5
-        rsqrt.d         $f3,$f28
-        rsqrt.s         $f4,$f8
         sbe             $s7,33($s1)
         sce             $sp,189($10)
         she             $24,105($v0)
index a11cee7e588a73ca166fb601ff440fd608438c1d..392fe3f65666ff45c1645496c244cebe65cf1d4e 100644 (file)
@@ -235,6 +235,8 @@ a:
                                        # CHECK-NEXT: .set  mips32r2
                                        # CHECK-NEXT: rdhwr $sp, $11
                                        # CHECK-NEXT: .set  pop          # encoding: [0x7c,0x1d,0x58,0x3b]
+        recip.d   $f19,$f6             # CHECK: recip.d $f19, $f6       # encoding: [0x46,0x20,0x34,0xd5]
+        recip.s   $f3,$f30             # CHECK: recip.s $f3, $f30       # encoding: [0x46,0x00,0xf0,0xd5]
         rotr      $1,15                # CHECK: rotr $1, $1, 15         # encoding: [0x00,0x21,0x0b,0xc2]
         rotr      $1,$14,15            # CHECK: rotr $1, $14, 15        # encoding: [0x00,0x2e,0x0b,0xc2]
         rotrv     $1,$14,$15           # CHECK: rotrv $1, $14, $15      # encoding: [0x01,0xee,0x08,0x46]
@@ -242,6 +244,8 @@ a:
         round.l.s $f25,$f5
         round.w.d $f6,$f4
         round.w.s $f27,$f28
+        rsqrt.s   $f0,$f4              # CHECK: rsqrt.s $f0, $f4       # encoding: [0x46,0x00,0x20,0x16]
+        rsqrt.d   $f2,$f6              # CHECK: rsqrt.d $f2, $f6       # encoding: [0x46,0x20,0x30,0x96]
         s.s       $f2, 8($3)           # CHECK: swc1  $f2, 8($3)       # encoding: [0xe4,0x62,0x00,0x08]
         s.d       $f2, 8($3)           # CHECK: sdc1  $f2, 8($3)       # encoding: [0xf4,0x62,0x00,0x08]
         sb        $s6,-19857($14)
index b92fd09f310ddbb863f2f69f51f39c40454e93a7..7ad4dc3c3d211efd63658034611d31f61759f769 100644 (file)
@@ -194,8 +194,12 @@ a:
                                  # CHECK-NEXT: .set  mips32r2
                                  # CHECK-NEXT: rdhwr $sp, $11
                                  # CHECK-NEXT: .set  pop         # encoding: [0x7c,0x1d,0x58,0x3b]
+        recip.d $f19,$f6         # CHECK: recip.d $f19, $f6      # encoding: [0x46,0x20,0x34,0xd5]
+        recip.s $f3,$f30         # CHECK: recip.s $f3, $f30      # encoding: [0x46,0x00,0xf0,0xd5]
         rint.d $f2, $f4          # CHECK: rint.d $f2, $f4        # encoding: [0x46,0x20,0x20,0x9a]
         rint.s $f2, $f4          # CHECK: rint.s $f2, $f4        # encoding: [0x46,0x00,0x20,0x9a]
+        rsqrt.s $f0,$f4          # CHECK: rsqrt.s $f0, $f4       # encoding: [0x46,0x00,0x20,0x16]
+        rsqrt.d $f2,$f6          # CHECK: rsqrt.d $f2, $f6       # encoding: [0x46,0x20,0x30,0x96]
         s.s    $f2, 8($3)        # CHECK: swc1 $f2, 8($3)        # encoding: [0xe4,0x62,0x00,0x08]
         s.d    $f2, 8($3)        # CHECK: sdc1 $f2, 8($3)        # encoding: [0xf4,0x62,0x00,0x08]
         sc      $15,-40($s3)     # CHECK: sc $15, -40($19)       # encoding: [0x7e,0x6f,0xec,0x26]