| /* { dg-do compile } */ |
| /* { dg-options "-march=rv32gc_xtheadcondmov" { target { rv32 } } } */ |
| /* { dg-options "-march=rv64gc_xtheadcondmov" { target { rv64 } } } */ |
| /* { dg-skip-if "" { *-*-* } {"-O0" "-Os" "-Og" "-Oz" "-flto" } } */ |
| |
| /* addi aX, aX, -1000 |
| li aX, 10 |
| th.mvnez aX, aX, aX */ |
| int ConEmv_imm_imm_reg(int x, int y) |
| { |
| if (x == 1000) |
| return 10; |
| return y; |
| } |
| |
| /* addi aX, aX, -1000 |
| th.mveqz aX, aX, aX */ |
| int ConEmv_imm_reg_reg(int x, int y, int z) |
| { |
| if (x == 1000) |
| return y; |
| return z; |
| } |
| |
| /* sub aX, aX, aX |
| li aX, 10 |
| th.mvnez aX, aX, aX */ |
| int ConEmv_reg_imm_reg(int x, int y, int z) |
| { |
| if (x == y) |
| return 10; |
| return z; |
| } |
| |
| /* sub aX, aX, aX |
| th.mveqz aX, aX, aX */ |
| int ConEmv_reg_reg_reg(int x, int y, int z, int n) |
| { |
| if (x == y) |
| return z; |
| return n; |
| } |
| |
| /* addi aX, aX, -1000 |
| li aX, 9998336 |
| addi aX, aX, 1664 |
| th.mveqz aX, aX, aX */ |
| int ConNmv_imm_imm_reg(int x, int y) |
| { |
| if (x != 1000) |
| return 10000000; |
| return y; |
| } |
| |
| /* addi aX, aX, 1000 |
| th.mvnez aX, aX, aX */ |
| int ConNmv_imm_reg_reg(int x, int y, int z) |
| { |
| if (x != 1000) |
| return y; |
| return z; |
| } |
| |
| /* sub aX, aX, aX |
| li aX, 10 |
| th.mveqz aX, aX, aX */ |
| int ConNmv_reg_imm_reg(int x, int y, int z) |
| { |
| if (x != y) |
| return 10; |
| return z; |
| } |
| |
| /* sub aX, aX, aX |
| th.mvnez aX, aX, aX */ |
| int ConNmv_reg_reg_reg(int x, int y, int z, int n) |
| { |
| if (x != y) |
| return z; |
| return n; |
| } |
| |
| /* { dg-final { scan-assembler-times "addi\t" 5 } } */ |
| /* { dg-final { scan-assembler-times "li\t" 4 } } */ |
| /* { dg-final { scan-assembler-times "sub\t" 4 } } */ |
| /* { dg-final { scan-assembler-times "th.mveqz\t" 4 } } */ |
| /* { dg-final { scan-assembler-times "th.mvnez\t" 4 } } */ |