// rewrite Phis in the postdominator as CondSelects.
func branchelim(f *Func) {
// FIXME: add support for lowering CondSelects on more architectures
- switch f.Config.arch {
- case "arm64", "ppc64le", "ppc64", "amd64", "wasm", "loong64":
- // implemented
- default:
+ if !f.Config.haveCondSelect {
return
}
haveBswap64 bool // architecture implements Bswap64
haveBswap32 bool // architecture implements Bswap32
haveBswap16 bool // architecture implements Bswap16
+ haveCondSelect bool // architecture implements CondSelect
// mulRecipes[x] = function to build v * x from v.
mulRecipes map[int64]mulRecipe
c.haveBswap64 = true
c.haveBswap32 = true
c.haveBswap16 = true
+ c.haveCondSelect = true
case "386":
c.PtrSize = 4
c.RegSize = 4
c.haveBswap64 = true
c.haveBswap32 = true
c.haveBswap16 = true
+ c.haveCondSelect = true
case "ppc64":
c.BigEndian = true
fallthrough
c.haveBswap64 = true
c.haveBswap32 = true
c.haveBswap16 = true
+ c.haveCondSelect = true
case "mips64":
c.BigEndian = true
fallthrough
c.LinkReg = linkRegLOONG64
c.hasGReg = true
c.unalignedOK = true
+ c.haveCondSelect = true
case "s390x":
c.PtrSize = 8
c.RegSize = 8
c.useAvg = false
c.useHmul = false
c.unalignedOK = true
+ c.haveCondSelect = true
default:
ctxt.Diag("arch %s not implemented", arch)
}