|
| 1 | +; REQUIRES: asserts |
| 2 | +; RUN: llc -mcpu=pwr9 -mtriple=powerpc64le-unknown-linux-gnu < %s \ |
| 3 | +; RUN: -verify-machineinstrs -debug 2>&1 | FileCheck %s |
| 4 | + |
| 5 | +define zeroext i1 @addiCmpiUnsign(i32 zeroext %x) { |
| 6 | +entry: |
| 7 | + %add = add nuw i32 10, %x |
| 8 | + %cmp = icmp ugt i32 %add, 100 |
| 9 | + ret i1 %cmp |
| 10 | + |
| 11 | +; CHECK: === addiCmpiUnsign |
| 12 | +; CHECK: Optimized lowered selection DAG: %bb.0 'addiCmpiUnsign:entry' |
| 13 | +; CHECK: [[REG1:t[0-9]+]]: i32 = truncate {{t[0-9]+}} |
| 14 | +; CHECK: [[REG2:t[0-9]+]]: i32 = add nuw [[REG1]], Constant:i32<10> |
| 15 | +; CHECK: {{t[0-9]+}}: i1 = setcc [[REG2]], Constant:i32<100>, setugt:ch |
| 16 | +} |
| 17 | + |
| 18 | +define zeroext i1 @addiCmpiSign(i32 signext %x) { |
| 19 | +entry: |
| 20 | + %add = add nsw i32 16, %x |
| 21 | + %cmp = icmp sgt i32 %add, 30 |
| 22 | + ret i1 %cmp |
| 23 | + |
| 24 | +; CHECK: === addiCmpiSign |
| 25 | +; CHECK: Optimized lowered selection DAG: %bb.0 'addiCmpiSign:entry' |
| 26 | +; CHECK: [[REG1:t[0-9]+]]: i32 = truncate {{t[0-9]+}} |
| 27 | +; CHECK: [[REG2:t[0-9]+]]: i32 = add nsw [[REG1]], Constant:i32<16> |
| 28 | +; CHECK: {{t[0-9]+}}: i1 = setcc [[REG2]], Constant:i32<30>, setgt:ch |
| 29 | +} |
| 30 | + |
| 31 | +define zeroext i1 @addiCmpiUnsignOverflow(i32 zeroext %x) { |
| 32 | +entry: |
| 33 | + %add = add nuw i32 110, %x |
| 34 | + %cmp = icmp ugt i32 %add, 100 |
| 35 | + ret i1 %cmp |
| 36 | + |
| 37 | +; CHECK: === addiCmpiUnsignOverflow |
| 38 | +; CHECK: Optimized lowered selection DAG: %bb.0 'addiCmpiUnsignOverflow:entry' |
| 39 | +; CHECK: [[REG1:t[0-9]+]]: i32 = truncate {{t[0-9]+}} |
| 40 | +; CHECK: [[REG2:t[0-9]+]]: i32 = add nuw [[REG1]], Constant:i32<110> |
| 41 | +; CHECK: {{t[0-9]+}}: i1 = setcc [[REG2]], Constant:i32<100>, setugt:ch |
| 42 | +} |
| 43 | + |
| 44 | +define zeroext i1 @addiCmpiSignOverflow(i16 signext %x) { |
| 45 | +entry: |
| 46 | + %add = add nsw i16 16, %x |
| 47 | + %cmp = icmp sgt i16 %add, -32767 |
| 48 | + ret i1 %cmp |
| 49 | + |
| 50 | +; CHECK: === addiCmpiSignOverflow |
| 51 | +; CHECK: Optimized lowered selection DAG: %bb.0 'addiCmpiSignOverflow:entry' |
| 52 | +; CHECK: [[REG1:t[0-9]+]]: i16 = truncate {{t[0-9]+}} |
| 53 | +; CHECK: [[REG2:t[0-9]+]]: i16 = add nsw [[REG1]], Constant:i16<16> |
| 54 | +; CHECK: {{t[0-9]+}}: i1 = setcc [[REG2]], Constant:i16<-32767>, setgt:ch |
| 55 | +} |
| 56 | + |
| 57 | +define zeroext i1 @addiCmpiNE(i16* %d) { |
| 58 | +entry: |
| 59 | + %0 = load i16, i16* %d, align 2 |
| 60 | + %dec = add i16 %0, 100 |
| 61 | + store i16 %dec, i16* %d, align 2 |
| 62 | + %tobool = icmp eq i16 %dec, 40 |
| 63 | + br i1 %tobool, label %land.end, label %land.rhs |
| 64 | + |
| 65 | +land.rhs: |
| 66 | + ret i1 true |
| 67 | + |
| 68 | +land.end: |
| 69 | + ret i1 false |
| 70 | + |
| 71 | +; CHECK: === addiCmpiNE |
| 72 | +; CHECK: Optimized lowered selection DAG: %bb.0 'addiCmpiNE:entry' |
| 73 | +; CHECK: [[REG1:t[0-9]+]]: i16,ch = load |
| 74 | +; CHECK: [[REG2:t[0-9]+]]: i16 = add [[REG1]], Constant:i16<100> |
| 75 | +; CHECK: {{t[0-9]+}}: i1 = setcc [[REG2]], Constant:i16<40>, seteq:ch |
| 76 | +} |
0 commit comments