diff options
Diffstat (limited to 'llvm/test/Analysis/CostModel/SystemZ/cmp-ext-02.ll')
| -rw-r--r-- | llvm/test/Analysis/CostModel/SystemZ/cmp-ext-02.ll | 484 |
1 files changed, 484 insertions, 0 deletions
diff --git a/llvm/test/Analysis/CostModel/SystemZ/cmp-ext-02.ll b/llvm/test/Analysis/CostModel/SystemZ/cmp-ext-02.ll new file mode 100644 index 00000000000..d2c201d5d36 --- /dev/null +++ b/llvm/test/Analysis/CostModel/SystemZ/cmp-ext-02.ll @@ -0,0 +1,484 @@ +; RUN: opt < %s -cost-model -analyze -mtriple=systemz-unknown -mcpu=zEC12 | FileCheck %s +; +; Check the cost values for older subtargets that use an IPM sequence for +; extension of a compare result. + +define i8 @fun0(i8 %val1, i8 %val2) { + %cmp = icmp eq i8 %val1, %val2 + %v = sext i1 %cmp to i8 + ret i8 %v + +; CHECK: fun0 +; CHECK: cost of 3 for instruction: %cmp = icmp eq i8 %val1, %val2 +; CHECK: cost of 3 for instruction: %v = sext i1 %cmp to i8 +} + +define i16 @fun1(i8 %val1, i8 %val2) { + %cmp = icmp eq i8 %val1, %val2 + %v = sext i1 %cmp to i16 + ret i16 %v + +; CHECK: fun1 +; CHECK: cost of 3 for instruction: %cmp = icmp eq i8 %val1, %val2 +; CHECK: cost of 3 for instruction: %v = sext i1 %cmp to i16 +} + +define i32 @fun2(i8 %val1, i8 %val2) { + %cmp = icmp eq i8 %val1, %val2 + %v = sext i1 %cmp to i32 + ret i32 %v + +; CHECK: fun2 +; CHECK: cost of 3 for instruction: %cmp = icmp eq i8 %val1, %val2 +; CHECK: cost of 3 for instruction: %v = sext i1 %cmp to i32 +} + +define i64 @fun3(i8 %val1, i8 %val2) { + %cmp = icmp eq i8 %val1, %val2 + %v = sext i1 %cmp to i64 + ret i64 %v + +; CHECK: fun3 +; CHECK: cost of 3 for instruction: %cmp = icmp eq i8 %val1, %val2 +; CHECK: cost of 4 for instruction: %v = sext i1 %cmp to i64 +} + +define i8 @fun4(i16 %val1, i16 %val2) { + %cmp = icmp eq i16 %val1, %val2 + %v = sext i1 %cmp to i8 + ret i8 %v + +; CHECK: fun4 +; CHECK: cost of 3 for instruction: %cmp = icmp eq i16 %val1, %val2 +; CHECK: cost of 3 for instruction: %v = sext i1 %cmp to i8 +} + +define i16 @fun5(i16 %val1, i16 %val2) { + %cmp = icmp eq i16 %val1, %val2 + %v = sext i1 %cmp to i16 + ret i16 %v + +; CHECK: fun5 +; CHECK: cost of 3 for instruction: %cmp = icmp eq i16 %val1, %val2 +; CHECK: cost of 3 for instruction: %v = sext i1 %cmp to i16 +} + +define i32 @fun6(i16 %val1, i16 %val2) { + %cmp = icmp eq i16 %val1, %val2 + %v = sext i1 %cmp to i32 + ret i32 %v + +; CHECK: fun6 +; CHECK: cost of 3 for instruction: %cmp = icmp eq i16 %val1, %val2 +; CHECK: cost of 3 for instruction: %v = sext i1 %cmp to i32 +} + +define i64 @fun7(i16 %val1, i16 %val2) { + %cmp = icmp eq i16 %val1, %val2 + %v = sext i1 %cmp to i64 + ret i64 %v + +; CHECK: fun7 +; CHECK: cost of 3 for instruction: %cmp = icmp eq i16 %val1, %val2 +; CHECK: cost of 4 for instruction: %v = sext i1 %cmp to i64 +} + +define i8 @fun8(i32 %val1, i32 %val2) { + %cmp = icmp eq i32 %val1, %val2 + %v = sext i1 %cmp to i8 + ret i8 %v + +; CHECK: fun8 +; CHECK: cost of 1 for instruction: %cmp = icmp eq i32 %val1, %val2 +; CHECK: cost of 3 for instruction: %v = sext i1 %cmp to i8 +} + +define i16 @fun9(i32 %val1, i32 %val2) { + %cmp = icmp eq i32 %val1, %val2 + %v = sext i1 %cmp to i16 + ret i16 %v + +; CHECK: fun9 +; CHECK: cost of 1 for instruction: %cmp = icmp eq i32 %val1, %val2 +; CHECK: cost of 3 for instruction: %v = sext i1 %cmp to i16 +} + +define i32 @fun10(i32 %val1, i32 %val2) { + %cmp = icmp eq i32 %val1, %val2 + %v = sext i1 %cmp to i32 + ret i32 %v + +; CHECK: fun10 +; CHECK: cost of 1 for instruction: %cmp = icmp eq i32 %val1, %val2 +; CHECK: cost of 3 for instruction: %v = sext i1 %cmp to i32 +} + +define i64 @fun11(i32 %val1, i32 %val2) { + %cmp = icmp eq i32 %val1, %val2 + %v = sext i1 %cmp to i64 + ret i64 %v + +; CHECK: fun11 +; CHECK: cost of 1 for instruction: %cmp = icmp eq i32 %val1, %val2 +; CHECK: cost of 4 for instruction: %v = sext i1 %cmp to i64 +} + +define i8 @fun12(i64 %val1, i64 %val2) { + %cmp = icmp eq i64 %val1, %val2 + %v = sext i1 %cmp to i8 + ret i8 %v + +; CHECK: fun12 +; CHECK: cost of 1 for instruction: %cmp = icmp eq i64 %val1, %val2 +; CHECK: cost of 3 for instruction: %v = sext i1 %cmp to i8 +} + +define i16 @fun13(i64 %val1, i64 %val2) { + %cmp = icmp eq i64 %val1, %val2 + %v = sext i1 %cmp to i16 + ret i16 %v + +; CHECK: fun13 +; CHECK: cost of 1 for instruction: %cmp = icmp eq i64 %val1, %val2 +; CHECK: cost of 3 for instruction: %v = sext i1 %cmp to i16 +} + +define i32 @fun14(i64 %val1, i64 %val2) { + %cmp = icmp eq i64 %val1, %val2 + %v = sext i1 %cmp to i32 + ret i32 %v + +; CHECK: fun14 +; CHECK: cost of 1 for instruction: %cmp = icmp eq i64 %val1, %val2 +; CHECK: cost of 3 for instruction: %v = sext i1 %cmp to i32 +} + +define i64 @fun15(i64 %val1, i64 %val2) { + %cmp = icmp eq i64 %val1, %val2 + %v = sext i1 %cmp to i64 + ret i64 %v + +; CHECK: fun15 +; CHECK: cost of 1 for instruction: %cmp = icmp eq i64 %val1, %val2 +; CHECK: cost of 4 for instruction: %v = sext i1 %cmp to i64 +} + +define i8 @fun16(float %val1, float %val2) { + %cmp = fcmp ogt float %val1, %val2 + %v = sext i1 %cmp to i8 + ret i8 %v + +; CHECK: fun16 +; CHECK: cost of 1 for instruction: %cmp = fcmp ogt float %val1, %val2 +; CHECK: cost of 4 for instruction: %v = sext i1 %cmp to i8 +} + +define i16 @fun17(float %val1, float %val2) { + %cmp = fcmp ogt float %val1, %val2 + %v = sext i1 %cmp to i16 + ret i16 %v + +; CHECK: fun17 +; CHECK: cost of 1 for instruction: %cmp = fcmp ogt float %val1, %val2 +; CHECK: cost of 4 for instruction: %v = sext i1 %cmp to i16 +} + +define i32 @fun18(float %val1, float %val2) { + %cmp = fcmp ogt float %val1, %val2 + %v = sext i1 %cmp to i32 + ret i32 %v + +; CHECK: fun18 +; CHECK: cost of 1 for instruction: %cmp = fcmp ogt float %val1, %val2 +; CHECK: cost of 4 for instruction: %v = sext i1 %cmp to i32 +} + +define i64 @fun19(float %val1, float %val2) { + %cmp = fcmp ogt float %val1, %val2 + %v = sext i1 %cmp to i64 + ret i64 %v + +; CHECK: fun19 +; CHECK: cost of 1 for instruction: %cmp = fcmp ogt float %val1, %val2 +; CHECK: cost of 5 for instruction: %v = sext i1 %cmp to i64 +} + +define i8 @fun20(double %val1, double %val2) { + %cmp = fcmp ogt double %val1, %val2 + %v = sext i1 %cmp to i8 + ret i8 %v + +; CHECK: fun20 +; CHECK: cost of 1 for instruction: %cmp = fcmp ogt double %val1, %val2 +; CHECK: cost of 4 for instruction: %v = sext i1 %cmp to i8 +} + +define i16 @fun21(double %val1, double %val2) { + %cmp = fcmp ogt double %val1, %val2 + %v = sext i1 %cmp to i16 + ret i16 %v + +; CHECK: fun21 +; CHECK: cost of 1 for instruction: %cmp = fcmp ogt double %val1, %val2 +; CHECK: cost of 4 for instruction: %v = sext i1 %cmp to i16 +} + +define i32 @fun22(double %val1, double %val2) { + %cmp = fcmp ogt double %val1, %val2 + %v = sext i1 %cmp to i32 + ret i32 %v + +; CHECK: fun22 +; CHECK: cost of 1 for instruction: %cmp = fcmp ogt double %val1, %val2 +; CHECK: cost of 4 for instruction: %v = sext i1 %cmp to i32 +} + +define i64 @fun23(double %val1, double %val2) { + %cmp = fcmp ogt double %val1, %val2 + %v = sext i1 %cmp to i64 + ret i64 %v + +; CHECK: fun23 +; CHECK: cost of 1 for instruction: %cmp = fcmp ogt double %val1, %val2 +; CHECK: cost of 5 for instruction: %v = sext i1 %cmp to i64 +} + +define i8 @fun120(i8 %val1, i8 %val2) { + %cmp = icmp eq i8 %val1, %val2 + %v = zext i1 %cmp to i8 + ret i8 %v + +; CHECK: fun120 +; CHECK: cost of 3 for instruction: %cmp = icmp eq i8 %val1, %val2 +; CHECK: cost of 3 for instruction: %v = zext i1 %cmp to i8 +} + +define i16 @fun121(i8 %val1, i8 %val2) { + %cmp = icmp eq i8 %val1, %val2 + %v = zext i1 %cmp to i16 + ret i16 %v + +; CHECK: fun121 +; CHECK: cost of 3 for instruction: %cmp = icmp eq i8 %val1, %val2 +; CHECK: cost of 3 for instruction: %v = zext i1 %cmp to i16 +} + +define i32 @fun122(i8 %val1, i8 %val2) { + %cmp = icmp eq i8 %val1, %val2 + %v = zext i1 %cmp to i32 + ret i32 %v + +; CHECK: fun122 +; CHECK: cost of 3 for instruction: %cmp = icmp eq i8 %val1, %val2 +; CHECK: cost of 3 for instruction: %v = zext i1 %cmp to i32 +} + +define i64 @fun123(i8 %val1, i8 %val2) { + %cmp = icmp eq i8 %val1, %val2 + %v = zext i1 %cmp to i64 + ret i64 %v + +; CHECK: fun123 +; CHECK: cost of 3 for instruction: %cmp = icmp eq i8 %val1, %val2 +; CHECK: cost of 3 for instruction: %v = zext i1 %cmp to i64 +} + +define i8 @fun124(i16 %val1, i16 %val2) { + %cmp = icmp eq i16 %val1, %val2 + %v = zext i1 %cmp to i8 + ret i8 %v + +; CHECK: fun124 +; CHECK: cost of 3 for instruction: %cmp = icmp eq i16 %val1, %val2 +; CHECK: cost of 3 for instruction: %v = zext i1 %cmp to i8 +} + +define i16 @fun125(i16 %val1, i16 %val2) { + %cmp = icmp eq i16 %val1, %val2 + %v = zext i1 %cmp to i16 + ret i16 %v + +; CHECK: fun125 +; CHECK: cost of 3 for instruction: %cmp = icmp eq i16 %val1, %val2 +; CHECK: cost of 3 for instruction: %v = zext i1 %cmp to i16 +} + +define i32 @fun126(i16 %val1, i16 %val2) { + %cmp = icmp eq i16 %val1, %val2 + %v = zext i1 %cmp to i32 + ret i32 %v + +; CHECK: fun126 +; CHECK: cost of 3 for instruction: %cmp = icmp eq i16 %val1, %val2 +; CHECK: cost of 3 for instruction: %v = zext i1 %cmp to i32 +} + +define i64 @fun127(i16 %val1, i16 %val2) { + %cmp = icmp eq i16 %val1, %val2 + %v = zext i1 %cmp to i64 + ret i64 %v + +; CHECK: fun127 +; CHECK: cost of 3 for instruction: %cmp = icmp eq i16 %val1, %val2 +; CHECK: cost of 3 for instruction: %v = zext i1 %cmp to i64 +} + +define i8 @fun128(i32 %val1, i32 %val2) { + %cmp = icmp eq i32 %val1, %val2 + %v = zext i1 %cmp to i8 + ret i8 %v + +; CHECK: fun128 +; CHECK: cost of 1 for instruction: %cmp = icmp eq i32 %val1, %val2 +; CHECK: cost of 3 for instruction: %v = zext i1 %cmp to i8 +} + +define i16 @fun129(i32 %val1, i32 %val2) { + %cmp = icmp eq i32 %val1, %val2 + %v = zext i1 %cmp to i16 + ret i16 %v + +; CHECK: fun129 +; CHECK: cost of 1 for instruction: %cmp = icmp eq i32 %val1, %val2 +; CHECK: cost of 3 for instruction: %v = zext i1 %cmp to i16 +} + +define i32 @fun130(i32 %val1, i32 %val2) { + %cmp = icmp eq i32 %val1, %val2 + %v = zext i1 %cmp to i32 + ret i32 %v + +; CHECK: fun130 +; CHECK: cost of 1 for instruction: %cmp = icmp eq i32 %val1, %val2 +; CHECK: cost of 3 for instruction: %v = zext i1 %cmp to i32 +} + +define i64 @fun131(i32 %val1, i32 %val2) { + %cmp = icmp eq i32 %val1, %val2 + %v = zext i1 %cmp to i64 + ret i64 %v + +; CHECK: fun131 +; CHECK: cost of 1 for instruction: %cmp = icmp eq i32 %val1, %val2 +; CHECK: cost of 3 for instruction: %v = zext i1 %cmp to i64 +} + +define i8 @fun132(i64 %val1, i64 %val2) { + %cmp = icmp eq i64 %val1, %val2 + %v = zext i1 %cmp to i8 + ret i8 %v + +; CHECK: fun132 +; CHECK: cost of 1 for instruction: %cmp = icmp eq i64 %val1, %val2 +; CHECK: cost of 3 for instruction: %v = zext i1 %cmp to i8 +} + +define i16 @fun133(i64 %val1, i64 %val2) { + %cmp = icmp eq i64 %val1, %val2 + %v = zext i1 %cmp to i16 + ret i16 %v + +; CHECK: fun133 +; CHECK: cost of 1 for instruction: %cmp = icmp eq i64 %val1, %val2 +; CHECK: cost of 3 for instruction: %v = zext i1 %cmp to i16 +} + +define i32 @fun134(i64 %val1, i64 %val2) { + %cmp = icmp eq i64 %val1, %val2 + %v = zext i1 %cmp to i32 + ret i32 %v + +; CHECK: fun134 +; CHECK: cost of 1 for instruction: %cmp = icmp eq i64 %val1, %val2 +; CHECK: cost of 3 for instruction: %v = zext i1 %cmp to i32 +} + +define i64 @fun135(i64 %val1, i64 %val2) { + %cmp = icmp eq i64 %val1, %val2 + %v = zext i1 %cmp to i64 + ret i64 %v + +; CHECK: fun135 +; CHECK: cost of 1 for instruction: %cmp = icmp eq i64 %val1, %val2 +; CHECK: cost of 3 for instruction: %v = zext i1 %cmp to i64 +} + +define i8 @fun136(float %val1, float %val2) { + %cmp = fcmp ogt float %val1, %val2 + %v = zext i1 %cmp to i8 + ret i8 %v + +; CHECK: fun136 +; CHECK: cost of 1 for instruction: %cmp = fcmp ogt float %val1, %val2 +; CHECK: cost of 4 for instruction: %v = zext i1 %cmp to i8 +} + +define i16 @fun137(float %val1, float %val2) { + %cmp = fcmp ogt float %val1, %val2 + %v = zext i1 %cmp to i16 + ret i16 %v + +; CHECK: fun137 +; CHECK: cost of 1 for instruction: %cmp = fcmp ogt float %val1, %val2 +; CHECK: cost of 4 for instruction: %v = zext i1 %cmp to i16 +} + +define i32 @fun138(float %val1, float %val2) { + %cmp = fcmp ogt float %val1, %val2 + %v = zext i1 %cmp to i32 + ret i32 %v + +; CHECK: fun138 +; CHECK: cost of 1 for instruction: %cmp = fcmp ogt float %val1, %val2 +; CHECK: cost of 4 for instruction: %v = zext i1 %cmp to i32 +} + +define i64 @fun139(float %val1, float %val2) { + %cmp = fcmp ogt float %val1, %val2 + %v = zext i1 %cmp to i64 + ret i64 %v + +; CHECK: fun139 +; CHECK: cost of 1 for instruction: %cmp = fcmp ogt float %val1, %val2 +; CHECK: cost of 4 for instruction: %v = zext i1 %cmp to i64 +} + +define i8 @fun140(double %val1, double %val2) { + %cmp = fcmp ogt double %val1, %val2 + %v = zext i1 %cmp to i8 + ret i8 %v + +; CHECK: fun140 +; CHECK: cost of 1 for instruction: %cmp = fcmp ogt double %val1, %val2 +; CHECK: cost of 4 for instruction: %v = zext i1 %cmp to i8 +} + +define i16 @fun141(double %val1, double %val2) { + %cmp = fcmp ogt double %val1, %val2 + %v = zext i1 %cmp to i16 + ret i16 %v + +; CHECK: fun141 +; CHECK: cost of 1 for instruction: %cmp = fcmp ogt double %val1, %val2 +; CHECK: cost of 4 for instruction: %v = zext i1 %cmp to i16 +} + +define i32 @fun142(double %val1, double %val2) { + %cmp = fcmp ogt double %val1, %val2 + %v = zext i1 %cmp to i32 + ret i32 %v + +; CHECK: fun142 +; CHECK: cost of 1 for instruction: %cmp = fcmp ogt double %val1, %val2 +; CHECK: cost of 4 for instruction: %v = zext i1 %cmp to i32 +} + +define i64 @fun143(double %val1, double %val2) { + %cmp = fcmp ogt double %val1, %val2 + %v = zext i1 %cmp to i64 + ret i64 %v + +; CHECK: fun143 +; CHECK: cost of 1 for instruction: %cmp = fcmp ogt double %val1, %val2 +; CHECK: cost of 4 for instruction: %v = zext i1 %cmp to i64 +} |

