]> granicus.if.org Git - yasm/commitdiff
Fix #191: Incorrect argument order generated for AMD FMA4 opcodes.
authorPeter Johnson <peter@tortall.net>
Sun, 8 Nov 2009 17:30:34 +0000 (17:30 -0000)
committerPeter Johnson <peter@tortall.net>
Sun, 8 Nov 2009 17:30:34 +0000 (17:30 -0000)
svn path=/trunk/yasm/; revision=2237

modules/arch/x86/gen_x86_insn.py
modules/arch/x86/tests/amd-fma4.hex

index ab97e8ce78e901505ad566cb5f98eb614ec4b420..eb79cc289b1e7b43efb46127026d96e323614c49 100755 (executable)
@@ -6901,9 +6901,9 @@ add_group("fma_128_256",
     prefix=0x66,
     opcode=[0x0F, 0x3A, 0x00],
     operands=[Operand(type="SIMDReg", size=128, dest="Spare"),
-              Operand(type="SIMDReg", size=128, dest="VEXImmSrc"),
+              Operand(type="SIMDReg", size=128, dest="VEX"),
               Operand(type="SIMDRM", size=128, relaxed=True, dest="EA"),
-              Operand(type="SIMDReg", size=128, dest="VEX")])
+              Operand(type="SIMDReg", size=128, dest="VEXImmSrc")])
 add_group("fma_128_256",
     cpu=["FMA4"],
     modifiers=["Op2Add"],
@@ -6912,8 +6912,8 @@ add_group("fma_128_256",
     prefix=0x66,
     opcode=[0x0F, 0x3A, 0x00],
     operands=[Operand(type="SIMDReg", size=128, dest="Spare"),
-              Operand(type="SIMDReg", size=128, dest="VEXImmSrc"),
               Operand(type="SIMDReg", size=128, dest="VEX"),
+              Operand(type="SIMDReg", size=128, dest="VEXImmSrc"),
               Operand(type="SIMDRM", size=128, relaxed=True, dest="EA")])
 add_group("fma_128_256",
     cpu=["FMA4"],
@@ -6923,9 +6923,9 @@ add_group("fma_128_256",
     prefix=0x66,
     opcode=[0x0F, 0x3A, 0x00],
     operands=[Operand(type="SIMDReg", size=256, dest="Spare"),
-              Operand(type="SIMDReg", size=256, dest="VEXImmSrc"),
+              Operand(type="SIMDReg", size=256, dest="VEX"),
               Operand(type="SIMDRM", size=256, relaxed=True, dest="EA"),
-              Operand(type="SIMDReg", size=256, dest="VEX")])
+              Operand(type="SIMDReg", size=256, dest="VEXImmSrc")])
 add_group("fma_128_256",
     cpu=["FMA4"],
     modifiers=["Op2Add"],
@@ -6934,8 +6934,8 @@ add_group("fma_128_256",
     prefix=0x66,
     opcode=[0x0F, 0x3A, 0x00],
     operands=[Operand(type="SIMDReg", size=256, dest="Spare"),
-              Operand(type="SIMDReg", size=256, dest="VEXImmSrc"),
               Operand(type="SIMDReg", size=256, dest="VEX"),
+              Operand(type="SIMDReg", size=256, dest="VEXImmSrc"),
               Operand(type="SIMDRM", size=256, relaxed=True, dest="EA")])
 
 add_insn("vfmaddpd", "fma_128_256", modifiers=[0x69])
@@ -6960,9 +6960,9 @@ for sz in [32, 64]:
         prefix=0x66,
         opcode=[0x0F, 0x3A, 0x00],
         operands=[Operand(type="SIMDReg", size=128, dest="Spare"),
-                  Operand(type="SIMDReg", size=128, dest="VEXImmSrc"),
+                  Operand(type="SIMDReg", size=128, dest="VEX"),
                   Operand(type="SIMDReg", size=128, dest="EA"),
-                  Operand(type="SIMDReg", size=128, dest="VEX")])
+                  Operand(type="SIMDReg", size=128, dest="VEXImmSrc")])
     add_group("fma_128_m%d" % sz,
         cpu=["FMA4"],
         modifiers=["Op2Add"],
@@ -6971,9 +6971,9 @@ for sz in [32, 64]:
         prefix=0x66,
         opcode=[0x0F, 0x3A, 0x00],
         operands=[Operand(type="SIMDReg", size=128, dest="Spare"),
-                  Operand(type="SIMDReg", size=128, dest="VEXImmSrc"),
+                  Operand(type="SIMDReg", size=128, dest="VEX"),
                   Operand(type="Mem", size=sz, relaxed=True, dest="EA"),
-                  Operand(type="SIMDReg", size=128, dest="VEX")])
+                  Operand(type="SIMDReg", size=128, dest="VEXImmSrc")])
     add_group("fma_128_m%d" % sz,
         cpu=["FMA4"],
         modifiers=["Op2Add"],
@@ -6982,8 +6982,8 @@ for sz in [32, 64]:
         prefix=0x66,
         opcode=[0x0F, 0x3A, 0x00],
         operands=[Operand(type="SIMDReg", size=128, dest="Spare"),
-                  Operand(type="SIMDReg", size=128, dest="VEXImmSrc"),
                   Operand(type="SIMDReg", size=128, dest="VEX"),
+                  Operand(type="SIMDReg", size=128, dest="VEXImmSrc"),
                   Operand(type="Mem", size=sz, relaxed=True, dest="EA")])
 
 add_insn("vfmaddsd", "fma_128_m64", modifiers=[0x6B])
