• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于LLVM的RISC-V自定義擴(kuò)展指令支持方法①

    2022-01-06 08:04:44邢明杰
    關(guān)鍵詞:指令集測(cè)試用例寄存器

    王 鵬, 陳 影, 邢明杰

    1(中國(guó)科學(xué)院 軟件研究所, 北京 100190)

    2(中國(guó)科學(xué)院 深圳先進(jìn)技術(shù)研究院, 深圳 518055)

    3(合肥工業(yè)大學(xué) 數(shù)學(xué)學(xué)院, 合肥 230601)

    由于RISC-V指令集架構(gòu)具有開源、模塊化、可擴(kuò)展等特性, 近年來(lái)在許多領(lǐng)域迅速興起.國(guó)內(nèi)外也出現(xiàn)了一些基于RISC-V進(jìn)行指令集擴(kuò)展的研究和實(shí)現(xiàn).例如, 神經(jīng)網(wǎng)絡(luò)指令集擴(kuò)展研究[1-4], 加密指令集擴(kuò)展研究[5], 平頭哥公司發(fā)布的玄鐵C910處理器[6]等.對(duì)于標(biāo)準(zhǔn)指令集擴(kuò)展, RISC-V社區(qū)會(huì)提供完整的工具鏈支持[7], 而對(duì)于非標(biāo)準(zhǔn)的自定義指令集擴(kuò)展, 則意味著需要用戶自己實(shí)現(xiàn)工具鏈支持.

    LLVM編譯框架具有模塊化、可復(fù)用等特性[8-10],適合用于快速搭建原型系統(tǒng)和二次開發(fā).目前LLVM社區(qū)已經(jīng)對(duì)RISC-V體系結(jié)構(gòu)進(jìn)行支持.本文通過(guò)對(duì)LLVM現(xiàn)有框架進(jìn)行分析, 研究在RISC-V后端對(duì)自定義擴(kuò)展指令集的支持方法, 為基于LLVM基礎(chǔ)架構(gòu)的RISC-V自定義指令集擴(kuò)展研究與實(shí)現(xiàn)提供借鑒.文章組織如下: 第1節(jié)介紹RISC-V指令集擴(kuò)展, 包括標(biāo)準(zhǔn)指令集擴(kuò)展和非標(biāo)準(zhǔn)的自定義指令集擴(kuò)展; 第2節(jié)對(duì)LLVM框架進(jìn)行分析, 重點(diǎn)分析現(xiàn)有的RISC-V體系結(jié)構(gòu)相關(guān)部分; 第3節(jié)研究基于LLVM實(shí)現(xiàn)擴(kuò)展指令支持的方法, 并以玄鐵C910為例進(jìn)行實(shí)現(xiàn)和驗(yàn)證;第4節(jié)給出結(jié)論與展望.

    1 RISC-V指令集擴(kuò)展

    RISC-V指令集架構(gòu)被設(shè)計(jì)成由基礎(chǔ)整數(shù)指令集和各種擴(kuò)展指令集組成.其中, 基礎(chǔ)整數(shù)指令集非常精簡(jiǎn)(目前最新版本的RV32I僅包含40條指令), 同時(shí)功能又足以支持編譯器和操作系統(tǒng)[7-9].擴(kuò)展指令集分為標(biāo)準(zhǔn)擴(kuò)展指令集和非標(biāo)準(zhǔn)擴(kuò)展指令集.擴(kuò)展指令集不僅支持固定寬度指令, 還可以支持可變長(zhǎng)指令和VLIW指令.為了能夠有效支持各種指令集擴(kuò)展, RISC-V指令集架構(gòu)在編碼空間和命名約定等方面做了詳細(xì)的設(shè)計(jì)和規(guī)劃.

    1.1 標(biāo)準(zhǔn)指令集擴(kuò)展

    標(biāo)準(zhǔn)指令集擴(kuò)展涵蓋了常用的功能支持, 并且相互之間不能存在指令編碼沖突.非特權(quán)指令集使用單個(gè)字母或者以Z開頭的字母組合來(lái)命名, 特權(quán)指令集則使用S (Supervisor級(jí)別)、H (Hypervisor級(jí)別)或者Zxm (Machine級(jí)別)開頭的字母組合來(lái)命名.其中, 字母G用來(lái)表示通用指令集擴(kuò)展組合IMAFDZicsr_Zifencei,依次表示整數(shù)、乘除法、單精度浮點(diǎn)、雙精度浮點(diǎn)、控制狀態(tài)寄存器訪問(wèn)、取指柵欄指令集.指令集名稱不區(qū)分大小寫, 名稱之間可以使用下劃線來(lái)分割, 并且后面可以有版本號(hào)信息.

    RISC-V國(guó)際基金會(huì)下面設(shè)有專門的任務(wù)工作組來(lái)負(fù)責(zé)標(biāo)準(zhǔn)指令集擴(kuò)展規(guī)范的制定.同時(shí)還設(shè)有工具鏈相關(guān)的任務(wù)工作組來(lái)負(fù)責(zé)推動(dòng)開源社區(qū)工具鏈對(duì)標(biāo)準(zhǔn)指令集的支持, 從而對(duì)RISC-V的生態(tài)建設(shè)起到很好的支撐作用.

    1.2 自定義指令集擴(kuò)展

    RISC-V指令集架構(gòu)允許并鼓勵(lì)用戶根據(jù)自己的需求來(lái)定制指令集擴(kuò)展.自定義的非標(biāo)準(zhǔn)指令集可以與它不支持的標(biāo)準(zhǔn)擴(kuò)展或者非標(biāo)準(zhǔn)擴(kuò)展之間存在指令編碼沖突.不過(guò)為了減少?zèng)_突, RISC-V指令集規(guī)范也為自定義擴(kuò)展指令集預(yù)留了4個(gè)主編碼字段: 0b0001011(custom-0), 0b0101011 (custom-1), 0b1011011 (custom-2)和0b1111011 (custom-3).自定義擴(kuò)展指令集使用以X開頭的字母組合來(lái)命名.

    比較有代表性的自定義指令集擴(kuò)展實(shí)現(xiàn)是平頭哥推出的玄鐵C910, 一款12級(jí)超標(biāo)量流水線、3發(fā)射、亂序執(zhí)行的高性能64位嵌入式多集群多核RISC-V處理器.其標(biāo)準(zhǔn)指令集架構(gòu)為RV64GCV, 并在此基礎(chǔ)上增加了自定義擴(kuò)展指令集和相應(yīng)的控制狀態(tài)寄存器,用于增強(qiáng)計(jì)算、存儲(chǔ)和多核等方面的性能.擴(kuò)展指令集的總體信息如表1所示.

    表1 玄鐵C910擴(kuò)展指令集

    新增指令的位寬為32位固定長(zhǎng)度, 其指令主編碼使用的是custom-0預(yù)留編碼.新增控制狀態(tài)寄存器的總體信息如表2所示.

    表2 玄鐵C910擴(kuò)展寄存器

    此外, 擴(kuò)展指令集需要在機(jī)器模式控制狀態(tài)寄存器MXSTATUS中開啟擴(kuò)展指令集使能位THEADISAEE的時(shí)候才能正常運(yùn)用, 否則會(huì)出現(xiàn)非法指令異常.

    2 LLVM框架分析

    最新的LLVM代碼已經(jīng)開始對(duì)RISC-V體系結(jié)構(gòu)進(jìn)行支持.因此, 在LLVM中增加自定義擴(kuò)展指令支持需要首先對(duì)LLVM框架[11], 特別是RISC-V相關(guān)部分有所熟悉[12].

    2.1 LLVM整體框架

    LLVM可以看作是一個(gè)編譯基礎(chǔ)設(shè)施, 由一系列的功能模塊以及基于這些模塊構(gòu)建的工具集組成[13-15].其整體框架如圖1所示.

    圖1 LLVM整體框架

    LLVM主要涉及到編譯器的中、后端, 其代碼以模塊的形式進(jìn)行劃分和實(shí)現(xiàn), 包括中間表示、代碼分析、優(yōu)化和代碼生成等[16-18].基于這些模塊實(shí)現(xiàn)的工具集有優(yōu)化器(opt)、生成器(llc)、匯編器(llvmmc)等[19].Clang主要涉及到編譯器的前端, 也是采用類似的形式進(jìn)行模塊化實(shí)現(xiàn), 包括抽象語(yǔ)法樹、詞法分析、語(yǔ)法分析、語(yǔ)義分析和LLVM中間代碼生成等.基于這些模塊實(shí)現(xiàn)的工具集有編譯器(clang)、靜態(tài)檢查工具(clang-tidy)等[20].

    2.2 RISC-V體系結(jié)構(gòu)相關(guān)部分

    為了能夠支持多種目標(biāo)體系結(jié)構(gòu)(X86、ARM、RISC-V等), LLVM的代碼結(jié)構(gòu)被劃分成體系結(jié)構(gòu)無(wú)關(guān)部分和相關(guān)部分, 如圖2所示.

    圖2 多目標(biāo)體系結(jié)構(gòu)支持框架

    體系結(jié)構(gòu)無(wú)關(guān)部分使用通用的算法來(lái)實(shí)現(xiàn)各種分析、優(yōu)化以及代碼生成(涉及指令選擇、指令調(diào)度、寄存器分配等), 并通過(guò)抽象接口來(lái)獲取體系結(jié)構(gòu)相關(guān)的信息, 執(zhí)行相應(yīng)的處理.其中RISC-V體系結(jié)構(gòu)相關(guān)信息主要包括:

    1) 芯片特性.描述芯片所支持的特性、對(duì)應(yīng)的命令行參數(shù)和說(shuō)明信息等.

    2) 寄存器信息.描述寄存器的編號(hào)、大小、存放數(shù)據(jù)類型、名稱、類別、分配優(yōu)先級(jí)等.

    3) 指令信息.描述指令格式、編碼、操作數(shù)、指令選擇匹配模式、對(duì)應(yīng)的匯編代碼等.

    4) 調(diào)用約定.描述需要被調(diào)用函數(shù)保存的寄存器列表等.

    5) 調(diào)度模型.描述調(diào)度資源、指令延遲周期、對(duì)調(diào)度資源的使用情況等.

    6) 處理器模型.描述處理器所支持的指令調(diào)度模型、芯片特性等.

    這些信息都是通過(guò)LLVM自帶的TableGen語(yǔ)言來(lái)編寫.TableGen是一個(gè)領(lǐng)域?qū)S谜Z(yǔ)言, 用來(lái)幫助LLVM開發(fā)者來(lái)處理大規(guī)模的信息描述, 簡(jiǎn)化代碼編寫和維護(hù)工作.其語(yǔ)法形式借鑒了C++的類和模板, 并增加一些用于處理指令選擇、指令編碼的數(shù)據(jù)類型和操作.

    圖3給出了TableGen代碼的處理流程: 在構(gòu)建LLVM的時(shí)候, 用戶使用TableGen編寫的代碼(文件名通常以td為后綴), 會(huì)先通過(guò)工具llvm-tblgen進(jìn)行解析, 然后在構(gòu)建目錄下生成C++數(shù)據(jù)結(jié)構(gòu)和代碼片段(文件名通常以inc為后綴), LLVM源文件通過(guò)#include方式將這些生成的文件包含進(jìn)來(lái).

    圖3 TableGen代碼處理流程

    TableGen本身只是描述信息記錄, 至于具體生成什么樣的C++代碼, 則需要LLVM開發(fā)者來(lái)實(shí)現(xiàn)相應(yīng)的C++代碼生成后端.除此之外, 還有一些目標(biāo)體系結(jié)構(gòu)抽象接口不適合使用TableGen來(lái)描述和自動(dòng)生成,這部分則直接使用C++代碼來(lái)實(shí)現(xiàn), 主要包括:

    1) 棧幀布局.處理?xiàng)?臻g的增長(zhǎng)方向、地址對(duì)齊方式、局部變量地址偏移以及在函數(shù)開頭和結(jié)尾處插入棧幀維護(hù)代碼等.

    2) 部分指令選擇處理.例如指令DAG圖構(gòu)建過(guò)程中的類型和操作合法化、函數(shù)調(diào)用和返回的處理、特殊DAG節(jié)點(diǎn)的處理等.

    3) 部分寄存器信息.例如獲取預(yù)留寄存器列表、消除幀指針等.

    4) 部分指令信息.例如判斷指令是否為對(duì)棧槽進(jìn)行加載或存儲(chǔ)、對(duì)分支跳轉(zhuǎn)指令的分析和處理等.

    5) 匯編器和反匯編器的接口函數(shù)實(shí)現(xiàn).

    6) 機(jī)器代碼層(MC)的處理.例如ELF文件寫出、重定位信息、匯編指令打印等.

    2.3 LLVM測(cè)試框架

    LLVM源碼包中自帶的測(cè)試用例有兩種: 回歸測(cè)試與單元測(cè)試.其中單元測(cè)試使用Google C++測(cè)試框架編寫, 用來(lái)測(cè)試LLVM的功能單元.回歸測(cè)試使用LLVM測(cè)試框架編寫, 用來(lái)驗(yàn)證特定功能點(diǎn)或者已經(jīng)修復(fù)的問(wèn)題.這些測(cè)試用例需要在每次提交代碼之前運(yùn)行通過(guò), 從而避免新的改動(dòng)出現(xiàn)回退現(xiàn)象.

    3 擴(kuò)展指令支持方法

    我們可以將基于LLVM的擴(kuò)展指令支持分為匯編層面支持和編譯層面支持.其中, 編譯層面支持是指可以將用戶編寫的高級(jí)語(yǔ)言程序轉(zhuǎn)換成含有擴(kuò)展指令的匯編程序或者機(jī)器指令編碼.編譯層面支持有兩種常見(jiàn)的方式: 一是在高級(jí)語(yǔ)言中定義新的數(shù)據(jù)類型和編譯器內(nèi)建函數(shù), 使得用戶可以直接通過(guò)函數(shù)調(diào)用的形式來(lái)使用擴(kuò)展指令; 二是通過(guò)編譯優(yōu)化技術(shù)將中間代碼自動(dòng)轉(zhuǎn)換成機(jī)器特定的擴(kuò)展指令.

    本文主要研究匯編層面的支持方法.匯編層面支持是指可以將用戶編寫的含有擴(kuò)展指令的匯編程序轉(zhuǎn)換成機(jī)器指令編碼.根據(jù)前面對(duì)RISC-V指令擴(kuò)展的介紹以及LLVM框架的分析, 可以看到匯編層面支持大體需要完成如下工作:

    1)定義新的芯片特性, 添加命令行選項(xiàng);

    2) 針對(duì)新增加的寄存器, 實(shí)現(xiàn)相應(yīng)的寄存器信息描述以及可能涉及到的抽象接口;

    3) 針對(duì)新增加的指令, 實(shí)現(xiàn)相應(yīng)的指令信息描述以及可能涉及到的抽象接口;

    4) 根據(jù)指令集擴(kuò)展情況, 可能需要對(duì)匯編器和反匯編器的接口函數(shù)進(jìn)行更新實(shí)現(xiàn);

    5) 根據(jù)指令集擴(kuò)展情況, 可能需要在機(jī)器代碼層增加相應(yīng)的處理;

    6) 編寫測(cè)試用例, 對(duì)新增加的指令集擴(kuò)展進(jìn)行測(cè)試和驗(yàn)證.

    接下來(lái), 我們將以玄鐵C910的擴(kuò)展指令支持為例, 對(duì)主要涉及到的工作內(nèi)容進(jìn)行具體介紹.我們已經(jīng)將完整的代碼實(shí)現(xiàn)進(jìn)行了開源, 項(xiàng)目地址為: https://github.com/isrc-cas/c910-llvm.

    3.1 定義芯片特性, 添加命令行選項(xiàng)

    我們?cè)赗ISCV.td文件中, 通過(guò)TableGen語(yǔ)言來(lái)描述玄鐵C910所支持的指令擴(kuò)展特性.參見(jiàn)代碼示例1,其中特性FeatureExtXuantie繼承自SubtargetFeature,并通過(guò)模板參數(shù)給出名字、屬性、屬性值、文字描述信息.同時(shí), 定義一個(gè)斷言HasExtXuantie, 可以在指令描述中用來(lái)設(shè)置指令選擇和匯編指令匹配的判斷條件.

    代碼示例1.定義芯片特性def FeatureExtXuantie:SubtargetFeature<"xuantie", "HasExtXuantie","true", "'Xuantie' (Xuantie Custom Instructions)">;def HasExtXuantie:Predicate<"Subtarget->hasExtXuantie()">,AssemblerPredicate<"FeatureXcache">;

    除此之外, 還定義了一個(gè)命名為c910的處理器模型.從而, 用戶可以在匯編器llvm-mc的命令行中使用-mattr=+xuantie或者-mcpu=c910來(lái)開啟對(duì)玄鐵C910擴(kuò)展指令的支持特性.

    3.2 描述寄存器信息

    由于玄鐵 C910只對(duì)控制狀態(tài)寄存器進(jìn)行了擴(kuò)展,并沒(méi)有增加新的通用寄存器或者其他用來(lái)存放數(shù)據(jù)、參與寄存器分配的寄存器, 因此, 基于現(xiàn)有的RISC-V代碼框架, 對(duì)這部分進(jìn)行支持所需要做的工作比較簡(jiǎn)單.我們?cè)赗ISCVSystemOperands.td文件中, 使用TableGen語(yǔ)言對(duì)它進(jìn)行描述.代碼示例2給出了部分?jǐn)U展控制狀態(tài)寄存器的描述, 例如, MXSTATUS寄存器繼承自父類SysReg, 并通過(guò)模板參數(shù)給出它的名字和編碼.

    代碼示例2.描述狀態(tài)寄存器信息def MXSTATUS : SysReg<"mxstatus", 0x7C0>;def MHCR : SysReg<"mhcr", 0x7C1>;def MCOR : SysReg<"mcor", 0x7C2>;def MCCR2 : SysReg<"mccr2", 0x7C3>;

    現(xiàn)有的RISC-V代碼框架已經(jīng)實(shí)現(xiàn)了SysReg的定義, 以及相應(yīng)的支持.所以, 用戶只需要添加一行TableGen描述即可.然后在匯編程序中, 便可以使用該寄存器的名字作為指令的符號(hào)操作數(shù).

    3.3 描述指令信息

    我們以玄鐵C910的位操作擴(kuò)展指令EXT (寄存器連續(xù)位提取符號(hào)位擴(kuò)展指令)和EXTU (寄存器連續(xù)位提取零擴(kuò)展指令)為例介紹如何使用TableGen語(yǔ)言來(lái)描述指令信息.圖4給出了這兩條指令的編碼格式.

    圖4 位操作擴(kuò)展指令EXT和EXTU

    其匯編語(yǔ)法形式如下:

    1) ext rd, rs1, imm1, imm2

    2) extu rd, rs1, imm1, imm2

    可以看到EXT和EXTU兩條指令具有相同的操作數(shù), 只不過(guò)是12-14位的編碼不同.因此, 可以將相同指令格式提取出來(lái), 使用TableGen的class類型定義成一個(gè)模板類, 從而避免冗余的指令信息描述.圖5給出了兩個(gè)指令格式, 其中模板類RVInst是在RISCVInstrFormats.td文件中定義, 用來(lái)表示32位的RISC-V指令格式.目前LLVM中所有的RISC-V擴(kuò)展指令都是繼承自該父類.

    圖5 指令格式

    我們參照LLVM現(xiàn)有的RISC-V代碼框架, 新增加一個(gè)RISCVInstrFormatsC910.td文件用來(lái)定義擴(kuò)展指令格式.其中模板類RVInstC910BO_1用來(lái)表示EXT和EXTU這樣的位操作擴(kuò)展指令格式, 它的主編碼為0b0001011 (指令集規(guī)范中預(yù)留的custom-0主編碼).然后新增加一個(gè)RISCVInstrInfoC910.td文件用來(lái)定義具體的擴(kuò)展指令, 以及細(xì)化的指令格式模板子類.

    代碼示例3給出了RVInstC910BO_1的定義, 其模板參數(shù)分別為12-14位的編碼, 指令的輸出和輸入操作數(shù), 匯編指令字符串.然后, 在類的定義中根據(jù)這些參數(shù)來(lái)設(shè)置指令相應(yīng)字段的值.具體的代碼含義可以參照TableGen語(yǔ)言文檔資料.通過(guò)TableGen提供的這種抽象和繼承機(jī)制, 我們可以很方便的實(shí)現(xiàn)對(duì)玄鐵C910擴(kuò)展指令集的支持.

    代碼示例3.描述指令信息class RVInstC910BO_1<bits<3> funct3, dag outs, dag ins, string opcodestr, string argstr>: RVInst<o(jì)uts, ins, opcodestr, argstr, [], InstFormatOther> {bits<6> imm1;bits<6> imm2;bits<5> rs1;bits<5> rd;let Inst{31-26} = imm1;let Inst{25-20} = imm2;let Inst{19-15} = rs1;let Inst{14-12} = funct3;let Inst{11-7} = rd;let Opcode = OPC_CUSTOM0.Value;}

    3.4 測(cè)試驗(yàn)證

    最后, 我們通過(guò)編寫測(cè)試用例, 來(lái)驗(yàn)證對(duì)玄鐵C910擴(kuò)展指令的支持情況.參照現(xiàn)有測(cè)試框架, 在test/MC/RISCV目錄下新增一個(gè)c910-valid.s文件用來(lái)測(cè)試有效的匯編指令, 同時(shí)新增一個(gè)c910-invalid.s文件用來(lái)測(cè)試對(duì)無(wú)效指令的錯(cuò)誤處理.代碼示例4中給出了測(cè)試用例的開頭部分.

    代碼示例4.測(cè)試用例# RUN: llvm-mc %s -triple=riscv64 -mcpu=c910 -riscv-no-aliases -show-encoding # RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASMAND-OBJ %s# CHECK-ASM-AND-OBJ: ext a0, a1, 4, 1# CHECK-ASM: encoding: [0x0b,0xa5,0x15,0x10]ext a0, a1, 4, 1

    前兩行是要執(zhí)行的測(cè)試命令, 由RUN開頭并且嵌套在代碼注釋中.LLVM測(cè)試工具llvm-lit會(huì)根據(jù)這些命令來(lái)調(diào)用匯編器llvm-mc, 然后將輸出結(jié)果傳送給檢查工具FileCheck.FileCheck工具會(huì)根據(jù)注釋中CHECK關(guān)鍵字開頭的內(nèi)容來(lái)對(duì)比匯編生成結(jié)果.

    代碼示例5是匯編指令測(cè)試用例, 有效匯編指令c910-valid.s文件中包含了新增的99條自定義玄鐵C910指令集, 我們運(yùn)行l(wèi)lvm-lit來(lái)單獨(dú)測(cè)試c910-valid.s匯編文件的正確性, 運(yùn)行結(jié)果輸出 Expected Passes 1, 說(shuō)明所有的新增自定義指令的匯編編碼都是正確的.

    代碼示例5.匯編指令測(cè)試用例$./bin/llvm-lit -v../test/MC/RISCV/c910-valid.s-- Testing: 1 tests, single process --PASS: LLVM :: MC/RISCV/c910-valid.s (1 of 1)Testing Time: 0.30s Expected Passes : 1

    代碼示例6是新增寄存器測(cè)試用例, 在控制與狀態(tài)寄存器文件user-csr-names.s中, 我們添加了玄鐵C910擴(kuò)展寄存器fxcr, 它的功能是用于浮點(diǎn)擴(kuò)展功能開關(guān)和浮點(diǎn)異常累積位, 我們對(duì)新增寄存器進(jìn)行指令編碼,然后用llvm-mc求出fxcr的編碼, 同時(shí)將寄存器別名添加到user-csr-names.s匯編文件中.

    代碼示例6.新增寄存器測(cè)試用例User@dacent:~/tools/c910-project/c910-llvm/test/MC/RISCV$ vim user-csr-names.s# fxcr# name# CHECK-INST: csrrs t1, fxcr, zero# CHECK-ENC: encoding: [0x73,0x23,0x00,0x80]# CHECK-INST-ALIAS: csrr t1, fxcr# uimm12# CHECK-INST: csrrs t2, fxcr, zero# CHECK-ENC: encoding: [0xf3,0x23,0x00,0x80]# CHECK-INST-ALIAS: csrr t2, fxcr# name csrrs t1, fxcr, zero# uimm12 csrrs t2, 0x800, zero

    代碼示例7是99條新增玄鐵C910指令中ff0指令, ff0指令是快速找 0 指令, 我們用llvm-mc進(jìn)行測(cè)試, 編譯選項(xiàng)選擇mcpu=c910 和mattr=+c910, 可以確定ff0指令對(duì)應(yīng)的編碼形式.

    代碼示例7.ff0指令匯編測(cè)試用例User@dacent:~/tools/c910-project/c910-llvm/build/bin$ echo "ff0 a0,a1" |./llvm-mc --triple=riscv64 -mcpu=c910 -mattr=+c910 -showencoding -show-inst.text ff0a0, a1# encoding: [0x0b,0x95,0x05,0x84]# <MCInst #399 FF0# <MCOperand Reg:11># <MCOperand Reg:12>>

    代碼示例8是利用llvm-mc, 在選定了編譯選項(xiàng)是mcpu=c910 和mattr=+c910之后, 對(duì)匯編編碼進(jìn)行反匯編測(cè)試, 查看執(zhí)行之后得出的是否是對(duì)應(yīng)的ff0匯編指令.

    代碼示例8.ff0指令反匯編測(cè)試用例User@dacent:~/tools/c910-project/c910-llvm/build/bin$ echo"0x0b,0x95,0x05,0x84" |./llvm-mc -disassemble --triple=riscv64 -mcpu=c910 -mattr=+c910 -show-encoding -show-inst.text ff0a0, a1# encoding: [0x0b,0x95,0x05,0x84]# <MCInst #399 FF0# <MCOperand Reg:11># <MCOperand Reg:12>>

    表3中列出了我們目前支持的所有新增玄鐵C910指令的匯編測(cè)試, 反匯編測(cè)試, 編譯選項(xiàng)mcpu=c910測(cè)試和無(wú)效操作數(shù)測(cè)試, 說(shuō)明了新增玄鐵C910自定義擴(kuò)展指令集在LLVM中具有功能完備性支持.

    表3 功能完備性測(cè)試

    除此之外, 我們還在一個(gè)C文件test.c中, 使用內(nèi)聯(lián)匯編的方式編寫了一條上述已定義的玄鐵C910擴(kuò)展指令, 使用clang編譯生成匯編文件, 然后用llvm-mc將匯編文件test.s, 編譯選項(xiàng)是mcpu=c910, 編譯成目標(biāo)文件, 之后可以通過(guò)反匯編來(lái)驗(yàn)證正確性.

    代碼示例9.玄鐵C910新增指令內(nèi)聯(lián)匯編測(cè)試用例$./bin/clang --target=riscv64-unknown-elf test.c -S -o test.s$ cat test.c int main(){int a,b,c;a = 1;b = 2;asm volatile("mula %[z], %[x], %[y] ": [z] "=r" (c): [x] "r" (a), [y] "r" (b));if ( c == 0 ){

    return -1;}return 0;}$./bin/llvm-mc test.s -triple=riscv64 -mcpu=c910 -show-encoding -show-inst --filetype=obj -o=test.o

    4 結(jié)論與展望

    本文通過(guò)對(duì)RISC-V指令集擴(kuò)展和LLVM框架的分析, 給出了在LLVM中實(shí)現(xiàn)對(duì)RISC-V自定義指令集擴(kuò)展的支持方法.結(jié)合玄鐵C910的例子可以看到,在現(xiàn)有LLVM框架下, 對(duì)于32位指令集擴(kuò)展的匯編層面支持比較容易實(shí)現(xiàn).

    對(duì)于其他寬度的指令擴(kuò)展支持, 包括可變長(zhǎng)指令和VLIW指令擴(kuò)展的支持, 還需要做進(jìn)一步的分析研究.除此之外, 對(duì)擴(kuò)展指令的編譯層面支持涉及到編譯器的前、中和后端多個(gè)方面.后續(xù)工作中, 將重點(diǎn)研究這部分內(nèi)容.

    猜你喜歡
    指令集測(cè)試用例寄存器
    3DNow指令集被Linux淘汰
    基于SmartUnit的安全通信系統(tǒng)單元測(cè)試用例自動(dòng)生成
    Lite寄存器模型的設(shè)計(jì)與實(shí)現(xiàn)
    基于混合遺傳算法的回歸測(cè)試用例集最小化研究
    分簇結(jié)構(gòu)向量寄存器分配策略研究*
    實(shí)時(shí)微測(cè)量系統(tǒng)指令集及解析算法
    基于依賴結(jié)構(gòu)的測(cè)試用例優(yōu)先級(jí)技術(shù)
    什么是AMD64
    基于覆蓋率驅(qū)動(dòng)的高性能DSP指令集驗(yàn)證方法
    高速數(shù)模轉(zhuǎn)換器AD9779/AD9788的應(yīng)用
    看免费av毛片| 日韩欧美 国产精品| 亚洲国产精品合色在线| 亚洲aⅴ乱码一区二区在线播放| 欧美在线一区亚洲| 人妻久久中文字幕网| 一级毛片女人18水好多| 国产精品98久久久久久宅男小说| 亚洲美女黄片视频| 叶爱在线成人免费视频播放| 日韩亚洲欧美综合| 国产成人av激情在线播放| 久久精品亚洲精品国产色婷小说| 精品一区二区三区视频在线观看免费| 99久久精品热视频| 欧美zozozo另类| 美女高潮的动态| 国产成人a区在线观看| 成年版毛片免费区| 久久精品夜夜夜夜夜久久蜜豆| 天天添夜夜摸| 97超级碰碰碰精品色视频在线观看| 淫妇啪啪啪对白视频| 婷婷精品国产亚洲av| 色在线成人网| 超碰av人人做人人爽久久 | 天堂av国产一区二区熟女人妻| 亚洲国产高清在线一区二区三| 少妇丰满av| 俄罗斯特黄特色一大片| 在线观看免费午夜福利视频| 免费一级毛片在线播放高清视频| 欧美又色又爽又黄视频| 亚洲狠狠婷婷综合久久图片| 两人在一起打扑克的视频| 99热精品在线国产| 日韩精品青青久久久久久| 波多野结衣高清作品| 成人无遮挡网站| 老司机福利观看| 好看av亚洲va欧美ⅴa在| 一进一出抽搐gif免费好疼| 精品乱码久久久久久99久播| 最近在线观看免费完整版| 国产在视频线在精品| 国产精品一区二区三区四区免费观看 | 亚洲精品日韩av片在线观看 | 成人一区二区视频在线观看| 亚洲专区中文字幕在线| 亚洲无线在线观看| 在线看三级毛片| 精品国内亚洲2022精品成人| 此物有八面人人有两片| 噜噜噜噜噜久久久久久91| 亚洲国产色片| 国产色婷婷99| 中文字幕av成人在线电影| 国产精品一区二区三区四区久久| 十八禁人妻一区二区| 日韩欧美精品免费久久 | 老熟妇乱子伦视频在线观看| 国产伦精品一区二区三区视频9 | 成人欧美大片| 亚洲精品在线美女| 日韩欧美三级三区| 俺也久久电影网| 亚洲av不卡在线观看| 午夜免费男女啪啪视频观看 | 亚洲精品在线观看二区| 有码 亚洲区| 99riav亚洲国产免费| 久久久久九九精品影院| 午夜久久久久精精品| 国产精品亚洲美女久久久| 两个人的视频大全免费| 国产精品免费一区二区三区在线| 深爱激情五月婷婷| 欧美丝袜亚洲另类 | 综合色av麻豆| 在线免费观看不下载黄p国产 | 国产伦人伦偷精品视频| 日本黄色片子视频| 老司机深夜福利视频在线观看| 国产精品综合久久久久久久免费| 亚洲精品国产精品久久久不卡| 好男人在线观看高清免费视频| 日本一本二区三区精品| 12—13女人毛片做爰片一| 国产黄a三级三级三级人| 欧美色视频一区免费| 国产又黄又爽又无遮挡在线| 国产免费一级a男人的天堂| 99精品欧美一区二区三区四区| 俺也久久电影网| 国产色爽女视频免费观看| 九九在线视频观看精品| 老汉色av国产亚洲站长工具| 在线免费观看不下载黄p国产 | 脱女人内裤的视频| 三级国产精品欧美在线观看| 欧美日韩中文字幕国产精品一区二区三区| 99久久精品国产亚洲精品| 国产亚洲精品av在线| 久久欧美精品欧美久久欧美| 亚洲av第一区精品v没综合| 97超级碰碰碰精品色视频在线观看| 欧美乱码精品一区二区三区| 国产一区二区在线观看日韩 | 国产探花在线观看一区二区| 久久久久久九九精品二区国产| 19禁男女啪啪无遮挡网站| 久久久国产成人免费| 亚洲欧美日韩高清在线视频| 大型黄色视频在线免费观看| 亚洲av熟女| 亚洲avbb在线观看| 波多野结衣高清无吗| 有码 亚洲区| 中文字幕精品亚洲无线码一区| 亚洲无线观看免费| 九九久久精品国产亚洲av麻豆| 亚洲国产精品成人综合色| 亚洲国产中文字幕在线视频| 日日摸夜夜添夜夜添小说| 国产老妇女一区| 亚洲成人久久性| 久久精品国产清高在天天线| 在线观看免费午夜福利视频| 日本熟妇午夜| 88av欧美| 久久久久性生活片| 老熟妇乱子伦视频在线观看| 亚洲精品国产精品久久久不卡| 国内精品久久久久久久电影| 国产乱人伦免费视频| 丰满人妻一区二区三区视频av | 午夜免费男女啪啪视频观看 | xxx96com| av中文乱码字幕在线| 搡老妇女老女人老熟妇| 国产又黄又爽又无遮挡在线| 又粗又爽又猛毛片免费看| 免费看美女性在线毛片视频| 国产在视频线在精品| 每晚都被弄得嗷嗷叫到高潮| 亚洲av第一区精品v没综合| 尤物成人国产欧美一区二区三区| 午夜福利高清视频| 丝袜美腿在线中文| 国内精品久久久久精免费| 亚洲专区中文字幕在线| 最近最新免费中文字幕在线| 亚洲av中文字字幕乱码综合| 欧美bdsm另类| 18禁黄网站禁片午夜丰满| 搡老熟女国产l中国老女人| 精华霜和精华液先用哪个| 夜夜爽天天搞| 午夜日韩欧美国产| 色吧在线观看| 国产单亲对白刺激| 一区二区三区激情视频| 90打野战视频偷拍视频| 法律面前人人平等表现在哪些方面| 久久国产精品影院| 国产亚洲欧美在线一区二区| 欧美成人免费av一区二区三区| 岛国在线观看网站| 国产成年人精品一区二区| 亚洲国产色片| 757午夜福利合集在线观看| 男人舔女人下体高潮全视频| 最近在线观看免费完整版| 人人妻人人看人人澡| 国产野战对白在线观看| 色播亚洲综合网| 国产精品 欧美亚洲| 色哟哟哟哟哟哟| 国产一区二区激情短视频| 老汉色∧v一级毛片| 亚洲av免费在线观看| 亚洲欧美日韩高清专用| 亚洲一区二区三区不卡视频| 国产高清激情床上av| 高清毛片免费观看视频网站| 久久精品亚洲精品国产色婷小说| 久久精品影院6| 成年免费大片在线观看| 婷婷精品国产亚洲av| 欧美黄色片欧美黄色片| xxxwww97欧美| 午夜福利在线观看免费完整高清在 | 中文字幕熟女人妻在线| 亚洲在线自拍视频| av欧美777| 成人av在线播放网站| 欧美精品啪啪一区二区三区| 99精品欧美一区二区三区四区| 国产视频内射| 国产午夜福利久久久久久| 亚洲狠狠婷婷综合久久图片| 国产成人av激情在线播放| 日韩成人在线观看一区二区三区| 亚洲人成电影免费在线| 欧美日韩瑟瑟在线播放| 十八禁网站免费在线| 国产v大片淫在线免费观看| 身体一侧抽搐| 99久久无色码亚洲精品果冻| 真人做人爱边吃奶动态| 国产私拍福利视频在线观看| 久久草成人影院| 精品国产超薄肉色丝袜足j| 超碰av人人做人人爽久久 | 最新中文字幕久久久久| 色视频www国产| 精品不卡国产一区二区三区| 制服丝袜大香蕉在线| 欧美大码av| 最好的美女福利视频网| 好男人在线观看高清免费视频| 日本熟妇午夜| 舔av片在线| 精品久久久久久久久久久久久| 伊人久久大香线蕉亚洲五| 色播亚洲综合网| 精品久久久久久久人妻蜜臀av| 亚洲片人在线观看| e午夜精品久久久久久久| 女同久久另类99精品国产91| 俄罗斯特黄特色一大片| 天堂av国产一区二区熟女人妻| 草草在线视频免费看| 女警被强在线播放| 身体一侧抽搐| 99riav亚洲国产免费| 欧美日韩国产亚洲二区| 亚洲熟妇熟女久久| 内地一区二区视频在线| 亚洲乱码一区二区免费版| 嫁个100分男人电影在线观看| 18+在线观看网站| 久久国产乱子伦精品免费另类| 桃红色精品国产亚洲av| 黄色日韩在线| 亚洲性夜色夜夜综合| 制服人妻中文乱码| 搡女人真爽免费视频火全软件 | 久久久久国产精品人妻aⅴ院| 天堂√8在线中文| 欧美中文综合在线视频| 亚洲真实伦在线观看| 黄片大片在线免费观看| www日本在线高清视频| 亚洲内射少妇av| 熟女少妇亚洲综合色aaa.| 午夜福利高清视频| 1024手机看黄色片| 一个人看的www免费观看视频| АⅤ资源中文在线天堂| 国产又黄又爽又无遮挡在线| 99久久精品热视频| 精品99又大又爽又粗少妇毛片 | 亚洲中文字幕一区二区三区有码在线看| 我要搜黄色片| 99热精品在线国产| 国产精品一区二区三区四区久久| 亚洲第一欧美日韩一区二区三区| 一区二区三区激情视频| 国产伦人伦偷精品视频| 成人一区二区视频在线观看| 国产精品香港三级国产av潘金莲| 18禁国产床啪视频网站| a级毛片a级免费在线| 国产成人aa在线观看| 欧美+日韩+精品| 亚洲真实伦在线观看| 国产伦人伦偷精品视频| 国产在视频线在精品| 日韩欧美国产一区二区入口| 免费看美女性在线毛片视频| 91在线观看av| 美女黄网站色视频| av女优亚洲男人天堂| 在线观看免费视频日本深夜| 亚洲av电影在线进入| 国内久久婷婷六月综合欲色啪| 国产精品影院久久| 中国美女看黄片| 夜夜躁狠狠躁天天躁| 99久久精品热视频| 非洲黑人性xxxx精品又粗又长| 日韩中文字幕欧美一区二区| 欧美一区二区国产精品久久精品| 国产aⅴ精品一区二区三区波| 97人妻精品一区二区三区麻豆| 最后的刺客免费高清国语| 色老头精品视频在线观看| a级毛片a级免费在线| 蜜桃久久精品国产亚洲av| 波多野结衣高清无吗| 日韩av在线大香蕉| 久久久久免费精品人妻一区二区| 香蕉av资源在线| 91麻豆av在线| 精品一区二区三区人妻视频| 亚洲av熟女| 一本综合久久免费| 五月玫瑰六月丁香| xxx96com| 男女床上黄色一级片免费看| 日本黄色片子视频| 国产午夜精品久久久久久一区二区三区 | 男女床上黄色一级片免费看| 黄色丝袜av网址大全| 日本免费一区二区三区高清不卡| 久9热在线精品视频| 18+在线观看网站| 在线观看一区二区三区| 国产97色在线日韩免费| 亚洲av二区三区四区| 久久6这里有精品| 特级一级黄色大片| АⅤ资源中文在线天堂| 欧美最黄视频在线播放免费| 精品久久久久久,| 老司机午夜十八禁免费视频| 99久久久亚洲精品蜜臀av| 国内毛片毛片毛片毛片毛片| 中文资源天堂在线| 国产一区二区亚洲精品在线观看| 精品午夜福利视频在线观看一区| 村上凉子中文字幕在线| 两人在一起打扑克的视频| 嫩草影视91久久| 成人特级av手机在线观看| 欧美最黄视频在线播放免费| 国产高清激情床上av| 精品日产1卡2卡| 此物有八面人人有两片| 欧美成狂野欧美在线观看| 夜夜看夜夜爽夜夜摸| 中亚洲国语对白在线视频| 国产激情欧美一区二区| 99精品欧美一区二区三区四区| 亚洲精品456在线播放app | 波多野结衣巨乳人妻| 国产男靠女视频免费网站| 在线免费观看不下载黄p国产 | 国产av一区在线观看免费| 久久人人精品亚洲av| 天天躁日日操中文字幕| 国语自产精品视频在线第100页| 男女之事视频高清在线观看| 丁香六月欧美| 麻豆国产97在线/欧美| 欧美成人免费av一区二区三区| 搡老熟女国产l中国老女人| 一个人免费在线观看的高清视频| 成人18禁在线播放| 精品人妻1区二区| 国内精品久久久久久久电影| 一区二区三区激情视频| 免费观看的影片在线观看| 午夜免费男女啪啪视频观看 | 亚洲精品456在线播放app | 伊人久久精品亚洲午夜| 中文字幕人妻丝袜一区二区| 啦啦啦观看免费观看视频高清| 国内少妇人妻偷人精品xxx网站| 一本一本综合久久| 岛国在线观看网站| 日本免费a在线| 久久精品国产亚洲av涩爱 | 在线观看av片永久免费下载| 母亲3免费完整高清在线观看| 亚洲国产精品合色在线| 亚洲五月天丁香| 久久伊人香网站| 黄色女人牲交| 日韩欧美国产在线观看| 欧美在线黄色| 亚洲av不卡在线观看| 麻豆久久精品国产亚洲av| 国产亚洲av嫩草精品影院| 国产精品亚洲美女久久久| 一个人免费在线观看电影| 啦啦啦韩国在线观看视频| 欧美在线黄色| 99久久成人亚洲精品观看| 久久精品国产亚洲av香蕉五月| 免费在线观看成人毛片| 国产午夜精品久久久久久一区二区三区 | 男人舔奶头视频| 欧美日韩福利视频一区二区| 老司机在亚洲福利影院| 黄片大片在线免费观看| 欧美精品啪啪一区二区三区| 亚洲精华国产精华精| 亚洲无线观看免费| 亚洲国产精品成人综合色| 亚洲午夜理论影院| 少妇裸体淫交视频免费看高清| 亚洲最大成人中文| 90打野战视频偷拍视频| 久久精品国产亚洲av涩爱 | 精品欧美国产一区二区三| 可以在线观看毛片的网站| 久久久国产精品麻豆| 亚洲精品456在线播放app | 97超视频在线观看视频| 亚洲不卡免费看| 国内揄拍国产精品人妻在线| 一级黄片播放器| 老熟妇乱子伦视频在线观看| 亚洲av第一区精品v没综合| 少妇高潮的动态图| 最后的刺客免费高清国语| 国产午夜精品论理片| 九九久久精品国产亚洲av麻豆| 中文在线观看免费www的网站| 色在线成人网| 99热这里只有精品一区| 村上凉子中文字幕在线| 亚洲av电影不卡..在线观看| 亚洲精品一区av在线观看| www国产在线视频色| 久久久久亚洲av毛片大全| aaaaa片日本免费| 国产午夜福利久久久久久| 欧美日韩一级在线毛片| 成人国产综合亚洲| 日韩 欧美 亚洲 中文字幕| a在线观看视频网站| 老汉色∧v一级毛片| 在线观看午夜福利视频| 日本黄大片高清| 最近最新中文字幕大全免费视频| 法律面前人人平等表现在哪些方面| 91麻豆精品激情在线观看国产| 国产精品久久久久久久久免 | 99热这里只有是精品50| 久久久久久久久久黄片| 精品人妻一区二区三区麻豆 | 亚洲熟妇熟女久久| 淫妇啪啪啪对白视频| 久久久国产精品麻豆| 成人亚洲精品av一区二区| 国内揄拍国产精品人妻在线| 精品久久久久久久久久免费视频| 久久这里只有精品中国| 人妻丰满熟妇av一区二区三区| 亚洲国产精品999在线| 亚洲成av人片免费观看| 在线天堂最新版资源| 女人十人毛片免费观看3o分钟| 国产乱人伦免费视频| 亚洲狠狠婷婷综合久久图片| 成人高潮视频无遮挡免费网站| 日韩欧美免费精品| 可以在线观看毛片的网站| 欧美日韩中文字幕国产精品一区二区三区| 成人亚洲精品av一区二区| 黄片小视频在线播放| 真实男女啪啪啪动态图| 欧美黄色片欧美黄色片| 中文字幕人妻熟人妻熟丝袜美 | 97碰自拍视频| 一个人免费在线观看的高清视频| 婷婷亚洲欧美| 好男人在线观看高清免费视频| 在线天堂最新版资源| 国产精品美女特级片免费视频播放器| 丁香欧美五月| 成年女人毛片免费观看观看9| 草草在线视频免费看| av女优亚洲男人天堂| 亚洲专区中文字幕在线| 麻豆国产av国片精品| h日本视频在线播放| 1024手机看黄色片| 三级男女做爰猛烈吃奶摸视频| 国产真实乱freesex| 999久久久精品免费观看国产| 欧美一区二区国产精品久久精品| 国产精品一区二区三区四区免费观看 | 成人午夜高清在线视频| 欧美日韩综合久久久久久 | 亚洲电影在线观看av| 91久久精品国产一区二区成人 | 日本精品一区二区三区蜜桃| www.熟女人妻精品国产| 五月伊人婷婷丁香| 午夜精品一区二区三区免费看| 丰满人妻一区二区三区视频av | 午夜免费成人在线视频| 亚洲avbb在线观看| 精品久久久久久,| 日韩欧美国产在线观看| 亚洲av日韩精品久久久久久密| 麻豆一二三区av精品| 欧美性猛交黑人性爽| 国产在线精品亚洲第一网站| 亚洲av美国av| 欧美国产日韩亚洲一区| 久久久久久国产a免费观看| 免费人成在线观看视频色| 97超视频在线观看视频| 9191精品国产免费久久| 免费高清视频大片| 国产亚洲精品一区二区www| 极品教师在线免费播放| 黄色日韩在线| 亚洲五月天丁香| 免费在线观看影片大全网站| tocl精华| 色在线成人网| 好男人在线观看高清免费视频| 久久国产乱子伦精品免费另类| 欧美大码av| 在线免费观看的www视频| 搡老熟女国产l中国老女人| 狠狠狠狠99中文字幕| 少妇熟女aⅴ在线视频| 女生性感内裤真人,穿戴方法视频| 国内精品一区二区在线观看| 日日干狠狠操夜夜爽| 我的老师免费观看完整版| 亚洲五月婷婷丁香| 村上凉子中文字幕在线| 亚洲一区高清亚洲精品| 村上凉子中文字幕在线| 精品久久久久久成人av| eeuss影院久久| 亚洲精品乱码久久久v下载方式 | 禁无遮挡网站| 人人妻,人人澡人人爽秒播| 黄色丝袜av网址大全| 宅男免费午夜| 特级一级黄色大片| 露出奶头的视频| 一个人看的www免费观看视频| а√天堂www在线а√下载| 精品国产亚洲在线| 麻豆国产av国片精品| 日韩 欧美 亚洲 中文字幕| 免费看日本二区| 免费高清视频大片| 国产伦精品一区二区三区四那| 精品免费久久久久久久清纯| 亚洲av二区三区四区| 麻豆成人午夜福利视频| 成人av一区二区三区在线看| 亚洲男人的天堂狠狠| 日韩欧美一区二区三区在线观看| 中文字幕av在线有码专区| 免费看十八禁软件| 欧美三级亚洲精品| 欧美日韩福利视频一区二区| 日韩精品青青久久久久久| 欧美中文日本在线观看视频| 日本与韩国留学比较| 精品久久久久久久久久免费视频| 床上黄色一级片| 激情在线观看视频在线高清| 岛国视频午夜一区免费看| 两性午夜刺激爽爽歪歪视频在线观看| 丝袜美腿在线中文| 亚洲av成人不卡在线观看播放网| 少妇人妻精品综合一区二区 | 亚洲精品乱码久久久v下载方式 | 可以在线观看毛片的网站| 91麻豆精品激情在线观看国产| 国产亚洲精品av在线| 国产成人影院久久av| 夜夜看夜夜爽夜夜摸| 性欧美人与动物交配| 美女免费视频网站| 国产精品野战在线观看| 一二三四社区在线视频社区8| 少妇的逼水好多| 免费看美女性在线毛片视频| 亚洲国产欧美网| 免费观看的影片在线观看| 三级国产精品欧美在线观看| 内地一区二区视频在线| 国产私拍福利视频在线观看| 99久久99久久久精品蜜桃| 给我免费播放毛片高清在线观看| 久久精品91蜜桃| 国产精品嫩草影院av在线观看 | 亚洲成人久久性| 色尼玛亚洲综合影院| 亚洲狠狠婷婷综合久久图片| 国产伦一二天堂av在线观看| 亚洲国产色片| 亚洲中文字幕一区二区三区有码在线看| 午夜福利成人在线免费观看| 精品国产三级普通话版| 18+在线观看网站| 亚洲欧美一区二区三区黑人| 久久久久久人人人人人| av片东京热男人的天堂| 国产欧美日韩精品亚洲av| 99久久99久久久精品蜜桃| 亚洲av免费高清在线观看| 国产主播在线观看一区二区| 黑人欧美特级aaaaaa片| 国产高清有码在线观看视频| 国产三级中文精品| 99久国产av精品| 一个人免费在线观看的高清视频| 精品国产超薄肉色丝袜足j| 51国产日韩欧美| 宅男免费午夜|