11689SN/A# See LICENSE for license details. 21689SN/A 31689SN/A#***************************************************************************** 41689SN/A# ld.S 51689SN/A#----------------------------------------------------------------------------- 61689SN/A# 71689SN/A# Test ld instruction. 81689SN/A# 91689SN/A 101689SN/A#include "riscv_test.h" 111689SN/A#include "test_macros.h" 121689SN/A 131689SN/ARVTEST_RV64U 141689SN/ARVTEST_CODE_BEGIN 151689SN/A 161689SN/A #------------------------------------------------------------- 171689SN/A # Basic tests 181689SN/A #------------------------------------------------------------- 191689SN/A 201689SN/A TEST_LD_OP( 2, ld, 0x00ff00ff00ff00ff, 0, tdat ); 211689SN/A TEST_LD_OP( 3, ld, 0xff00ff00ff00ff00, 8, tdat ); 221689SN/A TEST_LD_OP( 4, ld, 0x0ff00ff00ff00ff0, 16, tdat ); 231689SN/A TEST_LD_OP( 5, ld, 0xf00ff00ff00ff00f, 24, tdat ); 241689SN/A 251689SN/A # Test with negative offset 261689SN/A 272665Ssaidi@eecs.umich.edu TEST_LD_OP( 6, ld, 0x00ff00ff00ff00ff, -24, tdat4 ); 282665Ssaidi@eecs.umich.edu TEST_LD_OP( 7, ld, 0xff00ff00ff00ff00, -16, tdat4 ); 291689SN/A TEST_LD_OP( 8, ld, 0x0ff00ff00ff00ff0, -8, tdat4 ); 301689SN/A TEST_LD_OP( 9, ld, 0xf00ff00ff00ff00f, 0, tdat4 ); 311060SN/A 321061SN/A # Test with a negative base 331060SN/A 341060SN/A TEST_CASE( 10, x5, 0x00ff00ff00ff00ff, \ 352292SN/A la x1, tdat; \ 362292SN/A addi x1, x1, -32; \ 371060SN/A ld x5, 32(x1); \ 381060SN/A ) 391461SN/A 401060SN/A # Test with unaligned base 411060SN/A 426658Snate@binkert.org TEST_CASE( 11, x5, 0xff00ff00ff00ff00, \ 436658Snate@binkert.org la x1, tdat; \ 441717SN/A addi x1, x1, -3; \ 451060SN/A ld x5, 11(x1); \ 461060SN/A ) 471060SN/A 482107SN/A #------------------------------------------------------------- 492107SN/A # Bypassing tests 501060SN/A #------------------------------------------------------------- 511060SN/A 521060SN/A TEST_LD_DEST_BYPASS( 12, 0, ld, 0x0ff00ff00ff00ff0, 8, tdat2 ); 531060SN/A TEST_LD_DEST_BYPASS( 13, 1, ld, 0xf00ff00ff00ff00f, 8, tdat3 ); 541060SN/A TEST_LD_DEST_BYPASS( 14, 2, ld, 0xff00ff00ff00ff00, 8, tdat1 ); 551060SN/A 561461SN/A TEST_LD_SRC1_BYPASS( 15, 0, ld, 0x0ff00ff00ff00ff0, 8, tdat2 ); 571060SN/A TEST_LD_SRC1_BYPASS( 16, 1, ld, 0xf00ff00ff00ff00f, 8, tdat3 ); 581060SN/A TEST_LD_SRC1_BYPASS( 17, 2, ld, 0xff00ff00ff00ff00, 8, tdat1 ); 591060SN/A 601060SN/A #------------------------------------------------------------- 611060SN/A # Test write-after-write hazard 621060SN/A #------------------------------------------------------------- 631060SN/A 641461SN/A TEST_CASE( 18, x2, 2, \ 651060SN/A la x5, tdat; \ 661060SN/A ld x2, 0(x5); \ 672348SN/A li x2, 2; \ 682348SN/A ) 691060SN/A 701061SN/A TEST_CASE( 19, x2, 2, \ 711061SN/A la x5, tdat; \ 721061SN/A ld x2, 0(x5); \ 732348SN/A nop; \ 742292SN/A li x2, 2; \ 752292SN/A ) 762292SN/A 772292SN/A TEST_PASSFAIL 782292SN/A 792292SN/ARVTEST_CODE_END 802292SN/A 812292SN/A .data 822292SN/ARVTEST_DATA_BEGIN 832292SN/A 842292SN/A TEST_DATA 852292SN/A 862292SN/Atdat: 872292SN/Atdat1: .dword 0x00ff00ff00ff00ff 882292SN/Atdat2: .dword 0xff00ff00ff00ff00 892292SN/Atdat3: .dword 0x0ff00ff00ff00ff0 902348SN/Atdat4: .dword 0xf00ff00ff00ff00f 911060SN/A 921060SN/ARVTEST_DATA_END 931060SN/A