Skip to content

Commit 933df87

Browse files
[Exegesis] CPU selection, when native arch and target mismatch
1 parent b936ef1 commit 933df87

File tree

6 files changed

+33
-20
lines changed

6 files changed

+33
-20
lines changed

llvm/test/tools/llvm-exegesis/RISCV/latency-by-extension-A.s

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# RUN: llvm-exegesis -mode=latency -mtriple=riscv64-unknown-linux-gnu --mcpu=generic --benchmark-phase=assemble-measured-code -opcode-name=AMOAND_D -mattr="+a" | FileCheck --check-prefix=AMOAND_D %s
1+
# RUN: llvm-exegesis -mode=latency -mtriple=riscv64-unknown-linux-gnu --benchmark-phase=assemble-measured-code -opcode-name=AMOAND_D -mattr="+a" | FileCheck --check-prefix=AMOAND_D %s
22

33
AMOAND_D: ---
44
AMOAND_D-NEXT: mode: latency
@@ -10,7 +10,7 @@ AMOAND_D-NEXT: register_initial_values:
1010
AMOAND_D-NEXT: - '[[RE01:X[0-9]+]]=0x0'
1111
AMOAND_D-DAG: ...
1212

13-
# RUN: llvm-exegesis -mode=latency -mtriple=riscv64-unknown-linux-gnu --mcpu=generic --benchmark-phase=assemble-measured-code -opcode-name=AMOADD_W -mattr="+a" | FileCheck --check-prefix=AMOADD_W %s
13+
# RUN: llvm-exegesis -mode=latency -mtriple=riscv64-unknown-linux-gnu --benchmark-phase=assemble-measured-code -opcode-name=AMOADD_W -mattr="+a" | FileCheck --check-prefix=AMOADD_W %s
1414

1515
AMOADD_W: ---
1616
AMOADD_W-NEXT: mode: latency
@@ -22,7 +22,7 @@ AMOADD_W-NEXT: register_initial_values:
2222
AMOADD_W-NEXT: - '[[RE02:X[0-9]+]]=0x0'
2323
AMOADD_W-DAG: ...
2424

25-
# RUN: llvm-exegesis -mode=latency -mtriple=riscv64-unknown-linux-gnu --mcpu=generic --benchmark-phase=assemble-measured-code -opcode-name=AMOMAXU_D -mattr="+a" | FileCheck --check-prefix=AMOMAXU_D %s
25+
# RUN: llvm-exegesis -mode=latency -mtriple=riscv64-unknown-linux-gnu --benchmark-phase=assemble-measured-code -opcode-name=AMOMAXU_D -mattr="+a" | FileCheck --check-prefix=AMOMAXU_D %s
2626

2727
AMOMAXU_D: ---
2828
AMOMAXU_D-NEXT: mode: latency
@@ -34,7 +34,7 @@ AMOMAXU_D-NEXT: register_initial_values:
3434
AMOMAXU_D-NEXT: - '[[RE03:X[0-9]+]]=0x0'
3535
AMOMAXU_D-DAG: ...
3636

37-
# RUN: llvm-exegesis -mode=latency -mtriple=riscv64-unknown-linux-gnu --mcpu=generic --benchmark-phase=assemble-measured-code -opcode-name=AMOMIN_W -mattr="+a" | FileCheck --check-prefix=AMOMIN_W %s
37+
# RUN: llvm-exegesis -mode=latency -mtriple=riscv64-unknown-linux-gnu --benchmark-phase=assemble-measured-code -opcode-name=AMOMIN_W -mattr="+a" | FileCheck --check-prefix=AMOMIN_W %s
3838

3939
AMOMIN_W: ---
4040
AMOMIN_W-NEXT: mode: latency
@@ -46,7 +46,7 @@ AMOMIN_W-NEXT: register_initial_values:
4646
AMOMIN_W-NEXT: - '[[RE04:X[0-9]+]]=0x0'
4747
AMOMIN_W-DAG: ...
4848

49-
# RUN: llvm-exegesis -mode=latency -mtriple=riscv64-unknown-linux-gnu --mcpu=generic --benchmark-phase=assemble-measured-code -opcode-name=AMOXOR_D -mattr="+a" | FileCheck --check-prefix=AMOXOR_D %s
49+
# RUN: llvm-exegesis -mode=latency -mtriple=riscv64-unknown-linux-gnu --benchmark-phase=assemble-measured-code -opcode-name=AMOXOR_D -mattr="+a" | FileCheck --check-prefix=AMOXOR_D %s
5050

