< prev index next >

src/cpu/ppc/vm/ppc.ad

Print this page
rev 12338 : PPC64: Use andis instead of lis/and

Add match rule to replace lis/and for an andis.

*** 9578,9587 **** --- 9578,9600 ---- __ andr($dst$$Register, $src1$$Register, $src2$$Register); %} ins_pipe(pipe_class_default); %} + // Left shifted Immediate And + instruct andI_reg_immIhi16(iRegIdst dst, iRegIsrc src1, immIhi16 src2, flagsRegCR0 cr0) %{ + match(Set dst (AndI src1 src2)); + effect(KILL cr0); + format %{ "ANDIS $dst, $src1, $src2.hi" %} + size(4); + ins_encode %{ + // TODO: PPC port $archOpcode(ppc64Opcode_andis_); + __ andis_($dst$$Register, $src1$$Register, (int)((short)(($src2$$constant & 0xFFFF0000) >> 16))); + %} + ins_pipe(pipe_class_default); + %} + // Immediate And instruct andI_reg_uimm16(iRegIdst dst, iRegIsrc src1, uimmI16 src2, flagsRegCR0 cr0) %{ match(Set dst (AndI src1 src2)); effect(KILL cr0);
< prev index next >