| OLD | NEW |
| 1 ; Tests insertelement and extractelement vector instructions. | 1 ; Tests insertelement and extractelement vector instructions. |
| 2 | 2 |
| 3 ; RUN: %p2i -i %s --insts | FileCheck %s | 3 ; RUN: %p2i -i %s --insts | FileCheck %s |
| 4 ; RUN: %l2i -i %s --insts | %ifl FileCheck %s | 4 ; RUN: %l2i -i %s --insts | %ifl FileCheck %s |
| 5 ; RUN: %lc2i -i %s --insts | %iflc FileCheck %s | 5 ; RUN: %lc2i -i %s --insts | %iflc FileCheck %s |
| 6 ; RUN: %if --need=allow_disable_ir_gen --command \ | 6 ; RUN: %if --need=allow_disable_ir_gen --command \ |
| 7 ; RUN: %p2i -i %s --args -notranslate -timing -no-ir-gen \ | 7 ; RUN: %p2i -i %s --args -notranslate -timing -no-ir-gen \ |
| 8 ; RUN: | %if --need=allow_disable_ir_gen --command \ | 8 ; RUN: | %if --need=allow_disable_ir_gen --command \ |
| 9 ; RUN: FileCheck --check-prefix=NOIR %s | 9 ; RUN: FileCheck --check-prefix=NOIR %s |
| 10 | 10 |
| 11 define void @ExtractV4xi1(<4 x i1> %v) { | 11 define internal void @ExtractV4xi1(<4 x i1> %v) { |
| 12 entry: | 12 entry: |
| 13 %e0 = extractelement <4 x i1> %v, i32 0 | 13 %e0 = extractelement <4 x i1> %v, i32 0 |
| 14 %e1 = extractelement <4 x i1> %v, i32 1 | 14 %e1 = extractelement <4 x i1> %v, i32 1 |
| 15 %e2 = extractelement <4 x i1> %v, i32 2 | 15 %e2 = extractelement <4 x i1> %v, i32 2 |
| 16 %e3 = extractelement <4 x i1> %v, i32 3 | 16 %e3 = extractelement <4 x i1> %v, i32 3 |
| 17 ret void | 17 ret void |
| 18 } | 18 } |
| 19 | 19 |
| 20 ; CHECK: define void @ExtractV4xi1(<4 x i1> %v) { | 20 ; CHECK: define internal void @ExtractV4xi1(<4 x i1> %v) { |
| 21 ; CHECK-NEXT: entry: | 21 ; CHECK-NEXT: entry: |
| 22 ; CHECK-NEXT: %e0 = extractelement <4 x i1> %v, i32 0 | 22 ; CHECK-NEXT: %e0 = extractelement <4 x i1> %v, i32 0 |
| 23 ; CHECK-NEXT: %e1 = extractelement <4 x i1> %v, i32 1 | 23 ; CHECK-NEXT: %e1 = extractelement <4 x i1> %v, i32 1 |
| 24 ; CHECK-NEXT: %e2 = extractelement <4 x i1> %v, i32 2 | 24 ; CHECK-NEXT: %e2 = extractelement <4 x i1> %v, i32 2 |
| 25 ; CHECK-NEXT: %e3 = extractelement <4 x i1> %v, i32 3 | 25 ; CHECK-NEXT: %e3 = extractelement <4 x i1> %v, i32 3 |
| 26 ; CHECK-NEXT: ret void | 26 ; CHECK-NEXT: ret void |
| 27 ; CHECK-NEXT: } | 27 ; CHECK-NEXT: } |
| 28 | 28 |
| 29 define void @ExtractV8xi1(<8 x i1> %v) { | 29 define internal void @ExtractV8xi1(<8 x i1> %v) { |
| 30 entry: | 30 entry: |
| 31 %e0 = extractelement <8 x i1> %v, i32 0 | 31 %e0 = extractelement <8 x i1> %v, i32 0 |
| 32 %e1 = extractelement <8 x i1> %v, i32 1 | 32 %e1 = extractelement <8 x i1> %v, i32 1 |
| 33 %e2 = extractelement <8 x i1> %v, i32 2 | 33 %e2 = extractelement <8 x i1> %v, i32 2 |
| 34 %e3 = extractelement <8 x i1> %v, i32 3 | 34 %e3 = extractelement <8 x i1> %v, i32 3 |
| 35 %e4 = extractelement <8 x i1> %v, i32 4 | 35 %e4 = extractelement <8 x i1> %v, i32 4 |
| 36 %e5 = extractelement <8 x i1> %v, i32 5 | 36 %e5 = extractelement <8 x i1> %v, i32 5 |
| 37 %e6 = extractelement <8 x i1> %v, i32 6 | 37 %e6 = extractelement <8 x i1> %v, i32 6 |
| 38 %e7 = extractelement <8 x i1> %v, i32 7 | 38 %e7 = extractelement <8 x i1> %v, i32 7 |
| 39 ret void | 39 ret void |
| 40 } | 40 } |
| 41 | 41 |
| 42 ; CHECK-NEXT: define void @ExtractV8xi1(<8 x i1> %v) { | 42 ; CHECK-NEXT: define internal void @ExtractV8xi1(<8 x i1> %v) { |
| 43 ; CHECK-NEXT: entry: | 43 ; CHECK-NEXT: entry: |
| 44 ; CHECK-NEXT: %e0 = extractelement <8 x i1> %v, i32 0 | 44 ; CHECK-NEXT: %e0 = extractelement <8 x i1> %v, i32 0 |
| 45 ; CHECK-NEXT: %e1 = extractelement <8 x i1> %v, i32 1 | 45 ; CHECK-NEXT: %e1 = extractelement <8 x i1> %v, i32 1 |
| 46 ; CHECK-NEXT: %e2 = extractelement <8 x i1> %v, i32 2 | 46 ; CHECK-NEXT: %e2 = extractelement <8 x i1> %v, i32 2 |
| 47 ; CHECK-NEXT: %e3 = extractelement <8 x i1> %v, i32 3 | 47 ; CHECK-NEXT: %e3 = extractelement <8 x i1> %v, i32 3 |
| 48 ; CHECK-NEXT: %e4 = extractelement <8 x i1> %v, i32 4 | 48 ; CHECK-NEXT: %e4 = extractelement <8 x i1> %v, i32 4 |
| 49 ; CHECK-NEXT: %e5 = extractelement <8 x i1> %v, i32 5 | 49 ; CHECK-NEXT: %e5 = extractelement <8 x i1> %v, i32 5 |
| 50 ; CHECK-NEXT: %e6 = extractelement <8 x i1> %v, i32 6 | 50 ; CHECK-NEXT: %e6 = extractelement <8 x i1> %v, i32 6 |
| 51 ; CHECK-NEXT: %e7 = extractelement <8 x i1> %v, i32 7 | 51 ; CHECK-NEXT: %e7 = extractelement <8 x i1> %v, i32 7 |
| 52 ; CHECK-NEXT: ret void | 52 ; CHECK-NEXT: ret void |
| 53 ; CHECK-NEXT: } | 53 ; CHECK-NEXT: } |
| 54 | 54 |
| 55 define void @ExtractV16xi1(<16 x i1> %v) { | 55 define internal void @ExtractV16xi1(<16 x i1> %v) { |
| 56 entry: | 56 entry: |
| 57 %e0 = extractelement <16 x i1> %v, i32 0 | 57 %e0 = extractelement <16 x i1> %v, i32 0 |
| 58 %e1 = extractelement <16 x i1> %v, i32 1 | 58 %e1 = extractelement <16 x i1> %v, i32 1 |
| 59 %e2 = extractelement <16 x i1> %v, i32 2 | 59 %e2 = extractelement <16 x i1> %v, i32 2 |
| 60 %e3 = extractelement <16 x i1> %v, i32 3 | 60 %e3 = extractelement <16 x i1> %v, i32 3 |
| 61 %e4 = extractelement <16 x i1> %v, i32 4 | 61 %e4 = extractelement <16 x i1> %v, i32 4 |
| 62 %e5 = extractelement <16 x i1> %v, i32 5 | 62 %e5 = extractelement <16 x i1> %v, i32 5 |
| 63 %e6 = extractelement <16 x i1> %v, i32 6 | 63 %e6 = extractelement <16 x i1> %v, i32 6 |
| 64 %e7 = extractelement <16 x i1> %v, i32 7 | 64 %e7 = extractelement <16 x i1> %v, i32 7 |
| 65 %e8 = extractelement <16 x i1> %v, i32 8 | 65 %e8 = extractelement <16 x i1> %v, i32 8 |
| 66 %e9 = extractelement <16 x i1> %v, i32 9 | 66 %e9 = extractelement <16 x i1> %v, i32 9 |
| 67 %e10 = extractelement <16 x i1> %v, i32 10 | 67 %e10 = extractelement <16 x i1> %v, i32 10 |
| 68 %e11 = extractelement <16 x i1> %v, i32 11 | 68 %e11 = extractelement <16 x i1> %v, i32 11 |
| 69 %e12 = extractelement <16 x i1> %v, i32 12 | 69 %e12 = extractelement <16 x i1> %v, i32 12 |
| 70 %e13 = extractelement <16 x i1> %v, i32 13 | 70 %e13 = extractelement <16 x i1> %v, i32 13 |
| 71 %e14 = extractelement <16 x i1> %v, i32 14 | 71 %e14 = extractelement <16 x i1> %v, i32 14 |
| 72 %e15 = extractelement <16 x i1> %v, i32 15 | 72 %e15 = extractelement <16 x i1> %v, i32 15 |
| 73 ret void | 73 ret void |
| 74 } | 74 } |
| 75 | 75 |
| 76 ; CHECK-NEXT: define void @ExtractV16xi1(<16 x i1> %v) { | 76 ; CHECK-NEXT: define internal void @ExtractV16xi1(<16 x i1> %v) { |
| 77 ; CHECK-NEXT: entry: | 77 ; CHECK-NEXT: entry: |
| 78 ; CHECK-NEXT: %e0 = extractelement <16 x i1> %v, i32 0 | 78 ; CHECK-NEXT: %e0 = extractelement <16 x i1> %v, i32 0 |
| 79 ; CHECK-NEXT: %e1 = extractelement <16 x i1> %v, i32 1 | 79 ; CHECK-NEXT: %e1 = extractelement <16 x i1> %v, i32 1 |
| 80 ; CHECK-NEXT: %e2 = extractelement <16 x i1> %v, i32 2 | 80 ; CHECK-NEXT: %e2 = extractelement <16 x i1> %v, i32 2 |
| 81 ; CHECK-NEXT: %e3 = extractelement <16 x i1> %v, i32 3 | 81 ; CHECK-NEXT: %e3 = extractelement <16 x i1> %v, i32 3 |
| 82 ; CHECK-NEXT: %e4 = extractelement <16 x i1> %v, i32 4 | 82 ; CHECK-NEXT: %e4 = extractelement <16 x i1> %v, i32 4 |
| 83 ; CHECK-NEXT: %e5 = extractelement <16 x i1> %v, i32 5 | 83 ; CHECK-NEXT: %e5 = extractelement <16 x i1> %v, i32 5 |
| 84 ; CHECK-NEXT: %e6 = extractelement <16 x i1> %v, i32 6 | 84 ; CHECK-NEXT: %e6 = extractelement <16 x i1> %v, i32 6 |
| 85 ; CHECK-NEXT: %e7 = extractelement <16 x i1> %v, i32 7 | 85 ; CHECK-NEXT: %e7 = extractelement <16 x i1> %v, i32 7 |
| 86 ; CHECK-NEXT: %e8 = extractelement <16 x i1> %v, i32 8 | 86 ; CHECK-NEXT: %e8 = extractelement <16 x i1> %v, i32 8 |
| 87 ; CHECK-NEXT: %e9 = extractelement <16 x i1> %v, i32 9 | 87 ; CHECK-NEXT: %e9 = extractelement <16 x i1> %v, i32 9 |
| 88 ; CHECK-NEXT: %e10 = extractelement <16 x i1> %v, i32 10 | 88 ; CHECK-NEXT: %e10 = extractelement <16 x i1> %v, i32 10 |
| 89 ; CHECK-NEXT: %e11 = extractelement <16 x i1> %v, i32 11 | 89 ; CHECK-NEXT: %e11 = extractelement <16 x i1> %v, i32 11 |
| 90 ; CHECK-NEXT: %e12 = extractelement <16 x i1> %v, i32 12 | 90 ; CHECK-NEXT: %e12 = extractelement <16 x i1> %v, i32 12 |
| 91 ; CHECK-NEXT: %e13 = extractelement <16 x i1> %v, i32 13 | 91 ; CHECK-NEXT: %e13 = extractelement <16 x i1> %v, i32 13 |
| 92 ; CHECK-NEXT: %e14 = extractelement <16 x i1> %v, i32 14 | 92 ; CHECK-NEXT: %e14 = extractelement <16 x i1> %v, i32 14 |
| 93 ; CHECK-NEXT: %e15 = extractelement <16 x i1> %v, i32 15 | 93 ; CHECK-NEXT: %e15 = extractelement <16 x i1> %v, i32 15 |
| 94 ; CHECK-NEXT: ret void | 94 ; CHECK-NEXT: ret void |
| 95 ; CHECK-NEXT: } | 95 ; CHECK-NEXT: } |
| 96 | 96 |
| 97 define void @ExtractV16xi8(<16 x i8> %v, i32 %i) { | 97 define internal void @ExtractV16xi8(<16 x i8> %v, i32 %i) { |
| 98 entry: | 98 entry: |
| 99 %e0 = extractelement <16 x i8> %v, i32 0 | 99 %e0 = extractelement <16 x i8> %v, i32 0 |
| 100 %e1 = extractelement <16 x i8> %v, i32 1 | 100 %e1 = extractelement <16 x i8> %v, i32 1 |
| 101 %e2 = extractelement <16 x i8> %v, i32 2 | 101 %e2 = extractelement <16 x i8> %v, i32 2 |
| 102 %e3 = extractelement <16 x i8> %v, i32 3 | 102 %e3 = extractelement <16 x i8> %v, i32 3 |
| 103 %e4 = extractelement <16 x i8> %v, i32 4 | 103 %e4 = extractelement <16 x i8> %v, i32 4 |
| 104 %e5 = extractelement <16 x i8> %v, i32 5 | 104 %e5 = extractelement <16 x i8> %v, i32 5 |
| 105 %e6 = extractelement <16 x i8> %v, i32 6 | 105 %e6 = extractelement <16 x i8> %v, i32 6 |
| 106 %e7 = extractelement <16 x i8> %v, i32 7 | 106 %e7 = extractelement <16 x i8> %v, i32 7 |
| 107 %e8 = extractelement <16 x i8> %v, i32 8 | 107 %e8 = extractelement <16 x i8> %v, i32 8 |
| 108 %e9 = extractelement <16 x i8> %v, i32 9 | 108 %e9 = extractelement <16 x i8> %v, i32 9 |
| 109 %e10 = extractelement <16 x i8> %v, i32 10 | 109 %e10 = extractelement <16 x i8> %v, i32 10 |
| 110 %e11 = extractelement <16 x i8> %v, i32 11 | 110 %e11 = extractelement <16 x i8> %v, i32 11 |
| 111 %e12 = extractelement <16 x i8> %v, i32 12 | 111 %e12 = extractelement <16 x i8> %v, i32 12 |
| 112 %e13 = extractelement <16 x i8> %v, i32 13 | 112 %e13 = extractelement <16 x i8> %v, i32 13 |
| 113 %e14 = extractelement <16 x i8> %v, i32 14 | 113 %e14 = extractelement <16 x i8> %v, i32 14 |
| 114 %e15 = extractelement <16 x i8> %v, i32 15 | 114 %e15 = extractelement <16 x i8> %v, i32 15 |
| 115 ret void | 115 ret void |
| 116 } | 116 } |
| 117 | 117 |
| 118 ; CHECK-NEXT: define void @ExtractV16xi8(<16 x i8> %v, i32 %i) { | 118 ; CHECK-NEXT: define internal void @ExtractV16xi8(<16 x i8> %v, i32 %i) { |
| 119 ; CHECK-NEXT: entry: | 119 ; CHECK-NEXT: entry: |
| 120 ; CHECK-NEXT: %e0 = extractelement <16 x i8> %v, i32 0 | 120 ; CHECK-NEXT: %e0 = extractelement <16 x i8> %v, i32 0 |
| 121 ; CHECK-NEXT: %e1 = extractelement <16 x i8> %v, i32 1 | 121 ; CHECK-NEXT: %e1 = extractelement <16 x i8> %v, i32 1 |
| 122 ; CHECK-NEXT: %e2 = extractelement <16 x i8> %v, i32 2 | 122 ; CHECK-NEXT: %e2 = extractelement <16 x i8> %v, i32 2 |
| 123 ; CHECK-NEXT: %e3 = extractelement <16 x i8> %v, i32 3 | 123 ; CHECK-NEXT: %e3 = extractelement <16 x i8> %v, i32 3 |
| 124 ; CHECK-NEXT: %e4 = extractelement <16 x i8> %v, i32 4 | 124 ; CHECK-NEXT: %e4 = extractelement <16 x i8> %v, i32 4 |
| 125 ; CHECK-NEXT: %e5 = extractelement <16 x i8> %v, i32 5 | 125 ; CHECK-NEXT: %e5 = extractelement <16 x i8> %v, i32 5 |
| 126 ; CHECK-NEXT: %e6 = extractelement <16 x i8> %v, i32 6 | 126 ; CHECK-NEXT: %e6 = extractelement <16 x i8> %v, i32 6 |
| 127 ; CHECK-NEXT: %e7 = extractelement <16 x i8> %v, i32 7 | 127 ; CHECK-NEXT: %e7 = extractelement <16 x i8> %v, i32 7 |
| 128 ; CHECK-NEXT: %e8 = extractelement <16 x i8> %v, i32 8 | 128 ; CHECK-NEXT: %e8 = extractelement <16 x i8> %v, i32 8 |
| 129 ; CHECK-NEXT: %e9 = extractelement <16 x i8> %v, i32 9 | 129 ; CHECK-NEXT: %e9 = extractelement <16 x i8> %v, i32 9 |
| 130 ; CHECK-NEXT: %e10 = extractelement <16 x i8> %v, i32 10 | 130 ; CHECK-NEXT: %e10 = extractelement <16 x i8> %v, i32 10 |
| 131 ; CHECK-NEXT: %e11 = extractelement <16 x i8> %v, i32 11 | 131 ; CHECK-NEXT: %e11 = extractelement <16 x i8> %v, i32 11 |
| 132 ; CHECK-NEXT: %e12 = extractelement <16 x i8> %v, i32 12 | 132 ; CHECK-NEXT: %e12 = extractelement <16 x i8> %v, i32 12 |
| 133 ; CHECK-NEXT: %e13 = extractelement <16 x i8> %v, i32 13 | 133 ; CHECK-NEXT: %e13 = extractelement <16 x i8> %v, i32 13 |
| 134 ; CHECK-NEXT: %e14 = extractelement <16 x i8> %v, i32 14 | 134 ; CHECK-NEXT: %e14 = extractelement <16 x i8> %v, i32 14 |
| 135 ; CHECK-NEXT: %e15 = extractelement <16 x i8> %v, i32 15 | 135 ; CHECK-NEXT: %e15 = extractelement <16 x i8> %v, i32 15 |
| 136 ; CHECK-NEXT: ret void | 136 ; CHECK-NEXT: ret void |
| 137 ; CHECK-NEXT: } | 137 ; CHECK-NEXT: } |
| 138 | 138 |
| 139 define void @ExtractV8xi16(<8 x i16> %v) { | 139 define internal void @ExtractV8xi16(<8 x i16> %v) { |
| 140 entry: | 140 entry: |
| 141 %e0 = extractelement <8 x i16> %v, i32 0 | 141 %e0 = extractelement <8 x i16> %v, i32 0 |
| 142 %e1 = extractelement <8 x i16> %v, i32 1 | 142 %e1 = extractelement <8 x i16> %v, i32 1 |
| 143 %e2 = extractelement <8 x i16> %v, i32 2 | 143 %e2 = extractelement <8 x i16> %v, i32 2 |
| 144 %e3 = extractelement <8 x i16> %v, i32 3 | 144 %e3 = extractelement <8 x i16> %v, i32 3 |
| 145 %e4 = extractelement <8 x i16> %v, i32 4 | 145 %e4 = extractelement <8 x i16> %v, i32 4 |
| 146 %e5 = extractelement <8 x i16> %v, i32 5 | 146 %e5 = extractelement <8 x i16> %v, i32 5 |
| 147 %e6 = extractelement <8 x i16> %v, i32 6 | 147 %e6 = extractelement <8 x i16> %v, i32 6 |
| 148 %e7 = extractelement <8 x i16> %v, i32 7 | 148 %e7 = extractelement <8 x i16> %v, i32 7 |
| 149 ret void | 149 ret void |
| 150 } | 150 } |
| 151 | 151 |
| 152 ; CHECK-NEXT: define void @ExtractV8xi16(<8 x i16> %v) { | 152 ; CHECK-NEXT: define internal void @ExtractV8xi16(<8 x i16> %v) { |
| 153 ; CHECK-NEXT: entry: | 153 ; CHECK-NEXT: entry: |
| 154 ; CHECK-NEXT: %e0 = extractelement <8 x i16> %v, i32 0 | 154 ; CHECK-NEXT: %e0 = extractelement <8 x i16> %v, i32 0 |
| 155 ; CHECK-NEXT: %e1 = extractelement <8 x i16> %v, i32 1 | 155 ; CHECK-NEXT: %e1 = extractelement <8 x i16> %v, i32 1 |
| 156 ; CHECK-NEXT: %e2 = extractelement <8 x i16> %v, i32 2 | 156 ; CHECK-NEXT: %e2 = extractelement <8 x i16> %v, i32 2 |
| 157 ; CHECK-NEXT: %e3 = extractelement <8 x i16> %v, i32 3 | 157 ; CHECK-NEXT: %e3 = extractelement <8 x i16> %v, i32 3 |
| 158 ; CHECK-NEXT: %e4 = extractelement <8 x i16> %v, i32 4 | 158 ; CHECK-NEXT: %e4 = extractelement <8 x i16> %v, i32 4 |
| 159 ; CHECK-NEXT: %e5 = extractelement <8 x i16> %v, i32 5 | 159 ; CHECK-NEXT: %e5 = extractelement <8 x i16> %v, i32 5 |
| 160 ; CHECK-NEXT: %e6 = extractelement <8 x i16> %v, i32 6 | 160 ; CHECK-NEXT: %e6 = extractelement <8 x i16> %v, i32 6 |
| 161 ; CHECK-NEXT: %e7 = extractelement <8 x i16> %v, i32 7 | 161 ; CHECK-NEXT: %e7 = extractelement <8 x i16> %v, i32 7 |
| 162 ; CHECK-NEXT: ret void | 162 ; CHECK-NEXT: ret void |
| 163 ; CHECK-NEXT: } | 163 ; CHECK-NEXT: } |
| 164 | 164 |
| 165 define i32 @ExtractV4xi32(<4 x i32> %v) { | 165 define internal i32 @ExtractV4xi32(<4 x i32> %v) { |
| 166 entry: | 166 entry: |
| 167 %e0 = extractelement <4 x i32> %v, i32 0 | 167 %e0 = extractelement <4 x i32> %v, i32 0 |
| 168 %e1 = extractelement <4 x i32> %v, i32 1 | 168 %e1 = extractelement <4 x i32> %v, i32 1 |
| 169 %e2 = extractelement <4 x i32> %v, i32 2 | 169 %e2 = extractelement <4 x i32> %v, i32 2 |
| 170 %e3 = extractelement <4 x i32> %v, i32 3 | 170 %e3 = extractelement <4 x i32> %v, i32 3 |
| 171 ret i32 %e0 | 171 ret i32 %e0 |
| 172 } | 172 } |
| 173 | 173 |
| 174 ; CHECK-NEXT: define i32 @ExtractV4xi32(<4 x i32> %v) { | 174 ; CHECK-NEXT: define internal i32 @ExtractV4xi32(<4 x i32> %v) { |
| 175 ; CHECK-NEXT: entry: | 175 ; CHECK-NEXT: entry: |
| 176 ; CHECK-NEXT: %e0 = extractelement <4 x i32> %v, i32 0 | 176 ; CHECK-NEXT: %e0 = extractelement <4 x i32> %v, i32 0 |
| 177 ; CHECK-NEXT: %e1 = extractelement <4 x i32> %v, i32 1 | 177 ; CHECK-NEXT: %e1 = extractelement <4 x i32> %v, i32 1 |
| 178 ; CHECK-NEXT: %e2 = extractelement <4 x i32> %v, i32 2 | 178 ; CHECK-NEXT: %e2 = extractelement <4 x i32> %v, i32 2 |
| 179 ; CHECK-NEXT: %e3 = extractelement <4 x i32> %v, i32 3 | 179 ; CHECK-NEXT: %e3 = extractelement <4 x i32> %v, i32 3 |
| 180 ; CHECK-NEXT: ret i32 %e0 | 180 ; CHECK-NEXT: ret i32 %e0 |
| 181 ; CHECK-NEXT: } | 181 ; CHECK-NEXT: } |
| 182 | 182 |
| 183 define float @ExtractV4xfloat(<4 x float> %v) { | 183 define internal float @ExtractV4xfloat(<4 x float> %v) { |
| 184 entry: | 184 entry: |
| 185 %e0 = extractelement <4 x float> %v, i32 0 | 185 %e0 = extractelement <4 x float> %v, i32 0 |
| 186 %e1 = extractelement <4 x float> %v, i32 1 | 186 %e1 = extractelement <4 x float> %v, i32 1 |
| 187 %e2 = extractelement <4 x float> %v, i32 2 | 187 %e2 = extractelement <4 x float> %v, i32 2 |
| 188 %e3 = extractelement <4 x float> %v, i32 3 | 188 %e3 = extractelement <4 x float> %v, i32 3 |
| 189 ret float %e0 | 189 ret float %e0 |
| 190 } | 190 } |
| 191 | 191 |
| 192 ; CHECK-NEXT: define float @ExtractV4xfloat(<4 x float> %v) { | 192 ; CHECK-NEXT: define internal float @ExtractV4xfloat(<4 x float> %v) { |
| 193 ; CHECK-NEXT: entry: | 193 ; CHECK-NEXT: entry: |
| 194 ; CHECK-NEXT: %e0 = extractelement <4 x float> %v, i32 0 | 194 ; CHECK-NEXT: %e0 = extractelement <4 x float> %v, i32 0 |
| 195 ; CHECK-NEXT: %e1 = extractelement <4 x float> %v, i32 1 | 195 ; CHECK-NEXT: %e1 = extractelement <4 x float> %v, i32 1 |
| 196 ; CHECK-NEXT: %e2 = extractelement <4 x float> %v, i32 2 | 196 ; CHECK-NEXT: %e2 = extractelement <4 x float> %v, i32 2 |
| 197 ; CHECK-NEXT: %e3 = extractelement <4 x float> %v, i32 3 | 197 ; CHECK-NEXT: %e3 = extractelement <4 x float> %v, i32 3 |
| 198 ; CHECK-NEXT: ret float %e0 | 198 ; CHECK-NEXT: ret float %e0 |
| 199 ; CHECK-NEXT: } | 199 ; CHECK-NEXT: } |
| 200 | 200 |
| 201 define <4 x i1> @InsertV4xi1(<4 x i1> %v, i32 %pe) { | 201 define internal <4 x i1> @InsertV4xi1(<4 x i1> %v, i32 %pe) { |
| 202 entry: | 202 entry: |
| 203 %e = trunc i32 %pe to i1 | 203 %e = trunc i32 %pe to i1 |
| 204 %r0 = insertelement <4 x i1> %v, i1 %e, i32 0 | 204 %r0 = insertelement <4 x i1> %v, i1 %e, i32 0 |
| 205 %r1 = insertelement <4 x i1> %v, i1 %e, i32 1 | 205 %r1 = insertelement <4 x i1> %v, i1 %e, i32 1 |
| 206 %r2 = insertelement <4 x i1> %v, i1 %e, i32 2 | 206 %r2 = insertelement <4 x i1> %v, i1 %e, i32 2 |
| 207 %r3 = insertelement <4 x i1> %v, i1 %e, i32 3 | 207 %r3 = insertelement <4 x i1> %v, i1 %e, i32 3 |
| 208 ret <4 x i1> %r3 | 208 ret <4 x i1> %r3 |
| 209 } | 209 } |
| 210 | 210 |
| 211 ; CHECK-NEXT: define <4 x i1> @InsertV4xi1(<4 x i1> %v, i32 %pe) { | 211 ; CHECK-NEXT: define internal <4 x i1> @InsertV4xi1(<4 x i1> %v, i32 %pe) { |
| 212 ; CHECK-NEXT: entry: | 212 ; CHECK-NEXT: entry: |
| 213 ; CHECK-NEXT: %e = trunc i32 %pe to i1 | 213 ; CHECK-NEXT: %e = trunc i32 %pe to i1 |
| 214 ; CHECK-NEXT: %r0 = insertelement <4 x i1> %v, i1 %e, i32 0 | 214 ; CHECK-NEXT: %r0 = insertelement <4 x i1> %v, i1 %e, i32 0 |
| 215 ; CHECK-NEXT: %r1 = insertelement <4 x i1> %v, i1 %e, i32 1 | 215 ; CHECK-NEXT: %r1 = insertelement <4 x i1> %v, i1 %e, i32 1 |
| 216 ; CHECK-NEXT: %r2 = insertelement <4 x i1> %v, i1 %e, i32 2 | 216 ; CHECK-NEXT: %r2 = insertelement <4 x i1> %v, i1 %e, i32 2 |
| 217 ; CHECK-NEXT: %r3 = insertelement <4 x i1> %v, i1 %e, i32 3 | 217 ; CHECK-NEXT: %r3 = insertelement <4 x i1> %v, i1 %e, i32 3 |
| 218 ; CHECK-NEXT: ret <4 x i1> %r3 | 218 ; CHECK-NEXT: ret <4 x i1> %r3 |
| 219 ; CHECK-NEXT: } | 219 ; CHECK-NEXT: } |
| 220 | 220 |
| 221 define <8 x i1> @InsertV8xi1(<8 x i1> %v, i32 %pe) { | 221 define internal <8 x i1> @InsertV8xi1(<8 x i1> %v, i32 %pe) { |
| 222 entry: | 222 entry: |
| 223 %e = trunc i32 %pe to i1 | 223 %e = trunc i32 %pe to i1 |
| 224 %r0 = insertelement <8 x i1> %v, i1 %e, i32 0 | 224 %r0 = insertelement <8 x i1> %v, i1 %e, i32 0 |
| 225 %r1 = insertelement <8 x i1> %v, i1 %e, i32 1 | 225 %r1 = insertelement <8 x i1> %v, i1 %e, i32 1 |
| 226 %r2 = insertelement <8 x i1> %v, i1 %e, i32 2 | 226 %r2 = insertelement <8 x i1> %v, i1 %e, i32 2 |
| 227 %r3 = insertelement <8 x i1> %v, i1 %e, i32 3 | 227 %r3 = insertelement <8 x i1> %v, i1 %e, i32 3 |
| 228 %r4 = insertelement <8 x i1> %v, i1 %e, i32 4 | 228 %r4 = insertelement <8 x i1> %v, i1 %e, i32 4 |
| 229 %r5 = insertelement <8 x i1> %v, i1 %e, i32 5 | 229 %r5 = insertelement <8 x i1> %v, i1 %e, i32 5 |
| 230 %r6 = insertelement <8 x i1> %v, i1 %e, i32 6 | 230 %r6 = insertelement <8 x i1> %v, i1 %e, i32 6 |
| 231 %r7 = insertelement <8 x i1> %v, i1 %e, i32 7 | 231 %r7 = insertelement <8 x i1> %v, i1 %e, i32 7 |
| 232 ret <8 x i1> %r7 | 232 ret <8 x i1> %r7 |
| 233 } | 233 } |
| 234 | 234 |
| 235 ; CHECK-NEXT: define <8 x i1> @InsertV8xi1(<8 x i1> %v, i32 %pe) { | 235 ; CHECK-NEXT: define internal <8 x i1> @InsertV8xi1(<8 x i1> %v, i32 %pe) { |
| 236 ; CHECK-NEXT: entry: | 236 ; CHECK-NEXT: entry: |
| 237 ; CHECK-NEXT: %e = trunc i32 %pe to i1 | 237 ; CHECK-NEXT: %e = trunc i32 %pe to i1 |
| 238 ; CHECK-NEXT: %r0 = insertelement <8 x i1> %v, i1 %e, i32 0 | 238 ; CHECK-NEXT: %r0 = insertelement <8 x i1> %v, i1 %e, i32 0 |
| 239 ; CHECK-NEXT: %r1 = insertelement <8 x i1> %v, i1 %e, i32 1 | 239 ; CHECK-NEXT: %r1 = insertelement <8 x i1> %v, i1 %e, i32 1 |
| 240 ; CHECK-NEXT: %r2 = insertelement <8 x i1> %v, i1 %e, i32 2 | 240 ; CHECK-NEXT: %r2 = insertelement <8 x i1> %v, i1 %e, i32 2 |
| 241 ; CHECK-NEXT: %r3 = insertelement <8 x i1> %v, i1 %e, i32 3 | 241 ; CHECK-NEXT: %r3 = insertelement <8 x i1> %v, i1 %e, i32 3 |
| 242 ; CHECK-NEXT: %r4 = insertelement <8 x i1> %v, i1 %e, i32 4 | 242 ; CHECK-NEXT: %r4 = insertelement <8 x i1> %v, i1 %e, i32 4 |
| 243 ; CHECK-NEXT: %r5 = insertelement <8 x i1> %v, i1 %e, i32 5 | 243 ; CHECK-NEXT: %r5 = insertelement <8 x i1> %v, i1 %e, i32 5 |
| 244 ; CHECK-NEXT: %r6 = insertelement <8 x i1> %v, i1 %e, i32 6 | 244 ; CHECK-NEXT: %r6 = insertelement <8 x i1> %v, i1 %e, i32 6 |
| 245 ; CHECK-NEXT: %r7 = insertelement <8 x i1> %v, i1 %e, i32 7 | 245 ; CHECK-NEXT: %r7 = insertelement <8 x i1> %v, i1 %e, i32 7 |
| 246 ; CHECK-NEXT: ret <8 x i1> %r7 | 246 ; CHECK-NEXT: ret <8 x i1> %r7 |
| 247 ; CHECK-NEXT: } | 247 ; CHECK-NEXT: } |
| 248 | 248 |
| 249 define <16 x i1> @InsertV16xi1(<16 x i1> %v, i32 %pe) { | 249 define internal <16 x i1> @InsertV16xi1(<16 x i1> %v, i32 %pe) { |
| 250 entry: | 250 entry: |
| 251 %e = trunc i32 %pe to i1 | 251 %e = trunc i32 %pe to i1 |
| 252 %r0 = insertelement <16 x i1> %v, i1 %e, i32 0 | 252 %r0 = insertelement <16 x i1> %v, i1 %e, i32 0 |
| 253 %r1 = insertelement <16 x i1> %v, i1 %e, i32 1 | 253 %r1 = insertelement <16 x i1> %v, i1 %e, i32 1 |
| 254 %r2 = insertelement <16 x i1> %v, i1 %e, i32 2 | 254 %r2 = insertelement <16 x i1> %v, i1 %e, i32 2 |
| 255 %r3 = insertelement <16 x i1> %v, i1 %e, i32 3 | 255 %r3 = insertelement <16 x i1> %v, i1 %e, i32 3 |
| 256 %r4 = insertelement <16 x i1> %v, i1 %e, i32 4 | 256 %r4 = insertelement <16 x i1> %v, i1 %e, i32 4 |
| 257 %r5 = insertelement <16 x i1> %v, i1 %e, i32 5 | 257 %r5 = insertelement <16 x i1> %v, i1 %e, i32 5 |
| 258 %r6 = insertelement <16 x i1> %v, i1 %e, i32 6 | 258 %r6 = insertelement <16 x i1> %v, i1 %e, i32 6 |
| 259 %r7 = insertelement <16 x i1> %v, i1 %e, i32 7 | 259 %r7 = insertelement <16 x i1> %v, i1 %e, i32 7 |
| 260 %r8 = insertelement <16 x i1> %v, i1 %e, i32 8 | 260 %r8 = insertelement <16 x i1> %v, i1 %e, i32 8 |
| 261 %r9 = insertelement <16 x i1> %v, i1 %e, i32 9 | 261 %r9 = insertelement <16 x i1> %v, i1 %e, i32 9 |
| 262 %r10 = insertelement <16 x i1> %v, i1 %e, i32 10 | 262 %r10 = insertelement <16 x i1> %v, i1 %e, i32 10 |
| 263 %r11 = insertelement <16 x i1> %v, i1 %e, i32 11 | 263 %r11 = insertelement <16 x i1> %v, i1 %e, i32 11 |
| 264 %r12 = insertelement <16 x i1> %v, i1 %e, i32 12 | 264 %r12 = insertelement <16 x i1> %v, i1 %e, i32 12 |
| 265 %r13 = insertelement <16 x i1> %v, i1 %e, i32 13 | 265 %r13 = insertelement <16 x i1> %v, i1 %e, i32 13 |
| 266 %r14 = insertelement <16 x i1> %v, i1 %e, i32 14 | 266 %r14 = insertelement <16 x i1> %v, i1 %e, i32 14 |
| 267 %r15 = insertelement <16 x i1> %v, i1 %e, i32 15 | 267 %r15 = insertelement <16 x i1> %v, i1 %e, i32 15 |
| 268 ret <16 x i1> %r15 | 268 ret <16 x i1> %r15 |
| 269 } | 269 } |
| 270 | 270 |
| 271 ; CHECK-NEXT: define <16 x i1> @InsertV16xi1(<16 x i1> %v, i32 %pe) { | 271 ; CHECK-NEXT: define internal <16 x i1> @InsertV16xi1(<16 x i1> %v, i32 %pe) { |
| 272 ; CHECK-NEXT: entry: | 272 ; CHECK-NEXT: entry: |
| 273 ; CHECK-NEXT: %e = trunc i32 %pe to i1 | 273 ; CHECK-NEXT: %e = trunc i32 %pe to i1 |
| 274 ; CHECK-NEXT: %r0 = insertelement <16 x i1> %v, i1 %e, i32 0 | 274 ; CHECK-NEXT: %r0 = insertelement <16 x i1> %v, i1 %e, i32 0 |
| 275 ; CHECK-NEXT: %r1 = insertelement <16 x i1> %v, i1 %e, i32 1 | 275 ; CHECK-NEXT: %r1 = insertelement <16 x i1> %v, i1 %e, i32 1 |
| 276 ; CHECK-NEXT: %r2 = insertelement <16 x i1> %v, i1 %e, i32 2 | 276 ; CHECK-NEXT: %r2 = insertelement <16 x i1> %v, i1 %e, i32 2 |
| 277 ; CHECK-NEXT: %r3 = insertelement <16 x i1> %v, i1 %e, i32 3 | 277 ; CHECK-NEXT: %r3 = insertelement <16 x i1> %v, i1 %e, i32 3 |
| 278 ; CHECK-NEXT: %r4 = insertelement <16 x i1> %v, i1 %e, i32 4 | 278 ; CHECK-NEXT: %r4 = insertelement <16 x i1> %v, i1 %e, i32 4 |
| 279 ; CHECK-NEXT: %r5 = insertelement <16 x i1> %v, i1 %e, i32 5 | 279 ; CHECK-NEXT: %r5 = insertelement <16 x i1> %v, i1 %e, i32 5 |
| 280 ; CHECK-NEXT: %r6 = insertelement <16 x i1> %v, i1 %e, i32 6 | 280 ; CHECK-NEXT: %r6 = insertelement <16 x i1> %v, i1 %e, i32 6 |
| 281 ; CHECK-NEXT: %r7 = insertelement <16 x i1> %v, i1 %e, i32 7 | 281 ; CHECK-NEXT: %r7 = insertelement <16 x i1> %v, i1 %e, i32 7 |
| 282 ; CHECK-NEXT: %r8 = insertelement <16 x i1> %v, i1 %e, i32 8 | 282 ; CHECK-NEXT: %r8 = insertelement <16 x i1> %v, i1 %e, i32 8 |
| 283 ; CHECK-NEXT: %r9 = insertelement <16 x i1> %v, i1 %e, i32 9 | 283 ; CHECK-NEXT: %r9 = insertelement <16 x i1> %v, i1 %e, i32 9 |
| 284 ; CHECK-NEXT: %r10 = insertelement <16 x i1> %v, i1 %e, i32 10 | 284 ; CHECK-NEXT: %r10 = insertelement <16 x i1> %v, i1 %e, i32 10 |
| 285 ; CHECK-NEXT: %r11 = insertelement <16 x i1> %v, i1 %e, i32 11 | 285 ; CHECK-NEXT: %r11 = insertelement <16 x i1> %v, i1 %e, i32 11 |
| 286 ; CHECK-NEXT: %r12 = insertelement <16 x i1> %v, i1 %e, i32 12 | 286 ; CHECK-NEXT: %r12 = insertelement <16 x i1> %v, i1 %e, i32 12 |
| 287 ; CHECK-NEXT: %r13 = insertelement <16 x i1> %v, i1 %e, i32 13 | 287 ; CHECK-NEXT: %r13 = insertelement <16 x i1> %v, i1 %e, i32 13 |
| 288 ; CHECK-NEXT: %r14 = insertelement <16 x i1> %v, i1 %e, i32 14 | 288 ; CHECK-NEXT: %r14 = insertelement <16 x i1> %v, i1 %e, i32 14 |
| 289 ; CHECK-NEXT: %r15 = insertelement <16 x i1> %v, i1 %e, i32 15 | 289 ; CHECK-NEXT: %r15 = insertelement <16 x i1> %v, i1 %e, i32 15 |
| 290 ; CHECK-NEXT: ret <16 x i1> %r15 | 290 ; CHECK-NEXT: ret <16 x i1> %r15 |
| 291 ; CHECK-NEXT: } | 291 ; CHECK-NEXT: } |
| 292 | 292 |
| 293 define <16 x i8> @InsertV16xi8(<16 x i8> %v, i32 %pe) { | 293 define internal <16 x i8> @InsertV16xi8(<16 x i8> %v, i32 %pe) { |
| 294 entry: | 294 entry: |
| 295 %e = trunc i32 %pe to i8 | 295 %e = trunc i32 %pe to i8 |
| 296 %r0 = insertelement <16 x i8> %v, i8 %e, i32 0 | 296 %r0 = insertelement <16 x i8> %v, i8 %e, i32 0 |
| 297 %r1 = insertelement <16 x i8> %v, i8 %e, i32 1 | 297 %r1 = insertelement <16 x i8> %v, i8 %e, i32 1 |
| 298 %r2 = insertelement <16 x i8> %v, i8 %e, i32 2 | 298 %r2 = insertelement <16 x i8> %v, i8 %e, i32 2 |
| 299 %r3 = insertelement <16 x i8> %v, i8 %e, i32 3 | 299 %r3 = insertelement <16 x i8> %v, i8 %e, i32 3 |
| 300 %r4 = insertelement <16 x i8> %v, i8 %e, i32 4 | 300 %r4 = insertelement <16 x i8> %v, i8 %e, i32 4 |
| 301 %r5 = insertelement <16 x i8> %v, i8 %e, i32 5 | 301 %r5 = insertelement <16 x i8> %v, i8 %e, i32 5 |
| 302 %r6 = insertelement <16 x i8> %v, i8 %e, i32 6 | 302 %r6 = insertelement <16 x i8> %v, i8 %e, i32 6 |
| 303 %r7 = insertelement <16 x i8> %v, i8 %e, i32 7 | 303 %r7 = insertelement <16 x i8> %v, i8 %e, i32 7 |
| 304 ret <16 x i8> %r7 | 304 ret <16 x i8> %r7 |
| 305 } | 305 } |
| 306 | 306 |
| 307 ; CHECK-NEXT: define <16 x i8> @InsertV16xi8(<16 x i8> %v, i32 %pe) { | 307 ; CHECK-NEXT: define internal <16 x i8> @InsertV16xi8(<16 x i8> %v, i32 %pe) { |
| 308 ; CHECK-NEXT: entry: | 308 ; CHECK-NEXT: entry: |
| 309 ; CHECK-NEXT: %e = trunc i32 %pe to i8 | 309 ; CHECK-NEXT: %e = trunc i32 %pe to i8 |
| 310 ; CHECK-NEXT: %r0 = insertelement <16 x i8> %v, i8 %e, i32 0 | 310 ; CHECK-NEXT: %r0 = insertelement <16 x i8> %v, i8 %e, i32 0 |
| 311 ; CHECK-NEXT: %r1 = insertelement <16 x i8> %v, i8 %e, i32 1 | 311 ; CHECK-NEXT: %r1 = insertelement <16 x i8> %v, i8 %e, i32 1 |
| 312 ; CHECK-NEXT: %r2 = insertelement <16 x i8> %v, i8 %e, i32 2 | 312 ; CHECK-NEXT: %r2 = insertelement <16 x i8> %v, i8 %e, i32 2 |
| 313 ; CHECK-NEXT: %r3 = insertelement <16 x i8> %v, i8 %e, i32 3 | 313 ; CHECK-NEXT: %r3 = insertelement <16 x i8> %v, i8 %e, i32 3 |
| 314 ; CHECK-NEXT: %r4 = insertelement <16 x i8> %v, i8 %e, i32 4 | 314 ; CHECK-NEXT: %r4 = insertelement <16 x i8> %v, i8 %e, i32 4 |
| 315 ; CHECK-NEXT: %r5 = insertelement <16 x i8> %v, i8 %e, i32 5 | 315 ; CHECK-NEXT: %r5 = insertelement <16 x i8> %v, i8 %e, i32 5 |
| 316 ; CHECK-NEXT: %r6 = insertelement <16 x i8> %v, i8 %e, i32 6 | 316 ; CHECK-NEXT: %r6 = insertelement <16 x i8> %v, i8 %e, i32 6 |
| 317 ; CHECK-NEXT: %r7 = insertelement <16 x i8> %v, i8 %e, i32 7 | 317 ; CHECK-NEXT: %r7 = insertelement <16 x i8> %v, i8 %e, i32 7 |
| 318 ; CHECK-NEXT: ret <16 x i8> %r7 | 318 ; CHECK-NEXT: ret <16 x i8> %r7 |
| 319 ; CHECK-NEXT: } | 319 ; CHECK-NEXT: } |
| 320 | 320 |
| 321 define <8 x i16> @InsertV8xi16(<8 x i16> %v, i32 %pe) { | 321 define internal <8 x i16> @InsertV8xi16(<8 x i16> %v, i32 %pe) { |
| 322 entry: | 322 entry: |
| 323 %e = trunc i32 %pe to i16 | 323 %e = trunc i32 %pe to i16 |
| 324 %r0 = insertelement <8 x i16> %v, i16 %e, i32 0 | 324 %r0 = insertelement <8 x i16> %v, i16 %e, i32 0 |
| 325 %r1 = insertelement <8 x i16> %v, i16 %e, i32 1 | 325 %r1 = insertelement <8 x i16> %v, i16 %e, i32 1 |
| 326 %r2 = insertelement <8 x i16> %v, i16 %e, i32 2 | 326 %r2 = insertelement <8 x i16> %v, i16 %e, i32 2 |
| 327 %r3 = insertelement <8 x i16> %v, i16 %e, i32 3 | 327 %r3 = insertelement <8 x i16> %v, i16 %e, i32 3 |
| 328 %r4 = insertelement <8 x i16> %v, i16 %e, i32 4 | 328 %r4 = insertelement <8 x i16> %v, i16 %e, i32 4 |
| 329 %r5 = insertelement <8 x i16> %v, i16 %e, i32 5 | 329 %r5 = insertelement <8 x i16> %v, i16 %e, i32 5 |
| 330 %r6 = insertelement <8 x i16> %v, i16 %e, i32 6 | 330 %r6 = insertelement <8 x i16> %v, i16 %e, i32 6 |
| 331 %r7 = insertelement <8 x i16> %v, i16 %e, i32 7 | 331 %r7 = insertelement <8 x i16> %v, i16 %e, i32 7 |
| 332 ret <8 x i16> %r7 | 332 ret <8 x i16> %r7 |
| 333 } | 333 } |
| 334 | 334 |
| 335 ; CHECK-NEXT: define <8 x i16> @InsertV8xi16(<8 x i16> %v, i32 %pe) { | 335 ; CHECK-NEXT: define internal <8 x i16> @InsertV8xi16(<8 x i16> %v, i32 %pe) { |
| 336 ; CHECK-NEXT: entry: | 336 ; CHECK-NEXT: entry: |
| 337 ; CHECK-NEXT: %e = trunc i32 %pe to i16 | 337 ; CHECK-NEXT: %e = trunc i32 %pe to i16 |
| 338 ; CHECK-NEXT: %r0 = insertelement <8 x i16> %v, i16 %e, i32 0 | 338 ; CHECK-NEXT: %r0 = insertelement <8 x i16> %v, i16 %e, i32 0 |
| 339 ; CHECK-NEXT: %r1 = insertelement <8 x i16> %v, i16 %e, i32 1 | 339 ; CHECK-NEXT: %r1 = insertelement <8 x i16> %v, i16 %e, i32 1 |
| 340 ; CHECK-NEXT: %r2 = insertelement <8 x i16> %v, i16 %e, i32 2 | 340 ; CHECK-NEXT: %r2 = insertelement <8 x i16> %v, i16 %e, i32 2 |
| 341 ; CHECK-NEXT: %r3 = insertelement <8 x i16> %v, i16 %e, i32 3 | 341 ; CHECK-NEXT: %r3 = insertelement <8 x i16> %v, i16 %e, i32 3 |
| 342 ; CHECK-NEXT: %r4 = insertelement <8 x i16> %v, i16 %e, i32 4 | 342 ; CHECK-NEXT: %r4 = insertelement <8 x i16> %v, i16 %e, i32 4 |
| 343 ; CHECK-NEXT: %r5 = insertelement <8 x i16> %v, i16 %e, i32 5 | 343 ; CHECK-NEXT: %r5 = insertelement <8 x i16> %v, i16 %e, i32 5 |
| 344 ; CHECK-NEXT: %r6 = insertelement <8 x i16> %v, i16 %e, i32 6 | 344 ; CHECK-NEXT: %r6 = insertelement <8 x i16> %v, i16 %e, i32 6 |
| 345 ; CHECK-NEXT: %r7 = insertelement <8 x i16> %v, i16 %e, i32 7 | 345 ; CHECK-NEXT: %r7 = insertelement <8 x i16> %v, i16 %e, i32 7 |
| 346 ; CHECK-NEXT: ret <8 x i16> %r7 | 346 ; CHECK-NEXT: ret <8 x i16> %r7 |
| 347 ; CHECK-NEXT: } | 347 ; CHECK-NEXT: } |
| 348 | 348 |
| 349 define <4 x i32> @InsertV4xi32(<4 x i32> %v, i32 %e) { | 349 define internal <4 x i32> @InsertV4xi32(<4 x i32> %v, i32 %e) { |
| 350 entry: | 350 entry: |
| 351 %r0 = insertelement <4 x i32> %v, i32 %e, i32 0 | 351 %r0 = insertelement <4 x i32> %v, i32 %e, i32 0 |
| 352 %r1 = insertelement <4 x i32> %v, i32 %e, i32 1 | 352 %r1 = insertelement <4 x i32> %v, i32 %e, i32 1 |
| 353 %r2 = insertelement <4 x i32> %v, i32 %e, i32 2 | 353 %r2 = insertelement <4 x i32> %v, i32 %e, i32 2 |
| 354 %r3 = insertelement <4 x i32> %v, i32 %e, i32 3 | 354 %r3 = insertelement <4 x i32> %v, i32 %e, i32 3 |
| 355 ret <4 x i32> %r3 | 355 ret <4 x i32> %r3 |
| 356 } | 356 } |
| 357 | 357 |
| 358 ; CHECK-NEXT: define <4 x i32> @InsertV4xi32(<4 x i32> %v, i32 %e) { | 358 ; CHECK-NEXT: define internal <4 x i32> @InsertV4xi32(<4 x i32> %v, i32 %e) { |
| 359 ; CHECK-NEXT: entry: | 359 ; CHECK-NEXT: entry: |
| 360 ; CHECK-NEXT: %r0 = insertelement <4 x i32> %v, i32 %e, i32 0 | 360 ; CHECK-NEXT: %r0 = insertelement <4 x i32> %v, i32 %e, i32 0 |
| 361 ; CHECK-NEXT: %r1 = insertelement <4 x i32> %v, i32 %e, i32 1 | 361 ; CHECK-NEXT: %r1 = insertelement <4 x i32> %v, i32 %e, i32 1 |
| 362 ; CHECK-NEXT: %r2 = insertelement <4 x i32> %v, i32 %e, i32 2 | 362 ; CHECK-NEXT: %r2 = insertelement <4 x i32> %v, i32 %e, i32 2 |
| 363 ; CHECK-NEXT: %r3 = insertelement <4 x i32> %v, i32 %e, i32 3 | 363 ; CHECK-NEXT: %r3 = insertelement <4 x i32> %v, i32 %e, i32 3 |
| 364 ; CHECK-NEXT: ret <4 x i32> %r3 | 364 ; CHECK-NEXT: ret <4 x i32> %r3 |
| 365 ; CHECK-NEXT: } | 365 ; CHECK-NEXT: } |
| 366 | 366 |
| 367 define <4 x float> @InsertV4xfloat(<4 x float> %v, float %e) { | 367 define internal <4 x float> @InsertV4xfloat(<4 x float> %v, float %e) { |
| 368 entry: | 368 entry: |
| 369 %r0 = insertelement <4 x float> %v, float %e, i32 0 | 369 %r0 = insertelement <4 x float> %v, float %e, i32 0 |
| 370 %r1 = insertelement <4 x float> %v, float %e, i32 1 | 370 %r1 = insertelement <4 x float> %v, float %e, i32 1 |
| 371 %r2 = insertelement <4 x float> %v, float %e, i32 2 | 371 %r2 = insertelement <4 x float> %v, float %e, i32 2 |
| 372 %r3 = insertelement <4 x float> %v, float %e, i32 3 | 372 %r3 = insertelement <4 x float> %v, float %e, i32 3 |
| 373 ret <4 x float> %r3 | 373 ret <4 x float> %r3 |
| 374 } | 374 } |
| 375 | 375 |
| 376 ; CHECK-NEXT: define <4 x float> @InsertV4xfloat(<4 x float> %v, float %e) { | 376 ; CHECK-NEXT: define internal <4 x float> @InsertV4xfloat(<4 x float> %v, float
%e) { |
| 377 ; CHECK-NEXT: entry: | 377 ; CHECK-NEXT: entry: |
| 378 ; CHECK-NEXT: %r0 = insertelement <4 x float> %v, float %e, i32 0 | 378 ; CHECK-NEXT: %r0 = insertelement <4 x float> %v, float %e, i32 0 |
| 379 ; CHECK-NEXT: %r1 = insertelement <4 x float> %v, float %e, i32 1 | 379 ; CHECK-NEXT: %r1 = insertelement <4 x float> %v, float %e, i32 1 |
| 380 ; CHECK-NEXT: %r2 = insertelement <4 x float> %v, float %e, i32 2 | 380 ; CHECK-NEXT: %r2 = insertelement <4 x float> %v, float %e, i32 2 |
| 381 ; CHECK-NEXT: %r3 = insertelement <4 x float> %v, float %e, i32 3 | 381 ; CHECK-NEXT: %r3 = insertelement <4 x float> %v, float %e, i32 3 |
| 382 ; CHECK-NEXT: ret <4 x float> %r3 | 382 ; CHECK-NEXT: ret <4 x float> %r3 |
| 383 ; CHECK-NEXT: } | 383 ; CHECK-NEXT: } |
| 384 | 384 |
| 385 ; NOIR: Total across all functions | 385 ; NOIR: Total across all functions |
| OLD | NEW |