+"fpop" => {
+ "op_flags" => "R|K",
+ "comment" => "x87 stack pop",
+ "reg_req" => { "in" => [ "st"], "out" => [ "st" ] },
+ "cmp_attr" => " return 1;\n",
+ "emit" => '. fstp %X1 /* x87 pop %X1 */',
+},
+
+# compare
+
+"fcomJmp" => {
+ "op_flags" => "L|X|Y",
+ "comment" => "floating point compare",
+ "cmp_attr" => " return ia32_compare_immop_attr(attr_a, attr_b);\n",
+ "reg_req" => { },
+},
+
+"fcompJmp" => {
+ "op_flags" => "L|X|Y",
+ "comment" => "floating point compare and pop",
+ "cmp_attr" => " return ia32_compare_immop_attr(attr_a, attr_b);\n",
+ "reg_req" => { },
+},
+
+"fcomppJmp" => {
+ "op_flags" => "L|X|Y",
+ "comment" => "floating point compare and pop twice",
+ "cmp_attr" => " return ia32_compare_immop_attr(attr_a, attr_b);\n",
+ "reg_req" => { },
+},
+
+"fcomrJmp" => {
+ "op_flags" => "L|X|Y",
+ "comment" => "floating point compare reverse",
+ "cmp_attr" => " return ia32_compare_immop_attr(attr_a, attr_b);\n",
+ "reg_req" => { },
+},
+
+"fcomrpJmp" => {
+ "op_flags" => "L|X|Y",
+ "comment" => "floating point compare reverse and pop",
+ "cmp_attr" => " return ia32_compare_immop_attr(attr_a, attr_b);\n",
+ "reg_req" => { },
+},
+
+"fcomrppJmp" => {
+ "op_flags" => "L|X|Y",
+ "comment" => "floating point compare reverse and pop twice",
+ "cmp_attr" => " return ia32_compare_immop_attr(attr_a, attr_b);\n",
+ "reg_req" => { },
+},
+