5151
AMOXOR_D: ---
5252
AMOXOR_D-NEXT: mode: latency

llvm/test/tools/llvm-exegesis/RISCV/latency-by-extension-C.s

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,44 @@
1-
# RUN: llvm-exegesis -mode=latency -mtriple=riscv64-unknown-linux-gnu --mcpu=generic --benchmark-phase=assemble-measured-code -opcode-name=C_ADDI -mattr=+c | FileCheck --check-prefix=C_ADDI %s
1+
# RUN: llvm-exegesis -mode=latency -mtriple=riscv64-unknown-linux-gnu --benchmark-phase=assemble-measured-code -opcode-name=C_ADDI -mattr=+c | FileCheck --check-prefix=C_ADDI %s
22

33
C_ADDI: ---
44
C_ADDI-NEXT: mode: latency
55
C_ADDI-NEXT: key:
66
C_ADDI-NEXT: instructions:
77
C_ADDI-NEXT: - 'C_ADDI [[REG01:X[0-9]+]] [[RE02:X[0-9]+]] [[IMM0:i_0x[0-9]+]]'
88

9-
# RUN: llvm-exegesis -mode=latency -mtriple=riscv64-unknown-linux-gnu --mcpu=generic --benchmark-phase=assemble-measured-code -opcode-name=C_ADDIW -mattr=+c | FileCheck --check-prefix=C_ADDIW %s
9+
# RUN: llvm-exegesis -mode=latency -mtriple=riscv64-unknown-linux-gnu --benchmark-phase=assemble-measured-code -opcode-name=C_ADDIW -mattr=+c | FileCheck --check-prefix=C_ADDIW %s
1010

1111
C_ADDIW: ---
1212
C_ADDIW-NEXT: mode: latency
1313
C_ADDIW-NEXT: key:
1414
C_ADDIW-NEXT: instructions:
1515
C_ADDIW-NEXT: - 'C_ADDIW [[REG11:X[0-9]+]] [[RE12:X[0-9]+]] [[IMM1:i_0x[0-9]+]]'
1616

17-
# RUN: llvm-exegesis -mode=latency -mtriple=riscv64-unknown-linux-gnu --mcpu=generic --benchmark-phase=assemble-measured-code -opcode-name=C_ANDI -mattr=+c | FileCheck --check-prefix=C_ANDI %s
17+
# RUN: llvm-exegesis -mode=latency -mtriple=riscv64-unknown-linux-gnu --benchmark-phase=assemble-measured-code -opcode-name=C_ANDI -mattr=+c | FileCheck --check-prefix=C_ANDI %s
1818

1919
C_ANDI: ---
2020
C_ANDI-NEXT: mode: latency
2121
C_ANDI-NEXT: key:
2222
C_ANDI-NEXT: instructions:
2323
C_ANDI-NEXT: - 'C_ANDI [[REG31:X[0-9]+]] [[REG32:X[0-9]+]] [[IMM3:i_0x[0-9]+]]'
2424

25-
# RUN: llvm-exegesis -mode=latency -mtriple=riscv64-unknown-linux-gnu --mcpu=generic --benchmark-phase=assemble-measured-code -opcode-name=C_SLLI -mattr=+c | FileCheck --check-prefix=C_SLLI %s
25+
# RUN: llvm-exegesis -mode=latency -mtriple=riscv64-unknown-linux-gnu --benchmark-phase=assemble-measured-code -opcode-name=C_SLLI -mattr=+c | FileCheck --check-prefix=C_SLLI %s
2626

2727
C_SLLI: ---
2828
C_SLLI-NEXT: mode: latency
2929
C_SLLI-NEXT: key:
3030
C_SLLI-NEXT: instructions:
3131
C_SLLI-NEXT: - 'C_SLLI [[REG81:X[0-9]+]] [[REG82:X[0-9]+]] [[IMM8:i_0x[0-9]+]]'
3232

33-
# RUN: llvm-exegesis -mode=latency -mtriple=riscv64-unknown-linux-gnu --mcpu=generic --benchmark-phase=assemble-measured-code -opcode-name=C_SRAI -mattr=+c | FileCheck --check-prefix=C_SRAI %s
33+
# RUN: llvm-exegesis -mode=latency -mtriple=riscv64-unknown-linux-gnu --benchmark-phase=assemble-measured-code -opcode-name=C_SRAI -mattr=+c | FileCheck --check-prefix=C_SRAI %s
3434

