@@ -68,3 +68,73 @@ body: |
68
68
$v0 = COPY %mask
69
69
%x:vrnov0 = PseudoVMERGE_VVM_M1 %pt, %false, %true, $v0, %avl, 5
70
70
...
71
+ ---
72
+ name : same_mask
73
+ body : |
74
+ bb.0:
75
+ liveins: $v8, $v9, $v0
76
+ ; CHECK-LABEL: name: same_mask
77
+ ; CHECK: liveins: $v8, $v9, $v0
78
+ ; CHECK-NEXT: {{ $}}
79
+ ; CHECK-NEXT: %pt:vrnov0 = COPY $v8
80
+ ; CHECK-NEXT: %false:vrnov0 = COPY $v9
81
+ ; CHECK-NEXT: %mask:vr = COPY $v0
82
+ ; CHECK-NEXT: $v0 = COPY %mask
83
+ ; CHECK-NEXT: %true:vrnov0 = PseudoVADD_VV_M1_MASK %false, $noreg, $noreg, $v0, 4, 5 /* e32 */, 0 /* tu, mu */
84
+ ; CHECK-NEXT: $v0 = COPY %mask
85
+ ; CHECK-NEXT: %x:vrnov0 = PseudoVMERGE_VVM_M1 %pt, %false, %true, $v0, 8, 5 /* e32 */
86
+ %pt:vrnov0 = COPY $v8
87
+ %false:vrnov0 = COPY $v9
88
+ %mask:vr = COPY $v0
89
+ $v0 = COPY %mask
90
+ %true:vrnov0 = PseudoVADD_VV_M1_MASK %false, $noreg, $noreg, $v0, 4, 5 /* e32 */, 0 /* tu, mu */
91
+ $v0 = COPY %mask
92
+ %x:vrnov0 = PseudoVMERGE_VVM_M1 %pt, %false, %true, $v0, 8, 5 /* e32 */
93
+ ...
94
+ ---
95
+ # Shouldn't be converted because false operands are different
96
+ name : same_mask_different_false
97
+ body : |
98
+ bb.0:
99
+ liveins: $v8, $v9, $v0
100
+ ; CHECK-LABEL: name: same_mask_different_false
101
+ ; CHECK: liveins: $v8, $v9, $v0
102
+ ; CHECK-NEXT: {{ $}}
103
+ ; CHECK-NEXT: %pt:vrnov0 = COPY $v8
104
+ ; CHECK-NEXT: %false:vrnov0 = COPY $v9
105
+ ; CHECK-NEXT: %mask:vr = COPY $v0
106
+ ; CHECK-NEXT: $v0 = COPY %mask
107
+ ; CHECK-NEXT: %true:vrnov0 = PseudoVADD_VV_M1_MASK %pt, $noreg, $noreg, $v0, 4, 5 /* e32 */, 0 /* tu, mu */
108
+ ; CHECK-NEXT: $v0 = COPY %mask
109
+ ; CHECK-NEXT: %x:vrnov0 = PseudoVMERGE_VVM_M1 %pt, %false, %true, $v0, 8, 5 /* e32 */
110
+ %pt:vrnov0 = COPY $v8
111
+ %false:vrnov0 = COPY $v9
112
+ %mask:vr = COPY $v0
113
+ $v0 = COPY %mask
114
+ %true:vrnov0 = PseudoVADD_VV_M1_MASK %pt, $noreg, $noreg, $v0, 4, 5 /* e32 */, 0 /* tu, mu */
115
+ $v0 = COPY %mask
116
+ %x:vrnov0 = PseudoVMERGE_VVM_M1 %pt, %false, %true, $v0, 8, 5 /* e32 */
117
+ ...
118
+ ---
119
+ # Shouldn't be converted because EEWs are different
120
+ name : same_mask_different_eew
121
+ body : |
122
+ bb.0:
123
+ liveins: $v8, $v9, $v0
124
+ ; CHECK-LABEL: name: same_mask_different_eew
125
+ ; CHECK: liveins: $v8, $v9, $v0
126
+ ; CHECK-NEXT: {{ $}}
127
+ ; CHECK-NEXT: %pt:vrnov0 = COPY $v8
128
+ ; CHECK-NEXT: %false:vrnov0 = COPY $v9
129
+ ; CHECK-NEXT: %mask:vr = COPY $v0
130
+ ; CHECK-NEXT: $v0 = COPY %mask
131
+ ; CHECK-NEXT: %true:vrnov0 = PseudoVADD_VV_M1_MASK %false, $noreg, $noreg, $v0, 4, 4 /* e16 */, 0 /* tu, mu */
132
+ ; CHECK-NEXT: $v0 = COPY %mask
133
+ ; CHECK-NEXT: %x:vrnov0 = PseudoVMERGE_VVM_M1 %pt, %false, %true, $v0, 8, 5 /* e32 */
134
+ %pt:vrnov0 = COPY $v8
135
+ %false:vrnov0 = COPY $v9
136
+ %mask:vr = COPY $v0
137
+ $v0 = COPY %mask
138
+ %true:vrnov0 = PseudoVADD_VV_M1_MASK %false, $noreg, $noreg, $v0, 4, 4 /* e16 */, 0 /* tu, mu */
139
+ $v0 = COPY %mask
140
+ %x:vrnov0 = PseudoVMERGE_VVM_M1 %pt, %false, %true, $v0, 8, 5 /* e32 */
0 commit comments