1 # RUN: llc -march=amdgcn -verify-machineinstrs -run-pass si-optimize-exec-masking %s -o - | FileCheck -check-prefix=GCN %s 2 3 --- 4 # GCN-LABEL: name: reduce_and_saveexec 5 # GCN: $exec = S_AND_B64 $exec, killed $vcc 6 # GCN-NEXT: S_ENDPGM 7 name: reduce_and_saveexec 8 tracksRegLiveness: true 9 body: | 10 bb.0: 11 $vcc = IMPLICIT_DEF 12 $sgpr0_sgpr1 = S_AND_B64 $exec, killed $vcc, implicit-def $scc 13 $exec = COPY killed $sgpr0_sgpr1 14 S_ENDPGM 15 ... 16 --- 17 # GCN-LABEL: name: reduce_and_saveexec_commuted 18 # GCN: $exec = S_AND_B64 killed $vcc, $exec 19 # GCN-NEXT: S_ENDPGM 20 name: reduce_and_saveexec_commuted 21 tracksRegLiveness: true 22 body: | 23 bb.0: 24 $vcc = IMPLICIT_DEF 25 $sgpr0_sgpr1 = S_AND_B64 killed $vcc, $exec, implicit-def $scc 26 $exec = COPY killed $sgpr0_sgpr1 27 S_ENDPGM 28 ... 29 --- 30 # GCN-LABEL: name: reduce_and_saveexec_liveout 31 # GCN: $sgpr0_sgpr1 = S_AND_B64 $exec, killed $vcc 32 # GCN-NEXT: $exec = COPY 33 name: reduce_and_saveexec_liveout 34 tracksRegLiveness: true 35 body: | 36 bb.0: 37 $vcc = IMPLICIT_DEF 38 $sgpr0_sgpr1 = S_AND_B64 $exec, killed $vcc, implicit-def $scc 39 $exec = COPY $sgpr0_sgpr1 40 S_ENDPGM 41 ... 42 --- 43 # GCN-LABEL: name: and_saveexec 44 # GCN: $sgpr0_sgpr1 = S_AND_SAVEEXEC_B64 $vcc 45 # GCN-NEXT: S_ENDPGM 46 name: and_saveexec 47 tracksRegLiveness: true 48 body: | 49 bb.0: 50 $vcc = IMPLICIT_DEF 51 $sgpr0_sgpr1 = COPY $exec 52 $sgpr2_sgpr3 = S_AND_B64 $sgpr0_sgpr1, killed $vcc, implicit-def $scc 53 $exec = S_MOV_B64_term $sgpr2_sgpr3 54 S_ENDPGM 55 ... 56 --- 57 # GCN-LABEL: name: reduce_or_saveexec 58 # GCN: $exec = S_OR_B64 $exec, killed $vcc 59 # GCN-NEXT: S_ENDPGM 60 name: reduce_or_saveexec 61 tracksRegLiveness: true 62 body: | 63 bb.0: 64 $vcc = IMPLICIT_DEF 65 $sgpr0_sgpr1 = S_OR_B64 $exec, killed $vcc, implicit-def $scc 66 $exec = COPY killed $sgpr0_sgpr1 67 S_ENDPGM 68 ... 69 --- 70 # GCN-LABEL: name: reduce_xor_saveexec 71 # GCN: $exec = S_XOR_B64 $exec, killed $vcc 72 # GCN-NEXT: S_ENDPGM 73 name: reduce_xor_saveexec 74 tracksRegLiveness: true 75 body: | 76 bb.0: 77 $vcc = IMPLICIT_DEF 78 $sgpr0_sgpr1 = S_XOR_B64 $exec, killed $vcc, implicit-def $scc 79 $exec = COPY killed $sgpr0_sgpr1 80 S_ENDPGM 81 ... 82 --- 83 # GCN-LABEL: name: reduce_andn2_saveexec 84 # GCN: $exec = S_ANDN2_B64 $exec, killed $vcc 85 # GCN-NEXT: S_ENDPGM 86 name: reduce_andn2_saveexec 87 tracksRegLiveness: true 88 body: | 89 bb.0: 90 $vcc = IMPLICIT_DEF 91 $sgpr0_sgpr1 = S_ANDN2_B64 $exec, killed $vcc, implicit-def $scc 92 $exec = COPY killed $sgpr0_sgpr1 93 S_ENDPGM 94 ... 95 --- 96 # GCN-LABEL: name: reduce_orn2_saveexec 97 # GCN: $exec = S_ORN2_B64 $exec, killed $vcc 98 # GCN-NEXT: S_ENDPGM 99 name: reduce_orn2_saveexec 100 tracksRegLiveness: true 101 body: | 102 bb.0: 103 $vcc = IMPLICIT_DEF 104 $sgpr0_sgpr1 = S_ORN2_B64 $exec, killed $vcc, implicit-def $scc 105 $exec = COPY killed $sgpr0_sgpr1 106 S_ENDPGM 107 ... 108 --- 109 # GCN-LABEL: name: reduce_nand_saveexec 110 # GCN: $exec = S_NAND_B64 $exec, killed $vcc 111 # GCN-NEXT: S_ENDPGM 112 name: reduce_nand_saveexec 113 tracksRegLiveness: true 114 body: | 115 bb.0: 116 $vcc = IMPLICIT_DEF 117 $sgpr0_sgpr1 = S_NAND_B64 $exec, killed $vcc, implicit-def $scc 118 $exec = COPY killed $sgpr0_sgpr1 119 S_ENDPGM 120 ... 121 --- 122 # GCN-LABEL: name: reduce_nor_saveexec 123 # GCN: $exec = S_NOR_B64 $exec, killed $vcc 124 # GCN-NEXT: S_ENDPGM 125 name: reduce_nor_saveexec 126 tracksRegLiveness: true 127 body: | 128 bb.0: 129 $vcc = IMPLICIT_DEF 130 $sgpr0_sgpr1 = S_NOR_B64 $exec, killed $vcc, implicit-def $scc 131 $exec = COPY killed $sgpr0_sgpr1 132 S_ENDPGM 133 ... 134 --- 135 # GCN-LABEL: name: reduce_xnor_saveexec 136 # GCN: $exec = S_XNOR_B64 $exec, killed $vcc 137 # GCN-NEXT: S_ENDPGM 138 name: reduce_xnor_saveexec 139 tracksRegLiveness: true 140 body: | 141 bb.0: 142 $vcc = IMPLICIT_DEF 143 $sgpr0_sgpr1 = S_XNOR_B64 $exec, killed $vcc, implicit-def $scc 144 $exec = COPY killed $sgpr0_sgpr1 145 S_ENDPGM 146 ... 147 --- 148