3535
C_SRAI: ---
3636
C_SRAI-NEXT: mode: latency
3737
C_SRAI-NEXT: key:
3838
C_SRAI-NEXT: instructions:
3939
C_SRAI-NEXT: - 'C_SRAI [[REG91:X[0-9]+]] [[REG92:X[0-9]+]] [[IMM9:i_0x[0-9]+]]'
4040

41-
# RUN: llvm-exegesis -mode=latency -mtriple=riscv64-unknown-linux-gnu --mcpu=generic --benchmark-phase=assemble-measured-code -opcode-name=C_SRLI -mattr=+c | FileCheck --check-prefix=C_SRLI %s
41+
# RUN: llvm-exegesis -mode=latency -mtriple=riscv64-unknown-linux-gnu --benchmark-phase=assemble-measured-code -opcode-name=C_SRLI -mattr=+c | FileCheck --check-prefix=C_SRLI %s
4242

4343
C_SRLI: ---
4444
C_SRLI-NEXT: mode: latency

llvm/test/tools/llvm-exegesis/RISCV/latency-by-load.s

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,57 @@
1-
# RUN: llvm-exegesis -mode=latency --benchmark-phase=assemble-measured-code -mtriple=riscv64-unknown-linux-gnu --mcpu=generic -opcode-name=LD 2>&1 | FileCheck --check-prefix=TEST1 %s
1+
# RUN: llvm-exegesis -mode=latency --benchmark-phase=assemble-measured-code -mtriple=riscv64-unknown-linux-gnu -opcode-name=LD 2>&1 | FileCheck --check-prefix=TEST1 %s
22

33
TEST1: ---
44
TEST1-NEXT: mode: latency
55
TEST1-NEXT: key:
66
TEST1-NEXT: instructions:
77
TEST1-NEXT: - 'LD X10 X10 i_0x0'
88

9-
# RUN: llvm-exegesis -mode=latency --benchmark-phase=assemble-measured-code -mtriple=riscv64-unknown-linux-gnu --mcpu=generic -opcode-name=LW 2>&1 | FileCheck --check-prefix=TEST2 %s
9+
# RUN: llvm-exegesis -mode=latency --benchmark-phase=assemble-measured-code -mtriple=riscv64-unknown-linux-gnu -opcode-name=LW 2>&1 | FileCheck --check-prefix=TEST2 %s
1010

1111
TEST2: ---
1212
TEST2-NEXT: mode: latency
1313
TEST2-NEXT: key:
1414
TEST2-NEXT: instructions:
1515
TEST2-NEXT: - 'LW X10 X10 i_0x0'
1616

17-
# RUN: llvm-exegesis -mode=latency --benchmark-phase=assemble-measured-code -mtriple=riscv64-unknown-linux-gnu --mcpu=generic -opcode-name=LH 2>&1 | FileCheck --check-prefix=TEST3 %s
17+
# RUN: llvm-exegesis -mode=latency --benchmark-phase=assemble-measured-code -mtriple=riscv64-unknown-linux-gnu -opcode-name=LH 2>&1 | FileCheck --check-prefix=TEST3 %s
1818

1919
TEST3: ---
2020
TEST3-NEXT: mode: latency
2121
TEST3-NEXT: key:
2222
TEST3-NEXT: instructions:
2323
TEST3-NEXT: - 'LH X10 X10 i_0x0'
2424

25-
# RUN: llvm-exegesis -mode=latency --benchmark-phase=assemble-measured-code -mtriple=riscv64-unknown-linux-gnu --mcpu=generic -opcode-name=LWU 2>&1 | FileCheck --check-prefix=TEST4 %s
25+
# RUN: llvm-exegesis -mode=latency --benchmark-phase=assemble-measured-code -mtriple=riscv64-unknown-linux-gnu -opcode-name=LWU 2>&1 | FileCheck --check-prefix=TEST4 %s
2626

2727
TEST4: ---
2828
TEST4-NEXT: mode: latency
2929
TEST4-NEXT: key:
3030
TEST4-NEXT: instructions:
3131
TEST4-NEXT: - 'LWU X10 X10 i_0x0'
3232

33-
# RUN: llvm-exegesis -mode=latency --benchmark-phase=assemble-measured-code -mtriple=riscv64-unknown-linux-gnu --mcpu=generic -opcode-name=LBU 2>&1 | FileCheck --check-prefix=TEST5 %s
33+
# RUN: llvm-exegesis -mode=latency --benchmark-phase=assemble-measured-code -mtriple=riscv64-unknown-linux-gnu -opcode-name=LBU 2>&1 | FileCheck --check-prefix=TEST5 %s
3434

