@@ -8127,57 +8127,33 @@ static unsigned getBroadcastOpcode(const X86FoldTableEntry *I,
8127
8127
assert ((SpillSize == 64 || STI.hasVLX ()) &&
8128
8128
" Can't broadcast less than 64 bytes without AVX512VL!" );
8129
8129
8130
+ #define CASE_BCAST_TYPE_OPC (TYPE, OP16, OP32, OP64 ) \
8131
+ case TYPE: \
8132
+ switch (SpillSize) { \
8133
+ default : \
8134
+ llvm_unreachable (" Unknown spill size" ); \
8135
+ case 16 : \
8136
+ return X86::OP16; \
8137
+ case 32 : \
8138
+ return X86::OP32; \
8139
+ case 64 : \
8140
+ return X86::OP64; \
8141
+ } \
8142
+ break ;
8143
+
8130
8144
switch (I->Flags & TB_BCAST_MASK) {
8131
8145
default :
8132
8146
llvm_unreachable (" Unexpected broadcast type!" );
8133
- case TB_BCAST_D:
8134
- switch (SpillSize) {
8135
- default :
8136
- llvm_unreachable (" Unknown spill size" );
8137
- case 16 :
8138
- return X86::VPBROADCASTDZ128rm;
8139
- case 32 :
8140
- return X86::VPBROADCASTDZ256rm;
8141
- case 64 :
8142
- return X86::VPBROADCASTDZrm;
8143
- }
8144
- break ;
8145
- case TB_BCAST_Q:
8146
- switch (SpillSize) {
8147
- default :
8148
- llvm_unreachable (" Unknown spill size" );
8149
- case 16 :
8150
- return X86::VPBROADCASTQZ128rm;
8151
- case 32 :
8152
- return X86::VPBROADCASTQZ256rm;
8153
- case 64 :
8154
- return X86::VPBROADCASTQZrm;
8155
- }
8156
- break ;
8157
- case TB_BCAST_SS:
8158
- switch (SpillSize) {
8159
- default :
8160
- llvm_unreachable (" Unknown spill size" );
8161
- case 16 :
8162
- return X86::VBROADCASTSSZ128rm;
8163
- case 32 :
8164
- return X86::VBROADCASTSSZ256rm;
8165
- case 64 :
8166
- return X86::VBROADCASTSSZrm;
8167
- }
8168
- break ;
8169
- case TB_BCAST_SD:
8170
- switch (SpillSize) {
8171
- default :
8172
- llvm_unreachable (" Unknown spill size" );
8173
- case 16 :
8174
- return X86::VMOVDDUPZ128rm;
8175
- case 32 :
8176
- return X86::VBROADCASTSDZ256rm;
8177
- case 64 :
8178
- return X86::VBROADCASTSDZrm;
8179
- }
8180
- break ;
8147
+ CASE_BCAST_TYPE_OPC (TB_BCAST_W, VPBROADCASTWZ128rm, VPBROADCASTWZ256rm,
8148
+ VPBROADCASTWZrm)
8149
+ CASE_BCAST_TYPE_OPC (TB_BCAST_D, VPBROADCASTDZ128rm, VPBROADCASTDZ256rm,
8150
+ VPBROADCASTDZrm)
8151
+ CASE_BCAST_TYPE_OPC (TB_BCAST_Q, VPBROADCASTQZ128rm, VPBROADCASTQZ256rm,
8152
+ VPBROADCASTQZrm)
8153
+ CASE_BCAST_TYPE_OPC (TB_BCAST_SS, VBROADCASTSSZ128rm, VBROADCASTSSZ256rm,
8154
+ VBROADCASTSSZrm)
8155
+ CASE_BCAST_TYPE_OPC (TB_BCAST_SD, VMOVDDUPZ128rm, VBROADCASTSDZ256rm,
8156
+ VBROADCASTSDZrm)
8181
8157
}
8182
8158
}
8183
8159
0 commit comments