[RISCV] emit .option directive for functions with target features which differ from...
[llvm-project.git] / llvm / test / CodeGen / RISCV / riscv-func-target-feature.ll
blob6764b1e850d3fe101bb471fce8c90e273c8d3316
1 ; RUN: llc -mtriple=riscv64 -mcpu=sifive-u74 -verify-machineinstrs < %s | FileCheck %s
3 ; CHECK: .option push
4 ; CHECK-NEXT: .option arch, +v, +zve32f, +zve32x, +zve64d, +zve64f, +zve64x, +zvl128b, +zvl32b, +zvl64b
5 define void @test1() "target-features"="+a,+d,+f,+m,+c,+v,+zifencei,+zve32f,+zve32x,+zve64d,+zve64f,+zve64x,+zvl128b,+zvl32b,+zvl64b" {
6 ; CHECK-LABEL: test1
7 ; CHECK: .option pop
8 entry:
9   ret void
12 ; CHECK: .option push
13 ; CHECK-NEXT: .option arch, +experimental-zihintntl
14 define void @test2() "target-features"="+a,+d,+f,+m,+experimental-zihintntl,+zifencei" {
15 ; CHECK-LABEL: test2
16 ; CHECK: .option pop
17 entry:
18   ret void
21 ; CHECK: .option push
22 ; CHECK-NEXT: .option arch, -a, -d, -f, -m
23 define void @test3() "target-features"="-a,-d,-f,-m" {
24 ; CHECK-LABEL: test3
25 ; CHECK: .option pop
26 entry:
27   ret void
30 ; CHECK-NOT: .option push
31 define void @test4() {
32 ; CHECK-LABEL: test4
33 ; CHECK-NOT: .option pop
34 entry:
35   ret void