Sven Tennie pushed to branch wip/supersven/riscv-vectors at Glasgow Haskell Compiler / GHC

Commits:

2 changed files:

Changes:

  • compiler/GHC/CmmToAsm/RV64/CodeGen.hs
    ... ... @@ -1380,7 +1380,6 @@ getRegister' config plat expr =
    1380 1380
             -- Vector operations
    
    1381 1381
             MO_VF_Extract _length w -> vecExtract ((scalarFormatFormat . floatScalarFormat) w)
    
    1382 1382
             MO_V_Extract _length w -> vecExtract ((scalarFormatFormat . intScalarFormat) w)
    
    1383
    -
    
    1384 1383
             MO_VF_Add length w -> vecOp (floatVecFormat length w) VADD
    
    1385 1384
             MO_V_Add length w -> vecOp (intVecFormat length w) VADD
    
    1386 1385
             MO_VF_Sub length w -> vecOp (floatVecFormat length w) VSUB
    
    ... ... @@ -1398,8 +1397,8 @@ getRegister' config plat expr =
    1398 1397
             -- TODO: This is the general implementation of MO_V_Shuffle. There's a
    
    1399 1398
             -- lot of room for optimizations left for special cases. See the X86
    
    1400 1399
             -- NCG for examples.
    
    1401
    -        MO_V_Shuffle length w idxs -> genericVectorShuffle intVecFormat length w idxs 
    
    1402
    -        MO_VF_Shuffle length w idxs-> genericVectorShuffle floatVecFormat length w idxs
    
    1400
    +        MO_V_Shuffle length w idxs -> genericVectorShuffle intVecFormat length w idxs
    
    1401
    +        MO_VF_Shuffle length w idxs -> genericVectorShuffle floatVecFormat length w idxs
    
    1403 1402
             _e -> panic $ "Missing operation " ++ show expr
    
    1404 1403
     
    
    1405 1404
         -- Generic ternary case.
    

  • rts/CheckVectorSupport.c
    ... ... @@ -96,7 +96,7 @@ int checkVectorSupport(void) {
    96 96
         sigemptyset(&sa.sa_mask);
    
    97 97
         sa.sa_flags = 0;
    
    98 98
         sigaction(SIGILL, &sa, &old_sa);
    
    99
    -    
    
    99
    +
    
    100 100
         unsigned vlenb = 0;
    
    101 101
         if (sigsetjmp(jmpbuf, 1) == 0) {
    
    102 102
           // Try to execute a vector instruction