1f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* 2f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Clip testing in SPARC assembly 3f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 4f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 5f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if __arch64__ 6f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LDPTR ldx 7f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define V4F_DATA 0x00 8f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define V4F_START 0x08 9f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define V4F_COUNT 0x10 10f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define V4F_STRIDE 0x14 11f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define V4F_SIZE 0x18 12f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define V4F_FLAGS 0x1c 13f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#else 14f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define LDPTR ld 15f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define V4F_DATA 0x00 16f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define V4F_START 0x04 17f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define V4F_COUNT 0x08 18f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define V4F_STRIDE 0x0c 19f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define V4F_SIZE 0x10 20f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define V4F_FLAGS 0x14 21f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif 22f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 23f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define VEC_SIZE_1 1 24f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define VEC_SIZE_2 3 25f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define VEC_SIZE_3 7 26f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define VEC_SIZE_4 15 27f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 28f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org .register %g2, #scratch 29f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org .register %g3, #scratch 30f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 31f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org .text 32f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org .align 64 33f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 34f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgone_dot_zero: 35f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org .word 0x3f800000 /* 1.0f */ 36f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 37f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* This trick is shamelessly stolen from the x86 38f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Mesa asm. Very clever, and we can do it too 39f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * since we have the necessary add with carry 40f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * instructions on Sparc. 41f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 42f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgclip_table: 43f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org .byte 0, 1, 0, 2, 4, 5, 4, 6 44f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org .byte 0, 1, 0, 2, 8, 9, 8, 10 45f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org .byte 32, 33, 32, 34, 36, 37, 36, 38 46f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org .byte 32, 33, 32, 34, 40, 41, 40, 42 47f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org .byte 0, 1, 0, 2, 4, 5, 4, 6 48f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org .byte 0, 1, 0, 2, 8, 9, 8, 10 49f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org .byte 16, 17, 16, 18, 20, 21, 20, 22 50f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org .byte 16, 17, 16, 18, 24, 25, 24, 26 51f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org .byte 63, 61, 63, 62, 55, 53, 55, 54 52f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org .byte 63, 61, 63, 62, 59, 57, 59, 58 53f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org .byte 47, 45, 47, 46, 39, 37, 39, 38 54f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org .byte 47, 45, 47, 46, 43, 41, 43, 42 55f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org .byte 63, 61, 63, 62, 55, 53, 55, 54 56f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org .byte 63, 61, 63, 62, 59, 57, 59, 58 57f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org .byte 31, 29, 31, 30, 23, 21, 23, 22 58f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org .byte 31, 29, 31, 30, 27, 25, 27, 26 59f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 60f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* GLvector4f *clip_vec, GLvector4f *proj_vec, 61f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLubyte clipMask[], GLubyte *orMask, GLubyte *andMask, 62f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLboolean viewport_z_enable */ 63f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 64f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org .align 64 65f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org__pc_tramp: 66f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org retl 67f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org nop 68f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 69f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org .globl _mesa_sparc_cliptest_points4 70f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org_mesa_sparc_cliptest_points4: 71f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org save %sp, -64, %sp 72f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org call __pc_tramp 73f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sub %o7, (. - one_dot_zero - 4), %g1 74f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ld [%g1 + 0x0], %f4 75f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org add %g1, 0x4, %g1 76f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 77f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ld [%i0 + V4F_STRIDE], %l1 78f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ld [%i0 + V4F_COUNT], %l3 79f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org LDPTR [%i0 + V4F_START], %i0 80f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org LDPTR [%i1 + V4F_START], %i5 81f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ldub [%i3], %g2 82f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ldub [%i4], %g3 83f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sll %g3, 8, %g3 84f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org or %g2, %g3, %g2 85f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 86f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ld [%i1 + V4F_FLAGS], %g3 87f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org or %g3, VEC_SIZE_4, %g3 88f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org st %g3, [%i1 + V4F_FLAGS] 89f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org mov 3, %g3 90f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org st %g3, [%i1 + V4F_SIZE] 91f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org st %l3, [%i1 + V4F_COUNT] 92f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org clr %l2 93f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org clr %l0 94f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 95f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* l0: i 96f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * l3: count 97f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * l1: stride 98f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * l2: c 99f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * g2: (tmpAndMask << 8) | tmpOrMask 100f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * g1: clip_table 101f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * i0: from[stride][i] 102f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * i2: clipMask 103f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * i5: vProj[4][i] 104f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 105f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 106f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org1: ld [%i0 + 0x0c], %f3 ! LSU Group 107f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ld [%i0 + 0x0c], %g5 ! LSU Group 108f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ld [%i0 + 0x08], %g4 ! LSU Group 109f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org fdivs %f4, %f3, %f8 ! FGM 110f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org addcc %g5, %g5, %g5 ! IEU1 Group 111f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org addx %g0, 0x0, %g3 ! IEU1 Group 112f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org addcc %g4, %g4, %g4 ! IEU1 Group 113f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org addx %g3, %g3, %g3 ! IEU1 Group 114f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org subcc %g5, %g4, %g0 ! IEU1 Group 115f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ld [%i0 + 0x04], %g4 ! LSU Group 116f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org addx %g3, %g3, %g3 ! IEU1 Group 117f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org addcc %g4, %g4, %g4 ! IEU1 Group 118f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org addx %g3, %g3, %g3 ! IEU1 Group 119f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org subcc %g5, %g4, %g0 ! IEU1 Group 120f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ld [%i0 + 0x00], %g4 ! LSU Group 121f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org addx %g3, %g3, %g3 ! IEU1 Group 122f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org addcc %g4, %g4, %g4 ! IEU1 Group 123f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org addx %g3, %g3, %g3 ! IEU1 Group 124f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org subcc %g5, %g4, %g0 ! IEU1 Group 125f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org addx %g3, %g3, %g3 ! IEU1 Group 126f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ldub [%g1 + %g3], %g3 ! LSU Group 127f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org cmp %g3, 0 ! IEU1 Group, stall 128f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org be 2f ! CTI 129f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org stb %g3, [%i2] ! LSU 130f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sll %g3, 8, %g4 ! IEU1 Group 131f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org add %l2, 1, %l2 ! IEU0 132f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org st %g0, [%i5 + 0x00] ! LSU 133f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org or %g4, 0xff, %g4 ! IEU0 Group 134f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org or %g2, %g3, %g2 ! IEU1 135f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org st %g0, [%i5 + 0x04] ! LSU 136f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org and %g2, %g4, %g2 ! IEU0 Group 137f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org st %g0, [%i5 + 0x08] ! LSU 138f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org b 3f ! CTI 139f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org st %f4, [%i5 + 0x0c] ! LSU Group 140f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org2: ld [%i0 + 0x00], %f0 ! LSU Group 141f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ld [%i0 + 0x04], %f1 ! LSU Group 142f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ld [%i0 + 0x08], %f2 ! LSU Group 143f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org fmuls %f0, %f8, %f0 ! FGM 144f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org st %f0, [%i5 + 0x00] ! LSU Group 145f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org fmuls %f1, %f8, %f1 ! FGM 146f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org st %f1, [%i5 + 0x04] ! LSU Group 147f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org fmuls %f2, %f8, %f2 ! FGM 148f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org st %f2, [%i5 + 0x08] ! LSU Group 149f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org st %f8, [%i5 + 0x0c] ! LSU Group 150f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org3: add %i5, 0x10, %i5 ! IEU1 151f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org add %l0, 1, %l0 ! IEU0 Group 152f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org add %i2, 1, %i2 ! IEU0 Group 153f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org cmp %l0, %l3 ! IEU1 Group 154f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org bne 1b ! CTI 155f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org add %i0, %l1, %i0 ! IEU0 Group 156f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org stb %g2, [%i3] ! LSU 157f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org srl %g2, 8, %g3 ! IEU0 Group 158f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org cmp %l2, %l3 ! IEU1 Group 159f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org bl,a 1f ! CTI 160f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org clr %g3 ! IEU0 161f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org1: stb %g3, [%i4] ! LSU Group 162f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ret ! CTI Group 163f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org restore %i1, 0x0, %o0 164f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 165f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org .globl _mesa_sparc_cliptest_points4_np 166f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org_mesa_sparc_cliptest_points4_np: 167f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org save %sp, -64, %sp 168f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 169f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org call __pc_tramp 170f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sub %o7, (. - one_dot_zero - 4), %g1 171f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org add %g1, 0x4, %g1 172f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 173f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ld [%i0 + V4F_STRIDE], %l1 174f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ld [%i0 + V4F_COUNT], %l3 175f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org LDPTR [%i0 + V4F_START], %i0 176f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ldub [%i3], %g2 177f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ldub [%i4], %g3 178f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sll %g3, 8, %g3 179f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org or %g2, %g3, %g2 180f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 181f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org clr %l2 182f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org clr %l0 183f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 184f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* l0: i 185f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * l3: count 186f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * l1: stride 187f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * l2: c 188f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * g2: (tmpAndMask << 8) | tmpOrMask 189f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * g1: clip_table 190f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * i0: from[stride][i] 191f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * i2: clipMask 192f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 193f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 194f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org1: ld [%i0 + 0x0c], %g5 ! LSU Group 195f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ld [%i0 + 0x08], %g4 ! LSU Group 196f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org addcc %g5, %g5, %g5 ! IEU1 Group 197f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org addx %g0, 0x0, %g3 ! IEU1 Group 198f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org addcc %g4, %g4, %g4 ! IEU1 Group 199f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org addx %g3, %g3, %g3 ! IEU1 Group 200f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org subcc %g5, %g4, %g0 ! IEU1 Group 201f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ld [%i0 + 0x04], %g4 ! LSU Group 202f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org addx %g3, %g3, %g3 ! IEU1 Group 203f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org addcc %g4, %g4, %g4 ! IEU1 Group 204f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org addx %g3, %g3, %g3 ! IEU1 Group 205f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org subcc %g5, %g4, %g0 ! IEU1 Group 206f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ld [%i0 + 0x00], %g4 ! LSU Group 207f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org addx %g3, %g3, %g3 ! IEU1 Group 208f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org addcc %g4, %g4, %g4 ! IEU1 Group 209f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org addx %g3, %g3, %g3 ! IEU1 Group 210f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org subcc %g5, %g4, %g0 ! IEU1 Group 211f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org addx %g3, %g3, %g3 ! IEU1 Group 212f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ldub [%g1 + %g3], %g3 ! LSU Group 213f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org cmp %g3, 0 ! IEU1 Group, stall 214f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org be 2f ! CTI 215f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org stb %g3, [%i2] ! LSU 216f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sll %g3, 8, %g4 ! IEU1 Group 217f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org add %l2, 1, %l2 ! IEU0 218f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org or %g4, 0xff, %g4 ! IEU0 Group 219f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org or %g2, %g3, %g2 ! IEU1 220f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org and %g2, %g4, %g2 ! IEU0 Group 221f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org2: add %l0, 1, %l0 ! IEU0 Group 222f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org add %i2, 1, %i2 ! IEU0 Group 223f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org cmp %l0, %l3 ! IEU1 Group 224f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org bne 1b ! CTI 225f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org add %i0, %l1, %i0 ! IEU0 Group 226f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org stb %g2, [%i3] ! LSU 227f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org srl %g2, 8, %g3 ! IEU0 Group 228f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org cmp %l2, %l3 ! IEU1 Group 229f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org bl,a 1f ! CTI 230f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org clr %g3 ! IEU0 231f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org1: stb %g3, [%i4] ! LSU Group 232f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ret ! CTI Group 233f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org restore %i1, 0x0, %o0 234