< prev index next >
src/cpu/ppc/vm/ppc.ad
        Print this page
rev 12338 : PPC64: Use andis instead of lis/and
        
*** 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)((unsigned 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 >