+ (('ubfe', a, 0, 8), ('extract_u8', a, 0), '!options->lower_extract_byte'),
+ (('ubfe', a, 8, 8), ('extract_u8', a, 1), '!options->lower_extract_byte'),
+ (('ubfe', a, 16, 8), ('extract_u8', a, 2), '!options->lower_extract_byte'),
+ (('ubfe', a, 24, 8), ('extract_u8', a, 3), '!options->lower_extract_byte'),
+ (('ibfe', a, 0, 8), ('extract_i8', a, 0), '!options->lower_extract_byte'),
+ (('ibfe', a, 8, 8), ('extract_i8', a, 1), '!options->lower_extract_byte'),
+ (('ibfe', a, 16, 8), ('extract_i8', a, 2), '!options->lower_extract_byte'),
+ (('ibfe', a, 24, 8), ('extract_i8', a, 3), '!options->lower_extract_byte'),
+
+ # Word extraction
+ (('ushr', ('ishl', 'a@32', 16), 16), ('extract_u16', a, 0), '!options->lower_extract_word'),
+ (('ushr', 'a@32', 16), ('extract_u16', a, 1), '!options->lower_extract_word'),
+ (('ishr', ('ishl', 'a@32', 16), 16), ('extract_i16', a, 0), '!options->lower_extract_word'),
+ (('ishr', 'a@32', 16), ('extract_i16', a, 1), '!options->lower_extract_word'),
+ (('iand', 0xffff, a), ('extract_u16', a, 0), '!options->lower_extract_word'),
+
+ (('ubfe', a, 0, 16), ('extract_u16', a, 0), '!options->lower_extract_word'),
+ (('ubfe', a, 16, 16), ('extract_u16', a, 1), '!options->lower_extract_word'),
+ (('ibfe', a, 0, 16), ('extract_i16', a, 0), '!options->lower_extract_word'),
+ (('ibfe', a, 16, 16), ('extract_i16', a, 1), '!options->lower_extract_word'),
+
+ # Lower pack/unpack
+ (('pack_64_2x32_split', a, b), ('ior', ('u2u64', a), ('ishl', ('u2u64', b), 32)), 'options->lower_pack_64_2x32_split'),
+ (('pack_32_2x16_split', a, b), ('ior', ('u2u32', a), ('ishl', ('u2u32', b), 16)), 'options->lower_pack_32_2x16_split'),
+ (('unpack_64_2x32_split_x', a), ('u2u32', a), 'options->lower_unpack_64_2x32_split'),
+ (('unpack_64_2x32_split_y', a), ('u2u32', ('ushr', a, 32)), 'options->lower_unpack_64_2x32_split'),
+ (('unpack_32_2x16_split_x', a), ('u2u16', a), 'options->lower_unpack_32_2x16_split'),
+ (('unpack_32_2x16_split_y', a), ('u2u16', ('ushr', a, 16)), 'options->lower_unpack_32_2x16_split'),
+