cachepc-qemu

Fork of AMDESE/qemu with changes for cachepc side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-qemu
Log | Files | Refs | Submodules | LICENSE | sfeed.txt

test_lf_ges.c (1580B)


      1#include <stdio.h>
      2
      3int main(void)
      4{
      5    int a, result;
      6    float b, c;
      7
      8    a = 0;
      9    b = 122.5;
     10    c = 123.5;
     11    result = 0x1;
     12    __asm
     13    ("lfges:\n\t"
     14     "l.addi    %0, %0, 0x1\n\t"
     15     "lf.sfge.s %1, %2\n\t"
     16     "l.bf      lfges\n\t"
     17     "l.nop\n\t"
     18     : "+r"(a)
     19     : "r"(b), "r"(c)
     20    );
     21    if (a != result) {
     22        printf("lf.sfge.s error\n");
     23        return -1;
     24    }
     25
     26    b = 133.5;
     27    c = 13.5;
     28    result = 0x3;
     29    __asm
     30    ("l.addi    %0, %0, 0x1\n\t"
     31     "l.addi    %0, %0, 0x1\n\t"
     32     "lf.sfge.s %1, %2\n\t"
     33     "l.bf      1f\n\t"
     34     "l.nop\n\t"
     35     "l.addi    %0, %0, 0x1\n\t"
     36     "l.addi    %0, %0, 0x1\n\t"
     37     "1:\n\t"
     38     : "+r"(a)
     39     : "r"(b), "r"(c)
     40    );
     41    if (a != result) {
     42        printf("lf.sfge.s error\n");
     43        return -1;
     44    }
     45
     46/*    int a, result;
     47    double b, c;
     48
     49    a = 0x1;
     50    b = 122.5;
     51    c = 123.5;
     52    result = 0x2;
     53    __asm
     54    ("lfged:\n\t"
     55     "l.addi    %0, %0, 0x1\n\t"
     56     "lf.sfge.d %1, %2\n\t"
     57     "l.bf      lfged\n\t"
     58     "l.nop\n\t"
     59     : "+r"(a)
     60     : "r"(b), "r"(c)
     61    );
     62    if (a != result) {
     63        printf("lf.sfge.d error\n");
     64        return -1;
     65    }
     66
     67    b = 133.5;
     68    c = 13.5;
     69    result = 0x4;
     70    __asm
     71    ("lf.sfge.d %1, %2\n\t"
     72     "l.bf      1f\n\t"
     73     "l.nop\n\t"
     74     "l.addi    %0, %0, 0x1\n\t"
     75     "l.addi    %0, %0, 0x1\n\t"
     76     "1:\n\t"
     77     "l.addi    %0, %0, 0x1\n\t"
     78     "l.addi    %0, %0, 0x1\n\t"
     79     : "+r"(a)
     80     : "r"(b), "r"(c)
     81    );
     82    if (a != result) {
     83        printf("lf.sfge.d error\n");
     84        return -1;
     85    }*/
     86
     87    return 0;
     88}