Skip to content

Commit a6065df

Browse files
authored
Add avx feature flag (#10846)
* Add support for avx feature flag * Require vaddps/vaddpd use the AVX feature flag.
1 parent 7c79060 commit a6065df

File tree

3 files changed

+5
-2
lines changed

3 files changed

+5
-2
lines changed

cranelift/assembler-x64/meta/src/dsl/features.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ pub enum Feature {
6969
bmi1,
7070
lzcnt,
7171
popcnt,
72+
avx,
7273
}
7374

7475
/// List all CPU features.
@@ -88,6 +89,7 @@ pub const ALL_FEATURES: &[Feature] = &[
8889
Feature::bmi1,
8990
Feature::lzcnt,
9091
Feature::popcnt,
92+
Feature::avx,
9193
];
9294

9395
impl fmt::Display for Feature {

cranelift/assembler-x64/meta/src/instructions/add.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ pub fn list() -> Vec<Inst> {
7878
inst("phaddw", fmt("A", [rw(xmm1), r(align(xmm_m128))]), rex([0x66, 0x0F, 0x38, 0x01]).r(), _64b | compat | ssse3),
7979
inst("phaddd", fmt("A", [rw(xmm1), r(align(xmm_m128))]), rex([0x66, 0x0F, 0x38, 0x02]).r(), _64b | compat | ssse3),
8080
// Vex instructions
81-
inst("vaddps", fmt("B", [w(xmm1), r(xmm2), r(xmm_m128)]), vex(0x58).length(_128).mmmmm(_OF), _64b | compat | sse2),
82-
inst("vaddpd", fmt("B", [w(xmm1), r(xmm2), r(xmm_m128)]), vex(0x58).length(_128).pp(_66).mmmmm(_OF), _64b | compat | sse2)
81+
inst("vaddps", fmt("B", [w(xmm1), r(xmm2), r(xmm_m128)]), vex(0x58).length(_128).mmmmm(_OF), _64b | compat | avx),
82+
inst("vaddpd", fmt("B", [w(xmm1), r(xmm2), r(xmm_m128)]), vex(0x58).length(_128).pp(_66).mmmmm(_OF), _64b | compat | avx)
8383
]
8484
}

cranelift/codegen/src/isa/x64/inst/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,7 @@ impl Inst {
187187
bmi1 => features.push(InstructionSet::BMI1),
188188
lzcnt => features.push(InstructionSet::Lzcnt),
189189
popcnt => features.push(InstructionSet::Popcnt),
190+
avx => features.push(InstructionSet::AVX),
190191
}
191192
}
192193
features

0 commit comments

Comments
 (0)