test
authorDavid Schleef <ds@schleef.org>
Wed, 17 Jun 2009 08:26:22 +0000 (01:26 -0700)
committerDavid Schleef <ds@schleef.org>
Wed, 17 Jun 2009 08:26:22 +0000 (01:26 -0700)
orc/orcprogram-neon.c

index b7bc610..ca8f6f0 100644 (file)
@@ -265,8 +265,11 @@ orc_neon_load_alignment_masks (OrcCompiler *compiler)
               var->ptr_register, size-1);
           orc_arm_emit_lsl_imm (compiler, compiler->gp_tmpreg,
               compiler->gp_tmpreg, 3);
+          orc_arm_emit_align (compiler, 3);
           orc_arm_emit_add (compiler, compiler->gp_tmpreg,
               compiler->gp_tmpreg, ORC_ARM_PC);
+          orc_arm_emit_add_imm (compiler, compiler->gp_tmpreg,
+              compiler->gp_tmpreg, 16+32);
 
           if (size != 4 && size != 8) {
             ORC_ERROR("strange size %d", size);
@@ -281,14 +284,14 @@ orc_neon_load_alignment_masks (OrcCompiler *compiler)
           code |= ((var->mask_alloc>>4)&0x1) << 22;
           orc_arm_emit (compiler, code);
 
-  orc_arm_emit_branch (compiler, ORC_ARM_COND_AL, 16+b);
-  for(i=0;i<8;i++){
+  orc_arm_emit_branch (compiler, ORC_ARM_COND_AL, 8+b);
+  for(i=0;i<16;i++){
     ORC_ASM_CODE(compiler, "  .word 0x%02x%02x%02x%02x\n", i+3, i+2, i+1, i+0);
     orc_arm_emit (compiler, ((i+0)<<0) | ((i+1)<<8) | ((i+2)<<16) | ((i+3)<<24));
     ORC_ASM_CODE(compiler, "  .word 0x%02x%02x%02x%02x\n", i+7, i+6, i+5, i+4);
     orc_arm_emit (compiler, ((i+4)<<0) | ((i+5)<<8) | ((i+6)<<16) | ((i+7)<<24));
   }
-  orc_arm_emit_label (compiler, 16+b);
+  orc_arm_emit_label (compiler, 8+b);
   b++;
 
 #if 0