index 7f51092adb8b6d84082412a875c85972765e5840..a1193179e5e70578c8ec1152f4906204c1a56c4d 100644 (file)
 c4 
 e3 
-6
+7
 69 
 c2 
-1
+3
 c4 
 e3 
-6
+7
 69 
 00 
-1
+3
 c4 
 e3 
-6
+7
 69 
 00 
-1
+3
 c4 
 e3 
-e9 
+f1 
 69 
 00 
-1
+2
 c4 
 e3 
-e9 
+f1 
 69 
 00 
-1
+2
 c4 
 e3 
-6
+7
 69 
 c2 
-1
+3
 c4 
 e3 
-6
+7
 69 
 00 
-1
+3
 c4 
 e3 
-6
+7
 69 
 00 
-1
+3
 c4 
 e3 
-ed 
+f5 
 69 
 00 
-1
+2
 c4 
 e3 
-ed 
+f5 
 69 
 00 
-1
+2
 c4 
 e3 
-6
+7
 68 
 c2 
-1
+3
 c4 
 e3 
-6
+7
 68 
 00 
-1
+3
 c4 
 e3 
-e9 
+f1 
 68 
 00 
-1
+2
 c4 
 e3 
-6
+7
 68 
 c2 
-1
+3
 c4 
 e3 
-6
+7
 68 
 00 
-1
+3
 c4 
 e3 
-ed 
+f5 
 68 
 00 
-1
+2
 c4 
 e3 
-6
+7
 6b 
 c2 
-1
+3
 c4 
 e3 
-6
+7
 6b 
 00 
-1
+3
 c4 
 e3 
-6
+7
 6b 
 00 
-1
+3
 c4 
 e3 
-e9 
+f1 
 6b 
 00 
-1
+2
 c4 
 e3 
-e9 
+f1 
 6b 
 00 
-1
+2
 c4 
 e3 
-6
+7
 6a 
 c2 
-1
+3
 c4 
 e3 
-6
+7
 6a 
 00 
-1
+3
 c4 
 e3 
-e9 
+f1 
 6a 
 00 
-1
+2
 c4 
 e3 
-6
+7
 5d 
 c2 
-1
+3
 c4 
 e3 
-6
+7
 5d 
 00 
-1
+3
 c4 
 e3 
-e9 
+f1 
 5d 
 00 
-1
+2
 c4 
 e3 
-6
+7
 5d 
 c2 
-1
+3
 c4 
 e3 
-6
+7
 5d 
 00 
-1
+3
 c4 
 e3 
-ed 
+f5 
 5d 
 00 
-1
+2
 c4 
 e3 
-6
+7
 5c 
 c2 
-1
+3
 c4 
 e3 
-6
+7
 5c 
 00 
-1
+3
 c4 
 e3 
-e9 
+f1 
 5c 
 00 
-1
+2
 c4 
 e3 
-6
+7
 5c 
 c2 
-1
+3
 c4 
 e3 
-6
+7
 5c 
 00 
-1
+3
 c4 
 e3 
-ed 
+f5 
 5c 
 00 
-1
+2
 c4 
 e3 
-6
+7
 6d 
 c2 
