1d45ba37dd5aeb6b37dd3091a4d6fa0a87f75fdf9Bill Buzbee%verify "executed" 2d45ba37dd5aeb6b37dd3091a4d6fa0a87f75fdf9Bill Buzbee%verify "basic lt, gt, eq */ 3d45ba37dd5aeb6b37dd3091a4d6fa0a87f75fdf9Bill Buzbee%verify "left arg NaN" 4d45ba37dd5aeb6b37dd3091a4d6fa0a87f75fdf9Bill Buzbee%verify "right arg NaN" 5d45ba37dd5aeb6b37dd3091a4d6fa0a87f75fdf9Bill Buzbee /* 6d45ba37dd5aeb6b37dd3091a4d6fa0a87f75fdf9Bill Buzbee * Compare two floating-point values. Puts 0, 1, or -1 into the 7d45ba37dd5aeb6b37dd3091a4d6fa0a87f75fdf9Bill Buzbee * destination register based on the results of the comparison. 8d45ba37dd5aeb6b37dd3091a4d6fa0a87f75fdf9Bill Buzbee * 9d45ba37dd5aeb6b37dd3091a4d6fa0a87f75fdf9Bill Buzbee * int compare(x, y) { 10d45ba37dd5aeb6b37dd3091a4d6fa0a87f75fdf9Bill Buzbee * if (x == y) { 11d45ba37dd5aeb6b37dd3091a4d6fa0a87f75fdf9Bill Buzbee * return 0; 12d45ba37dd5aeb6b37dd3091a4d6fa0a87f75fdf9Bill Buzbee * } else if (x > y) { 13d45ba37dd5aeb6b37dd3091a4d6fa0a87f75fdf9Bill Buzbee * return 1; 14d45ba37dd5aeb6b37dd3091a4d6fa0a87f75fdf9Bill Buzbee * } else if (x < y) { 15d45ba37dd5aeb6b37dd3091a4d6fa0a87f75fdf9Bill Buzbee * return -1; 16d45ba37dd5aeb6b37dd3091a4d6fa0a87f75fdf9Bill Buzbee * } else { 17d45ba37dd5aeb6b37dd3091a4d6fa0a87f75fdf9Bill Buzbee * return -1; 18d45ba37dd5aeb6b37dd3091a4d6fa0a87f75fdf9Bill Buzbee * } 19d45ba37dd5aeb6b37dd3091a4d6fa0a87f75fdf9Bill Buzbee * } 20d45ba37dd5aeb6b37dd3091a4d6fa0a87f75fdf9Bill Buzbee * On entry: 21d45ba37dd5aeb6b37dd3091a4d6fa0a87f75fdf9Bill Buzbee * r0 = &op1 [vBB] 22d45ba37dd5aeb6b37dd3091a4d6fa0a87f75fdf9Bill Buzbee * r1 = &op2 [vCC] 23d45ba37dd5aeb6b37dd3091a4d6fa0a87f75fdf9Bill Buzbee */ 24d45ba37dd5aeb6b37dd3091a4d6fa0a87f75fdf9Bill Buzbee /* op vAA, vBB, vCC */ 25d45ba37dd5aeb6b37dd3091a4d6fa0a87f75fdf9Bill Buzbee flds s0, [r0] @ d0<- vBB 26d45ba37dd5aeb6b37dd3091a4d6fa0a87f75fdf9Bill Buzbee flds s1, [r1] @ d1<- vCC 277fb2edd2f69d11435da8dc0f1c251349238863b3Bill Buzbee fcmps s0, s1 @ compare (vBB, vCC) 28d45ba37dd5aeb6b37dd3091a4d6fa0a87f75fdf9Bill Buzbee mvn r0, #0 @ r0<- -1 (default) 29d45ba37dd5aeb6b37dd3091a4d6fa0a87f75fdf9Bill Buzbee fmstat @ export status flags 30d45ba37dd5aeb6b37dd3091a4d6fa0a87f75fdf9Bill Buzbee movgt r0, #1 @ (greater than) r0<- 1 31d45ba37dd5aeb6b37dd3091a4d6fa0a87f75fdf9Bill Buzbee moveq r0, #0 @ (equal) r0<- 0 32d45ba37dd5aeb6b37dd3091a4d6fa0a87f75fdf9Bill Buzbee bx lr 33