aarch64 NCG miscompiles subword if conditional with optimizations
```haskell
{-# LANGUAGE MagicHash #-}
import GHC.Exts
{-# NOINLINE ix #-}
ix :: Int
ix = 0
{-# NOINLINE f #-}
f :: Int8# -> Int#
f x = if isTrue# (x `ltInt8#` intToInt8# 0#)
then (int8ToWord8# x) `gtWord8#` wordToWord8# 200##
else 1#
main :: IO ()
main = do
let !(I# i) = ix
x = indexInt8OffAddr# "\x80"# i
putStrLn ("f(0x80) = " ++ show (I# (f x)))
```
on aarch64-linux, when the above example is compiled with `-fllvm` or with `-O0`, it produces:
```
f(0x80) = 0
```
with `-O` it produces:
```
f(0x80) = 1
```
issue