-def : Pat<(X86bzhi GR32:$src1, GR32:$src2),
- (BZHI32rr GR32:$src1, GR32:$src2)>;
-def : Pat<(X86bzhi (loadi32 addr:$src1), GR32:$src2),
- (BZHI32rm addr:$src1, GR32:$src2)>;
-def : Pat<(X86bzhi GR64:$src1, GR64:$src2),
- (BZHI64rr GR64:$src1, GR64:$src2)>;
-def : Pat<(X86bzhi (loadi64 addr:$src1), GR64:$src2),
- (BZHI64rm addr:$src1, GR64:$src2)>;
+def : Pat<(X86bzhi GR32:$src1, GR8:$src2),
+ (BZHI32rr GR32:$src1,
+ (INSERT_SUBREG (i32 (IMPLICIT_DEF)), GR8:$src2, sub_8bit))>;
+def : Pat<(X86bzhi (loadi32 addr:$src1), GR8:$src2),
+ (BZHI32rm addr:$src1,
+ (INSERT_SUBREG (i32 (IMPLICIT_DEF)), GR8:$src2, sub_8bit))>;
+def : Pat<(X86bzhi GR64:$src1, GR8:$src2),
+ (BZHI64rr GR64:$src1,
+ (INSERT_SUBREG (i64 (IMPLICIT_DEF)), GR8:$src2, sub_8bit))>;
+def : Pat<(X86bzhi (loadi64 addr:$src1), GR8:$src2),
+ (BZHI64rm addr:$src1,
+ (INSERT_SUBREG (i64 (IMPLICIT_DEF)), GR8:$src2, sub_8bit))>;