3535
TEST5: ---
3636
TEST5-NEXT: mode: latency
3737
TEST5-NEXT: key:
3838
TEST5-NEXT: instructions:
3939
TEST5-NEXT: - 'LBU X10 X10 i_0x0'
4040

41-
# RUN: llvm-exegesis -mode=latency --benchmark-phase=assemble-measured-code -mtriple=riscv64-unknown-linux-gnu --mcpu=generic -opcode-name=LUI 2>&1 | FileCheck --check-prefix=TEST6 %s
41+
# RUN: llvm-exegesis -mode=latency --benchmark-phase=assemble-measured-code -mtriple=riscv64-unknown-linux-gnu -opcode-name=LUI 2>&1 | FileCheck --check-prefix=TEST6 %s
4242

4343
TEST6: LUI: No strategy found to make the execution serial
4444

4545

46-
# RUN: llvm-exegesis -mode=latency --benchmark-phase=assemble-measured-code -mtriple=riscv64-unknown-linux-gnu --mcpu=generic -opcode-name=LB 2>&1 | FileCheck --check-prefix=TEST7 %s
46+
# RUN: llvm-exegesis -mode=latency --benchmark-phase=assemble-measured-code -mtriple=riscv64-unknown-linux-gnu -opcode-name=LB 2>&1 | FileCheck --check-prefix=TEST7 %s
4747

4848
TEST7: ---
4949
TEST7-NEXT: mode: latency
5050
TEST7-NEXT: key:
5151
TEST7-NEXT: instructions:
5252
TEST7-NEXT: - 'LB X10 X10 i_0x0'
5353

54-
# RUN: llvm-exegesis -mode=latency --benchmark-phase=assemble-measured-code -mtriple=riscv64-unknown-linux-gnu --mcpu=generic -mattr=+a -opcode-name=LR_W_RL 2>&1 | FileCheck --check-prefix=TEST8 %s
54+
# RUN: llvm-exegesis -mode=latency --benchmark-phase=assemble-measured-code -mtriple=riscv64-unknown-linux-gnu -mattr=+a -opcode-name=LR_W_RL 2>&1 | FileCheck --check-prefix=TEST8 %s
5555

5656
TEST8: ---
5757
TEST8-NEXT: mode: latency

llvm/test/tools/llvm-exegesis/RISCV/latency-by-opcode-name-FADD_D.s

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# RUN: llvm-exegesis -mtriple=riscv64-unknown-linux-gnu --mcpu=generic -mode=latency --benchmark-phase=assemble-measured-code -mattr=+d -opcode-name=FADD_D | FileCheck %s
1+
# RUN: llvm-exegesis -mtriple=riscv64-unknown-linux-gnu -mode=latency --benchmark-phase=assemble-measured-code -mattr=+d -opcode-name=FADD_D | FileCheck %s
22

33
CHECK: ---
44
CHECK-NEXT: mode: latency

llvm/tools/llvm-exegesis/lib/LlvmState.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,12 @@ Expected<LLVMState> LLVMState::Create(std::string TripleName,
4545
if (CpuName == "native")
4646
CpuName = std::string(sys::getHostCPUName());
4747

48+
if (CpuName.empty()) {
49+
std::unique_ptr<MCSubtargetInfo> Empty_STI(
50+
TheTarget->createMCSubtargetInfo(TripleName, "", ""));
51+
CpuName = Empty_STI->getAllProcessorDescriptions().begin()->Key;
52+
}
53+
4854
std::unique_ptr<MCSubtargetInfo> STI(
4955
TheTarget->createMCSubtargetInfo(TripleName, CpuName, ""));
5056
assert(STI && "Unable to create subtarget info!");

llvm/tools/llvm-exegesis/llvm-exegesis.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
#include "llvm/Support/SourceMgr.h"
4545
#include "llvm/Support/TargetSelect.h"
4646
#include "llvm/TargetParser/Host.h"
47+
#include "llvm/TargetParser/Triple.h"
4748
#include <algorithm>
4849
#include <string>
4950

@@ -479,6 +480,12 @@ void benchmarkMain() {
479480
#endif
480481
}
481482

483+
// case for cross generating, when native arch and target mismatch
484+
if ((Triple(sys::getProcessTriple()).getArch() !=
485+
Triple(TripleName).getArch()) &&
486+
(MCPU == "native"))
487+
MCPU = "";
488+
482489
InitializeAllExegesisTargets();
483490
#define LLVM_EXEGESIS(TargetName) \
484491
LLVMInitialize##TargetName##AsmPrinter(); \

0 commit comments

Comments
 (0)