1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 2 2# RUN: llc -mtriple=i386-linux-gnu -run-pass=legalizer %s -o - | FileCheck %s --check-prefixes=CHECK,X86 3# RUN: llc -mtriple=x86_64-linux-gnu -run-pass=legalizer %s -o - | FileCheck %s --check-prefixes=CHECK,X64 4 5# test select 6 7... 8--- 9name: test_selectp0 10body: | 11 bb.1: 12 ; CHECK-LABEL: name: test_selectp0 13 ; CHECK: [[DEF:%[0-9]+]]:_(p0) = IMPLICIT_DEF 14 ; CHECK-NEXT: [[DEF1:%[0-9]+]]:_(p0) = IMPLICIT_DEF 15 ; CHECK-NEXT: [[DEF2:%[0-9]+]]:_(s1) = IMPLICIT_DEF 16 ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[DEF2]](s1) 17 ; CHECK-NEXT: [[SELECT:%[0-9]+]]:_(p0) = G_SELECT [[ZEXT]](s32), [[DEF1]], [[DEF]] 18 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY [[SELECT]](p0) 19 ; CHECK-NEXT: RET 0, implicit [[COPY]](p0) 20 %0:_(p0) = IMPLICIT_DEF 21 %1:_(p0) = IMPLICIT_DEF 22 %2:_(s1) = IMPLICIT_DEF 23 %3:_(p0) = G_SELECT %2, %1, %0 24 %4:_(p0) = COPY %3(p0) 25 RET 0, implicit %4 26 27... 28--- 29name: test_select64 30body: | 31 bb.1: 32 ; X86-LABEL: name: test_select64 33 ; X86: [[DEF:%[0-9]+]]:_(s64) = IMPLICIT_DEF 34 ; X86-NEXT: [[DEF1:%[0-9]+]]:_(s64) = IMPLICIT_DEF 35 ; X86-NEXT: [[DEF2:%[0-9]+]]:_(s1) = IMPLICIT_DEF 36 ; X86-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[DEF1]](s64) 37 ; X86-NEXT: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[DEF]](s64) 38 ; X86-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[DEF2]](s1) 39 ; X86-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ZEXT]](s32), [[UV]], [[UV2]] 40 ; X86-NEXT: [[SELECT1:%[0-9]+]]:_(s32) = G_SELECT [[ZEXT]](s32), [[UV1]], [[UV3]] 41 ; X86-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32) 42 ; X86-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY [[MV]](s64) 43 ; X86-NEXT: RET 0, implicit [[COPY]](s64) 44 ; 45 ; X64-LABEL: name: test_select64 46 ; X64: [[DEF:%[0-9]+]]:_(s64) = IMPLICIT_DEF 47 ; X64-NEXT: [[DEF1:%[0-9]+]]:_(s64) = IMPLICIT_DEF 48 ; X64-NEXT: [[DEF2:%[0-9]+]]:_(s1) = IMPLICIT_DEF 49 ; X64-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[DEF2]](s1) 50 ; X64-NEXT: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[ZEXT]](s32), [[DEF1]], [[DEF]] 51 ; X64-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY [[SELECT]](s64) 52 ; X64-NEXT: RET 0, implicit [[COPY]](s64) 53 %0:_(s64) = IMPLICIT_DEF 54 %1:_(s64) = IMPLICIT_DEF 55 %2:_(s1) = IMPLICIT_DEF 56 %3:_(s64) = G_SELECT %2, %1, %0 57 %4:_(s64) = COPY %3(s64) 58 RET 0, implicit %4 59 60... 61--- 62name: test_select32 63body: | 64 bb.1: 65 ; CHECK-LABEL: name: test_select32 66 ; CHECK: [[DEF:%[0-9]+]]:_(s32) = IMPLICIT_DEF 67 ; CHECK-NEXT: [[DEF1:%[0-9]+]]:_(s32) = IMPLICIT_DEF 68 ; CHECK-NEXT: [[DEF2:%[0-9]+]]:_(s1) = IMPLICIT_DEF 69 ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[DEF2]](s1) 70 ; CHECK-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ZEXT]](s32), [[DEF1]], [[DEF]] 71 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY [[SELECT]](s32) 72 ; CHECK-NEXT: RET 0, implicit [[COPY]](s32) 73 %0:_(s32) = IMPLICIT_DEF 74 %1:_(s32) = IMPLICIT_DEF 75 %2:_(s1) = IMPLICIT_DEF 76 %3:_(s32) = G_SELECT %2, %1, %0 77 %4:_(s32) = COPY %3(s32) 78 RET 0, implicit %4 79 80... 81--- 82name: test_select16 83body: | 84 bb.1: 85 ; CHECK-LABEL: name: test_select16 86 ; CHECK: [[DEF:%[0-9]+]]:_(s16) = IMPLICIT_DEF 87 ; CHECK-NEXT: [[DEF1:%[0-9]+]]:_(s16) = IMPLICIT_DEF 88 ; CHECK-NEXT: [[DEF2:%[0-9]+]]:_(s1) = IMPLICIT_DEF 89 ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[DEF2]](s1) 90 ; CHECK-NEXT: [[SELECT:%[0-9]+]]:_(s16) = G_SELECT [[ZEXT]](s32), [[DEF1]], [[DEF]] 91 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s16) = COPY [[SELECT]](s16) 92 ; CHECK-NEXT: RET 0, implicit [[COPY]](s16) 93 %0:_(s16) = IMPLICIT_DEF 94 %1:_(s16) = IMPLICIT_DEF 95 %2:_(s1) = IMPLICIT_DEF 96 %3:_(s16) = G_SELECT %2, %1, %0 97 %4:_(s16) = COPY %3(s16) 98 RET 0, implicit %4 99 100... 101--- 102name: test_select8 103body: | 104 bb.1: 105 ; X86-LABEL: name: test_select8 106 ; X86: [[DEF:%[0-9]+]]:_(s8) = IMPLICIT_DEF 107 ; X86-NEXT: [[DEF1:%[0-9]+]]:_(s8) = IMPLICIT_DEF 108 ; X86-NEXT: [[DEF2:%[0-9]+]]:_(s1) = IMPLICIT_DEF 109 ; X86-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[DEF2]](s1) 110 ; X86-NEXT: [[SELECT:%[0-9]+]]:_(s8) = G_SELECT [[ZEXT]](s32), [[DEF1]], [[DEF]] 111 ; X86-NEXT: [[COPY:%[0-9]+]]:_(s8) = COPY [[SELECT]](s8) 112 ; X86-NEXT: RET 0, implicit [[COPY]](s8) 113 ; 114 ; X64-LABEL: name: test_select8 115 ; X64: [[DEF:%[0-9]+]]:_(s8) = IMPLICIT_DEF 116 ; X64-NEXT: [[DEF1:%[0-9]+]]:_(s8) = IMPLICIT_DEF 117 ; X64-NEXT: [[DEF2:%[0-9]+]]:_(s1) = IMPLICIT_DEF 118 ; X64-NEXT: [[ANYEXT:%[0-9]+]]:_(s16) = G_ANYEXT [[DEF1]](s8) 119 ; X64-NEXT: [[ANYEXT1:%[0-9]+]]:_(s16) = G_ANYEXT [[DEF]](s8) 120 ; X64-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[DEF2]](s1) 121 ; X64-NEXT: [[SELECT:%[0-9]+]]:_(s16) = G_SELECT [[ZEXT]](s32), [[ANYEXT]], [[ANYEXT1]] 122 ; X64-NEXT: [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[SELECT]](s16) 123 ; X64-NEXT: [[COPY:%[0-9]+]]:_(s8) = COPY [[TRUNC]](s8) 124 ; X64-NEXT: RET 0, implicit [[COPY]](s8) 125 %0:_(s8) = IMPLICIT_DEF 126 %1:_(s8) = IMPLICIT_DEF 127 %2:_(s1) = IMPLICIT_DEF 128 %3:_(s8) = G_SELECT %2, %1, %0 129 %4:_(s8) = COPY %3(s8) 130 RET 0, implicit %4 131