118269c0fSSam Ravnborg/* 218269c0fSSam Ravnborg * strncmp.S: Hand optimized Sparc assembly of GCC output from GNU libc 318269c0fSSam Ravnborg * generic strncmp routine. 418269c0fSSam Ravnborg */ 518269c0fSSam Ravnborg 618269c0fSSam Ravnborg .text 718269c0fSSam Ravnborg .align 4 818269c0fSSam Ravnborg .global __strncmp, strncmp 918269c0fSSam Ravnborg__strncmp: 1018269c0fSSam Ravnborgstrncmp: 1118269c0fSSam Ravnborg mov %o0, %g3 1218269c0fSSam Ravnborg mov 0, %o3 1318269c0fSSam Ravnborg 1418269c0fSSam Ravnborg cmp %o2, 3 1518269c0fSSam Ravnborg ble 7f 1618269c0fSSam Ravnborg mov 0, %g2 1718269c0fSSam Ravnborg 1818269c0fSSam Ravnborg sra %o2, 2, %o4 1918269c0fSSam Ravnborg ldub [%g3], %o3 2018269c0fSSam Ravnborg 2118269c0fSSam Ravnborg0: 2218269c0fSSam Ravnborg ldub [%o1], %g2 2318269c0fSSam Ravnborg add %g3, 1, %g3 2418269c0fSSam Ravnborg and %o3, 0xff, %o0 2518269c0fSSam Ravnborg 2618269c0fSSam Ravnborg cmp %o0, 0 2718269c0fSSam Ravnborg be 8f 2818269c0fSSam Ravnborg add %o1, 1, %o1 2918269c0fSSam Ravnborg 3018269c0fSSam Ravnborg cmp %o0, %g2 3118269c0fSSam Ravnborg be,a 1f 3218269c0fSSam Ravnborg ldub [%g3], %o3 3318269c0fSSam Ravnborg 3418269c0fSSam Ravnborg retl 3518269c0fSSam Ravnborg sub %o0, %g2, %o0 3618269c0fSSam Ravnborg 3718269c0fSSam Ravnborg1: 3818269c0fSSam Ravnborg ldub [%o1], %g2 3918269c0fSSam Ravnborg add %g3,1, %g3 4018269c0fSSam Ravnborg and %o3, 0xff, %o0 4118269c0fSSam Ravnborg 4218269c0fSSam Ravnborg cmp %o0, 0 4318269c0fSSam Ravnborg be 8f 4418269c0fSSam Ravnborg add %o1, 1, %o1 4518269c0fSSam Ravnborg 4618269c0fSSam Ravnborg cmp %o0, %g2 4718269c0fSSam Ravnborg be,a 1f 4818269c0fSSam Ravnborg ldub [%g3], %o3 4918269c0fSSam Ravnborg 5018269c0fSSam Ravnborg retl 5118269c0fSSam Ravnborg sub %o0, %g2, %o0 5218269c0fSSam Ravnborg 5318269c0fSSam Ravnborg1: 5418269c0fSSam Ravnborg ldub [%o1], %g2 5518269c0fSSam Ravnborg add %g3, 1, %g3 5618269c0fSSam Ravnborg and %o3, 0xff, %o0 5718269c0fSSam Ravnborg 5818269c0fSSam Ravnborg cmp %o0, 0 5918269c0fSSam Ravnborg be 8f 6018269c0fSSam Ravnborg add %o1, 1, %o1 6118269c0fSSam Ravnborg 6218269c0fSSam Ravnborg cmp %o0, %g2 6318269c0fSSam Ravnborg be,a 1f 6418269c0fSSam Ravnborg ldub [%g3], %o3 6518269c0fSSam Ravnborg 6618269c0fSSam Ravnborg retl 6718269c0fSSam Ravnborg sub %o0, %g2, %o0 6818269c0fSSam Ravnborg 6918269c0fSSam Ravnborg1: 7018269c0fSSam Ravnborg ldub [%o1], %g2 7118269c0fSSam Ravnborg add %g3, 1, %g3 7218269c0fSSam Ravnborg and %o3, 0xff, %o0 7318269c0fSSam Ravnborg 7418269c0fSSam Ravnborg cmp %o0, 0 7518269c0fSSam Ravnborg be 8f 7618269c0fSSam Ravnborg add %o1, 1, %o1 7718269c0fSSam Ravnborg 7818269c0fSSam Ravnborg cmp %o0, %g2 7918269c0fSSam Ravnborg be 1f 8018269c0fSSam Ravnborg add %o4, -1, %o4 8118269c0fSSam Ravnborg 8218269c0fSSam Ravnborg retl 8318269c0fSSam Ravnborg sub %o0, %g2, %o0 8418269c0fSSam Ravnborg 8518269c0fSSam Ravnborg1: 8618269c0fSSam Ravnborg 8718269c0fSSam Ravnborg cmp %o4, 0 8818269c0fSSam Ravnborg bg,a 0b 8918269c0fSSam Ravnborg ldub [%g3], %o3 9018269c0fSSam Ravnborg 9118269c0fSSam Ravnborg b 7f 9218269c0fSSam Ravnborg and %o2, 3, %o2 9318269c0fSSam Ravnborg 9418269c0fSSam Ravnborg9: 9518269c0fSSam Ravnborg ldub [%o1], %g2 9618269c0fSSam Ravnborg add %g3, 1, %g3 9718269c0fSSam Ravnborg and %o3, 0xff, %o0 9818269c0fSSam Ravnborg 9918269c0fSSam Ravnborg cmp %o0, 0 10018269c0fSSam Ravnborg be 8f 10118269c0fSSam Ravnborg add %o1, 1, %o1 10218269c0fSSam Ravnborg 10318269c0fSSam Ravnborg cmp %o0, %g2 10418269c0fSSam Ravnborg be 7f 10518269c0fSSam Ravnborg add %o2, -1, %o2 10618269c0fSSam Ravnborg 10718269c0fSSam Ravnborg8: 10818269c0fSSam Ravnborg retl 10918269c0fSSam Ravnborg sub %o0, %g2, %o0 11018269c0fSSam Ravnborg 11118269c0fSSam Ravnborg7: 11218269c0fSSam Ravnborg cmp %o2, 0 11318269c0fSSam Ravnborg bg,a 9b 11418269c0fSSam Ravnborg ldub [%g3], %o3 11518269c0fSSam Ravnborg 11618269c0fSSam Ravnborg and %g2, 0xff, %o0 11718269c0fSSam Ravnborg retl 11818269c0fSSam Ravnborg sub %o3, %o0, %o0 119