| OLD | NEW |
| 1 ; This file tests support for the select instruction with vector valued inputs. | 1 ; This file tests support for the select instruction with vector valued inputs. |
| 2 | 2 |
| 3 ; RUN: %p2i -i %s --filetype=obj --disassemble --args -O2 \ | 3 ; RUN: %p2i -i %s --filetype=obj --disassemble --args -O2 \ |
| 4 ; RUN: | FileCheck %s | 4 ; RUN: | FileCheck %s |
| 5 ; RUN: %p2i -i %s --filetype=obj --disassemble --args -Om1 \ | 5 ; RUN: %p2i -i %s --filetype=obj --disassemble --args -Om1 \ |
| 6 ; RUN: | FileCheck %s | 6 ; RUN: | FileCheck %s |
| 7 ; RUN: %p2i -i %s --filetype=obj --disassemble --args -O2 -mattr=sse4.1 \ | 7 ; RUN: %p2i -i %s --filetype=obj --disassemble --args -O2 -mattr=sse4.1 \ |
| 8 ; RUN: | FileCheck --check-prefix=SSE41 %s | 8 ; RUN: | FileCheck --check-prefix=SSE41 %s |
| 9 ; RUN: %p2i -i %s --filetype=obj --disassemble --args -Om1 -mattr=sse4.1 \ | 9 ; RUN: %p2i -i %s --filetype=obj --disassemble --args -Om1 -mattr=sse4.1 \ |
| 10 ; RUN: | FileCheck --check-prefix=SSE41 %s | 10 ; RUN: | FileCheck --check-prefix=SSE41 %s |
| (...skipping 11 matching lines...) Expand all Loading... |
| 22 ret <16 x i8> %res | 22 ret <16 x i8> %res |
| 23 ; CHECK-LABEL: test_select_v16i8 | 23 ; CHECK-LABEL: test_select_v16i8 |
| 24 ; CHECK: pand | 24 ; CHECK: pand |
| 25 ; CHECK: pandn | 25 ; CHECK: pandn |
| 26 ; CHECK: por | 26 ; CHECK: por |
| 27 | 27 |
| 28 ; SSE41-LABEL: test_select_v16i8 | 28 ; SSE41-LABEL: test_select_v16i8 |
| 29 ; SSE41: pblendvb xmm{{[0-7]}},{{xmm[0-7]|XMMWORD}} | 29 ; SSE41: pblendvb xmm{{[0-7]}},{{xmm[0-7]|XMMWORD}} |
| 30 | 30 |
| 31 ; MIPS32-LABEL: test_select_v16i8 | 31 ; MIPS32-LABEL: test_select_v16i8 |
| 32 ; MIPS32: addiu [[T0:.*]],sp,-20 | 32 ; MIPS32: addiu [[T0:.*]],sp,-32 |
| 33 ; MIPS32: sw [[T1:.*]], | 33 ; MIPS32: sw [[T1:.*]], |
| 34 ; MIPS32: sw [[T2:.*]], | 34 ; MIPS32: sw [[T2:.*]], |
| 35 ; MIPS32: sw [[T3:.*]], | 35 ; MIPS32: sw [[T3:.*]], |
| 36 ; MIPS32: sw [[T4:.*]], | 36 ; MIPS32: sw [[T4:.*]], |
| 37 ; MIPS32: sw [[T5:.*]], | 37 ; MIPS32: sw [[T5:.*]], |
| 38 ; MIPS32: lw [[T6:.*]], | 38 ; MIPS32: lw [[T6:.*]], |
| 39 ; MIPS32: lw [[T7:.*]], | 39 ; MIPS32: lw [[T7:.*]], |
| 40 ; MIPS32: lw [[T8:.*]], | 40 ; MIPS32: lw [[T8:.*]], |
| 41 ; MIPS32: lw [[T9:.*]], | 41 ; MIPS32: lw [[T9:.*]], |
| 42 ; MIPS32: lw [[T10:.*]], | 42 ; MIPS32: lw [[T10:.*]], |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 91 ; MIPS32: sll [[T1]],[[T1]],0x10 | 91 ; MIPS32: sll [[T1]],[[T1]],0x10 |
| 92 ; MIPS32: lui [[T14]],0xff00 | 92 ; MIPS32: lui [[T14]],0xff00 |
| 93 ; MIPS32: ori [[T14]],[[T14]],0xffff | 93 ; MIPS32: ori [[T14]],[[T14]],0xffff |
| 94 ; MIPS32: and [[T2]],[[T2]],[[T14]] | 94 ; MIPS32: and [[T2]],[[T2]],[[T14]] |
| 95 ; MIPS32: or [[T1]],[[T1]],[[T2]] | 95 ; MIPS32: or [[T1]],[[T1]],[[T2]] |
| 96 ; MIPS32: srl [[T16:.*]],a0,0x18 | 96 ; MIPS32: srl [[T16:.*]],a0,0x18 |
| 97 ; MIPS32: andi [[T16]],[[T16]],0x1 | 97 ; MIPS32: andi [[T16]],[[T16]],0x1 |
| 98 ; MIPS32: srl [[T6]],[[T6]],0x18 | 98 ; MIPS32: srl [[T6]],[[T6]],0x18 |
| 99 ; MIPS32: srl [[T10]],[[T10]],0x18 | 99 ; MIPS32: srl [[T10]],[[T10]],0x18 |
| 100 ; MIPS32: movn [[T10]],[[T6]],[[T16]] | 100 ; MIPS32: movn [[T10]],[[T6]],[[T16]] |
| 101 ; MIPS32: srl [[T10]],[[T10]],0x18 | 101 ; MIPS32: sll [[T10]],[[T10]],0x18 |
| 102 ; MIPS32: sll [[T1]],[[T1]],0x8 | 102 ; MIPS32: sll [[T1]],[[T1]],0x8 |
| 103 ; MIPS32: srl [[T1]],[[T1]],0x8 | 103 ; MIPS32: srl [[T1]],[[T1]],0x8 |
| 104 ; MIPS32: or [[T10]],[[T10]],[[T1]] | 104 ; MIPS32: or [[T10]],[[T10]],[[T1]] |
| 105 ; MIPS32: move [[T6]],a1 | 105 ; MIPS32: move [[T6]],a1 |
| 106 ; MIPS32: andi [[T6]],[[T6]],0xff | 106 ; MIPS32: andi [[T6]],[[T6]],0xff |
| 107 ; MIPS32: andi [[T6]],[[T6]],0x1 | 107 ; MIPS32: andi [[T6]],[[T6]],0x1 |
| 108 ; MIPS32: move [[T16]],[[T7]] | 108 ; MIPS32: move [[T16]],[[T7]] |
| 109 ; MIPS32: andi [[T16]],[[T16]],0xff | 109 ; MIPS32: andi [[T16]],[[T16]],0xff |
| 110 ; MIPS32: move [[T14]],[[T11]] | 110 ; MIPS32: move [[T14]],[[T11]] |
| 111 ; MIPS32: andi [[T14]],[[T14]],0xff | 111 ; MIPS32: andi [[T14]],[[T14]],0xff |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 146 ; MIPS32: sll [[T14]],[[T14]],0x10 | 146 ; MIPS32: sll [[T14]],[[T14]],0x10 |
| 147 ; MIPS32: lui [[T6]],0xff00 | 147 ; MIPS32: lui [[T6]],0xff00 |
| 148 ; MIPS32: ori [[T6]],[[T6]],0xffff | 148 ; MIPS32: ori [[T6]],[[T6]],0xffff |
| 149 ; MIPS32: and [[T15]],[[T15]],[[T6]] | 149 ; MIPS32: and [[T15]],[[T15]],[[T6]] |
| 150 ; MIPS32: or [[T14]],[[T14]],[[T15]] | 150 ; MIPS32: or [[T14]],[[T14]],[[T15]] |
| 151 ; MIPS32: srl [[T17:.*]],a1,0x18 | 151 ; MIPS32: srl [[T17:.*]],a1,0x18 |
| 152 ; MIPS32: andi [[T17]],[[T17]],0x1 | 152 ; MIPS32: andi [[T17]],[[T17]],0x1 |
| 153 ; MIPS32: srl [[T7]],[[T7]],0x18 | 153 ; MIPS32: srl [[T7]],[[T7]],0x18 |
| 154 ; MIPS32: srl [[T11]],[[T11]],0x18 | 154 ; MIPS32: srl [[T11]],[[T11]],0x18 |
| 155 ; MIPS32: movn [[T11]],[[T7]],[[T17]] | 155 ; MIPS32: movn [[T11]],[[T7]],[[T17]] |
| 156 ; MIPS32: srl [[T11]],[[T11]],0x18 | 156 ; MIPS32: sll [[T11]],[[T11]],0x18 |
| 157 ; MIPS32: sll [[T14]],[[T14]],0x8 | 157 ; MIPS32: sll [[T14]],[[T14]],0x8 |
| 158 ; MIPS32: srl [[T14]],[[T14]],0x8 | 158 ; MIPS32: srl [[T14]],[[T14]],0x8 |
| 159 ; MIPS32: or [[T11]],[[T11]],[[T14]] | 159 ; MIPS32: or [[T11]],[[T11]],[[T14]] |
| 160 ; MIPS32: move [[T6]],a2 | 160 ; MIPS32: move [[T6]],a2 |
| 161 ; MIPS32: andi [[T6]],[[T6]],0xff | 161 ; MIPS32: andi [[T6]],[[T6]],0xff |
| 162 ; MIPS32: andi [[T6]],[[T6]],0x1 | 162 ; MIPS32: andi [[T6]],[[T6]],0x1 |
| 163 ; MIPS32: move [[T7]],[[T8]] | 163 ; MIPS32: move [[T7]],[[T8]] |
| 164 ; MIPS32: andi [[T7]],[[T7]],0xff | 164 ; MIPS32: andi [[T7]],[[T7]],0xff |
| 165 ; MIPS32: move [[T16]],[[T12]] | 165 ; MIPS32: move [[T16]],[[T12]] |
| 166 ; MIPS32: andi [[T16]],[[T16]],0xff | 166 ; MIPS32: andi [[T16]],[[T16]],0xff |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 201 ; MIPS32: sll [[T16]],[[T16]],0x10 | 201 ; MIPS32: sll [[T16]],[[T16]],0x10 |
| 202 ; MIPS32: lui [[T6]],0xff00 | 202 ; MIPS32: lui [[T6]],0xff00 |
| 203 ; MIPS32: ori [[T6]],[[T6]],0xffff | 203 ; MIPS32: ori [[T6]],[[T6]],0xffff |
| 204 ; MIPS32: and [[T17]],[[T17]],[[T6]] | 204 ; MIPS32: and [[T17]],[[T17]],[[T6]] |
| 205 ; MIPS32: or [[T16]],[[T16]],[[T17]] | 205 ; MIPS32: or [[T16]],[[T16]],[[T17]] |
| 206 ; MIPS32: srl [[T18:.*]],a2,0x18 | 206 ; MIPS32: srl [[T18:.*]],a2,0x18 |
| 207 ; MIPS32: andi [[T18]],[[T18]],0x1 | 207 ; MIPS32: andi [[T18]],[[T18]],0x1 |
| 208 ; MIPS32: srl [[T8]],[[T8]],0x18 | 208 ; MIPS32: srl [[T8]],[[T8]],0x18 |
| 209 ; MIPS32: srl [[T12]],[[T12]],0x18 | 209 ; MIPS32: srl [[T12]],[[T12]],0x18 |
| 210 ; MIPS32: movn [[T12]],[[T8]],[[T18]] | 210 ; MIPS32: movn [[T12]],[[T8]],[[T18]] |
| 211 ; MIPS32: srl [[T12]],[[T12]],0x18 | 211 ; MIPS32: sll [[T12]],[[T12]],0x18 |
| 212 ; MIPS32: sll [[T16]],[[T16]],0x8 | 212 ; MIPS32: sll [[T16]],[[T16]],0x8 |
| 213 ; MIPS32: srl [[T16]],[[T16]],0x8 | 213 ; MIPS32: srl [[T16]],[[T16]],0x8 |
| 214 ; MIPS32: or [[T12]],[[T12]],[[T16]] | 214 ; MIPS32: or [[T12]],[[T12]],[[T16]] |
| 215 ; MIPS32: move [[T6]],a3 | 215 ; MIPS32: move [[T6]],a3 |
| 216 ; MIPS32: andi [[T6]],[[T6]],0xff | 216 ; MIPS32: andi [[T6]],[[T6]],0xff |
| 217 ; MIPS32: andi [[T6]],[[T6]],0x1 | 217 ; MIPS32: andi [[T6]],[[T6]],0x1 |
| 218 ; MIPS32: move [[T7]],[[T9]] | 218 ; MIPS32: move [[T7]],[[T9]] |
| 219 ; MIPS32: andi [[T7]],[[T7]],0xff | 219 ; MIPS32: andi [[T7]],[[T7]],0xff |
| 220 ; MIPS32: move [[T16]],[[T13]] | 220 ; MIPS32: move [[T16]],[[T13]] |
| 221 ; MIPS32: andi [[T16]],[[T16]],0xff | 221 ; MIPS32: andi [[T16]],[[T16]],0xff |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 256 ; MIPS32: sll [[T16]],[[T16]],0x10 | 256 ; MIPS32: sll [[T16]],[[T16]],0x10 |
| 257 ; MIPS32: lui [[T6]],0xff00 | 257 ; MIPS32: lui [[T6]],0xff00 |
| 258 ; MIPS32: ori [[T6]],[[T6]],0xffff | 258 ; MIPS32: ori [[T6]],[[T6]],0xffff |
| 259 ; MIPS32: and [[T17]],[[T17]],[[T6]] | 259 ; MIPS32: and [[T17]],[[T17]],[[T6]] |
| 260 ; MIPS32: or [[T16]],[[T16]],[[T17]] | 260 ; MIPS32: or [[T16]],[[T16]],[[T17]] |
| 261 ; MIPS32: srl [[T19:.*]],a3,0x18 | 261 ; MIPS32: srl [[T19:.*]],a3,0x18 |
| 262 ; MIPS32: andi [[T19]],[[T19]],0x1 | 262 ; MIPS32: andi [[T19]],[[T19]],0x1 |
| 263 ; MIPS32: srl [[T9]],[[T9]],0x18 | 263 ; MIPS32: srl [[T9]],[[T9]],0x18 |
| 264 ; MIPS32: srl [[T13]],[[T13]],0x18 | 264 ; MIPS32: srl [[T13]],[[T13]],0x18 |
| 265 ; MIPS32: movn [[T13]],[[T9]],[[T19]] | 265 ; MIPS32: movn [[T13]],[[T9]],[[T19]] |
| 266 ; MIPS32: srl [[T13]],[[T13]],0x18 | 266 ; MIPS32: sll [[T13]],[[T13]],0x18 |
| 267 ; MIPS32: sll [[T16]],[[T16]],0x8 | 267 ; MIPS32: sll [[T16]],[[T16]],0x8 |
| 268 ; MIPS32: srl [[T16]],[[T16]],0x8 | 268 ; MIPS32: srl [[T16]],[[T16]],0x8 |
| 269 ; MIPS32: or [[T13]],[[T13]],[[T16]] | 269 ; MIPS32: or [[T13]],[[T13]],[[T16]] |
| 270 ; MIPS32: move v0,[[T10]] | 270 ; MIPS32: move v0,[[T10]] |
| 271 ; MIPS32: move v1,[[T11]] | 271 ; MIPS32: move v1,[[T11]] |
| 272 ; MIPS32: move a0,[[T12]] | 272 ; MIPS32: move a0,[[T12]] |
| 273 ; MIPS32: move a1,[[T13]] | 273 ; MIPS32: move a1,[[T13]] |
| 274 ; MIPS32: lw [[T5]], | 274 ; MIPS32: lw [[T5]], |
| 275 ; MIPS32: lw [[T4]], | 275 ; MIPS32: lw [[T4]], |
| 276 ; MIPS32: lw [[T3]], | 276 ; MIPS32: lw [[T3]], |
| 277 ; MIPS32: lw [[T2]], | 277 ; MIPS32: lw [[T2]], |
| 278 ; MIPS32: lw [[T1]], | 278 ; MIPS32: lw [[T1]], |
| 279 ; MIPS32: addiu [[T0]],sp,20 | 279 ; MIPS32: addiu [[T0]],sp,32 |
| 280 } | 280 } |
| 281 | 281 |
| 282 define internal <16 x i1> @test_select_v16i1(<16 x i1> %cond, <16 x i1> %arg1, | 282 define internal <16 x i1> @test_select_v16i1(<16 x i1> %cond, <16 x i1> %arg1, |
| 283 <16 x i1> %arg2) { | 283 <16 x i1> %arg2) { |
| 284 entry: | 284 entry: |
| 285 %res = select <16 x i1> %cond, <16 x i1> %arg1, <16 x i1> %arg2 | 285 %res = select <16 x i1> %cond, <16 x i1> %arg1, <16 x i1> %arg2 |
| 286 ret <16 x i1> %res | 286 ret <16 x i1> %res |
| 287 ; CHECK-LABEL: test_select_v16i1 | 287 ; CHECK-LABEL: test_select_v16i1 |
| 288 ; CHECK: pand | 288 ; CHECK: pand |
| 289 ; CHECK: pandn | 289 ; CHECK: pandn |
| 290 ; CHECK: por | 290 ; CHECK: por |
| 291 | 291 |
| 292 ; SSE41-LABEL: test_select_v16i1 | 292 ; SSE41-LABEL: test_select_v16i1 |
| 293 ; SSE41: pblendvb xmm{{[0-7]}},{{xmm[0-7]|XMMWORD}} | 293 ; SSE41: pblendvb xmm{{[0-7]}},{{xmm[0-7]|XMMWORD}} |
| 294 | 294 |
| 295 ; MIPS32-LABEL: test_select_v16i1 | 295 ; MIPS32-LABEL: test_select_v16i1 |
| 296 ; MIPS32: addiu [[T0:.*]],sp,-20 | 296 ; MIPS32: addiu [[T0:.*]],sp,-32 |
| 297 ; MIPS32: sw [[T1:.*]], | 297 ; MIPS32: sw [[T1:.*]], |
| 298 ; MIPS32: sw [[T2:.*]], | 298 ; MIPS32: sw [[T2:.*]], |
| 299 ; MIPS32: sw [[T3:.*]], | 299 ; MIPS32: sw [[T3:.*]], |
| 300 ; MIPS32: sw [[T4:.*]], | 300 ; MIPS32: sw [[T4:.*]], |
| 301 ; MIPS32: sw [[T5:.*]], | 301 ; MIPS32: sw [[T5:.*]], |
| 302 ; MIPS32: lw [[T6:.*]], | 302 ; MIPS32: lw [[T6:.*]], |
| 303 ; MIPS32: lw [[T7:.*]], | 303 ; MIPS32: lw [[T7:.*]], |
| 304 ; MIPS32: lw [[T8:.*]], | 304 ; MIPS32: lw [[T8:.*]], |
| 305 ; MIPS32: lw [[T9:.*]], | 305 ; MIPS32: lw [[T9:.*]], |
| 306 ; MIPS32: lw [[T10:.*]], | 306 ; MIPS32: lw [[T10:.*]], |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 363 ; MIPS32: ori [[T14]],[[T14]],0xffff | 363 ; MIPS32: ori [[T14]],[[T14]],0xffff |
| 364 ; MIPS32: and [[T2]],[[T2]],[[T14]] | 364 ; MIPS32: and [[T2]],[[T2]],[[T14]] |
| 365 ; MIPS32: or [[T1]],[[T1]],[[T2]] | 365 ; MIPS32: or [[T1]],[[T1]],[[T2]] |
| 366 ; MIPS32: srl [[T16:.*]],a0,0x18 | 366 ; MIPS32: srl [[T16:.*]],a0,0x18 |
| 367 ; MIPS32: andi [[T16]],[[T16]],0x1 | 367 ; MIPS32: andi [[T16]],[[T16]],0x1 |
| 368 ; MIPS32: srl [[T6]],[[T6]],0x18 | 368 ; MIPS32: srl [[T6]],[[T6]],0x18 |
| 369 ; MIPS32: andi [[T6]],[[T6]],0x1 | 369 ; MIPS32: andi [[T6]],[[T6]],0x1 |
| 370 ; MIPS32: srl [[T10]],[[T10]],0x18 | 370 ; MIPS32: srl [[T10]],[[T10]],0x18 |
| 371 ; MIPS32: andi [[T10]],[[T10]],0x1 | 371 ; MIPS32: andi [[T10]],[[T10]],0x1 |
| 372 ; MIPS32: movn [[T10]],[[T6]],[[T16]] | 372 ; MIPS32: movn [[T10]],[[T6]],[[T16]] |
| 373 ; MIPS32: srl [[T10]],[[T10]],0x18 | 373 ; MIPS32: sll [[T10]],[[T10]],0x18 |
| 374 ; MIPS32: sll [[T1]],[[T1]],0x8 | 374 ; MIPS32: sll [[T1]],[[T1]],0x8 |
| 375 ; MIPS32: srl [[T1]],[[T1]],0x8 | 375 ; MIPS32: srl [[T1]],[[T1]],0x8 |
| 376 ; MIPS32: or [[T10]],[[T10]],[[T1]] | 376 ; MIPS32: or [[T10]],[[T10]],[[T1]] |
| 377 ; MIPS32: move [[T6]],a1 | 377 ; MIPS32: move [[T6]],a1 |
| 378 ; MIPS32: andi [[T6]],[[T6]],0xff | 378 ; MIPS32: andi [[T6]],[[T6]],0xff |
| 379 ; MIPS32: andi [[T6]],[[T6]],0x1 | 379 ; MIPS32: andi [[T6]],[[T6]],0x1 |
| 380 ; MIPS32: move [[T16]],[[T7]] | 380 ; MIPS32: move [[T16]],[[T7]] |
| 381 ; MIPS32: andi [[T16]],[[T16]],0xff | 381 ; MIPS32: andi [[T16]],[[T16]],0xff |
| 382 ; MIPS32: andi [[T16]],[[T16]],0x1 | 382 ; MIPS32: andi [[T16]],[[T16]],0x1 |
| 383 ; MIPS32: move [[T14]],[[T11]] | 383 ; MIPS32: move [[T14]],[[T11]] |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 426 ; MIPS32: ori [[T6]],[[T6]],0xffff | 426 ; MIPS32: ori [[T6]],[[T6]],0xffff |
| 427 ; MIPS32: and [[T15]],[[T15]],[[T6]] | 427 ; MIPS32: and [[T15]],[[T15]],[[T6]] |
| 428 ; MIPS32: or [[T14]],[[T14]],[[T15]] | 428 ; MIPS32: or [[T14]],[[T14]],[[T15]] |
| 429 ; MIPS32: srl [[T17:.*]],a1,0x18 | 429 ; MIPS32: srl [[T17:.*]],a1,0x18 |
| 430 ; MIPS32: andi [[T17]],[[T17]],0x1 | 430 ; MIPS32: andi [[T17]],[[T17]],0x1 |
| 431 ; MIPS32: srl [[T7]],[[T7]],0x18 | 431 ; MIPS32: srl [[T7]],[[T7]],0x18 |
| 432 ; MIPS32: andi [[T7]],[[T7]],0x1 | 432 ; MIPS32: andi [[T7]],[[T7]],0x1 |
| 433 ; MIPS32: srl [[T11]],[[T11]],0x18 | 433 ; MIPS32: srl [[T11]],[[T11]],0x18 |
| 434 ; MIPS32: andi [[T11]],[[T11]],0x1 | 434 ; MIPS32: andi [[T11]],[[T11]],0x1 |
| 435 ; MIPS32: movn [[T11]],[[T7]],[[T17]] | 435 ; MIPS32: movn [[T11]],[[T7]],[[T17]] |
| 436 ; MIPS32: srl [[T11]],[[T11]],0x18 | 436 ; MIPS32: sll [[T11]],[[T11]],0x18 |
| 437 ; MIPS32: sll [[T14]],[[T14]],0x8 | 437 ; MIPS32: sll [[T14]],[[T14]],0x8 |
| 438 ; MIPS32: srl [[T14]],[[T14]],0x8 | 438 ; MIPS32: srl [[T14]],[[T14]],0x8 |
| 439 ; MIPS32: or [[T11]],[[T11]],[[T14]] | 439 ; MIPS32: or [[T11]],[[T11]],[[T14]] |
| 440 ; MIPS32: move [[T6]],a2 | 440 ; MIPS32: move [[T6]],a2 |
| 441 ; MIPS32: andi [[T6]],[[T6]],0xff | 441 ; MIPS32: andi [[T6]],[[T6]],0xff |
| 442 ; MIPS32: andi [[T6]],[[T6]],0x1 | 442 ; MIPS32: andi [[T6]],[[T6]],0x1 |
| 443 ; MIPS32: move [[T7]],[[T8]] | 443 ; MIPS32: move [[T7]],[[T8]] |
| 444 ; MIPS32: andi [[T7]],[[T7]],0xff | 444 ; MIPS32: andi [[T7]],[[T7]],0xff |
| 445 ; MIPS32: andi [[T7]],[[T7]],0x1 | 445 ; MIPS32: andi [[T7]],[[T7]],0x1 |
| 446 ; MIPS32: move [[T16]],[[T12]] | 446 ; MIPS32: move [[T16]],[[T12]] |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 489 ; MIPS32: ori [[T6]],[[T6]],0xffff | 489 ; MIPS32: ori [[T6]],[[T6]],0xffff |
| 490 ; MIPS32: and [[T17]],[[T17]],[[T6]] | 490 ; MIPS32: and [[T17]],[[T17]],[[T6]] |
| 491 ; MIPS32: or [[T16]],[[T16]],[[T17]] | 491 ; MIPS32: or [[T16]],[[T16]],[[T17]] |
| 492 ; MIPS32: srl [[T18:.*]],a2,0x18 | 492 ; MIPS32: srl [[T18:.*]],a2,0x18 |
| 493 ; MIPS32: andi [[T18]],[[T18]],0x1 | 493 ; MIPS32: andi [[T18]],[[T18]],0x1 |
| 494 ; MIPS32: srl [[T8]],[[T8]],0x18 | 494 ; MIPS32: srl [[T8]],[[T8]],0x18 |
| 495 ; MIPS32: andi [[T8]],[[T8]],0x1 | 495 ; MIPS32: andi [[T8]],[[T8]],0x1 |
| 496 ; MIPS32: srl [[T12]],[[T12]],0x18 | 496 ; MIPS32: srl [[T12]],[[T12]],0x18 |
| 497 ; MIPS32: andi [[T12]],[[T12]],0x1 | 497 ; MIPS32: andi [[T12]],[[T12]],0x1 |
| 498 ; MIPS32: movn [[T12]],[[T8]],[[T18]] | 498 ; MIPS32: movn [[T12]],[[T8]],[[T18]] |
| 499 ; MIPS32: srl [[T12]],[[T12]],0x18 | 499 ; MIPS32: sll [[T12]],[[T12]],0x18 |
| 500 ; MIPS32: sll [[T16]],[[T16]],0x8 | 500 ; MIPS32: sll [[T16]],[[T16]],0x8 |
| 501 ; MIPS32: srl [[T16]],[[T16]],0x8 | 501 ; MIPS32: srl [[T16]],[[T16]],0x8 |
| 502 ; MIPS32: or [[T12]],[[T12]],[[T16]] | 502 ; MIPS32: or [[T12]],[[T12]],[[T16]] |
| 503 ; MIPS32: move [[T6]],a3 | 503 ; MIPS32: move [[T6]],a3 |
| 504 ; MIPS32: andi [[T6]],[[T6]],0xff | 504 ; MIPS32: andi [[T6]],[[T6]],0xff |
| 505 ; MIPS32: andi [[T6]],[[T6]],0x1 | 505 ; MIPS32: andi [[T6]],[[T6]],0x1 |
| 506 ; MIPS32: move [[T7]],[[T9]] | 506 ; MIPS32: move [[T7]],[[T9]] |
| 507 ; MIPS32: andi [[T7]],[[T7]],0xff | 507 ; MIPS32: andi [[T7]],[[T7]],0xff |
| 508 ; MIPS32: andi [[T7]],[[T7]],0x1 | 508 ; MIPS32: andi [[T7]],[[T7]],0x1 |
| 509 ; MIPS32: move [[T16]],[[T13]] | 509 ; MIPS32: move [[T16]],[[T13]] |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 552 ; MIPS32: ori [[T6]],[[T6]],0xffff | 552 ; MIPS32: ori [[T6]],[[T6]],0xffff |
| 553 ; MIPS32: and [[T17]],[[T17]],[[T6]] | 553 ; MIPS32: and [[T17]],[[T17]],[[T6]] |
| 554 ; MIPS32: or [[T16]],[[T16]],[[T17]] | 554 ; MIPS32: or [[T16]],[[T16]],[[T17]] |
| 555 ; MIPS32: srl [[T19:.*]],a3,0x18 | 555 ; MIPS32: srl [[T19:.*]],a3,0x18 |
| 556 ; MIPS32: andi [[T19]],[[T19]],0x1 | 556 ; MIPS32: andi [[T19]],[[T19]],0x1 |
| 557 ; MIPS32: srl [[T9]],[[T9]],0x18 | 557 ; MIPS32: srl [[T9]],[[T9]],0x18 |
| 558 ; MIPS32: andi [[T9]],[[T9]],0x1 | 558 ; MIPS32: andi [[T9]],[[T9]],0x1 |
| 559 ; MIPS32: srl [[T13]],[[T13]],0x18 | 559 ; MIPS32: srl [[T13]],[[T13]],0x18 |
| 560 ; MIPS32: andi [[T13]],[[T13]],0x1 | 560 ; MIPS32: andi [[T13]],[[T13]],0x1 |
| 561 ; MIPS32: movn [[T13]],[[T9]],[[T19]] | 561 ; MIPS32: movn [[T13]],[[T9]],[[T19]] |
| 562 ; MIPS32: srl [[T13]],[[T13]],0x18 | 562 ; MIPS32: sll [[T13]],[[T13]],0x18 |
| 563 ; MIPS32: sll [[T16]],[[T16]],0x8 | 563 ; MIPS32: sll [[T16]],[[T16]],0x8 |
| 564 ; MIPS32: srl [[T16]],[[T16]],0x8 | 564 ; MIPS32: srl [[T16]],[[T16]],0x8 |
| 565 ; MIPS32: or [[T13]],[[T13]],[[T16]] | 565 ; MIPS32: or [[T13]],[[T13]],[[T16]] |
| 566 ; MIPS32: move v0,[[T10]] | 566 ; MIPS32: move v0,[[T10]] |
| 567 ; MIPS32: move v1,[[T11]] | 567 ; MIPS32: move v1,[[T11]] |
| 568 ; MIPS32: move a0,[[T12]] | 568 ; MIPS32: move a0,[[T12]] |
| 569 ; MIPS32: move a1,[[T13]] | 569 ; MIPS32: move a1,[[T13]] |
| 570 ; MIPS32: lw [[T5]], | 570 ; MIPS32: lw [[T5]], |
| 571 ; MIPS32: lw [[T4]], | 571 ; MIPS32: lw [[T4]], |
| 572 ; MIPS32: lw [[T3]], | 572 ; MIPS32: lw [[T3]], |
| 573 ; MIPS32: lw [[T2]], | 573 ; MIPS32: lw [[T2]], |
| 574 ; MIPS32: lw [[T1]], | 574 ; MIPS32: lw [[T1]], |
| 575 ; MIPS32: addiu [[T0]],sp,20 | 575 ; MIPS32: addiu [[T0]],sp,32 |
| 576 } | 576 } |
| 577 | 577 |
| 578 define internal <8 x i16> @test_select_v8i16(<8 x i1> %cond, <8 x i16> %arg1, | 578 define internal <8 x i16> @test_select_v8i16(<8 x i1> %cond, <8 x i16> %arg1, |
| 579 <8 x i16> %arg2) { | 579 <8 x i16> %arg2) { |
| 580 entry: | 580 entry: |
| 581 %res = select <8 x i1> %cond, <8 x i16> %arg1, <8 x i16> %arg2 | 581 %res = select <8 x i1> %cond, <8 x i16> %arg1, <8 x i16> %arg2 |
| 582 ret <8 x i16> %res | 582 ret <8 x i16> %res |
| 583 ; CHECK-LABEL: test_select_v8i16 | 583 ; CHECK-LABEL: test_select_v8i16 |
| 584 ; CHECK: pand | 584 ; CHECK: pand |
| 585 ; CHECK: pandn | 585 ; CHECK: pandn |
| 586 ; CHECK: por | 586 ; CHECK: por |
| 587 | 587 |
| 588 ; SSE41-LABEL: test_select_v8i16 | 588 ; SSE41-LABEL: test_select_v8i16 |
| 589 ; SSE41: pblendvb xmm{{[0-7]}},{{xmm[0-7]|XMMWORD}} | 589 ; SSE41: pblendvb xmm{{[0-7]}},{{xmm[0-7]|XMMWORD}} |
| 590 | 590 |
| 591 ; MIPS32-LABEL: test_select_v8i16 | 591 ; MIPS32-LABEL: test_select_v8i16 |
| 592 ; MIPS32: addiu [[T0:.*]],sp,-20 | 592 ; MIPS32: addiu [[T0:.*]],sp,-32 |
| 593 ; MIPS32: sw [[T1:.*]], | 593 ; MIPS32: sw [[T1:.*]], |
| 594 ; MIPS32: sw [[T2:.*]], | 594 ; MIPS32: sw [[T2:.*]], |
| 595 ; MIPS32: sw [[T3:.*]], | 595 ; MIPS32: sw [[T3:.*]], |
| 596 ; MIPS32: sw [[T4:.*]], | 596 ; MIPS32: sw [[T4:.*]], |
| 597 ; MIPS32: sw [[T5:.*]], | 597 ; MIPS32: sw [[T5:.*]], |
| 598 ; MIPS32: lw [[T6:.*]], | 598 ; MIPS32: lw [[T6:.*]], |
| 599 ; MIPS32: lw [[T7:.*]], | 599 ; MIPS32: lw [[T7:.*]], |
| 600 ; MIPS32: lw [[T8:.*]], | 600 ; MIPS32: lw [[T8:.*]], |
| 601 ; MIPS32: lw [[T9:.*]], | 601 ; MIPS32: lw [[T9:.*]], |
| 602 ; MIPS32: lw [[T10:.*]], | 602 ; MIPS32: lw [[T10:.*]], |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 693 ; MIPS32: or [[T13]],[[T13]],[[T16]] | 693 ; MIPS32: or [[T13]],[[T13]],[[T16]] |
| 694 ; MIPS32: move v0,[[T10]] | 694 ; MIPS32: move v0,[[T10]] |
| 695 ; MIPS32: move v1,[[T11]] | 695 ; MIPS32: move v1,[[T11]] |
| 696 ; MIPS32: move a0,[[T12]] | 696 ; MIPS32: move a0,[[T12]] |
| 697 ; MIPS32: move a1,[[T13]] | 697 ; MIPS32: move a1,[[T13]] |
| 698 ; MIPS32: lw [[T5]], | 698 ; MIPS32: lw [[T5]], |
| 699 ; MIPS32: lw [[T4]], | 699 ; MIPS32: lw [[T4]], |
| 700 ; MIPS32: lw [[T3]], | 700 ; MIPS32: lw [[T3]], |
| 701 ; MIPS32: lw [[T2]], | 701 ; MIPS32: lw [[T2]], |
| 702 ; MIPS32: lw [[T1]], | 702 ; MIPS32: lw [[T1]], |
| 703 ; MIPS32: addiu [[T0]],sp,20 | 703 ; MIPS32: addiu [[T0]],sp,32 |
| 704 } | 704 } |
| 705 | 705 |
| 706 define internal <8 x i1> @test_select_v8i1(<8 x i1> %cond, <8 x i1> %arg1, | 706 define internal <8 x i1> @test_select_v8i1(<8 x i1> %cond, <8 x i1> %arg1, |
| 707 <8 x i1> %arg2) { | 707 <8 x i1> %arg2) { |
| 708 entry: | 708 entry: |
| 709 %res = select <8 x i1> %cond, <8 x i1> %arg1, <8 x i1> %arg2 | 709 %res = select <8 x i1> %cond, <8 x i1> %arg1, <8 x i1> %arg2 |
| 710 ret <8 x i1> %res | 710 ret <8 x i1> %res |
| 711 ; CHECK-LABEL: test_select_v8i1 | 711 ; CHECK-LABEL: test_select_v8i1 |
| 712 ; CHECK: pand | 712 ; CHECK: pand |
| 713 ; CHECK: pandn | 713 ; CHECK: pandn |
| 714 ; CHECK: por | 714 ; CHECK: por |
| 715 | 715 |
| 716 ; SSE41-LABEL: test_select_v8i1 | 716 ; SSE41-LABEL: test_select_v8i1 |
| 717 ; SSE41: pblendvb xmm{{[0-7]}},{{xmm[0-7]|XMMWORD}} | 717 ; SSE41: pblendvb xmm{{[0-7]}},{{xmm[0-7]|XMMWORD}} |
| 718 | 718 |
| 719 ; MIPS32-LABEL: test_select_v8i1 | 719 ; MIPS32-LABEL: test_select_v8i1 |
| 720 ; MIPS32: addiu [[T0:.*]],sp,-20 | 720 ; MIPS32: addiu [[T0:.*]],sp,-32 |
| 721 ; MIPS32: sw [[T1:.*]], | 721 ; MIPS32: sw [[T1:.*]], |
| 722 ; MIPS32: sw [[T2:.*]], | 722 ; MIPS32: sw [[T2:.*]], |
| 723 ; MIPS32: sw [[T3:.*]], | 723 ; MIPS32: sw [[T3:.*]], |
| 724 ; MIPS32: sw [[T4:.*]], | 724 ; MIPS32: sw [[T4:.*]], |
| 725 ; MIPS32: sw [[T5:.*]], | 725 ; MIPS32: sw [[T5:.*]], |
| 726 ; MIPS32: lw [[T6:.*]], | 726 ; MIPS32: lw [[T6:.*]], |
| 727 ; MIPS32: lw [[T7:.*]], | 727 ; MIPS32: lw [[T7:.*]], |
| 728 ; MIPS32: lw [[T8:.*]], | 728 ; MIPS32: lw [[T8:.*]], |
| 729 ; MIPS32: lw [[T9:.*]], | 729 ; MIPS32: lw [[T9:.*]], |
| 730 ; MIPS32: lw [[T10:.*]], | 730 ; MIPS32: lw [[T10:.*]], |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 837 ; MIPS32: or [[T13]],[[T13]],[[T16]] | 837 ; MIPS32: or [[T13]],[[T13]],[[T16]] |
| 838 ; MIPS32: move v0,[[T10]] | 838 ; MIPS32: move v0,[[T10]] |
| 839 ; MIPS32: move v1,[[T11]] | 839 ; MIPS32: move v1,[[T11]] |
| 840 ; MIPS32: move a0,[[T12]] | 840 ; MIPS32: move a0,[[T12]] |
| 841 ; MIPS32: move a1,[[T13]] | 841 ; MIPS32: move a1,[[T13]] |
| 842 ; MIPS32: lw [[T5]], | 842 ; MIPS32: lw [[T5]], |
| 843 ; MIPS32: lw [[T4]], | 843 ; MIPS32: lw [[T4]], |
| 844 ; MIPS32: lw [[T3]], | 844 ; MIPS32: lw [[T3]], |
| 845 ; MIPS32: lw [[T2]], | 845 ; MIPS32: lw [[T2]], |
| 846 ; MIPS32: lw [[T1]], | 846 ; MIPS32: lw [[T1]], |
| 847 ; MIPS32: addiu [[T0]],sp,20 | 847 ; MIPS32: addiu [[T0]],sp,32 |
| 848 } | 848 } |
| 849 | 849 |
| 850 define internal <4 x i32> @test_select_v4i32(<4 x i1> %cond, <4 x i32> %arg1, | 850 define internal <4 x i32> @test_select_v4i32(<4 x i1> %cond, <4 x i32> %arg1, |
| 851 <4 x i32> %arg2) { | 851 <4 x i32> %arg2) { |
| 852 entry: | 852 entry: |
| 853 %res = select <4 x i1> %cond, <4 x i32> %arg1, <4 x i32> %arg2 | 853 %res = select <4 x i1> %cond, <4 x i32> %arg1, <4 x i32> %arg2 |
| 854 ret <4 x i32> %res | 854 ret <4 x i32> %res |
| 855 ; CHECK-LABEL: test_select_v4i32 | 855 ; CHECK-LABEL: test_select_v4i32 |
| 856 ; CHECK: pand | 856 ; CHECK: pand |
| 857 ; CHECK: pandn | 857 ; CHECK: pandn |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 974 ; MIPS32: movn [[T6]],[[T2]],[[T10]] | 974 ; MIPS32: movn [[T6]],[[T2]],[[T10]] |
| 975 ; MIPS32: andi [[T11:.*]],a3,0x1 | 975 ; MIPS32: andi [[T11:.*]],a3,0x1 |
| 976 ; MIPS32: andi [[T3]],[[T3]],0x1 | 976 ; MIPS32: andi [[T3]],[[T3]],0x1 |
| 977 ; MIPS32: andi [[T7]],[[T7]],0x1 | 977 ; MIPS32: andi [[T7]],[[T7]],0x1 |
| 978 ; MIPS32: movn [[T7]],[[T3]],[[T11]] | 978 ; MIPS32: movn [[T7]],[[T3]],[[T11]] |
| 979 ; MIPS32: move v0,[[T4]] | 979 ; MIPS32: move v0,[[T4]] |
| 980 ; MIPS32: move v1,[[T5]] | 980 ; MIPS32: move v1,[[T5]] |
| 981 ; MIPS32: move a0,[[T6]] | 981 ; MIPS32: move a0,[[T6]] |
| 982 ; MIPS32: move a1,[[T7]] | 982 ; MIPS32: move a1,[[T7]] |
| 983 } | 983 } |
| OLD | NEW |