-1
+3
 c4 
 e3 
-6
+7
 6d 
 00 
-1
+3
 c4 
 e3 
-e9 
+f1 
 6d 
 00 
-1
+2
 c4 
 e3 
-6
+7
 6d 
 c2 
-1
+3
 c4 
 e3 
-6
+7
 6d 
 00 
-1
+3
 c4 
 e3 
-ed 
+f5 
 6d 
 00 
-1
+2
 c4 
 e3 
-6
+7
 6c 
 c2 
-1
+3
 c4 
 e3 
-6
+7
 6c 
 00 
-1
+3
 c4 
 e3 
-e9 
+f1 
 6c 
 00 
-1
+2
 c4 
 e3 
-6
+7
 6c 
 c2 
-1
+3
 c4 
 e3 
-6
+7
 6c 
 00 
-1
+3
 c4 
 e3 
-ed 
+f5 
 6c 
 00 
-1
+2
 c4 
 e3 
-6
+7
 6f 
 c2 
-1
+3
 c4 
 e3 
-6
+7
 6f 
 00 
-1
+3
 c4 
 e3 
-e9 
+f1 
 6f 
 00 
-1
+2
 c4 
 e3 
-6
+7
 6e 
 c2 
-1
+3
 c4 
 e3 
-6
+7
 6e 
 00 
-1
+3
 c4 
 e3 
-e9 
+f1 
 6e 
 00 
-1
+2
 c4 
 e3 
-6
+7
 79 
 c2 
-1
+3
 c4 
 e3 
-6
+7
 79 
 00 
-1
+3
 c4 
 e3 
-e9 
+f1 
 79 
 00 
-1
+2
 c4 
 e3 
-6
+7
 79 
 c2 
-1
+3
 c4 
 e3 
-6
+7
 79 
 00 
-1
+3
 c4 
 e3 
-ed 
+f5 
 79 
 00 
-1
+2
 c4 
 e3 
-6
+7
 78 
 c2 
-1
+3
 c4 
 e3 
-6
+7
 78 
 00 
-1
+3
 c4 
 e3 
-e9 
+f1 
 78 
 00 
-1
+2
 c4 
 e3 
-6
+7
 78 
 c2 
-1
+3
 c4 
 e3 
-6
+7
 78 
 00 
-1
+3
 c4 
 e3 
-ed 
+f5 
 78 
 00 
-1
+2
 c4 
 e3 
-6
+7
 7b 
 c2 
-1
+3
 c4 
 e3 
-6
+7
 7b 
 00 
-1
+3
 c4 
 e3 
-e9 
+f1 
 7b 
 00 
-1
+2
 c4 
 e3 
-6
+7
 7a 
 c2 
-1
+3
 c4 
 e3 
-6
+7
 7a 
 00 
-1
+3
 c4 
 e3 
-e9 
+f1 
 7a 
 00 
-1
+2
 c4 
 e3 
-6
+7
 7d 
 c2 
-1
+3
 c4 
 e3 
-6
+7
 7d 
 00 
-1
+3
 c4 
 e3 
-e9 
+f1 
 7d 
 00 
-1
+2
 c4 
 e3 
-6
+7
 7d 
 c2 
-1
+3
 c4 
 e3 
-6
+7
 7d 
 00 
-1
+3
 c4 
 e3 
-ed 
+f5 
 7d 
 00 
-1
+2
 c4 
 e3 
-6
+7
 7c 
 c2 
-1
+3
 c4 
 e3 
-6
+7
 7c 
 00 
-1
+3
 c4 
 e3 
-e9 
+f1 
 7c 
 00 
-1
+2
 c4 
 e3 
-6
+7
 7c 
 c2 
-1
+3
 c4 
 e3 
-6
+7
 7c 
 00 
-1
+3
 c4 
 e3 
-ed 
+f5 
 7c 
 00 
-1
+2
 c4 
 e3 
-6
+7
 7f 
 c2 
-1
+3
 c4 
 e3 
-6
+7
 7f 
 00 
-1
+3
 c4 
 e3 
-e9 
+f1 
 7f 
 00 
-1
+2
 c4 
 e3 
-6
+7
 7e 
 c2 
-1
+3
 c4 
 e3 
-6
+7
 7e 
 00 
-1
+3
 c4 
 e3 
-e9 
+f1 
 7e 
 00 
-1
+2