From 1d5e807f57064886be698d7d0208620509399437 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Christian=20W=C3=BCrdig?= Date: Mon, 29 May 2006 14:09:28 +0000 Subject: [PATCH] added nodes for intrinsic lowering --- ir/be/ia32/ia32_spec.pl | 80 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 79 insertions(+), 1 deletion(-) diff --git a/ir/be/ia32/ia32_spec.pl b/ir/be/ia32/ia32_spec.pl index a996025fb..c58449a34 100644 --- a/ir/be/ia32/ia32_spec.pl +++ b/ir/be/ia32/ia32_spec.pl @@ -228,12 +228,14 @@ $comment_string = "/*"; "l_Add" => { "op_flags" => "C", "irn_flags" => "R", + "cmp_attr" => " return 1;\n", "comment" => "construct lowered Add: Add(a, b) = Add(b, a) = a + b", "arity" => 2, }, "l_AddC" => { "op_flags" => "C", + "cmp_attr" => " return 1;\n", "comment" => "construct lowered Add with Carry: AddC(a, b) = Add(b, a) = a + b + carry", "arity" => 2, }, @@ -248,6 +250,7 @@ $comment_string = "/*"; "l_MulS" => { "op_flags" => "C", + "cmp_attr" => " return 1;\n", "comment" => "construct lowered MulS: MulS(a, b) = MulS(b, a) = a * b", "outs" => [ "EAX", "EDX", "M" ], "arity" => 2 @@ -264,6 +267,7 @@ $comment_string = "/*"; "l_Mul" => { "op_flags" => "C", + "cmp_attr" => " return 1;\n", "comment" => "construct lowered Mul: Mul(a, b) = Mul(b, a) = a * b", "arity" => 2 }, @@ -306,6 +310,7 @@ $comment_string = "/*"; "l_Eor" => { "op_flags" => "C", + "cmp_attr" => " return 1;\n", "comment" => "construct lowered Eor: Eor(a, b) = Eor(b, a) = a EOR b", "arity" => 2 }, @@ -361,11 +366,13 @@ $comment_string = "/*"; "l_Sub" => { "irn_flags" => "R", + "cmp_attr" => " return 1;\n", "comment" => "construct lowered Sub: Sub(a, b) = a - b", "arity" => 2, }, "l_SubC" => { + "cmp_attr" => " return 1;\n", "comment" => "construct lowered Sub with Carry: SubC(a, b) = a - b - carry", "arity" => 2, }, @@ -398,6 +405,7 @@ $comment_string = "/*"; }, "l_Shl" => { + "cmp_attr" => " return 1;\n", "comment" => "construct lowered Shl: Shl(a, b) = a << b", "arity" => 2 }, @@ -430,6 +438,7 @@ else { }, "l_ShlD" => { + "cmp_attr" => " return 1;\n", "comment" => "construct lowered ShlD: ShlD(a, b, c) = a, b << count (shift left count bits from b into a)", "arity" => 3 }, @@ -444,6 +453,7 @@ else { }, "l_Shr" => { + "cmp_attr" => " return 1;\n", "comment" => "construct lowered Shr: Shr(a, b) = a << b", "arity" => 2 }, @@ -476,6 +486,7 @@ else { }, "l_ShrD" => { + "cmp_attr" => " return 1;\n", "comment" => "construct lowered ShrD: ShrD(a, b, c) = a, b >> count (shift rigth count bits from a into b)", "arity" => 3 }, @@ -490,6 +501,7 @@ else { }, "l_Shrs" => { + "cmp_attr" => " return 1;\n", "comment" => "construct lowered Shrs: Shrs(a, b) = a << b", "arity" => 2 }, @@ -524,6 +536,7 @@ else { }, "l_Minus" => { + "cmp_attr" => " return 1;\n", "comment" => "construct lowered Minus: Minus(a) = -a", "arity" => 1, }, @@ -631,6 +644,23 @@ else { "outs" => [ "res", "M" ], }, +"l_Load" => { + "op_flags" => "L|F", + "cmp_attr" => " return 1;\n", + "comment" => "construct lowered Load: Load(ptr, mem) = LD ptr -> reg", + "outs" => [ "res", "M" ], + "arity" => 2, +}, + +"l_Store" => { + "op_flags" => "L|F", + "cmp_attr" => " return 1;\n", + "state" => "exc_pinned", + "comment" => "construct lowered Store: Store(ptr, val, mem) = ST ptr,val", + "arity" => 3, + "outs" => [ "M" ], +}, + "Store" => { "op_flags" => "L|F", "state" => "exc_pinned", @@ -850,6 +880,20 @@ else { "outs" => [ "M" ], }, +"l_X87toSSE" => { + "op_flags" => "L|F", + "comment" => "construct: transfer a value from x87 FPU into a SSE register", + "cmp_attr" => " return 1;\n", + "arity" => 3, +}, + +"l_SSEtoX87" => { + "op_flags" => "L|F", + "comment" => "construct: transfer a value from SSE register to x87 FPU", + "cmp_attr" => " return 1;\n", + "arity" => 3, +}, + # CopyB "CopyB" => { @@ -985,12 +1029,19 @@ else { "vfmul" => { "irn_flags" => "R", - "comment" => "virtual fp Mul: Mul(a, b) = Mul(b, a) = a + b", + "comment" => "virtual fp Mul: Mul(a, b) = Mul(b, a) = a * b", "cmp_attr" => " return ia32_compare_immop_attr(attr_a, attr_b);\n", "reg_req" => { "in" => [ "gp", "gp", "vfp", "vfp", "none" ], "out" => [ "vfp" ] }, "outs" => [ "res", "M" ], }, +"l_vfmul" => { + "op_flags" => "C", + "cmp_attr" => " return 1;\n", + "comment" => "lowered virtual fp Mul: Mul(a, b) = Mul(b, a) = a * b", + "arity" => 2, +}, + "vfsub" => { "irn_flags" => "R", "comment" => "virtual fp Sub: Sub(a, b) = a - b", @@ -999,6 +1050,12 @@ else { "outs" => [ "res", "M" ], }, +"l_vfsub" => { + "cmp_attr" => " return 1;\n", + "comment" => "lowered virtual fp Sub: Sub(a, b) = a - b", + "arity" => 2, +}, + "vfdiv" => { "comment" => "virtual fp Div: Div(a, b) = a / b", "cmp_attr" => " return ia32_compare_immop_attr(attr_a, attr_b);\n", @@ -1006,6 +1063,12 @@ else { "outs" => [ "res", "M" ], }, +"l_vfdiv" => { + "cmp_attr" => " return 1;\n", + "comment" => "lowered virtual fp Div: Div(a, b) = a / b", + "arity" => 2, +}, + "vfabs" => { "irn_flags" => "R", "comment" => "virtual fp Abs: Abs(a) = |a|", @@ -1067,6 +1130,13 @@ else { "outs" => [ "res", "M" ], }, +"l_vfild" => { + "cmp_attr" => " return 1;\n", + "comment" => "lowered virtual fp integer Load: Load(ptr, mem) = iLD ptr -> reg", + "outs" => [ "res", "M" ], + "arity" => 2, +}, + "vfist" => { "comment" => "virtual fp integer Store: Store(ptr, val, mem) = iST ptr,val", "cmp_attr" => " return ia32_compare_immop_attr(attr_a, attr_b);\n", @@ -1074,6 +1144,14 @@ else { "outs" => [ "M" ], }, +"l_vfist" => { + "cmp_attr" => " return 1;\n", + "comment" => "lowered virtual fp integer Store: Store(ptr, val, mem) = iST ptr,val", + "outs" => [ "M" ], + "arity" => 3, +}, + + # constants "vfldz" => { -- 2.20.1