1cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; RUN: llc -march=mips -mcpu=mips32 < %s | FileCheck %s -check-prefix=ALL -check-prefix=32-CMOV 2cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; RUN: llc -march=mips -mcpu=mips32 -regalloc=basic < %s | FileCheck %s -check-prefix=ALL -check-prefix=32-CMOV 3cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; RUN: llc -march=mips -mcpu=mips32r2 < %s | FileCheck %s -check-prefix=ALL -check-prefix=32-CMOV 4cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; RUN: llc -march=mips -mcpu=mips32r6 < %s | FileCheck %s -check-prefix=ALL -check-prefix=32-CMP 5cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; RUN: llc -march=mips64el -mcpu=mips4 < %s | FileCheck %s -check-prefix=ALL -check-prefix=64-CMOV 6cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; RUN: llc -march=mips64el -mcpu=mips64 < %s | FileCheck %s -check-prefix=ALL -check-prefix=64-CMOV 7cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; RUN: llc -march=mips64el -mcpu=mips64r6 < %s | FileCheck %s -check-prefix=ALL -check-prefix=64-CMP 8ab8d53a56ae707db3f8490b7727eeb05140954c6Bruno Cardoso Lopes 9ab8d53a56ae707db3f8490b7727eeb05140954c6Bruno Cardoso Lopes@i1 = global [3 x i32] [i32 1, i32 2, i32 3], align 4 10ab8d53a56ae707db3f8490b7727eeb05140954c6Bruno Cardoso Lopes@i3 = common global i32* null, align 4 11ab8d53a56ae707db3f8490b7727eeb05140954c6Bruno Cardoso Lopes 12cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; ALL-LABEL: cmov1: 13cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 14cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: lw $[[R0:[0-9]+]], %got(i3) 15cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $[[R1:[0-9]+]], ${{[0-9]+}}, %got(i1) 16cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: movn $[[R0]], $[[R1]], $4 17cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: lw $2, 0($[[R0]]) 18cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 19cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: lw $[[R0:[0-9]+]], %got(i3) 20cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: addiu $[[R1:[0-9]+]], ${{[0-9]+}}, %got(i1) 21cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: selnez $[[T0:[0-9]+]], $[[R1]], $4 22cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: seleqz $[[T1:[0-9]+]], $[[R0]], $4 23cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: or $[[T2:[0-9]+]], $[[T0]], $[[T1]] 24cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: lw $2, 0($[[T2]]) 25cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 26cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: ldr $[[R0:[0-9]+]] 27cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: ld $[[R1:[0-9]+]], %got_disp(i1) 28cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: movn $[[R0]], $[[R1]], $4 29cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 30cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: ld $[[R0:[0-9]+]], %got_disp(i3)( 31cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: daddiu $[[R1:[0-9]+]], ${{[0-9]+}}, %got_disp(i1) 32cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: This sll works around an implementation detail in the code generator 33cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; (setcc's result is i32 so bits 32-63 are undefined). It's not really 34cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; needed. 35cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: sll $[[CC:[0-9]+]], $4, 0 36cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: selnez $[[T0:[0-9]+]], $[[R1]], $[[CC]] 37cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: seleqz $[[T1:[0-9]+]], $[[R0]], $[[CC]] 38cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: or $[[T2:[0-9]+]], $[[T0]], $[[T1]] 39cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: ld $2, 0($[[T2]]) 40cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 41ab8d53a56ae707db3f8490b7727eeb05140954c6Bruno Cardoso Lopesdefine i32* @cmov1(i32 %s) nounwind readonly { 42ab8d53a56ae707db3f8490b7727eeb05140954c6Bruno Cardoso Lopesentry: 43ab8d53a56ae707db3f8490b7727eeb05140954c6Bruno Cardoso Lopes %tobool = icmp ne i32 %s, 0 44ab8d53a56ae707db3f8490b7727eeb05140954c6Bruno Cardoso Lopes %tmp1 = load i32** @i3, align 4 45ab8d53a56ae707db3f8490b7727eeb05140954c6Bruno Cardoso Lopes %cond = select i1 %tobool, i32* getelementptr inbounds ([3 x i32]* @i1, i32 0, i32 0), i32* %tmp1 46ab8d53a56ae707db3f8490b7727eeb05140954c6Bruno Cardoso Lopes ret i32* %cond 47ab8d53a56ae707db3f8490b7727eeb05140954c6Bruno Cardoso Lopes} 48ab8d53a56ae707db3f8490b7727eeb05140954c6Bruno Cardoso Lopes 49342837d0dcf4c47765bbd3f9c031418824b12747Akira Hatanaka@c = global i32 1, align 4 50342837d0dcf4c47765bbd3f9c031418824b12747Akira Hatanaka@d = global i32 0, align 4 51342837d0dcf4c47765bbd3f9c031418824b12747Akira Hatanaka 52cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; ALL-LABEL: cmov2: 53cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 54cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $[[R1:[0-9]+]], ${{[0-9]+}}, %got(d) 55cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $[[R0:[0-9]+]], ${{[0-9]+}}, %got(c) 56cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: movn $[[R1]], $[[R0]], $4 57cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: lw $2, 0($[[R0]]) 58cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 59cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: addiu $[[R1:[0-9]+]], ${{[0-9]+}}, %got(d) 60cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: addiu $[[R0:[0-9]+]], ${{[0-9]+}}, %got(c) 61cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: selnez $[[T0:[0-9]+]], $[[R0]], $4 62cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: seleqz $[[T1:[0-9]+]], $[[R1]], $4 63cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: or $[[T2:[0-9]+]], $[[T0]], $[[T1]] 64cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: lw $2, 0($[[T2]]) 65cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 66cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV: daddiu $[[R1:[0-9]+]], ${{[0-9]+}}, %got_disp(d) 67cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV: daddiu $[[R0:[0-9]+]], ${{[0-9]+}}, %got_disp(c) 68cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV: movn $[[R1]], $[[R0]], $4 69cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 70cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: daddiu $[[R1:[0-9]+]], ${{[0-9]+}}, %got_disp(d) 71cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: daddiu $[[R0:[0-9]+]], ${{[0-9]+}}, %got_disp(c) 72cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: This sll works around an implementation detail in the code generator 73cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; (setcc's result is i32 so bits 32-63 are undefined). It's not really 74cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; needed. 75cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: sll $[[CC:[0-9]+]], $4, 0 76cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: selnez $[[T0:[0-9]+]], $[[R0]], $[[CC]] 77cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: seleqz $[[T1:[0-9]+]], $[[R1]], $[[CC]] 78cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: or $[[T2:[0-9]+]], $[[T0]], $[[T1]] 79cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: lw $2, 0($[[T2]]) 80cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 81342837d0dcf4c47765bbd3f9c031418824b12747Akira Hatanakadefine i32 @cmov2(i32 %s) nounwind readonly { 82342837d0dcf4c47765bbd3f9c031418824b12747Akira Hatanakaentry: 83342837d0dcf4c47765bbd3f9c031418824b12747Akira Hatanaka %tobool = icmp ne i32 %s, 0 84342837d0dcf4c47765bbd3f9c031418824b12747Akira Hatanaka %tmp1 = load i32* @c, align 4 85342837d0dcf4c47765bbd3f9c031418824b12747Akira Hatanaka %tmp2 = load i32* @d, align 4 86342837d0dcf4c47765bbd3f9c031418824b12747Akira Hatanaka %cond = select i1 %tobool, i32 %tmp1, i32 %tmp2 87342837d0dcf4c47765bbd3f9c031418824b12747Akira Hatanaka ret i32 %cond 88342837d0dcf4c47765bbd3f9c031418824b12747Akira Hatanaka} 89342837d0dcf4c47765bbd3f9c031418824b12747Akira Hatanaka 90cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; ALL-LABEL: cmov3: 91cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 92cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; We won't check the result register since we can't know if the move is first 93cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; or last. We do know it will be either one of two registers so we can at least 94cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; check that. 95cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 96cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV: xori $[[R0:[0-9]+]], $4, 234 97cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV: movz ${{[26]}}, $5, $[[R0]] 98cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 99cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: xori $[[CC:[0-9]+]], $4, 234 100cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: seleqz $[[T0:[0-9]+]], $5, $[[CC]] 101cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: selnez $[[T1:[0-9]+]], $6, $[[CC]] 102cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: or $2, $[[T0]], $[[T1]] 103cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 104cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV: xori $[[R0:[0-9]+]], $4, 234 105cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV: movz ${{[26]}}, $5, $[[R0]] 106cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 107cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: xori $[[CC:[0-9]+]], $4, 234 108cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: seleqz $[[T0:[0-9]+]], $5, $[[CC]] 109cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: selnez $[[T1:[0-9]+]], $6, $[[CC]] 110cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: or $2, $[[T0]], $[[T1]] 111cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 1122b409b65d45e2857dd842afc18b6b8c2da791a35Akira Hatanakadefine i32 @cmov3(i32 %a, i32 %b, i32 %c) nounwind readnone { 1132b409b65d45e2857dd842afc18b6b8c2da791a35Akira Hatanakaentry: 1142b409b65d45e2857dd842afc18b6b8c2da791a35Akira Hatanaka %cmp = icmp eq i32 %a, 234 1152b409b65d45e2857dd842afc18b6b8c2da791a35Akira Hatanaka %cond = select i1 %cmp, i32 %b, i32 %c 1162b409b65d45e2857dd842afc18b6b8c2da791a35Akira Hatanaka ret i32 %cond 1172b409b65d45e2857dd842afc18b6b8c2da791a35Akira Hatanaka} 1182b409b65d45e2857dd842afc18b6b8c2da791a35Akira Hatanaka 119cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; ALL-LABEL: cmov4: 120cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 121cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; We won't check the result register since we can't know if the move is first 122cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; or last. We do know it will be one of two registers so we can at least check 123cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; that. 124cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 125cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: xori $[[R0:[0-9]+]], $4, 234 126cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: lw $[[R1:2]], 16($sp) 127cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: lw $[[R2:3]], 20($sp) 128cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: movz $[[R1]], $6, $[[R0]] 129cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: movz $[[R2]], $7, $[[R0]] 130cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 131cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: xori $[[R0:[0-9]+]], $4, 234 132cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: lw $[[R1:[0-9]+]], 16($sp) 133cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: lw $[[R2:[0-9]+]], 20($sp) 134cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: seleqz $[[T0:[0-9]+]], $6, $[[R0]] 135cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: seleqz $[[T1:[0-9]+]], $7, $[[R0]] 136cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: selnez $[[T2:[0-9]+]], $[[R1]], $[[R0]] 137cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: selnez $[[T3:[0-9]+]], $[[R2]], $[[R0]] 138cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: or $2, $[[T0]], $[[T2]] 139cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: or $3, $[[T1]], $[[T3]] 140cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 141cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV: xori $[[R0:[0-9]+]], $4, 234 142cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV: movz ${{[26]}}, $5, $[[R0]] 143cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 144cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: xori $[[R0:[0-9]+]], $4, 234 145cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: seleqz $[[T0:[0-9]+]], $5, $[[R0]] 146cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: selnez $[[T1:[0-9]+]], $6, $[[R0]] 147cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: or $2, $[[T0]], $[[T1]] 148cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 1492b409b65d45e2857dd842afc18b6b8c2da791a35Akira Hatanakadefine i64 @cmov4(i32 %a, i64 %b, i64 %c) nounwind readnone { 1502b409b65d45e2857dd842afc18b6b8c2da791a35Akira Hatanakaentry: 1512b409b65d45e2857dd842afc18b6b8c2da791a35Akira Hatanaka %cmp = icmp eq i32 %a, 234 1522b409b65d45e2857dd842afc18b6b8c2da791a35Akira Hatanaka %cond = select i1 %cmp, i64 %b, i64 %c 1532b409b65d45e2857dd842afc18b6b8c2da791a35Akira Hatanaka ret i64 %cond 1542b409b65d45e2857dd842afc18b6b8c2da791a35Akira Hatanaka} 1552b409b65d45e2857dd842afc18b6b8c2da791a35Akira Hatanaka 156ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka; slti and conditional move. 157ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka; 158ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka; Check that, pattern 159ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka; (select (setgt a, N), t, f) 160ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka; turns into 161ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka; (movz t, (setlt a, N + 1), f) 162ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka; if N + 1 fits in 16-bit. 163ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka 164cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; ALL-LABEL: slti0: 165cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 166cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $[[I3:[0-9]+]], $zero, 3 167cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $[[I5:2]], $zero, 5 168cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: slti $[[R0:[0-9]+]], $4, 32767 169cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: movz $[[I5]], $[[I3]], $[[R0]] 170cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 171cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: addiu $[[I3:[0-9]+]], $zero, 3 172cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: addiu $[[I5:[0-9]+]], $zero, 5 173cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: slti $[[R0:[0-9]+]], $4, 32767 174cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: We can do better than this by using selccz to choose between +0 and +2 175cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: seleqz $[[T0:[0-9]+]], $[[I3]], $[[R0]] 176cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: selnez $[[T1:[0-9]+]], $[[I5]], $[[R0]] 177cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: or $2, $[[T0]], $[[T1]] 178cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 179cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: addiu $[[I3:[0-9]+]], $zero, 3 180cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: addiu $[[I5:2]], $zero, 5 181cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: slti $[[R0:[0-9]+]], $4, 32767 182cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: movz $[[I5]], $[[I3]], $[[R0]] 183cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 184cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: addiu $[[I3:[0-9]+]], $zero, 3 185cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: addiu $[[I5:[0-9]+]], $zero, 5 186cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: slti $[[R0:[0-9]+]], $4, 32767 187cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: We can do better than this by using selccz to choose between +0 and +2 188cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: seleqz $[[T0:[0-9]+]], $[[I3]], $[[R0]] 189cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: selnez $[[T1:[0-9]+]], $[[I5]], $[[R0]] 190cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: or $2, $[[T0]], $[[T1]] 191ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka 192ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakadefine i32 @slti0(i32 %a) { 193ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakaentry: 194ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka %cmp = icmp sgt i32 %a, 32766 19536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines %cond = select i1 %cmp, i32 3, i32 5 196ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka ret i32 %cond 197ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka} 198ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka 199cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; ALL-LABEL: slti1: 200cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 201cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $[[I7:[0-9]+]], $zero, 7 202cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $[[I5:2]], $zero, 5 203cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $[[R1:[0-9]+]], $zero, 32767 204cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: slt $[[R0:[0-9]+]], $[[R1]], $4 205cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: movn $[[I5]], $[[I7]], $[[R0]] 206cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 207cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: addiu $[[I7:[0-9]+]], $zero, 7 208cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: addiu $[[I5:[0-9]+]], $zero, 5 209cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: addiu $[[I32767:[0-9]+]], $zero, 32767 210cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: slt $[[R0:[0-9]+]], $[[I32767]], $4 211cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: We can do better than this by using selccz to choose between -0 and -2 212cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: selnez $[[T0:[0-9]+]], $[[I7]], $[[R0]] 213cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: seleqz $[[T1:[0-9]+]], $[[I5]], $[[R0]] 214cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: or $2, $[[T0]], $[[T1]] 215cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 216cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: addiu $[[I7:[0-9]+]], $zero, 7 217cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: addiu $[[I5:2]], $zero, 5 218cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: addiu $[[R1:[0-9]+]], $zero, 32767 219cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: slt $[[R0:[0-9]+]], $[[R1]], $4 220cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: movn $[[I5]], $[[I7]], $[[R0]] 221cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 222cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: addiu $[[I7:[0-9]+]], $zero, 7 223cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: addiu $[[I5:2]], $zero, 5 224cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: addiu $[[R1:[0-9]+]], $zero, 32767 225cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: slt $[[R0:[0-9]+]], $[[R1]], $4 226cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: We can do better than this by using selccz to choose between -0 and -2 227cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: selnez $[[T0:[0-9]+]], $[[I7]], $[[R0]] 228cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: seleqz $[[T1:[0-9]+]], $[[I5]], $[[R0]] 229cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: or $2, $[[T0]], $[[T1]] 230ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka 231ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakadefine i32 @slti1(i32 %a) { 232ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakaentry: 233ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka %cmp = icmp sgt i32 %a, 32767 234cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines %cond = select i1 %cmp, i32 7, i32 5 235ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka ret i32 %cond 236ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka} 237ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka 238cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; ALL-LABEL: slti2: 239cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 240cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $[[I3:[0-9]+]], $zero, 3 241cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $[[I5:2]], $zero, 5 242cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: slti $[[R0:[0-9]+]], $4, -32768 243cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: movz $[[I5]], $[[I3]], $[[R0]] 244cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 245cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: addiu $[[I3:[0-9]+]], $zero, 3 246cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: addiu $[[I5:[0-9]+]], $zero, 5 247cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: slti $[[R0:[0-9]+]], $4, -32768 248cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: We can do better than this by using selccz to choose between +0 and +2 249cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: seleqz $[[T0:[0-9]+]], $[[I3]], $[[R0]] 250cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: selnez $[[T1:[0-9]+]], $[[I5]], $[[R0]] 251cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: or $2, $[[T0]], $[[T1]] 252cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 253cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: addiu $[[I3:[0-9]+]], $zero, 3 254cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: addiu $[[I5:2]], $zero, 5 255cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: slti $[[R0:[0-9]+]], $4, -32768 256cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: movz $[[I5]], $[[I3]], $[[R0]] 257cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 258cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: addiu $[[I3:[0-9]+]], $zero, 3 259cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: addiu $[[I5:[0-9]+]], $zero, 5 260cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: slti $[[R0:[0-9]+]], $4, -32768 261cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: We can do better than this by using selccz to choose between +0 and +2 262cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: seleqz $[[T0:[0-9]+]], $[[I3]], $[[R0]] 263cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: selnez $[[T1:[0-9]+]], $[[I5]], $[[R0]] 264cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: or $2, $[[T0]], $[[T1]] 265ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka 266ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakadefine i32 @slti2(i32 %a) { 267ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakaentry: 268ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka %cmp = icmp sgt i32 %a, -32769 26936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines %cond = select i1 %cmp, i32 3, i32 5 270ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka ret i32 %cond 271ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka} 272ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka 273cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; ALL-LABEL: slti3: 274cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 275cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $[[I3:[0-9]+]], $zero, 3 276cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $[[I5:2]], $zero, 5 277cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: lui $[[R1:[0-9]+]], 65535 278cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: ori $[[R1]], $[[R1]], 32766 279cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: slt $[[R0:[0-9]+]], $[[R1]], $4 280cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: movn $[[I5]], $[[I3]], $[[R0]] 281cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 282cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: addiu $[[I3:[0-9]+]], $zero, 3 283cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: addiu $[[I5:[0-9]+]], $zero, 5 284cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: lui $[[IMM:[0-9]+]], 65535 285cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: ori $[[IMM]], $[[IMM]], 32766 286cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: slt $[[R0:[0-9]+]], $[[I32767]], $4 287cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: We can do better than this by using selccz to choose between -0 and -2 288cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: selnez $[[T0:[0-9]+]], $[[I3]], $[[R0]] 289cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: seleqz $[[T1:[0-9]+]], $[[I5]], $[[R0]] 290cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: or $2, $[[T0]], $[[T1]] 291cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 292cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: addiu $[[I3:[0-9]+]], $zero, 3 293cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: addiu $[[I5:2]], $zero, 5 294cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: lui $[[R1:[0-9]+]], 65535 295cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: ori $[[R1]], $[[R1]], 32766 296cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: slt $[[R0:[0-9]+]], $[[R1]], $4 297cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: movn $[[I5]], $[[I3]], $[[R0]] 298cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 299cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: addiu $[[I3:[0-9]+]], $zero, 3 300cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: addiu $[[I5:2]], $zero, 5 301cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: lui $[[IMM:[0-9]+]], 65535 302cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: ori $[[IMM]], $[[IMM]], 32766 303cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: slt $[[R0:[0-9]+]], $[[IMM]], $4 304cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: We can do better than this by using selccz to choose between -0 and -2 305cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: selnez $[[T0:[0-9]+]], $[[I3]], $[[R0]] 306cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: seleqz $[[T1:[0-9]+]], $[[I5]], $[[R0]] 307cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: or $2, $[[T0]], $[[T1]] 308ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka 309ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakadefine i32 @slti3(i32 %a) { 310ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakaentry: 311ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka %cmp = icmp sgt i32 %a, -32770 31236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines %cond = select i1 %cmp, i32 3, i32 5 313ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka ret i32 %cond 314ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka} 315ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka 316ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka; 64-bit patterns. 317ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka 318cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; ALL-LABEL: slti64_0: 319cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 320cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: slt $[[CC:[0-9]+]], $zero, $4 321cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $[[I32766:[0-9]+]], $zero, 32766 322cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: sltu $[[R1:[0-9]+]], $[[I32766]], $5 323cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: movz $[[CC:[0-9]+]], $[[R1]], $4 324cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $[[I5:[0-9]+]], $zero, 5 325cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $[[I4:3]], $zero, 4 326cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: movn $[[I4]], $[[I5]], $[[CC]] 327cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $2, $zero, 0 328cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 329cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: slt $[[CC0:[0-9]+]], $zero, $4 330cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: addiu $[[I32766:[0-9]+]], $zero, 32766 331cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: sltu $[[CC1:[0-9]+]], $[[I32766]], $5 332cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: selnez $[[CC2:[0-9]+]], $[[CC0]], $4 333cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: seleqz $[[CC3:[0-9]+]], $[[CC1]], $4 334cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP: or $[[CC:[0-9]+]], $[[CC3]], $[[CC2]] 335cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: addiu $[[I5:[0-9]+]], $zero, 5 336cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: addiu $[[I4:[0-9]+]], $zero, 4 337cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: seleqz $[[T0:[0-9]+]], $[[I4]], $[[CC]] 338cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: selnez $[[T1:[0-9]+]], $[[I5]], $[[CC]] 339cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: or $3, $[[T1]], $[[T0]] 340cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: addiu $2, $zero, 0 341cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 342cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: addiu $[[I5:[0-9]+]], $zero, 5 343cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: addiu $[[I4:2]], $zero, 4 344cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: slti $[[R0:[0-9]+]], $4, 32767 345cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: movz $[[I4]], $[[I5]], $[[R0]] 346cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 347cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: addiu $[[I5:[0-9]+]], $zero, 5 348cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: addiu $[[I4:[0-9]+]], $zero, 4 349cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: slti $[[R0:[0-9]+]], $4, 32767 350cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: We can do better than this by adding/subtracting the result of slti 351cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; to/from one of the constants. 352cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: seleqz $[[T0:[0-9]+]], $[[I5]], $[[R0]] 353cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: selnez $[[T1:[0-9]+]], $[[I4]], $[[R0]] 354cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: or $2, $[[T0]], $[[T1]] 355ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka 356ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakadefine i64 @slti64_0(i64 %a) { 357ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakaentry: 358ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka %cmp = icmp sgt i64 %a, 32766 359cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines %conv = select i1 %cmp, i64 5, i64 4 360ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka ret i64 %conv 361ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka} 362ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka 363cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; ALL-LABEL: slti64_1: 364cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 365cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: slt $[[CC:[0-9]+]], $zero, $4 366cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $[[I32766:[0-9]+]], $zero, 32767 367cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: sltu $[[R1:[0-9]+]], $[[I32766]], $5 368cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: movz $[[CC:[0-9]+]], $[[R1]], $4 369cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $[[I5:[0-9]+]], $zero, 5 370cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $[[I4:3]], $zero, 4 371cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: movn $[[I4]], $[[I5]], $[[CC]] 372cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $2, $zero, 0 373cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 374cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: slt $[[CC0:[0-9]+]], $zero, $4 375cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: addiu $[[I32766:[0-9]+]], $zero, 32767 376cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: sltu $[[CC1:[0-9]+]], $[[I32766]], $5 377cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: selnez $[[CC2:[0-9]+]], $[[CC0]], $4 378cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: seleqz $[[CC3:[0-9]+]], $[[CC1]], $4 379cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP: or $[[CC:[0-9]+]], $[[CC3]], $[[CC2]] 380cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: addiu $[[I5:[0-9]+]], $zero, 5 381cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: addiu $[[I4:[0-9]+]], $zero, 4 382cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: seleqz $[[T0:[0-9]+]], $[[I4]], $[[CC]] 383cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: selnez $[[T1:[0-9]+]], $[[I5]], $[[CC]] 384cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: or $3, $[[T1]], $[[T0]] 385cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: addiu $2, $zero, 0 386cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 387cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: daddiu $[[I5:[0-9]+]], $zero, 5 388cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: daddiu $[[I4:2]], $zero, 4 389cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: daddiu $[[R1:[0-9]+]], $zero, 32767 390cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: slt $[[R0:[0-9]+]], $[[R1]], $4 391cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: movn $[[I4]], $[[I5]], $[[R0]] 392cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 393cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: daddiu $[[I5:[0-9]+]], $zero, 5 394cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: daddiu $[[I4:2]], $zero, 4 395cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: daddiu $[[R1:[0-9]+]], $zero, 32767 396cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: slt $[[R0:[0-9]+]], $[[R1]], $4 397cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: We can do better than this by using selccz to choose between -0 and -2 398cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: selnez $[[T0:[0-9]+]], $[[I5]], $[[R0]] 399cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: seleqz $[[T1:[0-9]+]], $[[I4]], $[[R0]] 400cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: or $2, $[[T0]], $[[T1]] 401ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka 402ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakadefine i64 @slti64_1(i64 %a) { 403ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakaentry: 404ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka %cmp = icmp sgt i64 %a, 32767 405cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines %conv = select i1 %cmp, i64 5, i64 4 406ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka ret i64 %conv 407ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka} 408ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka 409cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; ALL-LABEL: slti64_2: 410cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 411cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: The 32-bit versions of this test are too complicated to reasonably 412cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; match at the moment. They do show some missing optimizations though 413cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; such as: 414cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; (movz $a, $b, (neg $c)) -> (movn $a, $b, $c) 415cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 416cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: addiu $[[I3:[0-9]+]], $zero, 3 417cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: addiu $[[I4:2]], $zero, 4 418cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: slti $[[R0:[0-9]+]], $4, -32768 419cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: movz $[[I4]], $[[I3]], $[[R0]] 420cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 421cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: addiu $[[I3:[0-9]+]], $zero, 3 422cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: addiu $[[I4:[0-9]+]], $zero, 4 423cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: slti $[[R0:[0-9]+]], $4, -32768 424cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: We can do better than this by adding/subtracting the result of slti 425cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; to/from one of the constants. 426cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: seleqz $[[T0:[0-9]+]], $[[I3]], $[[R0]] 427cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: selnez $[[T1:[0-9]+]], $[[I4]], $[[R0]] 428cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: or $2, $[[T0]], $[[T1]] 429ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka 430ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakadefine i64 @slti64_2(i64 %a) { 431ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakaentry: 432ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka %cmp = icmp sgt i64 %a, -32769 433ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka %conv = select i1 %cmp, i64 3, i64 4 434ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka ret i64 %conv 435ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka} 436ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka 437cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; ALL-LABEL: slti64_3: 438cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 439cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: The 32-bit versions of this test are too complicated to reasonably 440cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; match at the moment. They do show some missing optimizations though 441cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; such as: 442cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; (movz $a, $b, (neg $c)) -> (movn $a, $b, $c) 443cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 444cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: daddiu $[[I5:[0-9]+]], $zero, 5 445cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: daddiu $[[I4:2]], $zero, 4 446cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: daddiu $[[R1:[0-9]+]], ${{[0-9]+}}, 32766 447cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: slt $[[R0:[0-9]+]], $[[R1]], $4 448cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: movn $[[I4]], $[[I5]], $[[R0]] 449cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 450cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: daddiu $[[I5:[0-9]+]], $zero, 5 451cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: daddiu $[[I4:2]], $zero, 4 452cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: daddiu $[[R1:[0-9]+]], ${{[0-9]+}}, 32766 453cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: slt $[[R0:[0-9]+]], $[[R1]], $4 454cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: We can do better than this by using selccz to choose between -0 and -2 455cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: selnez $[[T0:[0-9]+]], $[[I5]], $[[R0]] 456cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: seleqz $[[T1:[0-9]+]], $[[I4]], $[[R0]] 457cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: or $2, $[[T0]], $[[T1]] 458ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka 459ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakadefine i64 @slti64_3(i64 %a) { 460ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakaentry: 461ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka %cmp = icmp sgt i64 %a, -32770 462cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines %conv = select i1 %cmp, i64 5, i64 4 463ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka ret i64 %conv 464ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka} 465ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka 466ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka; sltiu instructions. 467ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka 468cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; ALL-LABEL: sltiu0: 469cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 470cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $[[I3:[0-9]+]], $zero, 3 471cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $[[I5:2]], $zero, 5 472cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: sltiu $[[R0:[0-9]+]], $4, 32767 473cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: movz $[[I5]], $[[I3]], $[[R0]] 474cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 475cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: addiu $[[I3:[0-9]+]], $zero, 3 476cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: addiu $[[I5:[0-9]+]], $zero, 5 477cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: sltiu $[[R0:[0-9]+]], $4, 32767 478cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: We can do better than this by using selccz to choose between +0 and +2 479cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: seleqz $[[T0:[0-9]+]], $[[I3]], $[[R0]] 480cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: selnez $[[T1:[0-9]+]], $[[I5]], $[[R0]] 481cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: or $2, $[[T0]], $[[T1]] 482cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 483cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: addiu $[[I3:[0-9]+]], $zero, 3 484cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: addiu $[[I5:2]], $zero, 5 485cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: sltiu $[[R0:[0-9]+]], $4, 32767 486cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: movz $[[I5]], $[[I3]], $[[R0]] 487cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 488cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: addiu $[[I3:[0-9]+]], $zero, 3 489cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: addiu $[[I5:[0-9]+]], $zero, 5 490cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: sltiu $[[R0:[0-9]+]], $4, 32767 491cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: We can do better than this by using selccz to choose between +0 and +2 492cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: seleqz $[[T0:[0-9]+]], $[[I3]], $[[R0]] 493cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: selnez $[[T1:[0-9]+]], $[[I5]], $[[R0]] 494cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: or $2, $[[T0]], $[[T1]] 495ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka 496ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakadefine i32 @sltiu0(i32 %a) { 497ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakaentry: 498ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka %cmp = icmp ugt i32 %a, 32766 49936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines %cond = select i1 %cmp, i32 3, i32 5 500ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka ret i32 %cond 501ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka} 502ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka 503cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; ALL-LABEL: sltiu1: 504cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 505cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $[[I7:[0-9]+]], $zero, 7 506cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $[[I5:2]], $zero, 5 507cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $[[R1:[0-9]+]], $zero, 32767 508cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: sltu $[[R0:[0-9]+]], $[[R1]], $4 509cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: movn $[[I5]], $[[I7]], $[[R0]] 510cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 511cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: addiu $[[I7:[0-9]+]], $zero, 7 512cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: addiu $[[I5:[0-9]+]], $zero, 5 513cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: addiu $[[I32767:[0-9]+]], $zero, 32767 514cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: sltu $[[R0:[0-9]+]], $[[I32767]], $4 515cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: We can do better than this by using selccz to choose between -0 and -2 516cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: selnez $[[T0:[0-9]+]], $[[I7]], $[[R0]] 517cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: seleqz $[[T1:[0-9]+]], $[[I5]], $[[R0]] 518cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: or $2, $[[T0]], $[[T1]] 519cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 520cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: addiu $[[I7:[0-9]+]], $zero, 7 521cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: addiu $[[I5:2]], $zero, 5 522cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: addiu $[[R1:[0-9]+]], $zero, 32767 523cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: sltu $[[R0:[0-9]+]], $[[R1]], $4 524cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: movn $[[I5]], $[[I7]], $[[R0]] 525cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 526cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: addiu $[[I7:[0-9]+]], $zero, 7 527cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: addiu $[[I5:2]], $zero, 5 528cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: addiu $[[R1:[0-9]+]], $zero, 32767 529cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: sltu $[[R0:[0-9]+]], $[[R1]], $4 530cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: We can do better than this by using selccz to choose between -0 and -2 531cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: selnez $[[T0:[0-9]+]], $[[I7]], $[[R0]] 532cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: seleqz $[[T1:[0-9]+]], $[[I5]], $[[R0]] 533cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: or $2, $[[T0]], $[[T1]] 534ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka 535ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakadefine i32 @sltiu1(i32 %a) { 536ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakaentry: 537ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka %cmp = icmp ugt i32 %a, 32767 538cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines %cond = select i1 %cmp, i32 7, i32 5 539ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka ret i32 %cond 540ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka} 541ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka 542cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; ALL-LABEL: sltiu2: 543cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 544cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $[[I3:[0-9]+]], $zero, 3 545cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $[[I5:2]], $zero, 5 546cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: sltiu $[[R0:[0-9]+]], $4, -32768 547cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: movz $[[I5]], $[[I3]], $[[R0]] 548cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 549cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: addiu $[[I3:[0-9]+]], $zero, 3 550cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: addiu $[[I5:[0-9]+]], $zero, 5 551cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: sltiu $[[R0:[0-9]+]], $4, -32768 552cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: We can do better than this by using selccz to choose between +0 and +2 553cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: seleqz $[[T0:[0-9]+]], $[[I3]], $[[R0]] 554cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: selnez $[[T1:[0-9]+]], $[[I5]], $[[R0]] 555cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: or $2, $[[T0]], $[[T1]] 556cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 557cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: addiu $[[I3:[0-9]+]], $zero, 3 558cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: addiu $[[I5:2]], $zero, 5 559cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: sltiu $[[R0:[0-9]+]], $4, -32768 560cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: movz $[[I5]], $[[I3]], $[[R0]] 561cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 562cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: addiu $[[I3:[0-9]+]], $zero, 3 563cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: addiu $[[I5:[0-9]+]], $zero, 5 564cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: sltiu $[[R0:[0-9]+]], $4, -32768 565cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: We can do better than this by using selccz to choose between +0 and +2 566cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: seleqz $[[T0:[0-9]+]], $[[I3]], $[[R0]] 567cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: selnez $[[T1:[0-9]+]], $[[I5]], $[[R0]] 568cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: or $2, $[[T0]], $[[T1]] 569ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka 570ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakadefine i32 @sltiu2(i32 %a) { 571ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakaentry: 572ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka %cmp = icmp ugt i32 %a, -32769 57336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines %cond = select i1 %cmp, i32 3, i32 5 574ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka ret i32 %cond 575ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka} 576ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka 577cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; ALL-LABEL: sltiu3: 578cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 579cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $[[I3:[0-9]+]], $zero, 3 580cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $[[I5:2]], $zero, 5 581cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: lui $[[R1:[0-9]+]], 65535 582cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: ori $[[R1]], $[[R1]], 32766 583cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: sltu $[[R0:[0-9]+]], $[[R1]], $4 584cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: movn $[[I5]], $[[I3]], $[[R0]] 585cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 586cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: addiu $[[I3:[0-9]+]], $zero, 3 587cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: addiu $[[I5:[0-9]+]], $zero, 5 588cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: lui $[[IMM:[0-9]+]], 65535 589cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: ori $[[IMM]], $[[IMM]], 32766 590cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: sltu $[[R0:[0-9]+]], $[[I32767]], $4 591cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: We can do better than this by using selccz to choose between -0 and -2 592cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: selnez $[[T0:[0-9]+]], $[[I3]], $[[R0]] 593cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: seleqz $[[T1:[0-9]+]], $[[I5]], $[[R0]] 594cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: or $2, $[[T0]], $[[T1]] 595cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 596cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: addiu $[[I3:[0-9]+]], $zero, 3 597cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: addiu $[[I5:2]], $zero, 5 598cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: lui $[[R1:[0-9]+]], 65535 599cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: ori $[[R1]], $[[R1]], 32766 600cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: sltu $[[R0:[0-9]+]], $[[R1]], $4 601cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: movn $[[I5]], $[[I3]], $[[R0]] 602cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 603cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: addiu $[[I3:[0-9]+]], $zero, 3 604cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: addiu $[[I5:2]], $zero, 5 605cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: lui $[[IMM:[0-9]+]], 65535 606cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: ori $[[IMM]], $[[IMM]], 32766 607cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: sltu $[[R0:[0-9]+]], $[[IMM]], $4 608cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; FIXME: We can do better than this by using selccz to choose between -0 and -2 609cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: selnez $[[T0:[0-9]+]], $[[I3]], $[[R0]] 610cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: seleqz $[[T1:[0-9]+]], $[[I5]], $[[R0]] 611cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: or $2, $[[T0]], $[[T1]] 612ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka 613ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakadefine i32 @sltiu3(i32 %a) { 614ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanakaentry: 615ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka %cmp = icmp ugt i32 %a, -32770 61636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines %cond = select i1 %cmp, i32 3, i32 5 617ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka ret i32 %cond 618ee767fe2d2d742630d2fd40f91f3c54e35cc0668Akira Hatanaka} 61936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 62036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines; Check if 62136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines; (select (setxx a, N), x, x-1) or 62236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines; (select (setxx a, N), x-1, x) 62336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines; doesn't generate conditional moves 62436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines; for constant operands whose difference is |1| 62536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 62636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesdefine i32 @slti4(i32 %a) nounwind readnone { 62736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines %1 = icmp slt i32 %a, 7 62836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines %2 = select i1 %1, i32 4, i32 3 62936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines ret i32 %2 63036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines} 63136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 632cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; ALL-LABEL: slti4: 633cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 634cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: slti [[R1:\$[0-9]+]], $4, 7 635cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu $2, [[R1]], 3 636cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-NOT: movn 637cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 638cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: slti [[R1:\$[0-9]+]], $4, 7 639cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: addiu $2, [[R1]], 3 640cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-NOT: seleqz 641cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-NOT: selnez 642cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 643cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: slti [[R1:\$[0-9]+]], $4, 7 644cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: addiu $2, [[R1]], 3 645cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-NOT: movn 646cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 647cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: slti [[R1:\$[0-9]+]], $4, 7 648cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: addiu $2, [[R1]], 3 649cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-NOT: seleqz 650cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-NOT: selnez 65136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 65236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesdefine i32 @slti5(i32 %a) nounwind readnone { 65336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines %1 = icmp slt i32 %a, 7 65436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines %2 = select i1 %1, i32 -3, i32 -4 65536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines ret i32 %2 65636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines} 65736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 658cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; ALL-LABEL: slti5: 659cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 660cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: slti [[R1:\$[0-9]+]], $4, 7 661cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu [[R3:\$[0-9]+]], [[R2:\$[a-z0-9]+]], -4 662cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-NOT: movn 663cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 664cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: slti [[R1:\$[0-9]+]], $4, 7 665cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: addiu [[R3:\$[0-9]+]], [[R2:\$[a-z0-9]+]], -4 666cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-NOT: seleqz 667cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-NOT: selnez 668cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 669cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: slti [[R1:\$[0-9]+]], $4, 7 670cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: addiu [[R3:\$[0-9]+]], [[R2:\$[a-z0-9]+]], -4 671cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-NOT: movn 672cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 673cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: slti [[R1:\$[0-9]+]], $4, 7 674cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: addiu [[R3:\$[0-9]+]], [[R2:\$[a-z0-9]+]], -4 675cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-NOT: seleqz 676cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-NOT: selnez 67736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 67836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesdefine i32 @slti6(i32 %a) nounwind readnone { 67936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines %1 = icmp slt i32 %a, 7 68036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines %2 = select i1 %1, i32 3, i32 4 68136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines ret i32 %2 68236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines} 68336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 684cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; ALL-LABEL: slti6: 685cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 686cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: slti [[R1:\$[0-9]+]], $4, 7 687cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: xori [[R1]], [[R1]], 1 688cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-DAG: addiu [[R2:\$[0-9]+]], [[R1]], 3 689cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMOV-NOT: movn 690cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 691cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: slti [[R1:\$[0-9]+]], $4, 7 692cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: xori [[R1]], [[R1]], 1 693cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-DAG: addiu [[R2:\$[0-9]+]], [[R1]], 3 694cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-NOT: seleqz 695cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 32-CMP-NOT: selnez 696cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 697cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: slti [[R1:\$[0-9]+]], $4, 7 698cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: xori [[R1]], [[R1]], 1 699cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-DAG: addiu [[R2:\$[0-9]+]], [[R1]], 3 700cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMOV-NOT: movn 701cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 702cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: slti [[R1:\$[0-9]+]], $4, 7 703cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: xori [[R1]], [[R1]], 1 704cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-DAG: addiu [[R2:\$[0-9]+]], [[R1]], 3 705cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-NOT: seleqz 706cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines; 64-CMP-NOT: selnez 707