[PATCH] SPU: Fix build failure on 64 bit hosts
Richard Biener
richard.guenther@gmail.com
Mon Dec 10 12:30:00 GMT 2012
On Mon, Dec 10, 2012 at 12:31 PM, Andreas Krebbel
<krebbel@linux.vnet.ibm.com> wrote:
> Hi,
>
> building an SPU compiler on a 64 bit host system currently fails with:
>
> spu.md:4394: error: cast from ‘rtx_def**’ to ‘int’ loses precision
>
> In the SPU backend several patterns mention the operands array in the
> insn condition in order to prevent a warning about missing modes to be
> issued. Interpreting the term "operands" as condition fails when it
> is evaluated on a 64 bit host. Turning it into a comparison fixes
> this for me.
>
> Ok to apply?
Looks obvious to me. It even looks less weird this way.
Thanks,
Richard.
> Bye,
>
> -Andreas-
>
>
> 2012-12-10 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
>
> * config/spu/spu.md: Replace "operands" with "operands != NULL" in
> insn conditions.
>
> ---
> gcc/config/spu/spu.md | 16 !!!!!!!!!!!!!!!!
> 1 file changed, 16 modifications(!)
>
> Index: gcc/config/spu/spu.md
> ===================================================================
> *** gcc/config/spu/spu.md.orig
> --- gcc/config/spu/spu.md
> ***************
> *** 1066,1072 ****
> [(set (match_operand:CBOP 0 "spu_reg_operand" "=r")
> (unspec:CBOP [(match_operand 1 "spu_reg_operand" "r")
> (match_operand 2 "spu_reg_operand" "r")] UNSPEC_CG))]
> ! "operands"
> "cg\t%0,%1,%2")
>
> (define_insn "cgx_<mode>"
> --- 1066,1072 ----
> [(set (match_operand:CBOP 0 "spu_reg_operand" "=r")
> (unspec:CBOP [(match_operand 1 "spu_reg_operand" "r")
> (match_operand 2 "spu_reg_operand" "r")] UNSPEC_CG))]
> ! "operands != NULL"
> "cg\t%0,%1,%2")
>
> (define_insn "cgx_<mode>"
> ***************
> *** 1074,1080 ****
> (unspec:CBOP [(match_operand 1 "spu_reg_operand" "r")
> (match_operand 2 "spu_reg_operand" "r")
> (match_operand 3 "spu_reg_operand" "0")] UNSPEC_CGX))]
> ! "operands"
> "cgx\t%0,%1,%2")
>
> (define_insn "addx_<mode>"
> --- 1074,1080 ----
> (unspec:CBOP [(match_operand 1 "spu_reg_operand" "r")
> (match_operand 2 "spu_reg_operand" "r")
> (match_operand 3 "spu_reg_operand" "0")] UNSPEC_CGX))]
> ! "operands != NULL"
> "cgx\t%0,%1,%2")
>
> (define_insn "addx_<mode>"
> ***************
> *** 1082,1088 ****
> (unspec:CBOP [(match_operand 1 "spu_reg_operand" "r")
> (match_operand 2 "spu_reg_operand" "r")
> (match_operand 3 "spu_reg_operand" "0")] UNSPEC_ADDX))]
> ! "operands"
> "addx\t%0,%1,%2")
>
>
> --- 1082,1088 ----
> (unspec:CBOP [(match_operand 1 "spu_reg_operand" "r")
> (match_operand 2 "spu_reg_operand" "r")
> (match_operand 3 "spu_reg_operand" "0")] UNSPEC_ADDX))]
> ! "operands != NULL"
> "addx\t%0,%1,%2")
>
>
> ***************
> *** 1189,1195 ****
> [(set (match_operand:CBOP 0 "spu_reg_operand" "=r")
> (unspec:CBOP [(match_operand 1 "spu_reg_operand" "r")
> (match_operand 2 "spu_reg_operand" "r")] UNSPEC_BG))]
> ! "operands"
> "bg\t%0,%2,%1")
>
> (define_insn "bgx_<mode>"
> --- 1189,1195 ----
> [(set (match_operand:CBOP 0 "spu_reg_operand" "=r")
> (unspec:CBOP [(match_operand 1 "spu_reg_operand" "r")
> (match_operand 2 "spu_reg_operand" "r")] UNSPEC_BG))]
> ! "operands != NULL"
> "bg\t%0,%2,%1")
>
> (define_insn "bgx_<mode>"
> ***************
> *** 1197,1203 ****
> (unspec:CBOP [(match_operand 1 "spu_reg_operand" "r")
> (match_operand 2 "spu_reg_operand" "r")
> (match_operand 3 "spu_reg_operand" "0")] UNSPEC_BGX))]
> ! "operands"
> "bgx\t%0,%2,%1")
>
> (define_insn "sfx_<mode>"
> --- 1197,1203 ----
> (unspec:CBOP [(match_operand 1 "spu_reg_operand" "r")
> (match_operand 2 "spu_reg_operand" "r")
> (match_operand 3 "spu_reg_operand" "0")] UNSPEC_BGX))]
> ! "operands != NULL"
> "bgx\t%0,%2,%1")
>
> (define_insn "sfx_<mode>"
> ***************
> *** 1205,1211 ****
> (unspec:CBOP [(match_operand 1 "spu_reg_operand" "r")
> (match_operand 2 "spu_reg_operand" "r")
> (match_operand 3 "spu_reg_operand" "0")] UNSPEC_SFX))]
> ! "operands"
> "sfx\t%0,%2,%1")
>
> (define_insn "subti3"
> --- 1205,1211 ----
> (unspec:CBOP [(match_operand 1 "spu_reg_operand" "r")
> (match_operand 2 "spu_reg_operand" "r")
> (match_operand 3 "spu_reg_operand" "0")] UNSPEC_SFX))]
> ! "operands != NULL"
> "sfx\t%0,%2,%1")
>
> (define_insn "subti3"
> *************** selb\t%0,%4,%0,%3"
> *** 4018,4024 ****
> (define_insn "extend_compare<mode>"
> [(set (match_operand:ALL 0 "spu_reg_operand" "=r")
> (unspec:ALL [(match_operand 1 "spu_reg_operand" "r")] UNSPEC_EXTEND_CMP))]
> ! "operands"
> "fsm\t%0,%1"
> [(set_attr "type" "shuf")])
>
> --- 4018,4024 ----
> (define_insn "extend_compare<mode>"
> [(set (match_operand:ALL 0 "spu_reg_operand" "=r")
> (unspec:ALL [(match_operand 1 "spu_reg_operand" "r")] UNSPEC_EXTEND_CMP))]
> ! "operands != NULL"
> "fsm\t%0,%1"
> [(set_attr "type" "shuf")])
>
> *************** selb\t%0,%4,%0,%3"
> *** 4391,4397 ****
> (unspec [(match_operand 1 "spu_reg_operand" "r")
> (match_operand 2 "spu_reg_operand" "r")
> (match_operand:TI 3 "spu_reg_operand" "r")] UNSPEC_SHUFB))]
> ! "operands"
> "shufb\t%0,%1,%2,%3"
> [(set_attr "type" "shuf")])
>
> --- 4391,4397 ----
> (unspec [(match_operand 1 "spu_reg_operand" "r")
> (match_operand 2 "spu_reg_operand" "r")
> (match_operand:TI 3 "spu_reg_operand" "r")] UNSPEC_SHUFB))]
> ! "operands != NULL"
> "shufb\t%0,%1,%2,%3"
> [(set_attr "type" "shuf")])
>
>
More information about the Gcc-patches
mailing list