| OLD | NEW |
| 1 ; Test if we can read compare instructions. | 1 ; Test if we can read compare instructions. |
| 2 | 2 |
| 3 ; RUN: %p2i -i %s --insts | FileCheck %s | 3 ; RUN: %p2i -i %s --insts | FileCheck %s |
| 4 ; RUN: %if --need=allow_disable_ir_gen --command \ | 4 ; RUN: %if --need=allow_disable_ir_gen --command \ |
| 5 ; RUN: %p2i -i %s --args -notranslate -timing -no-ir-gen \ | 5 ; RUN: %p2i -i %s --args -notranslate -timing -no-ir-gen \ |
| 6 ; RUN: | %if --need=allow_disable_ir_gen --command \ | 6 ; RUN: | %if --need=allow_disable_ir_gen --command \ |
| 7 ; RUN: FileCheck --check-prefix=NOIR %s | 7 ; RUN: FileCheck --check-prefix=NOIR %s |
| 8 | 8 |
| 9 define i1 @IcmpI1(i32 %p1, i32 %p2) { | 9 define internal i1 @IcmpI1(i32 %p1, i32 %p2) { |
| 10 entry: | 10 entry: |
| 11 %a1 = trunc i32 %p1 to i1 | 11 %a1 = trunc i32 %p1 to i1 |
| 12 %a2 = trunc i32 %p2 to i1 | 12 %a2 = trunc i32 %p2 to i1 |
| 13 %veq = icmp eq i1 %a1, %a2 | 13 %veq = icmp eq i1 %a1, %a2 |
| 14 %vne = icmp ne i1 %a1, %a2 | 14 %vne = icmp ne i1 %a1, %a2 |
| 15 %vugt = icmp ugt i1 %a1, %a2 | 15 %vugt = icmp ugt i1 %a1, %a2 |
| 16 %vuge = icmp uge i1 %a1, %a2 | 16 %vuge = icmp uge i1 %a1, %a2 |
| 17 %vult = icmp ult i1 %a1, %a2 | 17 %vult = icmp ult i1 %a1, %a2 |
| 18 %vule = icmp ule i1 %a1, %a2 | 18 %vule = icmp ule i1 %a1, %a2 |
| 19 %vsgt = icmp sgt i1 %a1, %a2 | 19 %vsgt = icmp sgt i1 %a1, %a2 |
| 20 %vsge = icmp sge i1 %a1, %a2 | 20 %vsge = icmp sge i1 %a1, %a2 |
| 21 %vslt = icmp slt i1 %a1, %a2 | 21 %vslt = icmp slt i1 %a1, %a2 |
| 22 %vsle = icmp sle i1 %a1, %a2 | 22 %vsle = icmp sle i1 %a1, %a2 |
| 23 ret i1 %veq | 23 ret i1 %veq |
| 24 } | 24 } |
| 25 | 25 |
| 26 ; CHECK: define i1 @IcmpI1(i32 %p1, i32 %p2) { | 26 ; CHECK: define internal i1 @IcmpI1(i32 %p1, i32 %p2) { |
| 27 ; CHECK-NEXT: entry: | 27 ; CHECK-NEXT: entry: |
| 28 ; CHECK-NEXT: %a1 = trunc i32 %p1 to i1 | 28 ; CHECK-NEXT: %a1 = trunc i32 %p1 to i1 |
| 29 ; CHECK-NEXT: %a2 = trunc i32 %p2 to i1 | 29 ; CHECK-NEXT: %a2 = trunc i32 %p2 to i1 |
| 30 ; CHECK-NEXT: %veq = icmp eq i1 %a1, %a2 | 30 ; CHECK-NEXT: %veq = icmp eq i1 %a1, %a2 |
| 31 ; CHECK-NEXT: %vne = icmp ne i1 %a1, %a2 | 31 ; CHECK-NEXT: %vne = icmp ne i1 %a1, %a2 |
| 32 ; CHECK-NEXT: %vugt = icmp ugt i1 %a1, %a2 | 32 ; CHECK-NEXT: %vugt = icmp ugt i1 %a1, %a2 |
| 33 ; CHECK-NEXT: %vuge = icmp uge i1 %a1, %a2 | 33 ; CHECK-NEXT: %vuge = icmp uge i1 %a1, %a2 |
| 34 ; CHECK-NEXT: %vult = icmp ult i1 %a1, %a2 | 34 ; CHECK-NEXT: %vult = icmp ult i1 %a1, %a2 |
| 35 ; CHECK-NEXT: %vule = icmp ule i1 %a1, %a2 | 35 ; CHECK-NEXT: %vule = icmp ule i1 %a1, %a2 |
| 36 ; CHECK-NEXT: %vsgt = icmp sgt i1 %a1, %a2 | 36 ; CHECK-NEXT: %vsgt = icmp sgt i1 %a1, %a2 |
| 37 ; CHECK-NEXT: %vsge = icmp sge i1 %a1, %a2 | 37 ; CHECK-NEXT: %vsge = icmp sge i1 %a1, %a2 |
| 38 ; CHECK-NEXT: %vslt = icmp slt i1 %a1, %a2 | 38 ; CHECK-NEXT: %vslt = icmp slt i1 %a1, %a2 |
| 39 ; CHECK-NEXT: %vsle = icmp sle i1 %a1, %a2 | 39 ; CHECK-NEXT: %vsle = icmp sle i1 %a1, %a2 |
| 40 ; CHECK-NEXT: ret i1 %veq | 40 ; CHECK-NEXT: ret i1 %veq |
| 41 ; CHECK-NEXT: } | 41 ; CHECK-NEXT: } |
| 42 | 42 |
| 43 define i1 @IcmpI8(i32 %p1, i32 %p2) { | 43 define internal i1 @IcmpI8(i32 %p1, i32 %p2) { |
| 44 entry: | 44 entry: |
| 45 %a1 = trunc i32 %p1 to i8 | 45 %a1 = trunc i32 %p1 to i8 |
| 46 %a2 = trunc i32 %p2 to i8 | 46 %a2 = trunc i32 %p2 to i8 |
| 47 %veq = icmp eq i8 %a1, %a2 | 47 %veq = icmp eq i8 %a1, %a2 |
| 48 %vne = icmp ne i8 %a1, %a2 | 48 %vne = icmp ne i8 %a1, %a2 |
| 49 %vugt = icmp ugt i8 %a1, %a2 | 49 %vugt = icmp ugt i8 %a1, %a2 |
| 50 %vuge = icmp uge i8 %a1, %a2 | 50 %vuge = icmp uge i8 %a1, %a2 |
| 51 %vult = icmp ult i8 %a1, %a2 | 51 %vult = icmp ult i8 %a1, %a2 |
| 52 %vule = icmp ule i8 %a1, %a2 | 52 %vule = icmp ule i8 %a1, %a2 |
| 53 %vsgt = icmp sgt i8 %a1, %a2 | 53 %vsgt = icmp sgt i8 %a1, %a2 |
| 54 %vsge = icmp sge i8 %a1, %a2 | 54 %vsge = icmp sge i8 %a1, %a2 |
| 55 %vslt = icmp slt i8 %a1, %a2 | 55 %vslt = icmp slt i8 %a1, %a2 |
| 56 %vsle = icmp sle i8 %a1, %a2 | 56 %vsle = icmp sle i8 %a1, %a2 |
| 57 ret i1 %veq | 57 ret i1 %veq |
| 58 } | 58 } |
| 59 | 59 |
| 60 ; CHECK-NEXT: define i1 @IcmpI8(i32 %p1, i32 %p2) { | 60 ; CHECK-NEXT: define internal i1 @IcmpI8(i32 %p1, i32 %p2) { |
| 61 ; CHECK-NEXT: entry: | 61 ; CHECK-NEXT: entry: |
| 62 ; CHECK-NEXT: %a1 = trunc i32 %p1 to i8 | 62 ; CHECK-NEXT: %a1 = trunc i32 %p1 to i8 |
| 63 ; CHECK-NEXT: %a2 = trunc i32 %p2 to i8 | 63 ; CHECK-NEXT: %a2 = trunc i32 %p2 to i8 |
| 64 ; CHECK-NEXT: %veq = icmp eq i8 %a1, %a2 | 64 ; CHECK-NEXT: %veq = icmp eq i8 %a1, %a2 |
| 65 ; CHECK-NEXT: %vne = icmp ne i8 %a1, %a2 | 65 ; CHECK-NEXT: %vne = icmp ne i8 %a1, %a2 |
| 66 ; CHECK-NEXT: %vugt = icmp ugt i8 %a1, %a2 | 66 ; CHECK-NEXT: %vugt = icmp ugt i8 %a1, %a2 |
| 67 ; CHECK-NEXT: %vuge = icmp uge i8 %a1, %a2 | 67 ; CHECK-NEXT: %vuge = icmp uge i8 %a1, %a2 |
| 68 ; CHECK-NEXT: %vult = icmp ult i8 %a1, %a2 | 68 ; CHECK-NEXT: %vult = icmp ult i8 %a1, %a2 |
| 69 ; CHECK-NEXT: %vule = icmp ule i8 %a1, %a2 | 69 ; CHECK-NEXT: %vule = icmp ule i8 %a1, %a2 |
| 70 ; CHECK-NEXT: %vsgt = icmp sgt i8 %a1, %a2 | 70 ; CHECK-NEXT: %vsgt = icmp sgt i8 %a1, %a2 |
| 71 ; CHECK-NEXT: %vsge = icmp sge i8 %a1, %a2 | 71 ; CHECK-NEXT: %vsge = icmp sge i8 %a1, %a2 |
| 72 ; CHECK-NEXT: %vslt = icmp slt i8 %a1, %a2 | 72 ; CHECK-NEXT: %vslt = icmp slt i8 %a1, %a2 |
| 73 ; CHECK-NEXT: %vsle = icmp sle i8 %a1, %a2 | 73 ; CHECK-NEXT: %vsle = icmp sle i8 %a1, %a2 |
| 74 ; CHECK-NEXT: ret i1 %veq | 74 ; CHECK-NEXT: ret i1 %veq |
| 75 ; CHECK-NEXT: } | 75 ; CHECK-NEXT: } |
| 76 | 76 |
| 77 define i1 @IcmpI16(i32 %p1, i32 %p2) { | 77 define internal i1 @IcmpI16(i32 %p1, i32 %p2) { |
| 78 entry: | 78 entry: |
| 79 %a1 = trunc i32 %p1 to i16 | 79 %a1 = trunc i32 %p1 to i16 |
| 80 %a2 = trunc i32 %p2 to i16 | 80 %a2 = trunc i32 %p2 to i16 |
| 81 %veq = icmp eq i16 %a1, %a2 | 81 %veq = icmp eq i16 %a1, %a2 |
| 82 %vne = icmp ne i16 %a1, %a2 | 82 %vne = icmp ne i16 %a1, %a2 |
| 83 %vugt = icmp ugt i16 %a1, %a2 | 83 %vugt = icmp ugt i16 %a1, %a2 |
| 84 %vuge = icmp uge i16 %a1, %a2 | 84 %vuge = icmp uge i16 %a1, %a2 |
| 85 %vult = icmp ult i16 %a1, %a2 | 85 %vult = icmp ult i16 %a1, %a2 |
| 86 %vule = icmp ule i16 %a1, %a2 | 86 %vule = icmp ule i16 %a1, %a2 |
| 87 %vsgt = icmp sgt i16 %a1, %a2 | 87 %vsgt = icmp sgt i16 %a1, %a2 |
| 88 %vsge = icmp sge i16 %a1, %a2 | 88 %vsge = icmp sge i16 %a1, %a2 |
| 89 %vslt = icmp slt i16 %a1, %a2 | 89 %vslt = icmp slt i16 %a1, %a2 |
| 90 %vsle = icmp sle i16 %a1, %a2 | 90 %vsle = icmp sle i16 %a1, %a2 |
| 91 ret i1 %veq | 91 ret i1 %veq |
| 92 } | 92 } |
| 93 | 93 |
| 94 ; CHECK-NEXT: define i1 @IcmpI16(i32 %p1, i32 %p2) { | 94 ; CHECK-NEXT: define internal i1 @IcmpI16(i32 %p1, i32 %p2) { |
| 95 ; CHECK-NEXT: entry: | 95 ; CHECK-NEXT: entry: |
| 96 ; CHECK-NEXT: %a1 = trunc i32 %p1 to i16 | 96 ; CHECK-NEXT: %a1 = trunc i32 %p1 to i16 |
| 97 ; CHECK-NEXT: %a2 = trunc i32 %p2 to i16 | 97 ; CHECK-NEXT: %a2 = trunc i32 %p2 to i16 |
| 98 ; CHECK-NEXT: %veq = icmp eq i16 %a1, %a2 | 98 ; CHECK-NEXT: %veq = icmp eq i16 %a1, %a2 |
| 99 ; CHECK-NEXT: %vne = icmp ne i16 %a1, %a2 | 99 ; CHECK-NEXT: %vne = icmp ne i16 %a1, %a2 |
| 100 ; CHECK-NEXT: %vugt = icmp ugt i16 %a1, %a2 | 100 ; CHECK-NEXT: %vugt = icmp ugt i16 %a1, %a2 |
| 101 ; CHECK-NEXT: %vuge = icmp uge i16 %a1, %a2 | 101 ; CHECK-NEXT: %vuge = icmp uge i16 %a1, %a2 |
| 102 ; CHECK-NEXT: %vult = icmp ult i16 %a1, %a2 | 102 ; CHECK-NEXT: %vult = icmp ult i16 %a1, %a2 |
| 103 ; CHECK-NEXT: %vule = icmp ule i16 %a1, %a2 | 103 ; CHECK-NEXT: %vule = icmp ule i16 %a1, %a2 |
| 104 ; CHECK-NEXT: %vsgt = icmp sgt i16 %a1, %a2 | 104 ; CHECK-NEXT: %vsgt = icmp sgt i16 %a1, %a2 |
| 105 ; CHECK-NEXT: %vsge = icmp sge i16 %a1, %a2 | 105 ; CHECK-NEXT: %vsge = icmp sge i16 %a1, %a2 |
| 106 ; CHECK-NEXT: %vslt = icmp slt i16 %a1, %a2 | 106 ; CHECK-NEXT: %vslt = icmp slt i16 %a1, %a2 |
| 107 ; CHECK-NEXT: %vsle = icmp sle i16 %a1, %a2 | 107 ; CHECK-NEXT: %vsle = icmp sle i16 %a1, %a2 |
| 108 ; CHECK-NEXT: ret i1 %veq | 108 ; CHECK-NEXT: ret i1 %veq |
| 109 ; CHECK-NEXT: } | 109 ; CHECK-NEXT: } |
| 110 | 110 |
| 111 define i1 @IcmpI32(i32 %a1, i32 %a2) { | 111 define internal i1 @IcmpI32(i32 %a1, i32 %a2) { |
| 112 entry: | 112 entry: |
| 113 %veq = icmp eq i32 %a1, %a2 | 113 %veq = icmp eq i32 %a1, %a2 |
| 114 %vne = icmp ne i32 %a1, %a2 | 114 %vne = icmp ne i32 %a1, %a2 |
| 115 %vugt = icmp ugt i32 %a1, %a2 | 115 %vugt = icmp ugt i32 %a1, %a2 |
| 116 %vuge = icmp uge i32 %a1, %a2 | 116 %vuge = icmp uge i32 %a1, %a2 |
| 117 %vult = icmp ult i32 %a1, %a2 | 117 %vult = icmp ult i32 %a1, %a2 |
| 118 %vule = icmp ule i32 %a1, %a2 | 118 %vule = icmp ule i32 %a1, %a2 |
| 119 %vsgt = icmp sgt i32 %a1, %a2 | 119 %vsgt = icmp sgt i32 %a1, %a2 |
| 120 %vsge = icmp sge i32 %a1, %a2 | 120 %vsge = icmp sge i32 %a1, %a2 |
| 121 %vslt = icmp slt i32 %a1, %a2 | 121 %vslt = icmp slt i32 %a1, %a2 |
| 122 %vsle = icmp sle i32 %a1, %a2 | 122 %vsle = icmp sle i32 %a1, %a2 |
| 123 ret i1 %veq | 123 ret i1 %veq |
| 124 } | 124 } |
| 125 | 125 |
| 126 ; CHECK-NEXT: define i1 @IcmpI32(i32 %a1, i32 %a2) { | 126 ; CHECK-NEXT: define internal i1 @IcmpI32(i32 %a1, i32 %a2) { |
| 127 ; CHECK-NEXT: entry: | 127 ; CHECK-NEXT: entry: |
| 128 ; CHECK-NEXT: %veq = icmp eq i32 %a1, %a2 | 128 ; CHECK-NEXT: %veq = icmp eq i32 %a1, %a2 |
| 129 ; CHECK-NEXT: %vne = icmp ne i32 %a1, %a2 | 129 ; CHECK-NEXT: %vne = icmp ne i32 %a1, %a2 |
| 130 ; CHECK-NEXT: %vugt = icmp ugt i32 %a1, %a2 | 130 ; CHECK-NEXT: %vugt = icmp ugt i32 %a1, %a2 |
| 131 ; CHECK-NEXT: %vuge = icmp uge i32 %a1, %a2 | 131 ; CHECK-NEXT: %vuge = icmp uge i32 %a1, %a2 |
| 132 ; CHECK-NEXT: %vult = icmp ult i32 %a1, %a2 | 132 ; CHECK-NEXT: %vult = icmp ult i32 %a1, %a2 |
| 133 ; CHECK-NEXT: %vule = icmp ule i32 %a1, %a2 | 133 ; CHECK-NEXT: %vule = icmp ule i32 %a1, %a2 |
| 134 ; CHECK-NEXT: %vsgt = icmp sgt i32 %a1, %a2 | 134 ; CHECK-NEXT: %vsgt = icmp sgt i32 %a1, %a2 |
| 135 ; CHECK-NEXT: %vsge = icmp sge i32 %a1, %a2 | 135 ; CHECK-NEXT: %vsge = icmp sge i32 %a1, %a2 |
| 136 ; CHECK-NEXT: %vslt = icmp slt i32 %a1, %a2 | 136 ; CHECK-NEXT: %vslt = icmp slt i32 %a1, %a2 |
| 137 ; CHECK-NEXT: %vsle = icmp sle i32 %a1, %a2 | 137 ; CHECK-NEXT: %vsle = icmp sle i32 %a1, %a2 |
| 138 ; CHECK-NEXT: ret i1 %veq | 138 ; CHECK-NEXT: ret i1 %veq |
| 139 ; CHECK-NEXT: } | 139 ; CHECK-NEXT: } |
| 140 | 140 |
| 141 define i1 @IcmpI64(i64 %a1, i64 %a2) { | 141 define internal i1 @IcmpI64(i64 %a1, i64 %a2) { |
| 142 entry: | 142 entry: |
| 143 %veq = icmp eq i64 %a1, %a2 | 143 %veq = icmp eq i64 %a1, %a2 |
| 144 %vne = icmp ne i64 %a1, %a2 | 144 %vne = icmp ne i64 %a1, %a2 |
| 145 %vugt = icmp ugt i64 %a1, %a2 | 145 %vugt = icmp ugt i64 %a1, %a2 |
| 146 %vuge = icmp uge i64 %a1, %a2 | 146 %vuge = icmp uge i64 %a1, %a2 |
| 147 %vult = icmp ult i64 %a1, %a2 | 147 %vult = icmp ult i64 %a1, %a2 |
| 148 %vule = icmp ule i64 %a1, %a2 | 148 %vule = icmp ule i64 %a1, %a2 |
| 149 %vsgt = icmp sgt i64 %a1, %a2 | 149 %vsgt = icmp sgt i64 %a1, %a2 |
| 150 %vsge = icmp sge i64 %a1, %a2 | 150 %vsge = icmp sge i64 %a1, %a2 |
| 151 %vslt = icmp slt i64 %a1, %a2 | 151 %vslt = icmp slt i64 %a1, %a2 |
| 152 %vsle = icmp sle i64 %a1, %a2 | 152 %vsle = icmp sle i64 %a1, %a2 |
| 153 ret i1 %veq | 153 ret i1 %veq |
| 154 } | 154 } |
| 155 | 155 |
| 156 ; CHECK-NEXT: define i1 @IcmpI64(i64 %a1, i64 %a2) { | 156 ; CHECK-NEXT: define internal i1 @IcmpI64(i64 %a1, i64 %a2) { |
| 157 ; CHECK-NEXT: entry: | 157 ; CHECK-NEXT: entry: |
| 158 ; CHECK-NEXT: %veq = icmp eq i64 %a1, %a2 | 158 ; CHECK-NEXT: %veq = icmp eq i64 %a1, %a2 |
| 159 ; CHECK-NEXT: %vne = icmp ne i64 %a1, %a2 | 159 ; CHECK-NEXT: %vne = icmp ne i64 %a1, %a2 |
| 160 ; CHECK-NEXT: %vugt = icmp ugt i64 %a1, %a2 | 160 ; CHECK-NEXT: %vugt = icmp ugt i64 %a1, %a2 |
| 161 ; CHECK-NEXT: %vuge = icmp uge i64 %a1, %a2 | 161 ; CHECK-NEXT: %vuge = icmp uge i64 %a1, %a2 |
| 162 ; CHECK-NEXT: %vult = icmp ult i64 %a1, %a2 | 162 ; CHECK-NEXT: %vult = icmp ult i64 %a1, %a2 |
| 163 ; CHECK-NEXT: %vule = icmp ule i64 %a1, %a2 | 163 ; CHECK-NEXT: %vule = icmp ule i64 %a1, %a2 |
| 164 ; CHECK-NEXT: %vsgt = icmp sgt i64 %a1, %a2 | 164 ; CHECK-NEXT: %vsgt = icmp sgt i64 %a1, %a2 |
| 165 ; CHECK-NEXT: %vsge = icmp sge i64 %a1, %a2 | 165 ; CHECK-NEXT: %vsge = icmp sge i64 %a1, %a2 |
| 166 ; CHECK-NEXT: %vslt = icmp slt i64 %a1, %a2 | 166 ; CHECK-NEXT: %vslt = icmp slt i64 %a1, %a2 |
| 167 ; CHECK-NEXT: %vsle = icmp sle i64 %a1, %a2 | 167 ; CHECK-NEXT: %vsle = icmp sle i64 %a1, %a2 |
| 168 ; CHECK-NEXT: ret i1 %veq | 168 ; CHECK-NEXT: ret i1 %veq |
| 169 ; CHECK-NEXT: } | 169 ; CHECK-NEXT: } |
| 170 | 170 |
| 171 define <4 x i1> @IcmpV4xI1(<4 x i1> %a1, <4 x i1> %a2) { | 171 define internal <4 x i1> @IcmpV4xI1(<4 x i1> %a1, <4 x i1> %a2) { |
| 172 entry: | 172 entry: |
| 173 %veq = icmp eq <4 x i1> %a1, %a2 | 173 %veq = icmp eq <4 x i1> %a1, %a2 |
| 174 %vne = icmp ne <4 x i1> %a1, %a2 | 174 %vne = icmp ne <4 x i1> %a1, %a2 |
| 175 %vugt = icmp ugt <4 x i1> %a1, %a2 | 175 %vugt = icmp ugt <4 x i1> %a1, %a2 |
| 176 %vuge = icmp uge <4 x i1> %a1, %a2 | 176 %vuge = icmp uge <4 x i1> %a1, %a2 |
| 177 %vult = icmp ult <4 x i1> %a1, %a2 | 177 %vult = icmp ult <4 x i1> %a1, %a2 |
| 178 %vule = icmp ule <4 x i1> %a1, %a2 | 178 %vule = icmp ule <4 x i1> %a1, %a2 |
| 179 %vsgt = icmp sgt <4 x i1> %a1, %a2 | 179 %vsgt = icmp sgt <4 x i1> %a1, %a2 |
| 180 %vsge = icmp sge <4 x i1> %a1, %a2 | 180 %vsge = icmp sge <4 x i1> %a1, %a2 |
| 181 %vslt = icmp slt <4 x i1> %a1, %a2 | 181 %vslt = icmp slt <4 x i1> %a1, %a2 |
| 182 %vsle = icmp sle <4 x i1> %a1, %a2 | 182 %vsle = icmp sle <4 x i1> %a1, %a2 |
| 183 ret <4 x i1> %veq | 183 ret <4 x i1> %veq |
| 184 } | 184 } |
| 185 | 185 |
| 186 ; CHECK-NEXT: define <4 x i1> @IcmpV4xI1(<4 x i1> %a1, <4 x i1> %a2) { | 186 ; CHECK-NEXT: define internal <4 x i1> @IcmpV4xI1(<4 x i1> %a1, <4 x i1> %a2) { |
| 187 ; CHECK-NEXT: entry: | 187 ; CHECK-NEXT: entry: |
| 188 ; CHECK-NEXT: %veq = icmp eq <4 x i1> %a1, %a2 | 188 ; CHECK-NEXT: %veq = icmp eq <4 x i1> %a1, %a2 |
| 189 ; CHECK-NEXT: %vne = icmp ne <4 x i1> %a1, %a2 | 189 ; CHECK-NEXT: %vne = icmp ne <4 x i1> %a1, %a2 |
| 190 ; CHECK-NEXT: %vugt = icmp ugt <4 x i1> %a1, %a2 | 190 ; CHECK-NEXT: %vugt = icmp ugt <4 x i1> %a1, %a2 |
| 191 ; CHECK-NEXT: %vuge = icmp uge <4 x i1> %a1, %a2 | 191 ; CHECK-NEXT: %vuge = icmp uge <4 x i1> %a1, %a2 |
| 192 ; CHECK-NEXT: %vult = icmp ult <4 x i1> %a1, %a2 | 192 ; CHECK-NEXT: %vult = icmp ult <4 x i1> %a1, %a2 |
| 193 ; CHECK-NEXT: %vule = icmp ule <4 x i1> %a1, %a2 | 193 ; CHECK-NEXT: %vule = icmp ule <4 x i1> %a1, %a2 |
| 194 ; CHECK-NEXT: %vsgt = icmp sgt <4 x i1> %a1, %a2 | 194 ; CHECK-NEXT: %vsgt = icmp sgt <4 x i1> %a1, %a2 |
| 195 ; CHECK-NEXT: %vsge = icmp sge <4 x i1> %a1, %a2 | 195 ; CHECK-NEXT: %vsge = icmp sge <4 x i1> %a1, %a2 |
| 196 ; CHECK-NEXT: %vslt = icmp slt <4 x i1> %a1, %a2 | 196 ; CHECK-NEXT: %vslt = icmp slt <4 x i1> %a1, %a2 |
| 197 ; CHECK-NEXT: %vsle = icmp sle <4 x i1> %a1, %a2 | 197 ; CHECK-NEXT: %vsle = icmp sle <4 x i1> %a1, %a2 |
| 198 ; CHECK-NEXT: ret <4 x i1> %veq | 198 ; CHECK-NEXT: ret <4 x i1> %veq |
| 199 ; CHECK-NEXT: } | 199 ; CHECK-NEXT: } |
| 200 | 200 |
| 201 define <8 x i1> @IcmpV8xI1(<8 x i1> %a1, <8 x i1> %a2) { | 201 define internal <8 x i1> @IcmpV8xI1(<8 x i1> %a1, <8 x i1> %a2) { |
| 202 entry: | 202 entry: |
| 203 %veq = icmp eq <8 x i1> %a1, %a2 | 203 %veq = icmp eq <8 x i1> %a1, %a2 |
| 204 %vne = icmp ne <8 x i1> %a1, %a2 | 204 %vne = icmp ne <8 x i1> %a1, %a2 |
| 205 %vugt = icmp ugt <8 x i1> %a1, %a2 | 205 %vugt = icmp ugt <8 x i1> %a1, %a2 |
| 206 %vuge = icmp uge <8 x i1> %a1, %a2 | 206 %vuge = icmp uge <8 x i1> %a1, %a2 |
| 207 %vult = icmp ult <8 x i1> %a1, %a2 | 207 %vult = icmp ult <8 x i1> %a1, %a2 |
| 208 %vule = icmp ule <8 x i1> %a1, %a2 | 208 %vule = icmp ule <8 x i1> %a1, %a2 |
| 209 %vsgt = icmp sgt <8 x i1> %a1, %a2 | 209 %vsgt = icmp sgt <8 x i1> %a1, %a2 |
| 210 %vsge = icmp sge <8 x i1> %a1, %a2 | 210 %vsge = icmp sge <8 x i1> %a1, %a2 |
| 211 %vslt = icmp slt <8 x i1> %a1, %a2 | 211 %vslt = icmp slt <8 x i1> %a1, %a2 |
| 212 %vsle = icmp sle <8 x i1> %a1, %a2 | 212 %vsle = icmp sle <8 x i1> %a1, %a2 |
| 213 ret <8 x i1> %veq | 213 ret <8 x i1> %veq |
| 214 } | 214 } |
| 215 | 215 |
| 216 ; CHECK-NEXT: define <8 x i1> @IcmpV8xI1(<8 x i1> %a1, <8 x i1> %a2) { | 216 ; CHECK-NEXT: define internal <8 x i1> @IcmpV8xI1(<8 x i1> %a1, <8 x i1> %a2) { |
| 217 ; CHECK-NEXT: entry: | 217 ; CHECK-NEXT: entry: |
| 218 ; CHECK-NEXT: %veq = icmp eq <8 x i1> %a1, %a2 | 218 ; CHECK-NEXT: %veq = icmp eq <8 x i1> %a1, %a2 |
| 219 ; CHECK-NEXT: %vne = icmp ne <8 x i1> %a1, %a2 | 219 ; CHECK-NEXT: %vne = icmp ne <8 x i1> %a1, %a2 |
| 220 ; CHECK-NEXT: %vugt = icmp ugt <8 x i1> %a1, %a2 | 220 ; CHECK-NEXT: %vugt = icmp ugt <8 x i1> %a1, %a2 |
| 221 ; CHECK-NEXT: %vuge = icmp uge <8 x i1> %a1, %a2 | 221 ; CHECK-NEXT: %vuge = icmp uge <8 x i1> %a1, %a2 |
| 222 ; CHECK-NEXT: %vult = icmp ult <8 x i1> %a1, %a2 | 222 ; CHECK-NEXT: %vult = icmp ult <8 x i1> %a1, %a2 |
| 223 ; CHECK-NEXT: %vule = icmp ule <8 x i1> %a1, %a2 | 223 ; CHECK-NEXT: %vule = icmp ule <8 x i1> %a1, %a2 |
| 224 ; CHECK-NEXT: %vsgt = icmp sgt <8 x i1> %a1, %a2 | 224 ; CHECK-NEXT: %vsgt = icmp sgt <8 x i1> %a1, %a2 |
| 225 ; CHECK-NEXT: %vsge = icmp sge <8 x i1> %a1, %a2 | 225 ; CHECK-NEXT: %vsge = icmp sge <8 x i1> %a1, %a2 |
| 226 ; CHECK-NEXT: %vslt = icmp slt <8 x i1> %a1, %a2 | 226 ; CHECK-NEXT: %vslt = icmp slt <8 x i1> %a1, %a2 |
| 227 ; CHECK-NEXT: %vsle = icmp sle <8 x i1> %a1, %a2 | 227 ; CHECK-NEXT: %vsle = icmp sle <8 x i1> %a1, %a2 |
| 228 ; CHECK-NEXT: ret <8 x i1> %veq | 228 ; CHECK-NEXT: ret <8 x i1> %veq |
| 229 ; CHECK-NEXT: } | 229 ; CHECK-NEXT: } |
| 230 | 230 |
| 231 define <16 x i1> @IcmpV16xI1(<16 x i1> %a1, <16 x i1> %a2) { | 231 define internal <16 x i1> @IcmpV16xI1(<16 x i1> %a1, <16 x i1> %a2) { |
| 232 entry: | 232 entry: |
| 233 %veq = icmp eq <16 x i1> %a1, %a2 | 233 %veq = icmp eq <16 x i1> %a1, %a2 |
| 234 %vne = icmp ne <16 x i1> %a1, %a2 | 234 %vne = icmp ne <16 x i1> %a1, %a2 |
| 235 %vugt = icmp ugt <16 x i1> %a1, %a2 | 235 %vugt = icmp ugt <16 x i1> %a1, %a2 |
| 236 %vuge = icmp uge <16 x i1> %a1, %a2 | 236 %vuge = icmp uge <16 x i1> %a1, %a2 |
| 237 %vult = icmp ult <16 x i1> %a1, %a2 | 237 %vult = icmp ult <16 x i1> %a1, %a2 |
| 238 %vule = icmp ule <16 x i1> %a1, %a2 | 238 %vule = icmp ule <16 x i1> %a1, %a2 |
| 239 %vsgt = icmp sgt <16 x i1> %a1, %a2 | 239 %vsgt = icmp sgt <16 x i1> %a1, %a2 |
| 240 %vsge = icmp sge <16 x i1> %a1, %a2 | 240 %vsge = icmp sge <16 x i1> %a1, %a2 |
| 241 %vslt = icmp slt <16 x i1> %a1, %a2 | 241 %vslt = icmp slt <16 x i1> %a1, %a2 |
| 242 %vsle = icmp sle <16 x i1> %a1, %a2 | 242 %vsle = icmp sle <16 x i1> %a1, %a2 |
| 243 ret <16 x i1> %veq | 243 ret <16 x i1> %veq |
| 244 } | 244 } |
| 245 | 245 |
| 246 ; CHECK-NEXT: define <16 x i1> @IcmpV16xI1(<16 x i1> %a1, <16 x i1> %a2) { | 246 ; CHECK-NEXT: define internal <16 x i1> @IcmpV16xI1(<16 x i1> %a1, <16 x i1> %a2
) { |
| 247 ; CHECK-NEXT: entry: | 247 ; CHECK-NEXT: entry: |
| 248 ; CHECK-NEXT: %veq = icmp eq <16 x i1> %a1, %a2 | 248 ; CHECK-NEXT: %veq = icmp eq <16 x i1> %a1, %a2 |
| 249 ; CHECK-NEXT: %vne = icmp ne <16 x i1> %a1, %a2 | 249 ; CHECK-NEXT: %vne = icmp ne <16 x i1> %a1, %a2 |
| 250 ; CHECK-NEXT: %vugt = icmp ugt <16 x i1> %a1, %a2 | 250 ; CHECK-NEXT: %vugt = icmp ugt <16 x i1> %a1, %a2 |
| 251 ; CHECK-NEXT: %vuge = icmp uge <16 x i1> %a1, %a2 | 251 ; CHECK-NEXT: %vuge = icmp uge <16 x i1> %a1, %a2 |
| 252 ; CHECK-NEXT: %vult = icmp ult <16 x i1> %a1, %a2 | 252 ; CHECK-NEXT: %vult = icmp ult <16 x i1> %a1, %a2 |
| 253 ; CHECK-NEXT: %vule = icmp ule <16 x i1> %a1, %a2 | 253 ; CHECK-NEXT: %vule = icmp ule <16 x i1> %a1, %a2 |
| 254 ; CHECK-NEXT: %vsgt = icmp sgt <16 x i1> %a1, %a2 | 254 ; CHECK-NEXT: %vsgt = icmp sgt <16 x i1> %a1, %a2 |
| 255 ; CHECK-NEXT: %vsge = icmp sge <16 x i1> %a1, %a2 | 255 ; CHECK-NEXT: %vsge = icmp sge <16 x i1> %a1, %a2 |
| 256 ; CHECK-NEXT: %vslt = icmp slt <16 x i1> %a1, %a2 | 256 ; CHECK-NEXT: %vslt = icmp slt <16 x i1> %a1, %a2 |
| 257 ; CHECK-NEXT: %vsle = icmp sle <16 x i1> %a1, %a2 | 257 ; CHECK-NEXT: %vsle = icmp sle <16 x i1> %a1, %a2 |
| 258 ; CHECK-NEXT: ret <16 x i1> %veq | 258 ; CHECK-NEXT: ret <16 x i1> %veq |
| 259 ; CHECK-NEXT: } | 259 ; CHECK-NEXT: } |
| 260 | 260 |
| 261 define <16 x i1> @IcmpV16xI8(<16 x i8> %a1, <16 x i8> %a2) { | 261 define internal <16 x i1> @IcmpV16xI8(<16 x i8> %a1, <16 x i8> %a2) { |
| 262 entry: | 262 entry: |
| 263 %veq = icmp eq <16 x i8> %a1, %a2 | 263 %veq = icmp eq <16 x i8> %a1, %a2 |
| 264 %vne = icmp ne <16 x i8> %a1, %a2 | 264 %vne = icmp ne <16 x i8> %a1, %a2 |
| 265 %vugt = icmp ugt <16 x i8> %a1, %a2 | 265 %vugt = icmp ugt <16 x i8> %a1, %a2 |
| 266 %vuge = icmp uge <16 x i8> %a1, %a2 | 266 %vuge = icmp uge <16 x i8> %a1, %a2 |
| 267 %vult = icmp ult <16 x i8> %a1, %a2 | 267 %vult = icmp ult <16 x i8> %a1, %a2 |
| 268 %vule = icmp ule <16 x i8> %a1, %a2 | 268 %vule = icmp ule <16 x i8> %a1, %a2 |
| 269 %vsgt = icmp sgt <16 x i8> %a1, %a2 | 269 %vsgt = icmp sgt <16 x i8> %a1, %a2 |
| 270 %vsge = icmp sge <16 x i8> %a1, %a2 | 270 %vsge = icmp sge <16 x i8> %a1, %a2 |
| 271 %vslt = icmp slt <16 x i8> %a1, %a2 | 271 %vslt = icmp slt <16 x i8> %a1, %a2 |
| 272 %vsle = icmp sle <16 x i8> %a1, %a2 | 272 %vsle = icmp sle <16 x i8> %a1, %a2 |
| 273 ret <16 x i1> %veq | 273 ret <16 x i1> %veq |
| 274 } | 274 } |
| 275 | 275 |
| 276 ; CHECK-NEXT: define <16 x i1> @IcmpV16xI8(<16 x i8> %a1, <16 x i8> %a2) { | 276 ; CHECK-NEXT: define internal <16 x i1> @IcmpV16xI8(<16 x i8> %a1, <16 x i8> %a2
) { |
| 277 ; CHECK-NEXT: entry: | 277 ; CHECK-NEXT: entry: |
| 278 ; CHECK-NEXT: %veq = icmp eq <16 x i8> %a1, %a2 | 278 ; CHECK-NEXT: %veq = icmp eq <16 x i8> %a1, %a2 |
| 279 ; CHECK-NEXT: %vne = icmp ne <16 x i8> %a1, %a2 | 279 ; CHECK-NEXT: %vne = icmp ne <16 x i8> %a1, %a2 |
| 280 ; CHECK-NEXT: %vugt = icmp ugt <16 x i8> %a1, %a2 | 280 ; CHECK-NEXT: %vugt = icmp ugt <16 x i8> %a1, %a2 |
| 281 ; CHECK-NEXT: %vuge = icmp uge <16 x i8> %a1, %a2 | 281 ; CHECK-NEXT: %vuge = icmp uge <16 x i8> %a1, %a2 |
| 282 ; CHECK-NEXT: %vult = icmp ult <16 x i8> %a1, %a2 | 282 ; CHECK-NEXT: %vult = icmp ult <16 x i8> %a1, %a2 |
| 283 ; CHECK-NEXT: %vule = icmp ule <16 x i8> %a1, %a2 | 283 ; CHECK-NEXT: %vule = icmp ule <16 x i8> %a1, %a2 |
| 284 ; CHECK-NEXT: %vsgt = icmp sgt <16 x i8> %a1, %a2 | 284 ; CHECK-NEXT: %vsgt = icmp sgt <16 x i8> %a1, %a2 |
| 285 ; CHECK-NEXT: %vsge = icmp sge <16 x i8> %a1, %a2 | 285 ; CHECK-NEXT: %vsge = icmp sge <16 x i8> %a1, %a2 |
| 286 ; CHECK-NEXT: %vslt = icmp slt <16 x i8> %a1, %a2 | 286 ; CHECK-NEXT: %vslt = icmp slt <16 x i8> %a1, %a2 |
| 287 ; CHECK-NEXT: %vsle = icmp sle <16 x i8> %a1, %a2 | 287 ; CHECK-NEXT: %vsle = icmp sle <16 x i8> %a1, %a2 |
| 288 ; CHECK-NEXT: ret <16 x i1> %veq | 288 ; CHECK-NEXT: ret <16 x i1> %veq |
| 289 ; CHECK-NEXT: } | 289 ; CHECK-NEXT: } |
| 290 | 290 |
| 291 define <8 x i1> @IcmpV8xI16(<8 x i16> %a1, <8 x i16> %a2) { | 291 define internal <8 x i1> @IcmpV8xI16(<8 x i16> %a1, <8 x i16> %a2) { |
| 292 entry: | 292 entry: |
| 293 %veq = icmp eq <8 x i16> %a1, %a2 | 293 %veq = icmp eq <8 x i16> %a1, %a2 |
| 294 %vne = icmp ne <8 x i16> %a1, %a2 | 294 %vne = icmp ne <8 x i16> %a1, %a2 |
| 295 %vugt = icmp ugt <8 x i16> %a1, %a2 | 295 %vugt = icmp ugt <8 x i16> %a1, %a2 |
| 296 %vuge = icmp uge <8 x i16> %a1, %a2 | 296 %vuge = icmp uge <8 x i16> %a1, %a2 |
| 297 %vult = icmp ult <8 x i16> %a1, %a2 | 297 %vult = icmp ult <8 x i16> %a1, %a2 |
| 298 %vule = icmp ule <8 x i16> %a1, %a2 | 298 %vule = icmp ule <8 x i16> %a1, %a2 |
| 299 %vsgt = icmp sgt <8 x i16> %a1, %a2 | 299 %vsgt = icmp sgt <8 x i16> %a1, %a2 |
| 300 %vsge = icmp sge <8 x i16> %a1, %a2 | 300 %vsge = icmp sge <8 x i16> %a1, %a2 |
| 301 %vslt = icmp slt <8 x i16> %a1, %a2 | 301 %vslt = icmp slt <8 x i16> %a1, %a2 |
| 302 %vsle = icmp sle <8 x i16> %a1, %a2 | 302 %vsle = icmp sle <8 x i16> %a1, %a2 |
| 303 ret <8 x i1> %veq | 303 ret <8 x i1> %veq |
| 304 } | 304 } |
| 305 | 305 |
| 306 ; CHECK-NEXT: define <8 x i1> @IcmpV8xI16(<8 x i16> %a1, <8 x i16> %a2) { | 306 ; CHECK-NEXT: define internal <8 x i1> @IcmpV8xI16(<8 x i16> %a1, <8 x i16> %a2)
{ |
| 307 ; CHECK-NEXT: entry: | 307 ; CHECK-NEXT: entry: |
| 308 ; CHECK-NEXT: %veq = icmp eq <8 x i16> %a1, %a2 | 308 ; CHECK-NEXT: %veq = icmp eq <8 x i16> %a1, %a2 |
| 309 ; CHECK-NEXT: %vne = icmp ne <8 x i16> %a1, %a2 | 309 ; CHECK-NEXT: %vne = icmp ne <8 x i16> %a1, %a2 |
| 310 ; CHECK-NEXT: %vugt = icmp ugt <8 x i16> %a1, %a2 | 310 ; CHECK-NEXT: %vugt = icmp ugt <8 x i16> %a1, %a2 |
| 311 ; CHECK-NEXT: %vuge = icmp uge <8 x i16> %a1, %a2 | 311 ; CHECK-NEXT: %vuge = icmp uge <8 x i16> %a1, %a2 |
| 312 ; CHECK-NEXT: %vult = icmp ult <8 x i16> %a1, %a2 | 312 ; CHECK-NEXT: %vult = icmp ult <8 x i16> %a1, %a2 |
| 313 ; CHECK-NEXT: %vule = icmp ule <8 x i16> %a1, %a2 | 313 ; CHECK-NEXT: %vule = icmp ule <8 x i16> %a1, %a2 |
| 314 ; CHECK-NEXT: %vsgt = icmp sgt <8 x i16> %a1, %a2 | 314 ; CHECK-NEXT: %vsgt = icmp sgt <8 x i16> %a1, %a2 |
| 315 ; CHECK-NEXT: %vsge = icmp sge <8 x i16> %a1, %a2 | 315 ; CHECK-NEXT: %vsge = icmp sge <8 x i16> %a1, %a2 |
| 316 ; CHECK-NEXT: %vslt = icmp slt <8 x i16> %a1, %a2 | 316 ; CHECK-NEXT: %vslt = icmp slt <8 x i16> %a1, %a2 |
| 317 ; CHECK-NEXT: %vsle = icmp sle <8 x i16> %a1, %a2 | 317 ; CHECK-NEXT: %vsle = icmp sle <8 x i16> %a1, %a2 |
| 318 ; CHECK-NEXT: ret <8 x i1> %veq | 318 ; CHECK-NEXT: ret <8 x i1> %veq |
| 319 ; CHECK-NEXT: } | 319 ; CHECK-NEXT: } |
| 320 | 320 |
| 321 define <4 x i1> @IcmpV4xI32(<4 x i32> %a1, <4 x i32> %a2) { | 321 define internal <4 x i1> @IcmpV4xI32(<4 x i32> %a1, <4 x i32> %a2) { |
| 322 entry: | 322 entry: |
| 323 %veq = icmp eq <4 x i32> %a1, %a2 | 323 %veq = icmp eq <4 x i32> %a1, %a2 |
| 324 %vne = icmp ne <4 x i32> %a1, %a2 | 324 %vne = icmp ne <4 x i32> %a1, %a2 |
| 325 %vugt = icmp ugt <4 x i32> %a1, %a2 | 325 %vugt = icmp ugt <4 x i32> %a1, %a2 |
| 326 %vuge = icmp uge <4 x i32> %a1, %a2 | 326 %vuge = icmp uge <4 x i32> %a1, %a2 |
| 327 %vult = icmp ult <4 x i32> %a1, %a2 | 327 %vult = icmp ult <4 x i32> %a1, %a2 |
| 328 %vule = icmp ule <4 x i32> %a1, %a2 | 328 %vule = icmp ule <4 x i32> %a1, %a2 |
| 329 %vsgt = icmp sgt <4 x i32> %a1, %a2 | 329 %vsgt = icmp sgt <4 x i32> %a1, %a2 |
| 330 %vsge = icmp sge <4 x i32> %a1, %a2 | 330 %vsge = icmp sge <4 x i32> %a1, %a2 |
| 331 %vslt = icmp slt <4 x i32> %a1, %a2 | 331 %vslt = icmp slt <4 x i32> %a1, %a2 |
| 332 %vsle = icmp sle <4 x i32> %a1, %a2 | 332 %vsle = icmp sle <4 x i32> %a1, %a2 |
| 333 ret <4 x i1> %veq | 333 ret <4 x i1> %veq |
| 334 } | 334 } |
| 335 | 335 |
| 336 ; CHECK-NEXT: define <4 x i1> @IcmpV4xI32(<4 x i32> %a1, <4 x i32> %a2) { | 336 ; CHECK-NEXT: define internal <4 x i1> @IcmpV4xI32(<4 x i32> %a1, <4 x i32> %a2)
{ |
| 337 ; CHECK-NEXT: entry: | 337 ; CHECK-NEXT: entry: |
| 338 ; CHECK-NEXT: %veq = icmp eq <4 x i32> %a1, %a2 | 338 ; CHECK-NEXT: %veq = icmp eq <4 x i32> %a1, %a2 |
| 339 ; CHECK-NEXT: %vne = icmp ne <4 x i32> %a1, %a2 | 339 ; CHECK-NEXT: %vne = icmp ne <4 x i32> %a1, %a2 |
| 340 ; CHECK-NEXT: %vugt = icmp ugt <4 x i32> %a1, %a2 | 340 ; CHECK-NEXT: %vugt = icmp ugt <4 x i32> %a1, %a2 |
| 341 ; CHECK-NEXT: %vuge = icmp uge <4 x i32> %a1, %a2 | 341 ; CHECK-NEXT: %vuge = icmp uge <4 x i32> %a1, %a2 |
| 342 ; CHECK-NEXT: %vult = icmp ult <4 x i32> %a1, %a2 | 342 ; CHECK-NEXT: %vult = icmp ult <4 x i32> %a1, %a2 |
| 343 ; CHECK-NEXT: %vule = icmp ule <4 x i32> %a1, %a2 | 343 ; CHECK-NEXT: %vule = icmp ule <4 x i32> %a1, %a2 |
| 344 ; CHECK-NEXT: %vsgt = icmp sgt <4 x i32> %a1, %a2 | 344 ; CHECK-NEXT: %vsgt = icmp sgt <4 x i32> %a1, %a2 |
| 345 ; CHECK-NEXT: %vsge = icmp sge <4 x i32> %a1, %a2 | 345 ; CHECK-NEXT: %vsge = icmp sge <4 x i32> %a1, %a2 |
| 346 ; CHECK-NEXT: %vslt = icmp slt <4 x i32> %a1, %a2 | 346 ; CHECK-NEXT: %vslt = icmp slt <4 x i32> %a1, %a2 |
| 347 ; CHECK-NEXT: %vsle = icmp sle <4 x i32> %a1, %a2 | 347 ; CHECK-NEXT: %vsle = icmp sle <4 x i32> %a1, %a2 |
| 348 ; CHECK-NEXT: ret <4 x i1> %veq | 348 ; CHECK-NEXT: ret <4 x i1> %veq |
| 349 ; CHECK-NEXT: } | 349 ; CHECK-NEXT: } |
| 350 | 350 |
| 351 define i1 @FcmpFloat(float %a1, float %a2) { | 351 define internal i1 @FcmpFloat(float %a1, float %a2) { |
| 352 entry: | 352 entry: |
| 353 %vfalse = fcmp false float %a1, %a2 | 353 %vfalse = fcmp false float %a1, %a2 |
| 354 %voeq = fcmp oeq float %a1, %a2 | 354 %voeq = fcmp oeq float %a1, %a2 |
| 355 %vogt = fcmp ogt float %a1, %a2 | 355 %vogt = fcmp ogt float %a1, %a2 |
| 356 %voge = fcmp oge float %a1, %a2 | 356 %voge = fcmp oge float %a1, %a2 |
| 357 %volt = fcmp olt float %a1, %a2 | 357 %volt = fcmp olt float %a1, %a2 |
| 358 %vole = fcmp ole float %a1, %a2 | 358 %vole = fcmp ole float %a1, %a2 |
| 359 %vone = fcmp one float %a1, %a2 | 359 %vone = fcmp one float %a1, %a2 |
| 360 %ord = fcmp ord float %a1, %a2 | 360 %ord = fcmp ord float %a1, %a2 |
| 361 %vueq = fcmp ueq float %a1, %a2 | 361 %vueq = fcmp ueq float %a1, %a2 |
| 362 %vugt = fcmp ugt float %a1, %a2 | 362 %vugt = fcmp ugt float %a1, %a2 |
| 363 %vuge = fcmp uge float %a1, %a2 | 363 %vuge = fcmp uge float %a1, %a2 |
| 364 %vult = fcmp ult float %a1, %a2 | 364 %vult = fcmp ult float %a1, %a2 |
| 365 %vule = fcmp ule float %a1, %a2 | 365 %vule = fcmp ule float %a1, %a2 |
| 366 %vune = fcmp une float %a1, %a2 | 366 %vune = fcmp une float %a1, %a2 |
| 367 %vuno = fcmp uno float %a1, %a2 | 367 %vuno = fcmp uno float %a1, %a2 |
| 368 %vtrue = fcmp true float %a1, %a2 | 368 %vtrue = fcmp true float %a1, %a2 |
| 369 ret i1 %voeq | 369 ret i1 %voeq |
| 370 } | 370 } |
| 371 | 371 |
| 372 ; CHECK-NEXT: define i1 @FcmpFloat(float %a1, float %a2) { | 372 ; CHECK-NEXT: define internal i1 @FcmpFloat(float %a1, float %a2) { |
| 373 ; CHECK-NEXT: entry: | 373 ; CHECK-NEXT: entry: |
| 374 ; CHECK-NEXT: %vfalse = fcmp false float %a1, %a2 | 374 ; CHECK-NEXT: %vfalse = fcmp false float %a1, %a2 |
| 375 ; CHECK-NEXT: %voeq = fcmp oeq float %a1, %a2 | 375 ; CHECK-NEXT: %voeq = fcmp oeq float %a1, %a2 |
| 376 ; CHECK-NEXT: %vogt = fcmp ogt float %a1, %a2 | 376 ; CHECK-NEXT: %vogt = fcmp ogt float %a1, %a2 |
| 377 ; CHECK-NEXT: %voge = fcmp oge float %a1, %a2 | 377 ; CHECK-NEXT: %voge = fcmp oge float %a1, %a2 |
| 378 ; CHECK-NEXT: %volt = fcmp olt float %a1, %a2 | 378 ; CHECK-NEXT: %volt = fcmp olt float %a1, %a2 |
| 379 ; CHECK-NEXT: %vole = fcmp ole float %a1, %a2 | 379 ; CHECK-NEXT: %vole = fcmp ole float %a1, %a2 |
| 380 ; CHECK-NEXT: %vone = fcmp one float %a1, %a2 | 380 ; CHECK-NEXT: %vone = fcmp one float %a1, %a2 |
| 381 ; CHECK-NEXT: %ord = fcmp ord float %a1, %a2 | 381 ; CHECK-NEXT: %ord = fcmp ord float %a1, %a2 |
| 382 ; CHECK-NEXT: %vueq = fcmp ueq float %a1, %a2 | 382 ; CHECK-NEXT: %vueq = fcmp ueq float %a1, %a2 |
| 383 ; CHECK-NEXT: %vugt = fcmp ugt float %a1, %a2 | 383 ; CHECK-NEXT: %vugt = fcmp ugt float %a1, %a2 |
| 384 ; CHECK-NEXT: %vuge = fcmp uge float %a1, %a2 | 384 ; CHECK-NEXT: %vuge = fcmp uge float %a1, %a2 |
| 385 ; CHECK-NEXT: %vult = fcmp ult float %a1, %a2 | 385 ; CHECK-NEXT: %vult = fcmp ult float %a1, %a2 |
| 386 ; CHECK-NEXT: %vule = fcmp ule float %a1, %a2 | 386 ; CHECK-NEXT: %vule = fcmp ule float %a1, %a2 |
| 387 ; CHECK-NEXT: %vune = fcmp une float %a1, %a2 | 387 ; CHECK-NEXT: %vune = fcmp une float %a1, %a2 |
| 388 ; CHECK-NEXT: %vuno = fcmp uno float %a1, %a2 | 388 ; CHECK-NEXT: %vuno = fcmp uno float %a1, %a2 |
| 389 ; CHECK-NEXT: %vtrue = fcmp true float %a1, %a2 | 389 ; CHECK-NEXT: %vtrue = fcmp true float %a1, %a2 |
| 390 ; CHECK-NEXT: ret i1 %voeq | 390 ; CHECK-NEXT: ret i1 %voeq |
| 391 ; CHECK-NEXT: } | 391 ; CHECK-NEXT: } |
| 392 | 392 |
| 393 define i1 @FcmpDouble(double %a1, double %a2) { | 393 define internal i1 @FcmpDouble(double %a1, double %a2) { |
| 394 entry: | 394 entry: |
| 395 %vfalse = fcmp false double %a1, %a2 | 395 %vfalse = fcmp false double %a1, %a2 |
| 396 %voeq = fcmp oeq double %a1, %a2 | 396 %voeq = fcmp oeq double %a1, %a2 |
| 397 %vogt = fcmp ogt double %a1, %a2 | 397 %vogt = fcmp ogt double %a1, %a2 |
| 398 %voge = fcmp oge double %a1, %a2 | 398 %voge = fcmp oge double %a1, %a2 |
| 399 %volt = fcmp olt double %a1, %a2 | 399 %volt = fcmp olt double %a1, %a2 |
| 400 %vole = fcmp ole double %a1, %a2 | 400 %vole = fcmp ole double %a1, %a2 |
| 401 %vone = fcmp one double %a1, %a2 | 401 %vone = fcmp one double %a1, %a2 |
| 402 %ord = fcmp ord double %a1, %a2 | 402 %ord = fcmp ord double %a1, %a2 |
| 403 %vueq = fcmp ueq double %a1, %a2 | 403 %vueq = fcmp ueq double %a1, %a2 |
| 404 %vugt = fcmp ugt double %a1, %a2 | 404 %vugt = fcmp ugt double %a1, %a2 |
| 405 %vuge = fcmp uge double %a1, %a2 | 405 %vuge = fcmp uge double %a1, %a2 |
| 406 %vult = fcmp ult double %a1, %a2 | 406 %vult = fcmp ult double %a1, %a2 |
| 407 %vule = fcmp ule double %a1, %a2 | 407 %vule = fcmp ule double %a1, %a2 |
| 408 %vune = fcmp une double %a1, %a2 | 408 %vune = fcmp une double %a1, %a2 |
| 409 %vuno = fcmp uno double %a1, %a2 | 409 %vuno = fcmp uno double %a1, %a2 |
| 410 %vtrue = fcmp true double %a1, %a2 | 410 %vtrue = fcmp true double %a1, %a2 |
| 411 ret i1 %voeq | 411 ret i1 %voeq |
| 412 } | 412 } |
| 413 | 413 |
| 414 ; CHECK-NEXT: define i1 @FcmpDouble(double %a1, double %a2) { | 414 ; CHECK-NEXT: define internal i1 @FcmpDouble(double %a1, double %a2) { |
| 415 ; CHECK-NEXT: entry: | 415 ; CHECK-NEXT: entry: |
| 416 ; CHECK-NEXT: %vfalse = fcmp false double %a1, %a2 | 416 ; CHECK-NEXT: %vfalse = fcmp false double %a1, %a2 |
| 417 ; CHECK-NEXT: %voeq = fcmp oeq double %a1, %a2 | 417 ; CHECK-NEXT: %voeq = fcmp oeq double %a1, %a2 |
| 418 ; CHECK-NEXT: %vogt = fcmp ogt double %a1, %a2 | 418 ; CHECK-NEXT: %vogt = fcmp ogt double %a1, %a2 |
| 419 ; CHECK-NEXT: %voge = fcmp oge double %a1, %a2 | 419 ; CHECK-NEXT: %voge = fcmp oge double %a1, %a2 |
| 420 ; CHECK-NEXT: %volt = fcmp olt double %a1, %a2 | 420 ; CHECK-NEXT: %volt = fcmp olt double %a1, %a2 |
| 421 ; CHECK-NEXT: %vole = fcmp ole double %a1, %a2 | 421 ; CHECK-NEXT: %vole = fcmp ole double %a1, %a2 |
| 422 ; CHECK-NEXT: %vone = fcmp one double %a1, %a2 | 422 ; CHECK-NEXT: %vone = fcmp one double %a1, %a2 |
| 423 ; CHECK-NEXT: %ord = fcmp ord double %a1, %a2 | 423 ; CHECK-NEXT: %ord = fcmp ord double %a1, %a2 |
| 424 ; CHECK-NEXT: %vueq = fcmp ueq double %a1, %a2 | 424 ; CHECK-NEXT: %vueq = fcmp ueq double %a1, %a2 |
| 425 ; CHECK-NEXT: %vugt = fcmp ugt double %a1, %a2 | 425 ; CHECK-NEXT: %vugt = fcmp ugt double %a1, %a2 |
| 426 ; CHECK-NEXT: %vuge = fcmp uge double %a1, %a2 | 426 ; CHECK-NEXT: %vuge = fcmp uge double %a1, %a2 |
| 427 ; CHECK-NEXT: %vult = fcmp ult double %a1, %a2 | 427 ; CHECK-NEXT: %vult = fcmp ult double %a1, %a2 |
| 428 ; CHECK-NEXT: %vule = fcmp ule double %a1, %a2 | 428 ; CHECK-NEXT: %vule = fcmp ule double %a1, %a2 |
| 429 ; CHECK-NEXT: %vune = fcmp une double %a1, %a2 | 429 ; CHECK-NEXT: %vune = fcmp une double %a1, %a2 |
| 430 ; CHECK-NEXT: %vuno = fcmp uno double %a1, %a2 | 430 ; CHECK-NEXT: %vuno = fcmp uno double %a1, %a2 |
| 431 ; CHECK-NEXT: %vtrue = fcmp true double %a1, %a2 | 431 ; CHECK-NEXT: %vtrue = fcmp true double %a1, %a2 |
| 432 ; CHECK-NEXT: ret i1 %voeq | 432 ; CHECK-NEXT: ret i1 %voeq |
| 433 ; CHECK-NEXT: } | 433 ; CHECK-NEXT: } |
| 434 | 434 |
| 435 define <4 x i1> @FcmpV4xFloat(<4 x float> %a1, <4 x float> %a2) { | 435 define internal <4 x i1> @FcmpV4xFloat(<4 x float> %a1, <4 x float> %a2) { |
| 436 entry: | 436 entry: |
| 437 %vfalse = fcmp false <4 x float> %a1, %a2 | 437 %vfalse = fcmp false <4 x float> %a1, %a2 |
| 438 %voeq = fcmp oeq <4 x float> %a1, %a2 | 438 %voeq = fcmp oeq <4 x float> %a1, %a2 |
| 439 %vogt = fcmp ogt <4 x float> %a1, %a2 | 439 %vogt = fcmp ogt <4 x float> %a1, %a2 |
| 440 %voge = fcmp oge <4 x float> %a1, %a2 | 440 %voge = fcmp oge <4 x float> %a1, %a2 |
| 441 %volt = fcmp olt <4 x float> %a1, %a2 | 441 %volt = fcmp olt <4 x float> %a1, %a2 |
| 442 %vole = fcmp ole <4 x float> %a1, %a2 | 442 %vole = fcmp ole <4 x float> %a1, %a2 |
| 443 %vone = fcmp one <4 x float> %a1, %a2 | 443 %vone = fcmp one <4 x float> %a1, %a2 |
| 444 %ord = fcmp ord <4 x float> %a1, %a2 | 444 %ord = fcmp ord <4 x float> %a1, %a2 |
| 445 %vueq = fcmp ueq <4 x float> %a1, %a2 | 445 %vueq = fcmp ueq <4 x float> %a1, %a2 |
| 446 %vugt = fcmp ugt <4 x float> %a1, %a2 | 446 %vugt = fcmp ugt <4 x float> %a1, %a2 |
| 447 %vuge = fcmp uge <4 x float> %a1, %a2 | 447 %vuge = fcmp uge <4 x float> %a1, %a2 |
| 448 %vult = fcmp ult <4 x float> %a1, %a2 | 448 %vult = fcmp ult <4 x float> %a1, %a2 |
| 449 %vule = fcmp ule <4 x float> %a1, %a2 | 449 %vule = fcmp ule <4 x float> %a1, %a2 |
| 450 %vune = fcmp une <4 x float> %a1, %a2 | 450 %vune = fcmp une <4 x float> %a1, %a2 |
| 451 %vuno = fcmp uno <4 x float> %a1, %a2 | 451 %vuno = fcmp uno <4 x float> %a1, %a2 |
| 452 %vtrue = fcmp true <4 x float> %a1, %a2 | 452 %vtrue = fcmp true <4 x float> %a1, %a2 |
| 453 ret <4 x i1> %voeq | 453 ret <4 x i1> %voeq |
| 454 } | 454 } |
| 455 | 455 |
| 456 ; CHECK-NEXT: define <4 x i1> @FcmpV4xFloat(<4 x float> %a1, <4 x float> %a2) { | 456 ; CHECK-NEXT: define internal <4 x i1> @FcmpV4xFloat(<4 x float> %a1, <4 x float
> %a2) { |
| 457 ; CHECK-NEXT: entry: | 457 ; CHECK-NEXT: entry: |
| 458 ; CHECK-NEXT: %vfalse = fcmp false <4 x float> %a1, %a2 | 458 ; CHECK-NEXT: %vfalse = fcmp false <4 x float> %a1, %a2 |
| 459 ; CHECK-NEXT: %voeq = fcmp oeq <4 x float> %a1, %a2 | 459 ; CHECK-NEXT: %voeq = fcmp oeq <4 x float> %a1, %a2 |
| 460 ; CHECK-NEXT: %vogt = fcmp ogt <4 x float> %a1, %a2 | 460 ; CHECK-NEXT: %vogt = fcmp ogt <4 x float> %a1, %a2 |
| 461 ; CHECK-NEXT: %voge = fcmp oge <4 x float> %a1, %a2 | 461 ; CHECK-NEXT: %voge = fcmp oge <4 x float> %a1, %a2 |
| 462 ; CHECK-NEXT: %volt = fcmp olt <4 x float> %a1, %a2 | 462 ; CHECK-NEXT: %volt = fcmp olt <4 x float> %a1, %a2 |
| 463 ; CHECK-NEXT: %vole = fcmp ole <4 x float> %a1, %a2 | 463 ; CHECK-NEXT: %vole = fcmp ole <4 x float> %a1, %a2 |
| 464 ; CHECK-NEXT: %vone = fcmp one <4 x float> %a1, %a2 | 464 ; CHECK-NEXT: %vone = fcmp one <4 x float> %a1, %a2 |
| 465 ; CHECK-NEXT: %ord = fcmp ord <4 x float> %a1, %a2 | 465 ; CHECK-NEXT: %ord = fcmp ord <4 x float> %a1, %a2 |
| 466 ; CHECK-NEXT: %vueq = fcmp ueq <4 x float> %a1, %a2 | 466 ; CHECK-NEXT: %vueq = fcmp ueq <4 x float> %a1, %a2 |
| 467 ; CHECK-NEXT: %vugt = fcmp ugt <4 x float> %a1, %a2 | 467 ; CHECK-NEXT: %vugt = fcmp ugt <4 x float> %a1, %a2 |
| 468 ; CHECK-NEXT: %vuge = fcmp uge <4 x float> %a1, %a2 | 468 ; CHECK-NEXT: %vuge = fcmp uge <4 x float> %a1, %a2 |
| 469 ; CHECK-NEXT: %vult = fcmp ult <4 x float> %a1, %a2 | 469 ; CHECK-NEXT: %vult = fcmp ult <4 x float> %a1, %a2 |
| 470 ; CHECK-NEXT: %vule = fcmp ule <4 x float> %a1, %a2 | 470 ; CHECK-NEXT: %vule = fcmp ule <4 x float> %a1, %a2 |
| 471 ; CHECK-NEXT: %vune = fcmp une <4 x float> %a1, %a2 | 471 ; CHECK-NEXT: %vune = fcmp une <4 x float> %a1, %a2 |
| 472 ; CHECK-NEXT: %vuno = fcmp uno <4 x float> %a1, %a2 | 472 ; CHECK-NEXT: %vuno = fcmp uno <4 x float> %a1, %a2 |
| 473 ; CHECK-NEXT: %vtrue = fcmp true <4 x float> %a1, %a2 | 473 ; CHECK-NEXT: %vtrue = fcmp true <4 x float> %a1, %a2 |
| 474 ; CHECK-NEXT: ret <4 x i1> %voeq | 474 ; CHECK-NEXT: ret <4 x i1> %voeq |
| 475 ; CHECK-NEXT: } | 475 ; CHECK-NEXT: } |
| 476 | 476 |
| 477 ; NOIR: Total across all functions | 477 ; NOIR: Total across all functions |
| OLD | NEW |