Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • kratot13/stud-support
  • krotima1/stud-support
  • khomumik/stud-support
  • vondrm28/stud-support
  • b35apo/stud-support
  • sehnakar/stud-support
  • chiuyuwe/stud-support
  • dupakjak/stud-support
  • pucekrad/stud-support
  • zampadan/stud-support
  • pelikon1/stud-support
  • perailuk/stud-support
  • gorbuden/stud-support
  • ponomnaz/stud-support
  • kiselnik/stud-support
  • neslusam/stud-support
  • galkidmi/stud-support
  • yuanweiz/stud-support
  • benckmar/stud-support
  • chvatond/stud-support
  • frysakat/stud-support
  • juzaluk2/stud-support
  • bobenade/stud-support
  • mikusvad/stud-support
  • romanrom/stud-support
  • kimdawon/stud-support
  • koblirad/stud-support
  • rachkiev/stud-support
  • forczsan/stud-support
  • vaginars/stud-support
  • kolarve8/stud-support
  • zyryadan/stud-support
  • myrzaami/stud-support
33 results
Show changes
*.o
*.srec
depend
branchpred-1
ARCH=riscv64-unknown-elf
#ARCH=riscv64-linux-gnu
SOURCES = branchpred-1.S
TARGET_EXE = branchpred-1
SOURCES += branchpred-1.S
LOADLIBES += -lc
CC=$(ARCH)-gcc
CXX=$(ARCH)-g++
AS=$(ARCH)-as
LD=$(ARCH)-ld
OBJCOPY=$(ARCH)-objcopy
ARCHFLAGS += -mabi=ilp32
ARCHFLAGS += -march=rv32im
ARCHFLAGS += -fno-lto
#ARCHFLAGS += -mabi=lp64
#ARCHFLAGS += -march=rv64imac
CFLAGS += -ggdb -Os -Wall
CXXFLAGS+= -ggdb -Os -Wall
AFLAGS += -ggdb
LDFLAGS += -ggdb
LDFLAGS += -nostartfiles
LDFLAGS += -nostdlib
LDFLAGS += -static
#LDFLAGS += -specs=/opt/musl/riscv64-linux-gnu/lib/musl-gcc.specs
LOADLIBES += -lgcc
CFLAGS += $(ARCHFLAGS)
CXXFLAGS+= $(ARCHFLAGS)
AFLAGS += $(ARCHFLAGS)
LDFLAGS += $(ARCHFLAGS)
OBJECTS += $(filter %.o,$(SOURCES:%.S=%.o))
OBJECTS += $(filter %.o,$(SOURCES:%.c=%.o))
OBJECTS += $(filter %.o,$(SOURCES:%.cpp=%.o))
all : default
.PHONY : default clean dep all run_test
%.o:%.S
$(CC) -D__ASSEMBLY__ $(AFLAGS) -c $< -o $@
%.o:%.c
$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
%.o:%.cpp
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $<
%.s:%.c
$(CC) $(CFLAGS) $(CPPFLAGS) -S $< -o $@
default : $(TARGET_EXE)
#default : run_test
$(TARGET_EXE) : $(OBJECTS)
$(CC) $(LDFLAGS) $^ $(LOADLIBES) -o $@
dep: depend
depend: $(SOURCES) $(glob *.h)
echo '# autogenerated dependencies' > depend
ifneq ($(filter %.S,$(SOURCES)),)
$(CC) -D__ASSEMBLY__ $(AFLAGS) -w -E -M $(filter %.S,$(SOURCES)) \
>> depend
endif
ifneq ($(filter %.c,$(SOURCES)),)
$(CC) $(CFLAGS) $(CPPFLAGS) -w -E -M $(filter %.c,$(SOURCES)) \
>> depend
endif
ifneq ($(filter %.cpp,$(SOURCES)),)
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -w -E -M $(filter %.cpp,$(SOURCES)) \
>> depend
endif
clean:
rm -f *.o *.a $(OBJECTS) $(TARGET_EXE) depend
run_test: $(TARGET_EXE)
qtrvsim_cli --pipelined \
--dump-cycles $< \
--serout serial_port.out
# --serin serial_port.in \
-include depend
.globl _start
# i = s0, j = s1, c = s2, t0 = outer loop limits, t1 = inner loop limit, t3 - auxiliary variable
# c = 0; for ( i = 0; i < 4; i++) for ( j = 0; i < 5; j++) c++;
# c, i, j = 0; do { do { c++ } while(++j < 5) } while(i < 4);
_start:
addi s2, zero, 0 # c = 0; total loop count
addi t0, zero, 4 # t0 = 4; outer loop limit
addi t1, zero, 5 # t1 = 5; inner loop limit
addi s0, zero, 0 # i = 0; outer loop inc
L1:
addi s1, zero, 0 # j = 0; inner loop inc
L2:
addi s2, s2, 1 # c++;
addi s1, s1, 1 # j++;
slt t3, s1, t1 # t3 = (s1 < t1) ? 1 : 0;
bne t3, zero, L2
addi s0, s0, 1 # i++;
slt t3, s0, t0 # t3 = (s0 < t0) ? 1 : 0;
bne t3, zero, L1
ebreak